diff options
author | Joseph Eagar <joeedh@gmail.com> | 2010-07-19 08:44:37 +0400 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2010-07-19 08:44:37 +0400 |
commit | c11c196efadf5ef52293d782638497f86a209722 (patch) | |
tree | 43abcd60b2400d28db8686f4dbea68f17475ef58 /source/blender/editors | |
parent | f54aa7811029c90b6071ccc9e27e57a758e5884d (diff) | |
parent | 7f083c45bee15f7540e2a35a725efe28fc962239 (diff) |
part 1 of merge from trunk at r30358; it compiles, but doesn't link quite yet :)
Diffstat (limited to 'source/blender/editors')
348 files changed, 46586 insertions, 38106 deletions
diff --git a/source/blender/editors/CMakeLists.txt b/source/blender/editors/CMakeLists.txt index 58c3f5d6088..2e2de166b6e 100644 --- a/source/blender/editors/CMakeLists.txt +++ b/source/blender/editors/CMakeLists.txt @@ -15,83 +15,44 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# The Original Code is Copyright (C) 2006, Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# # Contributor(s): Jacques Beaurain. # # ***** END GPL LICENSE BLOCK ***** -FILE(GLOB SRC */*.c) - -SET(INC ../windowmanager - ../editors/include ../editors/interface - ../../../intern/guardedalloc ../../../intern/memutil - ../blenlib ../makesdna ../makesrna ../blenkernel - ../include ../imbuf ../render/extern/include - ../../../intern/bsp/extern - ../../../intern/decimation/extern ../blenloader ../python - ../../kernel/gen_system ../readstreamglue - ../../../intern/elbeem/extern ../bmesh - ../../../intern/ghost ../../../intern/opennl/extern ../../../extern/glew/include ../../../intern/smoke/extern - ../../../intern/audaspace/intern - ../nodes - ../gpu - ../blenfont - ../ikplugin -) - -ADD_DEFINITIONS(-DGLEW_STATIC) - -IF(WITH_GAMEENGINE) - ADD_DEFINITIONS(-DGAMEBLENDER) -ENDIF(WITH_GAMEENGINE) - -IF(WITH_INTERNATIONAL) - ADD_DEFINITIONS(-DINTERNATIONAL) -ENDIF(WITH_INTERNATIONAL) - -IF(WITH_OPENEXR) - ADD_DEFINITIONS(-DWITH_OPENEXR) -ENDIF(WITH_OPENEXR) - -IF(WITH_OPENJPEG) - ADD_DEFINITIONS(-DWITH_OPENJPEG) -ENDIF(WITH_OPENJPEG) - -IF(WITH_QUICKTIME) - SET(INC ${INC} ../quicktime ${QUICKTIME_INC}) - ADD_DEFINITIONS(-DWITH_QUICKTIME) -ENDIF(WITH_QUICKTIME) - -IF(WITH_FFMPEG) - SET(INC ${INC} ${FFMPEG_INC}) - ADD_DEFINITIONS(-DWITH_FFMPEG) -ENDIF(WITH_FFMPEG) - -IF(WITH_OPENMP) - ADD_DEFINITIONS(-DPARALLEL=1) -ENDIF(WITH_OPENMP) - -IF(NOT WITH_ELBEEM) - ADD_DEFINITIONS(-DDISABLE_ELBEEM) -ENDIF(NOT WITH_ELBEEM) - -IF(WITH_PYTHON) - SET(INC ${INC} ${PYTHON_INC}) -ELSE(WITH_PYTHON) - ADD_DEFINITIONS(-DDISABLE_PYTHON) -ENDIF(WITH_PYTHON) - -IF(WIN32) - SET(INC ${INC} ${PTHREADS_INC}) -ENDIF(WIN32) - -IF(WITH_BUILDINFO) - ADD_DEFINITIONS(-DNAN_BUILDINFO) -ENDIF(WITH_BUILDINFO) - -BLENDERLIB(bf_editors "${SRC}" "${INC}") +ADD_SUBDIRECTORY(animation) +ADD_SUBDIRECTORY(armature) +ADD_SUBDIRECTORY(curve) +ADD_SUBDIRECTORY(datafiles) +ADD_SUBDIRECTORY(gpencil) +ADD_SUBDIRECTORY(interface) +ADD_SUBDIRECTORY(mesh) +ADD_SUBDIRECTORY(metaball) +ADD_SUBDIRECTORY(object) +ADD_SUBDIRECTORY(physics) +ADD_SUBDIRECTORY(render) +ADD_SUBDIRECTORY(screen) +ADD_SUBDIRECTORY(sculpt_paint) +ADD_SUBDIRECTORY(sound) +ADD_SUBDIRECTORY(space_action) +ADD_SUBDIRECTORY(space_api) +ADD_SUBDIRECTORY(space_buttons) +ADD_SUBDIRECTORY(space_console) +ADD_SUBDIRECTORY(space_file) +ADD_SUBDIRECTORY(space_graph) +ADD_SUBDIRECTORY(space_image) +ADD_SUBDIRECTORY(space_info) +ADD_SUBDIRECTORY(space_logic) +ADD_SUBDIRECTORY(space_nla) +ADD_SUBDIRECTORY(space_node) +ADD_SUBDIRECTORY(space_outliner) +ADD_SUBDIRECTORY(space_script) +ADD_SUBDIRECTORY(space_sequencer) +ADD_SUBDIRECTORY(space_sound) +ADD_SUBDIRECTORY(space_text) +ADD_SUBDIRECTORY(space_time) +ADD_SUBDIRECTORY(space_userpref) +ADD_SUBDIRECTORY(space_view3d) +ADD_SUBDIRECTORY(transform) +ADD_SUBDIRECTORY(util) +ADD_SUBDIRECTORY(uvedit) diff --git a/source/blender/editors/animation/CMakeLists.txt b/source/blender/editors/animation/CMakeLists.txt new file mode 100644 index 00000000000..d5eef6bbd34 --- /dev/null +++ b/source/blender/editors/animation/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/guardedalloc +) + +BLENDERLIB(bf_editor_animation "${SRC}" "${INC}") diff --git a/source/blender/editors/animation/anim_channels_defines.c b/source/blender/editors/animation/anim_channels_defines.c index 3e711ccc2c1..09fbdf2d70d 100644 --- a/source/blender/editors/animation/anim_channels_defines.c +++ b/source/blender/editors/animation/anim_channels_defines.c @@ -25,68 +25,40 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include <math.h> -#include <stdlib.h> -#include <string.h> -#include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" #include "DNA_particle_types.h" #include "DNA_screen_types.h" #include "DNA_scene_types.h" #include "DNA_space_types.h" -#include "DNA_constraint_types.h" #include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_mesh_types.h" #include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_meta_types.h" #include "DNA_node_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" #include "DNA_world_types.h" #include "RNA_access.h" -#include "RNA_define.h" - -#include "BKE_animsys.h" -#include "BKE_action.h" #include "BKE_curve.h" -#include "BKE_depsgraph.h" -#include "BKE_fcurve.h" #include "BKE_key.h" -#include "BKE_material.h" -#include "BKE_object.h" #include "BKE_context.h" -#include "BKE_utildefines.h" #include "UI_interface.h" #include "UI_interface_icons.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "ED_anim_api.h" #include "ED_keyframing.h" -#include "ED_keyframes_edit.h" // XXX move the select modes out of there! -#include "ED_screen.h" -#include "ED_space_api.h" #include "BIF_gl.h" @@ -620,10 +592,32 @@ static int acf_object_icon(bAnimListElem *ale) Object *ob= base->object; /* icon depends on object-type */ - if (ob->type == OB_ARMATURE) - return ICON_ARMATURE_DATA; - else - return ICON_OBJECT_DATA; + + switch (ob->type) { + case OB_LAMP: + return ICON_OUTLINER_OB_LAMP; + case OB_MESH: + return ICON_OUTLINER_OB_MESH; + case OB_CAMERA: + return ICON_OUTLINER_OB_CAMERA; + case OB_CURVE: + return ICON_OUTLINER_OB_CURVE; + case OB_MBALL: + return ICON_OUTLINER_OB_META; + case OB_LATTICE: + return ICON_OUTLINER_OB_LATTICE; + case OB_ARMATURE: + return ICON_OUTLINER_OB_ARMATURE; + case OB_FONT: + return ICON_OUTLINER_OB_FONT; + case OB_SURF: + return ICON_OUTLINER_OB_SURFACE; + case OB_EMPTY: + return ICON_OUTLINER_OB_EMPTY; + default: + return ICON_OBJECT_DATA; + } + } /* name for object */ @@ -2362,8 +2356,8 @@ static void dummy_olddraw_gpencil () case SPACE_VIEW3D: { /* this shouldn't cause any overflow... */ - //sprintf(name, "3DView:%s", view3d_get_name(sa->spacedata.first)); // XXX missing func.. - strcpy(name, "3dView"); + //sprintf(name, "View3D:%s", view3d_get_name(sa->spacedata.first)); // XXX missing func.. + strcpy(name, "View3D"); special= ICON_VIEW3D; } break; @@ -2864,7 +2858,7 @@ void ANIM_channel_draw (bAnimContext *ac, bAnimListElem *ale, float yminc, float /* callback for (normal) widget settings - send notifiers */ static void achannel_setting_widget_cb(bContext *C, void *poin, void *poin2) { - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } /* callback for widget settings that need flushing */ @@ -2878,7 +2872,7 @@ static void achannel_setting_flush_widget_cb(bContext *C, void *ale_npoin, void short on = 0; /* send notifiers before doing anything else... */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); /* verify animation context */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -2942,7 +2936,7 @@ static void achannel_setting_slider_cb(bContext *C, void *id_poin, void *fcu_poi done= insert_keyframe_direct(ptr, prop, fcu, cfra, flag); if (done) - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } } @@ -2984,7 +2978,7 @@ static void achannel_setting_slider_shapekey_cb(bContext *C, void *key_poin, voi done= insert_keyframe_direct(ptr, prop, fcu, cfra, flag); if (done) - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); } /* free the path */ @@ -3212,6 +3206,7 @@ void ANIM_channel_draw_widgets (bAnimContext *ac, bAnimListElem *ale, uiBlock *b */ if ((draw_sliders) && ELEM(ale->type, ANIMTYPE_FCURVE, ANIMTYPE_SHAPEKEY)) { /* adjust offset */ + // TODO: make slider width dynamic, so that they can be easier to use when the view is wide enough offset += SLIDER_WIDTH; /* need backdrop behind sliders... */ diff --git a/source/blender/editors/animation/anim_channels_edit.c b/source/blender/editors/animation/anim_channels_edit.c index 26dd0285a2f..21bdb591df9 100644 --- a/source/blender/editors/animation/anim_channels_edit.c +++ b/source/blender/editors/animation/anim_channels_edit.c @@ -25,63 +25,28 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include <math.h> -#include <stdlib.h> -#include <string.h> -#include <float.h> - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" -#include "BLI_math.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_particle_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_constraint_types.h" #include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_meta_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "RNA_access.h" #include "RNA_define.h" -#include "BKE_animsys.h" #include "BKE_action.h" -#include "BKE_depsgraph.h" #include "BKE_fcurve.h" -#include "BKE_key.h" -#include "BKE_material.h" -#include "BKE_object.h" #include "BKE_context.h" #include "BKE_global.h" -#include "BKE_utildefines.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "ED_anim_api.h" #include "ED_keyframes_edit.h" // XXX move the select modes out of there! #include "ED_screen.h" -#include "ED_space_api.h" #include "WM_api.h" #include "WM_types.h" @@ -877,7 +842,7 @@ static int animchannels_rearrange_exec(bContext *C, wmOperator *op) rearrange_action_channels(&ac, mode); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -974,7 +939,7 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op) /* do groups only first (unless in Drivers mode, where there are none) */ if (ac.datatype != ANIMCONT_DRIVERS) { /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CHANNELS | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CHANNELS | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* delete selected groups and their associated channels */ @@ -1013,7 +978,7 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op) /* now do F-Curves */ if (ac.datatype != ANIMCONT_GPENCIL) { /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* delete selected F-Curves */ @@ -1033,7 +998,7 @@ static int animchannels_delete_exec(bContext *C, wmOperator *op) } /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1073,7 +1038,7 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype); /* hide all channels not selected */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_UNSEL); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_UNSEL | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -1089,7 +1054,7 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* make all the selected channels visible */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -1110,7 +1075,7 @@ static int animchannels_visibility_set_exec(bContext *C, wmOperator *op) /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1148,11 +1113,11 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* get list of all channels that selection may need to be flushed to */ - filter= ANIMFILTER_CHANNELS; + filter= (ANIMFILTER_CHANNELS | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &all_data, filter, ac.data, ac.datatype); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* See if we should be making showing all selected or hiding */ @@ -1183,7 +1148,7 @@ static int animchannels_visibility_toggle_exec(bContext *C, wmOperator *op) BLI_freelistN(&all_data); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1250,7 +1215,8 @@ static void setflag_anim_channels (bAnimContext *ac, short setting, short mode, } /* filter data that we're working on */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CHANNELS); + // XXX: noduplis enabled so that results don't cancel, but will be problematic for some channels where only type differs + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CHANNELS | ANIMFILTER_NODUPLIS); if (onlysel) filter |= ANIMFILTER_SEL; ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); @@ -1313,7 +1279,7 @@ static int animchannels_setflag_exec(bContext *C, wmOperator *op) setflag_anim_channels(&ac, setting, mode, 1, flush); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1447,7 +1413,7 @@ static int animchannels_expand_exec (bContext *C, wmOperator *op) setflag_anim_channels(&ac, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETFLAG_ADD, onlysel, 0); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1489,7 +1455,7 @@ static int animchannels_collapse_exec (bContext *C, wmOperator *op) setflag_anim_channels(&ac, ACHANNEL_SETTING_EXPAND, ACHANNEL_SETFLAG_CLEAR, onlysel, 0); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1529,7 +1495,7 @@ static int animchannels_deselectall_exec(bContext *C, wmOperator *op) ANIM_deselect_anim_channels(&ac, ac.data, ac.datatype, 1, ACHANNEL_SETFLAG_ADD); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1631,7 +1597,7 @@ static int animchannels_borderselect_exec(bContext *C, wmOperator *op) borderselect_anim_channels(&ac, &rect, selectmode); /* send notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_ANIMCHAN|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -1710,7 +1676,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (adt) adt->flag |= ADT_UI_SELECTED; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_OBJECT: @@ -1749,7 +1715,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if ((adt) && (adt->flag & ADT_UI_SELECTED)) adt->flag |= ADT_UI_ACTIVE; - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -1785,7 +1751,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh ale->adt->flag |= ADT_UI_ACTIVE; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -1820,7 +1786,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (agrp->flag & AGRP_SELECTED) ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, agrp, ANIMTYPE_GROUP); - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_FCURVE: @@ -1842,7 +1808,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh if (fcu->flag & FCURVE_SELECTED) ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE); - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_SHAPEKEY: @@ -1860,7 +1826,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh kb->flag |= KEYBLOCK_SEL; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_GPDATABLOCK: @@ -1870,7 +1836,7 @@ static int mouse_anim_channels (bAnimContext *ac, float x, int channel_index, sh /* toggle expand */ gpd->flag ^= GP_DATA_EXPAND; - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } break; case ANIMTYPE_GPLAYER: @@ -2039,6 +2005,7 @@ void ED_keymap_animchannels(wmKeyConfig *keyconf) /* delete */ WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ANIM_OT_channels_delete", BACKSPACEKEY, KM_PRESS, 0, 0); /* settings */ WM_keymap_add_item(keymap, "ANIM_OT_channels_setting_toggle", WKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/animation/anim_deps.c b/source/blender/editors/animation/anim_deps.c index 3f461889485..5312e97c604 100644 --- a/source/blender/editors/animation/anim_deps.c +++ b/source/blender/editors/animation/anim_deps.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -26,14 +26,11 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include <stdlib.h> #include <string.h> -#include <math.h> #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_object_types.h" #include "DNA_node_types.h" @@ -47,21 +44,13 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_global.h" -#include "BKE_main.h" #include "BKE_node.h" -#include "BKE_scene.h" #include "BKE_sequencer.h" -#include "BKE_screen.h" #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "ED_anim_api.h" -#include "ED_screen.h" - -#include "WM_api.h" -#include "WM_types.h" /* **************************** depsgraph tagging ******************************** */ @@ -101,7 +90,7 @@ void ANIM_list_elem_update(Scene *scene, bAnimListElem *ale) else { /* in other case we do standard depsgaph update, ideally we'd be calling property update functions here too ... */ - DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? + DAG_id_flush_update(id, OB_RECALC_ALL); // XXX or do we want something more restrictive? } } @@ -117,7 +106,7 @@ void ANIM_id_update(Scene *scene, ID *id) adt->recalc |= ADT_RECALC_ANIM; /* set recalc flags */ - DAG_id_flush_update(id, OB_RECALC); // XXX or do we want something more restrictive? + DAG_id_flush_update(id, OB_RECALC_ALL); // XXX or do we want something more restrictive? } } diff --git a/source/blender/editors/animation/anim_draw.c b/source/blender/editors/animation/anim_draw.c index 9d723c1b8f5..f5f50e10bcb 100644 --- a/source/blender/editors/animation/anim_draw.c +++ b/source/blender/editors/animation/anim_draw.c @@ -25,47 +25,22 @@ * * ***** END GPL LICENSE BLOCK ***** */ - -#include <string.h> -#include <stdio.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" - -#include "MEM_guardedalloc.h" - -#include "BLI_blenlib.h" #include "BLI_math.h" -#include "BKE_animsys.h" -#include "BKE_action.h" #include "BKE_context.h" -#include "BKE_global.h" -#include "BKE_fcurve.h" -#include "BKE_main.h" #include "BKE_nla.h" #include "BKE_object.h" -#include "BKE_screen.h" -#include "BKE_utildefines.h" #include "ED_anim_api.h" #include "ED_keyframes_edit.h" -#include "ED_types.h" -#include "ED_util.h" - -#include "WM_api.h" -#include "WM_types.h" #include "RNA_access.h" #include "BIF_gl.h" -#include "BIF_glutil.h" #include "UI_interface.h" #include "UI_resources.h" @@ -257,20 +232,22 @@ void ANIM_draw_cfra (const bContext *C, View2D *v2d, short flag) /* Draw dark green line if slow-parenting/time-offset is enabled */ if (flag & DRAWCFRA_SHOW_TIMEOFS) { Object *ob= (scene->basact) ? (scene->basact->object) : 0; - - // XXX ob->ipoflag is depreceated! - if ((ob) && (ob->ipoflag & OB_OFFS_OB) && (give_timeoffset(ob)!=0.0f)) { - vec[0]-= give_timeoffset(ob); /* could avoid calling twice */ + if(ob) { + float timeoffset= give_timeoffset(ob); + // XXX ob->ipoflag is depreceated! + if ((ob->ipoflag & OB_OFFS_OB) && (timeoffset != 0.0f)) { + vec[0]-= timeoffset; /* could avoid calling twice */ - UI_ThemeColorShade(TH_CFRAME, -30); + UI_ThemeColorShade(TH_CFRAME, -30); - glBegin(GL_LINE_STRIP); - /*vec[1]= v2d->cur.ymax;*/ // this is set already. this line is only included - glVertex2fv(vec); + glBegin(GL_LINE_STRIP); + /*vec[1]= v2d->cur.ymax;*/ // this is set already. this line is only included + glVertex2fv(vec); - vec[1]= v2d->cur.ymin; - glVertex2fv(vec); - glEnd(); + vec[1]= v2d->cur.ymin; + glVertex2fv(vec); + glEnd(); + } } } @@ -332,11 +309,11 @@ AnimData *ANIM_nla_mapping_get(bAnimContext *ac, bAnimListElem *ale) /* ------------------- */ /* helper function for ANIM_nla_mapping_apply_fcurve() -> "restore", i.e. mapping points back to action-time */ -static short bezt_nlamapping_restore(BeztEditData *bed, BezTriple *bezt) +static short bezt_nlamapping_restore(KeyframeEditData *ked, BezTriple *bezt) { /* AnimData block providing scaling is stored in 'data', only_keys option is stored in i1 */ - AnimData *adt= (AnimData *)bed->data; - short only_keys= (short)bed->i1; + AnimData *adt= (AnimData *)ked->data; + short only_keys= (short)ked->i1; /* adjust BezTriple handles only if allowed to */ if (only_keys == 0) { @@ -350,11 +327,11 @@ static short bezt_nlamapping_restore(BeztEditData *bed, BezTriple *bezt) } /* helper function for ANIM_nla_mapping_apply_fcurve() -> "apply", i.e. mapping points to NLA-mapped global time */ -static short bezt_nlamapping_apply(BeztEditData *bed, BezTriple *bezt) +static short bezt_nlamapping_apply(KeyframeEditData *ked, BezTriple *bezt) { /* AnimData block providing scaling is stored in 'data', only_keys option is stored in i1 */ - AnimData *adt= (AnimData*)bed->data; - short only_keys= (short)bed->i1; + AnimData *adt= (AnimData*)ked->data; + short only_keys= (short)ked->i1; /* adjust BezTriple handles only if allowed to */ if (only_keys == 0) { @@ -374,16 +351,16 @@ static short bezt_nlamapping_apply(BeztEditData *bed, BezTriple *bezt) */ void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, short only_keys) { - BeztEditData bed; - BeztEditFunc map_cb; + KeyframeEditData ked; + KeyframeEditFunc map_cb; /* init edit data * - AnimData is stored in 'data' * - only_keys is stored in 'i1' */ - memset(&bed, 0, sizeof(BeztEditData)); - bed.data= (void *)adt; - bed.i1= (int)only_keys; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.data= (void *)adt; + ked.i1= (int)only_keys; /* get editing callback */ if (restore) @@ -392,7 +369,7 @@ void ANIM_nla_mapping_apply_fcurve (AnimData *adt, FCurve *fcu, short restore, s map_cb= bezt_nlamapping_apply; /* apply to F-Curve */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, map_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, map_cb, NULL); } /* *************************************************** */ @@ -434,12 +411,12 @@ float ANIM_unit_mapping_get_factor (Scene *scene, ID *id, FCurve *fcu, short res /* ----------------------- */ /* helper function for ANIM_unit_mapping_apply_fcurve -> mapping callback for unit mapping */ -static short bezt_unit_mapping_apply (BeztEditData *bed, BezTriple *bezt) +static short bezt_unit_mapping_apply (KeyframeEditData *ked, BezTriple *bezt) { /* mapping factor is stored in f1, flags are stored in i1 */ - short only_keys= (bed->i1 & ANIM_UNITCONV_ONLYKEYS); - short sel_vs= (bed->i1 & ANIM_UNITCONV_SELVERTS); - float fac= bed->f1; + short only_keys= (ked->i1 & ANIM_UNITCONV_ONLYKEYS); + short sel_vs= (ked->i1 & ANIM_UNITCONV_SELVERTS); + float fac= ked->f1; /* adjust BezTriple handles only if allowed to */ if (only_keys == 0) { @@ -458,8 +435,8 @@ static short bezt_unit_mapping_apply (BeztEditData *bed, BezTriple *bezt) /* Apply/Unapply units conversions to keyframes */ void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short flag) { - BeztEditData bed; - BeztEditFunc sel_cb; + KeyframeEditData ked; + KeyframeEditFunc sel_cb; float fac; /* calculate mapping factor, and abort if nothing to change */ @@ -471,9 +448,9 @@ void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short fl * - mapping factor is stored in f1 * - flags are stored in 'i1' */ - memset(&bed, 0, sizeof(BeztEditData)); - bed.f1= (float)fac; - bed.i1= (int)flag; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.f1= (float)fac; + ked.i1= (int)flag; /* only selected? */ if (flag & ANIM_UNITCONV_ONLYSEL) @@ -482,7 +459,7 @@ void ANIM_unit_mapping_apply_fcurve (Scene *scene, ID *id, FCurve *fcu, short fl sel_cb= NULL; /* apply to F-Curve */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, sel_cb, bezt_unit_mapping_apply, NULL); + ANIM_fcurve_keyframes_loop(&ked, fcu, sel_cb, bezt_unit_mapping_apply, NULL); // FIXME: loop here for samples should be generalised // TODO: only sel? diff --git a/source/blender/editors/animation/anim_filter.c b/source/blender/editors/animation/anim_filter.c index 2bd4ab34fa5..a9c9830f07f 100644 --- a/source/blender/editors/animation/anim_filter.c +++ b/source/blender/editors/animation/anim_filter.c @@ -46,18 +46,11 @@ */ #include <string.h> -#include <stdio.h> -#include "DNA_listBase.h" -#include "DNA_ID.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" #include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_group_types.h" #include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_key_types.h" @@ -65,19 +58,17 @@ #include "DNA_mesh_types.h" #include "DNA_meta_types.h" #include "DNA_node_types.h" -#include "DNA_object_types.h" #include "DNA_particle_types.h" #include "DNA_space_types.h" #include "DNA_sequence_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_windowmanager_types.h" #include "DNA_world_types.h" #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_ghash.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -86,26 +77,12 @@ #include "BKE_global.h" #include "BKE_group.h" #include "BKE_key.h" -#include "BKE_object.h" #include "BKE_material.h" #include "BKE_node.h" #include "BKE_sequencer.h" -#include "BKE_screen.h" #include "BKE_utildefines.h" #include "ED_anim_api.h" -#include "ED_types.h" -#include "ED_util.h" - -#include "WM_api.h" -#include "WM_types.h" - -#include "BIF_gl.h" -#include "BIF_glutil.h" - -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" /* ************************************************************ */ /* Blender Context <-> Animation Context mapping */ @@ -116,12 +93,12 @@ /* Note: there's a similar function in key.c (ob_get_key) */ Key *actedit_get_shapekeys (bAnimContext *ac, SpaceAction *saction) { - Scene *scene= ac->scene; - Object *ob; - Key *key; + Scene *scene= ac->scene; + Object *ob; + Key *key; - ob = OBACT; - if (ob == NULL) + ob = OBACT; + if (ob == NULL) return NULL; /* XXX pinning is not available in 'ShapeKey' mode... */ @@ -151,7 +128,7 @@ Key *actedit_get_shapekeys (bAnimContext *ac, SpaceAction *saction) return key; } - return NULL; + return NULL; } /* Get data being edited in Action Editor (depending on current 'mode') */ @@ -820,7 +797,7 @@ bAnimListElem *make_new_animlistelem (void *data, short datatype, void *owner, s /* ----------------------------------------- */ /* NOTE: when this function returns true, the F-Curve is to be skipped */ -static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id, int filter_mode) +static int skip_fcurve_selected_data(bDopeSheet *ads, FCurve *fcu, ID *owner_id, int filter_mode) { if (GS(owner_id->name) == ID_OB) { Object *ob= (Object *)owner_id; @@ -837,9 +814,8 @@ static int skip_fcurve_selected_data(FCurve *fcu, ID *owner_id, int filter_mode) /* check whether to continue or skip */ if ((pchan) && (pchan->bone)) { - /* if only visible channels, skip if bone not visible */ - // TODO: should we just do this always? - if (filter_mode & ANIMFILTER_VISIBLE) { + /* if only visible channels, skip if bone not visible unless user wants channels from hidden data too */ + if ((filter_mode & ANIMFILTER_VISIBLE) && !(ads->filterflag & ADS_FILTER_INCL_HIDDEN)) { bArmature *arm= (bArmature *)ob->data; if ((arm->layer & pchan->bone->layer) == 0) @@ -910,7 +886,7 @@ static FCurve *animdata_filter_fcurve_next (bDopeSheet *ads, FCurve *first, bAct * - this will also affect things like Drivers, and also works for Bone Constraints */ if ( ((ads) && (ads->filterflag & ADS_FILTER_ONLYSEL)) && (owner_id) ) { - if (skip_fcurve_selected_data(fcu, owner_id, filter_mode)) + if (skip_fcurve_selected_data(ads, fcu, owner_id, filter_mode)) continue; } @@ -969,6 +945,13 @@ static int animdata_filter_action (bAnimContext *ac, ListBase *anim_data, bDopeS FCurve *lastchan=NULL; int items = 0; + /* don't include anything from this action if it is linked in from another file, + * and we're getting stuff for editing... + */ + // TODO: need a way of tagging other channels that may also be affected... + if ((filter_mode & ANIMFILTER_FOREDIT) && (act->id.lib)) + return 0; + /* loop over groups */ // TODO: in future, should we expect to need nested groups? for (agrp= act->groups.first; agrp; agrp= agrp->next) { @@ -1731,7 +1714,7 @@ static int animdata_filter_dopesheet_ob (bAnimContext *ac, ListBase *anim_data, /* add NLA tracks - only if expanded or so */ if (!(filter_mode & ANIMFILTER_VISIBLE) || FILTER_SKE_OBJD(key) || (filter_mode & ANIMFILTER_CURVESONLY)) - items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)ob); + items += animdata_filter_nla(ac, anim_data, ads, adt, filter_mode, ob, ANIMTYPE_OBJECT, (ID *)key); }, { /* drivers */ /* include shapekey-expand widget? */ @@ -2128,11 +2111,14 @@ static int animdata_filter_dopesheet (bAnimContext *ac, ListBase *anim_data, bDo /* firstly, check if object can be included, by the following factors: * - if only visible, must check for layer and also viewport visibility + * --> while tools may demand only visible, user setting takes priority + * as user option controls whether sets of channels get included while + * tool-flag takes into account collapsed/open channels too * - if only selected, must check if object is selected * - there must be animation data to edit */ // TODO: if cache is implemented, just check name here, and then - if (filter_mode & ANIMFILTER_VISIBLE) { + if ((filter_mode & ANIMFILTER_VISIBLE) && !(ads->filterflag & ADS_FILTER_INCL_HIDDEN)) { /* layer visibility - we check both object and base, since these may not be in sync yet */ if ((sce->lay & (ob->lay|base->lay))==0) continue; @@ -2536,6 +2522,65 @@ static short animdata_filter_dopesheet_summary (bAnimContext *ac, ListBase *anim return 1; } +/* ----------- Cleanup API --------------- */ + +/* Remove entries with invalid types in animation channel list */ +static int animdata_filter_remove_invalid (ListBase *anim_data) +{ + bAnimListElem *ale, *next; + int items = 0; + + /* only keep entries with valid types */ + for (ale= anim_data->first; ale; ale= next) { + next= ale->next; + + if (ale->type == ANIMTYPE_NONE) + BLI_freelinkN(anim_data, ale); + else + items++; + } + + return items; +} + +/* Remove duplicate entries in animation channel list */ +static int animdata_filter_remove_duplis (ListBase *anim_data) +{ + bAnimListElem *ale, *next; + GHash *gh; + int items = 0; + + /* build new hashtable to efficiently store and retrieve which entries have been + * encountered already while searching + */ + gh= BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "animdata_filter_duplis_remove gh"); + + /* loop through items, removing them from the list if a similar item occurs already */ + for (ale = anim_data->first; ale; ale = next) { + next = ale->next; + + /* check if hash has any record of an entry like this + * - just use ale->data for now, though it would be nicer to involve + * ale->type in combination too to capture corner cases (where same data performs differently) + */ + if (BLI_ghash_haskey(gh, ale->data) == 0) { + /* this entry is 'unique' and can be kept */ + BLI_ghash_insert(gh, ale->data, NULL); + items++; + } + else { + /* this entry isn't needed anymore */ + BLI_freelinkN(anim_data, ale); + } + } + + /* free the hash... */ + BLI_ghash_free(gh, NULL, NULL); + + /* return the number of items still in the list */ + return items; +} + /* ----------- Public API --------------- */ /* This function filters the active data source to leave only animation channels suitable for @@ -2551,7 +2596,6 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode /* only filter data if there's somewhere to put it */ if (data && anim_data) { - bAnimListElem *ale, *next; Object *obact= (ac) ? ac->obact : NULL; /* firstly filter the data */ @@ -2596,16 +2640,12 @@ int ANIM_animdata_filter (bAnimContext *ac, ListBase *anim_data, int filter_mode break; } - /* remove any weedy entries */ - // XXX this is weedy code! - for (ale= anim_data->first; ale; ale= next) { - next= ale->next; - - if (ale->type == ANIMTYPE_NONE) { - items--; - BLI_freelinkN(anim_data, ale); - } - } + /* remove any 'weedy' entries */ + items = animdata_filter_remove_invalid(anim_data); + + /* remove duplicates (if required) */ + if (filter_mode & ANIMFILTER_NODUPLIS) + items = animdata_filter_remove_duplis(anim_data); } /* return the number of items in the list */ diff --git a/source/blender/editors/animation/anim_intern.h b/source/blender/editors/animation/anim_intern.h index 5602bff77ce..274d33e4833 100644 --- a/source/blender/editors/animation/anim_intern.h +++ b/source/blender/editors/animation/anim_intern.h @@ -33,12 +33,6 @@ /* list of builtin KeyingSets (defined in keyingsets.c) */ extern ListBase builtin_keyingsets; -/* for builtin keyingsets - context poll */ -short keyingset_context_ok_poll(bContext *C, KeyingSet *ks); - -/* Main KeyingSet operations API call */ -short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks); - /* Operator Define Prototypes ------------------- */ /* Main Keyframe Management operators: @@ -71,6 +65,9 @@ void ANIM_OT_keying_set_remove(struct wmOperatorType *ot); void ANIM_OT_keying_set_path_add(struct wmOperatorType *ot); void ANIM_OT_keying_set_path_remove(struct wmOperatorType *ot); +/* KeyingSet general operators */ +void ANIM_OT_keying_set_active_set(struct wmOperatorType *ot); + /* .......... */ /* Driver management operators for UI buttons (RMB menu) */ diff --git a/source/blender/editors/animation/anim_ipo_utils.c b/source/blender/editors/animation/anim_ipo_utils.c index 0f29c274535..b71e9ac3507 100644 --- a/source/blender/editors/animation/anim_ipo_utils.c +++ b/source/blender/editors/animation/anim_ipo_utils.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -33,31 +33,16 @@ */ -#include <math.h> -#include <stdio.h> -#include <string.h> - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_key_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_view3d_types.h" -#include "BKE_animsys.h" -#include "BKE_key.h" #include "BKE_utildefines.h" -#include "UI_resources.h" -#include "ED_anim_api.h" - #include "RNA_access.h" -#include "RNA_types.h" /* ----------------------- Getter functions ----------------------- */ diff --git a/source/blender/editors/animation/anim_markers.c b/source/blender/editors/animation/anim_markers.c index 2888a95f704..65c67691560 100644 --- a/source/blender/editors/animation/anim_markers.c +++ b/source/blender/editors/animation/anim_markers.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -26,18 +26,11 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include <stdlib.h> #include <math.h> #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_view2d_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "DNA_object_types.h" #include "RNA_access.h" @@ -47,9 +40,7 @@ #include "BLI_blenlib.h" #include "BKE_context.h" -#include "BKE_global.h" #include "BKE_fcurve.h" -#include "BKE_utildefines.h" #include "BKE_main.h" #include "BKE_report.h" #include "BKE_scene.h" @@ -67,10 +58,10 @@ #include "ED_markers.h" #include "ED_screen.h" -#include "ED_types.h" #include "ED_util.h" #include "ED_numinput.h" #include "ED_object.h" +#include "ED_types.h" /* ************* Marker API **************** */ @@ -404,7 +395,7 @@ functions: exit() cleanup, send notifier - cancel() to escpae from modal + cancel() to escpae from modal callbacks: @@ -1078,7 +1069,7 @@ static void MARKER_OT_delete(wmOperatorType *ot) static int ed_marker_make_links_scene_exec(bContext *C, wmOperator *op) { ListBase *markers= context_get_markers(C); - Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); + Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene")); TimeMarker *marker, *marker_new; if(scene_to==NULL) { @@ -1119,8 +1110,9 @@ static void MARKER_OT_make_links_scene(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", ""); RNA_def_enum_funcs(prop, RNA_scene_itemf); + ot->prop= prop; } @@ -1209,6 +1201,7 @@ void ED_marker_keymap(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "MARKER_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "MARKER_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "MARKER_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MARKER_OT_move", GKEY, KM_PRESS, 0, 0); #ifdef DURIAN_CAMERA_SWITCH diff --git a/source/blender/editors/animation/anim_ops.c b/source/blender/editors/animation/anim_ops.c index 4e310e27c5f..11ba3cfffed 100644 --- a/source/blender/editors/animation/anim_ops.c +++ b/source/blender/editors/animation/anim_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,22 +29,12 @@ #include <stdlib.h> #include <math.h> -#include "MEM_guardedalloc.h" - #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" - -#include "BLI_blenlib.h" #include "BKE_context.h" -#include "BKE_utildefines.h" #include "BKE_sound.h" -#include "UI_interface.h" #include "UI_view2d.h" #include "RNA_access.h" @@ -53,9 +43,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_anim_api.h" -#include "ED_keyframing.h" -#include "ED_markers.h" #include "ED_screen.h" #include "anim_intern.h" @@ -82,6 +69,7 @@ static void change_frame_apply(bContext *C, wmOperator *op) /* set the new frame number */ CFRA= RNA_int_get(op->ptr, "frame"); FRAMENUMBER_MIN_CLAMP(CFRA); + SUBFRA = 0.f; /* do updates */ sound_seek_scene(C); @@ -374,6 +362,8 @@ void ED_operatortypes_anim(void) WM_operatortype_append(ANIM_OT_keying_set_remove); WM_operatortype_append(ANIM_OT_keying_set_path_add); WM_operatortype_append(ANIM_OT_keying_set_path_remove); + + WM_operatortype_append(ANIM_OT_keying_set_active_set); } void ED_keymap_anim(wmKeyConfig *keyconf) diff --git a/source/blender/editors/animation/drivers.c b/source/blender/editors/animation/drivers.c index ababa25917a..3fc228e1c15 100644 --- a/source/blender/editors/animation/drivers.c +++ b/source/blender/editors/animation/drivers.c @@ -27,45 +27,18 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include <stdio.h> -#include <stddef.h> #include <string.h> -#include <math.h> -#include <float.h> #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" -#include "BLI_math.h" -#include "BLI_dynstr.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_object_types.h" -#include "DNA_material_types.h" -#include "DNA_scene_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_animsys.h" -#include "BKE_action.h" -#include "BKE_constraint.h" #include "BKE_depsgraph.h" #include "BKE_fcurve.h" -#include "BKE_utildefines.h" #include "BKE_context.h" -#include "BKE_report.h" -#include "BKE_key.h" -#include "BKE_material.h" - -#include "ED_anim_api.h" -#include "ED_keyframing.h" -#include "ED_keyframes_edit.h" -#include "ED_screen.h" -#include "ED_util.h" #include "UI_interface.h" @@ -74,7 +47,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" /* ************************************************** */ /* Animation Data Validation */ @@ -225,27 +197,42 @@ short ANIM_remove_driver (struct ID *id, const char rna_path[], int array_index, { AnimData *adt; FCurve *fcu; + int success= 0; /* get F-Curve * Note: here is one of the places where we don't want new F-Curve + Driver added! * so 'add' var must be 0 */ /* we don't check the validity of the path here yet, but it should be ok... */ - fcu= verify_driver_fcurve(id, rna_path, array_index, 0); adt= BKE_animdata_from_id(id); - /* only continue if we have an driver to remove */ - if (adt && fcu) { - /* remove F-Curve from driver stack, then free it */ - BLI_remlink(&adt->drivers, fcu); - free_fcurve(fcu); - - /* done successfully */ - return 1; + if(adt) { + if(array_index == -1) { + FCurve *fcu_iter= adt->drivers.first; + while((fcu= iter_step_fcurve(fcu_iter, rna_path))) { + /* store the next fcurve for looping */ + fcu_iter= fcu->next; + + /* remove F-Curve from driver stack, then free it */ + BLI_remlink(&adt->drivers, fcu); + free_fcurve(fcu); + + /* done successfully */ + success |= 1; + } + } + else { + fcu= verify_driver_fcurve(id, rna_path, array_index, 0); + if(fcu) { + BLI_remlink(&adt->drivers, fcu); + free_fcurve(fcu); + + success = 1; + } + } } - - /* failed */ - return 0; + + return success; } /* ************************************************** */ @@ -436,33 +423,21 @@ static int remove_driver_button_exec (bContext *C, wmOperator *op) PropertyRNA *prop= NULL; char *path; short success= 0; - int a, index, length, all= RNA_boolean_get(op->ptr, "all"); + int index, all= RNA_boolean_get(op->ptr, "all"); /* try to find driver using property retrieved from UI */ memset(&ptr, 0, sizeof(PointerRNA)); uiAnimContextProperty(C, &ptr, &prop, &index); + + if (all) + index= -1; if (ptr.data && prop) { path= RNA_path_from_ID_to_property(&ptr, prop); - - if (path) { - if (all) { - length= RNA_property_array_length(&ptr, prop); - - if(length) index= 0; - else length= 1; - } - else - length= 1; - - for (a=0; a<length; a++) - success+= ANIM_remove_driver(ptr.id.data, path, index+a, 0); - - MEM_freeN(path); - } + success= ANIM_remove_driver(ptr.id.data, path, index, 0); + MEM_freeN(path); } - if (success) { /* send updates */ DAG_ids_flush_update(0); diff --git a/source/blender/editors/animation/fmodifier_ui.c b/source/blender/editors/animation/fmodifier_ui.c index 651ce34a2f2..cd6714ec51f 100644 --- a/source/blender/editors/animation/fmodifier_ui.c +++ b/source/blender/editors/animation/fmodifier_ui.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,66 +30,39 @@ * This file defines the (C-Coded) templates + editing callbacks needed * by the interface stuff or F-Modifiers, as used by F-Curves in the Graph Editor, * and NLA-Strips in the NLA Editor. + * + * Copy/Paste Buffer for F-Modifiers: + * For now, this is also defined in this file so that it can be shared between the */ #include <string.h> -#include <stdio.h> -#include <math.h> -#include <float.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" -#include "BLI_math.h" #include "BLI_blenlib.h" -#include "BLI_editVert.h" -#include "BLI_rand.h" -#include "BKE_animsys.h" -#include "BKE_action.h" #include "BKE_context.h" -#include "BKE_curve.h" -#include "BKE_customdata.h" -#include "BKE_depsgraph.h" #include "BKE_fcurve.h" -#include "BKE_object.h" -#include "BKE_global.h" -#include "BKE_nla.h" -#include "BKE_scene.h" -#include "BKE_screen.h" -#include "BKE_utildefines.h" - -#include "BIF_gl.h" #include "WM_api.h" #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" -#include "ED_anim_api.h" -#include "ED_keyframing.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" + +/* ********************************************** */ +/* UI STUFF */ // XXX! -------------------------------- /* temporary definition for limits of float number buttons (FLT_MAX tends to infinity with old system) */ #define UI_FLT_MAX 10000.0f -/* ********************************************** */ - #define B_REDR 1 #define B_FMODIFIER_REDRAW 20 @@ -122,7 +95,7 @@ static void delete_fmodifier_cb (bContext *C, void *fmods_v, void *fcm_v) /* send notifiers */ // XXX for now, this is the only way to get updates in all the right places... but would be nice to have a special one in this case - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* --------------- */ @@ -252,14 +225,14 @@ static void draw_modifier__fn_generator(uiLayout *layout, ID *id, FModifier *fcm /* add the settings */ col= uiLayoutColumn(layout, 1); - uiItemR(col, "", 0, &ptr, "function_type", 0); - uiItemR(col, NULL, 0, &ptr, "additive", UI_ITEM_R_TOGGLE); + uiItemR(col, &ptr, "function_type", 0, "", 0); + uiItemR(col, &ptr, "additive", UI_ITEM_R_TOGGLE, NULL, 0); col= uiLayoutColumn(layout, 0); // no grouping for now - uiItemR(col, NULL, 0, &ptr, "amplitude", 0); - uiItemR(col, NULL, 0, &ptr, "phase_multiplier", 0); - uiItemR(col, NULL, 0, &ptr, "phase_offset", 0); - uiItemR(col, NULL, 0, &ptr, "value_offset", 0); + uiItemR(col, &ptr, "amplitude", 0, NULL, 0); + uiItemR(col, &ptr, "phase_multiplier", 0, NULL, 0); + uiItemR(col, &ptr, "phase_offset", 0, NULL, 0); + uiItemR(col, &ptr, "value_offset", 0, NULL, 0); } /* --------------- */ @@ -280,15 +253,15 @@ static void draw_modifier__cycles(uiLayout *layout, ID *id, FModifier *fcm, shor /* before range */ col= uiLayoutColumn(split, 1); - uiItemL(col, "Before:", 0); - uiItemR(col, "", 0, &ptr, "before_mode", 0); - uiItemR(col, NULL, 0, &ptr, "before_cycles", 0); + uiItemL(col, "Before:", 0); + uiItemR(col, &ptr, "before_mode", 0, "", 0); + uiItemR(col, &ptr, "before_cycles", 0, NULL, 0); /* after range */ col= uiLayoutColumn(split, 1); - uiItemL(col, "After:", 0); - uiItemR(col, "", 0, &ptr, "after_mode", 0); - uiItemR(col, NULL, 0, &ptr, "after_cycles", 0); + uiItemL(col, "After:", 0); + uiItemR(col, &ptr, "after_mode", 0, "", 0); + uiItemR(col, &ptr, "after_cycles", 0, NULL, 0); } /* --------------- */ @@ -303,20 +276,20 @@ static void draw_modifier__noise(uiLayout *layout, ID *id, FModifier *fcm, short RNA_pointer_create(id, &RNA_FModifierNoise, fcm, &ptr); /* blending mode */ - uiItemR(layout, NULL, 0, &ptr, "modification", 0); + uiItemR(layout, &ptr, "modification", 0, NULL, 0); /* split into 2 columns */ split= uiLayoutSplit(layout, 0.5f, 0); /* col 1 */ col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &ptr, "size", 0); - uiItemR(col, NULL, 0, &ptr, "strength", 0); + uiItemR(col, &ptr, "size", 0, NULL, 0); + uiItemR(col, &ptr, "strength", 0, NULL, 0); /* col 2 */ col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &ptr, "phase", 0); - uiItemR(col, NULL, 0, &ptr, "depth", 0); + uiItemR(col, &ptr, "phase", 0, NULL, 0); + uiItemR(col, &ptr, "depth", 0, NULL, 0); } /* --------------- */ @@ -497,11 +470,11 @@ static void draw_modifier__envelope(uiLayout *layout, ID *id, FModifier *fcm, sh /* general settings */ col= uiLayoutColumn(layout, 1); uiItemL(col, "Envelope:", 0); - uiItemR(col, NULL, 0, &ptr, "reference_value", 0); + uiItemR(col, &ptr, "reference_value", 0, NULL, 0); row= uiLayoutRow(col, 1); - uiItemR(row, "Min", 0, &ptr, "default_minimum", 0); - uiItemR(row, "Max", 0, &ptr, "default_maximum", 0); + uiItemR(row, &ptr, "default_minimum", 0, "Min", 0); + uiItemR(row, &ptr, "default_maximum", 0, "Max", 0); /* control points header */ // TODO: move this control-point control stuff to using the new special widgets for lists @@ -553,16 +526,16 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* x-minimum */ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_minimum_x", 0); - uiItemR(col, NULL, 0, &ptr, "minimum_x", 0); + uiItemR(col, &ptr, "use_minimum_x", 0, NULL, 0); + uiItemR(col, &ptr, "minimum_x", 0, NULL, 0); /* y-minimum*/ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_minimum_y", 0); - uiItemR(col, NULL, 0, &ptr, "minimum_y", 0); + uiItemR(col, &ptr, "use_minimum_y", 0, NULL, 0); + uiItemR(col, &ptr, "minimum_y", 0, NULL, 0); } - /* row 2: minimum */ + /* row 2: maximum */ { row= uiLayoutRow(layout, 0); @@ -571,18 +544,50 @@ static void draw_modifier__limits(uiLayout *layout, ID *id, FModifier *fcm, shor /* x-minimum */ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_maximum_x", 0); - uiItemR(col, NULL, 0, &ptr, "maximum_x", 0); + uiItemR(col, &ptr, "use_maximum_x", 0, NULL, 0); + uiItemR(col, &ptr, "maximum_x", 0, NULL, 0); /* y-minimum*/ col= uiLayoutColumn(split, 1); - uiItemR(col, NULL, 0, &ptr, "use_maximum_y", 0); - uiItemR(col, NULL, 0, &ptr, "maximum_y", 0); + uiItemR(col, &ptr, "use_maximum_y", 0, NULL, 0); + uiItemR(col, &ptr, "maximum_y", 0, NULL, 0); } } /* --------------- */ +/* draw settings for stepped interpolation modifier */ +static void draw_modifier__stepped(uiLayout *layout, ID *id, FModifier *fcm, short width) +{ + uiLayout *col, *subcol; + PointerRNA ptr; + + /* init the RNA-pointer */ + RNA_pointer_create(id, &RNA_FModifierStepped, fcm, &ptr); + + /* block 1: "stepping" settings */ + col= uiLayoutColumn(layout, 0); + uiItemR(col, &ptr, "step_size", 0, NULL, 0); + uiItemR(col, &ptr, "offset", 0, NULL, 0); + + /* block 2: start range settings */ + col= uiLayoutColumn(layout, 1); + uiItemR(col, &ptr, "use_frame_start", 0, NULL, 0); + + subcol = uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(&ptr, "use_frame_start")); + uiItemR(subcol, &ptr, "frame_start", 0, NULL, 0); + + /* block 3: end range settings */ + col= uiLayoutColumn(layout, 1); + uiItemR(col, &ptr, "use_frame_end", 0, NULL, 0); + + subcol = uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(&ptr, "use_end_frame")); + uiItemR(subcol, &ptr, "frame_end", 0, NULL, 0); +} + +/* --------------- */ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifiers, FModifier *fcm) { @@ -611,10 +616,10 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie uiBlockSetEmboss(block, UI_EMBOSSN); /* expand */ - uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY); + uiItemR(subrow, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0); /* checkbox for 'active' status (for now) */ - uiItemR(subrow, "", 0, &ptr, "active", UI_ITEM_R_ICON_ONLY); + uiItemR(subrow, &ptr, "active", UI_ITEM_R_ICON_ONLY, "", 0); /* name */ if (fmi) @@ -628,7 +633,7 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie /* 'mute' button */ - uiItemR(subrow, "", 0, &ptr, "muted", UI_ITEM_R_ICON_ONLY); + uiItemR(subrow, &ptr, "muted", UI_ITEM_R_ICON_ONLY, "", 0); uiBlockSetEmboss(block, UI_EMBOSSN); @@ -669,6 +674,10 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie case FMODIFIER_TYPE_NOISE: /* Noise */ draw_modifier__noise(box, id, fcm, width); break; + + case FMODIFIER_TYPE_STEPPED: /* Stepped */ + draw_modifier__stepped(box, id, fcm, width); + break; default: /* unknown type */ break; @@ -677,3 +686,81 @@ void ANIM_uiTemplate_fmodifier_draw (uiLayout *layout, ID *id, ListBase *modifie } /* ********************************************** */ +/* COPY/PASTE BUFFER STUFF */ + +/* Copy/Paste Buffer itself (list of FModifier 's) */ +static ListBase fmodifier_copypaste_buf = {NULL, NULL}; + +/* ---------- */ + +/* free the copy/paste buffer */ +void free_fmodifiers_copybuf (void) +{ + /* just free the whole buffer */ + free_fmodifiers(&fmodifier_copypaste_buf); +} + +/* copy the given F-Modifiers to the buffer, returning whether anything was copied or not + * assuming that the buffer has been cleared already with free_fmodifiers_copybuf() + * - active: only copy the active modifier + */ +short ANIM_fmodifiers_copy_to_buf (ListBase *modifiers, short active) +{ + short ok = 1; + + /* sanity checks */ + if ELEM(NULL, modifiers, modifiers->first) + return 0; + + /* copy the whole list, or just the active one? */ + if (active) { + FModifier *fcm = find_active_fmodifier(modifiers); + + if (fcm) { + FModifier *fcmN = copy_fmodifier(fcm); + BLI_addtail(&fmodifier_copypaste_buf, fcmN); + } + else + ok = 0; + } + else + copy_fmodifiers(&fmodifier_copypaste_buf, modifiers); + + /* did we succeed? */ + return ok; +} + +/* 'Paste' the F-Modifier(s) from the buffer to the specified list + * - replace: free all the existing modifiers to leave only the pasted ones + */ +short ANIM_fmodifiers_paste_from_buf (ListBase *modifiers, short replace) +{ + FModifier *fcm; + short ok = 0; + + /* sanity checks */ + if (modifiers == NULL) + return 0; + + /* if replacing the list, free the existing modifiers */ + if (replace) + free_fmodifiers(modifiers); + + /* now copy over all the modifiers in the buffer to the end of the list */ + for (fcm= fmodifier_copypaste_buf.first; fcm; fcm= fcm->next) { + /* make a copy of it */ + FModifier *fcmN = copy_fmodifier(fcm); + + /* make sure the new one isn't active, otherwise the list may get several actives */ + fcmN->flag &= ~FMODIFIER_FLAG_ACTIVE; + + /* now add it to the end of the list */ + BLI_addtail(modifiers, fcmN); + ok = 1; + } + + /* did we succeed? */ + return ok; +} + +/* ********************************************** */ diff --git a/source/blender/editors/animation/keyframes_draw.c b/source/blender/editors/animation/keyframes_draw.c index 011422eb65c..2290909325e 100644 --- a/source/blender/editors/animation/keyframes_draw.c +++ b/source/blender/editors/animation/keyframes_draw.c @@ -34,26 +34,17 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_dlrbTree.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" #include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_mesh_types.h" @@ -61,11 +52,7 @@ #include "DNA_meta_types.h" #include "DNA_node_types.h" #include "DNA_particle_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" #include "DNA_world_types.h" -#include "DNA_view2d_types.h" #include "BKE_action.h" #include "BKE_depsgraph.h" @@ -80,16 +67,11 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "UI_interface.h" -#include "UI_interface_icons.h" #include "UI_resources.h" #include "UI_view2d.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" #include "ED_keyframes_draw.h" -#include "ED_screen.h" -#include "ED_space_api.h" /* *************************** Keyframe Processing *************************** */ @@ -258,7 +240,7 @@ static BezTriple *abk_get_bezt_with_value (ActBeztColumn *abk, float value) /* look over each BezTriple in this container */ for (i = 0; i < abk->numBezts; i++) { /* only do exact match for now... */ - if (i >= sizeof(abk->bezts)/sizeof(BezTriple)) { + if (/*i >= MAX_ABK_BUFSIZE*/0) { // TODO: this case needs special handling } else { @@ -301,7 +283,7 @@ static void add_bezt_to_keyblocks_list(DLRBT_Tree *blocks, DLRBT_Tree *beztTree, abk= (ActBeztColumn *)BLI_dlrbTree_search_prev(beztTree, compare_abk_bezt, beztn); /* if applicable, the BezTriple with the same value */ prev= (abk) ? abk_get_bezt_with_value(abk, beztn->vec[1][1]) : NULL; - + /* check if block needed - same value(s)? * -> firstly, handles must have same central value as each other * -> secondly, handles which control that section of the curve must be constant diff --git a/source/blender/editors/animation/keyframes_edit.c b/source/blender/editors/animation/keyframes_edit.c index ca1df14e14c..3175e9e34a7 100644 --- a/source/blender/editors/animation/keyframes_edit.c +++ b/source/blender/editors/animation/keyframes_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -35,10 +35,8 @@ #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_mesh_types.h" @@ -47,7 +45,6 @@ #include "DNA_meta_types.h" #include "DNA_node_types.h" #include "DNA_particle_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" #include "DNA_world_types.h" @@ -64,7 +61,7 @@ /* This file defines an API and set of callback-operators for non-destructive editing of keyframe data. * * Two API functions are defined for actually performing the operations on the data: - * ANIM_fcurve_keys_bezier_loop() + * ANIM_fcurve_keyframes_loop() * which take the data they operate on, a few callbacks defining what operations to perform. * * As operators which work on keyframes usually apply the same operation on all BezTriples in @@ -87,56 +84,66 @@ /* This function is used to loop over BezTriples in the given F-Curve, applying a given * operation on them, and optionally applies an F-Curve validation function afterwards. */ -short ANIM_fcurve_keys_bezier_loop(BeztEditData *bed, FCurve *fcu, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb) +// TODO: make this function work on samples too... +short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb) { - BezTriple *bezt; - int i; - + BezTriple *bezt; + short ok = 0; + int i; + /* sanity check */ if (ELEM(NULL, fcu, fcu->bezt)) return 0; - + /* set the F-Curve into the editdata so that it can be accessed */ - if (bed) { - bed->fcu= fcu; - bed->curIndex= 0; - } - + if (ked) { + ked->fcu= fcu; + ked->curIndex= 0; + ked->curflags= ok; + } + /* if function to apply to bezier curves is set, then loop through executing it on beztriples */ - if (bezt_cb) { + if (key_cb) { /* if there's a validation func, include that check in the loop * (this is should be more efficient than checking for it in every loop) */ - if (bezt_ok) { + if (key_ok) { for (bezt=fcu->bezt, i=0; i < fcu->totvert; bezt++, i++) { - if (bed) bed->curIndex= i; + if (ked) { + /* advance the index, and reset the ok flags (to not influence the result) */ + ked->curIndex= i; + ked->curflags= 0; + } /* Only operate on this BezTriple if it fullfills the criteria of the validation func */ - if (bezt_ok(bed, bezt)) { + if ( (ok = key_ok(ked, bezt)) ) { + if (ked) ked->curflags= ok; + /* Exit with return-code '1' if function returns positive * This is useful if finding if some BezTriple satisfies a condition. */ - if (bezt_cb(bed, bezt)) return 1; + if (key_cb(ked, bezt)) return 1; } } } else { for (bezt=fcu->bezt, i=0; i < fcu->totvert; bezt++, i++) { - if (bed) bed->curIndex= i; + if (ked) ked->curIndex= i; /* Exit with return-code '1' if function returns positive - * This is useful if finding if some BezTriple satisfies a condition. - */ - if (bezt_cb(bed, bezt)) return 1; + * This is useful if finding if some BezTriple satisfies a condition. + */ + if (key_cb(ked, bezt)) return 1; } } - } + } /* unset the F-Curve from the editdata now that it's done */ - if (bed) { - bed->fcu= NULL; - bed->curIndex= 0; - } + if (ked) { + ked->fcu= NULL; + ked->curIndex= 0; + ked->curflags= 0; + } /* if fcu_cb (F-Curve post-editing callback) has been specified then execute it */ if (fcu_cb) @@ -149,7 +156,7 @@ short ANIM_fcurve_keys_bezier_loop(BeztEditData *bed, FCurve *fcu, BeztEditFunc /* -------------------------------- Further Abstracted (Not Exposed Directly) ----------------------------- */ /* This function is used to loop over the keyframe data in an Action Group */ -static short agrp_keys_bezier_loop(BeztEditData *bed, bActionGroup *agrp, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb) +static short agrp_keyframes_loop(KeyframeEditData *ked, bActionGroup *agrp, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb) { FCurve *fcu; @@ -159,7 +166,7 @@ static short agrp_keys_bezier_loop(BeztEditData *bed, bActionGroup *agrp, BeztEd /* only iterate over the F-Curves that are in this group */ for (fcu= agrp->channels.first; fcu && fcu->grp==agrp; fcu= fcu->next) { - if (ANIM_fcurve_keys_bezier_loop(bed, fcu, bezt_ok, bezt_cb, fcu_cb)) + if (ANIM_fcurve_keyframes_loop(ked, fcu, key_ok, key_cb, fcu_cb)) return 1; } @@ -167,7 +174,7 @@ static short agrp_keys_bezier_loop(BeztEditData *bed, bActionGroup *agrp, BeztEd } /* This function is used to loop over the keyframe data in an Action */ -static short act_keys_bezier_loop(BeztEditData *bed, bAction *act, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb) +static short act_keyframes_loop(KeyframeEditData *ked, bAction *act, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb) { FCurve *fcu; @@ -177,7 +184,7 @@ static short act_keys_bezier_loop(BeztEditData *bed, bAction *act, BeztEditFunc /* just loop through all F-Curves */ for (fcu= act->curves.first; fcu; fcu= fcu->next) { - if (ANIM_fcurve_keys_bezier_loop(bed, fcu, bezt_ok, bezt_cb, fcu_cb)) + if (ANIM_fcurve_keyframes_loop(ked, fcu, key_ok, key_cb, fcu_cb)) return 1; } @@ -185,7 +192,7 @@ static short act_keys_bezier_loop(BeztEditData *bed, bAction *act, BeztEditFunc } /* This function is used to loop over the keyframe data of an AnimData block */ -static short adt_keys_bezier_loop(BeztEditData *bed, AnimData *adt, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +static short adt_keyframes_loop(KeyframeEditData *ked, AnimData *adt, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { /* sanity check */ if (adt == NULL) @@ -197,13 +204,13 @@ static short adt_keys_bezier_loop(BeztEditData *bed, AnimData *adt, BeztEditFunc /* just loop through all F-Curves acting as Drivers */ for (fcu= adt->drivers.first; fcu; fcu= fcu->next) { - if (ANIM_fcurve_keys_bezier_loop(bed, fcu, bezt_ok, bezt_cb, fcu_cb)) + if (ANIM_fcurve_keyframes_loop(ked, fcu, key_ok, key_cb, fcu_cb)) return 1; } } else if (adt->action) { /* call the function for actions */ - if (act_keys_bezier_loop(bed, adt->action, bezt_ok, bezt_cb, fcu_cb)) + if (act_keyframes_loop(ked, adt->action, key_ok, key_cb, fcu_cb)) return 1; } @@ -211,7 +218,7 @@ static short adt_keys_bezier_loop(BeztEditData *bed, AnimData *adt, BeztEditFunc } /* This function is used to loop over the keyframe data in an Object */ -static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +static short ob_keyframes_loop(KeyframeEditData *ked, Object *ob, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { Key *key= ob_get_key(ob); @@ -221,13 +228,13 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez /* firstly, Object's own AnimData */ if (ob->adt) { - if (adt_keys_bezier_loop(bed, ob->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, ob->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } /* shapekeys */ if ((key && key->adt) && !(filterflag & ADS_FILTER_NOSHAPEKEYS)) { - if (adt_keys_bezier_loop(bed, key->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, key->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } @@ -243,7 +250,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez continue; /* add material's data */ - if (adt_keys_bezier_loop(bed, ma->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, ma->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -255,7 +262,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez Camera *ca= (Camera *)ob->data; if ((ca->adt) && !(filterflag & ADS_FILTER_NOCAM)) { - if (adt_keys_bezier_loop(bed, ca->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, ca->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -265,7 +272,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez Lamp *la= (Lamp *)ob->data; if ((la->adt) && !(filterflag & ADS_FILTER_NOLAM)) { - if (adt_keys_bezier_loop(bed, la->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, la->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -277,7 +284,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez Curve *cu= (Curve *)ob->data; if ((cu->adt) && !(filterflag & ADS_FILTER_NOCUR)) { - if (adt_keys_bezier_loop(bed, cu->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, cu->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -287,7 +294,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez MetaBall *mb= (MetaBall *)ob->data; if ((mb->adt) && !(filterflag & ADS_FILTER_NOMBA)) { - if (adt_keys_bezier_loop(bed, mb->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, mb->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -297,7 +304,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez bArmature *arm= (bArmature *)ob->data; if ((arm->adt) && !(filterflag & ADS_FILTER_NOARM)) { - if (adt_keys_bezier_loop(bed, arm->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, arm->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -307,7 +314,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez Mesh *me= (Mesh *)ob->data; if ((me->adt) && !(filterflag & ADS_FILTER_NOMESH)) { - if (adt_keys_bezier_loop(bed, me->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, me->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -322,7 +329,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez if (ELEM(NULL, psys->part, psys->part->adt)) continue; - if (adt_keys_bezier_loop(bed, psys->part->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, psys->part->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } } @@ -331,7 +338,7 @@ static short ob_keys_bezier_loop(BeztEditData *bed, Object *ob, BeztEditFunc bez } /* This function is used to loop over the keyframe data in a Scene */ -static short scene_keys_bezier_loop(BeztEditData *bed, Scene *sce, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +static short scene_keyframes_loop(KeyframeEditData *ked, Scene *sce, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { World *wo= (sce) ? sce->world : NULL; bNodeTree *ntree= (sce) ? sce->nodetree : NULL; @@ -342,19 +349,19 @@ static short scene_keys_bezier_loop(BeztEditData *bed, Scene *sce, BeztEditFunc /* Scene's own animation */ if (sce->adt) { - if (adt_keys_bezier_loop(bed, sce->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, sce->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } /* World */ if (wo && wo->adt) { - if (adt_keys_bezier_loop(bed, wo->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, wo->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } /* NodeTree */ if (ntree && ntree->adt) { - if (adt_keys_bezier_loop(bed, ntree->adt, bezt_ok, bezt_cb, fcu_cb, filterflag)) + if (adt_keyframes_loop(ked, ntree->adt, key_ok, key_cb, fcu_cb, filterflag)) return 1; } @@ -363,7 +370,7 @@ static short scene_keys_bezier_loop(BeztEditData *bed, Scene *sce, BeztEditFunc } /* This function is used to loop over the keyframe data in a DopeSheet summary */ -static short summary_keys_bezier_loop(BeztEditData *bed, bAnimContext *ac, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +static short summary_keyframes_loop(KeyframeEditData *ked, bAnimContext *ac, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; @@ -379,7 +386,7 @@ static short summary_keys_bezier_loop(BeztEditData *bed, bAnimContext *ac, BeztE /* loop through each F-Curve, working on the keyframes until the first curve aborts */ for (ale= anim_data.first; ale; ale= ale->next) { - ret_code= ANIM_fcurve_keys_bezier_loop(bed, ale->data, bezt_ok, bezt_cb, fcu_cb); + ret_code= ANIM_fcurve_keyframes_loop(ked, ale->data, key_ok, key_cb, fcu_cb); if (ret_code) break; @@ -393,7 +400,7 @@ static short summary_keys_bezier_loop(BeztEditData *bed, bAnimContext *ac, BeztE /* --- */ /* This function is used to apply operation to all keyframes, regardless of the type */ -short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +short ANIM_animchannel_keyframes_loop(KeyframeEditData *ked, bAnimListElem *ale, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { /* sanity checks */ if (ale == NULL) @@ -403,29 +410,29 @@ short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, bAnimListElem *ale, B switch (ale->datatype) { /* direct keyframe data (these loops are exposed) */ case ALE_FCURVE: /* F-Curve */ - return ANIM_fcurve_keys_bezier_loop(bed, ale->key_data, bezt_ok, bezt_cb, fcu_cb); + return ANIM_fcurve_keyframes_loop(ked, ale->key_data, key_ok, key_cb, fcu_cb); /* indirect 'summaries' (these are not exposed directly) * NOTE: must keep this code in sync with the drawing code and also the filtering code! */ case ALE_GROUP: /* action group */ - return agrp_keys_bezier_loop(bed, (bActionGroup *)ale->data, bezt_ok, bezt_cb, fcu_cb); + return agrp_keyframes_loop(ked, (bActionGroup *)ale->data, key_ok, key_cb, fcu_cb); case ALE_ACT: /* action */ - return act_keys_bezier_loop(bed, (bAction *)ale->key_data, bezt_ok, bezt_cb, fcu_cb); + return act_keyframes_loop(ked, (bAction *)ale->key_data, key_ok, key_cb, fcu_cb); case ALE_OB: /* object */ - return ob_keys_bezier_loop(bed, (Object *)ale->key_data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return ob_keyframes_loop(ked, (Object *)ale->key_data, key_ok, key_cb, fcu_cb, filterflag); case ALE_SCE: /* scene */ - return scene_keys_bezier_loop(bed, (Scene *)ale->data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return scene_keyframes_loop(ked, (Scene *)ale->data, key_ok, key_cb, fcu_cb, filterflag); case ALE_ALL: /* 'all' (DopeSheet summary) */ - return summary_keys_bezier_loop(bed, (bAnimContext *)ale->data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return summary_keyframes_loop(ked, (bAnimContext *)ale->data, key_ok, key_cb, fcu_cb, filterflag); } return 0; } /* This function is used to apply operation to all keyframes, regardless of the type without needed an AnimListElem wrapper */ -short ANIM_animchanneldata_keys_bezier_loop(BeztEditData *bed, void *data, int keytype, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag) +short ANIM_animchanneldata_keyframes_loop(KeyframeEditData *ked, void *data, int keytype, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag) { /* sanity checks */ if (data == NULL) @@ -435,22 +442,22 @@ short ANIM_animchanneldata_keys_bezier_loop(BeztEditData *bed, void *data, int k switch (keytype) { /* direct keyframe data (these loops are exposed) */ case ALE_FCURVE: /* F-Curve */ - return ANIM_fcurve_keys_bezier_loop(bed, data, bezt_ok, bezt_cb, fcu_cb); + return ANIM_fcurve_keyframes_loop(ked, data, key_ok, key_cb, fcu_cb); /* indirect 'summaries' (these are not exposed directly) * NOTE: must keep this code in sync with the drawing code and also the filtering code! */ case ALE_GROUP: /* action group */ - return agrp_keys_bezier_loop(bed, (bActionGroup *)data, bezt_ok, bezt_cb, fcu_cb); + return agrp_keyframes_loop(ked, (bActionGroup *)data, key_ok, key_cb, fcu_cb); case ALE_ACT: /* action */ - return act_keys_bezier_loop(bed, (bAction *)data, bezt_ok, bezt_cb, fcu_cb); + return act_keyframes_loop(ked, (bAction *)data, key_ok, key_cb, fcu_cb); case ALE_OB: /* object */ - return ob_keys_bezier_loop(bed, (Object *)data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return ob_keyframes_loop(ked, (Object *)data, key_ok, key_cb, fcu_cb, filterflag); case ALE_SCE: /* scene */ - return scene_keys_bezier_loop(bed, (Scene *)data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return scene_keyframes_loop(ked, (Scene *)data, key_ok, key_cb, fcu_cb, filterflag); case ALE_ALL: /* 'all' (DopeSheet summary) */ - return summary_keys_bezier_loop(bed, (bAnimContext *)data, bezt_ok, bezt_cb, fcu_cb, filterflag); + return summary_keyframes_loop(ked, (bAnimContext *)data, key_ok, key_cb, fcu_cb, filterflag); } return 0; @@ -487,50 +494,113 @@ void ANIM_editkeyframes_refresh(bAnimContext *ac) /* ************************************************************************** */ /* BezTriple Validation Callbacks */ -static short ok_bezier_frame(BeztEditData *bed, BezTriple *bezt) +/* ------------------------ */ +/* Some macros to make this easier... */ + +/* run the given check on the 3 handles + * - check should be a macro, which takes the handle index as its single arg, which it substitutes later + * - requires that a var, of type short, is named 'ok', and has been initialised ot 0 + */ +#define KEYFRAME_OK_CHECKS(check) \ + { \ + if (check(1)) \ + ok |= KEYFRAME_OK_KEY; \ + \ + if (ked && (ked->iterflags & KEYFRAME_ITER_INCL_HANDLES)) { \ + if (check(0)) \ + ok |= KEYFRAME_OK_H1; \ + if (check(2)) \ + ok |= KEYFRAME_OK_H2; \ + } \ + } + +/* ------------------------ */ + +static short ok_bezier_frame(KeyframeEditData *ked, BezTriple *bezt) { + short ok = 0; + /* frame is stored in f1 property (this float accuracy check may need to be dropped?) */ - return IS_EQ(bezt->vec[1][0], bed->f1); + #define KEY_CHECK_OK(_index) IS_EQ(bezt->vec[_index][0], ked->f1) + KEYFRAME_OK_CHECKS(KEY_CHECK_OK); + #undef KEY_CHECK_OK + + /* return ok flags */ + return ok; } -static short ok_bezier_framerange(BeztEditData *bed, BezTriple *bezt) +static short ok_bezier_framerange(KeyframeEditData *ked, BezTriple *bezt) { + short ok = 0; + /* frame range is stored in float properties */ - return ((bezt->vec[1][0] > bed->f1) && (bezt->vec[1][0] < bed->f2)); + #define KEY_CHECK_OK(_index) ((bezt->vec[_index][0] > ked->f1) && (bezt->vec[_index][0] < ked->f2)) + KEYFRAME_OK_CHECKS(KEY_CHECK_OK); + #undef KEY_CHECK_OK + + /* return ok flags */ + return ok; } -static short ok_bezier_selected(BeztEditData *bed, BezTriple *bezt) +static short ok_bezier_selected(KeyframeEditData *ked, BezTriple *bezt) { - /* this macro checks all beztriple handles for selection... */ - return BEZSELECTED(bezt); + /* this macro checks all beztriple handles for selection... + * only one of the verts has to be selected for this to be ok... + */ + if (BEZSELECTED(bezt)) + return KEYFRAME_OK_ALL; + else + return 0; } -static short ok_bezier_value(BeztEditData *bed, BezTriple *bezt) -{ +static short ok_bezier_value(KeyframeEditData *ked, BezTriple *bezt) +{ + short ok = 0; + /* value is stored in f1 property * - this float accuracy check may need to be dropped? * - should value be stored in f2 instead so that we won't have conflicts when using f1 for frames too? */ - return IS_EQ(bezt->vec[1][1], bed->f1); + #define KEY_CHECK_OK(_index) IS_EQ(bezt->vec[_index][1], ked->f1) + KEYFRAME_OK_CHECKS(KEY_CHECK_OK); + #undef KEY_CHECK_OK + + /* return ok flags */ + return ok; } -static short ok_bezier_valuerange(BeztEditData *bed, BezTriple *bezt) +static short ok_bezier_valuerange(KeyframeEditData *ked, BezTriple *bezt) { + short ok = 0; + /* value range is stored in float properties */ - return ((bezt->vec[1][1] > bed->f1) && (bezt->vec[1][1] < bed->f2)); + #define KEY_CHECK_OK(_index) ((bezt->vec[_index][1] > ked->f1) && (bezt->vec[_index][1] < ked->f2)) + KEYFRAME_OK_CHECKS(KEY_CHECK_OK); + #undef KEY_CHECK_OK + + /* return ok flags */ + return ok; } -static short ok_bezier_region(BeztEditData *bed, BezTriple *bezt) +static short ok_bezier_region(KeyframeEditData *ked, BezTriple *bezt) { /* rect is stored in data property (it's of type rectf, but may not be set) */ - if (bed->data) - return BLI_in_rctf(bed->data, bezt->vec[1][0], bezt->vec[1][1]); + if (ked->data) { + short ok = 0; + + #define KEY_CHECK_OK(_index) BLI_in_rctf(ked->data, bezt->vec[_index][0], bezt->vec[_index][1]) + KEYFRAME_OK_CHECKS(KEY_CHECK_OK); + #undef KEY_CHECK_OK + + /* return ok flags */ + return ok; + } else return 0; } -BeztEditFunc ANIM_editkeyframes_ok(short mode) +KeyframeEditFunc ANIM_editkeyframes_ok(short mode) { /* eEditKeyframes_Validate */ switch (mode) { @@ -555,32 +625,32 @@ BeztEditFunc ANIM_editkeyframes_ok(short mode) /* Assorted Utility Functions */ /* helper callback for <animeditor>_cfrasnap_exec() -> used to help get the average time of all selected beztriples */ -short bezt_calc_average(BeztEditData *bed, BezTriple *bezt) +short bezt_calc_average(KeyframeEditData *ked, BezTriple *bezt) { /* only if selected */ if (bezt->f2 & SELECT) { /* store average time in float 1 (only do rounding at last step) */ - bed->f1 += bezt->vec[1][0]; + ked->f1 += bezt->vec[1][0]; /* store average value in float 2 (only do rounding at last step) * - this isn't always needed, but some operators may also require this */ - bed->f2 += bezt->vec[1][1]; + ked->f2 += bezt->vec[1][1]; /* increment number of items */ - bed->i1++; + ked->i1++; } return 0; } /* helper callback for columnselect_<animeditor>_keys() -> populate list CfraElems with frame numbers from selected beztriples */ -short bezt_to_cfraelem(BeztEditData *bed, BezTriple *bezt) +short bezt_to_cfraelem(KeyframeEditData *ked, BezTriple *bezt) { /* only if selected */ if (bezt->f2 & SELECT) { CfraElem *ce= MEM_callocN(sizeof(CfraElem), "cfraElem"); - BLI_addtail(&bed->list, ce); + BLI_addtail(&ked->list, ce); ce->cfra= bezt->vec[1][0]; } @@ -589,11 +659,11 @@ short bezt_to_cfraelem(BeztEditData *bed, BezTriple *bezt) } /* used to remap times from one range to another - * requires: bed->data = BeztEditCD_Remap + * requires: ked->data = KeyframeEditCD_Remap */ -void bezt_remap_times(BeztEditData *bed, BezTriple *bezt) +void bezt_remap_times(KeyframeEditData *ked, BezTriple *bezt) { - BeztEditCD_Remap *rmap= (BeztEditCD_Remap*)bed->data; + KeyframeEditCD_Remap *rmap= (KeyframeEditCD_Remap*)ked->data; const float scale = (rmap->newMax - rmap->newMin) / (rmap->oldMax - rmap->oldMin); /* perform transform on all three handles unless indicated otherwise */ @@ -607,16 +677,18 @@ void bezt_remap_times(BeztEditData *bed, BezTriple *bezt) /* ******************************************* */ /* Transform */ -static short snap_bezier_nearest(BeztEditData *bed, BezTriple *bezt) +/* snaps the keyframe to the nearest frame */ +static short snap_bezier_nearest(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) bezt->vec[1][0]= (float)(floor(bezt->vec[1][0]+0.5)); return 0; } -static short snap_bezier_nearestsec(BeztEditData *bed, BezTriple *bezt) +/* snaps the keyframe to the neares second */ +static short snap_bezier_nearestsec(KeyframeEditData *ked, BezTriple *bezt) { - const Scene *scene= bed->scene; + const Scene *scene= ked->scene; const float secf = (float)FPS; if (bezt->f2 & SELECT) @@ -624,41 +696,44 @@ static short snap_bezier_nearestsec(BeztEditData *bed, BezTriple *bezt) return 0; } -static short snap_bezier_cframe(BeztEditData *bed, BezTriple *bezt) +/* snaps the keyframe to the current frame */ +static short snap_bezier_cframe(KeyframeEditData *ked, BezTriple *bezt) { - const Scene *scene= bed->scene; + const Scene *scene= ked->scene; if (bezt->f2 & SELECT) bezt->vec[1][0]= (float)CFRA; return 0; } -static short snap_bezier_nearmarker(BeztEditData *bed, BezTriple *bezt) +/* snaps the keyframe time to the nearest marker's frame */ +static short snap_bezier_nearmarker(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) - bezt->vec[1][0]= (float)ED_markers_find_nearest_marker_time(&bed->list, bezt->vec[1][0]); + bezt->vec[1][0]= (float)ED_markers_find_nearest_marker_time(&ked->list, bezt->vec[1][0]); return 0; } -static short snap_bezier_horizontal(BeztEditData *bed, BezTriple *bezt) +/* make the handles have the same value as the key */ +static short snap_bezier_horizontal(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) { - // XXX currently this snaps both handles to the nearest horizontal value, but perhaps user just wants to level out handles instead? - bezt->vec[0][1]= bezt->vec[2][1]= (float)floor(bezt->vec[1][1] + 0.5f); + bezt->vec[0][1]= bezt->vec[2][1]= bezt->vec[1][1]; + if ((bezt->h1==HD_AUTO) || (bezt->h1==HD_VECT)) bezt->h1= HD_ALIGN; if ((bezt->h2==HD_AUTO) || (bezt->h2==HD_VECT)) bezt->h2= HD_ALIGN; } return 0; } -static short snap_bezier_value(BeztEditData *bed, BezTriple *bezt) +/* value to snap to is stored in the custom data -> first float value slot */ +static short snap_bezier_value(KeyframeEditData *ked, BezTriple *bezt) { - /* value to snap to is stored in the custom data -> first float value slot */ if (bezt->f2 & SELECT) - bezt->vec[1][1]= bed->f1; + bezt->vec[1][1]= ked->f1; return 0; } -BeztEditFunc ANIM_editkeyframes_snap(short type) +KeyframeEditFunc ANIM_editkeyframes_snap(short type) { /* eEditKeyframes_Snap */ switch (type) { @@ -681,9 +756,9 @@ BeztEditFunc ANIM_editkeyframes_snap(short type) /* --------- */ -static short mirror_bezier_cframe(BeztEditData *bed, BezTriple *bezt) +static short mirror_bezier_cframe(KeyframeEditData *ked, BezTriple *bezt) { - const Scene *scene= bed->scene; + const Scene *scene= ked->scene; float diff; if (bezt->f2 & SELECT) { @@ -694,7 +769,7 @@ static short mirror_bezier_cframe(BeztEditData *bed, BezTriple *bezt) return 0; } -static short mirror_bezier_yaxis(BeztEditData *bed, BezTriple *bezt) +static short mirror_bezier_yaxis(KeyframeEditData *ked, BezTriple *bezt) { float diff; @@ -706,7 +781,7 @@ static short mirror_bezier_yaxis(BeztEditData *bed, BezTriple *bezt) return 0; } -static short mirror_bezier_xaxis(BeztEditData *bed, BezTriple *bezt) +static short mirror_bezier_xaxis(KeyframeEditData *ked, BezTriple *bezt) { float diff; @@ -718,25 +793,25 @@ static short mirror_bezier_xaxis(BeztEditData *bed, BezTriple *bezt) return 0; } -static short mirror_bezier_marker(BeztEditData *bed, BezTriple *bezt) +static short mirror_bezier_marker(KeyframeEditData *ked, BezTriple *bezt) { /* mirroring time stored in f1 */ if (bezt->f2 & SELECT) { - const float diff= (bed->f1 - bezt->vec[1][0]); - bezt->vec[1][0]= (bed->f1 + diff); + const float diff= (ked->f1 - bezt->vec[1][0]); + bezt->vec[1][0]= (ked->f1 + diff); } return 0; } -static short mirror_bezier_value(BeztEditData *bed, BezTriple *bezt) +static short mirror_bezier_value(KeyframeEditData *ked, BezTriple *bezt) { float diff; /* value to mirror over is stored in the custom data -> first float value slot */ if (bezt->f2 & SELECT) { - diff= (bed->f1 - bezt->vec[1][1]); - bezt->vec[1][1]= (bed->f1 + diff); + diff= (ked->f1 - bezt->vec[1][1]); + bezt->vec[1][1]= (ked->f1 + diff); } return 0; @@ -744,7 +819,7 @@ static short mirror_bezier_value(BeztEditData *bed, BezTriple *bezt) /* Note: for markers and 'value', the values to use must be supplied as the first float value */ // calchandles_fcurve -BeztEditFunc ANIM_editkeyframes_mirror(short type) +KeyframeEditFunc ANIM_editkeyframes_mirror(short type) { switch (type) { case MIRROR_KEYS_CURFRAME: /* mirror over current frame */ @@ -767,7 +842,7 @@ BeztEditFunc ANIM_editkeyframes_mirror(short type) /* Settings */ /* Sets the selected bezier handles to type 'auto' */ -static short set_bezier_auto(BeztEditData *bed, BezTriple *bezt) +static short set_bezier_auto(KeyframeEditData *ked, BezTriple *bezt) { if((bezt->f1 & SELECT) || (bezt->f3 & SELECT)) { if (bezt->f1 & SELECT) bezt->h1= HD_AUTO; /* the secret code for auto */ @@ -785,7 +860,7 @@ static short set_bezier_auto(BeztEditData *bed, BezTriple *bezt) } /* Sets the selected bezier handles to type 'vector' */ -static short set_bezier_vector(BeztEditData *bed, BezTriple *bezt) +static short set_bezier_vector(KeyframeEditData *ked, BezTriple *bezt) { if ((bezt->f1 & SELECT) || (bezt->f3 & SELECT)) { if (bezt->f1 & SELECT) bezt->h1= HD_VECT; @@ -805,7 +880,7 @@ static short set_bezier_vector(BeztEditData *bed, BezTriple *bezt) /* Queries if the handle should be set to 'free' or 'align' */ // NOTE: this was used for the 'toggle free/align' option // currently this isn't used, but may be restored later -static short bezier_isfree(BeztEditData *bed, BezTriple *bezt) +static short bezier_isfree(KeyframeEditData *ked, BezTriple *bezt) { if ((bezt->f1 & SELECT) && (bezt->h1)) return 1; if ((bezt->f3 & SELECT) && (bezt->h2)) return 1; @@ -813,7 +888,7 @@ static short bezier_isfree(BeztEditData *bed, BezTriple *bezt) } /* Sets selected bezier handles to type 'align' */ -static short set_bezier_align(BeztEditData *bed, BezTriple *bezt) +static short set_bezier_align(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f1 & SELECT) bezt->h1= HD_ALIGN; if (bezt->f3 & SELECT) bezt->h2= HD_ALIGN; @@ -821,7 +896,7 @@ static short set_bezier_align(BeztEditData *bed, BezTriple *bezt) } /* Sets selected bezier handles to type 'free' */ -static short set_bezier_free(BeztEditData *bed, BezTriple *bezt) +static short set_bezier_free(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f1 & SELECT) bezt->h1= HD_FREE; if (bezt->f3 & SELECT) bezt->h2= HD_FREE; @@ -830,7 +905,7 @@ static short set_bezier_free(BeztEditData *bed, BezTriple *bezt) /* Set all selected Bezier Handles to a single type */ // calchandles_fcurve -BeztEditFunc ANIM_editkeyframes_handles(short code) +KeyframeEditFunc ANIM_editkeyframes_handles(short code) { switch (code) { case HD_AUTO: /* auto */ @@ -851,21 +926,21 @@ BeztEditFunc ANIM_editkeyframes_handles(short code) /* ------- */ -static short set_bezt_constant(BeztEditData *bed, BezTriple *bezt) +static short set_bezt_constant(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) bezt->ipo= BEZT_IPO_CONST; return 0; } -static short set_bezt_linear(BeztEditData *bed, BezTriple *bezt) +static short set_bezt_linear(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) bezt->ipo= BEZT_IPO_LIN; return 0; } -static short set_bezt_bezier(BeztEditData *bed, BezTriple *bezt) +static short set_bezt_bezier(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) bezt->ipo= BEZT_IPO_BEZ; @@ -874,7 +949,7 @@ static short set_bezt_bezier(BeztEditData *bed, BezTriple *bezt) /* Set the interpolation type of the selected BezTriples in each F-Curve to the specified one */ // ANIM_editkeyframes_ipocurve_ipotype() ! -BeztEditFunc ANIM_editkeyframes_ipo(short code) +KeyframeEditFunc ANIM_editkeyframes_ipo(short code) { switch (code) { case BEZT_IPO_CONST: /* constant */ @@ -888,21 +963,21 @@ BeztEditFunc ANIM_editkeyframes_ipo(short code) /* ------- */ -static short set_keytype_keyframe(BeztEditData *bed, BezTriple *bezt) +static short set_keytype_keyframe(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) BEZKEYTYPE(bezt)= BEZT_KEYTYPE_KEYFRAME; return 0; } -static short set_keytype_breakdown(BeztEditData *bed, BezTriple *bezt) +static short set_keytype_breakdown(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) BEZKEYTYPE(bezt)= BEZT_KEYTYPE_BREAKDOWN; return 0; } -static short set_keytype_extreme(BeztEditData *bed, BezTriple *bezt) +static short set_keytype_extreme(KeyframeEditData *ked, BezTriple *bezt) { if (bezt->f2 & SELECT) BEZKEYTYPE(bezt)= BEZT_KEYTYPE_EXTREME; @@ -910,7 +985,7 @@ static short set_keytype_extreme(BeztEditData *bed, BezTriple *bezt) } /* Set the interpolation type of the selected BezTriples in each F-Curve to the specified one */ -BeztEditFunc ANIM_editkeyframes_keytype(short code) +KeyframeEditFunc ANIM_editkeyframes_keytype(short code) { switch (code) { case BEZT_KEYTYPE_BREAKDOWN: /* breakdown */ @@ -928,23 +1003,45 @@ BeztEditFunc ANIM_editkeyframes_keytype(short code) /* ******************************************* */ /* Selection */ -static short select_bezier_add(BeztEditData *bed, BezTriple *bezt) +static short select_bezier_add(KeyframeEditData *ked, BezTriple *bezt) { - /* Select the bezier triple */ - BEZ_SEL(bezt); + /* if we've got info on what to select, use it, otherwise select all */ + if ((ked) && (ked->iterflags & KEYFRAME_ITER_INCL_HANDLES)) { + if (ked->curflags & KEYFRAME_OK_KEY) + bezt->f2 |= SELECT; + if (ked->curflags & KEYFRAME_OK_H1) + bezt->f1 |= SELECT; + if (ked->curflags & KEYFRAME_OK_H2) + bezt->f3 |= SELECT; + } + else { + BEZ_SEL(bezt); + } + return 0; } -static short select_bezier_subtract(BeztEditData *bed, BezTriple *bezt) +static short select_bezier_subtract(KeyframeEditData *ked, BezTriple *bezt) { - /* Deselect the bezier triple */ - BEZ_DESEL(bezt); + /* if we've got info on what to deselect, use it, otherwise deselect all */ + if ((ked) && (ked->iterflags & KEYFRAME_ITER_INCL_HANDLES)) { + if (ked->curflags & KEYFRAME_OK_KEY) + bezt->f2 &= ~SELECT; + if (ked->curflags & KEYFRAME_OK_H1) + bezt->f1 &= ~SELECT; + if (ked->curflags & KEYFRAME_OK_H2) + bezt->f3 &= ~SELECT; + } + else { + BEZ_DESEL(bezt); + } + return 0; } -static short select_bezier_invert(BeztEditData *bed, BezTriple *bezt) +static short select_bezier_invert(KeyframeEditData *ked, BezTriple *bezt) { - /* Invert the selection for the bezier triple */ + /* Invert the selection for the whole bezier triple */ bezt->f2 ^= SELECT; if (bezt->f2 & SELECT) { bezt->f1 |= SELECT; @@ -957,7 +1054,7 @@ static short select_bezier_invert(BeztEditData *bed, BezTriple *bezt) return 0; } -BeztEditFunc ANIM_editkeyframes_select(short selectmode) +KeyframeEditFunc ANIM_editkeyframes_select(short selectmode) { switch (selectmode) { case SELECT_ADD: /* add */ @@ -982,11 +1079,11 @@ BeztEditFunc ANIM_editkeyframes_select(short selectmode) /* ----------- */ -static short selmap_build_bezier_more(BeztEditData *bed, BezTriple *bezt) +static short selmap_build_bezier_more(KeyframeEditData *ked, BezTriple *bezt) { - FCurve *fcu= bed->fcu; - char *map= bed->data; - int i= bed->curIndex; + FCurve *fcu= ked->fcu; + char *map= ked->data; + int i= ked->curIndex; /* if current is selected, just make sure it stays this way */ if (BEZSELECTED(bezt)) { @@ -1017,11 +1114,11 @@ static short selmap_build_bezier_more(BeztEditData *bed, BezTriple *bezt) return 0; } -static short selmap_build_bezier_less(BeztEditData *bed, BezTriple *bezt) +static short selmap_build_bezier_less(KeyframeEditData *ked, BezTriple *bezt) { - FCurve *fcu= bed->fcu; - char *map= bed->data; - int i= bed->curIndex; + FCurve *fcu= ked->fcu; + char *map= ked->data; + int i= ked->curIndex; /* if current is selected, check the left/right keyframes * since it might need to be deselected (but otherwise no) @@ -1059,7 +1156,7 @@ static short selmap_build_bezier_less(BeztEditData *bed, BezTriple *bezt) } /* Get callback for building selection map */ -BeztEditFunc ANIM_editkeyframes_buildselmap(short mode) +KeyframeEditFunc ANIM_editkeyframes_buildselmap(short mode) { switch (mode) { case SELMAP_LESS: /* less */ @@ -1074,10 +1171,10 @@ BeztEditFunc ANIM_editkeyframes_buildselmap(short mode) /* ----------- */ /* flush selection map values to the given beztriple */ -short bezt_selmap_flush(BeztEditData *bed, BezTriple *bezt) +short bezt_selmap_flush(KeyframeEditData *ked, BezTriple *bezt) { - char *map= bed->data; - short on= map[bed->curIndex]; + char *map= ked->data; + short on= map[ked->curIndex]; /* select or deselect based on whether the map allows it or not */ if (on) { diff --git a/source/blender/editors/animation/keyframes_general.c b/source/blender/editors/animation/keyframes_general.c index 1784c6ef32c..abced485769 100644 --- a/source/blender/editors/animation/keyframes_general.c +++ b/source/blender/editors/animation/keyframes_general.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -36,14 +36,9 @@ #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_curve_types.h" -#include "DNA_key_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "RNA_access.h" #include "BKE_action.h" #include "BKE_fcurve.h" @@ -100,8 +95,8 @@ void delete_fcurve_keys(FCurve *fcu) { int i; - if(fcu->bezt==NULL) /* ignore baked curves */ - return; + if(fcu->bezt==NULL) /* ignore baked curves */ + return; /* Delete selected BezTriples */ for (i=0; i < fcu->totvert; i++) { @@ -505,7 +500,7 @@ short copy_animedit_keys (bAnimContext *ac, ListBase *anim_data) * - skip if no selected keyframes found (so no need to create unnecessary copy-buffer data) * - this check should also eliminate any problems associated with using sample-data */ - if (ANIM_fcurve_keys_bezier_loop(NULL, fcu, NULL, ANIM_editkeyframes_ok(BEZT_OK_SELECTED), NULL) == 0) + if (ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, ANIM_editkeyframes_ok(BEZT_OK_SELECTED), NULL) == 0) continue; /* init copybuf item info */ diff --git a/source/blender/editors/animation/keyframing.c b/source/blender/editors/animation/keyframing.c index d0675dc42ba..f60181d7f6c 100644 --- a/source/blender/editors/animation/keyframing.c +++ b/source/blender/editors/animation/keyframing.c @@ -40,15 +40,11 @@ #include "BLI_dynstr.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" #include "DNA_key_types.h" -#include "DNA_object_types.h" #include "DNA_material_types.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -67,7 +63,6 @@ #include "ED_keyframing.h" #include "ED_keyframes_edit.h" #include "ED_screen.h" -#include "ED_util.h" #include "UI_interface.h" @@ -76,7 +71,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "anim_intern.h" @@ -136,8 +130,11 @@ bAction *verify_adt_action (ID *id, short add) /* init action if none available yet */ // TODO: need some wizardry to handle NLA stuff correct - if ((adt->action == NULL) && (add)) - adt->action= add_empty_action("Action"); + if ((adt->action == NULL) && (add)) { + char actname[sizeof(id->name)-2]; + BLI_snprintf(actname, sizeof(actname), "%sAction", id->name+2); + adt->action= add_empty_action(actname); + } /* return the action */ return adt->action; @@ -182,16 +179,8 @@ FCurve *verify_fcurve (bAction *act, const char group[], const char rna_path[], grp= action_groups_find_named(act, group); /* no matching groups, so add one */ - if (grp == NULL) { - /* Add a new group, and make it active */ - grp= MEM_callocN(sizeof(bActionGroup), "bActionGroup"); - - grp->flag = AGRP_SELECTED; - strncpy(grp->name, group, sizeof(grp->name)); - - BLI_addtail(&act->groups, grp); - BLI_uniquename(&act->groups, grp, "Group", '.', offsetof(bActionGroup, name), sizeof(grp->name)); - } + if (grp == NULL) + grp= action_groups_add_new(act, group); /* add F-Curve to group */ action_groups_add_channel(act, grp, fcu); @@ -231,27 +220,16 @@ int insert_bezt_fcurve (FCurve *fcu, BezTriple *bezt, short flag) if (replace) { /* sanity check: 'i' may in rare cases exceed arraylen */ if ((i >= 0) && (i < fcu->totvert)) { - /* take care with the handletypes and other info if the replacement flags are set */ - if (flag & INSERTKEY_REPLACE) { - BezTriple *dst= (fcu->bezt + i); - float dy= bezt->vec[1][1] - dst->vec[1][1]; - - /* just apply delta value change to the handle values */ - dst->vec[0][1] += dy; - dst->vec[1][1] += dy; - dst->vec[2][1] += dy; - - // TODO: perform some other operations? - } - else { - char oldKeyType= BEZKEYTYPE(fcu->bezt + i); - - /* just brutally replace the values */ - *(fcu->bezt + i) = *bezt; - - /* special exception for keyframe type - copy value back so that this info isn't lost */ - BEZKEYTYPE(fcu->bezt + i)= oldKeyType; - } + /* just change the values when replacing, so as to not overwrite handles */ + BezTriple *dst= (fcu->bezt + i); + float dy= bezt->vec[1][1] - dst->vec[1][1]; + + /* just apply delta value change to the handle values */ + dst->vec[0][1] += dy; + dst->vec[1][1] += dy; + dst->vec[2][1] += dy; + + // TODO: perform some other operations? } } /* keyframing modes allow to not replace keyframe */ @@ -259,14 +237,14 @@ int insert_bezt_fcurve (FCurve *fcu, BezTriple *bezt, short flag) /* insert new - if we're not restricted to replacing keyframes only */ BezTriple *newb= MEM_callocN((fcu->totvert+1)*sizeof(BezTriple), "beztriple"); - /* add the beztriples that should occur before the beztriple to be pasted (originally in ei->icu) */ + /* add the beztriples that should occur before the beztriple to be pasted (originally in fcu) */ if (i > 0) memcpy(newb, fcu->bezt, i*sizeof(BezTriple)); /* add beztriple to paste at index i */ *(newb + i)= *bezt; - /* add the beztriples that occur after the beztriple to be pasted (originally in icu) */ + /* add the beztriples that occur after the beztriple to be pasted (originally in fcu) */ if (i < fcu->totvert) memcpy(newb+i+1, fcu->bezt+i, (fcu->totvert-i)*sizeof(BezTriple)); @@ -311,17 +289,19 @@ int insert_vert_fcurve (FCurve *fcu, float x, float y, short flag) BezTriple beztr; int a; - /* set all three points, for nicer start position */ + /* set all three points, for nicer start position + * NOTE: +/- 1 on vec.x for left and right handles is so that 'free' handles work ok... + */ memset(&beztr, 0, sizeof(BezTriple)); - beztr.vec[0][0]= x; + beztr.vec[0][0]= x-1.0f; beztr.vec[0][1]= y; beztr.vec[1][0]= x; beztr.vec[1][1]= y; - beztr.vec[2][0]= x; + beztr.vec[2][0]= x+1.0f; beztr.vec[2][1]= y; beztr.ipo= U.ipo_new; /* use default interpolation mode here... */ beztr.f1= beztr.f2= beztr.f3= SELECT; - beztr.h1= beztr.h2= HD_AUTO; // XXX what about when we replace an old one? + beztr.h1= beztr.h2= U.keyhandles_new; /* use default handle type here */ //BEZKEYTYPE(&beztr)= scene->keytype; /* default keyframe type */ /* add temp beztriple to keyframes */ @@ -342,18 +322,9 @@ int insert_vert_fcurve (FCurve *fcu, float x, float y, short flag) /* set handletype and interpolation */ if ((fcu->totvert > 2) && (flag & INSERTKEY_REPLACE)==0) { BezTriple *bezt= (fcu->bezt + a); - char h1, h2; - - /* set handles (autohandles by default) */ - h1= h2= HD_AUTO; - - if (a > 0) h1= (bezt-1)->h2; - if (a < fcu->totvert-1) h2= (bezt+1)->h1; - - bezt->h1= h1; - bezt->h2= h2; /* set interpolation from previous (if available) */ + // FIXME: this doesn't work if user tweaked the interpolation specifically, and they were just overwriting some existing key in the process... if (a > 0) bezt->ipo= (bezt-1)->ipo; else if (a < fcu->totvert-1) bezt->ipo= (bezt+1)->ipo; @@ -846,15 +817,21 @@ short insert_keyframe_direct (PointerRNA ptr, PropertyRNA *prop, FCurve *fcu, fl short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_path[], int array_index, float cfra, short flag) { PointerRNA id_ptr, ptr; - PropertyRNA *prop; + PropertyRNA *prop = NULL; FCurve *fcu; int array_index_max= array_index+1; int ret= 0; /* validate pointer first - exit if failure */ + if (id == NULL) { + printf("Insert Key: no ID-block to insert keyframe in (Path = %s) \n", rna_path); + return 0; + } + RNA_id_pointer_create(id, &id_ptr); if ((RNA_path_resolve(&id_ptr, rna_path, &ptr, &prop) == 0) || (prop == NULL)) { - printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n", id->name, rna_path); + printf("Insert Key: Could not insert keyframe, as RNA Path is invalid for the given ID (ID = %s, Path = %s)\n", + (id)? id->name : "<Missing ID-Block>", rna_path); return 0; } @@ -903,21 +880,27 @@ short insert_keyframe (ID *id, bAction *act, const char group[], const char rna_ /* will only loop once unless the array index was -1 */ for (; array_index < array_index_max; array_index++) { - /* make sure the F-Curve exists */ - fcu= verify_fcurve(act, group, rna_path, array_index, 1); + /* make sure the F-Curve exists + * - if we're replacing keyframes only, DO NOT create new F-Curves if they do not exist yet + * but still try to get the F-Curve if it exists... + */ + fcu= verify_fcurve(act, group, rna_path, array_index, (flag & INSERTKEY_REPLACE)==0); - /* set color mode if the F-Curve is new (i.e. without any keyframes) */ - if ((fcu->totvert == 0) && (flag & INSERTKEY_XYZ2RGB)) { - /* for Loc/Rot/Scale and also Color F-Curves, the color of the F-Curve in the Graph Editor, - * is determined by the array index for the F-Curve - */ - if (ELEM4(RNA_property_subtype(prop), PROP_TRANSLATION, PROP_XYZ, PROP_EULER, PROP_COLOR)) { - fcu->color_mode= FCURVE_COLOR_AUTO_RGB; + /* we may not have a F-Curve when we're replacing only... */ + if (fcu) { + /* set color mode if the F-Curve is new (i.e. without any keyframes) */ + if ((fcu->totvert == 0) && (flag & INSERTKEY_XYZ2RGB)) { + /* for Loc/Rot/Scale and also Color F-Curves, the color of the F-Curve in the Graph Editor, + * is determined by the array index for the F-Curve + */ + if (ELEM4(RNA_property_subtype(prop), PROP_TRANSLATION, PROP_XYZ, PROP_EULER, PROP_COLOR)) { + fcu->color_mode= FCURVE_COLOR_AUTO_RGB; + } } + + /* insert keyframe */ + ret += insert_keyframe_direct(ptr, prop, fcu, cfra, flag); } - - /* insert keyframe */ - ret += insert_keyframe_direct(ptr, prop, fcu, cfra, flag); } return ret; @@ -945,7 +928,7 @@ short delete_keyframe (ID *id, bAction *act, const char group[], const char rna_ if ELEM(NULL, id, adt) { printf("ERROR: no ID-block and/or AnimData to delete keyframe from \n"); return 0; - } + } /* validate pointer first - exit if failure */ RNA_id_pointer_create(id, &id_ptr); @@ -1059,9 +1042,13 @@ static int modify_key_op_poll(bContext *C) if (ELEM(NULL, sa, scene)) return 0; - /* if Outliner, only allow in DataBlocks view */ - if (so && (so->outlinevis != SO_DATABLOCKS)) - return 0; + /* if Outliner, don't allow in some views */ + if (so) { + if (ELEM4(so->outlinevis, SO_GROUPS, SO_LIBRARIES, SO_VERSE_SESSION, SO_VERSE_SESSION)) + return 0; + if (ELEM3(so->outlinevis, SO_SEQUENCE, SO_USERDEF, SO_KEYMAP)) + return 0; + } /* TODO: checks for other space types can be added here */ @@ -1073,7 +1060,6 @@ static int modify_key_op_poll(bContext *C) static int insert_key_exec (bContext *C, wmOperator *op) { - ListBase dsources = {NULL, NULL}; Scene *scene= CTX_data_scene(C); KeyingSet *ks= NULL; int type= RNA_int_get(op->ptr, "type"); @@ -1098,38 +1084,26 @@ static int insert_key_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - /* get context info for relative Keying Sets */ - if ((ks->flag & KEYINGSET_ABSOLUTE) == 0) { - /* exit if no suitable data obtained */ - if (modifykey_get_context_data(C, &dsources, ks) == 0) { - BKE_report(op->reports, RPT_ERROR, "No suitable context info for active Keying Set"); - return OPERATOR_CANCELLED; - } - } - /* try to insert keyframes for the channels specified by KeyingSet */ - success= modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + success= ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); if (G.f & G_DEBUG) BKE_reportf(op->reports, RPT_INFO, "KeyingSet '%s' - Successfully added %d Keyframes \n", ks->name, success); /* report failure or do updates? */ - if (success) { + if (success == MODIFYKEY_INVALID_CONTEXT) { + BKE_report(op->reports, RPT_ERROR, "No suitable context info for active Keying Set"); + return OPERATOR_CANCELLED; + } + else if (success) { /* if the appropriate properties have been set, make a note that we've inserted something */ if (RNA_boolean_get(op->ptr, "confirm_success")) BKE_reportf(op->reports, RPT_INFO, "Successfully added %d Keyframes for KeyingSet '%s'", success, ks->name); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else BKE_report(op->reports, RPT_WARNING, "Keying Set failed to insert any keyframes"); - - - /* free temp context-data if available */ - if (dsources.first) { - /* we assume that there is no extra data that needs to be freed from here... */ - BLI_freelistN(&dsources); - } /* send updates */ DAG_ids_flush_update(0); @@ -1139,6 +1113,8 @@ static int insert_key_exec (bContext *C, wmOperator *op) void ANIM_OT_keyframe_insert (wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Insert Keyframe"; ot->idname= "ANIM_OT_keyframe_insert"; @@ -1154,60 +1130,20 @@ void ANIM_OT_keyframe_insert (wmOperatorType *ot) /* keyingset to use * - here the type is int not enum, since many of the indicies here are determined dynamically */ - RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + prop= RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + RNA_def_property_flag(prop, PROP_HIDDEN); /* confirm whether a keyframe was added by showing a popup * - by default, this is enabled, since this operator is assumed to be called independently */ - RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); + prop= RNA_def_boolean(ot->srna, "confirm_success", 1, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); + RNA_def_property_flag(prop, PROP_HIDDEN); } /* Insert Key Operator (With Menu) ------------------------ */ /* This operator checks if a menu should be shown for choosing the KeyingSet to use, - * then calls the + * then calls the menu if necessary before */ -static void insert_key_menu_prompt (bContext *C) -{ - Scene *scene= CTX_data_scene(C); - KeyingSet *ks; - uiPopupMenu *pup; - uiLayout *layout; - int i = 0; - - pup= uiPupMenuBegin(C, "Insert Keyframe", 0); - layout= uiPupMenuLayout(pup); - - /* active Keying Set - * - only include entry if it exists - */ - if (scene->active_keyingset) { - uiItemIntO(layout, "Active Keying Set", 0, "ANIM_OT_keyframe_insert_menu", "type", i++); - uiItemS(layout); - } - else - i++; - - /* user-defined Keying Sets - * - these are listed in the order in which they were defined for the active scene - */ - if (scene->keyingsets.first) { - for (ks= scene->keyingsets.first; ks; ks= ks->next) - uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i++); - uiItemS(layout); - } - - /* builtin Keying Sets */ - i= -1; - for (ks= builtin_keyingsets.first; ks; ks= ks->next) { - /* only show KeyingSet if context is suitable */ - if (keyingset_context_ok_poll(C, ks)) { - uiItemIntO(layout, ks->name, 0, "ANIM_OT_keyframe_insert_menu", "type", i--); - } - } - - uiPupMenuEnd(C, pup); -} - static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) { Scene *scene= CTX_data_scene(C); @@ -1215,7 +1151,7 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) /* if prompting or no active Keying Set, show the menu */ if ((scene->active_keyingset == 0) || RNA_boolean_get(op->ptr, "always_prompt")) { /* call the menu, which will call this operator again, hence the cancelled */ - insert_key_menu_prompt(C); + ANIM_keying_sets_menu_setup(C, op->type->name, "ANIM_OT_keyframe_insert_menu"); return OPERATOR_CANCELLED; } else { @@ -1229,6 +1165,8 @@ static int insert_key_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Insert Keyframe Menu"; ot->idname= "ANIM_OT_keyframe_insert_menu"; @@ -1244,24 +1182,26 @@ void ANIM_OT_keyframe_insert_menu (wmOperatorType *ot) /* keyingset to use * - here the type is int not enum, since many of the indicies here are determined dynamically */ - RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + prop= RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); + RNA_def_property_flag(prop, PROP_HIDDEN); /* confirm whether a keyframe was added by showing a popup * - by default, this is disabled so that if a menu is shown, this doesn't come up too */ // XXX should this just be always on? - RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); + prop= RNA_def_boolean(ot->srna, "confirm_success", 0, "Confirm Successful Insert", "Show a popup when the keyframes get successfully added"); + RNA_def_property_flag(prop, PROP_HIDDEN); /* whether the menu should always be shown * - by default, the menu should only be shown when there is no active Keying Set (2.5 behaviour), * although in some cases it might be useful to always shown (pre 2.5 behaviour) */ - RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", ""); + prop= RNA_def_boolean(ot->srna, "always_prompt", 0, "Always Show Menu", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); } /* Delete Key Operator ------------------------ */ static int delete_key_exec (bContext *C, wmOperator *op) { - ListBase dsources = {NULL, NULL}; Scene *scene= CTX_data_scene(C); KeyingSet *ks= NULL; int type= RNA_int_get(op->ptr, "type"); @@ -1286,38 +1226,27 @@ static int delete_key_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - /* get context info for relative Keying Sets */ - if ((ks->flag & KEYINGSET_ABSOLUTE) == 0) { - /* exit if no suitable data obtained */ - if (modifykey_get_context_data(C, &dsources, ks) == 0) { - BKE_report(op->reports, RPT_ERROR, "No suitable context info for active Keying Set"); - return OPERATOR_CANCELLED; - } - } - /* try to insert keyframes for the channels specified by KeyingSet */ - success= modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_DELETE, cfra); + success= ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_DELETE, cfra); if (G.f & G_DEBUG) printf("KeyingSet '%s' - Successfully removed %d Keyframes \n", ks->name, success); /* report failure or do updates? */ - if (success) { + if (success == MODIFYKEY_INVALID_CONTEXT) { + BKE_report(op->reports, RPT_ERROR, "No suitable context info for active Keying Set"); + return OPERATOR_CANCELLED; + } + else if (success) { /* if the appropriate properties have been set, make a note that we've inserted something */ if (RNA_boolean_get(op->ptr, "confirm_success")) BKE_reportf(op->reports, RPT_INFO, "Successfully removed %d Keyframes for KeyingSet '%s'", success, ks->name); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else BKE_report(op->reports, RPT_WARNING, "Keying Set failed to remove any keyframes"); - /* free temp context-data if available */ - if (dsources.first) { - /* we assume that there is no extra data that needs to be freed from here... */ - BLI_freelistN(&dsources); - } - /* send updates */ DAG_ids_flush_update(0); @@ -1474,7 +1403,7 @@ static int insert_key_button_exec (bContext *C, wmOperator *op) DAG_ids_flush_update(0); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; @@ -1544,7 +1473,7 @@ static int delete_key_button_exec (bContext *C, wmOperator *op) DAG_ids_flush_update(0); /* send notifiers that keyframes have been changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } return (success)? OPERATOR_FINISHED: OPERATOR_CANCELLED; diff --git a/source/blender/editors/animation/keyingsets.c b/source/blender/editors/animation/keyingsets.c index 63323a8519d..1c06266a148 100644 --- a/source/blender/editors/animation/keyingsets.c +++ b/source/blender/editors/animation/keyingsets.c @@ -40,18 +40,12 @@ #include "BLI_dynstr.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_object_types.h" -#include "DNA_material_types.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_animsys.h" #include "BKE_action.h" +#include "BKE_context.h" #include "BKE_constraint.h" #include "BKE_depsgraph.h" #include "BKE_fcurve.h" @@ -61,11 +55,8 @@ #include "BKE_key.h" #include "BKE_material.h" -#include "ED_anim_api.h" #include "ED_keyframing.h" -#include "ED_keyframes_edit.h" #include "ED_screen.h" -#include "ED_util.h" #include "UI_interface.h" @@ -74,7 +65,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "anim_intern.h" @@ -174,6 +164,10 @@ static int remove_active_keyingset_exec (bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "No active Keying Set to remove"); return OPERATOR_CANCELLED; } + else if (scene->active_keyingset < 0) { + BKE_report(op->reports, RPT_ERROR, "Cannot remove built in Keying Set"); + return OPERATOR_CANCELLED; + } else ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); @@ -256,14 +250,8 @@ static int remove_active_ks_path_exec (bContext *C, wmOperator *op) KS_Path *ksp= BLI_findlink(&ks->paths, ks->active_path-1); if (ksp) { - /* NOTE: sync this code with BKE_keyingset_free() */ - { - /* free RNA-path info */ - MEM_freeN(ksp->rna_path); - - /* free path itself */ - BLI_freelinkN(&ks->paths, ksp); - } + /* remove the active path from the KeyingSet */ + BKE_keyingset_free_path(ks, ksp); /* the active path should now be the previously second-to-last active one */ ks->active_path--; @@ -331,6 +319,10 @@ static int add_keyingset_button_exec (bContext *C, wmOperator *op) scene->active_keyingset= BLI_countlist(&scene->keyingsets); } + else if (scene->active_keyingset < 0) { + BKE_report(op->reports, RPT_ERROR, "Cannot add property to built in Keying Set"); + return OPERATOR_CANCELLED; + } else ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); @@ -412,6 +404,10 @@ static int remove_keyingset_button_exec (bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "No active Keying Set to remove property from"); return OPERATOR_CANCELLED; } + else if (scene->active_keyingset < 0) { + BKE_report(op->reports, RPT_ERROR, "Cannot remove property from built in Keying Set"); + return OPERATOR_CANCELLED; + } else ks= BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); @@ -467,802 +463,344 @@ void ANIM_OT_keyingset_button_remove (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -/* ************************************************** */ -/* KEYING SETS - EDITING API */ - -/* UI API --------------------------------------------- */ - -/* Build menu-string of available keying-sets (allocates memory for string) - * NOTE: mode must not be longer than 64 chars - */ -char *ANIM_build_keyingsets_menu (ListBase *list, short for_edit) -{ - DynStr *pupds= BLI_dynstr_new(); - KeyingSet *ks; - char buf[64]; - char *str; - int i; - - /* add title first */ - BLI_dynstr_append(pupds, "Keying Sets%t|"); - - /* add dummy entries for none-active */ - if (for_edit) { - BLI_dynstr_append(pupds, "Add New%x-1|"); - BLI_dynstr_append(pupds, " %x0|"); - } - else - BLI_dynstr_append(pupds, "No Keying Set%x0|"); - - /* loop through keyingsets, adding them */ - for (ks=list->first, i=1; ks; ks=ks->next, i++) { - if (for_edit == 0) - BLI_dynstr_append(pupds, "KS: "); - - BLI_dynstr_append(pupds, ks->name); - BLI_snprintf( buf, 64, "%%x%d%s", i, ((ks->next)?"|":"") ); - BLI_dynstr_append(pupds, buf); - } - - /* convert to normal MEM_malloc'd string */ - str= BLI_dynstr_get_cstring(pupds); - BLI_dynstr_free(pupds); - - return str; -} - - /* ******************************************* */ -/* KEYING SETS - BUILTIN */ - -#if 0 // XXX old keyingsets code based on adrcodes... to be restored in due course - -/* ------------- KeyingSet Defines ------------ */ -/* Note: these must all be named with the defks_* prefix, otherwise the template macro will not work! */ - -/* macro for defining keyingset contexts */ -#define KSC_TEMPLATE(ctx_name) {&defks_##ctx_name[0], NULL, sizeof(defks_##ctx_name)/sizeof(bKeyingSet)} -/* --- */ +/* Change Active KeyingSet Operator ------------------------ */ +/* This operator checks if a menu should be shown for choosing the KeyingSet to make the active one */ -/* check if option not available for deleting keys */ -static short incl_non_del_keys (bKeyingSet *ks, const char mode[]) +static int keyingset_active_menu_invoke (bContext *C, wmOperator *op, wmEvent *event) { - /* as optimisation, assume that it is sufficient to check only first letter - * of mode (int comparison should be faster than string!) - */ - //if (strcmp(mode, "Delete")==0) - if (mode && mode[0]=='D') - return 0; - - return 1; + /* call the menu, which will call this operator again, hence the cancelled */ + ANIM_keying_sets_menu_setup(C, op->type->name, "ANIM_OT_keying_set_active_set"); + return OPERATOR_CANCELLED; } -/* Object KeyingSets ------ */ - -/* check if include shapekey entry */ -static short incl_v3d_ob_shapekey (bKeyingSet *ks, const char mode[]) +static int keyingset_active_menu_exec (bContext *C, wmOperator *op) { - //Object *ob= (G.obedit)? (G.obedit) : (OBACT); // XXX - Object *ob= NULL; - char *newname= NULL; - - if(ob==NULL) - return 0; - - /* not available for delete mode */ - if (strcmp(mode, "Delete")==0) - return 0; + Scene *scene= CTX_data_scene(C); + int type= RNA_int_get(op->ptr, "type"); - /* check if is geom object that can get shapekeys */ - switch (ob->type) { - /* geometry? */ - case OB_MESH: newname= "Mesh"; break; - case OB_CURVE: newname= "Curve"; break; - case OB_SURF: newname= "Surface"; break; - case OB_LATTICE: newname= "Lattice"; break; + /* simply set the scene's active keying set index, unless the type == 0 + * (i.e. which happens if we want the current active to be maintained) + */ + if (type) + scene->active_keyingset= type; - /* not geometry! */ - default: - return 0; - } - - /* if ks is shapekey entry (this could be callled for separator before too!) */ - if (ks->flag == -3) - BLI_strncpy(ks->name, newname, sizeof(ks->name)); + /* send notifiers */ + WM_event_add_notifier(C, NC_SCENE|ND_KEYINGSET, NULL); - /* if it gets here, it's ok */ - return 1; + return OPERATOR_FINISHED; } - -/* array for object keyingset defines */ -bKeyingSet defks_v3d_object[] = -{ - /* include_cb, adrcode-getter, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "Loc", ID_OB, 0, 3, {OB_LOC_X,OB_LOC_Y,OB_LOC_Z}}, - {NULL, "Rot", ID_OB, 0, 3, {OB_ROT_X,OB_ROT_Y,OB_ROT_Z}}, - {NULL, "Scale", ID_OB, 0, 3, {OB_SIZE_X,OB_SIZE_Y,OB_SIZE_Z}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "LocRot", ID_OB, 0, 6, - {OB_LOC_X,OB_LOC_Y,OB_LOC_Z, - OB_ROT_X,OB_ROT_Y,OB_ROT_Z}}, - - {NULL, "LocScale", ID_OB, 0, 6, - {OB_LOC_X,OB_LOC_Y,OB_LOC_Z, - OB_SIZE_X,OB_SIZE_Y,OB_SIZE_Z}}, - - {NULL, "LocRotScale", ID_OB, 0, 9, - {OB_LOC_X,OB_LOC_Y,OB_LOC_Z, - OB_ROT_X,OB_ROT_Y,OB_ROT_Z, - OB_SIZE_X,OB_SIZE_Y,OB_SIZE_Z}}, - - {NULL, "RotScale", ID_OB, 0, 6, - {OB_ROT_X,OB_ROT_Y,OB_ROT_Z, - OB_SIZE_X,OB_SIZE_Y,OB_SIZE_Z}}, - - {incl_non_del_keys, "%l", 0, -1, 0, {0}}, // separator - - {incl_non_del_keys, "VisualLoc", ID_OB, INSERTKEY_MATRIX, 3, {OB_LOC_X,OB_LOC_Y,OB_LOC_Z}}, - {incl_non_del_keys, "VisualRot", ID_OB, INSERTKEY_MATRIX, 3, {OB_ROT_X,OB_ROT_Y,OB_ROT_Z}}, - - {incl_non_del_keys, "VisualLocRot", ID_OB, INSERTKEY_MATRIX, 6, - {OB_LOC_X,OB_LOC_Y,OB_LOC_Z, - OB_ROT_X,OB_ROT_Y,OB_ROT_Z}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Layer", ID_OB, 0, 1, {OB_LAY}}, // icky option... - {NULL, "Available", ID_OB, -2, 0, {0}}, - - {incl_v3d_ob_shapekey, "%l%l", 0, -1, 0, {0}}, // separator (linked to shapekey entry) - {incl_v3d_ob_shapekey, "<ShapeKey>", ID_OB, -3, 0, {0}} -}; - -/* PoseChannel KeyingSets ------ */ - -/* array for posechannel keyingset defines */ -bKeyingSet defks_v3d_pchan[] = -{ - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "Loc", ID_PO, 0, 3, {AC_LOC_X,AC_LOC_Y,AC_LOC_Z}}, - {NULL, "Rot", ID_PO, COMMONKEY_PCHANROT, 1, {KAG_CHAN_EXTEND}}, - {NULL, "Scale", ID_PO, 0, 3, {AC_SIZE_X,AC_SIZE_Y,AC_SIZE_Z}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "LocRot", ID_PO, COMMONKEY_PCHANROT, 4, - {AC_LOC_X,AC_LOC_Y,AC_LOC_Z, - KAG_CHAN_EXTEND}}, - - {NULL, "LocScale", ID_PO, 0, 6, - {AC_LOC_X,AC_LOC_Y,AC_LOC_Z, - AC_SIZE_X,AC_SIZE_Y,AC_SIZE_Z}}, - - {NULL, "LocRotScale", ID_PO, COMMONKEY_PCHANROT, 7, - {AC_LOC_X,AC_LOC_Y,AC_LOC_Z,AC_SIZE_X,AC_SIZE_Y,AC_SIZE_Z, - KAG_CHAN_EXTEND}}, - - {NULL, "RotScale", ID_PO, 0, 4, - {AC_SIZE_X,AC_SIZE_Y,AC_SIZE_Z, - KAG_CHAN_EXTEND}}, - - {incl_non_del_keys, "%l", 0, -1, 0, {0}}, // separator - - {incl_non_del_keys, "VisualLoc", ID_PO, INSERTKEY_MATRIX, 3, {AC_LOC_X,AC_LOC_Y,AC_LOC_Z}}, - {incl_non_del_keys, "VisualRot", ID_PO, INSERTKEY_MATRIX|COMMONKEY_PCHANROT, 1, {KAG_CHAN_EXTEND}}, - - {incl_non_del_keys, "VisualLocRot", ID_PO, INSERTKEY_MATRIX|COMMONKEY_PCHANROT, 4, - {AC_LOC_X,AC_LOC_Y,AC_LOC_Z, KAG_CHAN_EXTEND}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Available", ID_PO, -2, 0, {0}} -}; - -/* Material KeyingSets ------ */ - -/* array for material keyingset defines */ -bKeyingSet defks_buts_shading_mat[] = + +void ANIM_OT_keying_set_active_set (wmOperatorType *ot) { - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "RGB", ID_MA, 0, 3, {MA_COL_R,MA_COL_G,MA_COL_B}}, - {NULL, "Alpha", ID_MA, 0, 1, {MA_ALPHA}}, - {NULL, "Halo Size", ID_MA, 0, 1, {MA_HASIZE}}, - {NULL, "Mode", ID_MA, 0, 1, {MA_MODE}}, // evil bitflags - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "All Color", ID_MA, 0, 18, - {MA_COL_R,MA_COL_G,MA_COL_B, - MA_ALPHA,MA_HASIZE, MA_MODE, - MA_SPEC_R,MA_SPEC_G,MA_SPEC_B, - MA_REF,MA_EMIT,MA_AMB,MA_SPEC,MA_HARD, - MA_MODE,MA_TRANSLU,MA_ADD}}, - - {NULL, "All Mirror", ID_MA, 0, 5, - {MA_RAYM,MA_FRESMIR,MA_FRESMIRI, - MA_FRESTRA,MA_FRESTRAI}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Ofs", ID_MA, COMMONKEY_ADDMAP, 3, {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z}}, - {NULL, "Size", ID_MA, COMMONKEY_ADDMAP, 3, {MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z}}, + /* identifiers */ + ot->name= "Set Active Keying Set"; + ot->idname= "ANIM_OT_keying_set_active_set"; - {NULL, "All Mapping", ID_MA, COMMONKEY_ADDMAP, 14, - {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z, - MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z, - MAP_R,MAP_G,MAP_B,MAP_DVAR, - MAP_COLF,MAP_NORF,MAP_VARF,MAP_DISP}}, + /* callbacks */ + ot->invoke= keyingset_active_menu_invoke; + ot->exec= keyingset_active_menu_exec; + ot->poll= ED_operator_areaactive; - {NULL, "%l", 0, -1, 0, {0}}, // separator + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - {NULL, "Available", ID_MA, -2, 0, {0}} -}; - -/* World KeyingSets ------ */ + /* keyingset to use + * - here the type is int not enum, since many of the indicies here are determined dynamically + */ + RNA_def_int(ot->srna, "type", 0, INT_MIN, INT_MAX, "Keying Set Number", "Index (determined internally) of the Keying Set to use", 0, 1); +} -/* array for world keyingset defines */ -bKeyingSet defks_buts_shading_wo[] = -{ - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "Zenith RGB", ID_WO, 0, 3, {WO_ZEN_R,WO_ZEN_G,WO_ZEN_B}}, - {NULL, "Horizon RGB", ID_WO, 0, 3, {WO_HOR_R,WO_HOR_G,WO_HOR_B}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Mist", ID_WO, 0, 4, {WO_MISI,WO_MISTDI,WO_MISTSTA,WO_MISTHI}}, - {NULL, "Stars", ID_WO, 0, 5, {WO_STAR_R,WO_STAR_G,WO_STAR_B,WO_STARDIST,WO_STARSIZE}}, - - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Ofs", ID_WO, COMMONKEY_ADDMAP, 3, {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z}}, - {NULL, "Size", ID_WO, COMMONKEY_ADDMAP, 3, {MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z}}, - - {NULL, "All Mapping", ID_WO, COMMONKEY_ADDMAP, 14, - {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z, - MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z, - MAP_R,MAP_G,MAP_B,MAP_DVAR, - MAP_COLF,MAP_NORF,MAP_VARF,MAP_DISP}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Available", ID_WO, -2, 0, {0}} -}; +/* ******************************************* */ +/* REGISTERED KEYING SETS */ -/* Lamp KeyingSets ------ */ +/* Keying Set Type Info declarations */ +ListBase keyingset_type_infos = {NULL, NULL}; -/* array for lamp keyingset defines */ -bKeyingSet defks_buts_shading_la[] = -{ - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "RGB", ID_LA, 0, 3, {LA_COL_R,LA_COL_G,LA_COL_B}}, - {NULL, "Energy", ID_LA, 0, 1, {LA_ENERGY}}, - {NULL, "Spot Size", ID_LA, 0, 1, {LA_SPOTSI}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Ofs", ID_LA, COMMONKEY_ADDMAP, 3, {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z}}, - {NULL, "Size", ID_LA, COMMONKEY_ADDMAP, 3, {MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z}}, - - {NULL, "All Mapping", ID_LA, COMMONKEY_ADDMAP, 14, - {MAP_OFS_X,MAP_OFS_Y,MAP_OFS_Z, - MAP_SIZE_X,MAP_SIZE_Y,MAP_SIZE_Z, - MAP_R,MAP_G,MAP_B,MAP_DVAR, - MAP_COLF,MAP_NORF,MAP_VARF,MAP_DISP}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - {NULL, "Available", ID_LA, -2, 0, {0}} -}; +/* Built-In Keying Sets (referencing type infos)*/ +ListBase builtin_keyingsets = {NULL, NULL}; -/* Texture KeyingSets ------ */ +/* --------------- */ -/* array for texture keyingset defines */ -bKeyingSet defks_buts_shading_tex[] = +/* Find KeyingSet type info given a name */ +KeyingSetInfo *ANIM_keyingset_info_find_named (const char name[]) { - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "Clouds", ID_TE, 0, 5, - {TE_NSIZE,TE_NDEPTH,TE_NTYPE, - TE_MG_TYP,TE_N_BAS1}}, - - {NULL, "Marble", ID_TE, 0, 7, - {TE_NSIZE,TE_NDEPTH,TE_NTYPE, - TE_TURB,TE_MG_TYP,TE_N_BAS1,TE_N_BAS2}}, - - {NULL, "Stucci", ID_TE, 0, 5, - {TE_NSIZE,TE_NTYPE,TE_TURB, - TE_MG_TYP,TE_N_BAS1}}, - - {NULL, "Wood", ID_TE, 0, 6, - {TE_NSIZE,TE_NTYPE,TE_TURB, - TE_MG_TYP,TE_N_BAS1,TE_N_BAS2}}, - - {NULL, "Magic", ID_TE, 0, 2, {TE_NDEPTH,TE_TURB}}, - - {NULL, "Blend", ID_TE, 0, 1, {TE_MG_TYP}}, - - {NULL, "Musgrave", ID_TE, 0, 6, - {TE_MG_TYP,TE_MGH,TE_MG_LAC, - TE_MG_OCT,TE_MG_OFF,TE_MG_GAIN}}, - - {NULL, "Voronoi", ID_TE, 0, 9, - {TE_VNW1,TE_VNW2,TE_VNW3,TE_VNW4, - TE_VNMEXP,TE_VN_DISTM,TE_VN_COLT, - TE_ISCA,TE_NSIZE}}, - - {NULL, "Distorted Noise", ID_TE, 0, 4, - {TE_MG_OCT,TE_MG_OFF,TE_MG_GAIN,TE_DISTA}}, - - {NULL, "Color Filter", ID_TE, 0, 5, - {TE_COL_R,TE_COL_G,TE_COL_B,TE_BRIGHT,TE_CONTRA}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator + KeyingSetInfo *ksi; - {NULL, "Available", ID_TE, -2, 0, {0}} -}; - -/* Object Buttons KeyingSets ------ */ - -/* check if include particles entry */ -static short incl_buts_ob (bKeyingSet *ks, const char mode[]) -{ - //Object *ob= OBACT; // xxx - Object *ob= NULL; - /* only if object is mesh type */ + /* sanity checks */ + if ((name == NULL) || (name[0] == 0)) + return NULL; + + /* search by comparing names */ + for (ksi = keyingset_type_infos.first; ksi; ksi = ksi->next) { + if (strcmp(ksi->idname, name) == 0) + return ksi; + } - if(ob==NULL) return 0; - return (ob->type == OB_MESH); + /* no matches found */ + return NULL; } -/* array for texture keyingset defines */ -bKeyingSet defks_buts_object[] = +/* Find builtin KeyingSet by name */ +KeyingSet *ANIM_builtin_keyingset_get_named (KeyingSet *prevKS, const char name[]) { - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {incl_buts_ob, "Surface Damping", ID_OB, 0, 1, {OB_PD_SDAMP}}, - {incl_buts_ob, "Random Damping", ID_OB, 0, 1, {OB_PD_RDAMP}}, - {incl_buts_ob, "Permeability", ID_OB, 0, 1, {OB_PD_PERM}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator + KeyingSet *ks, *first=NULL; - {NULL, "Force Strength", ID_OB, 0, 1, {OB_PD_FSTR}}, - {NULL, "Force Falloff", ID_OB, 0, 1, {OB_PD_FFALL}}, + /* sanity checks any name to check? */ + if (name[0] == 0) + return NULL; - {NULL, "%l", 0, -1, 0, {0}}, // separator + /* get first KeyingSet to use */ + if (prevKS && prevKS->next) + first= prevKS->next; + else + first= builtin_keyingsets.first; + + /* loop over KeyingSets checking names */ + for (ks= first; ks; ks= ks->next) { + if (strcmp(name, ks->name) == 0) + return ks; + } - {NULL, "Available", ID_OB, -2, 0, {0}} // this will include ob-transforms too! -}; - -/* Camera Buttons KeyingSets ------ */ - -/* check if include internal-renderer entry */ -static short incl_buts_cam1 (bKeyingSet *ks, const char mode[]) -{ - Scene *scene= NULL; // FIXME this will cause a crash, but we need an extra arg first! - /* only if renderer is internal renderer */ - return (scene->r.renderer==R_INTERN); + /* no matches found */ + return NULL; } -/* check if include external-renderer entry */ -static short incl_buts_cam2 (bKeyingSet *ks, const char mode[]) -{ - Scene *scene= NULL; // FIXME this will cause a crash, but we need an extra arg first! - /* only if renderer is internal renderer */ - return (scene->r.renderer!=R_INTERN); -} +/* --------------- */ -/* array for camera keyingset defines */ -bKeyingSet defks_buts_cam[] = +/* Add the given KeyingSetInfo to the list of type infos, and create an appropriate builtin set too */ +void ANIM_keyingset_info_register (const bContext *C, KeyingSetInfo *ksi) { - /* include_cb, name, blocktype, flag, chan_num, adrcodes */ - {NULL, "Lens", ID_CA, 0, 1, {CAM_LENS}}, - {NULL, "Clipping", ID_CA, 0, 2, {CAM_STA,CAM_END}}, - {NULL, "Focal Distance", ID_CA, 0, 1, {CAM_YF_FDIST}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator - - - {incl_buts_cam2, "Aperture", ID_CA, 0, 1, {CAM_YF_APERT}}, - {incl_buts_cam1, "Viewplane Shift", ID_CA, 0, 2, {CAM_SHIFT_X,CAM_SHIFT_Y}}, - - {NULL, "%l", 0, -1, 0, {0}}, // separator + KeyingSet *ks; - {NULL, "Available", ID_CA, -2, 0, {0}} -}; - -/* --- */ - -/* Keying Context Defines - Must keep in sync with enumeration (eKS_Contexts) */ -bKeyingContext ks_contexts[] = -{ - KSC_TEMPLATE(v3d_object), - KSC_TEMPLATE(v3d_pchan), - - KSC_TEMPLATE(buts_shading_mat), - KSC_TEMPLATE(buts_shading_wo), - KSC_TEMPLATE(buts_shading_la), - KSC_TEMPLATE(buts_shading_tex), - - KSC_TEMPLATE(buts_object), - KSC_TEMPLATE(buts_cam) -}; - -/* Keying Context Enumeration - Must keep in sync with definitions*/ -typedef enum eKS_Contexts { - KSC_V3D_OBJECT = 0, - KSC_V3D_PCHAN, - - KSC_BUTS_MAT, - KSC_BUTS_WO, - KSC_BUTS_LA, - KSC_BUTS_TEX, - - KSC_BUTS_OB, - KSC_BUTS_CAM, - - /* make sure this last one remains untouched! */ - KSC_TOT_TYPES -} eKS_Contexts; - - -#endif // XXX old keyingsets code based on adrcodes... to be restored in due course - -/* Macros for Declaring KeyingSets ------------------- */ - -/* A note about this system for declaring built-in Keying Sets: - * One may ask, "What is the purpose of all of these macros and static arrays?" and - * "Why not call the KeyingSets API defined in BKE_animsys.h?". The answer is two-fold. - * - * 1) Firstly, we use static arrays of struct definitions instead of function calls, as - * it reduces the start-up overhead and allocated-memory footprint of Blender. If we called - * the KeyingSets API to build these sets, the overhead of checking for unique names, allocating - * memory for each and every path and KeyingSet, scattered around in RAM, all of which would increase - * the startup time (which is totally unacceptable) and could lead to fragmentation+slower access times. - * 2) Since we aren't using function calls, we need a nice way of defining these KeyingSets in a way which - * is easily readable and less prone to breakage from changes to the underlying struct definitions. Further, - * adding additional entries SHOULD NOT require custom code to be written to access these new entries/sets. - * Therefore, here we have a system with nice, human-readable statements via macros, and static arrays which - * are linked together using more special macros + struct definitions, allowing for such a generic + simple - * initialisation function (init_builtin_keyingsets()) compared with that of something like the Nodes system. - * - * -- Joshua Leung, April 2009 - */ - -/* Struct type for declaring builtin KeyingSets in as entries in static arrays*/ -typedef struct bBuiltinKeyingSet { - KeyingSet ks; /* the KeyingSet to build */ - int tot; /* the total number of paths defined */ - KS_Path paths[64]; /* the paths for the KeyingSet to use */ -} bBuiltinKeyingSet; - - /* WARNING: the following macros must be kept in sync with the - * struct definitions in DNA_anim_types.h! + /* create a new KeyingSet + * - inherit name and keyframing settings from the typeinfo */ - -/* macro for defining a builtin KeyingSet */ -#define BI_KS_DEFINE_BEGIN(name, keyingflag) \ - {{NULL, NULL, {NULL, NULL}, name, KEYINGSET_BUILTIN, keyingflag}, - -/* macro to finish defining a builtin KeyingSet */ -#define BI_KS_DEFINE_END \ - } - -/* macro to start defining paths for a builtin KeyingSet */ -#define BI_KS_PATHS_BEGIN(tot) \ - tot, { - -/* macro to finish defining paths for a builtin KeyingSet */ -#define BI_KS_PATHS_END \ - } + ks = BKE_keyingset_add(&builtin_keyingsets, ksi->name, 1, ksi->keyingflag); -/* macro for defining a builtin KeyingSet's path */ -#define BI_KSP_DEFINE(id_type, templates, prop_path, array_index, flag, groupflag) \ - {NULL, NULL, NULL, "", id_type, templates, prop_path, array_index, flag, groupflag} + /* link this KeyingSet with its typeinfo */ + memcpy(&ks->typeinfo, ksi->idname, sizeof(ks->typeinfo)); -/* macro for defining a builtin KeyingSet with no paths (use in place of BI_KS_PAHTS_BEGIN/END block) */ -#define BI_KS_PATHS_NONE \ - 0, {0} - -/* ---- */ - -/* Struct type for finding all the arrays of builtin KeyingSets */ -typedef struct bBuiltinKSContext { - bBuiltinKeyingSet *bks; /* array of KeyingSet definitions */ - int tot; /* number of KeyingSets in this array */ -} bBuiltinKSContext; - -/* macro for defining builtin KeyingSet sets - * NOTE: all the arrays of sets must follow this naming convention! - */ -#define BKSC_TEMPLATE(ctx_name) {&def_builtin_keyingsets_##ctx_name[0], sizeof(def_builtin_keyingsets_##ctx_name)/sizeof(bBuiltinKeyingSet)} - - -/* 3D-View Builtin KeyingSets ------------------------ */ - -static bBuiltinKeyingSet def_builtin_keyingsets_v3d[] = -{ - /* Simple Keying Sets ************************************* */ - /* Keying Set - "Location" ---------- */ - BI_KS_DEFINE_BEGIN("Location", 0) - BI_KS_PATHS_BEGIN(1) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Set - "Rotation" ---------- */ - BI_KS_DEFINE_BEGIN("Rotation", 0) - BI_KS_PATHS_BEGIN(1) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN|KSP_TEMPLATE_ROT, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Set - "Scaling" ---------- */ - BI_KS_DEFINE_BEGIN("Scaling", 0) - BI_KS_PATHS_BEGIN(1) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "scale", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Compound Keying Sets *********************************** */ - /* Keying Set - "LocRot" ---------- */ - BI_KS_DEFINE_BEGIN("LocRot", 0) - BI_KS_PATHS_BEGIN(2) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM), - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN|KSP_TEMPLATE_ROT, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Set - "LocRotScale" ---------- */ - BI_KS_DEFINE_BEGIN("LocRotScale", 0) - BI_KS_PATHS_BEGIN(3) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM), - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN|KSP_TEMPLATE_ROT, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM), - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "scale", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Sets with Keying Flags ************************* */ - /* Keying Set - "VisualLoc" ---------- */ - BI_KS_DEFINE_BEGIN("VisualLoc", INSERTKEY_MATRIX) - BI_KS_PATHS_BEGIN(1) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Set - "Rotation" ---------- */ - BI_KS_DEFINE_BEGIN("VisualRot", INSERTKEY_MATRIX) - BI_KS_PATHS_BEGIN(1) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN|KSP_TEMPLATE_ROT, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END, - - /* Keying Set - "VisualLocRot" ---------- */ - BI_KS_DEFINE_BEGIN("VisualLocRot", INSERTKEY_MATRIX) - BI_KS_PATHS_BEGIN(2) - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN, "location", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM), - BI_KSP_DEFINE(ID_OB, KSP_TEMPLATE_OBJECT|KSP_TEMPLATE_PCHAN|KSP_TEMPLATE_ROT, "rotation", 0, KSP_FLAG_WHOLE_ARRAY, KSP_GROUP_TEMPLATE_ITEM) - BI_KS_PATHS_END - BI_KS_DEFINE_END -}; - -/* All Builtin KeyingSets ------------------------ */ - -/* total number of builtin KeyingSet contexts */ -#define MAX_BKSC_TYPES 1 - -/* array containing all the available builtin KeyingSets definition sets - * - size of this is MAX_BKSC_TYPES+1 so that we don't smash the stack - */ -static bBuiltinKSContext def_builtin_keyingsets[MAX_BKSC_TYPES+1] = -{ - BKSC_TEMPLATE(v3d) - /* add more contexts above this line... */ -}; - - -/* ListBase of these KeyingSets chained up ready for usage - * NOTE: this is exported to keyframing.c for use... - */ -ListBase builtin_keyingsets = {NULL, NULL}; - -/* Utility API ------------------------ */ + /* add type-info to the list */ + BLI_addtail(&keyingset_type_infos, ksi); +} -/* Link up all of the builtin Keying Sets when starting up Blender - * This is called from WM_init() in wm_init_exit.c - */ -void init_builtin_keyingsets (void) +/* Remove the given KeyingSetInfo from the list of type infos, and also remove the builtin set if appropriate */ +void ANIM_keyingset_info_unregister (const bContext *C, KeyingSetInfo *ksi) { - bBuiltinKSContext *bksc; - bBuiltinKeyingSet *bks; - int bksc_i, bks_i; - - /* loop over all the sets of KeyingSets, setting them up, and chaining them to the builtins list */ - for (bksc_i= 0, bksc= &def_builtin_keyingsets[0]; bksc_i < MAX_BKSC_TYPES; bksc_i++, bksc++) - { - /* for each set definitions for a builtin KeyingSet, chain the paths to that KeyingSet and add */ - for (bks_i= 0, bks= bksc->bks; bks_i < bksc->tot; bks_i++, bks++) - { - KeyingSet *ks= &bks->ks; - KS_Path *ksp; - int pIndex; - - /* loop over paths, linking them to the KeyingSet and each other */ - for (pIndex= 0, ksp= &bks->paths[0]; pIndex < bks->tot; pIndex++, ksp++) - BLI_addtail(&ks->paths, ksp); - - /* add KeyingSet to builtin sets list */ - BLI_addtail(&builtin_keyingsets, ks); + Scene *scene = CTX_data_scene(C); + KeyingSet *ks, *ksn; + + /* find relevant builtin KeyingSets which use this, and remove them */ + // TODO: this isn't done now, since unregister is really only used atm when we + // reload the scripts, which kindof defeats the purpose of "builtin"? + for (ks= builtin_keyingsets.first; ks; ks= ksn) { + ksn = ks->next; + + /* remove if matching typeinfo name */ + if (strcmp(ks->typeinfo, ksi->idname) == 0) { + BKE_keyingset_free(ks); + BLI_freelinkN(&scene->keyingsets, ks); } } + + /* free the type info */ + BLI_freelinkN(&keyingset_type_infos, ksi); } +/* --------------- */ -/* Get the first builtin KeyingSet with the given name, which occurs after the given one (or start of list if none given) */ -KeyingSet *ANIM_builtin_keyingset_get_named (KeyingSet *prevKS, char name[]) +void ANIM_keyingset_infos_exit () { - KeyingSet *ks, *first=NULL; - - /* sanity checks - any name to check? */ - if (name[0] == 0) - return NULL; + KeyingSetInfo *ksi, *next; - /* get first KeyingSet to use */ - if (prevKS && prevKS->next) - first= prevKS->next; - else - first= builtin_keyingsets.first; + /* free type infos */ + for (ksi=keyingset_type_infos.first; ksi; ksi=next) { + next= ksi->next; - /* loop over KeyingSets checking names */ - for (ks= first; ks; ks= ks->next) { - if (strcmp(name, ks->name) == 0) - return ks; + /* free extra RNA data, and remove from list */ + if (ksi->ext.free) + ksi->ext.free(ksi->ext.data); + BLI_freelinkN(&keyingset_type_infos, ksi); } - /* no matches found */ - return NULL; + /* free builtin sets */ + BKE_keyingsets_free(&builtin_keyingsets); } +/* ******************************************* */ +/* KEYING SETS API (for UI) */ + +/* Getters for Active/Indices ----------------------------- */ /* Get the active Keying Set for the Scene provided */ KeyingSet *ANIM_scene_get_active_keyingset (Scene *scene) { - if (ELEM(NULL, scene, scene->keyingsets.first)) + /* if no scene, we've got no hope of finding the Keying Set */ + if (scene == NULL) return NULL; /* currently, there are several possibilities here: * - 0: no active keying set * - > 0: one of the user-defined Keying Sets, but indices start from 0 (hence the -1) - * - < 0: a builtin keying set (XXX this isn't enabled yet so that we don't get errors on reading back files) + * - < 0: a builtin keying set */ if (scene->active_keyingset > 0) return BLI_findlink(&scene->keyingsets, scene->active_keyingset-1); - else // for now... - return NULL; + else + return BLI_findlink(&builtin_keyingsets, (-scene->active_keyingset)-1); } -/* ******************************************* */ -/* KEYFRAME MODIFICATION */ - -/* KeyingSet Menu Helpers ------------ */ - -/* Extract the maximum set of requirements from the KeyingSet */ -static int keyingset_relative_get_templates (KeyingSet *ks) +/* Get the index of the Keying Set provided, for the given Scene */ +int ANIM_scene_get_keyingset_index (Scene *scene, KeyingSet *ks) { - KS_Path *ksp; - int templates= 0; + int index; + + /* if no KeyingSet provided, have none */ + if (ks == NULL) + return 0; - /* loop over the paths (could be slow to do for a number of KeyingSets)? */ - for (ksp= ks->paths.first; ksp; ksp= ksp->next) { - /* add the destination's templates to the set of templates required for the set */ - templates |= ksp->templates; + /* check if the KeyingSet exists in scene list */ + if (scene) { + /* get index and if valid, return + * - (absolute) Scene KeyingSets are from (>= 1) + */ + index = BLI_findindex(&scene->keyingsets, ks); + if (index != -1) + return (index + 1); } - return templates; + /* still here, so try builtins list too + * - builtins are from (<= -1) + * - none/invalid is (= 0) + */ + index = BLI_findindex(&builtin_keyingsets, ks); + if (index != -1) + return -(index + 1); + else + return 0; } -/* Check if context data is suitable for the given Keying Set */ -short keyingset_context_ok_poll (bContext *C, KeyingSet *ks) +/* Menu of All Keying Sets ----------------------------- */ + +/* Create (and show) a menu containing all the Keying Sets which can be used in the current context */ +void ANIM_keying_sets_menu_setup (bContext *C, char title[], char op_name[]) { - // TODO: - // For 'relative' keyingsets (i.e. py-keyingsets), add a call here - // which basically gets a listing of all the paths to be used for this - // set. + Scene *scene= CTX_data_scene(C); + KeyingSet *ks; + uiPopupMenu *pup; + uiLayout *layout; + int i = 0; + pup= uiPupMenuBegin(C, title, 0); + layout= uiPupMenuLayout(pup); - return 1; -} + /* active Keying Set + * - only include entry if it exists + */ + if (scene->active_keyingset) { + uiItemIntO(layout, "Active Keying Set", 0, op_name, "type", i++); + uiItemS(layout); + } + else + i++; + + /* user-defined Keying Sets + * - these are listed in the order in which they were defined for the active scene + */ + if (scene->keyingsets.first) { + for (ks= scene->keyingsets.first; ks; ks= ks->next) { + if (ANIM_keyingset_context_ok_poll(C, ks)) + uiItemIntO(layout, ks->name, 0, op_name, "type", i++); + } + uiItemS(layout); + } + + /* builtin Keying Sets */ + i= -1; + for (ks= builtin_keyingsets.first; ks; ks= ks->next) { + /* only show KeyingSet if context is suitable */ + if (ANIM_keyingset_context_ok_poll(C, ks)) + uiItemIntO(layout, ks->name, 0, op_name, "type", i--); + } + + uiPupMenuEnd(C, pup); +} + +/* ******************************************* */ +/* KEYFRAME MODIFICATION */ -/* KeyingSet Context Operations ------------ */ +/* Polling API ----------------------------------------------- */ -/* Get list of data-sources from context (in 3D-View) for inserting keyframes using the given relative Keying Set */ -static short modifykey_get_context_v3d_data (bContext *C, ListBase *dsources, KeyingSet *ks) +/* Check if KeyingSet can be used in the current context */ +short ANIM_keyingset_context_ok_poll (bContext *C, KeyingSet *ks) { - bCommonKeySrc *cks; - Object *obact= CTX_data_active_object(C); - int templates; - short ok= 0; - - /* get the templates in use in this KeyingSet which we should supply data for */ - templates = keyingset_relative_get_templates(ks); - - /* check if the active object is in PoseMode (i.e. only deal with bones) */ - // TODO: check with the templates to see what we really need to store - if ((obact && obact->pose) && (obact->mode & OB_MODE_POSE)) { - /* Pose Mode: Selected bones */ -#if 0 - //set_pose_keys(ob); /* sets pchan->flag to POSE_KEY if bone selected, and clears if not */ + if ((ks->flag & KEYINGSET_ABSOLUTE) == 0) { + KeyingSetInfo *ksi = ANIM_keyingset_info_find_named(ks->typeinfo); - /* loop through posechannels */ - //for (pchan=ob->pose->chanbase.first; pchan; pchan=pchan->next) { - // if (pchan->flag & POSE_KEY) { - // } - //} -#endif + /* get the associated 'type info' for this KeyingSet */ + if (ksi == NULL) + return 0; + // TODO: check for missing callbacks! - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - { - /* add a new keying-source */ - cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc"); - BLI_addtail(dsources, cks); - - /* set necessary info */ - cks->id= &obact->id; - cks->pchan= pchan; - - if (templates & KSP_TEMPLATE_CONSTRAINT) - cks->con= constraints_get_active(&pchan->constraints); - - ok= 1; - } - CTX_DATA_END; - } - else { - /* Object Mode: Selected objects */ - CTX_DATA_BEGIN(C, Object*, ob, selected_objects) - { - /* add a new keying-source */ - cks= MEM_callocN(sizeof(bCommonKeySrc), "bCommonKeySrc"); - BLI_addtail(dsources, cks); - - /* set necessary info */ - cks->id= &ob->id; - - if (templates & KSP_TEMPLATE_CONSTRAINT) - cks->con= constraints_get_active(&ob->constraints); - - ok= 1; - } - CTX_DATA_END; + /* check if it can be used in the current context */ + return (ksi->poll(ksi, C)); } - /* return whether any data was extracted */ - return ok; + return 1; } -/* Get list of data-sources from context for inserting keyframes using the given relative Keying Set */ -short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks) +/* Special 'Overrides' Iterator for Relative KeyingSets ------ */ + +/* 'Data Sources' for relative Keying Set 'overrides' + * - this is basically a wrapper for PointerRNA's in a linked list + * - do not allow this to be accessed from outside for now + */ +typedef struct tRKS_DSource { + struct tRKS_DSource *next, *prev; + PointerRNA ptr; /* the whole point of this exercise! */ +} tRKS_DSource; + + +/* Iterator used for overriding the behaviour of iterators defined for + * relative Keying Sets, with the main usage of this being operators + * requiring Auto Keyframing. Internal Use Only! + */ +static void RKS_ITER_overrides_list (KeyingSetInfo *ksi, bContext *C, KeyingSet *ks, ListBase *dsources) { - ScrArea *sa= CTX_wm_area(C); + tRKS_DSource *ds; - /* for now, the active area is used to determine what set of contexts apply */ - if (sa == NULL) - return 0; - -#if 0 - switch (sa->spacetype) { - case SPACE_VIEW3D: /* 3D-View: Selected Objects or Bones */ - return modifykey_get_context_v3d_data(C, dsources, ks); + for (ds = dsources->first; ds; ds = ds->next) { + /* run generate callback on this data */ + ksi->generate(ksi, C, ks, &ds->ptr); } - - /* nothing happened */ - return 0; -#endif +} - /* looking into this code, it doesnt use the 3D view - Campbell */ - return modifykey_get_context_v3d_data(C, dsources, ks); -} +/* Add new data source for relative Keying Sets */ +void ANIM_relative_keyingset_add_source (ListBase *dsources, ID *id, StructRNA *srna, void *data) +{ + tRKS_DSource *ds; + + /* sanity checks + * - we must have somewhere to output the data + * - we must have both srna+data (and with id too optionally), or id by itself only + */ + if (dsources == NULL) + return; + if (ELEM(NULL, srna, data) && (id == NULL)) + return; + + /* allocate new elem, and add to the list */ + ds = MEM_callocN(sizeof(tRKS_DSource), "tRKS_DSource"); + BLI_addtail(dsources, ds); + + /* depending on what data we have, create using ID or full pointer call */ + if (srna && data) + RNA_pointer_create(id, srna, data, &ds->ptr); + else + RNA_id_pointer_create(id, &ds->ptr); +} /* KeyingSet Operations (Insert/Delete Keyframes) ------------ */ @@ -1270,8 +808,9 @@ short modifykey_get_context_data (bContext *C, ListBase *dsources, KeyingSet *ks * by the KeyingSet. This takes into account many of the different combinations of using KeyingSets. * Returns the number of channels that keyframes were added to */ -int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet *ks, short mode, float cfra) +int ANIM_apply_keyingset (bContext *C, ListBase *dsources, bAction *act, KeyingSet *ks, short mode, float cfra) { + Scene *scene= CTX_data_scene(C); KS_Path *ksp; int kflag=0, success= 0; char *groupname= NULL; @@ -1291,201 +830,101 @@ int modify_keyframes (Scene *scene, ListBase *dsources, bAction *act, KeyingSet else if (mode == MODIFYKEY_MODE_DELETE) kflag= 0; - /* check if the KeyingSet is absolute or not (i.e. does it requires sources info) */ - if (ks->flag & KEYINGSET_ABSOLUTE) { - /* Absolute KeyingSets are simpler to use, as all the destination info has already been - * provided by the user, and is stored, ready to use, in the KeyingSet paths. + /* if relative Keying Sets, poll and build up the paths */ + if ((ks->flag & KEYINGSET_ABSOLUTE) == 0) { + KeyingSetInfo *ksi = ANIM_keyingset_info_find_named(ks->typeinfo); + + /* clear all existing paths + * NOTE: BKE_keyingset_free() frees all of the paths for the KeyingSet, but not the set itself */ - for (ksp= ks->paths.first; ksp; ksp= ksp->next) { - int arraylen, i; - - /* get pointer to name of group to add channels to */ - if (ksp->groupmode == KSP_GROUP_NONE) - groupname= NULL; - else if (ksp->groupmode == KSP_GROUP_KSNAME) - groupname= ks->name; - else - groupname= ksp->group; - - /* init arraylen and i - arraylen should be greater than i so that - * normal non-array entries get keyframed correctly - */ - i= ksp->array_index; - arraylen= i; - - /* get length of array if whole array option is enabled */ - if (ksp->flag & KSP_FLAG_WHOLE_ARRAY) { - PointerRNA id_ptr, ptr; - PropertyRNA *prop; - - RNA_id_pointer_create(ksp->id, &id_ptr); - if (RNA_path_resolve(&id_ptr, ksp->rna_path, &ptr, &prop) && prop) - arraylen= RNA_property_array_length(&ptr, prop); - } - - /* we should do at least one step */ - if (arraylen == i) - arraylen++; - - /* for each possible index, perform operation - * - assume that arraylen is greater than index + BKE_keyingset_free(ks); + + /* get the associated 'type info' for this KeyingSet */ + if (ksi == NULL) + return MODIFYKEY_MISSING_TYPEINFO; + // TODO: check for missing callbacks! + + /* check if it can be used in the current context */ + if (ksi->poll(ksi, C)) { + /* if a list of data sources are provided, run a special iterator over them, + * otherwise, just continue per normal */ - for (; i < arraylen; i++) { - /* action to take depends on mode */ - if (mode == MODIFYKEY_MODE_INSERT) - success += insert_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag); - else if (mode == MODIFYKEY_MODE_DELETE) - success += delete_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag); - } - - /* set recalc-flags */ - if (ksp->id) { - switch (GS(ksp->id->name)) { - case ID_OB: /* Object (or Object-Related) Keyframes */ - { - Object *ob= (Object *)ksp->id; - - ob->recalc |= OB_RECALC; - } - break; - } + if (dsources) + RKS_ITER_overrides_list(ksi, C, ks, dsources); + else + ksi->iter(ksi, C, ks); - /* send notifiers for updates (this doesn't require context to work!) */ - WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - } + /* if we don't have any paths now, then this still qualifies as invalid context */ + if (ks->paths.first == NULL) + return MODIFYKEY_INVALID_CONTEXT; + } + else { + /* poll callback tells us that KeyingSet is useless in current context */ + return MODIFYKEY_INVALID_CONTEXT; } } - else if (dsources && dsources->first) { - /* for each one of the 'sources', resolve the template markers and expand arrays, then insert keyframes */ - bCommonKeySrc *cks; + + /* apply the paths as specified in the KeyingSet now */ + for (ksp= ks->paths.first; ksp; ksp= ksp->next) { + int arraylen, i; + short kflag2; - /* for each 'source' for keyframe data, resolve each of the paths from the KeyingSet */ - for (cks= dsources->first; cks; cks= cks->next) { - /* for each path in KeyingSet, construct a path using the templates */ - for (ksp= ks->paths.first; ksp; ksp= ksp->next) { - DynStr *pathds= BLI_dynstr_new(); - char *path = NULL; - int arraylen, i; - - /* set initial group name */ - if (cks->id == NULL) { - printf("ERROR: Skipping 'Common-Key' Source. No valid ID present.\n"); - continue; - } - else - groupname= cks->id->name+2; - - /* construct the path */ - // FIXME: this currently only works with a few hardcoded cases - if ((ksp->templates & KSP_TEMPLATE_PCHAN) && (cks->pchan)) { - /* add basic pose-channel path access */ - BLI_dynstr_append(pathds, "pose.bones[\""); - BLI_dynstr_append(pathds, cks->pchan->name); - BLI_dynstr_append(pathds, "\"]"); - - /* override default group name */ - groupname= cks->pchan->name; - } - if ((ksp->templates & KSP_TEMPLATE_CONSTRAINT) && (cks->con)) { - /* add basic constraint path access */ - BLI_dynstr_append(pathds, "constraints[\""); - BLI_dynstr_append(pathds, cks->con->name); - BLI_dynstr_append(pathds, "\"]"); - - /* override default group name */ - groupname= cks->con->name; - } + /* since keying settings can be defined on the paths too, extend the path before using it */ + kflag2 = (kflag | ksp->keyingflag); + + /* get pointer to name of group to add channels to */ + if (ksp->groupmode == KSP_GROUP_NONE) + groupname= NULL; + else if (ksp->groupmode == KSP_GROUP_KSNAME) + groupname= ks->name; + else + groupname= ksp->group; + + /* init arraylen and i - arraylen should be greater than i so that + * normal non-array entries get keyframed correctly + */ + i= ksp->array_index; + arraylen= i; + + /* get length of array if whole array option is enabled */ + if (ksp->flag & KSP_FLAG_WHOLE_ARRAY) { + PointerRNA id_ptr, ptr; + PropertyRNA *prop; + + RNA_id_pointer_create(ksp->id, &id_ptr); + if (RNA_path_resolve(&id_ptr, ksp->rna_path, &ptr, &prop) && prop) + arraylen= RNA_property_array_length(&ptr, prop); + } + + /* we should do at least one step */ + if (arraylen == i) + arraylen++; + + /* for each possible index, perform operation + * - assume that arraylen is greater than index + */ + for (; i < arraylen; i++) { + /* action to take depends on mode */ + if (mode == MODIFYKEY_MODE_INSERT) + success += insert_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag2); + else if (mode == MODIFYKEY_MODE_DELETE) + success += delete_keyframe(ksp->id, act, groupname, ksp->rna_path, i, cfra, kflag2); + } + + /* set recalc-flags */ + if (ksp->id) { + switch (GS(ksp->id->name)) { + case ID_OB: /* Object (or Object-Related) Keyframes */ { - /* add property stored in KeyingSet Path */ - if (BLI_dynstr_get_len(pathds)) - BLI_dynstr_append(pathds, "."); - - /* apply some further templates? */ - if (ksp->templates & KSP_TEMPLATE_ROT) { - /* for builtin Keying Sets, this template makes the best fitting path for the - * current rotation mode of the Object / PoseChannel to be used - */ - if (strcmp(ksp->rna_path, "rotation")==0) { - /* get rotation mode */ - short rotmode= (cks->pchan)? (cks->pchan->rotmode) : - (GS(cks->id->name)==ID_OB)? ( ((Object *)cks->id)->rotmode ) : - (0); - - /* determine path to build */ - if (rotmode == ROT_MODE_QUAT) - BLI_dynstr_append(pathds, "rotation_quaternion"); - else if (rotmode == ROT_MODE_AXISANGLE) - BLI_dynstr_append(pathds, "rotation_axis_angle"); - else - BLI_dynstr_append(pathds, "rotation_euler"); - } - } - else { - /* just directly use the path */ - BLI_dynstr_append(pathds, ksp->rna_path); - } - - /* convert to C-string */ - path= BLI_dynstr_get_cstring(pathds); - BLI_dynstr_free(pathds); - } - - /* get pointer to name of group to add channels to - * - KSP_GROUP_TEMPLATE_ITEM is handled above while constructing the paths - */ - if (ksp->groupmode == KSP_GROUP_NONE) - groupname= NULL; - else if (ksp->groupmode == KSP_GROUP_KSNAME) - groupname= ks->name; - else if (ksp->groupmode == KSP_GROUP_NAMED) - groupname= ksp->group; - - /* init arraylen and i - arraylen should be greater than i so that - * normal non-array entries get keyframed correctly - */ - i= ksp->array_index; - arraylen= i+1; - - /* get length of array if whole array option is enabled */ - if (ksp->flag & KSP_FLAG_WHOLE_ARRAY) { - PointerRNA id_ptr, ptr; - PropertyRNA *prop; + Object *ob= (Object *)ksp->id; - RNA_id_pointer_create(cks->id, &id_ptr); - if (RNA_path_resolve(&id_ptr, path, &ptr, &prop) && prop) - arraylen= RNA_property_array_length(&ptr, prop); - } - - /* for each possible index, perform operation - * - assume that arraylen is greater than index - */ - for (; i < arraylen; i++) { - /* action to take depends on mode */ - if (mode == MODIFYKEY_MODE_INSERT) - success+= insert_keyframe(cks->id, act, groupname, path, i, cfra, kflag); - else if (mode == MODIFYKEY_MODE_DELETE) - success+= delete_keyframe(cks->id, act, groupname, path, i, cfra, kflag); + ob->recalc |= OB_RECALC_ALL; // XXX: only object transforms only? } - - /* free the path */ - MEM_freeN(path); + break; } - /* set recalc-flags */ - if (cks->id) { - switch (GS(cks->id->name)) { - case ID_OB: /* Object (or Object-Related) Keyframes */ - { - Object *ob= (Object *)cks->id; - - ob->recalc |= OB_RECALC; - } - break; - } - - /* send notifiers for updates (this doesn't require context to work!) */ - WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); - } + /* send notifiers for updates (this doesn't require context to work!) */ + WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } } diff --git a/source/blender/editors/armature/CMakeLists.txt b/source/blender/editors/armature/CMakeLists.txt new file mode 100644 index 00000000000..9e22bbd7d44 --- /dev/null +++ b/source/blender/editors/armature/CMakeLists.txt @@ -0,0 +1,39 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/guardedalloc + ../../../../intern/opennl/extern +) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_armature "${SRC}" "${INC}") diff --git a/source/blender/editors/armature/Makefile b/source/blender/editors/armature/Makefile index 0291bcb1830..4838282de92 100644 --- a/source/blender/editors/armature/Makefile +++ b/source/blender/editors/armature/Makefile @@ -50,7 +50,6 @@ CPPFLAGS += -I../../imbuf CPPFLAGS += -I../../python CPPFLAGS += -I../../gpu CPPFLAGS += -I../../makesrna -CPPFLAGS += -I../../render/extern/include CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include # own include diff --git a/source/blender/editors/armature/armature_intern.h b/source/blender/editors/armature/armature_intern.h index 9d0db52d007..fadb4f234d9 100644 --- a/source/blender/editors/armature/armature_intern.h +++ b/source/blender/editors/armature/armature_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -107,6 +107,8 @@ void POSE_OT_group_remove(struct wmOperatorType *ot); void POSE_OT_group_remove(struct wmOperatorType *ot); void POSE_OT_group_assign(struct wmOperatorType *ot); void POSE_OT_group_unassign(struct wmOperatorType *ot); +void POSE_OT_group_select(struct wmOperatorType *ot); +void POSE_OT_group_deselect(struct wmOperatorType *ot); void POSE_OT_paths_calculate(struct wmOperatorType *ot); void POSE_OT_paths_clear(struct wmOperatorType *ot); @@ -130,6 +132,7 @@ void SKETCH_OT_draw_stroke(struct wmOperatorType *ot); void SKETCH_OT_draw_preview(struct wmOperatorType *ot); void SKETCH_OT_finish_stroke(struct wmOperatorType *ot); void SKETCH_OT_cancel_stroke(struct wmOperatorType *ot); +void SKETCH_OT_convert(struct wmOperatorType *ot); void SKETCH_OT_select(struct wmOperatorType *ot); /* ******************************************************* */ diff --git a/source/blender/editors/armature/armature_ops.c b/source/blender/editors/armature/armature_ops.c index ba2c6597e43..7abf8575921 100644 --- a/source/blender/editors/armature/armature_ops.c +++ b/source/blender/editors/armature/armature_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,13 +31,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_object_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -47,14 +40,12 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" #include "ED_armature.h" #include "ED_screen.h" -#include "ED_object.h" #include "ED_transform.h" #include "armature_intern.h" @@ -105,6 +96,7 @@ void ED_operatortypes_armature(void) WM_operatortype_append(SKETCH_OT_draw_preview); WM_operatortype_append(SKETCH_OT_finish_stroke); WM_operatortype_append(SKETCH_OT_cancel_stroke); + WM_operatortype_append(SKETCH_OT_convert); WM_operatortype_append(SKETCH_OT_select); /* POSE */ @@ -134,6 +126,8 @@ void ED_operatortypes_armature(void) WM_operatortype_append(POSE_OT_group_remove); WM_operatortype_append(POSE_OT_group_assign); WM_operatortype_append(POSE_OT_group_unassign); + WM_operatortype_append(POSE_OT_group_select); + WM_operatortype_append(POSE_OT_group_deselect); WM_operatortype_append(POSE_OT_paths_calculate); WM_operatortype_append(POSE_OT_paths_clear); @@ -198,14 +192,16 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* Armature -> Etch-A-Ton ------------------------ */ WM_keymap_add_item(keymap, "SKETCH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_delete", DELKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", SELECTMOUSE, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_finish_stroke", RIGHTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SKETCH_OT_cancel_stroke", ESCKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); + // Already part of view3d select + //WM_keymap_add_item(keymap, "SKETCH_OT_select", SELECTMOUSE, KM_PRESS, 0, 0); /* sketch poll checks mode */ - WM_keymap_add_item(keymap, "SKETCH_OT_gesture", ACTIONMOUSE, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, 0, 0); - kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", ACTIONMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_gesture", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); RNA_boolean_set(kmi->ptr, "snap", 1); WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, 0, 0); kmi = WM_keymap_add_item(keymap, "SKETCH_OT_draw_preview", MOUSEMOVE, KM_ANY, KM_CTRL, 0); @@ -242,6 +238,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ARMATURE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ARMATURE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_move", EKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ARMATURE_OT_extrude_forked", EKEY, KM_PRESS, KM_SHIFT, 0); @@ -265,7 +262,7 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* special transforms: */ /* 1) envelope/b-bone size */ - kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); + kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); /* 2) set roll */ kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", RKEY, KM_PRESS, KM_CTRL, 0); @@ -286,9 +283,9 @@ void ED_keymap_armature(wmKeyConfig *keyconf) kmi= WM_keymap_add_item(keymap, "POSE_OT_hide", HKEY, KM_PRESS, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "unselected", 1); WM_keymap_add_item(keymap, "POSE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); - + WM_keymap_add_menu(keymap, "VIEW3D_MT_pose_apply", AKEY, KM_PRESS, KM_CTRL, 0); - + // TODO: clear pose WM_keymap_add_item(keymap, "POSE_OT_rot_clear", RKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "POSE_OT_loc_clear", GKEY, KM_PRESS, KM_ALT, 0); @@ -342,12 +339,13 @@ void ED_keymap_armature(wmKeyConfig *keyconf) /* special transforms: */ /* 1) envelope/b-bone size */ - kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_ALT, 0); + kmi= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); RNA_enum_set(kmi->ptr, "mode", TFM_BONESIZE); - // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith + /* keyframes management */ WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0); /* Pose -> PoseLib ------------- */ /* only set in posemode, by space_view3d listener */ diff --git a/source/blender/editors/armature/editarmature.c b/source/blender/editors/armature/editarmature.c index eeb256a8be5..7a2d26af4ed 100644 --- a/source/blender/editors/armature/editarmature.c +++ b/source/blender/editors/armature/editarmature.c @@ -34,22 +34,10 @@ #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_ID.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_modifier_types.h" -#include "DNA_ipo_types.h" -#include "DNA_curve_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -72,7 +60,6 @@ #include "BKE_subsurf.h" #include "BKE_utildefines.h" #include "BKE_modifier.h" -#include "PIL_time.h" #include "BIF_gl.h" #include "BIF_generate.h" @@ -88,7 +75,6 @@ #include "ED_mesh.h" #include "ED_object.h" #include "ED_screen.h" -#include "ED_transform.h" #include "ED_util.h" #include "ED_view3d.h" @@ -102,7 +88,6 @@ #endif /* ************* XXX *************** */ -static int okee() {return 0;} static void BIF_undo_push(const char *msg) {} /* ************* XXX *************** */ @@ -154,7 +139,7 @@ static void bone_free(bArmature *arm, EditBone *bone) BLI_freelinkN(arm->edbo, bone); } -void ED_armature_edit_bone_remove(bArmature *arm, EditBone* exBone) +void ED_armature_edit_bone_remove(bArmature *arm, EditBone *exBone) { EditBone *curBone; @@ -471,8 +456,8 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode) /* Do the adjustments */ for (ebone= arm->edbo->first; ebone; ebone=ebone->next) { - sub_v3_v3v3(ebone->head, ebone->head, cent); - sub_v3_v3v3(ebone->tail, ebone->tail, cent); + sub_v3_v3(ebone->head, cent); + sub_v3_v3(ebone->tail, cent); } /* Turn the list into an armature */ @@ -483,9 +468,7 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode) copy_m3_m4(omat, ob->obmat); mul_m3_v3(omat, cent); - ob->loc[0] += cent[0]; - ob->loc[1] += cent[1]; - ob->loc[2] += cent[2]; + add_v3_v3(ob->loc, cent); } else ED_armature_edit_free(ob); @@ -493,9 +476,10 @@ void docenter_armature (Scene *scene, View3D *v3d, Object *ob, int centermode) /* ---------------------- */ -static EditBone *editbone_name_exists (ListBase *edbo, char *name) +/* checks if an EditBone with a matching name already, returning the matching bone if it exists */ +static EditBone *editbone_name_exists (ListBase *edbo, const char *name) { - EditBone *eBone; + EditBone *eBone; for (eBone=edbo->first; eBone; eBone=eBone->next) { if (!strcmp(name, eBone->name)) @@ -508,9 +492,9 @@ static EditBone *editbone_name_exists (ListBase *edbo, char *name) void unique_editbone_name (ListBase *edbo, char *name, EditBone *bone) { EditBone *dupli; - char tempname[64]; - int number; - char *dot; + char tempname[64]; + int number; + char *dot; dupli = editbone_name_exists(edbo, name); @@ -545,7 +529,7 @@ static void applyarmature_fix_boneparents (Scene *scene, Object *armob) /* apply current transform from parent (not yet destroyed), * then calculate new parent inverse matrix */ - ED_object_apply_obmat(ob); + object_apply_mat4(ob, ob->obmat); what_does_parent(scene, ob, &workob); invert_m4_m4(ob->parentinv, workob.obmat); @@ -906,6 +890,8 @@ int join_armature_exec(bContext *C, wmOperator *op) BLI_remlink(&opose->chanbase, pchan); BLI_addtail(&pose->chanbase, pchan); + free_pose_channels_hash(opose); + free_pose_channels_hash(pose); } ED_base_object_free_and_unlink(scene, base); @@ -1109,6 +1095,7 @@ static void separate_armature_bones (Scene *scene, Object *ob, short sel) /* free any of the extra-data this pchan might have */ free_pose_channel(pchan); + free_pose_channels_hash(ob->pose); /* get rid of unneeded bone */ bone_free(arm, curbone); @@ -1816,6 +1803,7 @@ static int armature_delete_selected_exec(bContext *C, wmOperator *op) if (curBone && (curBone->flag & BONE_SELECTED) && (arm->layer & curBone->layer)) { free_pose_channel(pchan); + free_pose_channels_hash(obedit->pose); BLI_freelinkN (&obedit->pose->chanbase, pchan); } else { @@ -1937,10 +1925,6 @@ void ED_armature_deselectall(Object *obedit, int toggle, int doundo) } ED_armature_sync_selection(arm->edbo); - if (doundo) { - if (sel==1) BIF_undo_push("Select All"); - else BIF_undo_push("Deselect All"); - } } @@ -1964,7 +1948,7 @@ int mouse_armature(bContext *C, short mval[2], int extend) ED_armature_deselectall(obedit, 0, 0); /* by definition the non-root connected bones have no root point drawn, - so a root selection needs to be delivered to the parent tip */ + so a root selection needs to be delivered to the parent tip */ if(selmask & BONE_SELECTED) { if(nearBone->parent && (nearBone->flag & BONE_CONNECTED)) { @@ -2045,15 +2029,6 @@ void ED_armature_edit_free(struct Object *ob) } } -void ED_armature_edit_remake(Object *obedit) -{ - if(okee("Reload original data")==0) return; - - ED_armature_to_edit(obedit); - -// BIF_undo_push("Delete bone"); -} - /* Put armature in EditMode */ void ED_armature_to_edit(Object *ob) { @@ -3691,7 +3666,7 @@ static int armature_subdivs_exec(bContext *C, wmOperator *op) void ARMATURE_OT_subdivs(wmOperatorType *ot) { static EnumPropertyItem type_items[]= { - {0, "SIMPLE", 0, "Simple", ""}, + {0, "SIMPLE", 0, "Simple", ""}, {1, "MULTI", 0, "Multi", ""}, {0, NULL, 0, NULL, NULL}}; @@ -3849,7 +3824,7 @@ static void bone_connect_to_new_parent(ListBase *edbo, EditBone *selbone, EditBo VECCOPY(selbone->head, actbone->tail); selbone->rad_head= actbone->rad_tail; - add_v3_v3v3(selbone->tail, selbone->tail, offset); + add_v3_v3(selbone->tail, offset); /* offset for all its children */ for (ebone = edbo->first; ebone; ebone=ebone->next) { @@ -3857,8 +3832,8 @@ static void bone_connect_to_new_parent(ListBase *edbo, EditBone *selbone, EditBo for (par= ebone->parent; par; par= par->parent) { if (par==selbone) { - add_v3_v3v3(ebone->head, ebone->head, offset); - add_v3_v3v3(ebone->tail, ebone->tail, offset); + add_v3_v3(ebone->head, offset); + add_v3_v3(ebone->tail, offset); break; } } @@ -3958,11 +3933,11 @@ static int armature_parent_set_invoke(bContext *C, wmOperator *op, wmEvent *even } CTX_DATA_END; - uiItemEnumO(layout, NULL, 0, "ARMATURE_OT_parent_set", "type", ARM_PAR_CONNECT); + uiItemEnumO(layout, "ARMATURE_OT_parent_set", NULL, 0, "type", ARM_PAR_CONNECT); /* ob becomes parent, make the associated menus */ if (allchildbones) - uiItemEnumO(layout, NULL, 0, "ARMATURE_OT_parent_set", "type", ARM_PAR_OFFSET); + uiItemEnumO(layout, "ARMATURE_OT_parent_set", NULL, 0, "type", ARM_PAR_OFFSET); uiPupMenuEnd(C, pup); @@ -4212,7 +4187,7 @@ void ARMATURE_OT_select_hierarchy(wmOperatorType *ot) /* props */ RNA_def_enum(ot->srna, "direction", direction_items, - BONE_SELECT_PARENT, "Direction", ""); + BONE_SELECT_PARENT, "Direction", ""); RNA_def_boolean(ot->srna, "extend", 0, "Add to Selection", ""); } @@ -4228,8 +4203,8 @@ static void fix_connected_bone(EditBone *ebone) /* if the parent has moved we translate child's head and tail accordingly*/ sub_v3_v3v3(diff, ebone->parent->tail, ebone->head); - add_v3_v3v3(ebone->head, ebone->head, diff); - add_v3_v3v3(ebone->tail, ebone->tail, diff); + add_v3_v3(ebone->head, diff); + add_v3_v3(ebone->tail, diff); return; } @@ -4357,28 +4332,28 @@ void ARMATURE_OT_align(wmOperatorType *ot) static int bone_looper(Object *ob, Bone *bone, void *data, int (*bone_func)(Object *, Bone *, void *)) { - /* We want to apply the function bone_func to every bone + /* We want to apply the function bone_func to every bone * in an armature -- feed bone_looper the first bone and * a pointer to the bone_func and watch it go!. The int count * can be useful for counting bones with a certain property * (e.g. skinnable) */ - int count = 0; + int count = 0; - if (bone) { + if (bone) { /* only do bone_func if the bone is non null */ - count += bone_func(ob, bone, data); + count += bone_func(ob, bone, data); /* try to execute bone_func for the first child */ - count += bone_looper(ob, bone->childbase.first, data, bone_func); + count += bone_looper(ob, bone->childbase.first, data, bone_func); /* try to execute bone_func for the next bone at this * depth of the recursion. */ - count += bone_looper(ob, bone->next, data, bone_func); - } + count += bone_looper(ob, bone->next, data, bone_func); + } - return count; + return count; } /* called from editview.c, for mode-less pose selection */ @@ -4496,28 +4471,28 @@ void ED_pose_deselectall (Object *ob, int test, int doundo) static int bone_skinnable(Object *ob, Bone *bone, void *datap) { - /* Bones that are deforming - * are regarded to be "skinnable" and are eligible for - * auto-skinning. - * - * This function performs 2 functions: - * - * a) It returns 1 if the bone is skinnable. - * If we loop over all bones with this - * function, we can count the number of - * skinnable bones. - * b) If the pointer data is non null, - * it is treated like a handle to a - * bone pointer -- the bone pointer - * is set to point at this bone, and - * the pointer the handle points to - * is incremented to point to the - * next member of an array of pointers - * to bones. This way we can loop using - * this function to construct an array of - * pointers to bones that point to all - * skinnable bones. - */ + /* Bones that are deforming + * are regarded to be "skinnable" and are eligible for + * auto-skinning. + * + * This function performs 2 functions: + * + * a) It returns 1 if the bone is skinnable. + * If we loop over all bones with this + * function, we can count the number of + * skinnable bones. + * b) If the pointer data is non null, + * it is treated like a handle to a + * bone pointer -- the bone pointer + * is set to point at this bone, and + * the pointer the handle points to + * is incremented to point to the + * next member of an array of pointers + * to bones. This way we can loop using + * this function to construct an array of + * pointers to bones that point to all + * skinnable bones. + */ Bone ***hbone; int a, segments; struct { Object *armob; void *list; int heat; } *data = datap; @@ -4540,62 +4515,65 @@ static int bone_skinnable(Object *ob, Bone *bone, void *datap) return segments; } } - return 0; + return 0; } static int ED_vgroup_add_unique_bone(Object *ob, Bone *bone, void *data) { - /* This group creates a vertex group to ob that has the - * same name as bone (provided the bone is skinnable). + /* This group creates a vertex group to ob that has the + * same name as bone (provided the bone is skinnable). * If such a vertex group aleady exist the routine exits. - */ + */ if (!(bone->flag & BONE_NO_DEFORM)) { if (!defgroup_find_name(ob,bone->name)) { ED_vgroup_add_name(ob, bone->name); return 1; } - } - return 0; + } + return 0; } static int dgroup_skinnable(Object *ob, Bone *bone, void *datap) { - /* Bones that are deforming - * are regarded to be "skinnable" and are eligible for - * auto-skinning. - * - * This function performs 2 functions: - * - * a) If the bone is skinnable, it creates - * a vertex group for ob that has - * the name of the skinnable bone - * (if one doesn't exist already). - * b) If the pointer data is non null, - * it is treated like a handle to a - * bDeformGroup pointer -- the - * bDeformGroup pointer is set to point - * to the deform group with the bone's - * name, and the pointer the handle - * points to is incremented to point to the - * next member of an array of pointers - * to bDeformGroups. This way we can loop using - * this function to construct an array of - * pointers to bDeformGroups, all with names - * of skinnable bones. - */ - bDeformGroup ***hgroup, *defgroup; + /* Bones that are deforming + * are regarded to be "skinnable" and are eligible for + * auto-skinning. + * + * This function performs 2 functions: + * + * a) If the bone is skinnable, it creates + * a vertex group for ob that has + * the name of the skinnable bone + * (if one doesn't exist already). + * b) If the pointer data is non null, + * it is treated like a handle to a + * bDeformGroup pointer -- the + * bDeformGroup pointer is set to point + * to the deform group with the bone's + * name, and the pointer the handle + * points to is incremented to point to the + * next member of an array of pointers + * to bDeformGroups. This way we can loop using + * this function to construct an array of + * pointers to bDeformGroups, all with names + * of skinnable bones. + */ + bDeformGroup ***hgroup, *defgroup= NULL; int a, segments; struct { Object *armob; void *list; int heat; } *data= datap; + int wpmode = (ob->mode & OB_MODE_WEIGHT_PAINT); + bArmature *arm= data->armob->data; - if (!(ob->mode & OB_MODE_WEIGHT_PAINT) || !(bone->flag & BONE_HIDDEN_P)) { + if (!wpmode || !(bone->flag & BONE_HIDDEN_P)) { if (!(bone->flag & BONE_NO_DEFORM)) { if (data->heat && data->armob->pose && get_pose_channel(data->armob->pose, bone->name)) segments = bone->segments; else segments = 1; - - if (!(defgroup = defgroup_find_name(ob, bone->name))) - defgroup = ED_vgroup_add_name(ob, bone->name); + + if(!wpmode || ((arm->layer & bone->layer) && (bone->flag & BONE_SELECTED))) + if (!(defgroup = defgroup_find_name(ob, bone->name))) + defgroup = ED_vgroup_add_name(ob, bone->name); if (data->list != NULL) { hgroup = (bDeformGroup ***) &data->list; @@ -4608,7 +4586,7 @@ static int dgroup_skinnable(Object *ob, Bone *bone, void *datap) return segments; } } - return 0; + return 0; } static void add_vgroups__mapFunc(void *userData, int index, float *co, float *no_f, short *no_s) @@ -4721,7 +4699,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m selected = MEM_callocN(numbones*sizeof(int), "selected"); for (j=0; j < numbones; ++j) { - bone = bonelist[j]; + bone = bonelist[j]; dgroup = dgrouplist[j]; /* handle bbone */ @@ -4769,7 +4747,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m selected[j] = 1; /* find flipped group */ - if (mirror) { + if (dgroup && mirror) { char name[32]; BLI_strncpy(name, dgroup->name, 32); @@ -4786,7 +4764,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m } /* create verts */ - mesh = (Mesh*)ob->data; + mesh = (Mesh*)ob->data; verts = MEM_callocN(mesh->totvert*sizeof(*verts), "closestboneverts"); if (wpmode) { @@ -4802,7 +4780,7 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m } else if (modifiers_findByType(ob, eModifierType_Subsurf)) { /* is subsurf on? Lets use the verts on the limit surface then. - * = same amount of vertices as mesh, but vertices moved to the + * = same amount of vertices as mesh, but vertices moved to the * subsurfed position, like for 'optimal'. */ subsurf_calculate_limit_positions(mesh, verts); vertsfilled = 1; @@ -4825,9 +4803,9 @@ void add_verts_to_dgroups(Scene *scene, Object *ob, Object *par, int heat, int m dgroupflip, root, tip, selected, mat4_to_scale(par->obmat)); } - /* free the memory allocated */ - MEM_freeN(bonelist); - MEM_freeN(dgrouplist); + /* free the memory allocated */ + MEM_freeN(bonelist); + MEM_freeN(dgrouplist); MEM_freeN(dgroupflip); MEM_freeN(root); MEM_freeN(tip); @@ -4867,12 +4845,7 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; + short autokey = 0; /* only clear those channels that are not locked */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { @@ -4885,13 +4858,12 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op) /* do auto-keyframing as appropriate */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); - /* clear any unkeyed tags */ if (pchan->bone) pchan->bone->flag &= ~BONE_UNKEYED; + + /* tag for autokeying later */ + autokey = 1; } else { /* add unkeyed tags */ @@ -4901,6 +4873,16 @@ static int pose_clear_scale_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* perform autokeying on the bones if needed */ + if (autokey) { + /* insert keyframes */ + ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* now recalculate paths */ + if ((ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) + ED_pose_recalculate_paths(C, scene, ob); + } + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* note, notifier might evolve */ @@ -4930,12 +4912,7 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; + short autokey = 0; /* only clear those channels that are not locked */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { @@ -4949,13 +4926,12 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op) /* do auto-keyframing as appropriate */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); - /* clear any unkeyed tags */ if (pchan->bone) pchan->bone->flag &= ~BONE_UNKEYED; + + /* tag for autokeying later */ + autokey = 1; } else { /* add unkeyed tags */ @@ -4965,6 +4941,16 @@ static int pose_clear_loc_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* perform autokeying on the bones if needed */ + if (autokey) { + /* insert keyframes */ + ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* now recalculate paths */ + if ((ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) + ED_pose_recalculate_paths(C, scene, ob); + } + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* note, notifier might evolve */ @@ -4994,12 +4980,7 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) Object *ob= CTX_data_active_object(C); KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; + short autokey = 0; /* only clear those channels that are not locked */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { @@ -5079,7 +5060,7 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) VECCOPY(pchan->eul, eul); } } - } + } // Duplicated in source/blender/editors/object/object_transform.c else { if (pchan->rotmode == ROT_MODE_QUAT) { pchan->quat[1]=pchan->quat[2]=pchan->quat[3]= 0.0f; @@ -5097,13 +5078,12 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) /* do auto-keyframing as appropriate */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); - /* clear any unkeyed tags */ if (pchan->bone) pchan->bone->flag &= ~BONE_UNKEYED; + + /* tag for autokeying later */ + autokey = 1; } else { /* add unkeyed tags */ @@ -5113,6 +5093,16 @@ static int pose_clear_rot_exec(bContext *C, wmOperator *op) } CTX_DATA_END; + /* perform autokeying on the bones if needed */ + if (autokey) { + /* insert keyframes */ + ANIM_apply_keyingset(C, NULL, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + + /* now recalculate paths */ + if ((ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) + ED_pose_recalculate_paths(C, scene, ob); + } + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* note, notifier might evolve */ @@ -5528,7 +5518,7 @@ void ED_armature_bone_rename(bArmature *arm, char *oldnamep, char *newnamep) // TODO: should we be using the database wide version instead (since drivers may break) if (ob->adt) { /* posechannels only... */ - BKE_animdata_fix_paths_rename(&ob->id, ob->adt, "pose.bones", oldname, newname); + BKE_animdata_fix_paths_rename(&ob->id, ob->adt, "pose.bones", oldname, newname, 0, 0, 1); } } } @@ -5596,8 +5586,8 @@ static int armature_autoside_names_exec (bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, EditBone *, ebone, selected_editable_bones) { BLI_strncpy(newname, ebone->name, sizeof(newname)); - bone_autoside_name(newname, 1, axis, ebone->head[axis], ebone->tail[axis]); - ED_armature_bone_rename(arm, ebone->name, newname); + if(bone_autoside_name(newname, 1, axis, ebone->head[axis], ebone->tail[axis])) + ED_armature_bone_rename(arm, ebone->name, newname); } CTX_DATA_END; @@ -5613,7 +5603,7 @@ static int armature_autoside_names_exec (bContext *C, wmOperator *op) void ARMATURE_OT_autoside_names (wmOperatorType *ot) { static EnumPropertyItem axis_items[]= { - {0, "XAXIS", 0, "X-Axis", "Left/Right"}, + {0, "XAXIS", 0, "X-Axis", "Left/Right"}, {1, "YAXIS", 0, "Y-Axis", "Front/Back"}, {2, "ZAXIS", 0, "Z-Axis", "Top/Bottom"}, {0, NULL, 0, NULL, NULL}}; @@ -5793,7 +5783,7 @@ EditBone * test_subdivideByCorrelation(Scene *scene, Object *obedit, ReebArc *ar lastBone = subdivideArcBy(arm, arm->edbo, iter, invmat, tmat, nextAdaptativeSubdivision); } - return lastBone; + return lastBone; } float arcLengthRatio(ReebArc *arc) @@ -5880,7 +5870,7 @@ void generateSkeletonFromReebGraph(Scene *scene, ReebGraph *rg) ED_armature_to_edit(obedit); - arcBoneMap = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + arcBoneMap = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "SkeletonFromReebGraph gh"); BLI_markdownSymmetry((BGraph*)rg, rg->nodes.first, scene->toolsettings->skgen_symmetry_limit); diff --git a/source/blender/editors/armature/editarmature_generate.c b/source/blender/editors/armature/editarmature_generate.c index b92e1652b4e..c48e7686ca9 100644 --- a/source/blender/editors/armature/editarmature_generate.c +++ b/source/blender/editors/armature/editarmature_generate.c @@ -34,7 +34,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_listBase.h" #include "DNA_scene_types.h" #include "DNA_armature_types.h" @@ -61,7 +60,7 @@ void setBoneRollFromNormal(EditBone *bone, float *no, float invmat[][4], float t sub_v3_v3v3(tangent, bone->tail, bone->head); project_v3_v3v3(vec, tangent, normal); - sub_v3_v3v3(normal, normal, vec); + sub_v3_v3(normal, vec); normalize_v3(normal); @@ -103,7 +102,7 @@ float calcArcCorrelation(BArcIterator *iter, int start, int end, float v0[3], fl IT_peek(iter, i); sub_v3_v3v3(v, iter->p, v0); project_v3_v3v3(d, v, n); - sub_v3_v3v3(v, v, d); + sub_v3_v3(v, d); dt = len_v3(d) - avg_t; @@ -250,7 +249,7 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st { VECCOPY(p, dv); mul_v3_fl(p, f); - add_v3_v3v3(p, p, vec0); + add_v3_v3(p, vec0); } else { @@ -266,7 +265,7 @@ int nextLengthSubdivision(ToolSettings *toolsettings, BArcIterator *iter, int st VECCOPY(p, dv); mul_v3_fl(p, lengthLimit); - add_v3_v3v3(p, p, head); + add_v3_v3(p, head); } return i - 1; /* restart at lower bound */ diff --git a/source/blender/editors/armature/editarmature_retarget.c b/source/blender/editors/armature/editarmature_retarget.c index b3960c3cfd5..c2e21755f94 100644 --- a/source/blender/editors/armature/editarmature_retarget.c +++ b/source/blender/editors/armature/editarmature_retarget.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,23 +29,13 @@ #include <math.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "PIL_time.h" -#include "DNA_ID.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_view3d_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -68,7 +58,6 @@ #include "BIF_retarget.h" -#include "PIL_time.h" //#include "mydevice.h" #include "reeb.h" // FIX ME @@ -327,8 +316,8 @@ static RigGraph *newRigGraph() rg->head = NULL; - rg->bones_map = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp); - rg->controls_map = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp); + rg->bones_map = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "newRigGraph bones gh"); + rg->controls_map = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "newRigGraph cont gh"); rg->free_arc = RIG_freeRigArc; rg->free_node = NULL; @@ -572,7 +561,7 @@ static RigGraph *cloneRigGraph(RigGraph *src, ListBase *editbones, Object *ob, c RigControl *ctrl; RigGraph *rg; - ptr_hash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + ptr_hash = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "cloneRigGraph gh"); rg = newRigGraph(); diff --git a/source/blender/editors/armature/editarmature_sketch.c b/source/blender/editors/armature/editarmature_sketch.c index 6d1d26865af..a1af68458f6 100644 --- a/source/blender/editors/armature/editarmature_sketch.c +++ b/source/blender/editors/armature/editarmature_sketch.c @@ -26,14 +26,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_listBase.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_view3d_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_object_types.h" #include "DNA_armature_types.h" -#include "DNA_userdef_types.h" #include "RNA_define.h" #include "RNA_access.h" @@ -55,7 +49,6 @@ #include "ED_screen.h" #include "BIF_gl.h" -#include "UI_resources.h" //#include "BIF_screen.h" //#include "BIF_space.h" //#include "BIF_mywindow.h" @@ -175,7 +168,7 @@ void BIF_makeListTemplates(const bContext *C) BLI_ghash_free(TEMPLATES_HASH, NULL, NULL); } - TEMPLATES_HASH = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp); + TEMPLATES_HASH = BLI_ghash_new(BLI_ghashutil_inthash, BLI_ghashutil_intcmp, "makeListTemplates gh"); TEMPLATES_CURRENT = 0; for ( base = FIRSTBASE; base; base = base->next ) @@ -575,8 +568,8 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end) { float d_rgb[3] = {1, 1, 1}; - VECCOPY(rgb, color); - sub_v3_v3v3(d_rgb, d_rgb, rgb); + copy_v3_v3(rgb, color); + sub_v3_v3(d_rgb, rgb); mul_v3_fl(d_rgb, 1.0f / (float)stk->nb_points); for (i = 0; i < stk->nb_points; i++) @@ -614,7 +607,7 @@ void sk_drawStroke(SK_Stroke *stk, int id, float color[3], int start, int end) glPopMatrix(); - add_v3_v3v3(rgb, rgb, d_rgb); + add_v3_v3(rgb, d_rgb); } } @@ -1012,7 +1005,7 @@ void sk_interpolateDepth(bContext *C, SK_Stroke *stk, int start, int end, float viewray(ar, v3d, pval, ray_start, ray_normal); mul_v3_fl(ray_normal, distance * progress / length); - add_v3_v3v3(stk->points[i].p, stk->points[i].p, ray_normal); + add_v3_v3(stk->points[i].p, ray_normal); progress += delta ; } @@ -1635,7 +1628,7 @@ int sk_getSelfIntersections(bContext *C, ListBase *list, SK_Stroke *gesture) sub_v3_v3v3(isect->p, gesture->points[s_i + 1].p, gesture->points[s_i].p); mul_v3_fl(isect->p, lambda); - add_v3_v3v3(isect->p, isect->p, gesture->points[s_i].p); + add_v3_v3(isect->p, gesture->points[s_i].p); BLI_addtail(list, isect); @@ -2161,7 +2154,7 @@ void sk_applyGesture(bContext *C, SK_Sketch *sketch) /********************************************/ -void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) +int sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) { ViewContext vc; rcti rect; @@ -2206,7 +2199,10 @@ void sk_selectStroke(bContext *C, SK_Sketch *sketch, short mval[2], int extend) } + return 1; } + + return 0; } void sk_queueRedrawSketch(SK_Sketch *sketch) @@ -2308,7 +2304,7 @@ void sk_drawSketch(Scene *scene, View3D *v3d, SK_Sketch *sketch, int with_names) } } -#if 1 +#if 0 if (sketch->depth_peels.first != NULL) { float colors[8][3] = { @@ -2478,7 +2474,8 @@ void BIF_sk_selectStroke(bContext *C, short mval[2], short extend) if (sketch != NULL && ts->bone_sketching & BONE_SKETCHING) { - sk_selectStroke(C, sketch, mval, extend); + if (sk_selectStroke(C, sketch, mval, extend)) + ED_area_tag_redraw(CTX_wm_area(C)); } } @@ -2565,6 +2562,17 @@ SK_Sketch* viewcontextSketch(ViewContext *vc, int create) return sketch; } +static int sketch_convert(bContext *C, wmOperator *op, wmEvent *event) +{ + SK_Sketch *sketch = contextSketch(C, 0); + if (sketch != NULL) + { + sk_convert(C, sketch); + ED_area_tag_redraw(CTX_wm_area(C)); + } + return OPERATOR_FINISHED; +} + static int sketch_cancel(bContext *C, wmOperator *op, wmEvent *event) { SK_Sketch *sketch = contextSketch(C, 0); @@ -2597,8 +2605,8 @@ static int sketch_select(bContext *C, wmOperator *op, wmEvent *event) if (sketch) { short extend = 0; - sk_selectStroke(C, sketch, event->mval, extend); - ED_area_tag_redraw(CTX_wm_area(C)); + if (sk_selectStroke(C, sketch, event->mval, extend)) + ED_area_tag_redraw(CTX_wm_area(C)); } return OPERATOR_FINISHED; @@ -2671,6 +2679,7 @@ static int sketch_draw_modal(bContext *C, wmOperator *op, wmEvent *event, short RNA_boolean_set(op->ptr, "snap", snap); break; case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: dd->mval[0] = event->mval[0]; dd->mval[1] = event->mval[1]; sk_draw_stroke(C, sketch, stk, dd, snap); @@ -2866,6 +2875,21 @@ void SKETCH_OT_cancel_stroke(wmOperatorType *ot) // ot->flag= OPTYPE_UNDO; } +void SKETCH_OT_convert(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "convert"; + ot->idname= "SKETCH_OT_convert"; + + /* api callbacks */ + ot->invoke= sketch_convert; + + ot->poll= ED_operator_sketch_full_mode; + + /* flags */ + ot->flag= OPTYPE_UNDO; +} + void SKETCH_OT_finish_stroke(wmOperatorType *ot) { /* identifiers */ diff --git a/source/blender/editors/armature/meshlaplacian.c b/source/blender/editors/armature/meshlaplacian.c index 74793900f65..98986aa4663 100644 --- a/source/blender/editors/armature/meshlaplacian.c +++ b/source/blender/editors/armature/meshlaplacian.c @@ -33,7 +33,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_listBase.h" #include "DNA_object_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" @@ -45,6 +44,7 @@ #include "BLI_memarena.h" #include "BKE_DerivedMesh.h" +#include "BKE_modifier.h" #include "BKE_utildefines.h" #ifdef RIGID_DEFORM @@ -52,13 +52,10 @@ #include "BLI_polardecomp.h" #endif -#include "RE_raytrace.h" - #include "ONL_opennl.h" #include "BLO_sys_types.h" // for intptr_t support -#include "ED_armature.h" #include "ED_mesh.h" #include "meshlaplacian.h" @@ -66,7 +63,7 @@ /* ************* XXX *************** */ static void waitcursor(int val) {} -static void progress_bar() {} +static void progress_bar(int dummy_val, const char *dummy) {} static void start_progress_bar() {} static void end_progress_bar() {} static void error(char *str) { printf("error: %s\n", str); } @@ -108,8 +105,7 @@ struct LaplacianSystem { float *p; /* values from all p vectors */ float *mindist; /* minimum distance to a bone for all vertices */ - RayObject *raytree; /* ray tracing acceleration structure */ - RayFace *faces; /* faces to add to the ray tracing struture */ + BVHTree *bvhtree; /* ray tracing acceleration structure */ MFace **vface; /* a face that the vertex belongs to */ } heat; @@ -390,36 +386,72 @@ float laplacian_system_get_solution(int v) /************************* Heat Bone Weighting ******************************/ /* From "Automatic Rigging and Animation of 3D Characters" - Ilya Baran and Jovan Popovic, SIGGRAPH 2007 */ + Ilya Baran and Jovan Popovic, SIGGRAPH 2007 */ #define C_WEIGHT 1.0f #define WEIGHT_LIMIT_START 0.05f #define WEIGHT_LIMIT_END 0.025f #define DISTANCE_EPSILON 1e-4f +typedef struct BVHCallbackUserData { + float start[3]; + float vec[3]; + LaplacianSystem *sys; +} BVHCallbackUserData; + +static void bvh_callback(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) +{ + BVHCallbackUserData *data = (struct BVHCallbackUserData*)userdata; + MFace *mf = data->sys->heat.mface + index; + float (*verts)[3] = data->sys->heat.verts; + float lambda, uv[2], n[3], dir[3]; + + mul_v3_v3fl(dir, data->vec, hit->dist); + + if(isect_ray_tri_v3(data->start, dir, verts[mf->v1], verts[mf->v2], verts[mf->v3], &lambda, uv)) { + normal_tri_v3(n, verts[mf->v1], verts[mf->v2], verts[mf->v3]); + if(lambda < 1.0f && dot_v3v3(n, data->vec) < -1e-5f) { + hit->index = index; + hit->dist *= lambda; + } + } + + mul_v3_v3fl(dir, data->vec, hit->dist); + + if(isect_ray_tri_v3(data->start, dir, verts[mf->v1], verts[mf->v3], verts[mf->v4], &lambda, uv)) { + normal_tri_v3(n, verts[mf->v1], verts[mf->v3], verts[mf->v4]); + if(lambda < 1.0f && dot_v3v3(n, data->vec) < -1e-5f) { + hit->index = index; + hit->dist *= lambda; + } + } +} + /* Raytracing for vertex to bone/vertex visibility */ static void heat_ray_tree_create(LaplacianSystem *sys) { MFace *mface = sys->heat.mface; + float (*verts)[3] = sys->heat.verts; int totface = sys->heat.totface; int totvert = sys->heat.totvert; int a; - sys->heat.raytree = RE_rayobject_vbvh_create(totface); - sys->heat.faces = MEM_callocN(sizeof(RayFace)*totface, "Heat RayFaces"); + sys->heat.bvhtree = BLI_bvhtree_new(totface, 0.0f, 4, 6); sys->heat.vface = MEM_callocN(sizeof(MFace*)*totvert, "HeatVFaces"); for(a=0; a<totface; a++) { - MFace *mf = mface+a; - RayFace *rayface = sys->heat.faces+a; - - RayObject *obj = RE_rayface_from_coords( - rayface, &sys->heat, mf, - sys->heat.verts[mf->v1], sys->heat.verts[mf->v2], - sys->heat.verts[mf->v3], mf->v4 ? sys->heat.verts[mf->v4] : 0 - ); - RE_rayobject_add(sys->heat.raytree, obj); + float bb[6]; + + INIT_MINMAX(bb, bb+3); + DO_MINMAX(verts[mf->v1], bb, bb+3); + DO_MINMAX(verts[mf->v2], bb, bb+3); + DO_MINMAX(verts[mf->v3], bb, bb+3); + if(mf->v4) { + DO_MINMAX(verts[mf->v4], bb, bb+3); + } + + BLI_bvhtree_insert(sys->heat.bvhtree, a, bb, 2); //Setup inverse pointers to use on isect.orig sys->heat.vface[mf->v1]= mf; @@ -427,12 +459,14 @@ static void heat_ray_tree_create(LaplacianSystem *sys) sys->heat.vface[mf->v3]= mf; if(mf->v4) sys->heat.vface[mf->v4]= mf; } - RE_rayobject_done(sys->heat.raytree); + + BLI_bvhtree_balance(sys->heat.bvhtree); } static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) { - Isect isec; + BVHTreeRayHit hit; + BVHCallbackUserData data; MFace *mface; float end[3]; int visible; @@ -441,27 +475,24 @@ static int heat_ray_source_visible(LaplacianSystem *sys, int vertex, int source) if(!mface) return 1; - /* setup isec */ - memset(&isec, 0, sizeof(isec)); - isec.mode= RE_RAY_SHADOW; - isec.lay= -1; - isec.orig.ob = &sys->heat; - isec.orig.face = mface; - isec.skip = RE_SKIP_CULLFACE; - - copy_v3_v3(isec.start, sys->heat.verts[vertex]); + data.sys= sys; + copy_v3_v3(data.start, sys->heat.verts[vertex]); if(sys->heat.root) /* bone */ - closest_to_line_segment_v3(end, isec.start, + closest_to_line_segment_v3(end, data.start, sys->heat.root[source], sys->heat.tip[source]); else /* vertex */ copy_v3_v3(end, sys->heat.source[source]); - sub_v3_v3v3(isec.vec, end, isec.start); - isec.labda = 1.0f - 1e-5; - madd_v3_v3v3fl(isec.start, isec.start, isec.vec, 1e-5); + sub_v3_v3v3(data.vec, end, data.start); + madd_v3_v3v3fl(data.start, data.start, data.vec, 1e-5); + mul_v3_fl(data.vec, 1.0f - 2e-5); - visible= !RE_rayobject_raycast(sys->heat.raytree, &isec); + /* pass normalized vec + distance to bvh */ + hit.index = -1; + hit.dist = normalize_v3(data.vec); + + visible= BLI_bvhtree_ray_cast(sys->heat.bvhtree, data.start, data.vec, 0.0f, &hit, bvh_callback, (void*)&data) == -1; return visible; } @@ -525,10 +556,8 @@ static void heat_set_H(LaplacianSystem *sys, int vertex) /* compute H entry */ if(numclosest > 0) { - if(mindist > 1e-5) - h= numclosest*C_WEIGHT/(mindist*mindist); - else - h= 1e10f; + mindist= maxf(mindist, 1e-4f); + h= numclosest*C_WEIGHT/(mindist*mindist); } else h= 0.0f; @@ -550,9 +579,9 @@ void heat_calc_vnormals(LaplacianSystem *sys) normal_tri_v3( fnor,sys->verts[v1], sys->verts[v2], sys->verts[v3]); - add_v3_v3v3(sys->heat.vnors[v1], sys->heat.vnors[v1], fnor); - add_v3_v3v3(sys->heat.vnors[v2], sys->heat.vnors[v2], fnor); - add_v3_v3v3(sys->heat.vnors[v3], sys->heat.vnors[v3], fnor); + add_v3_v3(sys->heat.vnors[v1], fnor); + add_v3_v3(sys->heat.vnors[v2], fnor); + add_v3_v3(sys->heat.vnors[v3], fnor); } for(a=0; a<sys->totvert; a++) @@ -590,9 +619,8 @@ static void heat_laplacian_create(LaplacianSystem *sys) static void heat_system_free(LaplacianSystem *sys) { - RE_rayobject_free(sys->heat.raytree); + BLI_bvhtree_free(sys->heat.bvhtree); MEM_freeN(sys->heat.vface); - MEM_freeN(sys->heat.faces); MEM_freeN(sys->heat.mindist); MEM_freeN(sys->heat.H); @@ -620,13 +648,24 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, LaplacianSystem *sys; MFace *mface; float solution, weight; - int *vertsflipped = NULL; + int *vertsflipped = NULL, *mask= NULL; int a, totface, j, bbone, firstsegment, lastsegment, thrownerror = 0; - /* count triangles */ + /* count triangles and create mask */ + if(me->editflag & ME_EDIT_PAINT_MASK) + mask= MEM_callocN(sizeof(int)*me->totvert, "heat_bone_weighting mask"); + for(totface=0, a=0, mface=me->mface; a<me->totface; a++, mface++) { totface++; if(mface->v4) totface++; + + if(mask && (mface->flag & ME_FACE_SEL)) { + mask[mface->v1]= 1; + mask[mface->v2]= 1; + mask[mface->v3]= 1; + if(mface->v4) + mask[mface->v4]= 1; + } } /* create laplacian */ @@ -663,6 +702,9 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, /* clear weights */ if(bbone && firstsegment) { for(a=0; a<me->totvert; a++) { + if(mask && !mask[a]) + continue; + ED_vgroup_vert_remove(ob, dgrouplist[j], a); if(vertsflipped && dgroupflip[j] && vertsflipped[a] >= 0) ED_vgroup_vert_remove(ob, dgroupflip[j], vertsflipped[a]); @@ -681,6 +723,9 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, if(laplacian_system_solve(sys)) { /* load solution into vertex groups */ for(a=0; a<me->totvert; a++) { + if(mask && !mask[a]) + continue; + solution= laplacian_system_get_solution(a); if(bbone) { @@ -725,6 +770,9 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, /* remove too small vertex weights */ if(bbone && lastsegment) { for(a=0; a<me->totvert; a++) { + if(mask && !mask[a]) + continue; + weight= ED_vgroup_vert_weight(ob, dgrouplist[j], a); weight= heat_limit_weight(weight); if(weight <= 0.0f) @@ -742,6 +790,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, /* free */ if(vertsflipped) MEM_freeN(vertsflipped); + if(mask) MEM_freeN(mask); heat_system_free(sys); @@ -751,7 +800,7 @@ void heat_bone_weighting(Object *ob, Mesh *me, float (*verts)[3], int numsource, #ifdef RIGID_DEFORM /********************** As-Rigid-As-Possible Deformation ******************/ /* From "As-Rigid-As-Possible Surface Modeling", - Olga Sorkine and Marc Alexa, ESGP 2007. */ + Olga Sorkine and Marc Alexa, ESGP 2007. */ /* investigate: - transpose R in orthogonal @@ -808,7 +857,7 @@ static void rigid_add_half_edge_to_rhs(LaplacianSystem *sys, EditVert *v1, EditV mul_v3_fl(rhs, 0.5f); mul_v3_fl(rhs, w); - add_v3_v3v3(sys->rigid.rhs[v1->tmp.l], sys->rigid.rhs[v1->tmp.l], rhs); + add_v3_v3(sys->rigid.rhs[v1->tmp.l], rhs); } static void rigid_add_edge_to_rhs(LaplacianSystem *sys, EditVert *v1, EditVert *v2, float w) @@ -1032,17 +1081,25 @@ typedef struct MeshDeformBind { /* direct solver */ int *varidx; - - /* raytrace */ - RayObject *raytree; } MeshDeformBind; +typedef struct MeshDeformIsect { + float start[3]; + float vec[3]; + float labda; + + void *face; + int isect; + float u, v; + +} MeshDeformIsect; + /* ray intersection */ /* our own triangle intersection, so we can fully control the epsilons and * prevent corner case from going wrong*/ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], - float vert1[3], float vert2[3], float *isectco, float *uvw) + float vert1[3], float vert2[3], float *isectco, float *uvw) { float edge1[3], edge2[3], tvec[3], pvec[3], qvec[3]; float det,inv_det, u, v, dir[3], isectdir[3]; @@ -1099,63 +1156,7 @@ static int meshdeform_tri_intersect(float orig[3], float end[3], float vert0[3], return 1; } -/* blender's raytracer is not use now, even though it is much faster. it can - * give problems with rays falling through, so we use our own intersection - * function above with tweaked epsilons */ - -#if 0 -static MeshDeformBind *MESHDEFORM_BIND = NULL; - -static void meshdeform_ray_coords_func(RayFace *face, float **v1, float **v2, float **v3, float **v4) -{ - MFace *mface= (MFace*)face; - float (*cagecos)[3]= MESHDEFORM_BIND->cagecos; - - *v1= cagecos[mface->v1]; - *v2= cagecos[mface->v2]; - *v3= cagecos[mface->v3]; - *v4= (mface->v4)? cagecos[mface->v4]: NULL; -} - -static int meshdeform_ray_check_func(Isect *is, RayFace *face) -{ - return 1; -} - -static void meshdeform_ray_tree_create(MeshDeformBind *mdb) -{ - MFace *mface; - float min[3], max[3]; - int a, totface; - - /* create a raytrace tree from the mesh */ - INIT_MINMAX(min, max); - - for(a=0; a<mdb->totcagevert; a++) - DO_MINMAX(mdb->cagecos[a], min, max) - - MESHDEFORM_BIND= mdb; - - mface= mdb->cagedm->getTessFaceArray(mdb->cagedm); - totface= mdb->cagedm->getNumTessFaces(mdb->cagedm); - - mdb->raytree= RE_ray_tree_create(64, totface, min, max, - meshdeform_ray_coords_func, meshdeform_ray_check_func); - - for(a=0; a<totface; a++, mface++) - RE_ray_tree_add_face(mdb->raytree, mface); - - RE_ray_tree_done(mdb->raytree); -} - -static void meshdeform_ray_tree_free(MeshDeformBind *mdb) -{ - MESHDEFORM_BIND= NULL; - RE_ray_tree_free(mdb->raytree); -} -#endif - -static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) +static int meshdeform_intersect(MeshDeformBind *mdb, MeshDeformIsect *isec) { MFace *mface; float face[4][3], co[3], uvw[3], len, nor[3], end[3]; @@ -1194,7 +1195,7 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) len= len_v3v3(isec->start, co)/len_v3v3(isec->start, end); if(len < isec->labda) { isec->labda= len; - isec->hit.face = mface; + isec->face = mface; isec->isect= (INPR(isec->vec, nor) <= 0.0f); is= 1; } @@ -1207,7 +1208,7 @@ static int meshdeform_intersect(MeshDeformBind *mdb, Isect *isec) static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float *co1, float *co2) { MDefBoundIsect *isect; - Isect isec; + MeshDeformIsect isec; float (*cagecos)[3]; MFace *mface; float vert[4][3], len, end[3]; @@ -1215,21 +1216,15 @@ static MDefBoundIsect *meshdeform_ray_tree_intersect(MeshDeformBind *mdb, float /* setup isec */ memset(&isec, 0, sizeof(isec)); - isec.mode= RE_RAY_MIRROR; /* we want the closest intersection */ - isec.lay= -1; isec.labda= 1e10f; VECADD(isec.start, co1, epsilon); VECADD(end, co2, epsilon); sub_v3_v3v3(isec.vec, end, isec.start); -#if 0 - /*if(RE_ray_tree_intersect(mdb->raytree, &isec)) {*/ -#endif - if(meshdeform_intersect(mdb, &isec)) { len= isec.labda; - mface=(MFace*)isec.hit.face; + mface=(MFace*)isec.face; /* create MDefBoundIsect */ isect= BLI_memarena_alloc(mdb->memarena, sizeof(*isect)); @@ -1747,7 +1742,7 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, else mdb->weights= MEM_callocN(sizeof(float)*mdb->totvert*mdb->totcagevert, "MDefWeights"); - mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "harmonic coords arena"); BLI_memarena_use_calloc(mdb->memarena); /* make bounding box equal size in all directions, add padding, and compute @@ -1772,11 +1767,6 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, progress_bar(0, "Setting up mesh deform system"); -#if 0 - /* create ray tree */ - meshdeform_ray_tree_create(mdb); -#endif - totinside= 0; for(a=0; a<mdb->totvert; a++) { copy_v3_v3(vec, mdb->vertexcos[a]); @@ -1787,7 +1777,7 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, /* free temporary MDefBoundIsects */ BLI_memarena_free(mdb->memarena); - mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE); + mdb->memarena= BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, "harmonic coords arena"); /* start with all cells untyped */ for(a=0; a<mdb->size3; a++) @@ -1799,11 +1789,6 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, for(x=0; x<mdb->size; x++) meshdeform_add_intersections(mdb, x, y, z); -#if 0 - /* free ray tree */ - meshdeform_ray_tree_free(mdb); -#endif - /* compute exterior and interior tags */ meshdeform_bind_floodfill(mdb); @@ -1867,6 +1852,7 @@ static void harmonic_coordinates_bind(Scene *scene, MeshDeformModifierData *mmd, BLI_memarena_free(mdb->memarena); } +#if 0 static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, MeshDeformBind *mdb) { LaplacianSystem *sys; @@ -1934,8 +1920,9 @@ static void heat_weighting_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifie mmd->bindweights= mdb->weights; } +#endif -void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) +void mesh_deform_bind(Scene *scene, MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]) { MeshDeformBind mdb; MVert *mvert; @@ -1962,25 +1949,32 @@ void mesh_deform_bind(Scene *scene, DerivedMesh *dm, MeshDeformModifierData *mmd mul_v3_m4v3(mdb.vertexcos[a], mdb.cagemat, vertexcos + a*3); /* solve */ +#if 0 if(mmd->mode == MOD_MDEF_VOLUME) harmonic_coordinates_bind(scene, mmd, &mdb); else heat_weighting_bind(scene, dm, mmd, &mdb); +#else + harmonic_coordinates_bind(scene, mmd, &mdb); +#endif /* assign bind variables */ - mmd->bindcos= (float*)mdb.cagecos; + mmd->bindcagecos= (float*)mdb.cagecos; mmd->totvert= mdb.totvert; mmd->totcagevert= mdb.totcagevert; copy_m4_m4(mmd->bindmat, mmd->object->obmat); - /* transform bindcos to world space */ + /* transform bindcagecos to world space */ for(a=0; a<mdb.totcagevert; a++) - mul_m4_v3(mmd->object->obmat, mmd->bindcos+a*3); + mul_m4_v3(mmd->object->obmat, mmd->bindcagecos+a*3); /* free */ mdb.cagedm->release(mdb.cagedm); MEM_freeN(mdb.vertexcos); + /* compact weights */ + modifier_mdef_compact_influences((ModifierData*)mmd); + end_progress_bar(); waitcursor(0); } diff --git a/source/blender/editors/armature/meshlaplacian.h b/source/blender/editors/armature/meshlaplacian.h index 4e5fbec9c82..640eb33c945 100644 --- a/source/blender/editors/armature/meshlaplacian.h +++ b/source/blender/editors/armature/meshlaplacian.h @@ -78,7 +78,7 @@ void rigid_deform_end(int cancel); /* Harmonic Coordinates */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); diff --git a/source/blender/editors/armature/poseSlide.c b/source/blender/editors/armature/poseSlide.c index 1aa7ea07078..21b99bc10c0 100644 --- a/source/blender/editors/armature/poseSlide.c +++ b/source/blender/editors/armature/poseSlide.c @@ -39,15 +39,10 @@ #include "BLI_dynstr.h" #include "BLI_dlrbTree.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_object_force.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -63,21 +58,15 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "BIF_gl.h" -#include "ED_anim_api.h" #include "ED_armature.h" #include "ED_keyframes_draw.h" -#include "ED_keyframing.h" -#include "ED_keyframes_edit.h" #include "ED_screen.h" #include "armature_intern.h" diff --git a/source/blender/editors/armature/poseUtils.c b/source/blender/editors/armature/poseUtils.c index e2fc2bd4088..c9a80318050 100644 --- a/source/blender/editors/armature/poseUtils.c +++ b/source/blender/editors/armature/poseUtils.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -39,15 +39,10 @@ #include "BLI_dynstr.h" #include "BLI_dlrbTree.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_object_force.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -62,23 +57,15 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" -#include "RNA_types.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "BIF_gl.h" -#include "ED_anim_api.h" #include "ED_armature.h" -#include "ED_keyframes_draw.h" #include "ED_keyframing.h" -#include "ED_keyframes_edit.h" -#include "ED_screen.h" #include "armature_intern.h" @@ -229,27 +216,28 @@ void poseAnim_mapping_autoKeyframe (bContext *C, Scene *scene, Object *ob, ListB /* insert keyframes as necessary if autokeyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; tPChanFCurveLink *pfl; - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; - /* iterate over each pose-channel affected, applying the changes */ for (pfl= pfLinks->first; pfl; pfl= pfl->next) { + ListBase dsources = {NULL, NULL}; bPoseChannel *pchan= pfl->pchan; - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - /* insert keyframes */ + /* add datasource override for the PoseChannel so KeyingSet will do right thing */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, &RNA_PoseBone, pchan); + + /* insert keyframes + * - these keyingsets here use dsources, since we need to specify exactly which keyframes get affected + */ if (pchan->flag & POSE_LOC) - modify_keyframes(scene, &dsources, NULL, ks_loc, MODIFYKEY_MODE_INSERT, cframe); + ANIM_apply_keyingset(C, &dsources, NULL, ks_loc, MODIFYKEY_MODE_INSERT, cframe); if (pchan->flag & POSE_ROT) - modify_keyframes(scene, &dsources, NULL, ks_rot, MODIFYKEY_MODE_INSERT, cframe); + ANIM_apply_keyingset(C, &dsources, NULL, ks_rot, MODIFYKEY_MODE_INSERT, cframe); if (pchan->flag & POSE_SIZE) - modify_keyframes(scene, &dsources, NULL, ks_scale, MODIFYKEY_MODE_INSERT, cframe); + ANIM_apply_keyingset(C, &dsources, NULL, ks_scale, MODIFYKEY_MODE_INSERT, cframe); + + /* free the temp info */ + BLI_freelistN(&dsources); } } } diff --git a/source/blender/editors/armature/poselib.c b/source/blender/editors/armature/poselib.c index 02194035ee9..408a2e1e599 100644 --- a/source/blender/editors/armature/poselib.c +++ b/source/blender/editors/armature/poselib.c @@ -39,15 +39,10 @@ #include "BLI_dynstr.h" #include "BLI_dlrbTree.h" -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_object_force.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BKE_animsys.h" #include "BKE_action.h" @@ -63,7 +58,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "RNA_enum_types.h" #include "WM_api.h" @@ -331,19 +325,14 @@ static int poselib_add_menu_invoke (bContext *C, wmOperator *op, wmEvent *evt) static int poselib_add_exec (bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); bAction *act = poselib_validate(ob); bArmature *arm= (ob) ? ob->data : NULL; bPose *pose= (ob) ? ob->pose : NULL; - bPoseChannel *pchan; TimeMarker *marker; int frame= RNA_int_get(op->ptr, "frame"); char name[64]; - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - /* sanity check (invoke should have checked this anyway) */ if (ELEM3(NULL, ob, arm, pose)) return OPERATOR_CANCELLED; @@ -373,25 +362,12 @@ static int poselib_add_exec (bContext *C, wmOperator *op) /* validate name */ BLI_uniquename(&act->markers, marker, "Pose", '.', offsetof(TimeMarker, name), sizeof(marker->name)); - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; - - /* loop through selected posechannels, keying their pose to the action */ - for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { - /* check if available */ - if ((pchan->bone) && (arm->layer & pchan->bone->layer)) { - if (pchan->bone->flag & BONE_SELECTED || pchan->bone==arm->act_bone) { - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - - /* KeyingSet to use depends on rotation mode (but that's handled by the templates code) */ - if (poselib_ks_locrotscale == NULL) - poselib_ks_locrotscale= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); - modify_keyframes(scene, &dsources, act, poselib_ks_locrotscale, MODIFYKEY_MODE_INSERT, (float)frame); - } - } - } + /* KeyingSet to use depends on rotation mode (but that's handled by the templates code) */ + if (poselib_ks_locrotscale == NULL) + poselib_ks_locrotscale= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + + /* make the keyingset use context info to determine where to add keyframes */ + ANIM_apply_keyingset(C, NULL, act, poselib_ks_locrotscale, MODIFYKEY_MODE_INSERT, (float)frame); /* store new 'active' pose number */ act->active_marker= BLI_countlist(&act->markers); @@ -728,8 +704,8 @@ static void poselib_apply_pose (tPoseLib_PreviewData *pld) bAction *act= pld->act; bActionGroup *agrp; - BeztEditData bed; - BeztEditFunc group_ok_cb; + KeyframeEditData ked; + KeyframeEditFunc group_ok_cb; int frame= 1; /* get the frame */ @@ -741,15 +717,15 @@ static void poselib_apply_pose (tPoseLib_PreviewData *pld) /* init settings for testing groups for keyframes */ group_ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAMERANGE); - memset(&bed, 0, sizeof(BeztEditData)); - bed.f1= ((float)frame) - 0.5f; - bed.f2= ((float)frame) + 0.5f; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.f1= ((float)frame) - 0.5f; + ked.f2= ((float)frame) + 0.5f; /* start applying - only those channels which have a key at this point in time! */ for (agrp= act->groups.first; agrp; agrp= agrp->next) { /* check if group has any keyframes */ - if (ANIM_animchanneldata_keys_bezier_loop(&bed, agrp, ALE_GROUP, NULL, group_ok_cb, NULL, 0)) { + if (ANIM_animchanneldata_keyframes_loop(&ked, agrp, ALE_GROUP, NULL, group_ok_cb, NULL, 0)) { /* has keyframe on this frame, so try to get a PoseChannel with this name */ pchan= get_pose_channel(pose, agrp->name); @@ -784,13 +760,6 @@ static void poselib_keytag_pose (bContext *C, Scene *scene, tPoseLib_PreviewData bAction *act= pld->act; bActionGroup *agrp; - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &pld->ob->id; - /* start tagging/keying */ for (agrp= act->groups.first; agrp; agrp= agrp->next) { /* only for selected action channels */ @@ -798,21 +767,30 @@ static void poselib_keytag_pose (bContext *C, Scene *scene, tPoseLib_PreviewData pchan= get_pose_channel(pose, agrp->name); if (pchan) { - // TODO: use a standard autokeying function in future (to allow autokeying-editkeys to work) - if (IS_AUTOKEY_MODE(scene, NORMAL)) { - /* Set keys on pose - * - KeyingSet to use depends on rotation mode - * (but that's handled by the templates code) + if (autokeyframe_cfra_can_key(scene, &pld->ob->id)) { + ListBase dsources = {NULL, NULL}; + KeyingSet *ks = NULL; + + /* get KeyingSet to use + * - use the active KeyingSet if defined (and user wants to use it for all autokeying), + * or otherwise key transforms only */ - // TODO: for getting the KeyingSet used, we should really check which channels were affected if (poselib_ks_locrotscale == NULL) poselib_ks_locrotscale= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + + if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset)) + ks = ANIM_scene_get_active_keyingset(scene); + else + ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - - /* now insert the keyframe */ - modify_keyframes(scene, &dsources, NULL, poselib_ks_locrotscale, MODIFYKEY_MODE_INSERT, (float)CFRA); + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &pld->ob->id, &RNA_PoseBone, pchan); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); /* clear any unkeyed tags */ if (pchan->bone) @@ -828,7 +806,7 @@ static void poselib_keytag_pose (bContext *C, Scene *scene, tPoseLib_PreviewData } /* send notifiers for this */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } /* Apply the relevant changes to the pose */ @@ -876,7 +854,7 @@ static void poselib_preview_apply (bContext *C, wmOperator *op) /* get search-string */ index= pld->search_cursor; - if (IN_RANGE(index, 0, 64)) { + if (index >= 0 && index <= 64) { memcpy(&tempstr[0], &pld->searchstr[0], index); tempstr[index]= '|'; memcpy(&tempstr[index+1], &pld->searchstr[index], 64-index); diff --git a/source/blender/editors/armature/poseobject.c b/source/blender/editors/armature/poseobject.c index 8f0a4de758e..d0a898b1b61 100644 --- a/source/blender/editors/armature/poseobject.c +++ b/source/blender/editors/armature/poseobject.c @@ -38,18 +38,9 @@ #include "BLI_dynstr.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_curve_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "BKE_anim.h" #include "BKE_idprop.h" @@ -78,22 +69,18 @@ #include "WM_types.h" #include "ED_armature.h" -#include "ED_anim_api.h" #include "ED_keyframing.h" -#include "ED_object.h" #include "ED_mesh.h" #include "ED_screen.h" -#include "ED_transform.h" /* for autokey TFM_TRANSLATION, etc */ -#include "ED_view3d.h" #include "UI_interface.h" #include "armature_intern.h" /* ************* XXX *************** */ -static int pupmenu() {return 0;} -static void error() {}; -static void BIF_undo_push() {} +static int pupmenu(const char *dummy) {return 0;} +static void error(const char *dummy) {}; +static void BIF_undo_push(const char *dummy) {} /* ************* XXX *************** */ /* This function is used to indicate that a bone is selected and needs keyframes inserted */ @@ -277,19 +264,26 @@ void POSE_OT_paths_calculate (wmOperatorType *ot) void ED_pose_clear_paths(Object *ob) { bPoseChannel *pchan; + short skipped = 0; if ELEM(NULL, ob, ob->pose) return; - /* free the motionpath blocks */ + /* free the motionpath blocks, but also take note of whether we skipped some... */ for (pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { - if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) { - if (pchan->mpath) { + if (pchan->mpath) { + if ((pchan->bone) && (pchan->bone->flag & BONE_SELECTED)) { animviz_free_motionpath(pchan->mpath); pchan->mpath= NULL; } + else + skipped = 1; } } + + /* if we didn't skip any, we shouldn't have any paths left */ + if (skipped == 0) + ob->pose->avs.path_bakeflag &= ~MOTIONPATH_BAKE_HAS_PATHS; } /* operator callback for this */ @@ -697,7 +691,7 @@ void pose_copy_menu(Scene *scene) /* copy constraints to tmpbase and apply 'local' tags before * appending to list of constraints for this channel */ - copy_constraints(&tmp_constraints, &pchanact->constraints); + copy_constraints(&tmp_constraints, &pchanact->constraints, TRUE); if ((ob->proxy) && (pchan->bone->layer & arm->layer_protected)) { bConstraint *con; @@ -806,7 +800,7 @@ void pose_copy_menu(Scene *scene) /* copy constraints to tmpbase and apply 'local' tags before * appending to list of constraints for this channel */ - copy_constraints(&tmp_constraints, &const_copy); + copy_constraints(&tmp_constraints, &const_copy, TRUE); if ((ob->proxy) && (pchan->bone->layer & arm->layer_protected)) { bConstraint *con; @@ -842,14 +836,14 @@ void free_posebuf(void) { if (g_posebuf) { bPoseChannel *pchan; - + for (pchan= g_posebuf->chanbase.first; pchan; pchan= pchan->next) { if(pchan->prop) { IDP_FreeProperty(pchan->prop); MEM_freeN(pchan->prop); } } - + /* was copied without constraints */ BLI_freelistN(&g_posebuf->chanbase); MEM_freeN(g_posebuf); @@ -898,12 +892,6 @@ void POSE_OT_copy (wmOperatorType *ot) /* ---- */ -/* Pointers to the builtin KeyingSets that we want to use */ -static KeyingSet *posePaste_ks_locrotscale = NULL; /* the only keyingset we'll need */ - -/* transform.h */ -extern void autokeyframe_pose_cb_func(struct bContext *C, struct Scene *scene, struct View3D *v3d, struct Object *ob, int tmode, short targetless_ik); - static int pose_paste_exec (bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); @@ -912,13 +900,6 @@ static int pose_paste_exec (bContext *C, wmOperator *op) char name[32]; int flip= RNA_boolean_get(op->ptr, "flipped"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; - /* sanity checks */ if ELEM(NULL, ob, ob->pose) return OPERATOR_CANCELLED; @@ -953,6 +934,10 @@ static int pose_paste_exec (bContext *C, wmOperator *op) if (pchan->rotmode > 0) { VECCOPY(pchan->eul, chan->eul); } + else if (pchan->rotmode == ROT_MODE_AXISANGLE) { + VECCOPY(pchan->rotAxis, chan->rotAxis); + pchan->rotAngle = chan->rotAngle; + } else { QUATCOPY(pchan->quat, chan->quat); } @@ -967,14 +952,14 @@ static int pose_paste_exec (bContext *C, wmOperator *op) else if (pchan->rotmode == ROT_MODE_AXISANGLE) { /* quat/euler to axis angle */ if (chan->rotmode > 0) - eulO_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,chan->eul, chan->rotmode); + eulO_to_axis_angle(pchan->rotAxis, &pchan->rotAngle, chan->eul, chan->rotmode); else - quat_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,chan->quat); + quat_to_axis_angle(pchan->rotAxis, &pchan->rotAngle, chan->quat); } else { /* euler/axis-angle to quat */ if (chan->rotmode > 0) - eulO_to_quat( pchan->quat,chan->eul, chan->rotmode); + eulO_to_quat(pchan->quat, chan->eul, chan->rotmode); else axis_angle_to_quat(pchan->quat, chan->rotAxis, pchan->rotAngle); } @@ -991,77 +976,74 @@ static int pose_paste_exec (bContext *C, wmOperator *op) else if (pchan->rotmode == ROT_MODE_AXISANGLE) { float eul[3]; - axis_angle_to_eulO( eul, EULER_ORDER_DEFAULT,pchan->rotAxis, pchan->rotAngle); + axis_angle_to_eulO(eul, EULER_ORDER_DEFAULT, pchan->rotAxis, pchan->rotAngle); eul[1]*= -1; eul[2]*= -1; - eulO_to_axis_angle( pchan->rotAxis, &pchan->rotAngle,eul, EULER_ORDER_DEFAULT); - - // experimental method (uncomment to test): -#if 0 - /* experimental method: just flip the orientation of the axis on x/y axes */ - pchan->quat[1] *= -1; - pchan->quat[2] *= -1; -#endif + eulO_to_axis_angle(pchan->rotAxis, &pchan->rotAngle, eul, EULER_ORDER_DEFAULT); } else { float eul[3]; - quat_to_eul( eul,pchan->quat); + quat_to_eul(eul, pchan->quat); eul[1]*= -1; eul[2]*= -1; - eul_to_quat( pchan->quat,eul); + eul_to_quat(pchan->quat, eul); } } - /* ID property */ - if(pchan->prop) { - IDP_FreeProperty(pchan->prop); - MEM_freeN(pchan->prop); - pchan->prop= NULL; + /* ID properties + * - only free the existing properties if the channel we're copying from has them + * NOTE: this means that if the pose depends on some pchan property, the pose may not be ok, + * but this is better than loosing all the setting you've painstakingly added... + */ + if (chan->prop) { + /* free the old properties since we want to replace them now */ + if (pchan->prop) { + IDP_FreeProperty(pchan->prop); + MEM_freeN(pchan->prop); + pchan->prop= NULL; + } + + /* now copy over the new copy of the properties */ + pchan->prop= IDP_CopyProperty(chan->prop); } - - if(chan->prop) { - pchan->prop= IDP_CopyProperty(chan->prop); + + /* keyframing tagging */ + if (autokeyframe_cfra_can_key(scene, &ob->id)) { + ListBase dsources = {NULL, NULL}; + KeyingSet *ks = NULL; + + /* get KeyingSet to use + * - use the active KeyingSet if defined (and user wants to use it for all autokeying), + * or otherwise key transforms only + */ + if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (scene->active_keyingset)) + ks = ANIM_scene_get_active_keyingset(scene); + else + ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); + + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, &RNA_PoseBone, pchan); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); + + /* clear any unkeyed tags */ + if (chan->bone) + chan->bone->flag &= ~BONE_UNKEYED; } - - /* auto key, TODO, fix up this INSERTAVAIL vs all other cases */ - if (IS_AUTOKEY_FLAG(INSERTAVAIL) == 0) { /* deal with this case later */ - if (autokeyframe_cfra_can_key(scene, &ob->id)) { - - /* Set keys on pose - * - KeyingSet to use depends on rotation mode - * (but that's handled by the templates code) - */ - // TODO: for getting the KeyingSet used, we should really check which channels were affected - if (posePaste_ks_locrotscale == NULL) - posePaste_ks_locrotscale= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - - modify_keyframes(scene, &dsources, NULL, posePaste_ks_locrotscale, MODIFYKEY_MODE_INSERT, (float)CFRA); - - /* clear any unkeyed tags */ - if (chan->bone) - chan->bone->flag &= ~BONE_UNKEYED; - } - else { - /* add unkeyed tags */ - if (chan->bone) - chan->bone->flag |= BONE_UNKEYED; - } + else { + /* add unkeyed tags */ + if (chan->bone) + chan->bone->flag |= BONE_UNKEYED; } } } } - - if (IS_AUTOKEY_FLAG(INSERTAVAIL)) { - View3D *v3d= CTX_wm_view3d(C); - autokeyframe_pose_cb_func(C, scene, v3d, ob, TFM_TRANSLATION, 0); - autokeyframe_pose_cb_func(C, scene, v3d, ob, TFM_ROTATION, 0); - autokeyframe_pose_cb_func(C, scene, v3d, ob, TFM_TIME_SCALE, 0); - } - + /* Update event for pose and deformation children */ DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -1070,13 +1052,13 @@ static int pose_paste_exec (bContext *C, wmOperator *op) } else { /* need to trick depgraph, action is not allowed to execute on pose */ + // XXX: this is probably not an issue anymore where_is_pose(scene, ob); ob->recalc= 0; } /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); // XXX not really needed, but here for completeness... return OPERATOR_FINISHED; } @@ -1265,8 +1247,8 @@ static int pose_group_assign_exec (bContext *C, wmOperator *op) pose_add_group(ob); /* add selected bones to group then */ - // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { pchan->agrp_index= pose->active_group; done= 1; } @@ -1308,7 +1290,6 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) Object *ob; bArmature *arm; bPose *pose; - bPoseChannel *pchan; short done= 0; /* since this call may also be used from the buttons window, we need to check for where to get the object */ @@ -1324,20 +1305,14 @@ static int pose_group_unassign_exec (bContext *C, wmOperator *op) arm= ob->data; /* find selected bones to remove from all bone groups */ - // NOTE: unfortunately, we cannot use the context-iterators here, since they might not be defined... - // CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) - for (pchan= pose->chanbase.first; pchan; pchan= pchan->next) { - /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ - // NOTE: sync this view3d_context() in space_view3d.c - if ((pchan->bone) && (arm->layer & pchan->bone->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { - if ((pchan->bone->flag & BONE_SELECTED) || (pchan->bone == arm->act_bone)) { - if (pchan->agrp_index) { - pchan->agrp_index= 0; - done= 1; - } - } + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) + { + if (pchan->agrp_index) { + pchan->agrp_index= 0; + done= 1; } } + CTX_DATA_END; /* notifiers for updates */ WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); @@ -1364,6 +1339,102 @@ void POSE_OT_group_unassign (wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; } +static void pose_group_select(bContext *C, Object *ob, int select) +{ + bPose *pose= ob->pose; + + CTX_DATA_BEGIN(C, bPoseChannel*, pchan, visible_pose_bones) + { + if ((pchan->bone->flag & BONE_UNSELECTABLE)==0) { + if (select) { + if (pchan->agrp_index == pose->active_group) + pchan->bone->flag |= BONE_SELECTED; + } + else { + if (pchan->agrp_index == pose->active_group) + pchan->bone->flag &= ~BONE_SELECTED; + } + } + } + CTX_DATA_END; +} + +static int pose_group_select_exec (bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + Object *ob; + + /* since this call may also be used from the buttons window, we need to check for where to get the object */ + if (sa->spacetype == SPACE_BUTS) + ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + else + ob= CTX_data_active_object(C); + + /* only continue if there's an object, and a pose there too */ + if (ELEM(NULL, ob, ob->pose)) + return OPERATOR_CANCELLED; + + pose_group_select(C, ob, 1); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + + return OPERATOR_FINISHED; +} + +void POSE_OT_group_select (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Select Bones of Bone Group"; + ot->idname= "POSE_OT_group_select"; + ot->description= "Select bones in active Bone Group"; + + /* api callbacks */ + ot->exec= pose_group_select_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int pose_group_deselect_exec (bContext *C, wmOperator *op) +{ + ScrArea *sa= CTX_wm_area(C); + Object *ob; + + /* since this call may also be used from the buttons window, we need to check for where to get the object */ + if (sa->spacetype == SPACE_BUTS) + ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + else + ob= CTX_data_active_object(C); + + /* only continue if there's an object, and a pose there too */ + if (ELEM(NULL, ob, ob->pose)) + return OPERATOR_CANCELLED; + + pose_group_select(C, ob, 0); + + /* notifiers for updates */ + WM_event_add_notifier(C, NC_OBJECT|ND_POSE, ob); + + return OPERATOR_FINISHED; +} + +void POSE_OT_group_deselect (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Deselecte Bone Group"; + ot->idname= "POSE_OT_group_deselect"; + ot->description= "Deselect bones of active Bone Group"; + + /* api callbacks */ + ot->exec= pose_group_deselect_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + /* ********************************************** */ static int pose_flip_names_exec (bContext *C, wmOperator *op) @@ -1428,8 +1499,8 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) { BLI_strncpy(newname, pchan->name, sizeof(newname)); - bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis]); - ED_armature_bone_rename(arm, pchan->name, newname); + if(bone_autoside_name(newname, 1, axis, pchan->bone->head[axis], pchan->bone->tail[axis])) + ED_armature_bone_rename(arm, pchan->name, newname); } CTX_DATA_END; @@ -1445,7 +1516,7 @@ static int pose_autoside_names_exec (bContext *C, wmOperator *op) void POSE_OT_autoside_names (wmOperatorType *ot) { static EnumPropertyItem axis_items[]= { - {0, "XAXIS", 0, "X-Axis", "Left/Right"}, + {0, "XAXIS", 0, "X-Axis", "Left/Right"}, {1, "YAXIS", 0, "Y-Axis", "Front/Back"}, {2, "ZAXIS", 0, "Z-Axis", "Top/Bottom"}, {0, NULL, 0, NULL, NULL}}; @@ -1477,7 +1548,7 @@ void pose_activate_flipped_bone(Scene *scene) if(ob==NULL) return; - if(ob->mode && OB_MODE_WEIGHT_PAINT) { + if(ob->mode & OB_MODE_WEIGHT_PAINT) { ob= modifiers_isDeformedByArmature(ob); } if(ob && (ob->mode & OB_MODE_POSE)) { @@ -1747,13 +1818,7 @@ static int pose_flip_quats_exec (bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_active_object(C); - - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; + KeyingSet *ks = ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); /* loop through all selected pchans, flipping and keying (as needed) */ CTX_DATA_BEGIN(C, bPoseChannel*, pchan, selected_pose_bones) @@ -1766,20 +1831,18 @@ static int pose_flip_quats_exec (bContext *C, wmOperator *op) pchan->quat[2]= -pchan->quat[2]; pchan->quat[3]= -pchan->quat[3]; - /* perform auto-keying - * NOTE: paths don't need recalculation here, since the orientations shouldn't have changed - */ + /* tagging */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* Set keys on pose - * - KeyingSet to use depends on rotation mode - * (but that's handled by the templates code) - */ - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; + ListBase dsources = {NULL, NULL}; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, &RNA_PoseBone, pchan); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); /* clear any unkeyed tags */ if (pchan->bone) diff --git a/source/blender/editors/armature/reeb.c b/source/blender/editors/armature/reeb.c index 59a8744f305..02e96bcf70a 100644 --- a/source/blender/editors/armature/reeb.c +++ b/source/blender/editors/armature/reeb.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,14 +31,9 @@ #include <stdlib.h> // for qsort #include <float.h> -#include "PIL_time.h" -#include "DNA_listBase.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" #include "DNA_object_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_armature_types.h" #include "BKE_context.h" @@ -53,13 +48,10 @@ //#include "BDR_editobject.h" -#include "ED_mesh.h" -#include "ED_armature.h" //#include "BIF_interface.h" //#include "BIF_toolbox.h" //#include "BIF_graphics.h" #include "BIF_gl.h" -#include "UI_resources.h" #include "BKE_global.h" #include "BKE_utildefines.h" @@ -357,7 +349,7 @@ ReebArc * copyArc(ReebGraph *rg, ReebArc *arc) memcpy(cp_arc->buckets, arc->buckets, sizeof(EmbedBucket) * cp_arc->bcount); /* copy faces map */ - cp_arc->faces = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + cp_arc->faces = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "copyArc gh"); mergeArcFaces(rg, cp_arc, arc); /* find corresponding head and tail */ @@ -500,11 +492,11 @@ void repositionNodes(ReebGraph *rg) VECCOPY(p, ((ReebArc*)arc)->buckets[0].p); mul_v3_fl(p, 1.0f / arc->head->degree); - add_v3_v3v3(arc->head->p, arc->head->p, p); + add_v3_v3(arc->head->p, p); VECCOPY(p, ((ReebArc*)arc)->buckets[((ReebArc*)arc)->bcount - 1].p); mul_v3_fl(p, 1.0f / arc->tail->degree); - add_v3_v3v3(arc->tail->p, arc->tail->p, p); + add_v3_v3(arc->tail->p, p); } } } @@ -641,7 +633,7 @@ void addVertToBucket(EmbedBucket *b, float co[3]) void removeVertFromBucket(EmbedBucket *b, float co[3]) { mul_v3_fl(b->p, (float)b->nv); - sub_v3_v3v3(b->p, b->p, co); + sub_v3_v3(b->p, co); b->nv--; mul_v3_fl(b->p, 1.0f / (float)b->nv); } @@ -1112,7 +1104,7 @@ void REEB_AxialSymmetry(BNode* root_node, BNode* node1, BNode* node2, struct BAr BLI_mirrorAlongAxis(p, root_node->p, nor); /* average with node1 */ - add_v3_v3v3(node1->p, node1->p, p); + add_v3_v3(node1->p, p); mul_v3_fl(node1->p, 0.5f); /* mirror back on node2 */ @@ -1830,7 +1822,7 @@ int filterSmartReebGraph(ReebGraph *rg, float threshold) efa->tmp.fp = saacos(fabs(angle)); #endif #else - add_v3_v3v3(avg_vec, avg_vec, efa->n); + add_v3_v3(avg_vec, efa->n); #endif } @@ -2449,7 +2441,7 @@ ReebEdge * createArc(ReebGraph *rg, ReebNode *node1, ReebNode *node2) arc->flag = 0; // clear flag on init arc->symmetry_level = 0; - arc->faces = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + arc->faces = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "createArc gh"); if (node1->weight <= node2->weight) { diff --git a/source/blender/editors/armature/reeb.h b/source/blender/editors/armature/reeb.h index a4fc74bdd0d..3bebc423235 100644 --- a/source/blender/editors/armature/reeb.h +++ b/source/blender/editors/armature/reeb.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/curve/CMakeLists.txt b/source/blender/editors/curve/CMakeLists.txt new file mode 100644 index 00000000000..ab45d73a2de --- /dev/null +++ b/source/blender/editors/curve/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/guardedalloc +) + +BLENDERLIB(bf_editor_curve "${SRC}" "${INC}") diff --git a/source/blender/editors/curve/curve_intern.h b/source/blender/editors/curve/curve_intern.h index a9a9b5619ff..10c1bd84262 100644 --- a/source/blender/editors/curve/curve_intern.h +++ b/source/blender/editors/curve/curve_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -33,13 +33,13 @@ struct wmOperatorType; /* lorem.c */ -char *ED_lorem; +extern char *ED_lorem; /* editfont.c */ enum { DEL_ALL, DEL_NEXT_CHAR, DEL_PREV_CHAR, DEL_SELECTION, DEL_NEXT_SEL, DEL_PREV_SEL }; enum { CASE_LOWER, CASE_UPPER }; enum { LINE_BEGIN, LINE_END, PREV_CHAR, NEXT_CHAR, PREV_WORD, NEXT_WORD, - PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE }; + PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE }; void FONT_OT_text_insert(struct wmOperatorType *ot); void FONT_OT_line_break(struct wmOperatorType *ot); @@ -66,6 +66,9 @@ void FONT_OT_change_spacing(struct wmOperatorType *ot); void FONT_OT_open(struct wmOperatorType *ot); void FONT_OT_unlink(struct wmOperatorType *ot); +void FONT_OT_textbox_add(struct wmOperatorType *ot); +void FONT_OT_textbox_remove(struct wmOperatorType *ot); + /* editcurve.c */ void CURVE_OT_hide(struct wmOperatorType *ot); void CURVE_OT_reveal(struct wmOperatorType *ot); @@ -85,6 +88,19 @@ void CURVE_OT_tilt_clear(struct wmOperatorType *ot); void CURVE_OT_smooth(struct wmOperatorType *ot); void CURVE_OT_smooth_radius(struct wmOperatorType *ot); +void CURVE_OT_primitive_bezier_curve_add(struct wmOperatorType *ot); +void CURVE_OT_primitive_bezier_circle_add(struct wmOperatorType *ot); +void CURVE_OT_primitive_nurbs_curve_add(struct wmOperatorType *ot); +void CURVE_OT_primitive_nurbs_circle_add(struct wmOperatorType *ot); +void CURVE_OT_primitive_nurbs_path_add(struct wmOperatorType *ot); + +void SURFACE_OT_primitive_nurbs_surface_curve_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_circle_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_surface_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_tube_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_sphere_add(struct wmOperatorType *ot); +void SURFACE_OT_primitive_nurbs_surface_donut_add(struct wmOperatorType *ot); + void CURVE_OT_de_select_first(struct wmOperatorType *ot); void CURVE_OT_de_select_last(struct wmOperatorType *ot); void CURVE_OT_select_all(struct wmOperatorType *ot); @@ -96,7 +112,7 @@ void CURVE_OT_select_previous(struct wmOperatorType *ot); void CURVE_OT_select_more(struct wmOperatorType *ot); void CURVE_OT_select_less(struct wmOperatorType *ot); void CURVE_OT_select_random(struct wmOperatorType *ot); -void CURVE_OT_select_every_nth(struct wmOperatorType *ot); +void CURVE_OT_select_nth(struct wmOperatorType *ot); void CURVE_OT_switch_direction(struct wmOperatorType *ot); void CURVE_OT_subdivide(struct wmOperatorType *ot); diff --git a/source/blender/editors/curve/curve_ops.c b/source/blender/editors/curve/curve_ops.c index e672e7148b8..8f826d318b6 100644 --- a/source/blender/editors/curve/curve_ops.c +++ b/source/blender/editors/curve/curve_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,13 +32,6 @@ #include "MEM_guardedalloc.h" #include "DNA_curve_types.h" -#include "DNA_object_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -48,7 +41,6 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" @@ -57,7 +49,6 @@ #include "ED_screen.h" #include "ED_transform.h" -#include "UI_interface.h" #include "curve_intern.h" @@ -90,6 +81,9 @@ void ED_operatortypes_curve(void) WM_operatortype_append(FONT_OT_open); WM_operatortype_append(FONT_OT_unlink); + + WM_operatortype_append(FONT_OT_textbox_add); + WM_operatortype_append(FONT_OT_textbox_remove); WM_operatortype_append(CURVE_OT_hide); WM_operatortype_append(CURVE_OT_reveal); @@ -105,7 +99,20 @@ void ED_operatortypes_curve(void) WM_operatortype_append(CURVE_OT_shade_smooth); WM_operatortype_append(CURVE_OT_shade_flat); WM_operatortype_append(CURVE_OT_tilt_clear); - + + WM_operatortype_append(CURVE_OT_primitive_bezier_curve_add); + WM_operatortype_append(CURVE_OT_primitive_bezier_circle_add); + WM_operatortype_append(CURVE_OT_primitive_nurbs_curve_add); + WM_operatortype_append(CURVE_OT_primitive_nurbs_circle_add); + WM_operatortype_append(CURVE_OT_primitive_nurbs_path_add); + + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_curve_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_circle_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_surface_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_tube_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_sphere_add); + WM_operatortype_append(SURFACE_OT_primitive_nurbs_surface_donut_add); + WM_operatortype_append(CURVE_OT_smooth); WM_operatortype_append(CURVE_OT_smooth_radius); @@ -120,7 +127,7 @@ void ED_operatortypes_curve(void) WM_operatortype_append(CURVE_OT_select_more); WM_operatortype_append(CURVE_OT_select_less); WM_operatortype_append(CURVE_OT_select_random); - WM_operatortype_append(CURVE_OT_select_every_nth); + WM_operatortype_append(CURVE_OT_select_nth); WM_operatortype_append(CURVE_OT_switch_direction); WM_operatortype_append(CURVE_OT_subdivide); @@ -140,9 +147,10 @@ void ED_keymap_curve(wmKeyConfig *keyconf) keymap->poll= ED_operator_editfont; /* only set in editmode font, by space_view3d listener */ - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_BOLD); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_ITALIC); - RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", UKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_UNDERLINE); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", BKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_BOLD); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_ITALIC); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", UKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_UNDERLINE); + RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_style_toggle", PKEY, KM_PRESS, KM_CTRL, 0)->ptr, "style", CU_CHINFO_SMALLCAPS); RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", DELKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_NEXT_SEL); RNA_enum_set(WM_keymap_add_item(keymap, "FONT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0)->ptr, "type", DEL_PREV_SEL); @@ -188,8 +196,8 @@ void ED_keymap_curve(wmKeyConfig *keyconf) /* only set in editmode curve, by space_view3d listener */ keymap= WM_keymap_find(keyconf, "Curve", 0, 0); keymap->poll= ED_operator_editsurfcurve; - - WM_keymap_add_item(keymap, "OBJECT_OT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); + + WM_keymap_add_menu(keymap, "INFO_MT_curve_add", AKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "CURVE_OT_vertex_add", LEFTMOUSE, KM_CLICK, KM_CTRL, 0); WM_keymap_add_item(keymap, "CURVE_OT_select_all", AKEY, KM_PRESS, 0, 0); @@ -203,9 +211,10 @@ void ED_keymap_curve(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CURVE_OT_extrude", EKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "CURVE_OT_make_segment", FKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "CURVE_OT_cyclic_toggle", CKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_cyclic_toggle", CKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "CURVE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "CURVE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "CURVE_OT_tilt_clear", TKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "TRANSFORM_OT_tilt", TKEY, KM_PRESS, KM_CTRL, 0); @@ -225,6 +234,6 @@ void ED_keymap_curve(wmKeyConfig *keyconf) /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); - ED_object_generic_keymap(keyconf, keymap, TRUE); + ED_object_generic_keymap(keyconf, keymap, 2); } diff --git a/source/blender/editors/curve/editcurve.c b/source/blender/editors/curve/editcurve.c index 2d68d19c589..90bec418e0e 100644 --- a/source/blender/editors/curve/editcurve.c +++ b/source/blender/editors/curve/editcurve.c @@ -43,15 +43,9 @@ #include "BLI_dynstr.h" #include "BLI_rand.h" -#include "DNA_curve_types.h" #include "DNA_key_types.h" -#include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_curve.h" @@ -68,8 +62,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_anim_api.h" -#include "ED_curve.h" #include "ED_keyframes_edit.h" #include "ED_object.h" #include "ED_screen.h" @@ -83,6 +75,12 @@ #include "RNA_access.h" #include "RNA_define.h" +/* Undo stuff */ +typedef struct { + ListBase nubase; + void *lastsel; +} UndoCurve; + void selectend_nurb(Object *obedit, short selfirst, short doswap, short selstatus); static void select_adjacent_cp(ListBase *editnurb, short next, short cont, short selstatus); @@ -332,7 +330,7 @@ void make_editNurb(Object *obedit) editnurb= cu->editnurb= MEM_callocN(sizeof(ListBase), "editnurb"); nu= cu->nurb.first; - cu->lastselbp= NULL; /* for select row */ + cu->lastsel= NULL; /* for select row */ while(nu) { newnu= duplicateNurb(nu); @@ -397,6 +395,8 @@ void CU_select_swap(Object *obedit) BezTriple *bezt; int a; + cu->lastsel= NULL; + for(nu= editnurb->first; nu; nu= nu->next) { if(nu->type == CU_BEZIER) { bezt= nu->bezt; @@ -504,8 +504,8 @@ void CURVE_OT_separate(wmOperatorType *ot) static short isNurbselUV(Nurb *nu, int *u, int *v, int flag) { /* return u!=-1: 1 row in u-direction selected. U has value between 0-pntsv - * return v!=-1: 1 collumn in v-direction selected. V has value between 0-pntsu - */ + * return v!=-1: 1 collumn in v-direction selected. V has value between 0-pntsu + */ BPoint *bp; int a, b, sel; @@ -610,9 +610,9 @@ static void translateflagNurb(ListBase *editnurb, short flag, float *vec) a= nu->pntsu; bezt= nu->bezt; while(a--) { - if(bezt->f1 & flag) add_v3_v3v3(bezt->vec[0], bezt->vec[0], vec); - if(bezt->f2 & flag) add_v3_v3v3(bezt->vec[1], bezt->vec[1], vec); - if(bezt->f3 & flag) add_v3_v3v3(bezt->vec[2], bezt->vec[2], vec); + if(bezt->f1 & flag) add_v3_v3(bezt->vec[0], vec); + if(bezt->f2 & flag) add_v3_v3(bezt->vec[1], vec); + if(bezt->f3 & flag) add_v3_v3(bezt->vec[2], vec); bezt++; } } @@ -620,7 +620,7 @@ static void translateflagNurb(ListBase *editnurb, short flag, float *vec) a= nu->pntsu*nu->pntsv; bp= nu->bp; while(a--) { - if(bp->f1 & flag) add_v3_v3v3(bp->vec, bp->vec, vec); + if(bp->f1 & flag) add_v3_v3(bp->vec, vec); bp++; } } @@ -662,7 +662,7 @@ static int deleteflagNurb(bContext *C, wmOperator *op, int flag) if(obedit && obedit->type==OB_SURF); else return OPERATOR_CANCELLED; - cu->lastselbp= NULL; + cu->lastsel= NULL; nu= editnurb->first; while(nu) { @@ -895,9 +895,12 @@ static void adduplicateflagNurb(Object *obedit, short flag) Nurb *nu, *newnu; BezTriple *bezt, *bezt1; BPoint *bp, *bp1; + Curve *cu= (Curve*)obedit->data; int a, b, starta, enda, newu, newv; char *usel; + cu->lastsel= NULL; + nu= editnurb->last; while(nu) { if(nu->type == CU_BEZIER) { @@ -929,9 +932,9 @@ static void adduplicateflagNurb(Object *obedit, short flag) bezt1++; } - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { if(starta!=0 || enda!=nu->pntsu-1) { - newnu->flagu &= ~CU_CYCLIC; + newnu->flagu &= ~CU_NURB_CYCLIC; } } } @@ -966,9 +969,9 @@ static void adduplicateflagNurb(Object *obedit, short flag) bp1++; } - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { if(starta!=0 || enda!=nu->pntsu-1) { - newnu->flagu &= ~CU_CYCLIC; + newnu->flagu &= ~CU_NURB_CYCLIC; } } @@ -1507,11 +1510,15 @@ void selectend_nurb(Object *obedit, short selfirst, short doswap, short selstatu Nurb *nu; BPoint *bp; BezTriple *bezt; + Curve *cu; int a; short sel; - + if(obedit==0) return; - + + cu= (Curve*)obedit->data; + cu->lastsel= NULL; + for(nu= editnurb->first; nu; nu= nu->next) { sel= 0; if(nu->type == CU_BEZIER) { @@ -1827,6 +1834,8 @@ static int select_inverse_exec(bContext *C, wmOperator *op) BezTriple *bezt; int a; + cu->lastsel= NULL; + for(nu= editnurb->first; nu; nu= nu->next) { if(nu->type == CU_BEZIER) { bezt= nu->bezt; @@ -1882,29 +1891,29 @@ void CURVE_OT_select_inverse(wmOperatorType *ot) * @param None */ -static int subdivide_exec(bContext *C, wmOperator *op) +static void subdividenurb(Object *obedit, int number_cuts) { - Object *obedit= CTX_data_edit_object(C); Curve *cu= obedit->data; ListBase *editnurb= curve_get_editcurve(obedit); Nurb *nu; BezTriple *prevbezt, *bezt, *beztnew, *beztn; BPoint *bp, *prevbp, *bpnew, *bpn; float vec[15]; - int a, b, sel, amount, *usel, *vsel; + int a, b, sel, amount, *usel, *vsel, i; + float factor; // printf("*** subdivideNurb: entering subdivide\n"); for(nu= editnurb->first; nu; nu= nu->next) { amount= 0; if(nu->type == CU_BEZIER) { - /* - Insert a point into a 2D Bezier curve. - Endpoints are preserved. Otherwise, all selected and inserted points are - newly created. Old points are discarded. - */ + /* + Insert a point into a 2D Bezier curve. + Endpoints are preserved. Otherwise, all selected and inserted points are + newly created. Old points are discarded. + */ /* count */ - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { a= nu->pntsu; bezt= nu->bezt; prevbezt= bezt+(a-1); @@ -1915,7 +1924,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) bezt= prevbezt+1; } while(a--) { - if( BEZSELECTED_HIDDENHANDLES(cu, prevbezt) && BEZSELECTED_HIDDENHANDLES(cu, bezt) ) amount++; + if( BEZSELECTED_HIDDENHANDLES(cu, prevbezt) && BEZSELECTED_HIDDENHANDLES(cu, bezt) ) amount+=number_cuts; prevbezt= bezt; bezt++; } @@ -1925,7 +1934,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) beztnew = (BezTriple*)MEM_mallocN((amount + nu->pntsu) * sizeof(BezTriple), "subdivNurb"); beztn= beztnew; - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { a= nu->pntsu; bezt= nu->bezt; prevbezt= bezt+(a-1); @@ -1940,37 +1949,46 @@ static int subdivide_exec(bContext *C, wmOperator *op) beztn++; if( BEZSELECTED_HIDDENHANDLES(cu, prevbezt) && BEZSELECTED_HIDDENHANDLES(cu, bezt) ) { - memcpy(beztn, bezt, sizeof(BezTriple)); - - /* midpoint subdividing */ - mid_v3_v3v3(vec, prevbezt->vec[1], prevbezt->vec[2]); - mid_v3_v3v3(vec+3, prevbezt->vec[2], bezt->vec[0]); - mid_v3_v3v3(vec+6, bezt->vec[0], bezt->vec[1]); - - mid_v3_v3v3(vec+9, vec, vec+3); - mid_v3_v3v3(vec+12, vec+3, vec+6); - - /* change handle of prev beztn */ - VECCOPY((beztn-1)->vec[2], vec); - /* new point */ - VECCOPY(beztn->vec[0], vec+9); - mid_v3_v3v3(beztn->vec[1], vec+9, vec+12); - VECCOPY(beztn->vec[2], vec+12); - /* handle of next bezt */ - if(a==0 && (nu->flagu & CU_CYCLIC)) {VECCOPY(beztnew->vec[0], vec+6);} - else {VECCOPY(bezt->vec[0], vec+6);} - - beztn->radius = (prevbezt->radius + bezt->radius)/2.0f; - beztn->weight = (prevbezt->weight + bezt->weight)/2.0f; - - beztn++; + float prevvec[3][3]; + + memcpy(prevvec, prevbezt->vec, sizeof(float) * 9); + + for (i = 0; i < number_cuts; i++) { + factor = 1.0f / (number_cuts + 1 - i); + + memcpy(beztn, bezt, sizeof(BezTriple)); + + /* midpoint subdividing */ + interp_v3_v3v3(vec, prevvec[1], prevvec[2], factor); + interp_v3_v3v3(vec+3, prevvec[2], bezt->vec[0], factor); + interp_v3_v3v3(vec+6, bezt->vec[0], bezt->vec[1], factor); + + interp_v3_v3v3(vec+9, vec, vec+3, factor); + interp_v3_v3v3(vec+12, vec+3, vec+6, factor); + + /* change handle of prev beztn */ + VECCOPY((beztn-1)->vec[2], vec); + /* new point */ + VECCOPY(beztn->vec[0], vec+9); + interp_v3_v3v3(beztn->vec[1], vec+9, vec+12, factor); + VECCOPY(beztn->vec[2], vec+12); + /* handle of next bezt */ + if(a==0 && i == number_cuts - 1 && (nu->flagu & CU_NURB_CYCLIC)) {VECCOPY(beztnew->vec[0], vec+6);} + else {VECCOPY(bezt->vec[0], vec+6);} + + beztn->radius = (prevbezt->radius + bezt->radius)/2; + beztn->weight = (prevbezt->weight + bezt->weight)/2; + + memcpy(prevvec, beztn->vec, sizeof(float) * 9); + beztn++; + } } prevbezt= bezt; bezt++; } /* last point */ - if((nu->flagu & CU_CYCLIC)==0) memcpy(beztn, prevbezt, sizeof(BezTriple)); + if((nu->flagu & CU_NURB_CYCLIC)==0) memcpy(beztn, prevbezt, sizeof(BezTriple)); MEM_freeN(nu->bezt); nu->bezt= beztnew; @@ -1980,14 +1998,14 @@ static int subdivide_exec(bContext *C, wmOperator *op) } } /* End of 'if(nu->type == CU_BEZIER)' */ else if (nu->pntsv==1) { - /* - All flat lines (ie. co-planar), except flat Nurbs. Flat NURB curves - are handled together with the regular NURB plane division, as it - should be. I split it off just now, let's see if it is - stable... nzc 30-5-'00 - */ + /* + All flat lines (ie. co-planar), except flat Nurbs. Flat NURB curves + are handled together with the regular NURB plane division, as it + should be. I split it off just now, let's see if it is + stable... nzc 30-5-'00 + */ /* count */ - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { a= nu->pntsu; bp= nu->bp; prevbp= bp+(a-1); @@ -1998,7 +2016,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) bp= prevbp+1; } while(a--) { - if( (bp->f1 & SELECT) && (prevbp->f1 & SELECT) ) amount++; + if( (bp->f1 & SELECT) && (prevbp->f1 & SELECT) ) amount+=number_cuts; prevbp= bp; bp++; } @@ -2009,7 +2027,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) (BPoint*)MEM_mallocN((amount + nu->pntsu) * sizeof(BPoint), "subdivNurb2"); bpn= bpnew; - if(nu->flagu & CU_CYCLIC) { + if(nu->flagu & CU_NURB_CYCLIC) { a= nu->pntsu; bp= nu->bp; prevbp= bp+(a-1); @@ -2024,19 +2042,20 @@ static int subdivide_exec(bContext *C, wmOperator *op) bpn++; if( (bp->f1 & SELECT) && (prevbp->f1 & SELECT) ) { - // printf("*** subdivideNurb: insert 'linear' point\n"); - memcpy(bpn, bp, sizeof(BPoint)); - bpn->vec[0]= (prevbp->vec[0]+bp->vec[0])/2.0; - bpn->vec[1]= (prevbp->vec[1]+bp->vec[1])/2.0; - bpn->vec[2]= (prevbp->vec[2]+bp->vec[2])/2.0; - bpn->vec[3]= (prevbp->vec[3]+bp->vec[3])/2.0; - bpn++; + // printf("*** subdivideNurb: insert 'linear' point\n"); + for (i = 0; i < number_cuts; i++) { + factor = (float)(i + 1) / (number_cuts + 1); + + memcpy(bpn, bp, sizeof(BPoint)); + interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor); + bpn++; + } } prevbp= bp; bp++; } - if((nu->flagu & CU_CYCLIC)==0) memcpy(bpn, prevbp, sizeof(BPoint)); /* last point */ + if((nu->flagu & CU_NURB_CYCLIC)==0) memcpy(bpn, prevbp, sizeof(BPoint)); /* last point */ MEM_freeN(nu->bp); nu->bp= bpnew; @@ -2048,54 +2067,54 @@ static int subdivide_exec(bContext *C, wmOperator *op) } } /* End of 'else if(nu->pntsv==1)' */ else if(nu->type == CU_NURBS) { - /* This is a very strange test ... */ - /** - Subdivide NURB surfaces - nzc 30-5-'00 - + /* This is a very strange test ... */ + /** + Subdivide NURB surfaces - nzc 30-5-'00 - - Subdivision of a NURB curve can be effected by adding a - control point (insertion of a knot), or by raising the - degree of the functions used to build the NURB. The - expression - - degree = #knots - #controlpoints + 1 (J Walter piece) - degree = #knots - #controlpoints (Blender - implementation) - ( this is confusing.... what is true? Another concern - is that the JW piece allows the curve to become - explicitly 1st order derivative discontinuous, while - this is not what we want here... ) - - is an invariant for a single NURB curve. Raising the degree - of the NURB is done elsewhere; the degree is assumed - constant during this opration. Degree is a property shared - by all controlpoints in a curve (even though it is stored - per control point - this can be misleading). - Adding a knot is done by searching for the place in the - knot vector where a certain knot value must be inserted, or - by picking an appropriate knot value between two existing - ones. The number of controlpoints that is influenced by the - insertion depends on the order of the curve. A certain - minimum number of knots is needed to form high-order - curves, as can be seen from the equation above. In Blender, - currently NURBs may be up to 6th order, so we modify at - most 6 points. One point is added. For an n-degree curve, - n points are discarded, and n+1 points inserted - (so effectively, n points are modified). (that holds for - the JW piece, but it seems not for our NURBs) - In practice, the knot spacing is copied, but the tail - (the points following the insertion point) need to be - offset to keep the knot series ascending. The knot series - is always a series of monotonically ascending integers in - Blender. When not enough control points are available to - fit the order, duplicates of the endpoints are added as - needed. - */ + Subdivision of a NURB curve can be effected by adding a + control point (insertion of a knot), or by raising the + degree of the functions used to build the NURB. The + expression + + degree = #knots - #controlpoints + 1 (J Walter piece) + degree = #knots - #controlpoints (Blender + implementation) + ( this is confusing.... what is true? Another concern + is that the JW piece allows the curve to become + explicitly 1st order derivative discontinuous, while + this is not what we want here... ) + + is an invariant for a single NURB curve. Raising the degree + of the NURB is done elsewhere; the degree is assumed + constant during this opration. Degree is a property shared + by all controlpoints in a curve (even though it is stored + per control point - this can be misleading). + Adding a knot is done by searching for the place in the + knot vector where a certain knot value must be inserted, or + by picking an appropriate knot value between two existing + ones. The number of controlpoints that is influenced by the + insertion depends on the order of the curve. A certain + minimum number of knots is needed to form high-order + curves, as can be seen from the equation above. In Blender, + currently NURBs may be up to 6th order, so we modify at + most 6 points. One point is added. For an n-degree curve, + n points are discarded, and n+1 points inserted + (so effectively, n points are modified). (that holds for + the JW piece, but it seems not for our NURBs) + In practice, the knot spacing is copied, but the tail + (the points following the insertion point) need to be + offset to keep the knot series ascending. The knot series + is always a series of monotonically ascending integers in + Blender. When not enough control points are available to + fit the order, duplicates of the endpoints are added as + needed. + */ /* selection-arrays */ usel= MEM_callocN(sizeof(int)*nu->pntsu, "subivideNurb3"); vsel= MEM_callocN(sizeof(int)*nu->pntsv, "subivideNurb3"); sel= 0; - /* Count the number of selected points. */ + /* Count the number of selected points. */ bp= nu->bp; for(a=0; a<nu->pntsv; a++) { for(b=0; b<nu->pntsu; b++) { @@ -2108,9 +2127,16 @@ static int subdivide_exec(bContext *C, wmOperator *op) } } if( sel == (nu->pntsu*nu->pntsv) ) { /* subdivide entire nurb */ - /* Global subdivision is a special case of partial - subdivision. Strange it is considered separately... */ - bpn=bpnew= MEM_mallocN( (2*nu->pntsu-1)*(2*nu->pntsv-1)*sizeof(BPoint), "subdivideNurb4"); + /* Global subdivision is a special case of partial + subdivision. Strange it is considered separately... */ + + /* count of nodes (after subdivision) along U axis */ + int countu= nu->pntsu + (nu->pntsu - 1) * number_cuts; + + /* total count of nodes after subdivision */ + int tot= ((number_cuts+1)*nu->pntsu-number_cuts)*((number_cuts+1)*nu->pntsv-number_cuts); + + bpn=bpnew= MEM_mallocN( tot*sizeof(BPoint), "subdivideNurb4"); bp= nu->bp; /* first subdivide rows */ for(a=0; a<nu->pntsv; a++) { @@ -2119,41 +2145,43 @@ static int subdivide_exec(bContext *C, wmOperator *op) bpn++; bp++; if(b<nu->pntsu-1) { - *bpn= *bp; prevbp= bp-1; - bpn->vec[0]= (prevbp->vec[0]+bp->vec[0])/2.0; - bpn->vec[1]= (prevbp->vec[1]+bp->vec[1])/2.0; - bpn->vec[2]= (prevbp->vec[2]+bp->vec[2])/2.0; - bpn->vec[3]= (prevbp->vec[3]+bp->vec[3])/2.0; - bpn++; + for (i = 0; i < number_cuts; i++) { + factor = (float)(i + 1) / (number_cuts + 1); + *bpn= *bp; + interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor); + bpn++; + } } } - bpn+= (2*nu->pntsu-1); + bpn+= number_cuts * countu; } /* now insert new */ - bpn= bpnew+(2*nu->pntsu-1); - bp= bpnew+(4*nu->pntsu-2); + bpn= bpnew+((number_cuts+1)*nu->pntsu - number_cuts); + bp= bpnew+(number_cuts+1)*((number_cuts+1)*nu->pntsu-number_cuts); prevbp= bpnew; for(a=1; a<nu->pntsv; a++) { - for(b=0; b<2*nu->pntsu-1; b++) { - *bpn= *bp; - bpn->vec[0]= (prevbp->vec[0]+bp->vec[0])/2.0; - bpn->vec[1]= (prevbp->vec[1]+bp->vec[1])/2.0; - bpn->vec[2]= (prevbp->vec[2]+bp->vec[2])/2.0; - bpn->vec[3]= (prevbp->vec[3]+bp->vec[3])/2.0; - bpn++; + for(b=0; b<(number_cuts+1)*nu->pntsu-number_cuts; b++) { + BPoint *tmp= bpn; + for (i = 0; i < number_cuts; i++) { + factor = (float)(i + 1) / (number_cuts + 1); + *tmp= *bp; + interp_v4_v4v4(tmp->vec, prevbp->vec, bp->vec, factor); + tmp += countu; + } bp++; prevbp++; + bpn++; } - bp+= (2*nu->pntsu-1); - bpn+= (2*nu->pntsu-1); - prevbp+= (2*nu->pntsu-1); + bp+= number_cuts * countu; + bpn+= number_cuts * countu; + prevbp+= number_cuts * countu; } MEM_freeN(nu->bp); nu->bp= bpnew; - nu->pntsu= 2*nu->pntsu-1; - nu->pntsv= 2*nu->pntsv-1; + nu->pntsu= (number_cuts+1)*nu->pntsu-number_cuts; + nu->pntsv= (number_cuts+1)*nu->pntsv-number_cuts; makeknots(nu, 1); makeknots(nu, 2); } /* End of 'if(sel== nu->pntsu*nu->pntsv)' (subdivide entire NURB) */ @@ -2161,7 +2189,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) /* subdivide in v direction? */ sel= 0; for(a=0; a<nu->pntsv-1; a++) { - if(vsel[a]==nu->pntsu && vsel[a+1]==nu->pntsu) sel++; + if(vsel[a]==nu->pntsu && vsel[a+1]==nu->pntsu) sel+=number_cuts; } if(sel) { /* V ! */ @@ -2170,29 +2198,30 @@ static int subdivide_exec(bContext *C, wmOperator *op) for(a=0; a<nu->pntsv; a++) { for(b=0; b<nu->pntsu; b++) { *bpn= *bp; - bpn++; + bpn++; bp++; } if( (a<nu->pntsv-1) && vsel[a]==nu->pntsu && vsel[a+1]==nu->pntsu ) { - prevbp= bp- nu->pntsu; - for(b=0; b<nu->pntsu; b++) { - /* - This simple bisection must be replaces by a - subtle resampling of a number of points. Our - task is made slightly easier because each - point in our curve is a separate data - node. (is it?) - */ - *bpn= *prevbp; - bpn->vec[0]= (prevbp->vec[0]+bp->vec[0])/2.0; - bpn->vec[1]= (prevbp->vec[1]+bp->vec[1])/2.0; - bpn->vec[2]= (prevbp->vec[2]+bp->vec[2])/2.0; - bpn->vec[3]= (prevbp->vec[3]+bp->vec[3])/2.0; - bpn++; - prevbp++; - bp++; + for (i = 0; i < number_cuts; i++) { + factor = (float)(i + 1) / (number_cuts + 1); + prevbp= bp- nu->pntsu; + for(b=0; b<nu->pntsu; b++) { + /* + This simple bisection must be replaces by a + subtle resampling of a number of points. Our + task is made slightly easier because each + point in our curve is a separate data + node. (is it?) + */ + *bpn= *prevbp; + interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor); + bpn++; + + prevbp++; + bp++; + } + bp-= nu->pntsu; } - bp-= nu->pntsu; } } MEM_freeN(nu->bp); @@ -2204,12 +2233,12 @@ static int subdivide_exec(bContext *C, wmOperator *op) /* or in u direction? */ sel= 0; for(a=0; a<nu->pntsu-1; a++) { - if(usel[a]==nu->pntsv && usel[a+1]==nu->pntsv) sel++; + if(usel[a]==nu->pntsv && usel[a+1]==nu->pntsv) sel+=number_cuts; } if(sel) { /* U ! */ - /* Inserting U points is sort of 'default' Flat curves only get */ - /* U points inserted in them. */ + /* Inserting U points is sort of 'default' Flat curves only get */ + /* U points inserted in them. */ bpn=bpnew= MEM_mallocN( (sel+nu->pntsu)*nu->pntsv*sizeof(BPoint), "subdivideNurb4"); bp= nu->bp; for(a=0; a<nu->pntsv; a++) { @@ -2218,20 +2247,20 @@ static int subdivide_exec(bContext *C, wmOperator *op) bpn++; bp++; if( (b<nu->pntsu-1) && usel[b]==nu->pntsv && usel[b+1]==nu->pntsv ) { - /* - One thing that bugs me here is that the - orders of things are not the same as in - the JW piece. Also, this implies that we - handle at most 3rd order curves? I miss - some symmetry here... - */ + /* + One thing that bugs me here is that the + orders of things are not the same as in + the JW piece. Also, this implies that we + handle at most 3rd order curves? I miss + some symmetry here... + */ + for (i = 0; i < number_cuts; i++) { + factor = (float)(i + 1) / (number_cuts + 1); prevbp= bp- 1; *bpn= *prevbp; - bpn->vec[0]= (prevbp->vec[0]+bp->vec[0])/2.0; - bpn->vec[1]= (prevbp->vec[1]+bp->vec[1])/2.0; - bpn->vec[2]= (prevbp->vec[2]+bp->vec[2])/2.0; - bpn->vec[3]= (prevbp->vec[3]+bp->vec[3])/2.0; + interp_v4_v4v4(bpn->vec, prevbp->vec, bp->vec, factor); bpn++; + } } } } @@ -2239,7 +2268,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) nu->bp= bpnew; nu->pntsu+= sel; makeknots(nu, 1); /* shift knots - forward */ + forward */ } } } @@ -2248,6 +2277,14 @@ static int subdivide_exec(bContext *C, wmOperator *op) } /* End of 'if(nu->type == CU_NURBS)' */ } +} + +static int subdivide_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_edit_object(C); + int number_cuts= RNA_int_get(op->ptr, "number_cuts"); + + subdividenurb(obedit, number_cuts); WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); @@ -2267,6 +2304,8 @@ void CURVE_OT_subdivide(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_int(ot->srna, "number_cuts", 1, 1, 100, "Number of cuts", "", 1, 100); } /******************** find nearest ************************/ @@ -2423,8 +2462,8 @@ static int convertspline(short type, Nurb *nu) else if(type==CU_NURBS) { nu->type = CU_NURBS; nu->orderu= 4; - nu->flagu &= CU_CYCLIC; /* disable all flags except for cyclic */ - nu->flagu += 4; + nu->flagu &= CU_NURB_CYCLIC; /* disable all flags except for cyclic */ + nu->flagu |= CU_NURB_BEZIER; makeknots(nu, 1); a= nu->pntsu*nu->pntsv; bp= nu->bp; @@ -2473,11 +2512,11 @@ static int convertspline(short type, Nurb *nu) nu->orderu= 4; nu->orderv= 1; nu->type = type; - if(nu->flagu & CU_CYCLIC) c= nu->orderu-1; + if(nu->flagu & CU_NURB_CYCLIC) c= nu->orderu-1; else c= 0; if(type== CU_NURBS) { - nu->flagu &= CU_CYCLIC; /* disable all flags except for cyclic */ - nu->flagu += 4; + nu->flagu &= CU_NURB_CYCLIC; /* disable all flags except for cyclic */ + nu->flagu |= CU_NURB_BEZIER; makeknots(nu, 1); } } @@ -2737,7 +2776,7 @@ static void make_selection_list_nurb(ListBase *editnurb) bp= nu->bp; a= nu->pntsu; while(a--) { - add_v3_v3v3(nus->vec, nus->vec, bp->vec); + add_v3_v3(nus->vec, bp->vec); bp++; } mul_v3_fl(nus->vec, 1.0/(float)nu->pntsu); @@ -2798,6 +2837,10 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu if( is_u_selected(nu1, nu1->pntsu-1) ); else { + /* For 2D curves blender uses orderv=0. It doesn't make any sense mathematically. */ + /* but after rotating orderu=0 will be confusing. */ + if (nu1->orderv == 0) nu1->orderv= 1; + rotate_direction_nurb(nu1); if( is_u_selected(nu1, nu1->pntsu-1) ); else { @@ -2818,6 +2861,7 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu /* 2nd nurbs: u = 0 selected */ if( is_u_selected(nu2, 0) ); else { + if (nu2->orderv == 0) nu2->orderv= 1; rotate_direction_nurb(nu2); if( is_u_selected(nu2, 0) ); else { @@ -2863,8 +2907,8 @@ static void merge_2_nurb(wmOperator *op, ListBase *editnurb, Nurb *nu1, Nurb *nu /* merge */ origu= nu1->pntsu; nu1->pntsu+= nu2->pntsu; - if(nu1->orderu<3) nu1->orderu++; - if(nu1->orderv<3) nu1->orderv++; + if(nu1->orderu<3 && nu1->orderu<nu1->pntsu) nu1->orderu++; + if(nu1->orderv<3 && nu1->orderv<nu1->pntsv) nu1->orderv++; temp= nu1->bp; nu1->bp= MEM_mallocN(nu1->pntsu*nu1->pntsv*sizeof(BPoint), "mergeBP"); @@ -2939,7 +2983,7 @@ static int merge_nurb(bContext *C, wmOperator *op) BLI_freelistN(&nsortbase); return OPERATOR_CANCELLED; } - + while(nus2) { merge_2_nurb(op, editnurb, nus1->nu, nus2->nu); nus2= nus2->next; @@ -2992,7 +3036,7 @@ static int make_segment_exec(bContext *C, wmOperator *op) /* find both nurbs and points, nu1 will be put behind nu2 */ for(nu= editnurb->first; nu; nu= nu->next) { - if((nu->flagu & CU_CYCLIC)==0) { /* not cyclic */ + if((nu->flagu & CU_NURB_CYCLIC)==0) { /* not cyclic */ if(nu->type == CU_BEZIER) { bezt= nu->bezt; if(nu1==0) { @@ -3156,12 +3200,18 @@ int mouse_nurb(bContext *C, short mval[2], int extend) if(bezt) { - if(hand==1) select_beztriple(bezt, SELECT, 1, HIDDEN); - else if(hand==0) bezt->f1|= SELECT; - else bezt->f3|= SELECT; + if(hand==1) { + select_beztriple(bezt, SELECT, 1, HIDDEN); + cu->lastsel= bezt; + } else { + if(hand==0) bezt->f1|= SELECT; + else bezt->f3|= SELECT; + + cu->lastsel= NULL; + } } else { - cu->lastselbp= bp; + cu->lastsel= bp; select_bpoint(bp, SELECT, 1, HIDDEN); } @@ -3169,8 +3219,13 @@ int mouse_nurb(bContext *C, short mval[2], int extend) else { if(bezt) { if(hand==1) { - if(bezt->f2 & SELECT) select_beztriple(bezt, DESELECT, 1, HIDDEN); - else select_beztriple(bezt, SELECT, 1, HIDDEN); + if(bezt->f2 & SELECT) { + select_beztriple(bezt, DESELECT, 1, HIDDEN); + if (bezt == cu->lastsel) cu->lastsel = NULL; + } else { + select_beztriple(bezt, SELECT, 1, HIDDEN); + cu->lastsel= bezt; + } } else if(hand==0) { bezt->f1 ^= SELECT; } else { @@ -3178,10 +3233,12 @@ int mouse_nurb(bContext *C, short mval[2], int extend) } } else { - if(bp->f1 & SELECT) select_bpoint(bp, DESELECT, 1, HIDDEN); - else { + if(bp->f1 & SELECT) { + select_bpoint(bp, DESELECT, 1, HIDDEN); + if (cu->lastsel == bp) cu->lastsel = NULL; + } else { select_bpoint(bp, SELECT, 1, HIDDEN); - cu->lastselbp= bp; + cu->lastsel= bp; } } @@ -3284,7 +3341,7 @@ static int spin_nurb(bContext *C, Scene *scene, Object *obedit, float *dvec, flo for(nu= editnurb->first; nu; nu= nu->next) { if(isNurbsel(nu)) { nu->orderv= 4; - nu->flagv |= CU_CYCLIC; + nu->flagv |= CU_NURB_CYCLIC; makeknots(nu, 2); } } @@ -3357,7 +3414,6 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) copy_m3_m4(mat, obedit->obmat); invert_m3_m3(imat,mat); - view3d_operator_needs_opengl(C); findselectedNurbvert(editnurb, &nu, &bezt, &bp); if(bezt==0 && bp==0) return OPERATOR_CANCELLED; @@ -3396,13 +3452,13 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) nu->pntsu++; if(mode=='e') { - VECCOPY(newbezt->vec[0], bezt->vec[0]); - VECCOPY(newbezt->vec[1], bezt->vec[1]); - VECCOPY(newbezt->vec[2], bezt->vec[2]); + copy_v3_v3(newbezt->vec[0], bezt->vec[0]); + copy_v3_v3(newbezt->vec[1], bezt->vec[1]); + copy_v3_v3(newbezt->vec[2], bezt->vec[2]); } else { - VECCOPY(newbezt->vec[1], location); - sub_v3_v3v3(newbezt->vec[1],newbezt->vec[1], obedit->obmat[3]); + copy_v3_v3(newbezt->vec[1], location); + sub_v3_v3(newbezt->vec[1], obedit->obmat[3]); mul_m3_v3(imat,newbezt->vec[1]); sub_v3_v3v3(temp, newbezt->vec[1],temp); add_v3_v3v3(newbezt->vec[0], bezt->vec[0],temp); @@ -3444,11 +3500,11 @@ static int addvert_Nurb(bContext *C, short mode, float location[3]) makeknots(nu, 1); if(mode=='e') { - VECCOPY(newbp->vec, bp->vec); + copy_v3_v3(newbp->vec, bp->vec); } else { - VECCOPY(newbp->vec, location); - sub_v3_v3v3(newbp->vec, newbp->vec, obedit->obmat[3]); + copy_v3_v3(newbp->vec, location); + sub_v3_v3(newbp->vec, obedit->obmat[3]); mul_m3_v3(imat,newbp->vec); newbp->vec[3]= 1.0; } @@ -3477,7 +3533,7 @@ static int add_vertex_invoke(bContext *C, wmOperator *op, wmEvent *event) { RegionView3D *rv3d= CTX_wm_region_view3d(C); ViewContext vc; - float location[3]; + float location[3] = {0.0f, 0.0f, 0.0f}; short mval[2]; if(rv3d && !RNA_property_is_set(op->ptr, "location")) { @@ -3587,7 +3643,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) bp= nu->bp; while(a--) { if( bp->f1 & SELECT ) { - nu->flagu ^= CU_CYCLIC; + nu->flagu ^= CU_NURB_CYCLIC; break; } bp++; @@ -3598,7 +3654,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) bezt= nu->bezt; while(a--) { if( BEZSELECTED_HIDDENHANDLES(cu, bezt) ) { - nu->flagu ^= CU_CYCLIC; + nu->flagu ^= CU_NURB_CYCLIC; break; } bezt++; @@ -3611,7 +3667,7 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) bp= nu->bp; while(a--) { if( bp->f1 & SELECT ) { - nu->flagu ^= CU_CYCLIC; + nu->flagu ^= CU_NURB_CYCLIC; makeknots(nu, 1); /* 1==u type is ignored for cyclic curves */ break; } @@ -3626,11 +3682,11 @@ static int toggle_cyclic_exec(bContext *C, wmOperator *op) if( bp->f1 & SELECT) { if(direction==0 && nu->pntsu>1) { - nu->flagu ^= CU_CYCLIC; + nu->flagu ^= CU_NURB_CYCLIC; makeknots(nu, 1); /* 1==u type is ignored for cyclic curves */ } if(direction==1 && nu->pntsv>1) { - nu->flagv ^= CU_CYCLIC; + nu->flagv ^= CU_NURB_CYCLIC; makeknots(nu, 2); /* 2==v type is ignored for cyclic curves */ } break; @@ -3699,7 +3755,7 @@ void CURVE_OT_cyclic_toggle(wmOperatorType *ot) static int select_linked_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - RegionView3D *rv3d= CTX_wm_region_view3d(C); + RegionView3D *rv3d= ED_view3d_context_rv3d(C); ViewContext vc; Nurb *nu; BezTriple *bezt; @@ -3786,7 +3842,7 @@ static int select_row_exec(bContext *C, wmOperator *op) if(editnurb->first==0) return OPERATOR_CANCELLED; - if(cu->lastselbp==NULL) + if(cu->lastsel==NULL) return OPERATOR_CANCELLED; /* find the correct nurb and toggle with u of v */ @@ -3794,7 +3850,7 @@ static int select_row_exec(bContext *C, wmOperator *op) bp= nu->bp; for(v=0; v<nu->pntsv; v++) { for(u=0; u<nu->pntsu; u++, bp++) { - if(bp==cu->lastselbp) { + if(bp==cu->lastsel) { if(bp->f1 & SELECT) { ok= 1; break; @@ -3805,11 +3861,11 @@ static int select_row_exec(bContext *C, wmOperator *op) } if(ok) { - if(last==cu->lastselbp) { + if(last==cu->lastsel) { direction= 1-direction; setflagsNurb(editnurb, 0); } - last= cu->lastselbp; + last= cu->lastsel; bp= nu->bp; for(a=0; a<nu->pntsv; a++) { @@ -4215,37 +4271,128 @@ void CURVE_OT_select_random(wmOperatorType *ot) RNA_def_boolean(ot->srna, "extend", FALSE, "Extend Selection", "Extend selection instead of deselecting everything first."); } -/********************** select every nth *********************/ +/********************* every nth number of point *******************/ + +static int point_on_nurb(Nurb *nu, void *point) +{ + if (nu->bezt) { + BezTriple *bezt= (BezTriple*)point; + return bezt >= nu->bezt && bezt < nu->bezt + nu->pntsu; + } else { + BPoint *bp= (BPoint*)point; + return bp >= nu->bp && bp < nu->bp + nu->pntsu * nu->pntsv; + } +} -static int select_every_nth_exec(bContext *C, wmOperator *op) +static void select_nth_bezt(Nurb *nu, BezTriple *bezt, int nth) +{ + int a, start; + + start= bezt - nu->bezt; + a= nu->pntsu; + bezt= nu->bezt + a - 1; + + while (a--) { + if (abs(start - a) % nth) { + select_beztriple(bezt, DESELECT, 1, HIDDEN); + } + + bezt--; + } +} + +static void select_nth_bp(Nurb *nu, BPoint *bp, int nth) +{ + int a, startrow, startpnt; + int dist, row, pnt; + + startrow= (bp - nu->bp) / nu->pntsu; + startpnt= (bp - nu->bp) % nu->pntsu; + + a= nu->pntsu * nu->pntsv; + bp= nu->bp + a - 1; + row = nu->pntsv - 1; + pnt = nu->pntsu - 1; + + while (a--) { + dist= abs(pnt - startpnt) + abs(row - startrow); + if (dist % nth) { + select_bpoint(bp, DESELECT, 1, HIDDEN); + } + + pnt--; + if (pnt < 0) { + pnt= nu->pntsu - 1; + row--; + } + + bp--; + } +} + +int CU_select_nth(Object *obedit, int nth) +{ + Curve *cu= (Curve*)obedit->data; + ListBase *nubase= cu->editnurb; + Nurb *nu; + int ok=0; + + /* Search nurb to which selected point belongs to */ + nu= nubase->first; + while (nu) { + if (point_on_nurb(nu, cu->lastsel)) { + ok= 1; + break; + } + nu= nu->next; + } + + if (!ok) return 0; + + if (nu->bezt) { + select_nth_bezt(nu, cu->lastsel, nth); + } else { + select_nth_bp(nu, cu->lastsel, nth); + } + + return 1; +} + +static int select_nth_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb= curve_get_editcurve(obedit); - int n= RNA_int_get(op->ptr, "n"); - - select_adjacent_cp(editnurb, n, 1, SELECT); - select_adjacent_cp(editnurb, -n, 1, SELECT); - + int nth= RNA_int_get(op->ptr, "nth"); + + if (!CU_select_nth(obedit, nth)) { + if (obedit->type == OB_SURF) { + BKE_report(op->reports, RPT_ERROR, "Surface hasn't got active point"); + } else { + BKE_report(op->reports, RPT_ERROR, "Curve hasn't got active point"); + } + + return OPERATOR_CANCELLED; + } + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); return OPERATOR_FINISHED; } -void CURVE_OT_select_every_nth(wmOperatorType *ot) +void CURVE_OT_select_nth(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select Every Nth"; - ot->idname= "CURVE_OT_select_every_nth"; - + ot->name= "Select Nth"; + ot->description= ""; + ot->idname= "CURVE_OT_select_nth"; + /* api callbacks */ - ot->exec= select_every_nth_exec; + ot->exec= select_nth_exec; ot->poll= ED_operator_editsurfcurve; - + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - /* properties */ - RNA_def_int(ot->srna, "n", 2, 2, INT_MAX, "N", "Select every Nth element", 2, 25); + RNA_def_int(ot->srna, "nth", 2, 2, 100, "Nth Selection", "", 1, INT_MAX); } /********************** add duplicate operator *********************/ @@ -4255,6 +4402,7 @@ static int duplicate_exec(bContext *C, wmOperator *op) Object *obedit= CTX_data_edit_object(C); adduplicateflagNurb(obedit, 1); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, obedit->data); return OPERATOR_FINISHED; } @@ -4429,10 +4577,10 @@ static int delete_exec(bContext *C, wmOperator *op) bezt2= bezt+1; if( (bezt2->f1 & SELECT) || (bezt2->f2 & SELECT) || (bezt2->f3 & SELECT) ) ; else { /* maybe do not make cyclic */ - if(a==0 && (nu->flagu & CU_CYCLIC) ) { + if(a==0 && (nu->flagu & CU_NURB_CYCLIC) ) { bezt2= bezt+(nu->pntsu-1); if( (bezt2->f1 & SELECT) || (bezt2->f2 & SELECT) || (bezt2->f3 & SELECT) ) { - nu->flagu &= ~CU_CYCLIC; + nu->flagu &= ~CU_NURB_CYCLIC; WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); } @@ -4455,10 +4603,10 @@ static int delete_exec(bContext *C, wmOperator *op) bp2= bp+1; if( bp2->f1 & 1 ) ; else { /* maybe do not make cyclic */ - if(a==0 && (nu->flagu & CU_CYCLIC) ) { + if(a==0 && (nu->flagu & CU_NURB_CYCLIC) ) { bp2= bp+(nu->pntsu-1); if( bp2->f1 & SELECT ) { - nu->flagu &= ~CU_CYCLIC; + nu->flagu &= ~CU_NURB_CYCLIC; WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); DAG_id_flush_update(obedit->data, OB_RECALC_DATA); } @@ -4483,14 +4631,14 @@ static int delete_exec(bContext *C, wmOperator *op) BLI_remlink(editnurb, nu); freeNurb(nu); nu = NULL; } - else if(nu1->flagu & CU_CYCLIC) { /* cyclic */ + else if(nu1->flagu & CU_NURB_CYCLIC) { /* cyclic */ bezt = (BezTriple*)MEM_mallocN((cut+1) * sizeof(BezTriple), "delNurb1"); memcpy(bezt, nu1->bezt,(cut+1)*sizeof(BezTriple)); a= nu1->pntsu-cut-1; memcpy(nu1->bezt, bezt2, a*sizeof(BezTriple)); memcpy(nu1->bezt+a, bezt, (cut+1)*sizeof(BezTriple)); - nu1->flagu &= ~CU_CYCLIC; + nu1->flagu &= ~CU_NURB_CYCLIC; MEM_freeN(bezt); calchandlesNurb(nu); } @@ -4525,14 +4673,14 @@ static int delete_exec(bContext *C, wmOperator *op) BLI_remlink(editnurb, nu); freeNurb(nu); nu= NULL; } - else if(nu1->flagu & CU_CYCLIC) { /* cyclic */ + else if(nu1->flagu & CU_NURB_CYCLIC) { /* cyclic */ bp = (BPoint*)MEM_mallocN((cut+1) * sizeof(BPoint), "delNurb5"); memcpy(bp, nu1->bp,(cut+1)*sizeof(BPoint)); a= nu1->pntsu-cut-1; memcpy(nu1->bp, bp2, a*sizeof(BPoint)); memcpy(nu1->bp+a, bp, (cut+1)*sizeof(BPoint)); - nu1->flagu &= ~CU_CYCLIC; + nu1->flagu &= ~CU_NURB_CYCLIC; MEM_freeN(bp); } else { /* add new curve */ @@ -4572,8 +4720,8 @@ static int delete_invoke(bContext *C, wmOperator *op, wmEvent *event) if(obedit->type==OB_SURF) { pup= uiPupMenuBegin(C, "Delete", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, NULL, 0, op->type->idname, "type", 0); - uiItemEnumO(layout, NULL, 0, op->type->idname, "type", 2); + uiItemEnumO(layout, op->type->idname, NULL, 0, "type", 0); + uiItemEnumO(layout, op->type->idname, NULL, 0, "type", 2); uiPupMenuEnd(C, pup); } else { @@ -4737,7 +4885,6 @@ int join_curve_exec(bContext *C, wmOperator *op) } /************ add primitive, used by object/ module ****************/ - Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) { static int xzproj= 0; /* this function calls itself... */ @@ -4848,7 +4995,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) nu->pntsu= 5; nu->pntsv= 1; nu->orderu= 5; - nu->flagu= 2; /* endpoint */ + nu->flagu= CU_NURB_ENDPOINT; /* endpoint */ nu->resolu= 8; nu->bp= callocstructN(BPoint, 5, "addNurbprim3"); @@ -4887,7 +5034,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) if (!force_3d) nu->flag |= CU_2D; nu->pntsu= 4; nu->bezt= callocstructN(BezTriple, 4, "addNurbprim1"); - nu->flagu= CU_CYCLIC; + nu->flagu= CU_NURB_CYCLIC; bezt= nu->bezt; bezt->h1= bezt->h2= HD_AUTO; @@ -4924,7 +5071,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) nu->pntsv= 1; nu->orderu= 4; nu->bp= callocstructN(BPoint, 8, "addNurbprim6"); - nu->flagu= CU_CYCLIC; + nu->flagu= CU_NURB_CYCLIC; bp= nu->bp; for(a=0; a<8; a++) { @@ -5046,7 +5193,7 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) mul_m4_v3(mat,bp->vec); bp++; } - nu->flagu= 4; + nu->flagu= CU_NURB_BEZIER; makeknots(nu, 1); BLI_addtail(editnurb, nu); /* temporal for spin */ @@ -5072,8 +5219,8 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) float tmp_vec[3] = {0.f, 0.f, 0.f}; if(newname) { - rename_id((ID *)obedit, "SurfDonut"); - rename_id((ID *)obedit->data, "SurfDonut"); + rename_id((ID *)obedit, "SurfTorus"); + rename_id((ID *)obedit->data, "SurfTorus"); } xzproj= 1; @@ -5109,6 +5256,318 @@ Nurb *add_nurbs_primitive(bContext *C, float mat[4][4], int type, int newname) return nu; } +static int curvesurf_prim_add(bContext *C, wmOperator *op, int type, int isSurf) { + + Object *obedit= CTX_data_edit_object(C); + ListBase *editnurb; + Nurb *nu; + int newob= 0; + int enter_editmode; + unsigned int layer; + float loc[3], rot[3]; + float mat[4][4]; + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; + + if (!isSurf) { /* adding curve */ + if(obedit==NULL || obedit->type!=OB_CURVE) { + Curve *cu; + obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); + newob = 1; + + cu= (Curve*)obedit->data; + cu->flag |= CU_DEFORM_FILL; + if(type & CU_PRIM_PATH) + cu->flag |= CU_PATH|CU_3D; + } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); + } else { /* adding surface */ + if(obedit==NULL || obedit->type!=OB_SURF) { + obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); + newob = 1; + } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); + } + + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); + + nu= add_nurbs_primitive(C, mat, type, newob); + editnurb= curve_get_editcurve(obedit); + BLI_addtail(editnurb, nu); + + /* userdef */ + if (newob && !enter_editmode) { + ED_object_exit_editmode(C, EM_FREEDATA); + } + + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); + + return OPERATOR_FINISHED; +} + +static int curve_prim_add(bContext *C, wmOperator *op, int type) { + return curvesurf_prim_add(C, op, type, 0); +} + +static int surf_prim_add(bContext *C, wmOperator *op, int type) { + return curvesurf_prim_add(C, op, type, 1); +} + +/* ******************** Curves ******************* */ + +static int add_primitive_bezier_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_BEZIER|CU_PRIM_CURVE); +} + +void CURVE_OT_primitive_bezier_curve_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Bezier"; + ot->description= "Construct a Bezier Curve"; + ot->idname= "CURVE_OT_primitive_bezier_curve_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_bezier_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_bezier_circle_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_BEZIER|CU_PRIM_CIRCLE); +} + +void CURVE_OT_primitive_bezier_circle_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Circle"; + ot->description= "Construct a Bezier Circle"; + ot->idname= "CURVE_OT_primitive_bezier_circle_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_bezier_circle_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_curve_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_NURBS|CU_PRIM_CURVE); +} + +void CURVE_OT_primitive_nurbs_curve_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Nurbs Curve"; + ot->description= "Construct a Nurbs Curve"; + ot->idname= "CURVE_OT_primitive_nurbs_curve_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_curve_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_circle_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_NURBS|CU_PRIM_CIRCLE); +} + +void CURVE_OT_primitive_nurbs_circle_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Nurbs Circle"; + ot->description= "Construct a Nurbs Circle"; + ot->idname= "CURVE_OT_primitive_nurbs_circle_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_circle_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_curve_path_exec(bContext *C, wmOperator *op) +{ + return curve_prim_add(C, op, CU_NURBS|CU_PRIM_PATH); +} + +void CURVE_OT_primitive_nurbs_path_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Path"; + ot->description= "Construct a Path"; + ot->idname= "CURVE_OT_primitive_nurbs_path_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_curve_path_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +/* **************** NURBS surfaces ********************** */ +static int add_primitive_nurbs_surface_curve_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_CURVE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_curve_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Curve"; + ot->description= "Construct a Nurbs surface Curve"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_curve_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_curve_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_circle_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_CIRCLE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_circle_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Circle"; + ot->description= "Construct a Nurbs surface Circle"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_circle_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_circle_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_surface_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_PATCH|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_surface_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Patch"; + ot->description= "Construct a Nurbs surface Patch"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_surface_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_surface_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_tube_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_TUBE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_tube_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Tube"; + ot->description= "Construct a Nurbs surface Tube"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_tube_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_tube_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_sphere_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_SPHERE|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_sphere_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Sphere"; + ot->description= "Construct a Nurbs surface Sphere"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_sphere_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_sphere_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + +static int add_primitive_nurbs_surface_donut_exec(bContext *C, wmOperator *op) +{ + return surf_prim_add(C, op, CU_PRIM_DONUT|CU_NURBS); +} + +void SURFACE_OT_primitive_nurbs_surface_donut_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Surface Donut"; + ot->description= "Construct a Nurbs surface Donut"; + ot->idname= "SURFACE_OT_primitive_nurbs_surface_donut_add"; + + /* api callbacks */ + ot->invoke= ED_object_add_generic_invoke; + ot->exec= add_primitive_nurbs_surface_donut_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + ED_object_add_generic_props(ot, TRUE); +} + /***************** clear tilt operator ********************/ static int clear_tilt_exec(bContext *C, wmOperator *op) @@ -5162,49 +5621,87 @@ void CURVE_OT_tilt_clear(wmOperatorType *ot) /****************** undo for curves ****************/ -static void undoCurve_to_editCurve(void *lbu, void *lbe, void *obdata) +static void *undo_check_lastsel(void *lastsel, Nurb *nu, Nurb *newnu) { - ListBase *lb= lbu; - ListBase *editnurb= lbe; + if (nu->bezt) { + BezTriple *lastbezt= (BezTriple*)lastsel; + if (lastbezt >= nu->bezt && lastbezt < nu->bezt + nu->pntsu) { + return newnu->bezt + (lastbezt - nu->bezt); + } + } else { + BPoint *lastbp= (BPoint*)lastsel; + if (lastbp >= nu->bp && lastbp < nu->bp + nu->pntsu*nu->pntsv) { + return newnu->bp + (lastbp - nu->bp); + } + } + + return NULL; +} + +static void undoCurve_to_editCurve(void *ucu, void *cue) +{ + Curve *cu= cue; + UndoCurve *undoCurve= ucu; + ListBase *undobase= &undoCurve->nubase; + ListBase *editbase= cu->editnurb; Nurb *nu, *newnu; - - freeNurblist(editnurb); + void *lastsel= NULL; + + freeNurblist(editbase); /* copy */ - for(nu= lb->first; nu; nu= nu->next) { + for(nu= undobase->first; nu; nu= nu->next) { newnu= duplicateNurb(nu); - BLI_addtail(editnurb, newnu); + + if (lastsel == NULL) { + lastsel= undo_check_lastsel(undoCurve->lastsel, nu, newnu); + } + + BLI_addtail(editbase, newnu); } + + cu->lastsel= lastsel; } -static void *editCurve_to_undoCurve(void *lbe, void *obdata) +static void *editCurve_to_undoCurve(void *lbe, void *cue) { - ListBase *editnurb= lbe; - ListBase *lb; + Curve *cu= cue; + ListBase *nubase= cu->editnurb; + UndoCurve *undoCurve; Nurb *nu, *newnu; + void *lastsel= NULL; + + undoCurve= MEM_callocN(sizeof(UndoCurve), "undoCurve"); - lb= MEM_callocN(sizeof(ListBase), "listbase undo"); - /* copy */ - for(nu= editnurb->first; nu; nu= nu->next) { + for(nu= nubase->first; nu; nu= nu->next) { newnu= duplicateNurb(nu); - BLI_addtail(lb, newnu); + + if (lastsel == NULL) { + lastsel= undo_check_lastsel(cu->lastsel, nu, newnu); + } + + BLI_addtail(&undoCurve->nubase, newnu); } - return lb; + + undoCurve->lastsel= lastsel; + + return undoCurve; } -static void free_undoCurve(void *lbv) +static void free_undoCurve(void *ucv) { - ListBase *lb= lbv; - - freeNurblist(lb); - MEM_freeN(lb); + UndoCurve *undoCurve= ucv; + + freeNurblist(&undoCurve->nubase); + + MEM_freeN(undoCurve); } static void *get_data(bContext *C) { Object *obedit= CTX_data_edit_object(C); - return curve_get_editcurve(obedit); + return obedit->data; } /* and this is all the undo system needs to know */ diff --git a/source/blender/editors/curve/editfont.c b/source/blender/editors/curve/editfont.c index 0511558f544..ded908a52b9 100644 --- a/source/blender/editors/curve/editfont.c +++ b/source/blender/editors/curve/editfont.c @@ -46,8 +46,6 @@ #include "DNA_vfont_types.h" #include "DNA_scene_types.h" #include "DNA_text_types.h" -#include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_curve.h" @@ -66,7 +64,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_curve.h" #include "ED_object.h" #include "ED_screen.h" #include "ED_util.h" @@ -320,7 +317,7 @@ void FONT_OT_insert_lorem(wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Lorem"; - ot->description= "Insert placeholder text"; + ot->description= "Insert placeholder text"; ot->idname= "FONT_OT_insert_lorem"; /* api callbacks */ @@ -387,7 +384,7 @@ static int paste_file_exec(bContext *C, wmOperator *op) char *path; int retval; - path= RNA_string_get_alloc(op->ptr, "path", NULL, 0); + path= RNA_string_get_alloc(op->ptr, "filepath", NULL, 0); retval= paste_file(C, op->reports, path); MEM_freeN(path); @@ -396,7 +393,7 @@ static int paste_file_exec(bContext *C, wmOperator *op) static int paste_file_invoke(bContext *C, wmOperator *op, wmEvent *event) { - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return paste_file_exec(C, op); WM_event_add_fileselect(C, op); @@ -408,7 +405,7 @@ void FONT_OT_file_paste(wmOperatorType *ot) { /* identifiers */ ot->name= "Paste File"; - ot->description= "Paste contents from file"; + ot->description= "Paste contents from file"; ot->idname= "FONT_OT_file_paste"; /* api callbacks */ @@ -420,7 +417,7 @@ void FONT_OT_file_paste(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /******************* paste buffer operator ********************/ @@ -457,7 +454,7 @@ void FONT_OT_buffer_paste(wmOperatorType *ot) { /* identifiers */ ot->name= "Paste Buffer"; - ot->description= "Paste text from OS buffer"; + ot->description= "Paste text from OS buffer"; ot->idname= "FONT_OT_buffer_paste"; /* api callbacks */ @@ -568,7 +565,7 @@ static short next_word(Curve *cu) { short s; for(s=cu->pos; (cu->str[s]) && (cu->str[s]!=' ') && (cu->str[s]!='\n') && - (cu->str[s]!=1) && (cu->str[s]!='\r'); s++); + (cu->str[s]!=1) && (cu->str[s]!='\r'); s++); if(cu->str[s]) return(s+1); else return(s); } @@ -578,7 +575,7 @@ static short prev_word(Curve *cu) if(cu->pos==0) return(0); for(s=cu->pos-2; (cu->str[s]) && (cu->str[s]!=' ') && (cu->str[s]!='\n') && - (cu->str[s]!=1) && (cu->str[s]!='\r'); s--); + (cu->str[s]!=1) && (cu->str[s]!='\r'); s--); if(cu->str[s]) return(s+1); else return(s); } @@ -614,9 +611,10 @@ static int kill_selection(Object *obedit, int ins) /* 1 == new character */ /******************* set style operator ********************/ static EnumPropertyItem style_items[]= { - {CU_BOLD, "BOLD", 0, "Bold", ""}, - {CU_ITALIC, "ITALIC", 0, "Italic", ""}, - {CU_UNDERLINE, "UNDERLINE", 0, "Underline", ""}, + {CU_CHINFO_BOLD, "BOLD", 0, "Bold", ""}, + {CU_CHINFO_ITALIC, "ITALIC", 0, "Italic", ""}, + {CU_CHINFO_UNDERLINE, "UNDERLINE", 0, "Underline", ""}, + {CU_CHINFO_SMALLCAPS, "SMALL_CAPS", 0, "Small Caps", ""}, {0, NULL, 0, NULL, NULL}}; static int set_style(bContext *C, int style, int clear) @@ -656,7 +654,7 @@ void FONT_OT_style_set(wmOperatorType *ot) { /* identifiers */ ot->name= "Set Style"; - ot->description= "Set font style"; + ot->description= "Set font style"; ot->idname= "FONT_OT_style_set"; /* api callbacks */ @@ -667,7 +665,7 @@ void FONT_OT_style_set(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "style", style_items, CU_BOLD, "Style", "Style to set selection to."); + RNA_def_enum(ot->srna, "style", style_items, CU_CHINFO_BOLD, "Style", "Style to set selection to."); RNA_def_boolean(ot->srna, "clear", 0, "Clear", "Clear style rather than setting it."); } @@ -694,7 +692,7 @@ void FONT_OT_style_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "Toggle Style"; - ot->description= "Toggle font style"; + ot->description= "Toggle font style"; ot->idname= "FONT_OT_style_toggle"; /* api callbacks */ @@ -705,7 +703,7 @@ void FONT_OT_style_toggle(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - RNA_def_enum(ot->srna, "style", style_items, CU_BOLD, "Style", "Style to set selection to."); + RNA_def_enum(ot->srna, "style", style_items, CU_CHINFO_BOLD, "Style", "Style to set selection to."); } /******************* copy text operator ********************/ @@ -737,7 +735,7 @@ void FONT_OT_text_copy(wmOperatorType *ot) { /* identifiers */ ot->name= "Copy Text"; - ot->description= "Copy selected text to clipboard"; + ot->description= "Copy selected text to clipboard"; ot->idname= "FONT_OT_text_copy"; /* api callbacks */ @@ -768,7 +766,7 @@ void FONT_OT_text_cut(wmOperatorType *ot) { /* identifiers */ ot->name= "Cut Text"; - ot->description= "Cut selected text to clipboard"; + ot->description= "Cut selected text to clipboard"; ot->idname= "FONT_OT_text_cut"; /* api callbacks */ @@ -826,7 +824,7 @@ void FONT_OT_text_paste(wmOperatorType *ot) { /* identifiers */ ot->name= "Paste Text"; - ot->description= "Paste text from clipboard"; + ot->description= "Paste text from clipboard"; ot->idname= "FONT_OT_text_paste"; /* api callbacks */ @@ -865,7 +863,7 @@ static int move_cursor(bContext *C, int type, int select) if((select) && (cu->selstart==0)) cu->selstart = cu->selend = cu->pos+1; while(cu->pos>0) { if(ef->textbuf[cu->pos-1]=='\n') break; - if(ef->textbufinfo[cu->pos-1].flag & CU_WRAP ) break; + if(ef->textbufinfo[cu->pos-1].flag & CU_CHINFO_WRAP) break; cu->pos--; } cursmove=FO_CURS; @@ -876,7 +874,7 @@ static int move_cursor(bContext *C, int type, int select) while(cu->pos<cu->len) { if(ef->textbuf[cu->pos]==0) break; if(ef->textbuf[cu->pos]=='\n') break; - if(ef->textbufinfo[cu->pos].flag & CU_WRAP ) break; + if(ef->textbufinfo[cu->pos].flag & CU_CHINFO_WRAP ) break; cu->pos++; } cursmove=FO_CURS; @@ -962,7 +960,7 @@ void FONT_OT_move(wmOperatorType *ot) { /* identifiers */ ot->name= "Move Cursor"; - ot->description= "Move cursor to position type"; + ot->description= "Move cursor to position type"; ot->idname= "FONT_OT_move"; /* api callbacks */ @@ -989,7 +987,7 @@ void FONT_OT_move_select(wmOperatorType *ot) { /* identifiers */ ot->name= "Move Select"; - ot->description= "Make selection from current cursor position to new cursor position type"; + ot->description= "Make selection from current cursor position to new cursor position type"; ot->idname= "FONT_OT_move_select"; /* api callbacks */ @@ -1031,7 +1029,7 @@ void FONT_OT_change_spacing(wmOperatorType *ot) { /* identifiers */ ot->name= "Change Spacing"; - ot->description= "Change font spacing"; + ot->description= "Change font spacing"; ot->idname= "FONT_OT_change_spacing"; /* api callbacks */ @@ -1076,7 +1074,7 @@ void FONT_OT_change_character(wmOperatorType *ot) { /* identifiers */ ot->name= "Change Character"; - ot->description= "Change font character code"; + ot->description= "Change font character code"; ot->idname= "FONT_OT_change_character"; /* api callbacks */ @@ -1119,7 +1117,7 @@ void FONT_OT_line_break(wmOperatorType *ot) { /* identifiers */ ot->name= "Line Break"; - ot->description= "Insert line break at cursor position"; + ot->description= "Insert line break at cursor position"; ot->idname= "FONT_OT_line_break"; /* api callbacks */ @@ -1209,7 +1207,7 @@ void FONT_OT_delete(wmOperatorType *ot) { /* identifiers */ ot->name= "Delete"; - ot->description= "Delete text by cursor position"; + ot->description= "Delete text by cursor position"; ot->idname= "FONT_OT_delete"; /* api callbacks */ @@ -1351,7 +1349,7 @@ void FONT_OT_text_insert(wmOperatorType *ot) { /* identifiers */ ot->name= "Insert Text"; - ot->description= "Insert text at cursor position"; + ot->description= "Insert text at cursor position"; ot->idname= "FONT_OT_text_insert"; /* api callbacks */ @@ -1366,6 +1364,99 @@ void FONT_OT_text_insert(wmOperatorType *ot) RNA_def_string(ot->srna, "text", "", 0, "Text", "Text to insert at the cursor position."); } + +/*********************** textbox add operator *************************/ +static int textbox_poll(bContext *C) +{ + Object *ob = CTX_data_active_object(C); + + if (!ED_operator_object_active_editable(C) ) return 0; + if (ob->type != OB_FONT) return 0; + + return 1; +} + +static int textbox_add_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_active_object(C); + Curve *cu= obedit->data; + int i; + + if (cu->totbox < 256) { + for (i = cu->totbox; i>cu->actbox; i--) cu->tb[i]= cu->tb[i-1]; + cu->tb[cu->actbox]= cu->tb[cu->actbox-1]; + cu->actbox++; + cu->totbox++; + } + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + return OPERATOR_FINISHED; +} + +void FONT_OT_textbox_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Textbox"; + ot->description= "Add a new text box"; + ot->idname= "FONT_OT_textbox_add"; + + /* api callbacks */ + ot->exec= textbox_add_exec; + ot->poll= textbox_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + +} + + + +/*********************** textbox remove operator *************************/ + + + +static int textbox_remove_exec(bContext *C, wmOperator *op) +{ + Object *obedit= CTX_data_active_object(C); + Curve *cu= obedit->data; + int i; + int index = RNA_int_get(op->ptr, "index"); + + + if (cu->totbox > 1) { + for (i = index; i < cu->totbox; i++) cu->tb[i]= cu->tb[i+1]; + cu->totbox--; + if (cu->actbox >= index) + cu->actbox--; + } + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); + + return OPERATOR_FINISHED; +} + +void FONT_OT_textbox_remove(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Remove Textbox"; + ot->description= "Remove the textbox"; + ot->idname= "FONT_OT_textbox_remove"; + + /* api callbacks */ + ot->exec= textbox_remove_exec; + ot->poll= textbox_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "The current text box.", 0, INT_MAX); + + +} + + + /***************** editmode enter/exit ********************/ void make_editText(Object *obedit) @@ -1487,7 +1578,7 @@ void FONT_OT_case_set(wmOperatorType *ot) { /* identifiers */ ot->name= "Set Case"; - ot->description= "Set font case"; + ot->description= "Set font case"; ot->idname= "FONT_OT_case_set"; /* api callbacks */ @@ -1530,7 +1621,7 @@ void FONT_OT_case_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "Toggle Case"; - ot->description= "Toggle font case"; + ot->description= "Toggle font case"; ot->idname= "FONT_OT_case_toggle"; /* api callbacks */ @@ -1567,7 +1658,7 @@ static int open_exec(bContext *C, wmOperator *op) PointerRNA idptr; char str[FILE_MAX]; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); font = load_vfont(str); @@ -1616,12 +1707,12 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) } path = (font && font->name)? font->name: U.fontdir; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -1642,7 +1733,7 @@ void FONT_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|FTFONTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); } /******************* delete operator *********************/ diff --git a/source/blender/editors/datafiles/B.blend.c b/source/blender/editors/datafiles/B.blend.c deleted file mode 100644 index d8553e30a6a..00000000000 --- a/source/blender/editors/datafiles/B.blend.c +++ /dev/null @@ -1,10668 +0,0 @@ -/* DataToC output of file <_B25_blend> */ - -int datatoc_B_blend_size= 341204; -char datatoc_B_blend[]= { - 66, 76, 69, 78, 68, 69, 82, 95,118, 50, 53, 49, 82, 69, 78, 68, 32, 0, 0, 0, -168, 93,199,191, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 16, 1, 0, 0,180, 92,199,191,199, 0, 0, 0, 1, 0, 0, 0, - 32, 32, 32, 48, 0, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1, 8, 71,112, 10,240,212,114, 10, 0, 16, 0, 0,128, 0, 4, 0, - 47,104,111,109,101, 47,105,100,101, 97,115,109, 97,110, 52, 50, 47, 46, 66, 50, 53, 46, 98,108,101,110,100, 0, 20, 93,199,191, - 60, 94,199,191,192, 93,199,191, 76, 97,173, 0, 20, 93,199,191,127, 14,189, 8,232, 93,199,191, 60, 94,199,191, 0, 0, 0, 0, - 1,128,173,251, 76,103,199,191, 41,207,126, 8, 96,166,190, 11,168, 93,199,191, 32, 0, 0, 0,255,255,255,255, 60, 94,199,191, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244,175,205, 8,136, 93,199,191,114,209,126, 8,104,160,222, 10, -168, 93,199,191, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0, -168, 93,199,191, 0, 0, 0, 0, 1, 0, 0, 0, 40,120,113, 11, 76,103,199,191,216, 93,199,191, 46,216,126, 8,104,160,222, 10, - 82, 69, 78, 68, 32, 0, 0, 0,168, 93,199,191, 48,208,115, 10,244,175,205, 8, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 0, 0,164, 0, 0, 0,176,233,110, 10,103, 1, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,234,110, 10,128,234,110, 10, -128,234,110, 10,128,234,110, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,110,115, 10, 24,110,115, 10, 24,110,115, 10, 32,111,115, 10, - 32,111,115, 10, 32,111,115, 10, 68, 65, 84, 65,148, 0, 0, 0,128,234,110, 10,104, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144,111,115, 10, 1, 0, 0, 0, 0, 0, 0, 0, 8, 71,112, 10, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 26, 0,254, 4,214, 2, - 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,136,189,163, 10, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 88,138,164, 10,144,140,184, 11,144,140,184, 11,144,101,164, 10,152,102,164, 10,160,103,164, 10,160,103,164, 10, - 24,104,164, 10, 96,142,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 64,235,110, 10,193, 0, 0, 0, - 1, 0, 0, 0,176,172,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 65,110,105,109, 97,116,105,111,110, 0, - 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,235,110, 10, 56,240,110, 10, -120,240,110, 10, 88,248,110, 10,160,248,110, 10,240,156,111, 10, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,235,110, 10,194, 0, 0, 0, - 1, 0, 0, 0, 56,236,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,236,110, 10,194, 0, 0, 0, 1, 0, 0, 0,120,236,110, 10,248,235,110, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,120,236,110, 10,194, 0, 0, 0, 1, 0, 0, 0,184,236,110, 10, 56,236,110, 10, 0, 0, 0, 0, -254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,236,110, 10,194, 0, 0, 0, 1, 0, 0, 0,248,236,110, 10, -120,236,110, 10, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,236,110, 10,194, 0, 0, 0, - 1, 0, 0, 0, 56,237,110, 10,184,236,110, 10, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,237,110, 10,194, 0, 0, 0, 1, 0, 0, 0,120,237,110, 10,248,236,110, 10, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,120,237,110, 10,194, 0, 0, 0, 1, 0, 0, 0,184,237,110, 10, 56,237,110, 10, 0, 0, 0, 0, - 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,237,110, 10,194, 0, 0, 0, 1, 0, 0, 0,248,237,110, 10, -120,237,110, 10, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,237,110, 10,194, 0, 0, 0, - 1, 0, 0, 0, 56,238,110, 10,184,237,110, 10, 0, 0, 0, 0, 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,238,110, 10,194, 0, 0, 0, 1, 0, 0, 0,120,238,110, 10,248,237,110, 10, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,120,238,110, 10,194, 0, 0, 0, 1, 0, 0, 0,184,238,110, 10, 56,238,110, 10, 0, 0, 0, 0, - 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,238,110, 10,194, 0, 0, 0, 1, 0, 0, 0,248,238,110, 10, -120,238,110, 10, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,238,110, 10,194, 0, 0, 0, - 1, 0, 0, 0, 56,239,110, 10,184,238,110, 10, 0, 0, 0, 0,192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,239,110, 10,194, 0, 0, 0, 1, 0, 0, 0,120,239,110, 10,248,238,110, 10, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,120,239,110, 10,194, 0, 0, 0, 1, 0, 0, 0,184,239,110, 10, 56,239,110, 10, 0, 0, 0, 0, - 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,184,239,110, 10,194, 0, 0, 0, 1, 0, 0, 0,248,239,110, 10, -120,239,110, 10, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,248,239,110, 10,194, 0, 0, 0, - 1, 0, 0, 0, 56,240,110, 10,184,239,110, 10, 0, 0, 0, 0, 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 56,240,110, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,239,110, 10, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,120,240,110, 10,195, 0, 0, 0, 1, 0, 0, 0,192,240,110, 10, 0, 0, 0, 0, 56,236,110, 10, -120,236,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,240,110, 10,195, 0, 0, 0, 1, 0, 0, 0, - 8,241,110, 10,120,240,110, 10, 56,236,110, 10,248,236,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8,241,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 80,241,110, 10,192,240,110, 10,120,236,110, 10, 56,237,110, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,241,110, 10,195, 0, 0, 0, 1, 0, 0, 0,152,241,110, 10, 8,241,110, 10, -248,236,110, 10, 56,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,241,110, 10,195, 0, 0, 0, - 1, 0, 0, 0,224,241,110, 10, 80,241,110, 10,248,235,110, 10,120,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224,241,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 40,242,110, 10,152,241,110, 10,184,236,110, 10,120,237,110, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40,242,110, 10,195, 0, 0, 0, 1, 0, 0, 0,112,242,110, 10, -224,241,110, 10, 56,237,110, 10,184,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,242,110, 10, -195, 0, 0, 0, 1, 0, 0, 0,184,242,110, 10, 40,242,110, 10,120,237,110, 10,248,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184,242,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 0,243,110, 10,112,242,110, 10,184,236,110, 10, - 56,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0,243,110, 10,195, 0, 0, 0, 1, 0, 0, 0, - 72,243,110, 10,184,242,110, 10,248,237,110, 10, 56,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72,243,110, 10,195, 0, 0, 0, 1, 0, 0, 0,144,243,110, 10, 0,243,110, 10,248,235,110, 10,120,238,110, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,243,110, 10,195, 0, 0, 0, 1, 0, 0, 0,216,243,110, 10, 72,243,110, 10, -184,237,110, 10,184,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216,243,110, 10,195, 0, 0, 0, - 1, 0, 0, 0, 32,244,110, 10,144,243,110, 10,120,237,110, 10,184,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 32,244,110, 10,195, 0, 0, 0, 1, 0, 0, 0,104,244,110, 10,216,243,110, 10,120,238,110, 10,184,238,110, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,244,110, 10,195, 0, 0, 0, 1, 0, 0, 0,176,244,110, 10, - 32,244,110, 10,120,238,110, 10,248,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,244,110, 10, -195, 0, 0, 0, 1, 0, 0, 0,248,244,110, 10,104,244,110, 10,184,238,110, 10,248,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,248,244,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 64,245,110, 10,176,244,110, 10,248,236,110, 10, - 56,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,245,110, 10,195, 0, 0, 0, 1, 0, 0, 0, -136,245,110, 10,248,244,110, 10,184,237,110, 10, 56,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -136,245,110, 10,195, 0, 0, 0, 1, 0, 0, 0,208,245,110, 10, 64,245,110, 10,248,238,110, 10, 56,239,110, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,245,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 24,246,110, 10,136,245,110, 10, -120,238,110, 10,120,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,246,110, 10,195, 0, 0, 0, - 1, 0, 0, 0, 96,246,110, 10,208,245,110, 10,248,238,110, 10,184,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 96,246,110, 10,195, 0, 0, 0, 1, 0, 0, 0,168,246,110, 10, 24,246,110, 10,120,239,110, 10,184,239,110, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,246,110, 10,195, 0, 0, 0, 1, 0, 0, 0,240,246,110, 10, - 96,246,110, 10,248,237,110, 10,248,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,246,110, 10, -195, 0, 0, 0, 1, 0, 0, 0, 56,247,110, 10,168,246,110, 10,184,237,110, 10,248,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 56,247,110, 10,195, 0, 0, 0, 1, 0, 0, 0,128,247,110, 10,240,246,110, 10, 56,237,110, 10, - 56,240,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,247,110, 10,195, 0, 0, 0, 1, 0, 0, 0, -200,247,110, 10, 56,247,110, 10, 56,238,110, 10, 56,240,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -200,247,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 16,248,110, 10,128,247,110, 10,248,239,110, 10, 56,240,110, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,248,110, 10,195, 0, 0, 0, 1, 0, 0, 0, 88,248,110, 10,200,247,110, 10, -248,236,110, 10,120,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,248,110, 10,195, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 16,248,110, 10, 56,239,110, 10,184,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,160,248,110, 10,197, 0, 0, 0, 1, 0, 0, 0,128,251,110, 10, 0, 0, 0, 0,248,236,110, 10, 56,236,110, 10, -120,236,110, 10, 56,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, - 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 80,172,111, 10, 80,172,111, 10, 48,249,110, 10, 88,250,110, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,249,110, 10,198, 0, 0, 0, - 1, 0, 0, 0, 88,250,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,250,110, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,249,110, 10, 0, 0, 0, 0, 0,240,109, 69, - 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, - 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,251,110, 10,197, 0, 0, 0, 1, 0, 0, 0, 96, 29,111, 10, -160,248,110, 10,120,237,110, 10,248,237,110, 10, 56,238,110, 10,184,236,110, 10, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 21,111, 10, - 56, 28,111, 10, 16,252,110, 10, 56,253,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 16,252,110, 10,198, 0, 0, 0, 1, 0, 0, 0, 56,253,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, - 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,253,110, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 16,252,110, 10, 0, 0, 0, 0, 0, 0, 94, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, - 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, - 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,254,110, 10, -240, 19,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,254,110, 10, -196, 0, 0, 0, 1, 0, 0, 0,208,255,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, - 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,205, 0, 36, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,255,110, 10,196, 0, 0, 0, 1, 0, 0, 0, 64, 1,111, 10, - 96,254,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,115, 99,101,110,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64, 1,111, 10,196, 0, 0, 0, 1, 0, 0, 0,176, 2,111, 10,208,255,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 83, 67, 69, 78, 69, 95, 80, 84, 95,117,110,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 85,110,105,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 50,255, 63, 1, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176, 2,111, 10,196, 0, 0, 0, - 1, 0, 0, 0, 32, 4,111, 10, 64, 1,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121, -105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,107,101,121, -105,110,103, 95,115,101,116,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75,101,121,105,110,103, 32, 83,101,116,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213,254, 63, 1, 69, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32, 4,111, 10,196, 0, 0, 0, 1, 0, 0, 0,144, 5,111, 10,176, 2,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 69, 78, 69, 95, 80, 84, 95,112,104,121,115,105, 99,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 71,114, 97,118,105,116,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,254, 63, 1, 36, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -144, 5,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 7,111, 10, 32, 4,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100, -101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255, -205, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 7,111, 10,196, 0, 0, 0, 1, 0, 0, 0, -112, 8,111, 10,144, 5,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,205, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,112, 8,111, 10,196, 0, 0, 0, 1, 0, 0, 0,224, 9,111, 10, 0, 7,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140,254,205, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,224, 9,111, 10, -196, 0, 0, 0, 1, 0, 0, 0, 80, 11,111, 10,112, 8,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, - 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,205, 0, 58, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 11,111, 10,196, 0, 0, 0, 1, 0, 0, 0,192, 12,111, 10, -224, 9,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,205, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,192, 12,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 48, 14,111, 10, 80, 11,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 35,253,205, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 14,111, 10,196, 0, 0, 0, - 1, 0, 0, 0,160, 15,111, 10,192, 12,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, -114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101, -114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,205, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160, 15,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 16, 17,111, 10, 48, 14,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110, -103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,205, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 16, 17,111, 10,196, 0, 0, 0, 1, 0, 0, 0,128, 18,111, 10,160, 15,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109, -112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219,252, -205, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 18,111, 10,196, 0, 0, 0, 1, 0, 0, 0, -240, 19,111, 10, 16, 17,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, - 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105, -111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,205, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,240, 19,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 18,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,195,252,205, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 96, 21,111, 10, -164, 0, 0, 0, 1, 0, 0, 0, 56, 28,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0, -160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112, 22,111, 10,198, 0, 0, 0, 1, 0, 0, 0,152, 23,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 23,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112, 22,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 24,111, 10, - 68, 65, 84, 65, 72, 3, 0, 0,192, 24,111, 10,158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, - 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, - 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195, -115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, - 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 56, 28,111, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 21,111, 10,112, 22,111, 10,152, 23,111, 10, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 96, 29,111, 10,197, 0, 0, 0, 1, 0, 0, 0, 16, 40,111, 10, -128,251,110, 10,248,235,110, 10,120,238,110, 10,184,238,110, 10,120,237,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 83, 0, 0, 0, 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 32,111, 10, -232, 38,111, 10,240, 29,111, 10, 24, 31,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,240, 29,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 31,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 31,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -240, 29,111, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, - 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, - 26, 0, 0, 0, 83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 64, 32,111, 10, -174, 0, 0, 0, 1, 0, 0, 0,232, 38,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 32, 33,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 72, 34,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 34,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 32, 33,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, - 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112, 35,111, 10, 68, 65, 84, 65, 72, 3, 0, 0,112, 35,111, 10, -158, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 38,111, 10,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 64, 32,111, 10, 32, 33,111, 10, 72, 34,111, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0, 16, 40,111, 10,197, 0, 0, 0, 1, 0, 0, 0,112, 55,111, 10, 96, 29,111, 10,248,237,110, 10,248,239,110, 10, - 56,240,110, 10, 56,238,110, 10, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0, -251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 42,111, 10, 72, 54,111, 10,160, 40,111, 10,200, 41,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 40,111, 10,198, 0, 0, 0, - 1, 0, 0, 0,200, 41,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, - 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,222, 0, 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 4, 0, 0,254, 4, 0, 0, 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222, 0, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,200, 41,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160, 40,111, 10, 0, 0, 0, 0, 0,128,131, 67, - 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, - 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, - 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0,225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 1, 0, 0,240, 42,111, 10,168, 0, 0, 0, 1, 0, 0, 0,112, 47,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 32, 44,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 68, 65, 84, 65, 12, 0, 0, 0, 32, 44,111, 10,221, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 88, 44,111, 10, - 68, 65, 84, 65,156, 0, 0, 0, 88, 44,111, 10,220, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,240,212,114, 10, - 19, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 20, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 21, 0, 1, 0, 1, 0, 1, 0, -240,212,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,208,229,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,240,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0, 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,176,248,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 56, 13,115, 10, - 0, 0, 0, 0, 1, 0, 1, 0,168,244,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 72,226,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, -152,236,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,225,114, 10, 68, 65, 84, 65,248, 0, 0, 0, 32, 45,111, 10,198, 0, 0, 0, - 1, 0, 0, 0, 72, 46,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, - 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, - 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 72, 46,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 45,111, 10, 0, 0, 0, 0, 0, 0,150, 67, - 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, - 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,112, 47,111, 10,164, 0, 0, 0, 1, 0, 0, 0, 72, 54,111, 10, -240, 42,111, 10, 32, 45,111, 10, 72, 46,111, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,128, 48,111, 10,198, 0, 0, 0, 1, 0, 0, 0,168, 49,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 49,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128, 48,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208, 50,111, 10, 68, 65, 84, 65, 72, 3, 0, 0,208, 50,111, 10, -158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 54,111, 10,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,112, 47,111, 10,128, 48,111, 10,168, 49,111, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,112, 55,111, 10,197, 0, 0, 0, 1, 0, 0, 0,168, 79,111, 10, 16, 40,111, 10,248,238,110, 10, 56,239,110, 10, -184,237,110, 10,184,238,110, 10, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2, -102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 75,111, 10,200, 78,111, 10, 0, 56,111, 10,176, 70,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 56,111, 10,198, 0, 0, 0, - 1, 0, 0, 0, 40, 57,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,192, 23, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 95, 2, 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -193, 1, 0, 0, 31, 4, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 95, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 40, 57,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 80, 58,111, 10, 0, 56,111, 10, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 58,111, 10,198, 0, 0, 0, 1, 0, 0, 0,120, 59,111, 10, - 40, 57,111, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 59,111, 10, -198, 0, 0, 0, 1, 0, 0, 0,176, 70,111, 10, 80, 58,111, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 60,111, 10, 64, 69,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,160, 60,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 16, 62,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16, 62,111, 10, -196, 0, 0, 0, 1, 0, 0, 0,128, 63,111, 10,160, 60,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80, -101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 58, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 63,111, 10,196, 0, 0, 0, 1, 0, 0, 0,240, 64,111, 10, - 16, 62,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111, -112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111, -112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,240, 64,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 96, 66,111, 10,128, 63,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,211,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96, 66,111, 10,196, 0, 0, 0, - 1, 0, 0, 0,208, 67,111, 10,240, 64,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, - 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, - 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73, -109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187,252,163, 0, 0, 0, 20, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208, 67,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 64, 69,111, 10, 96, 66,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101, -110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,163,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 64, 69,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 67,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255, -163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 70,111, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,120, 59,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, - 31, 4, 0, 0,111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 71,111, 10, 68, 65, 84, 65, 72, 3, 0, 0, -216, 71,111, 10,158, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, -111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63, -158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, 80,185, 70,188, 0, 0, 82,180,206, 44,182,190, -198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65,104,156, 5,194,212,247,159,192,235, 62,114, 66, - 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, 48,180, 81,191,184,158, 81,191,117, 90,127, 63, -158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 75,111, 10, -159, 0, 0, 0, 1, 0, 0, 0,200, 78,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,120, 76,111, 10,198, 0, 0, 0, 1, 0, 0, 0,160, 77,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 77,111, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,120, 76,111, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, -200, 78,111, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 75,111, 10,120, 76,111, 10,160, 77,111, 10, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,168, 79,111, 10,197, 0, 0, 0, 1, 0, 0, 0, 8,116,111, 10,112, 55,111, 10,120,238,110, 10, -120,239,110, 10,184,239,110, 10,248,238,110, 10, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,255, 0, 0, 0, - 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 84,111, 10, 40,115,111, 10, 56, 80,111, 10, -176, 83,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 80,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 96, 81,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,224, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,192, 1, 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96, 81,111, 10,198, 0, 0, 0, 1, 0, 0, 0,136, 82,111, 10, 56, 80,111, 10, 0, 0, 0, 0, - 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0, -217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0,145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 0, 0, 0,255, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 82,111, 10,198, 0, 0, 0, 1, 0, 0, 0, -176, 83,111, 10, 96, 81,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, -191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176, 83,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 82,111, 10, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, - 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0, -144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0,111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,216, 84,111, 10,163, 0, 0, 0, 1, 0, 0, 0,160, 89,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 85,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224, 85,111, 10, 22, 1, 0, 0, - 1, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 40, 86,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 80, 87,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 87,111, 10,198, 0, 0, 0, 1, 0, 0, 0,120, 88,111, 10, - 40, 86,111, 10, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, - 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0, -146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 88,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 87,111, 10, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, - 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,160, 12, 0, 0,160, 89,111, 10,169, 0, 0, 0, 1, 0, 0, 0,176,111,111, 10,216, 84,111, 10, 40, 86,111, 10, -120, 88,111, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,102,111, 10, -198, 0, 0, 0, 1, 0, 0, 0,152,103,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,152,103,111, 10,198, 0, 0, 0, 1, 0, 0, 0,192,104,111, 10,112,102,111, 10, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,104,111, 10,198, 0, 0, 0, 1, 0, 0, 0, -232,105,111, 10,152,103,111, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232,105,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 16,107,111, 10,192,104,111, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,107,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,105,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,108,111, 10, 68, 65, 84, 65, 72, 3, 0, 0, 56,108,111, 10,158, 0, 0, 0, - 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, - 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, - 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67, -151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, - 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,111,111, 10,159, 0, 0, 0, 1, 0, 0, 0, - 40,115,111, 10,160, 89,111, 10,112,102,111, 10, 16,107,111, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216,112,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,114,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,114,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,112,111, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 40,115,111, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,176,111,111, 10,216,112,111, 10, 0,114,111, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 8,116,111, 10,197, 0, 0, 0, 1, 0, 0, 0,240,156,111, 10,168, 79,111, 10,120,239,110, 10,248,236,110, 10, 56,239,110, 10, -184,239,110, 10, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,120,111, 10, 16,156,111, 10,152,116,111, 10,232,118,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,116,111, 10,198, 0, 0, 0, 1, 0, 0, 0, -192,117,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, - 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, - 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -191, 1, 0, 0, 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -192,117,111, 10,198, 0, 0, 0, 1, 0, 0, 0,232,118,111, 10,152,116,111, 10, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, -159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, - 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0,160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,118,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,117,111, 10, - 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0,199,195, 0, 0, 0, 0, -231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, 0, 64, 28, 70, - 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, 27, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 16,120,111, 10, 23, 1, 0, 0, - 1, 0, 0, 0,192,125,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,121,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 72,122,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 78, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 49, 2, 0, 0, - 74, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,122,111, 10,198, 0, 0, 0, - 1, 0, 0, 0,112,123,111, 10, 32,121,111, 10, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 72, 67, 0, 0,219,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0, -199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, - 6, 0,217, 0,200, 1,200, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 0, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -217, 0,200, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112,123,111, 10,198, 0, 0, 0, 1, 0, 0, 0,152,124,111, 10, 72,122,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,159, 3, 0, 0, 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,124,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -112,123,111, 10, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, - 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,199, 1, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,198, 2, 0, 0, 18, 0, 0, 0,199, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, - 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,199, 2,200, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,159, 3, 0, 0, - 75, 2, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 2,200, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,192,125,111, 10, -163, 0, 0, 0, 1, 0, 0, 0,136,130,111, 10, 16,120,111, 10, 32,121,111, 10,152,124,111, 10, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,200,126,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,200,126,111, 10, 22, 1, 0, 0, 1, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,127,111, 10,198, 0, 0, 0, 1, 0, 0, 0, - 56,128,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, - 0,192, 41, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, - 26, 0,160, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -159, 3, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 56,128,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 96,129,111, 10, 16,127,111, 10, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0, -163, 3, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0, -163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,129,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,128,111, 10, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 12, 0, 0,136,130,111, 10,169, 0, 0, 0, - 1, 0, 0, 0,152,152,111, 10,192,125,111, 10, 16,127,111, 10, 96,129,111, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,143,111, 10,198, 0, 0, 0, 1, 0, 0, 0,128,144,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0, -110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,144,111, 10,198, 0, 0, 0, - 1, 0, 0, 0,168,145,111, 10, 88,143,111, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, - 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,168,145,111, 10,198, 0, 0, 0, 1, 0, 0, 0,208,146,111, 10,128,144,111, 10, 0, 0, 0, 0, 0, 0, 16, 67, - 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,146,111, 10,198, 0, 0, 0, 1, 0, 0, 0,248,147,111, 10, -168,145,111, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, - 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0, -104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0, -111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,147,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,146,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,149,111, 10, - 68, 65, 84, 65, 72, 3, 0, 0, 32,149,111, 10,158, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, - 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, - 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, - 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, - 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191, -184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, - 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195, -136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, - 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191, -184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, - 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, - 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,152,152,111, 10,159, 0, 0, 0, 1, 0, 0, 0, 16,156,111, 10,136,130,111, 10, 88,143,111, 10,248,147,111, 10, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,153,111, 10,198, 0, 0, 0, 1, 0, 0, 0,232,154,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,154,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,153,111, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,180, 0, 0, 0, 16,156,111, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,152,111, 10,192,153,111, 10, -232,154,111, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,240,156,111, 10,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 8,116,111, 10,248,239,110, 10,184,237,110, 10, 56,237,110, 10, 56,240,110, 10, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,163,111, 10, - 64,171,111, 10,128,157,111, 10,168,158,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,128,157,111, 10,198, 0, 0, 0, 1, 0, 0, 0,168,158,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, - 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,158,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -128,157,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, - 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,208,159,111, 10, 68, 65, 84, 65, 72, 3, 0, 0,208,159,111, 10, -158, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, - 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, - 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, - 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, -195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, -158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, -149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, -152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, -180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, -216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,163,111, 10,159, 0, 0, 0, - 1, 0, 0, 0,192,166,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,112,164,111, 10,198, 0, 0, 0, 1, 0, 0, 0,152,165,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 1, 26, 0,132, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,128, 7, 0, 0,249, 3, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1, 26, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,165,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -112,164,111, 10, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,185, 67, 0, 0, 62,195, - 0, 0, 0, 0,115, 1, 0, 0,132, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,114, 1, 0, 0, 18, 0, 0, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,132, 1,208, 0,115, 1, -190, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,253, 5, 0, 0,128, 7, 0, 0, - 41, 3, 0, 0,248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 1,208, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 1, 0, 0,192,166,111, 10, -168, 0, 0, 0, 1, 0, 0, 0, 64,171,111, 10, 72,163,111, 10,112,164,111, 10,152,165,111, 10, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,167,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,240,167,111, 10,221, 0, 0, 0, 1, 0, 0, 0, - 13, 0, 0, 0, 13, 0, 0, 0, 40,168,111, 10, 68, 65, 84, 65,156, 0, 0, 0, 40,168,111, 10,220, 0, 0, 0, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0,240,212,114, 10, 19, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 20, 0, 0, 0, 1, 0, 1, 0, -240,212,114, 10, 21, 0, 1, 0, 1, 0, 1, 0,240,212,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,208,229,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0,160,240,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,176,248,114, 10, - 0, 0, 0, 0, 1, 0, 1, 0, 56, 13,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,168,244,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, - 72,226,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,152,236,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,225,114, 10, 68, 65, 84, 65, -248, 0, 0, 0,240,168,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 24,170,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,170,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -240,168,111, 10, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, - 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0, -156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, - 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 64,171,111, 10, -164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,166,111, 10,240,168,111, 10, 24,170,111, 10, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,176,172,111, 10,193, 0, 0, 0, 1, 0, 0, 0, 8, 71,112, 10, - 64,235,110, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, 48, 48, 49, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,173,111, 10,168,176,111, 10,232,176,111, 10,208,182,111, 10, - 24,183,111, 10, 24, 31,112, 10, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,173,111, 10,194, 0, 0, 0, 1, 0, 0, 0,168,173,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,173,111, 10,194, 0, 0, 0, - 1, 0, 0, 0,232,173,111, 10,104,173,111, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -232,173,111, 10,194, 0, 0, 0, 1, 0, 0, 0, 40,174,111, 10,168,173,111, 10, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 40,174,111, 10,194, 0, 0, 0, 1, 0, 0, 0,104,174,111, 10,232,173,111, 10, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,174,111, 10,194, 0, 0, 0, 1, 0, 0, 0,168,174,111, 10, - 40,174,111, 10, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,174,111, 10,194, 0, 0, 0, - 1, 0, 0, 0,232,174,111, 10,104,174,111, 10, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -232,174,111, 10,194, 0, 0, 0, 1, 0, 0, 0, 40,175,111, 10,168,174,111, 10, 0, 0, 0, 0, 20, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 40,175,111, 10,194, 0, 0, 0, 1, 0, 0, 0,104,175,111, 10,232,174,111, 10, 0, 0, 0, 0, -254, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,175,111, 10,194, 0, 0, 0, 1, 0, 0, 0,168,175,111, 10, - 40,175,111, 10, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,175,111, 10,194, 0, 0, 0, - 1, 0, 0, 0,232,175,111, 10,104,175,111, 10, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -232,175,111, 10,194, 0, 0, 0, 1, 0, 0, 0, 40,176,111, 10,168,175,111, 10, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 40,176,111, 10,194, 0, 0, 0, 1, 0, 0, 0,104,176,111, 10,232,175,111, 10, 0, 0, 0, 0, - 0, 2, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,104,176,111, 10,194, 0, 0, 0, 1, 0, 0, 0,168,176,111, 10, - 40,176,111, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,168,176,111, 10,194, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,104,176,111, 10, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -232,176,111, 10,195, 0, 0, 0, 1, 0, 0, 0, 48,177,111, 10, 0, 0, 0, 0,168,173,111, 10,232,173,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,177,111, 10,195, 0, 0, 0, 1, 0, 0, 0,120,177,111, 10,232,176,111, 10, -168,173,111, 10,104,174,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,177,111, 10,195, 0, 0, 0, - 1, 0, 0, 0,192,177,111, 10, 48,177,111, 10,232,173,111, 10,168,174,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,192,177,111, 10,195, 0, 0, 0, 1, 0, 0, 0, 8,178,111, 10,120,177,111, 10,104,174,111, 10,168,174,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,178,111, 10,195, 0, 0, 0, 1, 0, 0, 0, 80,178,111, 10, -192,177,111, 10, 40,174,111, 10, 40,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,178,111, 10, -195, 0, 0, 0, 1, 0, 0, 0,152,178,111, 10, 8,178,111, 10,232,174,111, 10, 40,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,152,178,111, 10,195, 0, 0, 0, 1, 0, 0, 0,224,178,111, 10, 80,178,111, 10,168,174,111, 10, -104,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,178,111, 10,195, 0, 0, 0, 1, 0, 0, 0, - 40,179,111, 10,152,178,111, 10,104,174,111, 10,104,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,179,111, 10,195, 0, 0, 0, 1, 0, 0, 0,112,179,111, 10,224,178,111, 10,232,174,111, 10,104,175,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,179,111, 10,195, 0, 0, 0, 1, 0, 0, 0,184,179,111, 10, 40,179,111, 10, -168,174,111, 10, 40,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,179,111, 10,195, 0, 0, 0, - 1, 0, 0, 0, 0,180,111, 10,112,179,111, 10,104,174,111, 10,168,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 0,180,111, 10,195, 0, 0, 0, 1, 0, 0, 0, 72,180,111, 10,184,179,111, 10,104,175,111, 10,232,175,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,180,111, 10,195, 0, 0, 0, 1, 0, 0, 0,144,180,111, 10, - 0,180,111, 10,168,175,111, 10,232,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,180,111, 10, -195, 0, 0, 0, 1, 0, 0, 0,216,180,111, 10, 72,180,111, 10,168,175,111, 10, 40,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216,180,111, 10,195, 0, 0, 0, 1, 0, 0, 0, 32,181,111, 10,144,180,111, 10,232,175,111, 10, - 40,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,181,111, 10,195, 0, 0, 0, 1, 0, 0, 0, -104,181,111, 10,216,180,111, 10,104,173,111, 10,104,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -104,181,111, 10,195, 0, 0, 0, 1, 0, 0, 0,176,181,111, 10, 32,181,111, 10,104,176,111, 10,168,176,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,181,111, 10,195, 0, 0, 0, 1, 0, 0, 0,248,181,111, 10,104,181,111, 10, - 40,174,111, 10,168,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,181,111, 10,195, 0, 0, 0, - 1, 0, 0, 0, 64,182,111, 10,176,181,111, 10,232,174,111, 10,168,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 64,182,111, 10,195, 0, 0, 0, 1, 0, 0, 0,136,182,111, 10,248,181,111, 10, 40,176,111, 10,104,176,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,182,111, 10,195, 0, 0, 0, 1, 0, 0, 0,208,182,111, 10, - 64,182,111, 10,232,175,111, 10,168,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,182,111, 10, -195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,182,111, 10,104,173,111, 10,168,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0, 24,183,111, 10,197, 0, 0, 0, 1, 0, 0, 0,248,185,111, 10, 0, 0, 0, 0,104,174,111, 10, -168,173,111, 10,232,173,111, 10,168,174,111, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, - 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,168, 70,112, 10,168, 70,112, 10,168,183,111, 10, -208,184,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,183,111, 10, -198, 0, 0, 0, 1, 0, 0, 0,208,184,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,208,184,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168,183,111, 10, 0, 0, 0, 0, - 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0, -129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,248,185,111, 10,197, 0, 0, 0, 1, 0, 0, 0, -168,196,111, 10, 24,183,111, 10,168,176,111, 10,232,174,111, 10, 40,175,111, 10, 40,174,111, 10, 0, 0, 0, 0, 21, 4, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, -216,188,111, 10,128,195,111, 10,136,186,111, 10,176,187,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,136,186,111, 10,198, 0, 0, 0, 1, 0, 0, 0,176,187,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,187,111, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,136,186,111, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, - 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0, -254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, -216,188,111, 10,174, 0, 0, 0, 1, 0, 0, 0,128,195,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,184,189,111, 10,198, 0, 0, 0, 1, 0, 0, 0,224,190,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,190,111, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,184,189,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,192,111, 10, 68, 65, 84, 65, 72, 3, 0, 0, - 8,192,111, 10,158, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, - 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, - 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,195,111, 10, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,188,111, 10,184,189,111, 10,224,190,111, 10, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,168,196,111, 10,197, 0, 0, 0, 1, 0, 0, 0,120,230,111, 10,248,185,111, 10,232,174,111, 10, -104,175,111, 10,168,174,111, 10, 40,175,111, 10, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, - 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,216,111, 10, 80,229,111, 10, 56,197,111, 10, - 96,198,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,197,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 96,198,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96,198,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,197,111, 10, 0, 0, 0, 0, - 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0, -234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,199,111, 10, 88,215,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,199,111, 10,196, 0, 0, 0, 1, 0, 0, 0, -248,200,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,216, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,248,200,111, 10,196, 0, 0, 0, 1, 0, 0, 0,104,202,111, 10,136,199,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,135,255,216, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,202,111, 10, -196, 0, 0, 0, 1, 0, 0, 0,216,203,111, 10,248,200,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,216, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,203,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 72,205,111, 10, -104,202,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,216, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 72,205,111, 10,196, 0, 0, 0, 1, 0, 0, 0,184,206,111, 10,216,203,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58,254,216, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,206,111, 10,196, 0, 0, 0, - 1, 0, 0, 0, 40,208,111, 10, 72,205,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, - 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, - 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,216, 0,102, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,208,111, 10,196, 0, 0, 0, 1, 0, 0, 0,152,209,111, 10,184,206,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,216, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -152,209,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 8,211,111, 10, 40,208,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, -111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253, -216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,211,111, 10,196, 0, 0, 0, 1, 0, 0, 0, -120,212,111, 10,152,209,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, -114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, -114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,120,212,111, 10,196, 0, 0, 0, 1, 0, 0, 0,232,213,111, 10, 8,211,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,219,252,216, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,232,213,111, 10, -196, 0, 0, 0, 1, 0, 0, 0, 88,215,111, 10,120,212,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109, -112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,216, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,215,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -232,213,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -224, 0, 0, 0,200,216,111, 10,164, 0, 0, 0, 1, 0, 0, 0,120,222,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,217,111, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0,219,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, - 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0,219,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 40,220,111, 10,216,217,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,220,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 80,221,111, 10, - 0,219,111, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,221,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,220,111, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0,120,222,111, 10,165, 0, 0, 0, 1, 0, 0, 0, 80,229,111, 10,200,216,111, 10,216,217,111, 10, - 80,221,111, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,223,111, 10, -198, 0, 0, 0, 1, 0, 0, 0,176,224,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176,224,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,223,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,225,111, 10, 68, 65, 84, 65, 72, 3, 0, 0,216,225,111, 10,158, 0, 0, 0, 1, 0, 0, 0, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,229,111, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -120,222,111, 10,136,223,111, 10,176,224,111, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,230,111, 10, -197, 0, 0, 0, 1, 0, 0, 0,208, 7,112, 10,168,196,111, 10,104,176,111, 10, 40,176,111, 10,232,175,111, 10,168,176,111, 10, - 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,250,111, 10,240, 6,112, 10, 8,231,111, 10,184,245,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,231,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 48,232,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,232,111, 10, -198, 0, 0, 0, 1, 0, 0, 0, 88,233,111, 10, 8,231,111, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 88,233,111, 10,198, 0, 0, 0, 1, 0, 0, 0,128,234,111, 10, 48,232,111, 10, 0, 0, 0, 0, - 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,234,111, 10,198, 0, 0, 0, 1, 0, 0, 0, -184,245,111, 10, 88,233,111, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, - 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168,235,111, 10, 72,244,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -168,235,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 24,237,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110, -115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254, -163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,237,111, 10,196, 0, 0, 0, 1, 0, 0, 0, -136,238,111, 10,168,235,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105, -108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,136,238,111, 10,196, 0, 0, 0, 1, 0, 0, 0,248,239,111, 10, 24,237,111, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,239,111, 10, -196, 0, 0, 0, 1, 0, 0, 0,104,241,111, 10,136,238,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,241,111, 10,196, 0, 0, 0, 1, 0, 0, 0,216,242,111, 10, -248,239,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, - 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, - 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,216,242,111, 10,196, 0, 0, 0, 1, 0, 0, 0, 72,244,111, 10,104,241,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,244,111, 10,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,216,242,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,245,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,234,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,246,111, 10, 68, 65, 84, 65, 72, 3, 0, 0,224,246,111, 10,158, 0, 0, 0, - 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 72, 1, 77,190, - 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, - 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, - 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, 56, 53,101, 63, - 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, 77,255,170, 64, - 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, -149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, -152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, 1,208,111, 62, - 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193,217,101,210, 65, -219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62,149, 84, 28,191, - 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190,152, 9, 52,193, - 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63,180,164, 28, 63, -149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191,216, 49, 49, 65, -152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,250,111, 10,159, 0, 0, 0, 1, 0, 0, 0, -208,253,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128,251,111, 10,198, 0, 0, 0, 1, 0, 0, 0,168,252,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,192, 59, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,239, 2, 26, 0,239, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,252,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,251,111, 10, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 40, 57, 61,194,146,211, 11, 68,174,122,214, 66, 82, 97,202, 67, -222, 2, 0, 0,239, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,221, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,221, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,239, 2,122, 1,222, 2,104, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0,239, 5, 0, 0, 26, 0, 0, 0, -147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 2,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,208,253,111, 10,175, 0, 0, 0, - 1, 0, 0, 0,144, 3,112, 10, 88,250,111, 10,128,251,111, 10,168,252,111, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,242,199, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -240,254,111, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 0,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, - 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 0,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 64, 1,112, 10,240,254,111, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 1,112, 10,198, 0, 0, 0, - 1, 0, 0, 0,104, 2,112, 10, 24, 0,112, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,104, 2,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 1,112, 10, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,144, 3,112, 10,165, 0, 0, 0, 1, 0, 0, 0,240, 6,112, 10, -208,253,111, 10,240,254,111, 10,104, 2,112, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,160, 4,112, 10,198, 0, 0, 0, 1, 0, 0, 0,200, 5,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 5,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -160, 4,112, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, - 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, - 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,240, 6,112, 10, -174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144, 3,112, 10,160, 4,112, 10,200, 5,112, 10, 15, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,208, 7,112, 10,197, 0, 0, 0, 1, 0, 0, 0, 24, 31,112, 10,120,230,111, 10,168,175,111, 10,104,174,111, 10, -104,175,111, 10,232,175,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4, -166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,176, 10,112, 10, 56, 30,112, 10, 96, 8,112, 10,136, 9,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 8,112, 10,198, 0, 0, 0, - 1, 0, 0, 0,136, 9,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, - 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,136, 9,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 8,112, 10, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, - 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,176, 10,112, 10,175, 0, 0, 0, 1, 0, 0, 0,112, 16,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 11,112, 10,198, 0, 0, 0, - 1, 0, 0, 0,248, 12,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, - 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,248, 12,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 32, 14,112, 10,208, 11,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 14,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 72, 15,112, 10, -248, 12,112, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72, 15,112, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 32, 14,112, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0,112, 16,112, 10,165, 0, 0, 0, 1, 0, 0, 0,192, 26,112, 10,176, 10,112, 10,208, 11,112, 10, - 72, 15,112, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 17,112, 10, -198, 0, 0, 0, 1, 0, 0, 0,168, 18,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168, 18,112, 10,198, 0, 0, 0, 1, 0, 0, 0,208, 19,112, 10,128, 17,112, 10, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 19,112, 10,198, 0, 0, 0, 1, 0, 0, 0, -248, 20,112, 10,168, 18,112, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0, -128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -248, 20,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 32, 22,112, 10,208, 19,112, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 22,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 20,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 23,112, 10, 68, 65, 84, 65, 72, 3, 0, 0, 72, 23,112, 10,158, 0, 0, 0, - 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, - 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, -151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192, 26,112, 10,159, 0, 0, 0, 1, 0, 0, 0, - 56, 30,112, 10,112, 16,112, 10,128, 17,112, 10, 32, 22,112, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232, 27,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 16, 29,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 29,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232, 27,112, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 56, 30,112, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192, 26,112, 10,232, 27,112, 10, 16, 29,112, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 24, 31,112, 10,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 7,112, 10,104,173,111, 10,168,175,111, 10, 40,176,111, 10, -104,176,111, 10, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 35,112, 10,200, 69,112, 10,168, 31,112, 10,248, 33,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 31,112, 10,198, 0, 0, 0, 1, 0, 0, 0, -208, 32,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, - 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, - 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -208, 32,112, 10,198, 0, 0, 0, 1, 0, 0, 0,248, 33,112, 10,168, 31,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 33,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 32,112, 10, - 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, 0, 0, 64, 60, 0, 0,125, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 12, 0, 0, 32, 35,112, 10,169, 0, 0, 0, - 1, 0, 0, 0, 64, 50,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 47,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 49,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 49,112, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,240, 47,112, 10, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, - 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0, -238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, - 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -244, 0, 0, 0, 64, 50,112, 10,175, 0, 0, 0, 1, 0, 0, 0, 0, 56,112, 10, 32, 35,112, 10,240, 47,112, 10, 24, 49,112, 10, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 51,112, 10,198, 0, 0, 0, 1, 0, 0, 0,136, 52,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 52,112, 10,198, 0, 0, 0, - 1, 0, 0, 0,176, 53,112, 10, 96, 51,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,176, 53,112, 10,198, 0, 0, 0, 1, 0, 0, 0,216, 54,112, 10,136, 52,112, 10, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 54,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -176, 53,112, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, - 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 0, 56,112, 10, -165, 0, 0, 0, 1, 0, 0, 0, 80, 66,112, 10, 64, 50,112, 10, 96, 51,112, 10,216, 54,112, 10, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16, 57,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 56, 58,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, -225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 58,112, 10, -198, 0, 0, 0, 1, 0, 0, 0, 96, 59,112, 10, 16, 57,112, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96, 59,112, 10,198, 0, 0, 0, 1, 0, 0, 0,136, 60,112, 10, 56, 58,112, 10, 0, 0, 0, 0, - 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 60,112, 10,198, 0, 0, 0, 1, 0, 0, 0, -176, 61,112, 10, 96, 59,112, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176, 61,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 60,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 62,112, 10, 68, 65, 84, 65, 72, 3, 0, 0,216, 62,112, 10,158, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, -224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191, -222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 80, 66,112, 10,159, 0, 0, 0, 1, 0, 0, 0,200, 69,112, 10, 0, 56,112, 10, 16, 57,112, 10, -176, 61,112, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 67,112, 10,198, 0, 0, 0, 1, 0, 0, 0, -160, 68,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -160, 68,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120, 67,112, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,200, 69,112, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 66,112, 10, -120, 67,112, 10,160, 68,112, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, 8, 71,112, 10,193, 0, 0, 0, 1, 0, 0, 0, -120,184,112, 10,176,172,111, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 71,112, 10,128, 74,112, 10,192, 74,112, 10, -136, 79,112, 10,208, 79,112, 10,224,136,112, 10, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0,180,251, 69, 8, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 71,112, 10,194, 0, 0, 0, 1, 0, 0, 0, - 0, 72,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 72,112, 10, -194, 0, 0, 0, 1, 0, 0, 0, 64, 72,112, 10,192, 71,112, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 64, 72,112, 10,194, 0, 0, 0, 1, 0, 0, 0,128, 72,112, 10, 0, 72,112, 10, 0, 0, 0, 0,254, 4,214, 2, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 72,112, 10,194, 0, 0, 0, 1, 0, 0, 0,192, 72,112, 10, 64, 72,112, 10, - 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 72,112, 10,194, 0, 0, 0, 1, 0, 0, 0, - 0, 73,112, 10,128, 72,112, 10, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 73,112, 10, -194, 0, 0, 0, 1, 0, 0, 0, 64, 73,112, 10,192, 72,112, 10, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 64, 73,112, 10,194, 0, 0, 0, 1, 0, 0, 0,128, 73,112, 10, 0, 73,112, 10, 0, 0, 0, 0, 24, 4, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 73,112, 10,194, 0, 0, 0, 1, 0, 0, 0,192, 73,112, 10, 64, 73,112, 10, - 0, 0, 0, 0, 24, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,192, 73,112, 10,194, 0, 0, 0, 1, 0, 0, 0, - 0, 74,112, 10,128, 73,112, 10, 0, 0, 0, 0, 24, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 0, 74,112, 10, -194, 0, 0, 0, 1, 0, 0, 0, 64, 74,112, 10,192, 73,112, 10, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, - 20, 0, 0, 0, 64, 74,112, 10,194, 0, 0, 0, 1, 0, 0, 0,128, 74,112, 10, 0, 74,112, 10, 0, 0, 0, 0, 0, 0, 68, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,128, 74,112, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 74,112, 10, - 0, 0, 0, 0, 24, 4, 68, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192, 74,112, 10,195, 0, 0, 0, 1, 0, 0, 0, - 8, 75,112, 10, 0, 0, 0, 0, 0, 72,112, 10, 64, 72,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 8, 75,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 80, 75,112, 10,192, 74,112, 10, 0, 72,112, 10,192, 72,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80, 75,112, 10,195, 0, 0, 0, 1, 0, 0, 0,152, 75,112, 10, 8, 75,112, 10, - 64, 72,112, 10, 0, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152, 75,112, 10,195, 0, 0, 0, - 1, 0, 0, 0,224, 75,112, 10, 80, 75,112, 10,192, 72,112, 10, 0, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,224, 75,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 40, 76,112, 10,152, 75,112, 10,192, 71,112, 10, 64, 73,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 76,112, 10,195, 0, 0, 0, 1, 0, 0, 0,112, 76,112, 10, -224, 75,112, 10,128, 72,112, 10, 64, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112, 76,112, 10, -195, 0, 0, 0, 1, 0, 0, 0,184, 76,112, 10, 40, 76,112, 10,192, 72,112, 10,128, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,184, 76,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 77,112, 10,112, 76,112, 10, 0, 73,112, 10, -128, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 77,112, 10,195, 0, 0, 0, 1, 0, 0, 0, - 72, 77,112, 10,184, 76,112, 10, 64, 73,112, 10,192, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 72, 77,112, 10,195, 0, 0, 0, 1, 0, 0, 0,144, 77,112, 10, 0, 77,112, 10,128, 73,112, 10,192, 73,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144, 77,112, 10,195, 0, 0, 0, 1, 0, 0, 0,216, 77,112, 10, 72, 77,112, 10, - 0, 73,112, 10, 0, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 77,112, 10,195, 0, 0, 0, - 1, 0, 0, 0, 32, 78,112, 10,144, 77,112, 10,128, 72,112, 10, 0, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 32, 78,112, 10,195, 0, 0, 0, 1, 0, 0, 0,104, 78,112, 10,216, 77,112, 10,192, 73,112, 10, 0, 74,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104, 78,112, 10,195, 0, 0, 0, 1, 0, 0, 0,176, 78,112, 10, - 32, 78,112, 10,192, 71,112, 10, 64, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176, 78,112, 10, -195, 0, 0, 0, 1, 0, 0, 0,248, 78,112, 10,104, 78,112, 10,192, 72,112, 10, 64, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,248, 78,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 64, 79,112, 10,176, 78,112, 10,128, 73,112, 10, -128, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64, 79,112, 10,195, 0, 0, 0, 1, 0, 0, 0, -136, 79,112, 10,248, 78,112, 10, 64, 73,112, 10,128, 74,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -136, 79,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 79,112, 10, 64, 74,112, 10,128, 74,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208, 79,112, 10,197, 0, 0, 0, 1, 0, 0, 0,176, 82,112, 10, 0, 0, 0, 0, -192, 72,112, 10, 0, 72,112, 10, 64, 72,112, 10, 0, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0,192, 9, 94, 10, 24,184,112, 10, 24,184,112, 10, - 96, 80,112, 10,136, 81,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 32, 96,219, 10,152,154,220, 10, 68, 65, 84, 65,248, 0, 0, 0, - 96, 80,112, 10,198, 0, 0, 0, 1, 0, 0, 0,136, 81,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 2, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 11, 94, 10,200,200,116, 11,200,200,116, 11, 0, 0, 0, 0, 0, 0, 0, 0,176,184,192, 11,240,112,164, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 81,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96, 80,112, 10, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, -214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,120, 10, 94, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,176, 82,112, 10,197, 0, 0, 0, - 1, 0, 0, 0,208,110,112, 10,208, 79,112, 10, 64, 73,112, 10,192, 73,112, 10, 0, 74,112, 10,128, 72,112, 10, 0, 0, 0, 0, - 25, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 47, 2, 0, 0, 4, 4,230, 0, 48, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -216, 6, 94, 10,208,102,112, 10,168,109,112, 10, 64, 83,112, 10,104, 84,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 24,231,222, 10, - 64,208,208, 10, 68, 65, 84, 65,248, 0, 0, 0, 64, 83,112, 10,198, 0, 0, 0, 1, 0, 0, 0,104, 84,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,102, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,229, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,230, 0, 31, 0,230, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,254, 4, 0, 0, 17, 2, 0, 0, - 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 0, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 9, 94, 10, 32,139,112, 11, 32,139,112, 11, 0, 0, 0, 0, 0, 0, 0, 0, - 88,112,199, 11, 32,116,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 84,112, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 64, 83,112, 10, 0, 0, 0, 0, 0, 0,101, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, -249,255, 84, 67,252, 63, 4,196, 0, 0, 0, 0,213, 0, 0, 0,230, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, - 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,230, 0, 17, 2,213, 0, 17, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,139,113, 11, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -230, 0, 17, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 7, 94, 10,168,230,184, 11, -184,231,112, 11,144, 85,112, 10, 96,101,112, 10, 48, 17,184, 11,104,119,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,144, 85,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 87,112, 10, 0, 0, 0, 0, 24, 8, 94, 10, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255,212, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0, 87,112, 10,196, 0, 0, 0, - 1, 0, 0, 0,112, 88,112, 10,144, 85,112, 10, 0, 14,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,212, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112, 88,112, 10,196, 0, 0, 0, 1, 0, 0, 0,224, 89,112, 10, 0, 87,112, 10, -152, 17,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,127,253,212, 0,240, 1, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -224, 89,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 80, 91,112, 10,112, 88,112, 10,152, 19,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, -212, 0,203, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 80, 91,112, 10,196, 0, 0, 0, 1, 0, 0, 0, -192, 92,112, 10,224, 89,112, 10, 48, 23,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,212, 0, 58, 0, 20, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,192, 92,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 48, 94,112, 10, 80, 91,112, 10, 72, 30,220, 10, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,164,253,212, 0,102, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48, 94,112, 10, -196, 0, 0, 0, 1, 0, 0, 0,160, 95,112, 10,192, 92,112, 10,224, 33,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,212, 0,105, 0, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160, 95,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 16, 97,112, 10, - 48, 94,112, 10,144, 42,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99,252,212, 0,168, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 16, 97,112, 10,196, 0, 0, 0, 1, 0, 0, 0,128, 98,112, 10,160, 95,112, 10,144, 44,220, 10, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,243,252,212, 0, 0, 0, 0, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128, 98,112, 10,196, 0, 0, 0, - 1, 0, 0, 0,240, 99,112, 10, 16, 97,112, 10,144, 46,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, - 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, - 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,238,251,212, 0,237, 0, 20, 0, 0, 0, - 4, 0, 6, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240, 99,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 96,101,112, 10,128, 98,112, 10, -168, 51,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,212, 0, 0, 0, 0, 0, 0, 0, 4, 0, 7, 0, 0, 0, 0, 0, 11, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 96,101,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 99,112, 10, 48, 25,220, 10, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, - 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254, -212, 0, 0, 0, 20, 0, 0, 0, 4, 0, 6, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,208,102,112, 10,164, 0, 0, 0, 1, 0, 0, 0, -168,109,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 43,117, 11,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,224,103,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 8,105,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,105,112, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,224,103,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0, -108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,106,112, 10, 68, 65, 84, 65, 72, 3, 0, 0, - 48,106,112, 10,158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, - 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, - 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,109,112, 10, -159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,102,112, 10,224,103,112, 10, 8,105,112, 10, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,208,110,112, 10,197, 0, 0, 0, 1, 0, 0, 0,128,121,112, 10,176, 82,112, 10,192, 71,112, 10, - 64, 74,112, 10,128, 74,112, 10, 64, 73,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, - 15, 15, 24, 4, 68, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,233, 93, 10,176,113,112, 10, 88,120,112, 10, 96,111,112, 10, -136,112,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 16,187,221, 10, 64,209,222, 10, 68, 65, 84, 65,248, 0, 0, 0, 96,111,112, 10, -198, 0, 0, 0, 1, 0, 0, 0,136,112,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,131, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 24, 4, 26, 0, 24, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 4, 26, 0, 5, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,234, 93, 10, - 56, 91,117, 11, 56, 91,117, 11, 0, 0, 0, 0, 0, 0, 0, 0,232,255,209, 10,152,122,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,136,112,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,111,112, 10, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 23, 4, 0, 0, 18, 0, 0, 0, 41, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 24, 4, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 26, 0, 0, 0, 67, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 42, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216,233, 93, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,123,164, 10, -232,126,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,176,113,112, 10,174, 0, 0, 0, 1, 0, 0, 0, - 88,120,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,114,112, 10, -198, 0, 0, 0, 1, 0, 0, 0,184,115,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,184,115,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,114,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, 55, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,224,116,112, 10, 68, 65, 84, 65, 72, 3, 0, 0,224,116,112, 10,158, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,120,112, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -176,113,112, 10,144,114,112, 10,184,115,112, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128,121,112, 10, -197, 0, 0, 0, 1, 0, 0, 0,224,136,112, 10,208,110,112, 10,192, 73,112, 10,128, 73,112, 10, 0, 73,112, 10, 0, 74,112, 10, - 0, 0, 0, 0, 25, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 3, 3,230, 0,138, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88,231, 93, 10, 96,124,112, 10,184,135,112, 10, 16,122,112, 10, 56,123,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, -208,233,221, 10, 56,177,209, 10, 68, 65, 84, 65,248, 0, 0, 0, 16,122,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 56,123,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,102, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,229, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,230, 0, 26, 0,230, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 4, 0, 0,254, 4, 0, 0, -161, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 0, 26, 0, 7, 0, 1, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,232, 93, 10,208,132,164, 10,208,132,164, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0,154, 14, 11, 24,130,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,123,112, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 16,122,112, 10, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 86, 67, 0, 0,188,194, 0, 0, 0, 0,213, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0,212, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,230, 0,112, 0,213, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,230, 0,112, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,232, 93, 10, - 8,122,184, 11, 8,122,184, 11, 0, 0, 0, 0, 0, 0, 0, 0,128,247,209, 10, 88,132,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 4, 1, 0, 0, 96,124,112, 10,168, 0, 0, 0, 1, 0, 0, 0,224,128,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 45,128, 11,248, 45,128, 11,144,125,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, -144,125,112, 10,221, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,200,125,112, 10, 68, 65, 84, 65,156, 0, 0, 0, -200,125,112, 10,220, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,240,212,114, 10, 19, 0, 0, 0, 1, 0, 1, 0, -240,212,114, 10, 20, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 21, 0, 1, 0, 1, 0, 1, 0,240,212,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0,208,229,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,240,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 16, 31,115, 10, - 0, 0, 0, 0, 1, 0, 1, 0,176,248,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 56, 13,115, 10, 0, 0, 0, 0, 1, 0, 1, 0, -168,244,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 72,226,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,152,236,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0,160,225,114, 10, 68, 65, 84, 65,248, 0, 0, 0,144,126,112, 10,198, 0, 0, 0, 1, 0, 0, 0,184,127,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 67, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,195, 0, 26, 0,195, 0, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, - 69, 2, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 0, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,127,112, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,144,126,112, 10, 0, 0, 0, 0, 0, 0,150, 67, 0,192,116,196, 0, 0, 0, 0, - 0, 0, 0, 0,205, 85,150, 67,223,204, 35,196, 26, 85,207,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0,155, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 0, 0, 0, 0, 1, 0, 3, 0, - 2, 0, 0, 4, 6, 0,195, 0,156, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 4, 0, 0,247, 4, 0, 0, 95, 2, 0, 0,250, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,195, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0,224,128,112, 10,164, 0, 0, 0, 1, 0, 0, 0,184,135,112, 10, 96,124,112, 10,144,126,112, 10, -184,127,112, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,129,112, 10, -198, 0, 0, 0, 1, 0, 0, 0, 24,131,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 24,131,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,129,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 64,132,112, 10, 68, 65, 84, 65, 72, 3, 0, 0, 64,132,112, 10,158, 0, 0, 0, 1, 0, 0, 0, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,135,112, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -224,128,112, 10,240,129,112, 10, 24,131,112, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,224,136,112, 10, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,121,112, 10, 64, 74,112, 10,192, 72,112, 10,128, 73,112, 10,128, 74,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 69, 0, 0, 0,186, 2, 0, 0, 1, 1, 24, 4,118, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232,234, 93, 10,192,179,112, 10, 56,183,112, 10,112,137,112, 10, 32,175,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, -152,213,220, 10, 56, 2,222, 10, 68, 65, 84, 65,248, 0, 0, 0,112,137,112, 10,198, 0, 0, 0, 1, 0, 0, 0,152,138,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,131, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 4, 26, 0, 24, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, - 69, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 4, 26, 0, 9, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,243, 93, 10, 40, 78,192, 11, 40, 78,192, 11, 0, 0, 0, 0, - 0, 0, 0, 0,184,114,164, 10,152,137,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,138,112, 10, -198, 0, 0, 0, 1, 0, 0, 0,224,159,112, 10,112,137,112, 10, 0, 0, 0, 0, 0, 0, 32, 67, 0,128,254,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 0,242,195, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,228, 1,143, 0,228, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,215, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 0,228, 1, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,240, 93, 10, -160,187,126, 11, 24, 41,128, 11,192,139,112, 10,112,158,112, 10,224,116,164, 10,192,139,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,192,139,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 48,141,112, 10, 0, 0, 0, 0,152,240, 93, 10, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 48,141,112, 10, -196, 0, 0, 0, 1, 0, 0, 0,160,142,112, 10,192,139,112, 10,208, 62,223, 10, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, - 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,142,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 16,144,112, 10, - 48,141,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104, -101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104, -101,100,105,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77,101,115,104, 32, 84,111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252,143, 0,244, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 16,144,112, 10,196, 0, 0, 0, 1, 0, 0, 0,128,145,112, 10,160,142,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,109,101,115,104,101,100,105,116, 95,111,112,116,105,111,110, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77,101,115,104, 32, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,124,252,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,145,112, 10,196, 0, 0, 0, - 1, 0, 0, 0,240,146,112, 10, 16,144,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95, 98,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66,114,117,115,104, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,226,253,143, 0, 54, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,240,146,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 96,148,112, 10,128,145,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,111, -111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,111,111,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46,253,143, 0,156, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 96,148,112, 10,196, 0, 0, 0, 1, 0, 0, 0,208,149,112, 10,240,146,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,115,116,114,111,107,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116,114,111, -107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 45,252, -143, 0,233, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,149,112, 10,196, 0, 0, 0, 1, 0, 0, 0, - 64,151,112, 10, 96,148,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, - 98,114,117,115,104, 95, 99,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,117,114,118,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254,252,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 64,151,112, 10,196, 0, 0, 0, 1, 0, 0, 0,176,152,112, 10,208,149,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,112,114,111,106,101, 99,116,112, 97,105,110,116, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,114,111,106,101, 99,116, 32, 80, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,223,252,143, 0,155, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,152,112, 10, -196, 0, 0, 0, 1, 0, 0, 0, 32,154,112, 10, 64,151,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,115, 99,117,108,112,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,182,252,143, 0,149, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 32,154,112, 10,196, 0, 0, 0, 1, 0, 0, 0,144,155,112, 10, -176,152,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116, -101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,118,101,114,116, -101,120,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,246,252,143, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,144,155,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0,157,112, 10, 32,154,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95, 98,114,117,115,104, 95,116,101,120,116,117,114,101, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84,101,120,116,117,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 91,254,143, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 0,157,112, 10,196, 0, 0, 0, - 1, 0, 0, 0,112,158,112, 10,144,155,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111, -111,108,115, 95,119,101,105,103,104,116,112, 97,105,110,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,101,105,103,104,116, 32, 84,111,111,108,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,255,143, 0,124, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,112,158,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,157,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108,115, 95,119,101,105,103,104,116,112, 97, -105,110,116, 95,111,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,252,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224,159,112, 10,198, 0, 0, 0, 1, 0, 0, 0,120,162,112, 10,152,138,112, 10, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, - 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0, 95, 0, 0, 0,214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -184,241, 93, 10, 32,107,184, 11, 32,107,184, 11, 8,161,112, 10, 8,161,112, 10, 48,121,164, 10,232,141,164, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,161,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 64,242, 93, 10, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, 0,116, 32, 77,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, 0, 0, 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -120,162,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 32,175,112, 10,224,159,112, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,143,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,102,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -171, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -171, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,172, 3,163, 0,154, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 4, 0, 0, 23, 4, 0, 0, 95, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 40,236, 93, 10, 0, 0, 0, 0, 0, 0, 0, 0,160,163,112, 10,176,173,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,160,163,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 16,165,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 16,165,112, 10,196, 0, 0, 0, 1, 0, 0, 0,128,166,112, 10,160,163,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97, -115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78,251, -163, 0, 58, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,128,166,112, 10,196, 0, 0, 0, 1, 0, 0, 0, -240,167,112, 10, 16,165,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, - 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,240,167,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 96,169,112, 10,128,166,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,208,251,163, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 96,169,112, 10, -196, 0, 0, 0, 1, 0, 0, 0,208,170,112, 10,240,167,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117, -110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,251,163, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,208,170,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 64,172,112, 10, - 96,169,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95, -111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95, -111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111, -110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,251,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 64,172,112, 10,196, 0, 0, 0, 1, 0, 0, 0,176,173,112, 10,208,170,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115,112,108, 97,121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,109,101,115,104,100,105,115,112,108, 97,121, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 77,101,115,104, 32, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 23,252,163, 0,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,176,173,112, 10,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 64,172,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,175,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,162,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 23, 4, 0, 0, 95, 0, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 3, 92, 2, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,235, 93, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 40,162,164, 10,176,161,164, 10, 0, 0, 0, 0, 72,176,112, 10, 68, 65, 84, 65, 72, 3, 0, 0, 72,176,112, 10,158, 0, 0, 0, - 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,235,211,205, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, - 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,177,157,229, 62, 44, 97, 37,191, 48,180, 81,191,184,158, 81,191,115, 90,127, 63,218,109,159, 62, 26, 63,185, 62, - 35, 44,185, 62,143,180,109,188,159, 57,184, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65,159,240,191, 62, 99,116, 85, 63, 32,181, 70,188, 0, 0, 80,179,241,212,127,190,115,160,246, 61,242,125, 14, 63, - 0, 0, 48,179, 67,108,117,194,184,204,216, 65,105,156, 5,194,213,247,159,192,235, 62,114, 66, 60,254,213,193,158,225, 3, 66, - 56, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,177,157,229, 62, 44, 97, 37,191, 48,180, 81,191,184,158, 81,191,115, 90,127, 63,218,109,159, 62, 26, 63,185, 62, - 35, 44,185, 62,143,180,109,188,159, 57,184, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65, -214,211,111, 65,239, 39, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 39, 20, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 39, 20, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,174,243, 6, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, - 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,179,112, 10,159, 0, 0, 0, 1, 0, 0, 0, - 56,183,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232,180,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 16,182,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 16,182,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,180,112, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 56,183,112, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,192,179,112, 10,232,180,112, 10, 16,182,112, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0, -120,184,112, 10,193, 0, 0, 0, 1, 0, 0, 0,168,107,113, 10, 8, 71,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97, -109,101, 32, 76,111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,185,112, 10,112,188,112, 10,176,188,112, 10, 80,194,112, 10,152,194,112, 10,128, 79,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, -240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48,185,112, 10,194, 0, 0, 0, 1, 0, 0, 0,112,185,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,185,112, 10,194, 0, 0, 0, 1, 0, 0, 0,176,185,112, 10, 48,185,112, 10, 0, 0, 0, 0, - 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,185,112, 10,194, 0, 0, 0, 1, 0, 0, 0,240,185,112, 10, -112,185,112, 10, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,185,112, 10,194, 0, 0, 0, - 1, 0, 0, 0, 48,186,112, 10,176,185,112, 10, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48,186,112, 10,194, 0, 0, 0, 1, 0, 0, 0,112,186,112, 10,240,185,112, 10, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,186,112, 10,194, 0, 0, 0, 1, 0, 0, 0,176,186,112, 10, 48,186,112, 10, 0, 0, 0, 0, -254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,186,112, 10,194, 0, 0, 0, 1, 0, 0, 0,240,186,112, 10, -112,186,112, 10, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,186,112, 10,194, 0, 0, 0, - 1, 0, 0, 0, 48,187,112, 10,176,186,112, 10, 0, 0, 0, 0, 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48,187,112, 10,194, 0, 0, 0, 1, 0, 0, 0,112,187,112, 10,240,186,112, 10, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,187,112, 10,194, 0, 0, 0, 1, 0, 0, 0,176,187,112, 10, 48,187,112, 10, 0, 0, 0, 0, -254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,176,187,112, 10,194, 0, 0, 0, 1, 0, 0, 0,240,187,112, 10, -112,187,112, 10, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,240,187,112, 10,194, 0, 0, 0, - 1, 0, 0, 0, 48,188,112, 10,176,187,112, 10, 0, 0, 0, 0,124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 48,188,112, 10,194, 0, 0, 0, 1, 0, 0, 0,112,188,112, 10,240,187,112, 10, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0,112,188,112, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,188,112, 10, 0, 0, 0, 0, -212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,176,188,112, 10,195, 0, 0, 0, 1, 0, 0, 0,248,188,112, 10, - 0, 0, 0, 0,112,185,112, 10,176,185,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,188,112, 10, -195, 0, 0, 0, 1, 0, 0, 0, 64,189,112, 10,176,188,112, 10,112,185,112, 10, 48,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 64,189,112, 10,195, 0, 0, 0, 1, 0, 0, 0,136,189,112, 10,248,188,112, 10,176,185,112, 10, -112,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,136,189,112, 10,195, 0, 0, 0, 1, 0, 0, 0, -208,189,112, 10, 64,189,112, 10, 48,186,112, 10,112,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -208,189,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 24,190,112, 10,136,189,112, 10, 48,186,112, 10,176,186,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,190,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 96,190,112, 10,208,189,112, 10, -176,186,112, 10,240,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 96,190,112, 10,195, 0, 0, 0, - 1, 0, 0, 0,168,190,112, 10, 24,190,112, 10,240,185,112, 10, 48,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,168,190,112, 10,195, 0, 0, 0, 1, 0, 0, 0,240,190,112, 10, 96,190,112, 10,240,186,112, 10, 48,187,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,240,190,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 56,191,112, 10, -168,190,112, 10, 48,185,112, 10,176,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,191,112, 10, -195, 0, 0, 0, 1, 0, 0, 0,128,191,112, 10,240,190,112, 10, 48,185,112, 10, 48,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,128,191,112, 10,195, 0, 0, 0, 1, 0, 0, 0,200,191,112, 10, 56,191,112, 10,112,186,112, 10, -112,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,200,191,112, 10,195, 0, 0, 0, 1, 0, 0, 0, - 16,192,112, 10,128,191,112, 10,240,185,112, 10,112,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 16,192,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 88,192,112, 10,200,191,112, 10,240,186,112, 10,112,187,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,192,112, 10,195, 0, 0, 0, 1, 0, 0, 0,160,192,112, 10, 16,192,112, 10, -176,187,112, 10,240,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,192,112, 10,195, 0, 0, 0, - 1, 0, 0, 0,232,192,112, 10, 88,192,112, 10,112,186,112, 10,240,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,232,192,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 48,193,112, 10,160,192,112, 10,112,187,112, 10,176,187,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,193,112, 10,195, 0, 0, 0, 1, 0, 0, 0,120,193,112, 10, -232,192,112, 10,176,186,112, 10, 48,188,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,193,112, 10, -195, 0, 0, 0, 1, 0, 0, 0,192,193,112, 10, 48,193,112, 10,176,187,112, 10, 48,188,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,192,193,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 8,194,112, 10,120,193,112, 10, 48,186,112, 10, -112,188,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,194,112, 10,195, 0, 0, 0, 1, 0, 0, 0, - 80,194,112, 10,192,193,112, 10,240,187,112, 10,112,188,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 80,194,112, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,194,112, 10, 48,188,112, 10,112,188,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,194,112, 10,197, 0, 0, 0, 1, 0, 0, 0,120,197,112, 10, 0, 0, 0, 0, - 48,186,112, 10,112,185,112, 10,176,185,112, 10,112,186,112, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 72,107,113, 10, 72,107,113, 10, - 40,195,112, 10, 80,196,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 40,195,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 80,196,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,196,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,195,112, 10, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, -214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,197,112, 10,197, 0, 0, 0, - 1, 0, 0, 0, 72,231,112, 10,152,194,112, 10, 48,187,112, 10,240,186,112, 10,112,187,112, 10,240,185,112, 10, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152,217,112, 10, 32,230,112, 10, 8,198,112, 10, 48,199,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,198,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 48,199,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,199,112, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 8,198,112, 10, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, -254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, - 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88,200,112, 10, 40,216,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 88,200,112, 10,196, 0, 0, 0, 1, 0, 0, 0,200,201,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,220,255,216, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,200,201,112, 10,196, 0, 0, 0, - 1, 0, 0, 0, 56,203,112, 10, 88,200,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101, -110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,135,255,216, 0, 61, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,203,112, 10,196, 0, 0, 0, 1, 0, 0, 0,168,204,112, 10,200,201,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -168,204,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 24,206,112, 10, 56,203,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101, -110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254, -216, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24,206,112, 10,196, 0, 0, 0, 1, 0, 0, 0, -136,207,112, 10,168,204,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108, -105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 58,254,216, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,136,207,112, 10,196, 0, 0, 0, 1, 0, 0, 0,248,208,112, 10, 24,206,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,164,253,216, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,208,112, 10, -196, 0, 0, 0, 1, 0, 0, 0,104,210,112, 10,136,207,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,216, 0,105, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104,210,112, 10,196, 0, 0, 0, 1, 0, 0, 0,216,211,112, 10, -248,208,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99, -101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,216,211,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 72,213,112, 10,104,210,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,243,252,216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 72,213,112, 10,196, 0, 0, 0, - 1, 0, 0, 0,184,214,112, 10,216,211,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, - 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, - 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219,252,216, 0, 0, 0, 20, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,214,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 40,216,112, 10, 72,213,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109,112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,216, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 40,216,112, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,214,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252, -216, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,152,217,112, 10,164, 0, 0, 0, 1, 0, 0, 0, - 72,223,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,168,218,112, 10,198, 0, 0, 0, 1, 0, 0, 0,208,219,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,219,112, 10,198, 0, 0, 0, 1, 0, 0, 0, -248,220,112, 10,168,218,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -248,220,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 32,222,112, 10,208,219,112, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,222,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,220,112, 10, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0, -235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 72,223,112, 10,165, 0, 0, 0, - 1, 0, 0, 0, 32,230,112, 10,152,217,112, 10,168,218,112, 10, 32,222,112, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,224,112, 10,198, 0, 0, 0, 1, 0, 0, 0,128,225,112, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,225,112, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 88,224,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,226,112, 10, 68, 65, 84, 65, - 72, 3, 0, 0,168,226,112, 10,158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,230,112, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,223,112, 10, 88,224,112, 10,128,225,112, 10, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,231,112, 10,197, 0, 0, 0, 1, 0, 0, 0, 32, 20,113, 10,120,197,112, 10, - 48,185,112, 10,176,186,112, 10,240,186,112, 10, 48,187,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, - 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,236,112, 10, 64, 19,113, 10, -216,231,112, 10,152,235,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216,231,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,233,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,233,112, 10,198, 0, 0, 0, 1, 0, 0, 0,152,235,112, 10,216,231,112, 10, - 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0, -203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,234,112, 10, 40,234,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,234,112, 10,196, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111, -112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 79, 71, 73, 67, 95, 80, 84, 95,112,114,111, -112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,114,111,112,101,114,116,105,101,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,196,255,203, 0, 36, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,235,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,233,112, 10, - 0, 0, 0, 0, 0, 0,160, 68, 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, - 39, 3, 0, 0, 56, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0, 38, 3, 0, 0, 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, - 0, 0, 0, 63, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, - 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 52, 0, 0, 0,192,236,112, 10,176, 0, 0, 0, - 1, 0, 0, 0,152,240,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,237,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 72,238,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,238,112, 10,198, 0, 0, 0, 1, 0, 0, 0,112,239,112, 10, 32,237,112, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, -147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,239,112, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 72,238,112, 10, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,128,191, - 0, 0, 0, 64, 0, 0,116,190, 0,128,158, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0,122, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 12, 0, 0,152,240,112, 10,169, 0, 0, 0, 1, 0, 0, 0,184,255,112, 10,192,236,112, 10, 32,237,112, 10,112,239,112, 10, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,253,112, 10,198, 0, 0, 0, - 1, 0, 0, 0,144,254,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 64, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, - 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0, 0, 3, 26, 0, 0, 3, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 3, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,144,254,112, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,253,112, 10, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,144, 82, 89,194, 41,149, 13, 68,176,122,214, 66, 82, 97,202, 67,239, 2, 0, 0, 0, 3, 0, 0, - 18, 0, 0, 0,121, 1, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,238, 2, 0, 0, - 18, 0, 0, 0,121, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 0, 3,122, 1,239, 2,104, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 2, 0, 0, 26, 0, 0, 0,147, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,184,255,112, 10,175, 0, 0, 0, 1, 0, 0, 0,120, 5,113, 10, -152,240,112, 10,104,253,112, 10,144,254,112, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 24,227, 78, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 0,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 2,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, - 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 0, 2,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 40, 3,113, 10,216, 0,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 3,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 80, 4,113, 10, - 0, 2,113, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 4,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 3,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0,120, 5,113, 10,165, 0, 0, 0, 1, 0, 0, 0,200, 15,113, 10,184,255,112, 10,216, 0,113, 10, - 80, 4,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 6,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,176, 7,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176, 7,113, 10,198, 0, 0, 0, 1, 0, 0, 0,216, 8,113, 10,136, 6,113, 10, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 8,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 10,113, 10,176, 7,113, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0, -128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0, 10,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 40, 11,113, 10,216, 8,113, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40, 11,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 10,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 12,113, 10, 68, 65, 84, 65, 72, 3, 0, 0, 80, 12,113, 10,158, 0, 0, 0, - 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, - 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, -151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 15,113, 10,159, 0, 0, 0, 1, 0, 0, 0, - 64, 19,113, 10,120, 5,113, 10,136, 6,113, 10, 40, 11,113, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -240, 16,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 18,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 18,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240, 16,113, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 64, 19,113, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,200, 15,113, 10,240, 16,113, 10, 24, 18,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, - 32, 20,113, 10,197, 0, 0, 0, 1, 0, 0, 0, 40, 46,113, 10, 72,231,112, 10,176,187,112, 10,240,187,112, 10,112,186,112, 10, -112,187,112, 10, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23,113, 10, 0, 45,113, 10,176, 20,113, 10,216, 21,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 20,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -216, 21,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,193, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,181, 67, 0, 0,200, 65, - 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,130, 1, - 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0, -254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,130, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216, 21,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176, 20,113, 10, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, - 0,128,218, 67, 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, -139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, - 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0, 0, 23,113, 10,171, 0, 0, 0, 1, 0, 0, 0,248, 27,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 25,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,208, 26,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,182, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,161, 67, 0, 0,200, 65, 0,128,161, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,108, 1, 26, 0,108, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,108, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,208, 26,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168, 25,113, 10, 0, 0, 0, 0, - 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,173, 67, 0, 0,210,195, 0, 0, 0, 0, 91, 1, 0, 0, -108, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 90, 1, 0, 0, 18, 0, 0, 0,181, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 18, 0, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,108, 1,182, 1, 91, 1,164, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 4, 0, 0,160, 5, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,108, 1,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 1, 0, 0,248, 27,113, 10,168, 0, 0, 0, 1, 0, 0, 0, -120, 32,113, 10, 0, 23,113, 10,168, 25,113, 10,208, 26,113, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 29,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0, 40, 29,113, 10,221, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, - 96, 29,113, 10, 68, 65, 84, 65,156, 0, 0, 0, 96, 29,113, 10,220, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, -240,212,114, 10, 19, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 20, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 21, 0, 1, 0, - 1, 0, 1, 0,240,212,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,208,229,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,240,114, 10, - 0, 0, 0, 0, 1, 0, 1, 0, 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,176,248,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, - 56, 13,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,168,244,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 72,226,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0,152,236,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,225,114, 10, 68, 65, 84, 65,248, 0, 0, 0, 40, 30,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 80, 31,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,162, 67, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 29, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 68, 1, 30, 0, 68, 1, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0,252, 3, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 1, 30, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 80, 31,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 30,113, 10, 0, 0, 0, 0, - 0, 0,153, 67, 0, 0,137,196, 0, 0, 0, 0, 0, 0, 0, 0,254,127,153, 67,253,127,198,195, 0, 0, 0, 0, 51, 1, 0, 0, - 68, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 50, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, - 50, 1, 0, 0, 18, 0, 0, 0,158, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 68, 1,159, 1, 51, 1,141, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 6, 0, 0,128, 7, 0, 0, 93, 2, 0, 0,251, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 1,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,120, 32,113, 10,164, 0, 0, 0, 1, 0, 0, 0, - 40, 38,113, 10,248, 27,113, 10, 40, 30,113, 10, 80, 31,113, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,136, 33,113, 10,198, 0, 0, 0, 1, 0, 0, 0,176, 34,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176, 34,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -216, 35,113, 10,136, 33,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0, -128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216, 35,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 37,113, 10,176, 34,113, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, - 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 37,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 35,113, 10, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, - 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0, -235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 40, 38,113, 10,165, 0, 0, 0, - 1, 0, 0, 0, 0, 45,113, 10,120, 32,113, 10,136, 33,113, 10, 0, 37,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 39,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 96, 40,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96, 40,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 56, 39,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 41,113, 10, 68, 65, 84, 65, - 72, 3, 0, 0,136, 41,113, 10,158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, - 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 0, 45,113, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40, 38,113, 10, 56, 39,113, 10, 96, 40,113, 10, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 46,113, 10,197, 0, 0, 0, 1, 0, 0, 0,128, 79,113, 10, 32, 20,113, 10, - 48,188,112, 10,112,188,112, 10,240,187,112, 10,176,187,112, 10, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, -186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 66,113, 10,160, 78,113, 10, -184, 46,113, 10,104, 61,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -184, 46,113, 10,198, 0, 0, 0, 1, 0, 0, 0,224, 47,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 47,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 8, 49,113, 10,184, 46,113, 10, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, -143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 49,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 48, 50,113, 10,224, 47,113, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0, -231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 48, 50,113, 10,198, 0, 0, 0, 1, 0, 0, 0,104, 61,113, 10, 8, 49,113, 10, 0, 0, 0, 0, 0, 0, 35, 67, - 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 18, 0, 0, 0,111, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 51,113, 10,248, 59,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88, 51,113, 10,196, 0, 0, 0, 1, 0, 0, 0,200, 52,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62,254,163, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,200, 52,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 56, 54,113, 10, 88, 51,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,236,253,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56, 54,113, 10,196, 0, 0, 0, - 1, 0, 0, 0,168, 55,113, 10,200, 52,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,252,163, 0, 59, 1, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168, 55,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 24, 57,113, 10, 56, 54,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,100,105,115,112,108, 97,121, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, - 24, 57,113, 10,196, 0, 0, 0, 1, 0, 0, 0,136, 58,113, 10,168, 55,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107, -103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105,252, -163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136, 58,113, 10,196, 0, 0, 0, 1, 0, 0, 0, -248, 59,113, 10, 24, 57,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, -111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102, -111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114,109, 32, 79,114,105,101,110,116, - 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,252,163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,248, 59,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 58,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,110, 97,109,101, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 73,116,101,109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,196,255,163, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 61,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 50,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 62,113, 10, - 68, 65, 84, 65, 72, 3, 0, 0,144, 62,113, 10,158, 0, 0, 0, 1, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, - 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8, 66,113, 10,159, 0, 0, 0, 1, 0, 0, 0,128, 69,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 67,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 88, 68,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0, -149, 1, 0, 0,174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88, 68,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48, 67,113, 10, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, - 56,205,190,195,156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, - 0, 0, 0, 0, 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, - 0, 0, 0, 4, 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,244, 0, 0, 0,128, 69,113, 10,175, 0, 0, 0, 1, 0, 0, 0, 64, 75,113, 10, 8, 66,113, 10, 48, 67,113, 10, - 88, 68,113, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160, 70,113, 10,198, 0, 0, 0, 1, 0, 0, 0,200, 71,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, - 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, - 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, - 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 71,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,240, 72,113, 10,160, 70,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,240, 72,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 74,113, 10,200, 71,113, 10, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, - 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 74,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,240, 72,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, - 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5, -163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, - 64, 75,113, 10,165, 0, 0, 0, 1, 0, 0, 0,160, 78,113, 10,128, 69,113, 10,160, 70,113, 10, 24, 74,113, 10, 8, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80, 76,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -120, 77,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, - 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, - 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -120, 77,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 80, 76,113, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, - 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, - 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,160, 78,113, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 75,113, 10, - 80, 76,113, 10,120, 77,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,128, 79,113, 10,197, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 40, 46,113, 10,176,186,112, 10, 48,186,112, 10,112,188,112, 10, 48,188,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 96, 82,113, 10,104,106,113, 10, 16, 80,113, 10, 56, 81,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 16, 80,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 56, 81,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56, 81,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 16, 80,113, 10, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 80, 66, 0, 0,119, 67, - 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,212, 0, -140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,140, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 4, 1, 0, 0, - 96, 82,113, 10,168, 0, 0, 0, 1, 0, 0, 0,208, 93,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 83,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,144, 83,113, 10,221, 0, 0, 0, - 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,200, 83,113, 10, 68, 65, 84, 65,156, 0, 0, 0,200, 83,113, 10,220, 0, 0, 0, - 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,240,212,114, 10, 19, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 20, 0, 0, 0, - 1, 0, 1, 0,240,212,114, 10, 21, 0, 1, 0, 1, 0, 1, 0,240,212,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,208,229,114, 10, - 0, 0, 0, 0, 1, 0, 1, 0,160,240,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 1, 0, -176,248,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 56, 13,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,168,244,114, 10, 0, 0, 0, 0, - 1, 0, 1, 0, 72,226,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,152,236,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,225,114, 10, - 68, 65, 84, 65,248, 0, 0, 0,144, 84,113, 10,198, 0, 0, 0, 1, 0, 0, 0,184, 85,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 68, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 41, 1, 0, 0, 66, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184, 85,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -224, 86,113, 10,144, 84,113, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,182, 1, - 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -224, 86,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 8, 88,113, 10,184, 85,113, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, - 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0, 67, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 88,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 48, 89,113, 10,224, 86,113, 10, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 89,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 8, 88,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,211, 0, 0, 0, 67, 1, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -212, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 90,113, 10, 68, 65, 84, 65, - 72, 3, 0, 0, 88, 90,113, 10,158, 0, 0, 0, 1, 0, 0, 0,121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0,128,111, 18,131,187, 0, 0, 0,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 15,150, 72, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,121, 92,163, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,159, 55,242, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -208, 93,113, 10,159, 0, 0, 0, 1, 0, 0, 0, 72, 97,113, 10, 96, 82,113, 10,144, 84,113, 10, 48, 89,113, 10, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 94,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 32, 96,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,195, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 24, 6, 26, 0, 24, 6, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 6, 0, 0,149, 1, 0, 0, -174, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 96,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,248, 94,113, 10, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68, 56,205,190,195, -156,102, 95, 68,160,228,244, 64,110, 44,252, 67, 7, 6, 0, 0, 24, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0, 0, 0, - 6, 6, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 6, 6, 0, 0, 18, 0, 0, 0,106, 2, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, - 0, 0, 24, 6,107, 2, 7, 6, 89, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 23, 6, 0, 0,175, 1, 0, 0, 25, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 24, 6,107, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -244, 0, 0, 0, 72, 97,113, 10,175, 0, 0, 0, 1, 0, 0, 0, 8,103,113, 10,208, 93,113, 10,248, 94,113, 10, 32, 96,113, 10, - 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,193, 67, 81, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104, 98,113, 10,198, 0, 0, 0, 1, 0, 0, 0,144, 99,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0, -111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 99,113, 10,198, 0, 0, 0, - 1, 0, 0, 0,184,100,113, 10,104, 98,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,184,100,113, 10,198, 0, 0, 0, 1, 0, 0, 0,224,101,113, 10,144, 99,113, 10, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, - 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,101,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -184,100,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, - 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, -112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 8,103,113, 10, -165, 0, 0, 0, 1, 0, 0, 0,104,106,113, 10, 72, 97,113, 10,104, 98,113, 10,224,101,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,104,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 64,105,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, -101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64,105,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 24,104,113, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, -112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, - 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,180, 0, 0, 0,104,106,113, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,103,113, 10, 24,104,113, 10, - 64,105,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 6, 0, 0, 0, 83, 78, 0, 0,140, 0, 0, 0,168,107,113, 10,193, 0, 0, 0, 1, 0, 0, 0,152, 41,114, 10, -120,184,112, 10, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,108,113, 10,224,111,113, 10, 32,112,113, 10, 80,118,113, 10, -152,118,113, 10,248, 12,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,108,113, 10,194, 0, 0, 0, 1, 0, 0, 0,160,108,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,108,113, 10,194, 0, 0, 0, - 1, 0, 0, 0,224,108,113, 10, 96,108,113, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -224,108,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 32,109,113, 10,160,108,113, 10, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 32,109,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 96,109,113, 10,224,108,113, 10, 0, 0, 0, 0, -254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,109,113, 10,194, 0, 0, 0, 1, 0, 0, 0,160,109,113, 10, - 32,109,113, 10, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,109,113, 10,194, 0, 0, 0, - 1, 0, 0, 0,224,109,113, 10, 96,109,113, 10, 0, 0, 0, 0,254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -224,109,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 32,110,113, 10,160,109,113, 10, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 32,110,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 96,110,113, 10,224,109,113, 10, 0, 0, 0, 0, -244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,110,113, 10,194, 0, 0, 0, 1, 0, 0, 0,160,110,113, 10, - 32,110,113, 10, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,110,113, 10,194, 0, 0, 0, - 1, 0, 0, 0,224,110,113, 10, 96,110,113, 10, 0, 0, 0, 0,244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -224,110,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 32,111,113, 10,160,110,113, 10, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 32,111,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 96,111,113, 10,224,110,113, 10, 0, 0, 0, 0, -248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, 96,111,113, 10,194, 0, 0, 0, 1, 0, 0, 0,160,111,113, 10, - 32,111,113, 10, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,160,111,113, 10,194, 0, 0, 0, - 1, 0, 0, 0,224,111,113, 10, 96,111,113, 10, 0, 0, 0, 0,254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, -224,111,113, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160,111,113, 10, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 32,112,113, 10,195, 0, 0, 0, 1, 0, 0, 0,104,112,113, 10, 0, 0, 0, 0,160,108,113, 10, -224,108,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,104,112,113, 10,195, 0, 0, 0, 1, 0, 0, 0, -176,112,113, 10, 32,112,113, 10,160,108,113, 10, 96,109,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -176,112,113, 10,195, 0, 0, 0, 1, 0, 0, 0,248,112,113, 10,104,112,113, 10,224,108,113, 10,160,109,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,248,112,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 64,113,113, 10,176,112,113, 10, - 96,109,113, 10,160,109,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 64,113,113, 10,195, 0, 0, 0, - 1, 0, 0, 0,136,113,113, 10,248,112,113, 10,160,109,113, 10,224,109,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,136,113,113, 10,195, 0, 0, 0, 1, 0, 0, 0,208,113,113, 10, 64,113,113, 10, 32,109,113, 10, 32,110,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,208,113,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 24,114,113, 10, -136,113,113, 10, 96,108,113, 10, 96,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 24,114,113, 10, -195, 0, 0, 0, 1, 0, 0, 0, 96,114,113, 10,208,113,113, 10, 96,109,113, 10, 96,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 96,114,113, 10,195, 0, 0, 0, 1, 0, 0, 0,168,114,113, 10, 24,114,113, 10,224,109,113, 10, -160,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,168,114,113, 10,195, 0, 0, 0, 1, 0, 0, 0, -240,114,113, 10, 96,114,113, 10, 32,110,113, 10,160,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -240,114,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 56,115,113, 10,168,114,113, 10, 96,108,113, 10,224,110,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,115,113, 10,195, 0, 0, 0, 1, 0, 0, 0,128,115,113, 10,240,114,113, 10, - 32,110,113, 10,224,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,128,115,113, 10,195, 0, 0, 0, - 1, 0, 0, 0,200,115,113, 10, 56,115,113, 10, 96,110,113, 10, 32,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,200,115,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 16,116,113, 10,128,115,113, 10,160,110,113, 10, 32,111,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 16,116,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 88,116,113, 10, -200,115,113, 10,224,110,113, 10, 32,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 88,116,113, 10, -195, 0, 0, 0, 1, 0, 0, 0,160,116,113, 10, 16,116,113, 10, 32,110,113, 10, 96,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,160,116,113, 10,195, 0, 0, 0, 1, 0, 0, 0,232,116,113, 10, 88,116,113, 10,224,109,113, 10, - 96,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,232,116,113, 10,195, 0, 0, 0, 1, 0, 0, 0, - 48,117,113, 10,160,116,113, 10,160,109,113, 10,160,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 48,117,113, 10,195, 0, 0, 0, 1, 0, 0, 0,120,117,113, 10,232,116,113, 10, 32,109,113, 10,160,111,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,117,113, 10,195, 0, 0, 0, 1, 0, 0, 0,192,117,113, 10, 48,117,113, 10, - 96,111,113, 10,160,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,192,117,113, 10,195, 0, 0, 0, - 1, 0, 0, 0, 8,118,113, 10,120,117,113, 10, 96,109,113, 10,224,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 8,118,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 80,118,113, 10,192,117,113, 10,224,109,113, 10,224,111,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,118,113, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 8,118,113, 10, 32,111,113, 10,224,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,152,118,113, 10, -197, 0, 0, 0, 1, 0, 0, 0,120,121,113, 10, 0, 0, 0, 0, 96,109,113, 10,160,108,113, 10,224,108,113, 10,160,109,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 0, 0, 0, 0, 56, 41,114, 10, 56, 41,114, 10, 40,119,113, 10, 80,120,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,119,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 80,120,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, -188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,120,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,119,113, 10, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 96, 0, 0, 0,120,121,113, 10,197, 0, 0, 0, 1, 0, 0, 0, 72,155,113, 10,152,118,113, 10, 32,110,113, 10, - 96,111,113, 10,160,111,113, 10, 32,109,113, 10, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, - 4, 4, 10, 1, 12, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,141,113, 10, 32,154,113, 10, 8,122,113, 10, - 48,123,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,122,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 48,123,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, - 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 48,123,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,122,113, 10, 0, 0, 0, 0, - 0,128,132, 67, 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, - 10, 1, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,124,113, 10, 40,140,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 88,124,113, 10,196, 0, 0, 0, 1, 0, 0, 0, -200,125,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 85, 84, 84, 79, 78, 83, 95, 80, 84, 95, 99,111,110,116,101, -120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,110,116,101,120,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220,255,248, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0,200,125,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 56,127,113, 10, 88,124,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,135,255,248, 0, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 56,127,113, 10, -196, 0, 0, 0, 1, 0, 0, 0,168,128,113, 10,200,125,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,108, 97,121,101,114,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 97,121,101,114,115, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111,255,248, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168,128,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 24,130,113, 10, - 56,127,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,100,105,109,101,110,115,105,111,110,115, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,109,101,110,115,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140,254,248, 0,203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 24,130,113, 10,196, 0, 0, 0, 1, 0, 0, 0,136,131,113, 10,168,128,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 97,110,116,105, 97,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 65,110,116,105, 45, 65,108,105, 97,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 58,254,248, 0, 58, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,136,131,113, 10,196, 0, 0, 0, - 1, 0, 0, 0,248,132,113, 10, 24,130,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, - 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,104, - 97,100,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83,104, 97,100,105,110,103, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,164,253,248, 0,102, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248,132,113, 10,196, 0, 0, 0, 1, 0, 0, 0,104,134,113, 10,136,131,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,111,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79,117,116,112,117,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35,253,248, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -104,134,113, 10,196, 0, 0, 0, 1, 0, 0, 0,216,135,113, 10,248,132,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, - 69, 82, 95, 80, 84, 95,112,101,114,102,111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,101,114,102, -111,114,109, 97,110, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11,253, -248, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,216,135,113, 10,196, 0, 0, 0, 1, 0, 0, 0, - 72,137,113, 10,104,134,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, -114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,112,111,115,116, 95,112, -114,111, 99,101,115,115,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,111,115,116, 32, 80,114,111, 99,101,115,115,105,110,103, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243,252,248, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 72,137,113, 10,196, 0, 0, 0, 1, 0, 0, 0,184,138,113, 10,216,135,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95,115,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83,116, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,238,251,248, 0,237, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,184,138,113, 10, -196, 0, 0, 0, 1, 0, 0, 0, 40,140,113, 10, 72,137,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, - 84, 95,109,111,116,105,111,110, 95, 98,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70,117,108,108, 32, 83, 97,109, -112,108,101, 32, 77,111,116,105,111,110, 32, 66,108,117,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34,254,248, 0, 0, 0, - 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 40,140,113, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -184,138,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 69, 78, 68, 69, 82, 95, 80, 84, 95, 98, 97,107,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 97,107,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,252,248, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -224, 0, 0, 0,152,141,113, 10,164, 0, 0, 0, 1, 0, 0, 0, 72,147,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,142,113, 10,198, 0, 0, 0, - 1, 0, 0, 0,208,143,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,128,241, 67, - 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,208,143,113, 10,198, 0, 0, 0, 1, 0, 0, 0,248,144,113, 10,168,142,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,144,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 32,146,113, 10, -208,143,113, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,146,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,144,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 18, 0, 0, 0,123, 1, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0, 72,147,113, 10,165, 0, 0, 0, 1, 0, 0, 0, 32,154,113, 10,152,141,113, 10,168,142,113, 10, - 32,146,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,148,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,128,149,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,128,149,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,148,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 26, 0, 0, 0, 80, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,150,113, 10, 68, 65, 84, 65, 72, 3, 0, 0,168,150,113, 10,158, 0, 0, 0, 1, 0, 0, 0, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, -237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67,129,255, 71, 66, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,128, 63, -103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, 0, 0, 32, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,154,113, 10,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 72,147,113, 10, 88,148,113, 10,128,149,113, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,155,113, 10, -197, 0, 0, 0, 1, 0, 0, 0,120,187,113, 10,120,121,113, 10,224,110,113, 10, 32,111,113, 10,160,110,113, 10, 32,110,113, 10, - 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 40,158,113, 10,152,186,113, 10,216,155,113, 10, 0,157,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,155,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,157,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,157,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,155,113, 10, 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, - 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67,234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, - 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,112, 1, 0, 0, 40,158,113, 10,179, 0, 0, 0, 1, 0, 0, 0, 24,162,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200,159,113, 10,198, 0, 0, 0, 1, 0, 0, 0,240,160,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,160,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,200,159,113, 10, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 6,188, 63, -254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, - 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -124, 2, 0, 0, 24,162,113, 10,171, 0, 0, 0, 1, 0, 0, 0, 16,167,113, 10, 40,158,113, 10,200,159,113, 10,240,160,113, 10, - 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,164,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -232,165,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -232,165,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192,164,113, 10, 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, - 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, -129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, -129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, - 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0, 16,167,113, 10,175, 0, 0, 0, 1, 0, 0, 0,208,172,113, 10, 24,162,113, 10, -192,164,113, 10,232,165,113, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,168,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 88,169,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, - 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, - 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, - 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 88,169,113, 10,198, 0, 0, 0, 1, 0, 0, 0,128,170,113, 10, 48,168,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,170,113, 10,198, 0, 0, 0, 1, 0, 0, 0,168,171,113, 10, 88,169,113, 10, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168,171,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,128,170,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0, -239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, - 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -224, 0, 0, 0,208,172,113, 10,165, 0, 0, 0, 1, 0, 0, 0, 32,183,113, 10, 16,167,113, 10, 48,168,113, 10,168,171,113, 10, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,173,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 8,175,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8,175,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 48,176,113, 10,224,173,113, 10, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,176,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 88,177,113, 10, - 8,175,113, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0, -251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 88,177,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,128,178,113, 10, 48,176,113, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,128,178,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 88,177,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,168,179,113, 10, 68, 65, 84, 65, 72, 3, 0, 0,168,179,113, 10,158, 0, 0, 0, 1, 0, 0, 0, - 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, 0, 64, 1, 53, -215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62, -147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,183,113, 10,159, 0, 0, 0, 1, 0, 0, 0,152,186,113, 10, -208,172,113, 10,224,173,113, 10,128,178,113, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,184,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,112,185,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,112,185,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,184,113, 10, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,152,186,113, 10,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 32,183,113, 10, 72,184,113, 10,112,185,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120,187,113, 10, -197, 0, 0, 0, 1, 0, 0, 0,184,215,113, 10, 72,155,113, 10, 32,111,113, 10,224,111,113, 10,224,109,113, 10,160,110,113, 10, - 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 72,197,113, 10,216,214,113, 10, 8,188,113, 10,168,192,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8,188,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 48,189,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, - 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,189,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 88,190,113, 10, 8,188,113, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 88,190,113, 10,198, 0, 0, 0, 1, 0, 0, 0,128,191,113, 10, 48,189,113, 10, 0, 0, 0, 0, - 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128,191,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -168,192,113, 10, 88,190,113, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, - 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, -122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0, -243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -168,192,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128,191,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -208,193,113, 10, 68, 65, 84, 65, 72, 3, 0, 0,208,193,113, 10,158, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, -176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, - 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, - 0,247, 70,188, 0,192, 32,182, 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, - 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190, -184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, - 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191, -222,160, 81,191,184,158, 81,191,117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63, -129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190, -237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 72,197,113, 10,159, 0, 0, 0, 1, 0, 0, 0,192,200,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, - 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, - 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,198,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -152,199,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, - 26, 0,251, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0, -243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -152,199,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,112,198,113, 10, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, - 0,192, 22, 68,125, 79, 21, 68,131,112,102, 68,133, 83, 49, 67, 62,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, -131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, - 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,251, 1,132, 1,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,192,200,113, 10,171, 0, 0, 0, 1, 0, 0, 0,184,205,113, 10, 72,197,113, 10, -112,198,113, 10,152,199,113, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,104,203,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,144,204,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,144,204,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104,203,113, 10, 0, 0, 32,193, - 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67,223, 5, 0, 0, -240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, - 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,184,205,113, 10,175, 0, 0, 0, 1, 0, 0, 0, -120,211,113, 10,192,200,113, 10,104,203,113, 10,144,204,113, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 57, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,206,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0,208,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, - 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, - 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 0,208,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 40,209,113, 10,216,206,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 40,209,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 80,210,113, 10, 0,208,113, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, - 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 80,210,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 40,209,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, - 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, -162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0, -162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,120,211,113, 10,165, 0, 0, 0, 1, 0, 0, 0,216,214,113, 10,184,205,113, 10, -216,206,113, 10, 80,210,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -136,212,113, 10,198, 0, 0, 0, 1, 0, 0, 0,176,213,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,213,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136,212,113, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,216,214,113, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,120,211,113, 10,136,212,113, 10,176,213,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -184,215,113, 10,197, 0, 0, 0, 1, 0, 0, 0,232,247,113, 10,120,187,113, 10, 96,108,113, 10, 96,110,113, 10, 32,111,113, 10, -224,110,113, 10, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, 18, 18,248, 1, 28, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,218,113, 10, 8,247,113, 10, 72,216,113, 10,112,217,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,216,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -112,217,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, - 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, - 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,217,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72,216,113, 10, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, - 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67,231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, - 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,112, 1, 0, 0,152,218,113, 10,179, 0, 0, 0, 1, 0, 0, 0,136,222,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 62, 62, 62, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -112,121,116,104,111,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,220,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 96,221,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,221,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,220,113, 10, 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,128,192, 67, - 0, 6,188, 63,254,176,189, 68, 0, 0, 0, 0, 0,128,192, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, - 0, 0, 0, 4, 10, 0,240, 5,130, 1,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,124, 2, 0, 0,136,222,113, 10,171, 0, 0, 0, 1, 0, 0, 0,128,227,113, 10,152,218,113, 10, 56,220,113, 10, - 96,221,113, 10, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,225,113, 10,198, 0, 0, 0, - 1, 0, 0, 0, 88,226,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, - 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 88,226,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 48,225,113, 10, 0, 0, 32,193, 0, 0, 0, 68, - 0, 0, 32,193, 0, 0, 0, 68,134,137,182,195,195, 68, 91, 68, 30,222,207, 66,116, 8,204, 67,223, 5, 0, 0,240, 5, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, - 18, 0, 0, 0,129, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,205,204, 76, 62, 72,225,154, 63, - 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5,130, 1,223, 5,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 26, 0, 0, 0,155, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,130, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,128,227,113, 10,175, 0, 0, 0, 1, 0, 0, 0, 64,233,113, 10, -136,222,113, 10, 48,225,113, 10, 88,226,113, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 58, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,228,113, 10,198, 0, 0, 0, - 1, 0, 0, 0,200,229,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, - 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0,224,189, 68, - 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,200,229,113, 10,198, 0, 0, 0, 1, 0, 0, 0,240,230,113, 10,160,228,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,230,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 24,232,113, 10, -200,229,113, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, - 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, - 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24,232,113, 10, -198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,240,230,113, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, - 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 18, 0, 0, 0,162, 3, 0, 0, - 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,224, 0, 0, 0, 64,233,113, 10,165, 0, 0, 0, 1, 0, 0, 0,144,243,113, 10,128,227,113, 10,160,228,113, 10, - 24,232,113, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,234,113, 10, -198, 0, 0, 0, 1, 0, 0, 0,120,235,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,120,235,113, 10,198, 0, 0, 0, 1, 0, 0, 0,160,236,113, 10, 80,234,113, 10, 0, 0, 0, 0, - 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0, -160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,236,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -200,237,113, 10,120,235,113, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, - 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, -120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0, -128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -200,237,113, 10,198, 0, 0, 0, 1, 0, 0, 0,240,238,113, 10,160,236,113, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, -121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240,238,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,237,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,240,113, 10, 68, 65, 84, 65, 72, 3, 0, 0, 24,240,113, 10,158, 0, 0, 0, - 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165, 7, 36, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, - 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190,250,186,154, 61,170,205,178, 62, - 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,160, 87,135,195,205,209,166, 67, -151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, - 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, - 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, 95, 27,254, 62, 9, 46,185, 62, - 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, - 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144,243,113, 10,159, 0, 0, 0, 1, 0, 0, 0, - 8,247,113, 10, 64,233,113, 10, 80,234,113, 10,240,238,113, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -184,244,113, 10,198, 0, 0, 0, 1, 0, 0, 0,224,245,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224,245,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,184,244,113, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0, -248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 8,247,113, 10,174, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,144,243,113, 10,184,244,113, 10,224,245,113, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -232,247,113, 10,197, 0, 0, 0, 1, 0, 0, 0,248, 12,114, 10,184,215,113, 10, 96,111,113, 10,224,109,113, 10,160,109,113, 10, -160,111,113, 10, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, 3, 3, 10, 1,174, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,250,113, 10,208, 11,114, 10,120,248,113, 10,160,249,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,248,113, 10,198, 0, 0, 0, 1, 0, 0, 0, -160,249,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, - 0,128,149, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, - 26, 0, 10, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0, -254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -160,249,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,120,248,113, 10, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, -147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, - 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 1, 0, 0,200,250,113, 10,168, 0, 0, 0, 1, 0, 0, 0, 72,255,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,251,113, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, - 12, 0, 0, 0,248,251,113, 10,221, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 48,252,113, 10, 68, 65, 84, 65, -156, 0, 0, 0, 48,252,113, 10,220, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,240,212,114, 10, 19, 0, 0, 0, - 1, 0, 1, 0,240,212,114, 10, 20, 0, 0, 0, 1, 0, 1, 0,240,212,114, 10, 21, 0, 1, 0, 1, 0, 1, 0,240,212,114, 10, - 0, 0, 0, 0, 1, 0, 1, 0,208,229,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,160,240,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, - 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 1, 0,176,248,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 56, 13,115, 10, 0, 0, 0, 0, - 1, 0, 1, 0,168,244,114, 10, 0, 0, 0, 0, 1, 0, 1, 0, 72,226,114, 10, 0, 0, 0, 0, 1, 0, 1, 0,152,236,114, 10, - 0, 0, 0, 0, 1, 0, 1, 0,160,225,114, 10, 68, 65, 84, 65,248, 0, 0, 0,248,252,113, 10,198, 0, 0, 0, 1, 0, 0, 0, - 32,254,113, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,150, 67, - 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 43, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, - 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 44, 1, - 31, 0, 44, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0, -160, 5, 0, 0,218, 2, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 44, 1, 31, 0, - 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,254,113, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,252,113, 10, 0, 0, 0, 0, 0,128,141, 67, 0, 0, 62,196, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,141, 67, 0, 0,246,194, 0, 0, 0, 0, 27, 1, 0, 0, 44, 1, 0, 0, 18, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 26, 1, 0, 0, 18, 0, 0, 0, -140, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 44, 1,141, 0, 27, 1,123, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,117, 4, 0, 0,160, 5, 0, 0, 77, 2, 0, 0,217, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 44, 1,141, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 72,255,113, 10,164, 0, 0, 0, 1, 0, 0, 0,248, 4,114, 10,200,250,113, 10, -248,252,113, 10, 32,254,113, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 88, 0,114, 10,198, 0, 0, 0, 1, 0, 0, 0,128, 1,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, - 0, 0,216, 65, 0, 0, 0, 0, 0, 0,242, 67, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0,128,241, 67, 0, 0,208, 65, 0,128,241, 67, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,228, 1, 27, 0,228, 1, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,228, 1, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 1,114, 10,198, 0, 0, 0, 1, 0, 0, 0,168, 2,114, 10, 88, 0,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,112, 0, 0, 0, -235, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 2,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,208, 3,114, 10,128, 1,114, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,208, 3,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,168, 2,114, 10, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,123, 1, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,227, 1, 0, 0, - 18, 0, 0, 0,123, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,157, 5, 0, 0,128, 7, 0, 0,112, 0, 0, 0,235, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228, 1,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,248, 4,114, 10,165, 0, 0, 0, 1, 0, 0, 0,208, 11,114, 10, - 72,255,113, 10, 88, 0,114, 10,208, 3,114, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 8, 6,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 48, 7,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,138, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 1, 26, 0, 20, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 7,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 8, 6,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 6, 0, 0,108, 7, 0, 0, - 26, 0, 0, 0, 80, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 55, 4, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 8,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, 88, 8,114, 10, -158, 0, 0, 0, 1, 0, 0, 0,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128, -226,215,163,188, 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65,237,122,111, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,161, 14,106, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, - 98,127,249, 67,129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32,193, 0, 0,128, 63,103,212,136, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, -184,175, 31, 65, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100, 32,222, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 11,114, 10,159, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,248, 4,114, 10, 8, 6,114, 10, 48, 7,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 96, 0, 0, 0,248, 12,114, 10,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,247,113, 10, 96,110,113, 10, 96,109,113, 10, -224,111,113, 10, 32,111,113, 10, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, 9, 9,248, 1, -158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 15,114, 10, 88, 40,114, 10,136, 13,114, 10,176, 14,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136, 13,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,176, 14,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, - 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,176, 14,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,136, 13,114, 10, 0, 0, 0, 0, 0,224,189, 68, - 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, - 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, - 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,124, 2, 0, 0,216, 15,114, 10,171, 0, 0, 0, 1, 0, 0, 0,208, 20,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,120,231,114, 10, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0,122, 1, 0, 0,124, 1, 0, 0, -231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -128, 18,114, 10,198, 0, 0, 0, 1, 0, 0, 0,168, 19,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 26, 0,240, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,157, 1, 0, 0,182, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,168, 19,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 18,114, 10, - 0, 0, 32,193, 0, 0, 0, 68, 0, 0, 32,193, 0, 0, 0, 68,132,137,182,195,194, 68, 91, 68,112,158, 93, 65, 8, 19,249, 67, -223, 5, 0, 0,240, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0, 0, 0,222, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,222, 5, 0, 0, 18, 0, 0, 0, 91, 2, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, -205,204, 76, 62, 72,225,154, 63, 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0,240, 5, 92, 2,223, 5, 74, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,183, 1, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 92, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,244, 0, 0, 0,208, 20,114, 10,175, 0, 0, 0, - 1, 0, 0, 0,144, 26,114, 10,216, 15,114, 10,128, 18,114, 10,168, 19,114, 10, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 57, 52, 81, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -240, 21,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 24, 23,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,230, 67, 0, 0, 0, 0, - 0, 0,216, 65, 0, 0, 0, 0, 0, 0,190, 68, 0, 0, 0, 0, 0, 0,216, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, - 26, 0, 0, 0, 0,224,189, 68, 0, 0,208, 65, 0,224,189, 68, 0, 0,208, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,240, 5, 27, 0,240, 5, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0, 85, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240, 5, 27, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 24, 23,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 64, 24,114, 10,240, 21,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,239, 5, 0, 0,112, 0, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 24,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,104, 25,114, 10, 24, 23,114, 10, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, - 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,104, 25,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 64, 24,114, 10, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,239, 5, 0, 0, - 18, 0, 0, 0,162, 3, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,239, 5, 0, 0,112, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 5,163, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,144, 26,114, 10,165, 0, 0, 0, 1, 0, 0, 0,224, 36,114, 10, -208, 20,114, 10,240, 21,114, 10,104, 25,114, 10, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,160, 27,114, 10,198, 0, 0, 0, 1, 0, 0, 0,200, 28,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 28,114, 10,198, 0, 0, 0, 1, 0, 0, 0,240, 29,114, 10, -160, 27,114, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, - 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,240, 29,114, 10, -198, 0, 0, 0, 1, 0, 0, 0, 24, 31,114, 10,200, 28,114, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 24, 31,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 64, 32,114, 10,240, 29,114, 10, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, -180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 64, 32,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 24, 31,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0, -128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 33,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, -104, 33,114, 10,158, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, - 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, -111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, - 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190, -250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, -160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, - 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 36,114, 10, -159, 0, 0, 0, 1, 0, 0, 0, 88, 40,114, 10,144, 26,114, 10,160, 27,114, 10, 64, 32,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 8, 38,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 48, 39,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48, 39,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 8, 38,114, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, - 88, 40,114, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,224, 36,114, 10, 8, 38,114, 10, 48, 39,114, 10, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,152, 41,114, 10,193, 0, 0, 0, 1, 0, 0, 0,160,109,114, 10,168,107,113, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 42,114, 10, 16, 44,114, 10, 80, 44,114, 10, 32, 47,114, 10,104, 47,114, 10, 40, 82,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 80, 42,114, 10,194, 0, 0, 0, 1, 0, 0, 0,144, 42,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 42,114, 10,194, 0, 0, 0, 1, 0, 0, 0,208, 42,114, 10, - 80, 42,114, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 42,114, 10,194, 0, 0, 0, - 1, 0, 0, 0, 16, 43,114, 10,144, 42,114, 10, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 43,114, 10,194, 0, 0, 0, 1, 0, 0, 0, 80, 43,114, 10,208, 42,114, 10, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 80, 43,114, 10,194, 0, 0, 0, 1, 0, 0, 0,144, 43,114, 10, 16, 43,114, 10, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,144, 43,114, 10,194, 0, 0, 0, 1, 0, 0, 0,208, 43,114, 10, - 80, 43,114, 10, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,208, 43,114, 10,194, 0, 0, 0, - 1, 0, 0, 0, 16, 44,114, 10,144, 43,114, 10, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 16, 44,114, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208, 43,114, 10, 0, 0, 0, 0,132, 2, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 80, 44,114, 10,195, 0, 0, 0, 1, 0, 0, 0,152, 44,114, 10, 0, 0, 0, 0,144, 42,114, 10, -208, 42,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152, 44,114, 10,195, 0, 0, 0, 1, 0, 0, 0, -224, 44,114, 10, 80, 44,114, 10,144, 42,114, 10, 80, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -224, 44,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 40, 45,114, 10,152, 44,114, 10,208, 42,114, 10,144, 43,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 40, 45,114, 10,195, 0, 0, 0, 1, 0, 0, 0,112, 45,114, 10,224, 44,114, 10, - 80, 43,114, 10,144, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112, 45,114, 10,195, 0, 0, 0, - 1, 0, 0, 0,184, 45,114, 10, 40, 45,114, 10, 80, 43,114, 10,208, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,184, 45,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 46,114, 10,112, 45,114, 10, 80, 42,114, 10, 16, 44,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 0, 46,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 72, 46,114, 10, -184, 45,114, 10, 80, 42,114, 10, 80, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72, 46,114, 10, -195, 0, 0, 0, 1, 0, 0, 0,144, 46,114, 10, 0, 46,114, 10,208, 43,114, 10, 16, 44,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,144, 46,114, 10,195, 0, 0, 0, 1, 0, 0, 0,216, 46,114, 10, 72, 46,114, 10,144, 43,114, 10, -208, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,216, 46,114, 10,195, 0, 0, 0, 1, 0, 0, 0, - 32, 47,114, 10,144, 46,114, 10, 16, 43,114, 10, 16, 44,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 32, 47,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216, 46,114, 10, 16, 43,114, 10,144, 43,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,104, 47,114, 10,197, 0, 0, 0, 1, 0, 0, 0, 72, 50,114, 10, 0, 0, 0, 0, - 80, 43,114, 10,144, 42,114, 10,208, 42,114, 10,144, 43,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0, -214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 64,109,114, 10, 64,109,114, 10, -248, 47,114, 10, 32, 49,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -248, 47,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 32, 49,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32, 49,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 47,114, 10, - 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, -112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, -214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72, 50,114, 10,197, 0, 0, 0, - 1, 0, 0, 0, 40, 82,114, 10,104, 47,114, 10, 80, 42,114, 10, 80, 43,114, 10,208, 43,114, 10, 16, 44,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,192, 55,114, 10, 72, 81,114, 10,216, 50,114, 10,152, 54,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216, 50,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 52,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0, 52,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,152, 54,114, 10,216, 50,114, 10, 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0, -254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, -202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, - 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 40, 53,114, 10, 40, 53,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0, 40, 53,114, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 77, 65, 71, 69, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,196,255,202, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152, 54,114, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 52,114, 10, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190, -205,204,148, 63, 51, 51, 13,191,154,153,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -160, 12, 0, 0,192, 55,114, 10,169, 0, 0, 0, 1, 0, 0, 0,208, 77,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,144, 68,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,184, 69,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,184, 69,114, 10,198, 0, 0, 0, 1, 0, 0, 0,224, 70,114, 10,144, 68,114, 10, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 70,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 8, 72,114, 10, -184, 69,114, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 8, 72,114, 10, -198, 0, 0, 0, 1, 0, 0, 0, 48, 73,114, 10,224, 70,114, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 48, 73,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 72,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 74,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, 88, 74,114, 10,158, 0, 0, 0, 1, 0, 0, 0, -226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181,195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53, -215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191,253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62, -232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, -172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208, 77,114, 10,159, 0, 0, 0, 1, 0, 0, 0, 72, 81,114, 10, -192, 55,114, 10,144, 68,114, 10, 48, 73,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248, 78,114, 10, -198, 0, 0, 0, 1, 0, 0, 0, 32, 80,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32, 80,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248, 78,114, 10, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 72, 81,114, 10,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,208, 77,114, 10,248, 78,114, 10, 32, 80,114, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40, 82,114, 10, -197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 72, 50,114, 10, 16, 44,114, 10,208, 43,114, 10,144, 43,114, 10, 16, 43,114, 10, - 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232,104,114, 10, 96,108,114, 10,184, 82,114, 10, 72,100,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184, 82,114, 10,198, 0, 0, 0, 1, 0, 0, 0,224, 83,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,224, 83,114, 10, -198, 0, 0, 0, 1, 0, 0, 0,232, 87,114, 10,184, 82,114, 10, 0, 0, 0, 0, 0, 0, 32, 67, 0, 64, 10,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 40, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8, 85,114, 10,120, 86,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 64, 1, 0, 0, 8, 85,114, 10,196, 0, 0, 0, 1, 0, 0, 0,120, 86,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,116,111,111,108, 95,115,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 84,111,111,108, 32, 83,104,101,108,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,196,255,143, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,120, 86,114, 10, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8, 85,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,116,111,111,108,115, 95,111, 98,106,101, 99,116,109,111,100,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 98,106,101, 99,116, 32, 84, -111,111,108,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7,254,143, 0,165, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232, 87,114, 10,198, 0, 0, 0, 1, 0, 0, 0,128, 90,114, 10, -224, 83,114, 10, 0, 0, 0, 0, 0, 0, 33, 67, 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, - 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, - 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 89,114, 10, - 16, 89,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 16, 89,114, 10, -196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,108, 97,115,116, 95,111,112,101,114, 97,116,111,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79,112,101,114, 97,116,111,114, - 0, 97,121,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,255,144, 0, 16, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,128, 90,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 72,100,114, 10, -232, 87,114, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, - 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0, -251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, - 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, - 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 91,114, 10, -216, 98,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,168, 91,114, 10, -196, 0, 0, 0, 1, 0, 0, 0, 24, 93,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, - 84, 95,111, 98,106,101, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110,115,102,111,114, -109, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,122,254,163, 0,110, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 24, 93,114, 10,196, 0, 0, 0, 1, 0, 0, 0,136, 94,114, 10, -168, 91,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95,103,112,101,110, 99,105,108, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71,114,101, 97,115,101, 32, 80,101,110, 99,105,108, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,254,163, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 64, 1, 0, 0,136, 94,114, 10,196, 0, 0, 0, 1, 0, 0, 0,248, 95,114, 10, 24, 93,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100,118,105,101,119, 95,112,114,111,112,101,114,116,105,101,115, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 86,105,101,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,213,252,163, 0, 59, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,248, 95,114, 10,196, 0, 0, 0, - 1, 0, 0, 0,104, 97,114, 10,136, 94,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 51,100, -118,105,101,119, 95,100,105,115,112,108, 97,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,105,115,112,108, 97,121, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,189,252,163, 0, 0, 0, 0, 0, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0,104, 97,114, 10,196, 0, 0, 0, 1, 0, 0, 0,216, 98,114, 10,248, 95,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, 51, 68, 95, 80, 84, 95, 98, 97, 99,107,103,114,111,117,110,100, 95,105,109, 97, -103,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 97, 99,107,103,114,111,117,110,100, 32, 73,109, 97,103,101, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,165,252,163, 0, 0, 0, 20, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, -216, 98,114, 10,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,104, 97,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 73, 69, 87, - 51, 68, 95, 80, 84, 95,116,114, 97,110,115,102,111,114,109, 95,111,114,105,101,110,116, 97,116,105,111,110, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84,114, 97,110, -115,102,111,114,109, 32, 79,114,105,101,110,116, 97,116,105,111,110,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,141,252, -163, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,100,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,128, 90,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0, -254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,101,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, -112,101,114, 10,158, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, - 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64, -136, 95,161,191,147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63, -140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190, -132, 75, 53, 62,216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65, -247, 46,190,192, 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63, -140,225, 88, 62, 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0,101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, - 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,232,104,114, 10, -159, 0, 0, 0, 1, 0, 0, 0, 96,108,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 16,106,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 56,107,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,107,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 16,106,114, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, - 96,108,114, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,104,114, 10, 16,106,114, 10, 56,107,114, 10, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 83, 78, 0, 0,140, 0, 0, 0,160,109,114, 10,193, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152, 41,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88,110,114, 10, 24,113,114, 10, 88,113,114, 10, 32,118,114, 10,104,118,114, 10,184,192,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 88,110,114, 10,194, 0, 0, 0, 1, 0, 0, 0,152,110,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,110,114, 10,194, 0, 0, 0, 1, 0, 0, 0,216,110,114, 10, - 88,110,114, 10, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,110,114, 10,194, 0, 0, 0, - 1, 0, 0, 0, 24,111,114, 10,152,110,114, 10, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,111,114, 10,194, 0, 0, 0, 1, 0, 0, 0, 88,111,114, 10,216,110,114, 10, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 88,111,114, 10,194, 0, 0, 0, 1, 0, 0, 0,152,111,114, 10, 24,111,114, 10, 0, 0, 0, 0, - 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,111,114, 10,194, 0, 0, 0, 1, 0, 0, 0,216,111,114, 10, - 88,111,114, 10, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,111,114, 10,194, 0, 0, 0, - 1, 0, 0, 0, 24,112,114, 10,152,111,114, 10, 0, 0, 0, 0,254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,112,114, 10,194, 0, 0, 0, 1, 0, 0, 0, 88,112,114, 10,216,111,114, 10, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 20, 0, 0, 0, 88,112,114, 10,194, 0, 0, 0, 1, 0, 0, 0,152,112,114, 10, 24,112,114, 10, 0, 0, 0, 0, - 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,152,112,114, 10,194, 0, 0, 0, 1, 0, 0, 0,216,112,114, 10, - 88,112,114, 10, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0,216,112,114, 10,194, 0, 0, 0, - 1, 0, 0, 0, 24,113,114, 10,152,112,114, 10, 0, 0, 0, 0, 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 20, 0, 0, 0, - 24,113,114, 10,194, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,112,114, 10, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 88,113,114, 10,195, 0, 0, 0, 1, 0, 0, 0,160,113,114, 10, 0, 0, 0, 0,152,110,114, 10, -216,110,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,160,113,114, 10,195, 0, 0, 0, 1, 0, 0, 0, -232,113,114, 10, 88,113,114, 10,152,110,114, 10, 88,111,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, -232,113,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 48,114,114, 10,160,113,114, 10,216,110,114, 10,152,111,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 48,114,114, 10,195, 0, 0, 0, 1, 0, 0, 0,120,114,114, 10,232,113,114, 10, - 88,111,114, 10,152,111,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,120,114,114, 10,195, 0, 0, 0, - 1, 0, 0, 0,192,114,114, 10, 48,114,114, 10,152,111,114, 10,216,111,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0,192,114,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 8,115,114, 10,120,114,114, 10, 88,110,114, 10, 24,112,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,115,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 80,115,114, 10, -192,114,114, 10, 88,111,114, 10, 88,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 80,115,114, 10, -195, 0, 0, 0, 1, 0, 0, 0,152,115,114, 10, 8,115,114, 10, 24,112,114, 10,152,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,152,115,114, 10,195, 0, 0, 0, 1, 0, 0, 0,224,115,114, 10, 80,115,114, 10,152,112,114, 10, -216,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,224,115,114, 10,195, 0, 0, 0, 1, 0, 0, 0, - 40,116,114, 10,152,115,114, 10, 88,112,114, 10,216,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, - 40,116,114, 10,195, 0, 0, 0, 1, 0, 0, 0,112,116,114, 10,224,115,114, 10,216,111,114, 10, 24,113,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,112,116,114, 10,195, 0, 0, 0, 1, 0, 0, 0,184,116,114, 10, 40,116,114, 10, - 24,111,114, 10, 24,113,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,184,116,114, 10,195, 0, 0, 0, - 1, 0, 0, 0, 0,117,114, 10,112,116,114, 10, 24,112,114, 10, 24,113,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 24, 0, 0, 0, 0,117,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 72,117,114, 10,184,116,114, 10, 88,110,114, 10, 24,111,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 72,117,114, 10,195, 0, 0, 0, 1, 0, 0, 0,144,117,114, 10, - 0,117,114, 10,152,111,114, 10, 88,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,144,117,114, 10, -195, 0, 0, 0, 1, 0, 0, 0,216,117,114, 10, 72,117,114, 10,216,111,114, 10,216,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0,216,117,114, 10,195, 0, 0, 0, 1, 0, 0, 0, 32,118,114, 10,144,117,114, 10, 88,111,114, 10, -152,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 32,118,114, 10,195, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,216,117,114, 10,216,111,114, 10,152,112,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -104,118,114, 10,197, 0, 0, 0, 1, 0, 0, 0, 72,121,114, 10, 0, 0, 0, 0, 88,111,114, 10,152,110,114, 10,216,110,114, 10, -152,111,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,144,212,114, 10,144,212,114, 10,248,118,114, 10, 32,120,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,248,118,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 32,120,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, - 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 32,120,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,248,118,114, 10, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, - 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 72,121,114, 10,197, 0, 0, 0, 1, 0, 0, 0,248,131,114, 10,104,118,114, 10, - 88,110,114, 10, 24,112,114, 10, 24,113,114, 10, 24,111,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,124,114, 10,208,130,114, 10, -216,121,114, 10, 0,123,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -216,121,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,123,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,123,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,216,121,114, 10, - 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,254, 4, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, -205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, - 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, 40,124,114, 10,174, 0, 0, 0, - 1, 0, 0, 0,208,130,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 8,125,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 48,126,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0,203, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 88, 6, 26, 0, 88, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 48,126,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 8,125,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 6, 0, 0, 26, 0, 0, 0, - 55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 6, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,127,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, 88,127,114, 10,158, 0, 0, 0, - 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, - 0, 0, 0,128, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, - 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65,161, 14,106, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224, 91,138, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209,252,249,195,115,253, 71,194, 0, 0, 0, 0, 0, 0, 0, 0, 98,127,249, 67, -129,255, 71, 66, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,193, - 0, 0,128, 63, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87,213,108, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0,184,175, 31, 65, - 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 52,149,147, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,208,130,114, 10,159, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 40,124,114, 10, 8,125,114, 10, 48,126,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, -248,131,114, 10,197, 0, 0, 0, 1, 0, 0, 0,208,151,114, 10, 72,121,114, 10, 24,112,114, 10,152,112,114, 10,216,111,114, 10, - 24,113,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, 8, 8,255, 4, 19, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,137,114, 10,240,150,114, 10,136,132,114, 10, 0,136,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,132,114, 10,198, 0, 0, 0, 1, 0, 0, 0, -176,133,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, - 0, 96,191, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, - 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, - 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -176,133,114, 10,198, 0, 0, 0, 1, 0, 0, 0,216,134,114, 10,136,132,114, 10, 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, -248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,134,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,136,114, 10,176,133,114, 10, - 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, -172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, - 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,136,114, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,216,134,114, 10, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, - 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, - 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, - 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, - 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -224, 0, 0, 0, 40,137,114, 10,165, 0, 0, 0, 1, 0, 0, 0,120,147,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,138,114, 10,198, 0, 0, 0, - 1, 0, 0, 0, 96,139,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0,128,191, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, - 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,252, 5, 26, 0,252, 5, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,251, 5, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -252, 5, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0, 96,139,114, 10,198, 0, 0, 0, 1, 0, 0, 0,136,140,114, 10, 56,138,114, 10, 0, 0, 0, 0, 0, 0, 15, 67, - 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, - 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,113, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,140,114, 10,198, 0, 0, 0, 1, 0, 0, 0,176,141,114, 10, - 96,139,114, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0, -102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0, -111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, - 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,141,114, 10, -198, 0, 0, 0, 1, 0, 0, 0,216,142,114, 10,136,140,114, 10, 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,251, 5, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,216,142,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,141,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 5, 0, 0,111, 0, 0, 0,223, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,252, 5,113, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,144,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, 0,144,114, 10,158, 0, 0, 0, 1, 0, 0, 0, - 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 79,145, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, - 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0, -185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63, -178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, -112,240,191, 62,108,116, 85, 63, 80,184, 70,188, 0, 0, 46,180,159, 49,181,189,125,172, 46, 61, 7,213, 73, 62, 0, 64,143,180, -182,107, 25,196, 13,135,135, 67, 70, 12,167,195, 71, 0, 72,194,225, 56, 25, 68, 38, 90,135,195,237,212,166, 67, 84, 2, 72, 66, - 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0, -162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, -178,157,229, 62,241,130,233,191,222,160, 81,191,184,158, 81,191,117, 90,127, 63, 14, 28, 97, 63, 9, 46,185, 62, 35, 44,185, 62, -145,180,109,188,119, 15,130, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 13,114,156, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120,147,114, 10,159, 0, 0, 0, 1, 0, 0, 0,240,150,114, 10, - 40,137,114, 10, 56,138,114, 10,216,142,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,148,114, 10, -198, 0, 0, 0, 1, 0, 0, 0,200,149,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, - 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, - 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,200,149,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160,148,114, 10, 0, 0, 64,192, - 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, - 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0,240,150,114, 10,174, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,120,147,114, 10,160,148,114, 10,200,149,114, 10, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,208,151,114, 10, -197, 0, 0, 0, 1, 0, 0, 0,184,192,114, 10,248,131,114, 10,152,112,114, 10, 88,111,114, 10, 88,112,114, 10,216,112,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0,157,114, 10,216,191,114, 10, 96,152,114, 10,216,155,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 96,152,114, 10,198, 0, 0, 0, 1, 0, 0, 0,136,153,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, - 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,153,114, 10, -198, 0, 0, 0, 1, 0, 0, 0,176,154,114, 10, 96,152,114, 10, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, - 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,176,154,114, 10,198, 0, 0, 0, 1, 0, 0, 0,216,155,114, 10,136,153,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,155,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,176,154,114, 10, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, - 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, - 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, - 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, - 0,157,114, 10,163, 0, 0, 0, 1, 0, 0, 0,200,161,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 8,158,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 8,158,114, 10, 22, 1, 0, 0, 1, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 80,158,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,120,159,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 38, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, - 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, - 10, 0,152, 2, 26, 0,152, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 2, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,120,159,114, 10,198, 0, 0, 0, 1, 0, 0, 0,160,160,114, 10, 80,158,114, 10, 0, 0, 0, 0, 0, 0, 55, 67, - 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 67, 0,128, 4,196, 0, 0, 64,193, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0, - 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 8, 0, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,181, 0, 24, 2,181, 0, 6, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,180, 0, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 24, 2, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,160,160,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -120,159,114, 10, 0, 0, 32,193, 0, 0,104, 68,171,170, 67,195, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68,171,170, 67,195, - 0, 0, 0, 0,210, 1, 0, 0,227, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,209, 1, 0, 0, 18, 0, 0, 0, 23, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,124,146, 72, - 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,227, 1, 24, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,181, 0, 0, 0,151, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,227, 1, 24, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,200,161,114, 10, - 23, 1, 0, 0, 1, 0, 0, 0, 80,166,114, 10, 0,157,114, 10, 80,158,114, 10,160,160,114, 10, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,240,212,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,216,162,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0,164,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,104, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, - 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,160, 3, 26, 0,160, 3, - 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0, - 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3, 26, 0, 0, 0, 1, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 0,164,114, 10, -198, 0, 0, 0, 1, 0, 0, 0, 40,165,114, 10,216,162,114, 10, 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 44, 67, 0,128,100,196, 0, 0, 0, 0,172, 0, 0, 0,189, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, - 0, 0, 0, 0,171, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,171, 0, 0, 0, 18, 0, 0, 0,163, 3, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 0, 6, 0,189, 0,164, 3,172, 0,146, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 40,165,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,164,114, 10, 0, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0,168,191, 0, 0, 20, 64, 0, 0,169,191, 0,128, 20, 64, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -160, 3, 0, 0, 0, 0, 0, 0,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 3, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 3,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 12, 0, 0, 80,166,114, 10,169, 0, 0, 0, 1, 0, 0, 0, - 96,188,114, 10,200,161,114, 10,216,162,114, 10, 40,165,114, 10, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 32,179,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 72,180,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 42, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -167, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,168, 2, 26, 0,168, 2, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0, 85, 0, 0, 0,110, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,180,114, 10,198, 0, 0, 0, 1, 0, 0, 0, -112,181,114, 10, 32,179,114, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, -255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, - 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,164, 3, - 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, -112,181,114, 10,198, 0, 0, 0, 1, 0, 0, 0,152,182,114, 10, 72,180,114, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, - 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, -119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, - 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,182,114, 10,198, 0, 0, 0, 1, 0, 0, 0,192,183,114, 10,112,181,114, 10, - 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, -163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, - 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167, 2, 0, 0,167, 2, 0, 0,111, 0, 0, 0, - 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,192,183,114, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,152,182,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,167, 2, 0, 0,111, 0, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -168, 2,164, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,184,114, 10, 68, 65, 84, 65, - 72, 3, 0, 0,232,184,114, 10,158, 0, 0, 0, 1, 0, 0, 0,226,225,191, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, - 0, 0, 0,128, 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, - 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, -164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,250, 8,140, 62,174,189, 27, 63,224, 25, 17,188, 0, 64,153,181, -195, 13,188,190,191, 73, 53, 62, 99,126, 81, 63, 0,128,163, 53,215,104, 25,196,134,132,135, 67, 37, 9,167,195,136,252, 71,194, - 3, 54, 25, 68,159, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, - 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,192, 90, 29, 63,208,249,224,190,222,160, 81,191,184,158, 81,191, -253,253,174, 63,140,225, 88, 62, 9, 46,185, 62, 35, 44,185, 62,232,229,162,188,206,156,122, 63,129, 63,228,190, 42, 61,228,190, - 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, -214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,172,148, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 96,188,114, 10,159, 0, 0, 0, 1, 0, 0, 0,216,191,114, 10, 80,166,114, 10, 32,179,114, 10,192,183,114, 10, 1, 0, 0, 0, - 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, - 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,189,114, 10,198, 0, 0, 0, 1, 0, 0, 0,176,190,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0, -126, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,176,190,114, 10,198, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0,136,189,114, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192, -246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, - 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, - 8, 0,152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -152, 4,122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -180, 0, 0, 0,216,191,114, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 96,188,114, 10,136,189,114, 10,176,190,114, 10, - 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 6, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,184,192,114, 10,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,208,151,114, 10, -216,112,114, 10, 88,112,114, 10,152,111,114, 10,216,111,114, 10, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0, -186, 2, 0, 0, 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,197,114, 10,176,211,114, 10, - 72,193,114, 10,192,196,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, - 72,193,114, 10,198, 0, 0, 0, 1, 0, 0, 0,112,194,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, - 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, - 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,112,194,114, 10,198, 0, 0, 0, 1, 0, 0, 0,152,195,114, 10, 72,193,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0, -186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,195,114, 10,198, 0, 0, 0, - 1, 0, 0, 0,192,196,114, 10,112,194,114, 10, 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196, -105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70,172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, - 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,192,196,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,152,195,114, 10, 0, 0, 0, 0, 0, 0,122, 67, - 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 17, 0, 0, 0, - 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, - 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, 10,215, 35, 60, 0, 0,200, 66, -105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,232,197,114, 10,165, 0, 0, 0, 1, 0, 0, 0, 56,208,114, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -248, 0, 0, 0,248,198,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 32,200,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, - 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,157, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 4, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,232, 4, 26, 0,232, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,225, 1, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 32,200,114, 10,198, 0, 0, 0, 1, 0, 0, 0, 72,201,114, 10, -248,198,114, 10, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, - 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, - 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, - 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0,153, 2, 0, 0, -251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 24, 2, 0, 0, 5, 0, - 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 72,201,114, 10, -198, 0, 0, 0, 1, 0, 0, 0,112,202,114, 10, 32,200,114, 10, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, - 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, - 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,153, 2, 0, 0,128, 7, 0, 0,251, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0,112,202,114, 10,198, 0, 0, 0, 1, 0, 0, 0,152,203,114, 10, 72,201,114, 10, 0, 0, 0, 0, - 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0,163, 0, 0, 0, -180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, -162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 7, 0, 0,128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,203,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,112,202,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153, 2, 0, 0, -128, 7, 0, 0,251, 1, 0, 0, 18, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 24, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,204,114, 10, 68, 65, 84, 65, 72, 3, 0, 0, -192,204,114, 10,158, 0, 0, 0, 1, 0, 0, 0, 1, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -165, 7, 36, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, 0, 0, 0,128, - 0, 0, 0,128,226,215,163,188, 0, 0, 0,128, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190, -142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65, -111,121,173,192,248,209,213, 64, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, - 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63,224,246, 70,188, 0,128, 32,182, 69,129, 32,190, -250,186,154, 61,170,205,178, 62, 0, 64, 1, 53,215,104, 25,196,135,132,135, 67, 37, 9,167,195,136,252, 71,194, 3, 54, 25, 68, -160, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63, -143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,180,157,229, 62,169,203,131,191,222,160, 81,191,184,158, 81,191,118, 90,127, 63, - 95, 27,254, 62, 9, 46,185, 62, 35, 44,185, 62,147,180,109,188,102,208, 18, 64,129, 63,228,190, 42, 61,228,190, 0, 0, 0, 0, - 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190,214,211,111, 65, -214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,218,210,190, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, 56,208,114, 10, -159, 0, 0, 0, 1, 0, 0, 0,176,211,114, 10,232,197,114, 10,248,198,114, 10,152,203,114, 10, 1, 0, 0, 0, 51, 51, 51, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, - 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65,248, 0, 0, 0, 96,209,114, 10,198, 0, 0, 0, 1, 0, 0, 0,136,210,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 64,129, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,147, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,152, 4, 26, 0,152, 4, 26, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0,101, 0, 0, 0,126, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,136,210,114, 10,198, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 96,209,114, 10, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, - 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, - 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,151, 4, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, - 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,152, 4, -122, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -151, 4, 0, 0,127, 0, 0, 0,248, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 4,122, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,180, 0, 0, 0, -176,211,114, 10,174, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 56,208,114, 10, 96,209,114, 10,136,210,114, 10, 15, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, - 83, 67, 0, 0,168, 5, 0, 0,240,212,114, 10,156, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0,116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0,200,218,114, 10, 0, 0, 0, 0,152,236,114, 10,208,229,114, 10, 0, 0, 0, 0, 0, 0, 0, 0,104,220,114, 10, -248,220,114, 10,104,220,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,221,114, 10,168,216,113, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, - 32, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 25, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, - 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 8, 0, 24, 0, 10, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,225,114, 10, 40,225,114, 10, - 0, 0, 0, 0, 0, 0,200, 66, 0, 0,200, 66, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63,173, 2, 95, 0,154,153,217, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, - 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, - 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,216, 41, 76, 10, 0, 0, 0, 0, 0, 0, 0, 0,184, 42,115, 10, 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, - 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0, -180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 68, 65, 84, 65, - 76, 0, 0, 0,200,218,114, 10, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 64,219,114, 10, 64,219,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 76, 0, 0, 0, 64,219,114, 10, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0,110,101,116,119, -111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,184,219,114, 10,184,219,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 76, 0, 0, 0,184,219,114, 10, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118, -101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 48,220,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, - 12, 0, 0, 0, 48,220,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, - 28, 0, 0, 0,104,220,114, 10,132, 0, 0, 0, 1, 0, 0, 0,176,220,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0,188, 1, 46, 1,160,240,114, 10, 68, 65, 84, 65, 28, 0, 0, 0,176,220,114, 10,132, 0, 0, 0, 1, 0, 0, 0, -248,220,114, 10,104,220,114, 10, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 61, 2,244, 1,168,244,114, 10, 68, 65, 84, 65, - 28, 0, 0, 0,248,220,114, 10,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,176,220,114, 10, 1, 0, 0, 0, 3, 0, 0, 0, - 0, 4, 0, 0, 98, 0,106, 1,152,236,114, 10, 68, 65, 84, 65,136, 1, 0, 0, 64,221,114, 10,152, 0, 0, 0, 1, 0, 0, 0, -248,222,114, 10,152,223,114, 10, 56,224,114, 10, 0, 0,128, 63, 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, - 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,232,224,114, 10, 0, 0, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 0, 0, 0, 7, 0, 5, 0, 5, 0,255,255, - 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0,100, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 0, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61,205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, - 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 44, 0, 0, 0,248,222,114, 10,151, 0, 0, 0, 1, 0, 0, 0, 80,223,114, 10, - 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, 80,223,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, 88, 78,115, 10, - 8, 41,115, 10, 8, 98,115, 10,160, 81,115, 10,136, 45,115, 10, 16, 75,115, 10, 96, 55,115, 10, 68, 65, 84, 65, 44, 0, 0, 0, -152,223,114, 10,151, 0, 0, 0, 1, 0, 0, 0,240,223,114, 10, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, - 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 28, 0, 0, 0, -240,223,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, 88, 78,115, 10, 8, 41,115, 10, 8, 98,115, 10,160, 81,115, 10,136, 45,115, 10, - 16, 75,115, 10, 96, 55,115, 10, 68, 65, 84, 65, 48, 0, 0, 0, 56,224,114, 10,150, 0, 0, 0, 1, 0, 0, 0,152,224,114, 10, - 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,224,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, -168, 58,115, 10,120, 91,115, 10,232, 84,115, 10,128, 68,115, 10, 56, 65,115, 10,200, 71,115, 10,240, 61,115, 10,208, 48,115, 10, - 68, 65, 84, 65, 16, 0, 0, 0,232,224,114, 10, 0, 0, 0, 0, 1, 0, 0, 0,168, 58,115, 10,192, 94,115, 10, 24, 52,115, 10, - 48, 88,115, 10, 68, 65, 84, 65, 72, 0, 0, 0, 40,225,114, 10,138, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 82,101,110,100,101,114, 76, 97,121,101,114, 0,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 67, 65, 0, 0,120, 0, 0, 0,160,225,114, 10, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,145,137, 68, 66,205,204,204, 61, 0, 0,200, 66, - 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0,140, 1, 0, 0, 72,226,114, 10, 41, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 83,112,111,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0,228,114, 10, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, 1, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,128,229,114, 10, 68, 65, 84, 65, 8, 1, 0, 0, 0,228,114, 10, 78, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63, -242, 4, 53,191,243, 4, 53, 63, 56,229,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0, 56,229,114, 10, 76, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,128,229,114, 10, - 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,120, 1, 0, 0,208,229,114, 10,131, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114, 99, 80, 61, -114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, - 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 0, 0,128, 63, -205,204, 76, 61, 0, 0, 5, 0, 3, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 0, 0,120, 0, 0, 0,120,231,114, 10, - 27, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 88, 84,101,120,116, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 7, 0, 0, 0, 1, 0, 0, 0, 32,232,114, 10, 32,232,114, 10, 32,232,114, 10, 32,232,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,104,232,114, 10,255,255,255,255, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 24, 0, 0, 0, 32,232,114, 10, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 17, 77, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 69, 69, 82, 70, 68, 65, 84, 65, 4, 0, 0, 0,168, 17, 77, 10, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 1, 0, 79, 66, 0, 0,220, 3, 0, 0,152,236,114, 10,120, 0, 0, 0, 1, 0, 0, 0,160,240,114, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,225,114, 10, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, - 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -222,149, 47, 63, 53, 70, 58, 63,222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, - 7,165, 39, 63,149, 84, 28,191, 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63,125,103,133, 51,176,219,194,178, 0, 0, 0, 0,190, 32, 66, 51, 1, 0,128, 63,168,200,153, 51, 0, 0, 0, 0, - 32,206, 18,179,126,126,149, 50, 1, 0,128, 63, 0, 0, 0, 0,241,251,133, 52,172,182, 27,180,174,236,252, 51, 0, 0,128, 63, - 0, 0,128, 63,157,190,215, 49,167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, - 73,254, 67, 51,243, 97,106, 49, 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, - 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63, -205,204,204, 62,237, 54, 32, 63, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,160,240,114, 10, -120, 0, 0, 0, 1, 0, 0, 0,168,244,114, 10,152,236,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112, -104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 97,112, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 16, 31,115, 10, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,141, 77, 10,232,203, 77, 10, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, - 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128, -110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, - 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 64, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,158, 93, 10,168, 91,112, 11, - 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,240,141, 77, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 4, 0, 0, 0,232,203, 77, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,220, 3, 0, 0,168,244,114, 10, -120, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,160,240,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 72,226,114, 10, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154,112,130, 64, -183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, 87, 43, 98, 61, -229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, 0, 0, 0, 0, -221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, 0, 0, 0, 0, -154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 35,233,134, 49,251,110, 17,179, 0, 0, 0, 0, - 49,158,141, 50, 1, 0,128, 63,126,214,237, 50, 0, 0, 0, 0,155,248, 28,178,199,139, 96,177,254,255,127, 63, 0, 0, 0, 0, - 80,136,159,178,192, 4,158,178,209,114,143,179, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, 0, 0, 0,128, - 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, 0, 0, 0,128, -208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 5, 0, 1, 0, - 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, - 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 65, 0, 0,160, 2, 0, 0,176,248,114, 10, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, - 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 0, 3, 67, 0, 0, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63,205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, -128,251,114, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,252,114, 10, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63, -111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61,102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -128,251,114, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 13,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,144, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 32, 0, 0, 0,184,252,114, 10, - 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 8,253,114, 10, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, 8,253,114, 10, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 51, 2, 2, 2, 51, 6, 6, 6,153, 6, 6, 6,153, 6, 6, 6,153, - 4, 4, 4,102, 3, 3, 3,102, 2, 2, 2, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 3, 3, 51, 8, 8, 8,153, 11, 11, 11,204, 13, 13, 13,255, 12, 12, 12,255, 12, 12, 12,255, 11, 11, 11,255, 10, 10, 10,255, - 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 51, 10, 10, 10,153, - 18, 18, 18,255, 20, 20, 20,255, 22, 22, 22,255, 23, 23, 23,255, 22, 22, 22,255, 20, 20, 20,255, 19, 19, 19,255, 16, 16, 16,255, - 14, 14, 14,255, 11, 11, 11,255, 10, 10, 10,255, 9, 9, 9,255, 9, 9, 9,255, 9, 9, 9,255, 8, 8, 8,204, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 7, 7,102, 19, 19, 19,204, 27, 27, 27,255, - 31, 31, 31,255, 32, 32, 32,255, 33, 33, 33,255, 33, 33, 33,255, 31, 31, 31,255, 30, 30, 30,255, 27, 27, 27,255, 25, 25, 25,255, - 22, 22, 22,255, 19, 19, 19,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, 10, 10, 10,255, - 4, 4, 4,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,153, 29, 29, 29,255, 37, 37, 37,255, 40, 40, 40,255, - 42, 42, 42,255, 42, 42, 42,255, 43, 43, 43,255, 41, 41, 41,255, 40, 40, 40,255, 38, 38, 38,255, 36, 36, 36,255, 33, 33, 33,255, - 30, 30, 30,255, 27, 27, 27,255, 24, 24, 24,255, 20, 20, 20,255, 16, 16, 16,255, 12, 12, 12,255, 10, 10, 10,255, 10, 10, 10,255, - 10, 10, 10,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 37, 37, 37,255, 44, 44, 44,255, 48, 48, 48,255, 50, 50, 50,255, - 51, 51, 51,255, 51, 51, 51,255, 50, 50, 50,255, 49, 49, 49,255, 48, 48, 48,255, 45, 45, 45,255, 43, 43, 43,255, 41, 41, 41,255, - 37, 37, 37,255, 34, 34, 34,255, 31, 31, 31,255, 28, 28, 28,255, 24, 24, 24,255, 20, 20, 20,255, 15, 15, 15,255, 11, 11, 11,255, - 10, 10, 10,255, 11, 11, 11,255, 7, 7, 7,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 13, 13, 13,102, 41, 41, 41,255, 50, 50, 50,255, 54, 54, 54,255, 57, 57, 57,255, 58, 58, 58,255, - 59, 59, 59,255, 59, 59, 59,255, 58, 58, 58,255, 57, 57, 57,255, 55, 55, 55,255, 53, 53, 53,255, 51, 51, 51,255, 48, 48, 48,255, - 45, 45, 45,255, 41, 41, 41,255, 38, 38, 38,255, 35, 35, 35,255, 31, 31, 31,255, 27, 27, 27,255, 23, 23, 23,255, 17, 17, 17,255, - 12, 12, 12,255, 11, 11, 11,255, 11, 11, 11,255, 5, 5, 5,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 36, 36, 36,204, 53, 53, 53,255, 59, 59, 59,255, 63, 63, 63,255, 65, 65, 65,255, 66, 66, 66,255, - 66, 66, 66,255, 66, 66, 66,255, 65, 65, 65,255, 64, 64, 64,255, 62, 62, 62,255, 60, 60, 60,255, 57, 57, 57,255, 54, 54, 54,255, - 51, 51, 51,255, 48, 48, 48,255, 44, 44, 44,255, 41, 41, 41,255, 37, 37, 37,255, 33, 33, 33,255, 29, 29, 29,255, 24, 24, 24,255, - 19, 19, 19,255, 13, 13, 13,255, 11, 11, 11,255, 12, 12, 12,255, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 19, 19, 19,102, 56, 56, 56,255, 64, 64, 64,255, 68, 68, 68,255, 71, 71, 71,255, 73, 73, 73,255, 74, 74, 74,255, - 74, 74, 74,255, 73, 73, 73,255, 72, 72, 72,255, 71, 71, 71,255, 69, 69, 69,255, 67, 67, 67,255, 64, 64, 64,255, 61, 61, 61,255, - 58, 58, 58,255, 54, 54, 54,255, 50, 50, 50,255, 47, 47, 47,255, 43, 43, 43,255, 39, 39, 39,255, 34, 34, 34,255, 30, 30, 30,255, - 25, 25, 25,255, 19, 19, 19,255, 13, 13, 13,255, 12, 12, 12,255, 10, 10, 10,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 54, 54, 54,255, 66, 66, 66,255, 72, 72, 72,255, 77, 77, 77,255, 79, 79, 79,255, 81, 81, 81,255, 81, 81, 81,255, - 81, 81, 81,255, 80, 80, 80,255, 79, 79, 79,255, 77, 77, 77,255, 75, 75, 75,255, 73, 73, 73,255, 70, 70, 70,255, 67, 67, 67,255, - 63, 63, 63,255, 60, 60, 60,255, 56, 56, 56,255, 52, 52, 52,255, 49, 49, 49,255, 44, 44, 44,255, 40, 40, 40,255, 35, 35, 35,255, - 30, 30, 30,255, 24, 24, 24,255, 18, 18, 18,255, 12, 12, 12,255, 12, 12, 12,255, 6, 6, 6,102, 0, 0, 0, 0, 0, 0, 0, 0, - 22, 22, 22,102, 67, 67, 67,255, 76, 76, 76,255, 81, 81, 81,255, 84, 84, 84,255, 87, 87, 87,255, 88, 88, 88,255, 88, 88, 88,255, - 88, 88, 88,255, 87, 87, 87,255, 86, 86, 86,255, 84, 84, 84,255, 82, 82, 82,255, 79, 79, 79,255, 76, 76, 76,255, 73, 73, 73,255, - 69, 69, 69,255, 65, 65, 65,255, 62, 62, 62,255, 58, 58, 58,255, 54, 54, 54,255, 49, 49, 49,255, 45, 45, 45,255, 40, 40, 40,255, - 35, 35, 35,255, 29, 29, 29,255, 23, 23, 23,255, 16, 16, 16,255, 12, 12, 12,255, 12, 12, 12,204, 0, 0, 0, 0, 0, 0, 0, 0, - 49, 49, 49,204, 76, 76, 76,255, 84, 84, 84,255, 89, 89, 89,255, 92, 92, 92,255, 94, 94, 94,255, 95, 95, 95,255, 95, 95, 95,255, - 95, 95, 95,255, 94, 94, 94,255, 93, 93, 93,255, 91, 91, 91,255, 88, 88, 88,255, 85, 85, 85,255, 82, 82, 82,255, 79, 79, 79,255, - 75, 75, 75,255, 71, 71, 71,255, 67, 67, 67,255, 63, 63, 63,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, 45, 45, 45,255, - 40, 40, 40,255, 34, 34, 34,255, 28, 28, 28,255, 21, 21, 21,255, 13, 13, 13,255, 14, 14, 14,255, 0, 0, 0, 0, 14, 14, 14,102, - 70, 70, 70,255, 85, 85, 85,255, 92, 92, 92,255, 97, 97, 97,255,100,100,100,255,102,102,102,255,102,102,102,255,103,103,103,255, -102,102,102,255,101,101,101,255, 99, 99, 99,255, 97, 97, 97,255, 94, 94, 94,255, 91, 91, 91,255, 88, 88, 88,255, 84, 84, 84,255, - 81, 81, 81,255, 77, 77, 77,255, 72, 72, 72,255, 68, 68, 68,255, 64, 64, 64,255, 59, 59, 59,255, 55, 55, 55,255, 50, 50, 50,255, - 44, 44, 44,255, 39, 39, 39,255, 32, 32, 32,255, 25, 25, 25,255, 17, 17, 17,255, 13, 13, 13,255, 7, 7, 7,102, 24, 24, 24,102, - 80, 80, 80,255, 93, 93, 93,255,100,100,100,255,104,104,104,255,107,107,107,255,109,109,109,255,109,109,109,255,109,109,109,255, -109,109,109,255,107,107,107,255,106,106,106,255,103,103,103,255,100,100,100,255, 97, 97, 97,255, 94, 94, 94,255, 90, 90, 90,255, - 86, 86, 86,255, 82, 82, 82,255, 77, 77, 77,255, 73, 73, 73,255, 69, 69, 69,255, 64, 64, 64,255, 59, 59, 59,255, 54, 54, 54,255, - 49, 49, 49,255, 43, 43, 43,255, 36, 36, 36,255, 29, 29, 29,255, 21, 21, 21,255, 14, 14, 14,255, 10, 10, 10,153, 29, 29, 29,102, - 89, 89, 89,255,100,100,100,255,107,107,107,255,112,112,112,255,114,114,114,255,116,116,116,255,116,116,116,255,116,116,116,255, -115,115,115,255,114,114,114,255,112,112,112,255,110,110,110,255,107,107,107,255,104,104,104,255,100,100,100,255, 96, 96, 96,255, - 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 63, 63, 63,255, 58, 58, 58,255, - 52, 52, 52,255, 46, 46, 46,255, 40, 40, 40,255, 33, 33, 33,255, 24, 24, 24,255, 17, 17, 17,255, 13, 13, 13,204, 46, 46, 46,153, - 95, 95, 95,255,107,107,107,255,114,114,114,255,118,118,118,255,121,121,121,255,122,122,122,255,123,123,123,255,123,123,123,255, -122,122,122,255,122,122,122,255,120,120,120,255,118,118,118,255,114,114,114,255,110,110,110,255,106,106,106,255,101,101,101,255, - 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 83, 83, 83,255, 78, 78, 78,255, 73, 73, 73,255, 68, 68, 68,255, 62, 62, 62,255, - 56, 56, 56,255, 50, 50, 50,255, 44, 44, 44,255, 36, 36, 36,255, 28, 28, 28,255, 19, 19, 19,255, 12, 12, 12,204, 47, 47, 47,153, -101,101,101,255,113,113,113,255,120,120,120,255,125,125,125,255,127,127,127,255,129,129,129,255,130,130,130,255,130,130,130,255, -131,131,131,255,131,131,131,255,131,131,131,255,129,129,129,255,125,125,125,255,120,120,120,255,113,113,113,255,108,108,108,255, -103,103,103,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 82, 82, 82,255, 77, 77, 77,255, 72, 72, 72,255, 66, 66, 66,255, - 60, 60, 60,255, 54, 54, 54,255, 47, 47, 47,255, 39, 39, 39,255, 31, 31, 31,255, 22, 22, 22,255, 12, 12, 12,204, 48, 48, 48,153, -106,106,106,255,118,118,118,255,126,126,126,255,131,131,131,255,134,134,134,255,135,135,135,255,137,137,137,255,138,138,138,255, -142,142,142,255,147,147,147,255,149,149,149,255,148,148,148,255,142,142,142,255,133,133,133,255,124,124,124,255,115,115,115,255, -108,108,108,255,102,102,102,255, 97, 97, 97,255, 92, 92, 92,255, 87, 87, 87,255, 81, 81, 81,255, 75, 75, 75,255, 69, 69, 69,255, - 63, 63, 63,255, 57, 57, 57,255, 49, 49, 49,255, 42, 42, 42,255, 33, 33, 33,255, 24, 24, 24,255, 9, 9, 9,153, 32, 32, 32,102, -109,109,109,255,123,123,123,255,131,131,131,255,136,136,136,255,140,140,140,255,142,142,142,255,144,144,144,255,148,148,148,255, -156,156,156,255,168,168,168,255,176,176,176,255,177,177,177,255,168,168,168,255,153,153,153,255,137,137,137,255,124,124,124,255, -114,114,114,255,107,107,107,255,101,101,101,255, 96, 96, 96,255, 90, 90, 90,255, 85, 85, 85,255, 79, 79, 79,255, 72, 72, 72,255, - 66, 66, 66,255, 59, 59, 59,255, 52, 52, 52,255, 44, 44, 44,255, 35, 35, 35,255, 26, 26, 26,255, 10, 10, 10,153, 17, 17, 17, 51, -110,110,110,255,127,127,127,255,136,136,136,255,142,142,142,255,145,145,145,255,148,148,148,255,151,151,151,255,159,159,159,255, -174,174,174,255,195,195,195,255,212,212,212,255,216,216,216,255,204,204,204,255,179,179,179,255,154,154,154,255,135,135,135,255, -121,121,121,255,112,112,112,255,106,106,106,255, 99, 99, 99,255, 94, 94, 94,255, 88, 88, 88,255, 82, 82, 82,255, 76, 76, 76,255, - 69, 69, 69,255, 62, 62, 62,255, 54, 54, 54,255, 46, 46, 46,255, 37, 37, 37,255, 26, 26, 26,255, 6, 6, 6,102, 0, 0, 0, 0, -107,107,107,255,130,130,130,255,140,140,140,255,146,146,146,255,150,150,150,255,153,153,153,255,158,158,158,255,169,169,169,255, -191,191,191,255,219,219,219,255,246,246,246,255,254,254,254,255,237,237,237,255,204,204,204,255,170,170,170,255,145,145,145,255, -127,127,127,255,117,117,117,255,110,110,110,255,103,103,103,255, 97, 97, 97,255, 91, 91, 91,255, 85, 85, 85,255, 78, 78, 78,255, - 71, 71, 71,255, 64, 64, 64,255, 55, 55, 55,255, 47, 47, 47,255, 37, 37, 37,255, 25, 25, 25,255, 3, 3, 3, 51, 0, 0, 0, 0, - 65, 65, 65,153,129,129,129,255,142,142,142,255,149,149,149,255,154,154,154,255,157,157,157,255,163,163,163,255,176,176,176,255, -199,199,199,255,232,232,232,255,255,255,255,255,255,255,255,255,255,255,255,255,220,220,220,255,181,181,181,255,151,151,151,255, -132,132,132,255,121,121,121,255,113,113,113,255,106,106,106,255,100,100,100,255, 94, 94, 94,255, 87, 87, 87,255, 80, 80, 80,255, - 73, 73, 73,255, 65, 65, 65,255, 57, 57, 57,255, 48, 48, 48,255, 38, 38, 38,255, 16, 16, 16,153, 0, 0, 0, 0, 0, 0, 0, 0, - 21, 21, 21, 51,127,127,127,255,143,143,143,255,152,152,152,255,157,157,157,255,161,161,161,255,165,165,165,255,177,177,177,255, -198,198,198,255,227,227,227,255,253,253,253,255,255,255,255,255,250,250,250,255,217,217,217,255,181,181,181,255,153,153,153,255, -135,135,135,255,124,124,124,255,117,117,117,255,110,110,110,255,103,103,103,255, 96, 96, 96,255, 89, 89, 89,255, 82, 82, 82,255, - 74, 74, 74,255, 66, 66, 66,255, 57, 57, 57,255, 48, 48, 48,255, 35, 35, 35,255, 10, 10, 10,153, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 93, 93, 93,204,141,141,141,255,153,153,153,255,159,159,159,255,163,163,163,255,167,167,167,255,174,174,174,255, -188,188,188,255,209,209,209,255,228,228,228,255,234,234,234,255,224,224,224,255,200,200,200,255,173,173,173,255,151,151,151,255, -136,136,136,255,127,127,127,255,119,119,119,255,112,112,112,255,105,105,105,255, 98, 98, 98,255, 91, 91, 91,255, 83, 83, 83,255, - 75, 75, 75,255, 66, 66, 66,255, 57, 57, 57,255, 46, 46, 46,255, 24, 24, 24,204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 20, 20, 20, 51,134,134,134,255,151,151,151,255,160,160,160,255,164,164,164,255,167,167,167,255,171,171,171,255, -178,178,178,255,189,189,189,255,200,200,200,255,202,202,202,255,195,195,195,255,180,180,180,255,163,163,163,255,148,148,148,255, -137,137,137,255,129,129,129,255,121,121,121,255,114,114,114,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 83, 83, 83,255, - 74, 74, 74,255, 65, 65, 65,255, 55, 55, 55,255, 41, 41, 41,255, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 49, 49, 49,102,145,145,145,255,157,157,157,255,164,164,164,255,167,167,167,255,170,170,170,255, -172,172,172,255,176,176,176,255,180,180,180,255,179,179,179,255,174,174,174,255,165,165,165,255,155,155,155,255,145,145,145,255, -137,137,137,255,130,130,130,255,122,122,122,255,115,115,115,255,107,107,107,255, 99, 99, 99,255, 91, 91, 91,255, 82, 82, 82,255, - 73, 73, 73,255, 63, 63, 63,255, 50, 50, 50,255, 22, 22, 22,153, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,149,149,149,255,160,160,160,255,166,166,166,255,168,168,168,255, -169,169,169,255,170,170,170,255,169,169,169,255,167,167,167,255,164,164,164,255,158,158,158,255,151,151,151,255,144,144,144,255, -137,137,137,255,130,130,130,255,123,123,123,255,115,115,115,255,106,106,106,255, 98, 98, 98,255, 89, 89, 89,255, 80, 80, 80,255, - 70, 70, 70,255, 58, 58, 58,255, 27, 27, 27,153, 3, 3, 3, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 80, 80,153,150,150,150,255,160,160,160,255,165,165,165,255, -167,167,167,255,167,167,167,255,166,166,166,255,163,163,163,255,160,160,160,255,155,155,155,255,149,149,149,255,143,143,143,255, -137,137,137,255,129,129,129,255,121,121,121,255,113,113,113,255,105,105,105,255, 96, 96, 96,255, 86, 86, 86,255, 76, 76, 76,255, - 63, 63, 63,255, 38, 38, 38,204, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 78, 78, 78,153,147,147,147,255,157,157,157,255, -161,161,161,255,163,163,163,255,162,162,162,255,160,160,160,255,157,157,157,255,152,152,152,255,147,147,147,255,141,141,141,255, -135,135,135,255,127,127,127,255,119,119,119,255,110,110,110,255,101,101,101,255, 91, 91, 91,255, 80, 80, 80,255, 66, 66, 66,255, - 32, 32, 32,153, 7, 7, 7, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,134,134,134,255, -148,148,148,255,154,154,154,255,155,155,155,255,154,154,154,255,152,152,152,255,147,147,147,255,142,142,142,255,136,136,136,255, -130,130,130,255,122,122,122,255,114,114,114,255,104,104,104,255, 93, 93, 93,255, 81, 81, 81,255, 54, 54, 54,204, 22, 22, 22,102, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 73, 73, 73,153,103,103,103,204,137,137,137,255,140,140,140,255,140,140,140,255,137,137,137,255,133,133,133,255,127,127,127,255, -120,120,120,255,113,113,113,255,102,102,102,255, 91, 91, 91,255, 64, 64, 64,204, 28, 28, 28,102, 6, 6, 6, 51, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 46, 46,102, 72, 72, 72,153, 72, 72, 72,153, 92, 92, 92,204, 88, 88, 88,204, - 81, 81, 81,204, 54, 54, 54,153, 35, 35, 35,102, 16, 16, 16, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0, - 40, 1, 0, 0, 56, 13,115, 10, 39, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 64, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, - 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,144, 14,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, -144, 14,115, 10, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 0, 0, 0, 0,224, 14,115, 10, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0,224, 14,115, 10, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, - 77, 69, 0, 0, 40, 1, 0, 0, 16, 31,115, 10, 54, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 80,241, 78, 10,152, 38,115, 10, 64, 39,115, 10, 0, 0, 0, 0,232, 33,115, 10, 88, 36,115, 10, 0, 0, 0, 0,120, 40,115, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 32,115, 10, 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 34,115, 10, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 24, 37,115, 10, 3, 0, 0, 0, 5, 0, 0, 0, 84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, - 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 4, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 4, 0, 0, 0, 80,241, 78, 10, 0, 0, 0, 0, 1, 0, 0, 0,176,248,114, 10, 68, 65, 84, 65, 84, 1, 0, 0,104, 32,115, 10, - 82, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,232, 33,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, -192, 0, 0, 0,232, 33,115, 10, 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, - 26,182,255,127, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, - 1, 0,128,191,253,255,127,191, 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, - 0, 0,128,191, 26,182,230, 73, 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73, -230, 73,255,127, 1, 0, 0, 0,245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, - 3, 0,128,191,250,255,127,191, 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, - 0, 0,128, 63, 26,182,230, 73,230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65, 84, 1, 0, 0,216, 34,115, 10, 82, 1, 0, 0, - 5, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 88, 36,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, - 88, 36,115, 10, 57, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, - 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, - 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, - 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65, - 84, 1, 0, 0, 24, 37,115, 10, 82, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 38,115, 10, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 85, 86, 84,101,120, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 39,115, 10, 6, 0, 0, 0, 68, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67,111,108, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 40,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,152, 38,115, 10, 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, - 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, - 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, 68, 65, 84, 65, 8, 1, 0, 0, 64, 39,115, 10, 67, 0, 0, 0, - 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0,120, 40,115, 10, 61, 0, 0, 0, 24, 0, 0, 0, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, -255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255, - 66, 82, 0, 0,132, 1, 0, 0, 8, 41,115, 10, 81, 1, 0, 0, 1, 0, 0, 0,136, 45,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,240, 43,115, 10, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, - 84, 41,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,240, 43,115, 10, - 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 40, 45,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 40, 45,115, 10, 76, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,136, 45,115, 10, - 81, 1, 0, 0, 1, 0, 0, 0,208, 48,115, 10, 8, 41,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 66,108,117,114, 0, 46, - 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 56, 47,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,212, 45,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 56, 47,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,112, 48,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,112, 48,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,208, 48,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 24, 52,115, 10, -136, 45,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,128, 50,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 8, 0, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0, 28, 49,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,128, 50,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,184, 51,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -184, 51,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -132, 1, 0, 0, 24, 52,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 96, 55,115, 10,208, 48,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,200, 53,115, 10, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, 68, 65, 84, 65, 8, 1, 0, 0,100, 52,115, 10, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,200, 53,115, 10, 78, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 0, 55,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 0, 55,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, 96, 55,115, 10, 81, 1, 0, 0, - 1, 0, 0, 0,168, 58,115, 10, 24, 52,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, 0, 48, 54, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 16, 57,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 1, 6, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,172, 55,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 16, 57,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, - 72, 58,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0, 72, 58,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,168, 58,115, 10, 81, 1, 0, 0, 1, 0, 0, 0,240, 61,115, 10, 96, 55,115, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, - 88, 60,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0,244, 58,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, - 88, 60,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,144, 61,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,144, 61,115, 10, - 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, -240, 61,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 56, 65,115, 10,168, 58,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, - 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,160, 63,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 7, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 60, 62,115, 10, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,160, 63,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61,216, 64,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,216, 64,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, 56, 65,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, -128, 68,115, 10,240, 61,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0,232, 66,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 5, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,132, 65,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0,232, 66,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 32, 68,115, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 32, 68,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,132, 1, 0, 0,128, 68,115, 10, 81, 1, 0, 0, 1, 0, 0, 0,200, 71,115, 10, 56, 65,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116,101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 48, 70,115, 10, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, -204, 68,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 48, 70,115, 10, - 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,104, 71,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,104, 71,115, 10, 76, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,200, 71,115, 10, - 81, 1, 0, 0, 1, 0, 0, 0, 16, 75,115, 10,128, 68,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76, 97,121,101,114, 0, - 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,120, 73,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 20, 72,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,120, 73,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,176, 74,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,176, 74,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, 16, 75,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 88, 78,115, 10, -200, 71,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 0,192, 76,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, - 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 5, 0, 0, - 68, 65, 84, 65, 8, 1, 0, 0, 92, 75,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, - 8, 1, 0, 0,192, 76,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, - 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,248, 77,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, -248, 77,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, - 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0, -132, 1, 0, 0, 88, 78,115, 10, 81, 1, 0, 0, 1, 0, 0, 0,160, 81,115, 10, 16, 75,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 8, 80,115, 10, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,164, 78,115, 10, - 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, - 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 8, 80,115, 10, 78, 1, 0, 0, - 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, - 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 64, 81,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 64, 81,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,160, 81,115, 10, 81, 1, 0, 0, - 1, 0, 0, 0,232, 84,115, 10, 88, 78,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112,108,121, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 80, 83,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, - 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 1, 3, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,236, 81,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, 80, 83,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, -136, 84,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 68, 65, 84, 65, 48, 0, 0, 0,136, 84,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,232, 84,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 48, 88,115, 10,160, 81,115, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, -152, 86,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0, -102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, - 8, 1, 0, 0, 52, 85,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, -128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0, -152, 86,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, - 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,208, 87,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,208, 87,115, 10, - 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, - 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, - 48, 88,115, 10, 81, 1, 0, 0, 1, 0, 0, 0,120, 91,115, 10,232, 84,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109, -101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,224, 89,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 2, 0, 68, 65, 84, 65, 8, 1, 0, 0,124, 88,115, 10, 32, 0, 0, 0, - 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,224, 89,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, - 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, - 14,215,126,191, 46,189,194, 61, 24, 91,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 24, 91,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0,120, 91,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, -192, 94,115, 10, 48, 88,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 63, 0, 0, 0, 0, 40, 93,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, - 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 2, 0, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0,196, 91,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, -205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 68, 65, 84, 65, 8, 1, 0, 0, 40, 93,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, - 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 96, 94,115, 10, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, - 48, 0, 0, 0, 96, 94,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, - 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 66, 82, 0, 0,132, 1, 0, 0,192, 94,115, 10, 81, 1, 0, 0, 1, 0, 0, 0, 8, 98,115, 10,120, 91,115, 10, 0, 0, 0, 0, - 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,112, 96,115, 10, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63, -205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, 68, 65, 84, 65, 8, 1, 0, 0, - 12, 95,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, - 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,112, 96,115, 10, - 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, - 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61,168, 97,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,168, 97,115, 10, 76, 1, 0, 0, - 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, - 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,132, 1, 0, 0, 8, 98,115, 10, - 81, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,192, 94,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,117, 98,116,114, 97, - 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,184, 99,115, 10, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, - 25, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63,205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, 8, 1, 0, 0, 84, 98,115, 10, 32, 0, 0, 0, 1, 0, 0, 0, - 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 8, 1, 0, 0,184, 99,115, 10, 78, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, - 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, - 46,189,194, 61,240,100,115, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0,240,100,115, 10, 76, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, - 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82,232, 11, 0, 0, 0, 85, 7, 9,192, 0, 0, 0, 1, 0, 0, 0, 33,152, 65, 0, - 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, 47, 68,101,115,107,116,111,112, 47, 0, 45,112, -111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97,112,112, 47, 67,111,110,116,101,110,116,115, 47, - 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, - 2, 0, 94, 1, 8, 0, 0, 0, 3, 0, 0, 0, 48, 52, 6, 1, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, - 68,172, 0, 0, 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0,104,113,115, 10, - 40,138,115, 10,160,162,164, 10,160,162,164, 10,112,243,164, 10,112,243,164, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 0, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63, -205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 30, 90,100,191, -154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63,156,153, 25, 63, - 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62,184,243,125, 62, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 43,135, 61, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, 14, 0, 0, 0, - 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 15, 0, 8, 0, 10, 0, -250, 0, 0, 0,100, 0,100, 0, 0, 0, 2, 0, 0, 0, 0, 0, 10, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, - 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, - 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, - 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, - 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 68, 65, 84, 65,144, 24, 0, 0,104,113,115, 10,189, 0, 0, 0, 1, 0, 0, 0, 40,138,115, 10, 0, 0, 0, 0, - 68,101,102, 97,117,108,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, - 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, - 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, - 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 25, 25, 25,230, 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, - 25, 25, 25,255,128,128,128,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, - 50, 50, 50,180, 80, 80, 80,180,100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, - 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, -115,190, 76,255, 90,166, 51,255,240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 76, 76, 76,255, 0, 0, 0, 0,250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -145,145,145,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, - 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255, - 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, - 3, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, - 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128, -255,140, 0,255, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255, -109,145,131,255,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, -110,110,110,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -132,132,132,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255, -255, 0, 0,255, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, - 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, -255,133, 0,255, 0, 0, 0,255,255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60, -255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, -155,155,155,160,100,100,100,255,108,105,111,255,104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, - 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, -255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, - 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, - 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, -114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, -160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, - 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, -255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, - 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, - 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, - 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, - 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, -255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, - 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, - 96,128,255,255,255,255,255,255, 0,170, 0,255,220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, - 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0, -169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, - 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0, -244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0, -111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0, -141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, - 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 24, 0, 0, 40,138,115, 10,189, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -104,113,115, 10, 82,111,117,110,100,101,100, 0, 0,101,119, 32, 85,115,101,114, 32, 84,104,101,109,101, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255,100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 25, 0, -231,255, 0, 0, 25, 25, 25,255,153,153,153,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, - 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, - 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255,153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, - 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0, -241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0, -236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, 46,124,217,204,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 25, 0, -236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,175,175,175, 51, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255, -217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255,102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, - 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, - 34,221,221,255, 0, 0, 0, 0,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,130, 0,255, - 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,100, -143,143,143,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255, -135,177,125,255,255,255,255,255,255,255,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,130, 0,255, 2, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255, -255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, - 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255,178,178,178,100,255,130, 0,100, - 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 79,101, 73,255,135,177,125,255,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,143,143,143,255, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,228,156,198,204,255,255,170,204, - 96,192, 64,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,143,143,143,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,107,107,107,255, -178,178,178,100,255,130, 0,100, 94, 94, 94,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -228,156,198,255,255,255,170,255, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,130, 0,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255, -162, 95,111,255,109,145,131,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255, -255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, - 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60,255,133, 0,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80,200,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,195,195,195,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,127,112,112,100, 0, 0, 0, 0, - 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255, -255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30, -200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,153,153,153,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255, -198,119,119,255,255, 0, 0,255, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, - 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,100, 0, 0,255, 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255, -255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 88, 88, 88,255, 0, 0, 0,255,255,136,255,255, 0, 0, 0, 0, -255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, 0, 0, 0,255,144,144, 48,255, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,158,158,158,255, - 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,158,158,158,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,150, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,140,140,140,255,127,112,112,100, 0, 0, 0, 0,112,112, 96,255, 0, 0, 0,255, -255,136,255,255, 0, 0, 0, 0,255,187,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,112,255,255,255,255,112,255, - 0, 0, 0,255,144,144, 48,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 50,150, 30,200,100,200, 60, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, -143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0,255,130, 0,255, - 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255, 10, -255,130, 0, 60,255,138, 48,255, 34,221,221,255, 0, 0, 0, 0,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 3, 4, 0, 0,150,150,150,255,129,131,144,255,127,127,127,255,142,138,145,255,120,145,120,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,107,107,107,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, - 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 51, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100, -127,112,112,100, 0, 0, 0, 0,143,143,143,255, 0, 0, 0,255,217,217,217,255, 0, 0, 0, 40,255,255,255,255, 16, 64, 16,255, -102,255,102,255,255,130, 0,255, 0, 0, 0,255,255,130, 0,255, 0, 0, 0,255,255,255,255,255,230,150, 50,255,255, 32, 32,255, - 0, 0, 0, 0,255,255,255, 10,255,130, 0, 60,255,138, 48,255, 34,221,221,255, 0, 0, 0, 0,200,200,200,255, 80,200,255, 80, - 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,245, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, -255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255,247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, - 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255,131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, - 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255,240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, - 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255,111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, - 0, 0, 0, 0,244,201, 12,255,238,194, 54,255,243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, - 0, 0, 0, 0,111, 47,106,255,152, 69,190,255,211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, - 0, 0, 0, 0,141,141,141,255,176,176,176,255,222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, - 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 78, 65, 49,236,218, 0, 0,160,161,188, 11, 0, 0, 0, 0, 1, 0, 0, 0, - 83, 68, 78, 65, 78, 65, 77, 69,118, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102, -105,114,115,116, 0, 42,108, 97,115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105, -110, 0,121,109, 97,120, 0, 42,112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116, -121,112,101, 0,115,117, 98,116,121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0, -100, 97,116, 97, 0,108,101,110, 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97, -109,101, 91, 50, 52, 93, 0,117,115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, - 0, 42,105,100, 98,108,111, 99,107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105, -108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, - 0,104, 91, 50, 93, 0, 99,104, 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, - 91, 50, 93, 0, 42,111, 98, 0, 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, - 50, 56, 93, 0, 42, 98,112, 0, 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116, -121,112,101, 0,116,111,116,118,101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115, -107, 0,115,108,105,100,101, 95,109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114, -105,118,101,114, 0, 99,117,114,118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112, -111,115, 0,114,101,108, 97,116,105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116, -115, 0,118,103,114,111,117,112, 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, - 0, 42, 97,100,116, 0, 42,114,101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105, -122,101, 0, 98,108,111, 99,107, 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112, -104, 0, 42,108,105,110,101, 0, 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114, -116, 0,101,110,100, 0,102,108, 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109, -101, 0,110,108,105,110,101,115, 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0, -115,101,108, 99, 0,109, 97,114,107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0, -117,110,100,111, 95,108,101,110, 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101, -101,107, 0,112, 97,115,115,101,112, 97,114,116, 97,108,112,104, 97, 0, 97,110,103,108,101, 0, 99,108,105,112,115,116, 97, 0, - 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111,114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122, -101, 0,115,104,105,102,116,120, 0,115,104,105,102,116,121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 89, 70, 95, 97,112, -101,114,116,117,114,101, 0, 89, 70, 95, 98,107,104,116,121,112,101, 0, 89, 70, 95, 98,107,104, 98,105, 97,115, 0, 89, 70, 95, - 98,107,104,114,111,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97,109,101,115, 0,111,102, -102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0,109,117,108,116,105, 95, -105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, 99,101,110,101, 0,105, - 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, 0,115,111,117,114, 99, -101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101,102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114, -101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101,110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101, -112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, 0, 42,112,114,101,118,105,101,119, 0, 42,114,101,110,100, -101,114, 95,116,101,120,116, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110,105,109, -115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112,120, 0, - 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110,100,116, -121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114,111,106, -120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115,105,122, -101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, 97,112, -116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, 95,111, -117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0,103, 0, - 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, 97, 99, - 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105,114,114, -102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101,109,105, -116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108,102, 97, - 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, 0, 99, -111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0,114,101, -102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, 97, 99, - 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105,102,101, -102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, 97,100, -111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110,100,102, - 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115,116,110, - 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117,108,116, - 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110,115,116, - 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114,115,105, -111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97,116, 91, - 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, 99, 97, -108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, 0,108, - 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115,111,102, -116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112,111,105, -110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, -111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111,105,110, -116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0,110,111, -105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97,100, 51, - 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, 97, 0, -114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, 97,116, - 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112,108,105, -101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, 93, 0, - 42,100, 97,116, 97,115,101,116, 0,110,111,105,115,101,115,105,122,101, 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, - 0, 99,111,110,116,114, 97,115,116, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115, -105,122,101, 0,109,103, 95, 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101, -115, 0,109,103, 95,111,102,102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0, -110,115, 95,111,117,116,115, 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, - 95,119, 52, 0,118,110, 95,109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0, -110,111,105,115,101,100,101,112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0, -110,111,105,115,101, 98, 97,115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111, -112,121,109,105,110, 0, 99,114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101, -114, 0, 97,102,109, 97,120, 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100, -105,115,116, 0,110, 97, 98,108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105, -110, 0, 42,101,110,118, 0, 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0, -114,111,116, 91, 51, 93, 0,109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109, -111,100,101, 0,116,111,116,101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119, -112, 97,100, 0,101,110,101,114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101, -110,100, 0,104, 97,105,110,116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115, -104, 97,100,115,112,111,116,115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104, -114,101,115,104, 0,112, 97,100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114, -115, 0,102,105,108,116,101,114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, - 95,115, 97,109,112, 0,114, 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97, -109,112, 95,116,121,112,101, 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, - 97, 95,115,105,122,101,121, 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, -114, 97,121, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115, -116,101,112, 0,115,117,110, 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, - 0,104,111,114,105,122,111,110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98, -114,105,103,104,116,110,101,115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, - 95,108,105,103,104,116, 0,115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105, -116,121, 0, 97,116,109, 95,105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101, -120,116,105,110, 99,116,105,111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, - 99,116,111,114, 0,115,107,121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107, -121, 95, 99,111,108,111,114,115,112, 97, 99,101, 0,112, 97,100, 52, 0, 89, 70, 95,110,117,109,112,104,111,116,111,110,115, 0, - 89, 70, 95,110,117,109,115,101, 97,114, 99,104, 0, 89, 70, 95,112,104,100,101,112,116,104, 0, 89, 70, 95,117,115,101,113,109, - 99, 0, 89, 70, 95, 98,117,102,115,105,122,101, 0, 89, 70, 95,112, 97,100, 0, 89, 70, 95, 99, 97,117,115,116,105, 99, 98,108, -117,114, 0, 89, 70, 95,108,116,114, 97,100,105,117,115, 0, 89, 70, 95,103,108,111,119,105,110,116, 0, 89, 70, 95,103,108,111, -119,111,102,115, 0, 89, 70, 95,103,108,111,119,116,121,112,101, 0, 89, 70, 95,112, 97,100, 50, 0, 42,109,116,101,120, 91, 49, - 56, 93, 0,112,114, 95,116,101,120,116,117,114,101, 0,112, 97,100, 91, 51, 93, 0,100,101,110,115,105,116,121, 0,101,109,105, -115,115,105,111,110, 0,115, 99, 97,116,116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115, -115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0, -114,101,102,108,101, 99,116,105,111,110, 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0, -100,101,112,116,104, 95, 99,117,116,111,102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95, -116,121,112,101, 0,115,104, 97,100,101,102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99, -104,101, 95,114,101,115,111,108,117,116,105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109, -115, 95,105,110,116,101,110,115,105,116,121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116, -121,112,101, 0,115,112,101, 99,114, 0,115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0, -109,105,114, 98, 0, 97,109, 98,114, 0, 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, - 0,115,112,101, 99,116,114, 97, 0,114, 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112, -101, 99, 0,122,111,102,102,115, 0, 97,100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114, -101,115,110,101,108, 95,109,105,114, 0,102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95, -116,114, 97, 0,102,114,101,115,110,101,108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105, -116, 0,116,120, 95,102, 97,108,108,111,102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, - 95,116,114, 97, 0,104, 97,114, 0,115,101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103, -108,111,115,115, 95,116,114, 97, 0,115, 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111, -115,115, 95,116,114, 97, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104, -114,101,115,104, 95,116,114, 97, 0, 97,110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105, -114, 0,102, 97,100,101,116,111, 95,109,105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102, -108, 97,114,101, 99, 0,115,116, 97,114, 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102, -108, 97,114,101,115,105,122,101, 0,115,117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97, -110,100, 95,115,116, 97, 0,115,116,114, 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116, -114, 97,110,100, 95,115,117,114,102,110,111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119, -105,100,116,104,102, 97,100,101, 0,115,116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, - 0,108, 98,105, 97,115, 0,115,104, 97,100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0, -112,114, 95,116,121,112,101, 0,112,114, 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0, -100,105,102,102, 95,115,104, 97,100,101,114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115, -115, 0,114,101,102,114, 97, 99, 0,112, 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42, -114, 97,109,112, 95, 99,111,108, 0, 42,114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, - 97,109,112,105,110, 95,115,112,101, 99, 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101, -110,100, 95,115,112,101, 99, 0,114, 97,109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99, -111,108, 0,114, 97,109,112,102, 97, 99, 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0, -102,104, 0,114,101,102,108,101, 99,116, 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111, -100,101, 0,115,115,115, 95,114, 97,100,105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95, -101,114,114,111,114, 0,115,115,115, 95,115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, - 97, 99, 0,115,115,115, 95,116,101,120,102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, - 0,115,115,115, 95,102,108, 97,103, 0,115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117, -114,101,100, 0,103,112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, - 0,106, 49, 0,107, 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0, -113,117, 97,116, 91, 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0, -115, 0, 42,109, 97,116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101, -109,115, 0, 42, 42,109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114, -101,110,100,101,114,115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, - 93, 91, 51, 93, 0, 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0, -104,105,100,101, 0,118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114, -101,115,111,108,117, 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, - 0,102,108, 97,103,118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101, -114,112, 0,114, 97,100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0, -110,117,114, 98, 0, 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, - 0, 42,116,101,120,116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97, -119,102,108, 97,103, 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109, -111,111,116,104, 0,112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, - 0,101,120,116, 50, 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110, -117, 0, 42,108, 97,115,116,115,101,108, 98,112, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108, -105,110,101,100,105,115,116, 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108, -112,111,115, 0,117,108,104,101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42, -115,116,114, 0, 42,115,101,108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, - 52, 93, 0, 42,118,102,111,110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, - 98,105, 0,115,101,112, 99,104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42, -116, 98, 0,115,101,108,115,116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105, -110,102,111, 0,101,102,102,101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, - 0, 42,109,118,101,114,116, 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116, -105, 99,107,121, 0, 42,116,101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109, -101,115,104, 0,118,100, 97,116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111, -116,102, 97, 99,101, 0,116,111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97, -103, 0, 99,117, 98,101,109, 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0, -115,117, 98,100,105,118,114, 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97, -103,101, 0,117,118, 91, 52, 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117, -110,119,114, 97,112, 0,118, 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, - 98,119,101,105,103,104,116, 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, - 51, 93, 0,110,111, 91, 51, 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, - 91, 50, 53, 54, 93, 0,116,111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105, -100, 0,118, 91, 50, 93, 0, 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42, -118,101,114,116,115, 0,108,101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, - 0,110,101,119,108,118,108, 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, - 0,117,115,101, 95, 99,111,108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115, -101,115, 0, 42,118,101,114,116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101, -115, 0, 42,111,108,100, 95,101,100,103,101,115, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, 0,115,117, 98, -100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104,101, 0, 42,109, - 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0,114, 97,110,100, -111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97,112, 0, 42,101, -110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0,111,102,102,115, -101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105,116, 95,116,121, -112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111,108,101,114, 97, -110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, 97,108,117,101, - 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102,108, 97,103,115, - 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, 0, 42,100,111, -109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117,114,101, 0,115, -116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116,101,120,109, 97, -112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97,109,101, 91, 51, - 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, 48, 93, 0, 42, -105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, 0, 97,115,112, -101, 99,116,121, 0,112,101,114, 99,101,110,116, 0,102, 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97, -116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101,114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101, -105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112,101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116, -105,109,101,111,102,102,115, 0,108,105,102,101,116,105,109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116, -105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105, -110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100, -101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116,104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, - 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104, -101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120,111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, - 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117,114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117, -109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101,115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, - 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, - 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98,105,110,100, 99,111, -115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121,110,105,110,102,108,117, -101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103,114,105,100,115,105,122, -101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100,116,104, 0, 98,105,110, -100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116, -111,116,100,109,118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115, -105,116,105,111,110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103, -114,111,117,112, 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118, -108, 0,115,105,109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, - 0,118,103,114,111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, - 84,121,112,101, 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, - 76,101,118,101,108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111, -114,105,103,105,110, 79,112,116,115, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114,101, 97,115,101, 95,111,117, -116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116, -115,118, 0,111,112,110,116,115,119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102, -118, 0,102,119, 0,100,117, 0,100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0, -108, 97,116,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, - 0, 42,115, 99,117,108,112,116, 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0, -112, 97,114,115,117, 98,115,116,114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111, -120,121, 95,103,114,111,117,112, 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111, -115,101,108,105, 98, 0, 42,112,111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115, -116,114, 97,105,110,116, 67,104, 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, - 0,114,101,115,116,111,114,101, 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108, -111, 99, 91, 51, 93, 0,111,114,105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100, -113,117, 97,116, 91, 52, 93, 0,114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114, -111,116, 65,110,103,108,101, 0,100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111, -110,115,116,105,110,118, 91, 52, 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, - 97,103, 0,112,114,111,116,101, 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0, -110,108, 97,102,108, 97,103, 0,105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, - 99, 97,118,105,115,102,108, 97,103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, - 0,100,117,112,115,116, 97, 0,100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105, -110,101,114,116,105, 97, 0,102,111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105, -110, 0,109, 97,120, 95,118,101,108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101, -115,115,105,110,103, 84,104,114,101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109, -112,116,121, 95,100,114, 97,119,116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115, -105,122,101, 0,100,117,112,102, 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116, -114,111,108,108,101,114,115, 0, 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100, -101,102, 0,103, 97,109,101,102,108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102, -116,102,108, 97,103, 0, 97,110,105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110, -115,116,114, 97,105,110,116,115, 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108, -101,115,121,115,116,101,109, 0, 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105, -109, 70,108, 97,103, 0,114,101,115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101, -102,108, 97,103, 0,114,101, 99, 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, - 83,101,116,116,105,110,103,115, 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, - 70,105,110, 97,108, 0,108, 97,115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, - 97,116,101, 0,103,112,117,108, 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117, -114,105,110,100,101,120, 0, 97, 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110, -105,109, 97,116,101,100, 0,111,109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99, -116, 0,102,111,114, 99,101,102,105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, - 0,107,105,110,107, 95, 97,120,105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109, -112, 0,102, 95,102,108,111,119, 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0, -109,105,110,100,105,115,116, 0,102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0, -112,100,101,102, 95,100, 97,109,112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112, -100,101,102, 95,102,114,105, 99,116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107, -110,101,115,115, 0, 97, 98,115,111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, - 95,115, 98,105,102,116, 0,112,100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109, -112, 95,112,111,119, 0,107,105,110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, - 97,109,112, 0,102,114,101,101, 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111, -105,115,101, 0,119,101,105,103,104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, - 91, 51, 93, 0,102,114, 97,109,101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105, -110,100,101,120, 95, 97,114,114, 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, - 0,115,105,109,102,114, 97,109,101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100, -105,116,102,114, 97,109,101, 0,108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, - 95,110, 97,109,101, 91, 54, 52, 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, - 95, 99, 97, 99,104,101, 0, 42,101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83, -116,105,102,102, 0, 97,110,103, 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, - 0,112,105,116,101,114, 97,116,105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116, -105,111,110,115, 0,107, 83, 82, 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0, -107, 83, 82, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, - 95, 67, 76, 0,107, 86, 67, 70, 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, - 0,107, 77, 84, 0,107, 67, 72, 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105, -111,110,102,108, 97,103,115, 0,110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108, -100,105,110,103, 0,116,111,116,115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0, -109,115,103, 95,108,111, 99,107, 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101, -100, 86, 71, 95, 77, 97,115,115, 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108, -105,109,105,116, 0,112,104,121,115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, - 97,108,102,114,105, 99,116, 0,109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0, -118,101,114,116,103,114,111,117,112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102, -117,122,122,121,110,101,115,115, 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, - 71, 95, 83,112,114,105,110,103, 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, - 97,108, 0,115,111,108,118,101,114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101, -121, 0,115,101, 99,111,110,100,115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, - 98, 97,108,108,115,116,105,102,102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108, -111,111,112,115, 0,109, 97,120,108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, - 97,115,116,105, 99, 0,115,112,114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, - 97,114,115,116,105,102,102, 0,105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, - 99,116,111,114, 95,119,101,105,103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0, -108,115, 99, 97,108,101, 91, 51, 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97, -100,118, 97,110, 99,101,100,111,112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101, -118,105,101,119,114,101,115,120,121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111, -100,101, 0,114,101,110,100,101,114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97, -108,117,101, 0,118,105,115, 99,111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110, -101,110,116, 0,103,114, 97,118,120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, - 97,110,105,109, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110,101, 0,105,110,105, 86,101,108,120, 0, -105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101,115,104, 0, 42,109,101,115,104, 83,117, -114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, 80, 97,116,104, 91, 50, 52, 48, 93, 0, - 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116,121,112,101, 70,108, 97,103,115, 0,100, -111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110,105,116, 84,121,112,101, 0,112, 97,114, -116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, 99,101,114,115, 0,103,101,110,101,114, - 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109,111,111,116,104,105,110,103, 0,115,117, -114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 83,105,122,101, 0,112, 97,114, -116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, 83,105,122,101, 0, 42,109,101,115,104, - 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97,114,116, 0, 99,112,115, 84,105,109,101, - 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 83,116,114,101,110, -103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, 0,118,101,108,111, 99,105,116,121,102, -111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 82, 97,100,105,117,115, - 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, 0,104,111,114,114, 0,104,111,114,103, - 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122,101,110, 98, 0,122,101,110,107, 0, 97, -109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101,120,112, 0,114, 97,110,103,101, 0,108, -105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, 99,116,105,118,105,116,121, 66,111,120, - 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105,111,110, 82,101,115, 0,112,104,121,115, -105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108,111,103,105, 99,115,116,101,112, 0,112, -104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109,105,115,105, 0,109,105,115,116,115,116, - 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114,114, 0,115,116, 97,114,103, 0,115,116, - 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97,114,109,105,110,100,105,115,116, 0,115, -116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100,111,102,115,116, 97, 0,100,111,102,101, -110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115,116, 0, 97,111,100,105,115,116,102, 97, - 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111,100,101, 0, 97,111,115, 97,109,112, 0, - 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0, 97,111, - 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112,112,114,111,120, 95,101,114,114,111,114, - 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, 97,111, 95,105,110,100,105,114,101, 99, -116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, 0, 97,111, 95,112, 97,100, 50, 0, 97, -111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95,112, 97,100, 0, 97,111, 95,115, 97,109, -112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116,104,111,100, 0, 97,111, 95, 97,112,112, -114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, 97,111,116, 97, 98,108,101,115, 0,115, -101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, - 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108, -101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118,101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66, -121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100,119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97, -118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114, -109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0,113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, - 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111, -100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84, -101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, - 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, - 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105,100,101,111, 95, 98,105,116,114, 97, -116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95,109,105,120,114, 97,116,101, 0, 97, -117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, 95,109,105,110, 95,114, 97,116,101, - 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95,115,105,122,101, 0,109,117,120, 95, -112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105,120,114, 97,116,101, 0,109, 97,105, -110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101,114, 95,102, 97, 99,116,111,114, 0, -100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101,114,114,105,100,101, 0, 42,108,105, -103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0,108, 97,121,102,108, 97,103, 0,112, - 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111,100,101, 99,100, 97,116, 97, 0, 42, -113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116,105,110,103,115, 0,102,102, 99,111, -100,101, 99,100, 97,116, 97, 0,112,115,102,114, 97, 0,112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97, -112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103, -101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0, -121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95, -115,116,101,112, 0,115,116,101,114,101,111,109,111,100,101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, - 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99,104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114, -116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110,101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112, -101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112,108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, - 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116,114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, - 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0,114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112, -104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116, -121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114,101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0, -109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0,120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, - 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108,111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97, -109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111,115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110, -115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109, -111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, - 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105,116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107, -101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107,101, 95,112, 97,100, 0, 71, 73,113,117, 97,108,105,116,121, 0, 71, 73, - 99, 97, 99,104,101, 0, 71, 73,109,101,116,104,111,100, 0, 71, 73,112,104,111,116,111,110,115, 0, 71, 73,100,105,114,101, 99, -116, 0, 89, 70, 95, 65, 65, 0, 89, 70,101,120,112,111,114,116,120,109,108, 0, 89, 70, 95,110,111, 98,117,109,112, 0, 89, 70, - 95, 99,108, 97,109,112,114,103, 98, 0,121,102,112, 97,100, 49, 0, 71, 73,100,101,112,116,104, 0, 71, 73, 99, 97,117,115,100, -101,112,116,104, 0, 71, 73,112,105,120,101,108,115,112,101,114,115, 97,109,112,108,101, 0, 71, 73,112,104,111,116,111,110, 99, -111,117,110,116, 0, 71, 73,109,105,120,112,104,111,116,111,110,115, 0, 71, 73,112,104,111,116,111,110,114, 97,100,105,117,115, - 0, 89, 70, 95,114, 97,121,100,101,112,116,104, 0, 89, 70, 95, 65, 65,112, 97,115,115,101,115, 0, 89, 70, 95, 65, 65,115, 97, -109,112,108,101,115, 0,121,102,112, 97,100, 50, 0, 71, 73,115,104, 97,100,111,119,113,117, 97,108,105,116,121, 0, 71, 73,114, -101,102,105,110,101,109,101,110,116, 0, 71, 73,112,111,119,101,114, 0, 71, 73,105,110,100,105,114,112,111,119,101,114, 0, 89, - 70, 95,103, 97,109,109, 97, 0, 89, 70, 95,101,120,112,111,115,117,114,101, 0, 89, 70, 95,114, 97,121, 98,105, 97,115, 0, 89, - 70, 95, 65, 65,112,105,120,101,108,115,105,122,101, 0, 89, 70, 95, 65, 65,116,104,114,101,115,104,111,108,100, 0, 98, 97, 99, -107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109,112, 0,115,116, 97,109,112, 95,102, -111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, 0,102,103, 95,115,116, 97,109,112, - 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105, -109,112,108,105,102,121, 95,115,117, 98,115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97, -109,112,108,101,115, 0,115,105,109,112,108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102, -121, 95, 97,111,115,115,115, 0, 99,105,110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, - 99,105,110,101,111,110,103, 97,109,109, 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, - 0,114,112, 97,100, 51, 0,100,111,109,101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108, -101, 0,100,111,109,101,116,105,108,116, 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0, -101,110,103,105,110,101, 91, 51, 50, 93, 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, - 95,109, 97,120, 0,115,104, 97,100, 98,117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0, -116,105,108,116, 0,114,101,115, 98,117,102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116, -109,111,100,101, 0,102,114, 97,109,105,110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, - 0,101,121,101,115,101,112, 97,114, 97,116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, - 0, 97, 99,116,105,118,101, 95, 98,114,117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, - 42,112, 97,105,110,116, 95, 99,117,114,115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, - 93, 0,112, 97,105,110,116, 0,115,101, 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0, - 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111,116,114,101,107,101,121, 0,116,111,116, - 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, 91, 55, 93, 0,101,109,105,116,116,101, -114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116,121,112,101, 0,100,114, 97,119, 95,115, -116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, 54, 93, 0,109, 97,116, 91, 51, 93, 91, - 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122,101, 0,116, 97, 98,108,101,116, 95,115, -116,114,101,110,103,116,104, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42,119,112, 97,105,110,116, 95,112,114,101, -118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111,117,112, 95,119,101,105,103,104,116, 0, - 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, 0,106,111,105,110,116,114,105,108,105, -109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102,115, 0,100,111,117, 98,108,105,109,105, -116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, 0,115,101,103,109,101,110,116,115, 0, -114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112,101,114, 0,117,118, 99, 97,108, 99, 95, -114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, 0,117,118, 99, 97,108, 99, 95,109, 97, -114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, 97,108, 99, 95,109, 97,112, 97,108,105, -103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, 0,117,118, 95,115,101,108,101, 99,116, -109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, 99,104, 97,105,110,108,101,110, 0,105, -109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111,114,116,105,111,110, 97,108, 95,115,105, -122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, 95,116,104,114,101,115,104, 0, 97,117, -116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97,103, 0,114,101,116,111,112,111, 95,109, -111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0,108,105,110,101, 95,100,105,118, 0,101, -108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115,112,111,116, 0,109,117,108,116,105,114, -101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114,101,115,111,108,117,116,105,111,110, 0, -115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,116, -104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,114, - 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 97,110, -103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, 97,116,105,111,110, 95,108,105,109,105, -116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,114,101,116, - 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101, -116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,100, -105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111,112,116,105,111,110,115, 0,115,107,103, -101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 95,112, 97,115,115,101,115, 0, -115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0,115,107,103,101,110, 95,109,117,108,116, -105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116,101, 0, 98,111,110,101, 95,115,107,101, -116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, 99,111,110,118,101,114,116, 0,115,107, -103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, 0,115,107,103,101,110, 95,114,101,116, - 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,114,111,108, -108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, 0,115,107,103,101,110, 95,110,117,109, - 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115,110, 97,112, 95,109,111,100,101, 0,115, -110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112,114,111,112,111,114,116,105,111,110, 97, -108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97,108,105,122,101, 0,105,110,116,112, 97, -100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98,106,115,101,108, 0,116,111,116, 99,117, -114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114,101, 0,115, 99, 97,108,101, 95,108,101, -110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, 0, 42,119,111,114,108,100, 0, 42,115, -101,116, 0, 98, 97,115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, - 93, 0,116,119, 99,101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0, 42,101, -100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116,114, 97, -110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111,117,110, -100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, 97,103, - 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, 0,112, - 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116,115, 0, -103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, 0,118, -105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118, -105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,105, -110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, -111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, 52, 93, - 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122,111,111, -109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101,119,108, -111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97,108, 91, - 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101,116,111, -112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111,111,116, -104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118,105,101, -119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103,105,111, -110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, 99,107, -104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, 0, 98, -103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, 91, 51, - 50, 93, 0,108, 97,121, 97, 99,116, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111, -117,110,100, 0,112,105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105, -100,108,105,110,101,115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115, -101,108,101, 99,116, 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102, -108, 97,103, 0, 99,117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98, -117,102, 0,120,114, 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111, -112,101,114,116,105,101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105, -110, 91, 50, 93, 0,109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111, -108,108, 0,115, 99,114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101, -101,112,111,102,115, 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108, -100,119,105,110,121, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95, -110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99,114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111, -115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, - 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117,115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118, -105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97,116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110, -100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104,111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105, -116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101, -102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100,105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111, -107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105,108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0, -109,101,110,117, 0,102,112, 95,115,116,114, 91, 56, 93, 0, 42,112,117,112,109,101,110,117, 0, 42,112, 97,114, 97,109,115, 0, - 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101, -120,116, 0, 42,111,112, 0, 42,108,111, 97,100,105,109, 97,103,101, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0, -114,101, 99,101,110,116,110,114, 0, 98,111,111,107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101, -101, 0, 42,116,114,101,101,115,116,111,114,101, 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115, -101, 97,114, 99,104, 95,116,115,101, 0,115,101, 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105, -110,101,118,105,115, 0,115,116,111,114,101,102,108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114, -116,105,108,101, 0,105,109,116,121,112,101,110,114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, - 99,107,121, 0,100,116, 95,117,118,115,116,114,101,116, 99,104, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,104,105,115, -116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101,119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119, -105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111,116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114, -115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111,119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, - 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95,112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108, -108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100, -115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99,101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97, -119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115, -101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95,103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, - 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, - 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, 95,114,101,102,115, 0,114,101,100,114, 97,119,115, 0, 42,105,100, - 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, 0,109,121, 0, 42,101,100,105,116,116,114,101,101, - 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116, -105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111, -108,108,112,111,115, 0,115, 99,114,111,108,108,104,101,105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101, -116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, - 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95,101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102, -117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97,114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42, -105,109,103, 0,108,101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99, -114,111,108,108, 98, 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110, -103,117, 97,103,101, 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,101, -110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, 0,114, 95,116,111, 95, -108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111,108,100, 0,115,104, 97, -100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, 97, 0,115,104, 97,100, -111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, 98,101,108, 0,119,105, -100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, 0,109,105,110,108, 97, - 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111,108,117,109,110,115,112, - 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, 0, 98,117,116,116,111, -110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108,115,112, 97, 99,101, 0, -112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, 52, 93, 0,105,110,110, -101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, 0,116,101,120,116, 91, - 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100,101,116,111,112, 0,115, -104, 97,100,101,100,111,119,110, 0,105,110,110,101,114, 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105, -109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95, -115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105, -118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111,108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111, -108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99,111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105, -111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109, -115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101,110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, - 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0,119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111, -108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114,111,108,108, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, - 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, - 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104, -101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, - 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, - 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95, -116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, - 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97, -110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, - 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115, -104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, - 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103, -114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114, -109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0, -101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, - 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, - 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111, -116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101,114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, - 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110,101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, - 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,100,115, - 95, 99,104, 97,110,110,101,108, 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110, -115,111,108,101, 95,111,117,116,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, - 99,111,110,115,111,108,101, 95,105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, - 0, 99,111,110,115,111,108,101, 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, - 97, 99,101,100,111,116, 95,115,105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115, -121,110,116, 97,120,110, 91, 52, 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0, -115,121,110,116, 97,120, 99, 91, 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101, -110,101, 91, 52, 93, 0, 97,117,100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, - 52, 93, 0,116,114, 97,110,115,105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115, -104, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110, -100,108,101, 95,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, -101,120, 95,115,105,122,101, 0,104,112, 97,100, 91, 51, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0, -115,111,108,105,100, 91, 52, 93, 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105, -112,111, 0,116,105,110,102,111, 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, - 97, 0,116,105,109, 97,115,101,108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, - 0,116,108,111,103,105, 99, 0,116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, - 50, 48, 93, 0, 97, 99,116,105,118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, - 0,115,112,101, 99, 91, 52, 93, 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105, -114, 91, 49, 54, 48, 93, 0,102,111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, - 48, 93, 0,116,101,120,116,117,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, - 0,112,108,117,103,115,101,113,100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0, -115,111,117,110,100,100,105,114, 91, 49, 54, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 91, 50, 52, 48, 93, 0, 97, -110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95,109,105,110, 95,103,114,105,100,115,105, -122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115,105,111,110,115, 0,100, 98,108, 95, 99, -108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104,101,101,108,108,105,110,101,115, 99,114, -111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115,101,114,112,114,101,102, 0,118,105,101, -119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111,100,101,118,105, 99,101, 0, 97,117,100, -105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100,105,111, 99,104, 97,110,110,101,108,115, - 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116,115, 0,109,101,110,117,116,104,114,101, -115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0,116,104,101,109,101,115, 0,117,105,102, -111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, 97,100,100,111,110,115, 0,107,101,121, - 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112,115, 0,117,110,100,111,109,101,109,111, -114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, 95,101,117, 99,108,105,100,101, 97,110, -100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116,105,110,103,115, 0,116, 98, 95,108,101, -102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0,108,105,103,104,116, 91, 51, 93, 0,116, -119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, 97,110,100,108,101,115,105,122,101, 0, -116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, 99,111,108,108,101, 99,116,114, 97,116, -101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109,101,109, 99, 97, 99,104,101,108,105,109, -105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109,101,115,101,114,118,101,114,112,111,114, -116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116,101,114, 95,100,105, 97, 0,114,118,105, -115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95,102,105,108,101,115, 0,115,109,111,111, -116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110,100,111,102, 95,112, 97,110, 0,110,100, -111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0,105,112,111, 95,110,101,119, 0, 99,111,108,111,114, - 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, - 97,105,116, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101,114, 91, 49, - 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118,101,114,116, - 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99,101,110,101, - 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115,104, 0,100, -111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99,117,114,115, -111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0,115,117, 98, -119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, 0,104, 97, -110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116,121,112,101, - 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, 97,119,110, - 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, 0,108, 97, - 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115,110, 97,112, - 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, 97,116, 97, - 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, 97,115,116, - 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, 99,104, 91, - 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112,101, 0,104, -101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, 97, 99,116, -105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105,100, 0,114, -101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110, -101,108,115, 0, 42,104,101, 97,100,101,114,115,116,114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115, -116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115,105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, - 0,109,105,110,115,117, 98,118,101,114,115,105,111,110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99, -101,110,101, 0,102,105,108,101,102,108, 97,103,115, 0,103,108,111, 98, 97,108,102, 0,110, 97,109,101, 91, 56, 48, 93, 0, 42, -105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0,110, -114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, 93, - 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,115, 97,116,117,114, 97,116,105,111,110, 0,100,105,114, - 91, 49, 54, 48, 93, 0,100,111,110,101, 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42, -115,116,114,105,112,100, 97,116, 97, 0,111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111, -114,109, 0, 42, 99,111,108,111,114, 95, 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116, -115,116,114,105,112,100, 97,116, 97, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, - 95,101,110,100,115,116,105,108,108, 0, 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, - 95,101,110,100,115,116,105,108,108, 0, 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, - 0, 42, 42, 99,117,114,114,101,110,116, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97, -114,116,111,102,115, 0,101,110,100,111,102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101, -110,100,100,105,115,112, 0,109,117,108, 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, - 0, 42,115,116,114,105,112, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, 97,100,101,114, - 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42,115,111,117,110, -100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101,110,101,110,114, - 0,115,116,114,111, 98,101, 0, 42,101,102,102,101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102, -115, 0, 97,110,105,109, 95,101,110,100,111,102,115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111, -112, 97, 99,105,116,121, 0, 42,111,108,100, 98, 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115, -101,112, 0,109,101,116, 97,115,116, 97, 99,107, 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100, -105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95,115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,101,100,103,101, 87,105, -100,116,104, 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109, -112, 0,102, 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, - 83, 99, 97,108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, - 97,108,101,121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73, -110,105, 0,114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95, -115, 99, 97,108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, - 86, 97,108,105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116, -111,116,112, 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120, -102, 97, 99, 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, - 97,120,108,101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, - 99,104,105,108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115, -116, 97,116,105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0, -102,108, 97,103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, - 51, 50, 93, 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, - 99, 0,117,115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0, -108, 97,115,116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101, -116, 78, 97,109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, - 50, 93, 0,109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, - 97,116,101,114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97, -109,101, 91, 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, - 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, - 79, 98,106,101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112, -101, 0,112,117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97, -112, 0,106,111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116, -116,111,110, 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, - 42,109,121,110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, - 0,118, 97,108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, - 51, 50, 93, 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115, -116,114,105,100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, - 51, 91, 50, 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108, -105,110, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, - 97,108,102,108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, - 0,102,111,114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97, -110,103,117,108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, - 0,109, 97,120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, - 0,109,105,110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, - 0, 98,117,116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, - 97,114,103, 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97, -116, 95, 97,114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, - 0, 98,111,100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97, -109,101, 91, 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114, -103,101,116, 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97, -120,114,111,116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0, -115,112,101,101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101, -114,101,110, 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108, -111,102,102, 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, - 95,111,117,116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101, -119,112, 97, 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, - 0, 42, 99, 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42, -108, 97,109,112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114, -111,112, 0, 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, - 93, 0, 98,111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, - 95,116, 97,105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119, -105,100,116,104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97, -105,108, 0, 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, - 95, 98,111,110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95, -112,114,111,116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115, -116,116,121,112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, - 97,116,104,115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110, -116,115, 0,115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115, -102, 0,103,104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111, -115,116, 95,116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97, -116,104, 95,116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0, -112, 97,116,104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97, -116,104, 95, 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115, -101,108,101, 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108, -100, 0,105,107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, - 0, 42, 98, 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95, -109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, - 97,100, 91, 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108, -105,109,105,116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99, -104, 0,105,107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111, -109, 0, 42, 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0,112,114,111,120,121, 95,108, 97,121,101, -114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, 95,111,102,102,115,101,116, - 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0,105,107,115,111,108,118,101, -114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116, -101,112, 0,109,105,110,115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, - 99,107, 0,109, 97,120,118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101, -108,115, 0, 99,117,115,116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99, -116,105,118,101, 95,109, 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0, -102,105,108,116,101,114,102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101, -109,112, 0,110, 97,109,101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110, -102,111,114, 99,101, 0,104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114, -111,114, 0, 42,116, 97,114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114, -100,101,114, 0,116, 97,114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111, -111,116, 98,111,110,101, 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108, -101,115,117, 98,116, 97,114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119, -101,105,103,104,116, 0,103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, - 97,105,110,108,101,110, 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115, -101,114,118,101,100, 50, 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, - 0,108,111, 99,107,102,108, 97,103, 0,111,102,102,115,101,116, 95,102, 97, 99, 0,102,111,108,108,111,119,102,108, 97,103, 0, -118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103,108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105, -118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105, -116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0,101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, - 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109, -105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, - 97,120, 91, 51, 93, 0,122,109,105,110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, - 50, 93, 0,110,111, 95,114,111,116, 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111, -100, 0, 97, 99,116,115,116, 97,114,116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101, -108,101,110, 0,115, 99, 97,108,101, 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, - 91, 51, 50, 93, 0,111,102,102,115, 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111, -117,116,112,117,116, 0,100, 97,116, 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115, -111, 99,107, 0,110,115, 0,108,105,109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0, -115,116, 97, 99,107, 95,105,110,100,101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110, -100,101,120, 0,116,111, 95,105,110,100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95, -110,111,100,101, 0,108, 97,115,116,121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105, -119,105,100,116,104, 0, 99,117,115,116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117, -115,116,111,109, 52, 0,110,101,101,100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, - 0,116,111,116,114, 0, 98,117,116,114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, - 0, 42,102,114,111,109,110,111,100,101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100, -101,115, 0,108,105,110,107,115, 0, 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105, -116, 0,115,116, 97, 99,107,115,105,122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42, -111,119,110,116,121,112,101, 0,112, 97,100, 50, 91, 50, 93, 0, 40, 42,116,105,109,101, 99,117,114,115,111,114, 41, 40, 41, 0, - 40, 42,115,116, 97,116,115, 95,100,114, 97,119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, - 42,116, 98,104, 0, 42,116, 99,104, 0, 42,115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112, -108,101,115, 0,109,105,110,115,112,101,101,100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98, -111,107,101,104, 0,103, 97,109,109, 97, 0, 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, - 0,105,109, 97,103,101, 95,105,110, 95,104,101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, - 95,121, 0,115,112,105,110, 0,105,116,101,114, 0,119,114, 97,112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105, -103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97,116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101, -110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, 52, 93, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, 0, 99, -111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, 99,111, - 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, 0, 42, -100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105,120, 0, -116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105,116, 0, -115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108, -101, 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, - 42, 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0, 99,117,114,114, 0, - 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, 91, 51, 93, 0, 98,119, -109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116,105,111,110, 0,100, 97, -116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95, 98, 91, 50, 53, 54, - 93, 0,111,102,102,115,101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0,106,105,116,116,101,114, 0,115,109, -111,111,116,104, 95,115,116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, - 95,102, 97, 99,116,111,114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0, -118,101,114,116,101,120,112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, - 0, 97, 99,116,105,118,101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95, -109, 97,115,107, 0, 42,108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116, -111,116,115,105,122,101, 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111, -116, 91, 52, 93, 0, 97,118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117, -109, 0,112, 97,114,101,110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115, -101,116, 0,114,116, 91, 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0, -100,105,101,116,105,109,101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97, -108,105,118,101, 0, 42, 98,111,105,100,115, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112,101, 0, 97,118,101,109,111, -100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97,115, 0,100,114, 97,119, 95, -115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,114,101,110, 95,115,116,101,112, 0,104, - 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115,116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97, -100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111,109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97, -108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105,116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105, -116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108,116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, - 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112,108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112, -108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108,105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105, -109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, - 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95,114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, - 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99,116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118, -101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97, -115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0,114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, - 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101, -110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0,114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114, -101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105, -108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0, -114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117,103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114, -111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117,103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95, -115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99,108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, - 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108,105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, - 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112, -115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, - 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42,112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, - 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104,105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104, -101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104,101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, - 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117,116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42, -108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, - 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0, -116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, - 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0,118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101, -114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114,115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97, -110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114,117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, - 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114,117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, - 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109,101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95, -115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95,115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108, -100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111,116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116, -105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97,109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114, -105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116,121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118, -103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111,117,112, 95,115,116,114,117, 99,116, 0,112,114,101,115,101,116,115, - 0,114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115, -101,108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111, -111,112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, - 99,107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109, -101, 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, - 98,117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42, -109,101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118, -101,108, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111, -119,115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100, -111, 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0, -106,111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105, -103,115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101, -116,105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, - 99,114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119, -105,110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100, -100,109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, - 42,116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119, -100, 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101, -115,116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, - 0, 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116, -121,112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0, -107,109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97, -115,101,110, 97,109,101, 91, 54, 52, 93, 0,102,105,108,116,101,114, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, - 42, 99,117,115,116,111,109,100, 97,116, 97, 0, 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116, -115, 0,109, 97, 99,114,111, 0, 42,111,112,109, 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99, -111,101,102,102,105, 99,105,101,110,116,115, 0, 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, - 0, 97,109,112,108,105,116,117,100,101, 0,112,104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115, -101, 95,111,102,102,115,101,116, 0,118, 97,108,117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102, -111,114,101, 95,109,111,100,101, 0, 97,102,116,101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101, -115, 0, 97,102,116,101,114, 95, 99,121, 99,108,101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, - 99, 97,116,105,111,110, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0, -116,114, 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95, -116, 97,114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, - 93, 0, 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105, -110,100,101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, - 56, 93, 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97, -112, 0,102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101, -120,116,101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,116,101,109,112,108, 97,116,101,115, 0,103,114, -111,117,112,109,111,100,101, 0,112, 97,116,104,115, 0,107,101,121,105,110,103,102,108, 97,103, 0, 97, 99,116,105,118,101, 95, -112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114,105, -112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111,100, -101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0,114, -117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95,105, -100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, 0, -119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97,116, -101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114,117, -108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95,115, -116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107,105, -110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97, 99, 99,117,114, 97, 99,121, 0, 97,105,114, 95,109,105,110, 95,115, -112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97, -105,114, 95,109, 97,120, 95, 97,118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97, -110,100, 95,106,117,109,112, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110, -100, 95,109, 97,120, 95, 97, 99, 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115, -111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116, -101,115, 0, 42,115,109,100, 0, 42,102,108,117,105,100, 0, 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108, -108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101,120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, - 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109, -112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0, -118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111,105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0, -100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95,119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117, -109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111, -105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116, -121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95,115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102, -108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115,105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42, -112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 0, - 84, 89, 80, 69,202, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0, -105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102,108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, - 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76,105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, - 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0,118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51, -100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, - 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80,114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97, -114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118,105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118, -101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114,118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105, -112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101, -120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101,114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108, -101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115,101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, - 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82,101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, - 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, - 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105,110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, - 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101,120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117, -114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, - 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70,111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101, -116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, - 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67,117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, - 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99, -101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68,101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, - 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69,100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97, -116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116,105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68, -101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111, -111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112,101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116, -121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116,121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, - 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67,111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, - 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108, -116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77, -111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105, -101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112, -108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105,110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70, -108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105, -115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105, -102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109, -111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, - 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102, -105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100, -121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, - 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101,116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, - 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101,101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101, -114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115,104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115, -104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101, -110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115,104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, - 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, - 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97,114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111, -100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111,100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, -117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105, -102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107, -119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100, -105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75,101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83, -111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68,101,102, -111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, 0, 98, - 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, 98, 77, -111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68,101,102, -108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, 99,116, - 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101,109, 0, - 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, 0, 66, -111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, 0, 65, -118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, 0, 81, -117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111,100,101, - 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121,101,114, - 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, 68,111, -109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97,114,107, -101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105,110,103, -115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100,105,116, - 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, 83, 99, -117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116,115, 0, - 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69,100,105, -116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, 99, 0, - 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, 86,105, -101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116,111,114, -101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101,119, 50, - 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, 68,111, -112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108,101, 83, -101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, 0,119, -109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, 0, 84, -114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, 97,103, -101, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, 97, 99,101, 84,101,120,116, 0, 83, - 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99, -101, 78,111,100,101, 0, 83,112, 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110, -115,111,108,101, 76,105,110,101, 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80, -114,101,102, 0,117,105, 70,111,110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117, -105, 87,105,100,103,101,116, 67,111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114, -115, 0, 84,104,101,109,101, 85, 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111, -108,111,114, 0, 98, 84,104,101,109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101, -114, 68,101,102, 0, 83, 99,114, 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, - 84,121,112,101, 0,117,105, 76, 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, - 65, 82,101,103,105,111,110, 0, 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83, -116,114,105,112, 69,108,101,109, 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116, -114,105,112, 84,114, 97,110,115,102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83, -116,114,105,112, 80,114,111,120,121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, - 99,101, 0, 98, 83,111,117,110,100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111, -119, 86, 97,114,115, 0, 84,114, 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97, -114,115, 0, 83,112,101,101,100, 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, - 69,102,102, 0, 80, 97,114,116, 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114, -111,112,101,114,116,121, 0, 98, 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, - 98, 84,111,117, 99,104, 83,101,110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114, -111,112,101,114,116,121, 83,101,110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101, -108, 97,121, 83,101,110,115,111,114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97, -114, 83,101,110,115,111,114, 0, 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, - 0, 98, 65,114,109, 97,116,117,114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, - 98, 83,101,110,115,111,114, 0, 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110, -115,111,114, 0, 98, 69,120,112,114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, - 98, 65, 99,116,117, 97,116,111,114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99, -116,105,111,110, 65, 99,116,117, 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110, -100, 51, 68, 0, 98, 69,100,105,116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99, -116,117, 97,116,111,114, 0, 98, 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, - 65, 99,116,117, 97,116,111,114, 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116, -117, 97,116,111,114, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, - 65, 99,116,117, 97,116,111,114, 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103, -101, 65, 99,116,117, 97,116,111,114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108, -105,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, - 98, 80, 97,114,101,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, - 65,114,109, 97,116,117,114,101, 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99, -101, 83,111,117,110,100, 0, 71,114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114, -101, 0, 98, 77,111,116,105,111,110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 98, - 73, 75, 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99, -101, 65, 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105, -110,116, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110, -116, 84, 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, - 97,116,105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105, -110,116, 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107, -101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110, -116, 0, 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99, -116,105,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, - 80, 97,116,104, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 82,105,103,105,100, 66,111,100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67, -108, 97,109,112, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97, -105,110,116, 0, 98, 84,114, 97,110,115,102,111,114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 76,105,109, -105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, 76,105,109,105,116, - 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116,114, 97,105,110,116, - 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114,105,112, 0, 98, 78, -111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76,105,110,107, 0, 98, - 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, 78,111,100,101, 84, -121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, 97,116, 97, 0, 78, -111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66,108,117,114, 68, 97, -116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, 0, 78,111,100,101, - 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108,111, 97,116,115, 0, - 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, 78,111,100,101, 68, -101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71,108, 97,114,101, 0, - 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111,100,101, 67,111,108, -111,114, 66, 97,108, 97,110, 99,101, 0, 84,101,120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, - 80,111,105,110,116, 0, 67,117,114,118,101, 77, 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, - 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117,115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105, -114, 75,101,121, 0, 80, 97,114,116,105, 99,108,101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111, -105,100, 68, 97,116, 97, 0, 67,104,105,108,100, 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114, -103,101,116, 0, 80, 97,114,116,105, 99,108,101, 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, - 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83,101,116,116,105,110, -103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, 80, 97,114,116,105, - 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112,111,105,110,116, 0, - 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97,121,101,114, 0, 82, -101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, - 0,119,109, 87,105,110,100,111,119, 0,119,109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, - 83,117, 98, 87,105,110,100,111,119, 0,119,109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, - 0, 80,111,105,110,116,101,114, 82, 78, 65, 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84, -121,112,101, 0, 70, 77,111,100,105,102,105,101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111, -100, 95, 70,117,110, 99,116,105,111,110, 71,101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, - 68, 97,116, 97, 0, 70, 77,111,100, 95, 69,110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, - 77,111,100, 95, 80,121,116,104,111,110, 0, 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115, -101, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110,101,108, - 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97,105,114, - 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, 75, 83, - 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73,100, 65, -100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, 97,108, - 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66,111,105, -100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, 97,103, -101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, 0, 70, - 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 84, 76, 69, 78, 1, 0, 1, 0, 2, 0, 2, 0, - 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 8, 0, 12, 0, 8, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, 12, 0, 24, 0, - 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 20, 0, 76, 0, 52, 0, 40, 2, 0, 0, 32, 0,140, 0,220, 3, 92, 0, 36, 0, 56, 0, - 84, 0,112, 0,124, 0, 56, 0, 24, 0, 40, 0,120, 0, 12, 0,120, 0, 36, 0,168, 5,128, 1, 0, 0, 0, 0, 0, 0, 8, 1, - 40, 1, 84, 1, 24, 0, 8, 3,168, 0, 0, 0, 72, 0, 24, 1,152, 0,132, 0,140, 1, 8, 1, 56, 0, 88, 0,160, 2, 76, 0, - 60, 1, 0, 0,108, 0,104, 0,148, 0, 56, 0, 8, 0, 16, 0, 92, 1, 0, 0, 0, 0, 0, 0, 40, 1, 20, 0, 44, 0, 60, 0, - 24, 0, 12, 0, 12, 0, 4, 0, 8, 0, 8, 0, 0, 0, 28, 0, 84, 0, 32, 0, 8, 0, 12, 0, 8, 0, 8, 0, 4, 0, 4, 0, - 0, 1, 32, 0, 12, 0, 16, 0, 64, 0, 24, 0, 12, 0, 40, 0, 56, 0, 72, 0, 92, 0,100, 0, 72, 0,100, 0,120, 0, 68, 0, - 64, 0,112, 0, 64, 0, 76, 0,188, 0, 48, 0,168, 0,152, 0,156, 0, 64, 0, 96, 0,108, 0,188, 0,104, 0,216, 0, 56, 0, - 84, 0, 0, 0,136, 0, 28, 0,240, 1,104, 0, 0, 0, 80, 0, 0, 0, 0, 0, 68, 0, 8, 0, 8, 0,224, 0, 80, 0,124, 1, - 76, 0, 68, 0, 64, 0, 64, 0,168, 1,112, 0,108, 0, 56, 0,112, 0,188, 0, 40, 0, 0, 0, 92, 0,112, 0, 72, 0, 48, 0, - 20, 0,120, 0,144, 0, 88, 1,208, 0,180, 0, 0, 0, 68, 0, 92, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,120, 1, 28, 0, -176, 0,144, 0, 40, 0, 60, 0, 24, 0, 72, 0, 40, 4, 56, 0, 20, 0, 16, 0,100, 0, 84, 0, 24, 0,132, 1, 36, 0, 16, 0, -156, 0, 80, 0, 48, 0, 44, 0,136, 1, 32, 0, 8, 0, 16, 0, 24, 2, 0, 0, 0, 0, 72, 0, 72, 3, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0,248, 0, 40, 0,148, 0, 48, 0,140, 0,216, 0, 24, 0,224, 0,224, 0,204, 1, 60, 0, 0, 0,120, 0, 0, 0, - 4, 1, 12, 0, 12, 0,160, 12, 24, 12,200, 0,124, 2, 80, 2, 40, 0,180, 0,244, 0, 52, 0,148, 2, 28, 0,112, 1, 24, 0, - 16, 1, 32, 0,224, 0, 32, 0, 32, 0, 80, 2, 40, 1, 16, 0,144, 24, 72, 0, 56, 0,232, 11, 20, 0, 24, 0, 64, 1, 0, 0, - 0, 0, 96, 0, 0, 0,248, 0, 0, 0, 16, 1, 80, 0, 28, 0, 16, 0, 8, 0, 52, 0,252, 0,240, 0,168, 1,204, 0, 12, 1, - 16, 0, 12, 0, 24, 0, 52, 0, 16, 0, 20, 0, 16, 0, 24, 0, 56, 1, 0, 0, 56, 0, 52, 0, 48, 0, 8, 0, 44, 0, 72, 0, -104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 68, 0, 76, 0, 80, 0, 60, 0,128, 0, 76, 0, 60, 0, 12, 0, - 92, 0, 68, 0, 32, 0, 80, 0, 16, 0, 76, 0,108, 0, 84, 0, 28, 0, 96, 0, 56, 0, 56, 0,108, 0,140, 0, 4, 0, 20, 0, - 12, 0, 8, 0, 80, 0, 40, 0,196, 0, 24, 0, 16, 1,144, 0, 16, 0,204, 1, 4, 0, 40, 0,104, 0,224, 0, 64, 0, 44, 0, - 72, 0,116, 0, 60, 0,112, 0, 16, 0, 52, 0, 44, 0, 44, 0, 44, 0, 36, 0, 68, 0, 64, 0, 44, 0, 44, 0, 20, 0, 52, 0, - 96, 0, 12, 0,108, 0, 92, 0, 28, 0, 28, 0, 28, 0, 52, 0, 20, 0, 60, 0,140, 0, 36, 0,120, 0, 32, 0,180, 0, 0, 0, - 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, 40, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 8, 0, 24, 0, - 32, 0, 8, 0, 72, 0, 32, 0, 12, 0, 44, 0, 20, 0, 68, 0,240, 0, 24, 0, 56, 0, 52, 0, 20, 0, 64, 0, 28, 0, 20, 0, -180, 0,196, 1, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 20, 0, 24, 0,172, 0, 24, 0, 24, 0,164, 0,148, 0,216, 0, - 0, 0, 0, 0, 0, 0,104, 0, 0, 0, 96, 0, 0, 0, 88, 0, 20, 0, 24, 0, 16, 0, 20, 0, 8, 0, 8, 0, 24, 0, 20, 0, - 48, 0,208, 1, 28, 1, 16, 0, 68, 0, 0, 1, 20, 0,160, 0, 88, 0, 96, 0, 88, 0, 20, 0, 56, 0, 48, 0, 68, 0, 56, 0, - 92, 0, 64, 0, 56, 0, 96, 0, 0, 0, 0, 0, 83, 84, 82, 67,144, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, - 11, 0, 3, 0, 11, 0, 0, 0, 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, - 2, 0, 5, 0, 2, 0, 6, 0, 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, - 16, 0, 2, 0, 8, 0, 5, 0, 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, - 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, - 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, - 7, 0, 8, 0, 22, 0, 4, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, - 4, 0, 10, 0, 4, 0, 11, 0, 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 25, 0, 4, 0, 9, 0, 13, 0, 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, - 0, 0, 17, 0, 0, 0, 18, 0, 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, - 27, 0, 9, 0, 9, 0, 0, 0, 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, - 4, 0, 29, 0, 26, 0, 30, 0, 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, - 4, 0, 36, 0, 4, 0, 37, 0, 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, - 2, 0, 43, 0, 4, 0, 44, 0, 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 0, 0, 48, 0, 33, 0, 21, 0, 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, - 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, - 27, 0, 31, 0, 12, 0, 63, 0, 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, - 37, 0, 0, 0, 37, 0, 1, 0, 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, - 4, 0, 69, 0, 4, 0, 70, 0, 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, - 38, 0, 13, 0, 27, 0, 31, 0, 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, - 36, 0, 80, 0, 27, 0, 81, 0, 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, - 40, 0, 1, 0, 0, 0, 84, 0, 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, - 4, 0, 87, 0, 4, 0, 88, 0, 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, - 42, 0, 15, 0, 27, 0, 31, 0, 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, - 4, 0, 98, 0, 4, 0, 99, 0, 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, - 43, 0, 3, 0, 4, 0,106, 0, 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 7, 0,108, 0, 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, - 7, 0,115, 0, 7, 0,116, 0, 7, 0,117, 0, 7, 0,118, 0, 2, 0,119, 0, 2, 0,120, 0, 7, 0,121, 0, 36, 0, 80, 0, - 32, 0,122, 0, 45, 0, 13, 0, 4, 0,123, 0, 4, 0,124, 0, 4, 0,125, 0, 4, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, - 2, 0, 19, 0, 2, 0,129, 0, 2, 0,130, 0, 2, 0,131, 0, 2, 0,132, 0, 2, 0,133, 0, 46, 0,134, 0, 47, 0, 32, 0, - 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,135, 0, 48, 0,136, 0, 49, 0,137, 0, 50, 0,138, 0, 2, 0,129, 0, 2, 0, 19, 0, - 2, 0,139, 0, 2, 0, 17, 0, 2, 0, 37, 0, 2, 0, 43, 0, 4, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, - 2, 0,144, 0, 2, 0,145, 0, 2, 0,146, 0, 4, 0,147, 0, 4, 0,148, 0, 43, 0,149, 0, 30, 0,150, 0, 0, 0,151, 0, - 7, 0,152, 0, 4, 0,153, 0, 2, 0,154, 0, 2, 0,155, 0, 2, 0,156, 0, 2, 0,157, 0, 7, 0,158, 0, 7, 0,159, 0, - 51, 0, 63, 0, 2, 0,160, 0, 2, 0,161, 0, 2, 0,162, 0, 2, 0,163, 0, 32, 0,164, 0, 52, 0,165, 0, 0, 0,166, 0, - 0, 0,167, 0, 0, 0,168, 0, 0, 0,169, 0, 0, 0,170, 0, 7, 0,171, 0, 7, 0,172, 0, 7, 0,173, 0, 2, 0,174, 0, - 2, 0,175, 0, 2, 0,176, 0, 2, 0,177, 0, 2, 0,178, 0, 2, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 7, 0,182, 0, - 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0,186, 0, 7, 0, 57, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, - 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, - 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, - 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, - 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, 7, 0,218, 0, 7, 0,219, 0, 7, 0,220, 0, 7, 0,221, 0, - 53, 0, 15, 0, 0, 0,222, 0, 9, 0,223, 0, 0, 0,224, 0, 0, 0,225, 0, 4, 0,226, 0, 4, 0,227, 0, 9, 0,228, 0, - 7, 0,229, 0, 7, 0,230, 0, 7, 0,231, 0, 4, 0,232, 0, 9, 0,233, 0, 9, 0,234, 0, 4, 0,235, 0, 4, 0, 37, 0, - 54, 0, 6, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,236, 0, 7, 0, 67, 0, 4, 0, 64, 0, 55, 0, 5, 0, - 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,237, 0, 54, 0,231, 0, 56, 0, 17, 0, 32, 0,164, 0, 47, 0,238, 0, - 57, 0,239, 0, 7, 0,240, 0, 7, 0,241, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,243, 0, - 4, 0,244, 0, 2, 0,245, 0, 2, 0,246, 0, 4, 0,129, 0, 4, 0,140, 0, 2, 0,247, 0, 2, 0,248, 0, 58, 0, 22, 0, - 2, 0, 19, 0, 2, 0,249, 0, 7, 0,250, 0, 7, 0,251, 0, 2, 0,139, 0, 2, 0,252, 0, 4, 0,253, 0, 4, 0,254, 0, - 32, 0,164, 0, 4, 0,255, 0, 2, 0, 0, 1, 2, 0, 1, 1, 9, 0, 2, 1, 7, 0, 3, 1, 7, 0, 4, 1, 2, 0, 5, 1, - 2, 0, 6, 1, 2, 0, 7, 1, 2, 0, 8, 1, 7, 0, 9, 1, 7, 0, 10, 1, 55, 0, 11, 1, 59, 0, 11, 0, 4, 0, 12, 1, - 4, 0, 13, 1, 2, 0, 14, 1, 2, 0, 19, 0, 2, 0, 15, 1, 2, 0, 16, 1, 32, 0,164, 0, 7, 0, 17, 1, 4, 0, 18, 1, - 0, 0, 19, 1, 7, 0, 20, 1, 52, 0, 61, 0, 27, 0, 31, 0, 39, 0, 75, 0, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, - 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, 7, 0, 27, 1, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, - 7, 0, 32, 1, 7, 0, 33, 1, 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, - 7, 0, 40, 1, 2, 0, 41, 1, 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 47, 1, - 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,242, 0, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 7, 0, 51, 1, 4, 0, 52, 1, - 4, 0, 53, 1, 2, 0, 54, 1, 2, 0, 55, 1, 2, 0, 15, 1, 2, 0,127, 0, 4, 0, 23, 0, 4, 0,124, 0, 4, 0,125, 0, - 4, 0,126, 0, 7, 0, 56, 1, 7, 0, 57, 1, 7, 0,189, 0, 45, 0, 58, 1, 60, 0, 59, 1, 36, 0, 80, 0, 47, 0,238, 0, - 53, 0, 60, 1, 55, 0, 11, 1, 56, 0, 61, 1, 30, 0,150, 0, 58, 0, 62, 1, 59, 0, 63, 1, 0, 0, 64, 1, 0, 0,181, 0, - 61, 0, 8, 0, 7, 0, 65, 1, 7, 0, 66, 1, 7, 0,172, 0, 4, 0, 19, 0, 7, 0, 67, 1, 7, 0, 68, 1, 7, 0, 69, 1, - 32, 0, 45, 0, 62, 0, 84, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 70, 1, 2, 0,175, 0, - 2, 0, 71, 1, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,185, 0, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, - 7, 0, 75, 1, 7, 0, 76, 1, 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 7, 0, 82, 1, - 63, 0, 83, 1, 2, 0,249, 0, 2, 0, 70, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, - 7, 0, 87, 1, 7, 0, 88, 1, 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 2, 0, 92, 1, 0, 0, 93, 1, 0, 0, 94, 1, - 2, 0, 95, 1, 2, 0, 96, 1, 2, 0, 97, 1, 2, 0, 98, 1, 2, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, - 7, 0,103, 1, 2, 0,104, 1, 2, 0, 43, 0, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 2, 0,108, 1, 7, 0,109, 1, - 7, 0,110, 1, 7, 0,111, 1, 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, - 7, 0,118, 1, 7, 0,119, 1, 7, 0,120, 1, 2, 0,121, 1, 2, 0,122, 1, 4, 0,123, 1, 4, 0,124, 1, 2, 0,125, 1, - 2, 0,126, 1, 2, 0,127, 1, 2, 0,128, 1, 7, 0,129, 1, 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 2, 0,133, 1, - 2, 0,134, 1, 36, 0, 80, 0, 51, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, 30, 0,150, 0, 64, 0, 2, 0, 27, 0, 31, 0, - 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 7, 0,143, 1, - 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, 7, 0,147, 1, 2, 0,148, 1, 2, 0,149, 1, 2, 0,150, 1, 2, 0,151, 1, - 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, 7, 0,155, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,156, 1, - 2, 0, 19, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0,184, 0, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, - 7, 0,161, 1, 7, 0,162, 1, 7, 0,163, 1, 7, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, - 7, 0,169, 1, 7, 0,170, 1, 7, 0,171, 1, 7, 0,172, 1, 7, 0,173, 1, 7, 0,174, 1, 7, 0,175, 1, 7, 0,176, 1, - 65, 0,177, 1, 7, 0,178, 1, 7, 0,179, 1, 7, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, - 2, 0,185, 1, 2, 0,186, 1, 2, 0,187, 1, 0, 0,188, 1, 0, 0,189, 1, 7, 0,190, 1, 7, 0,191, 1, 2, 0,192, 1, - 2, 0,193, 1, 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 2, 0,198, 1, 2, 0,199, 1, 4, 0, 70, 1, - 4, 0,200, 1, 2, 0,201, 1, 2, 0,202, 1, 2, 0,203, 1, 2, 0,204, 1, 7, 0,205, 1, 7, 0,206, 1, 7, 0,207, 1, - 7, 0,208, 1, 7, 0,209, 1, 7, 0,210, 1, 7, 0,211, 1, 7, 0,212, 1, 7, 0,213, 1, 7, 0,214, 1, 0, 0,215, 1, - 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 4, 0,219, 1, 0, 0,220, 1, 0, 0,105, 1, 0, 0,221, 1, 0, 0, 64, 1, - 2, 0,222, 1, 2, 0,223, 1, 2, 0,136, 1, 2, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, - 7, 0,229, 1, 7, 0,230, 1, 7, 0,231, 1, 2, 0,160, 0, 2, 0,161, 0, 55, 0,232, 1, 55, 0,233, 1, 0, 0,234, 1, - 0, 0,235, 1, 0, 0,236, 1, 0, 0,237, 1, 2, 0,238, 1, 2, 0,239, 1, 7, 0,240, 1, 7, 0,241, 1, 51, 0,135, 1, - 60, 0, 59, 1, 36, 0, 80, 0, 67, 0,242, 1, 30, 0,150, 0, 7, 0,243, 1, 7, 0,244, 1, 7, 0,245, 1, 7, 0,246, 1, - 7, 0,247, 1, 2, 0,248, 1, 2, 0, 70, 0, 7, 0,249, 1, 7, 0,250, 1, 7, 0,251, 1, 7, 0,252, 1, 7, 0,253, 1, - 7, 0,254, 1, 7, 0,255, 1, 7, 0, 0, 2, 7, 0, 1, 2, 2, 0, 2, 2, 2, 0, 3, 2, 4, 0, 4, 2, 4, 0,122, 1, - 12, 0, 5, 2, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0, 6, 2, 69, 0, 2, 0, 43, 0,149, 0, 70, 0, 26, 0, 70, 0, 0, 0, - 70, 0, 1, 0, 71, 0, 7, 2, 4, 0, 8, 2, 4, 0, 9, 2, 4, 0, 10, 2, 4, 0, 11, 2, 4, 0, 12, 2, 4, 0, 13, 2, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 14, 2, 2, 0, 15, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 16, 2, - 7, 0, 17, 2, 7, 0, 18, 2, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 7, 0, 22, 2, 7, 0, 23, 0, 7, 0, 23, 2, - 7, 0, 24, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 7, 2, 12, 0, 25, 2, 12, 0, 26, 2, 12, 0, 27, 2, - 36, 0, 80, 0, 66, 0, 28, 2, 0, 0, 19, 0, 0, 0, 29, 2, 2, 0, 30, 2, 2, 0,174, 0, 2, 0, 37, 0, 7, 0, 65, 1, - 7, 0,172, 0, 7, 0, 66, 1, 7, 0, 31, 2, 7, 0, 32, 2, 7, 0, 33, 2, 70, 0, 34, 2, 35, 0, 11, 0, 7, 0, 35, 2, - 7, 0, 36, 2, 7, 0, 37, 2, 7, 0,251, 0, 2, 0, 55, 0, 0, 0, 38, 2, 0, 0, 39, 2, 0, 0, 40, 2, 0, 0, 41, 2, - 0, 0, 42, 2, 0, 0, 43, 2, 34, 0, 7, 0, 7, 0, 44, 2, 7, 0, 36, 2, 7, 0, 37, 2, 2, 0, 40, 2, 2, 0, 43, 2, - 7, 0,251, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 45, 2, 2, 0, 43, 2, - 2, 0, 19, 0, 2, 0, 46, 2, 2, 0, 47, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 50, 2, 2, 0, 51, 2, 2, 0, 52, 2, - 2, 0, 53, 2, 7, 0, 54, 2, 7, 0, 55, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 56, 2, 2, 0, 57, 2, 4, 0, 58, 2, - 74, 0, 5, 0, 2, 0, 59, 2, 2, 0, 45, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, 7, 0, 5, 0, - 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 60, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 7, 2, 12, 0, 61, 2, - 12, 0, 26, 2, 12, 0, 62, 2, 32, 0, 63, 2, 32, 0, 64, 2, 32, 0, 65, 2, 36, 0, 80, 0, 77, 0, 66, 2, 38, 0, 67, 2, - 66, 0, 28, 2, 12, 0, 68, 2, 7, 0, 65, 1, 7, 0,172, 0, 7, 0, 66, 1, 2, 0,174, 0, 2, 0, 43, 0, 2, 0, 69, 2, - 2, 0, 70, 2, 2, 0, 71, 2, 7, 0, 72, 2, 7, 0, 70, 0, 2, 0, 73, 2, 2, 0, 30, 2, 2, 0, 19, 0, 2, 0, 74, 2, - 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 2, 0, 48, 2, 2, 0, 49, 2, 2, 0, 78, 2, 2, 0, 79, 2, 4, 0, 80, 2, - 34, 0, 81, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 82, 2, 7, 0, 83, 2, 7, 0, 84, 2, 7, 0, 85, 2, - 7, 0, 86, 2, 7, 0, 87, 2, 7, 0, 88, 2, 7, 0, 89, 2, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0, 92, 2, 0, 0, 93, 2, - 78, 0, 94, 2, 79, 0, 95, 2, 0, 0, 96, 2, 68, 0, 97, 2, 68, 0, 98, 2, 68, 0, 99, 2, 68, 0,100, 2, 4, 0,101, 2, - 7, 0,102, 2, 4, 0,103, 2, 4, 0,104, 2, 75, 0,105, 2, 4, 0,106, 2, 4, 0,107, 2, 74, 0,108, 2, 74, 0,109, 2, - 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0, 7, 2, 12, 0,110, 2, 36, 0, 80, 0, 38, 0, 67, 2, 66, 0, 28, 2, - 81, 0,111, 2, 82, 0,112, 2, 83, 0,113, 2, 84, 0,114, 2, 85, 0,115, 2, 86, 0,116, 2, 87, 0,117, 2, 88, 0,118, 2, - 80, 0,119, 2, 89, 0,120, 2, 90, 0,121, 2, 91, 0,122, 2, 91, 0,123, 2, 91, 0,124, 2, 4, 0, 54, 0, 4, 0,125, 2, - 4, 0,126, 2, 4, 0,127, 2, 4, 0,128, 2, 2, 0,174, 0, 2, 0,129, 2, 7, 0, 65, 1, 7, 0,172, 0, 7, 0, 66, 1, - 7, 0,130, 2, 4, 0, 69, 2, 2, 0,131, 2, 2, 0, 19, 0, 2, 0,132, 2, 2, 0,133, 2, 2, 0, 30, 2, 2, 0,134, 2, - 92, 0,135, 2, 93, 0,136, 2, 83, 0, 8, 0, 9, 0,137, 2, 7, 0,138, 2, 4, 0,139, 2, 0, 0, 19, 0, 0, 0,140, 2, - 2, 0, 70, 1, 2, 0,141, 2, 2, 0,142, 2, 81, 0, 7, 0, 4, 0,143, 2, 4, 0,144, 2, 4, 0,145, 2, 4, 0,146, 2, - 2, 0, 45, 2, 0, 0,147, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,143, 2, 4, 0,144, 2, 0, 0,148, 2, 0, 0,149, 2, - 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,150, 2, 7, 0, 37, 2, 86, 0, 3, 0, 94, 0,151, 2, 4, 0,152, 2, 4, 0, 19, 0, - 84, 0, 6, 0, 7, 0,153, 2, 2, 0,154, 2, 2, 0, 45, 2, 0, 0, 19, 0, 0, 0,149, 2, 0, 0, 71, 2, 87, 0, 4, 0, - 0, 0,236, 0, 0, 0,182, 0, 0, 0,183, 0, 0, 0,184, 0, 95, 0, 6, 0, 47, 0,137, 2, 0, 0, 19, 0, 0, 0,140, 2, - 2, 0, 70, 1, 2, 0,141, 2, 2, 0,142, 2, 96, 0, 1, 0, 7, 0,155, 2, 97, 0, 5, 0, 0, 0,236, 0, 0, 0,182, 0, - 0, 0,183, 0, 0, 0,184, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,156, 2, 89, 0, 2, 0, 4, 0,157, 2, 4, 0, 17, 0, - 82, 0, 7, 0, 7, 0,138, 2, 47, 0,137, 2, 0, 0, 19, 0, 0, 0,140, 2, 2, 0, 70, 1, 2, 0,141, 2, 2, 0,142, 2, - 98, 0, 1, 0, 7, 0,158, 2, 99, 0, 1, 0, 4, 0,159, 2,100, 0, 1, 0, 0, 0,160, 2,101, 0, 1, 0, 7, 0,138, 2, -102, 0, 3, 0, 4, 0,161, 2, 0, 0, 92, 0, 7, 0,162, 2,103, 0, 4, 0, 7, 0,236, 0, 7, 0,182, 0, 7, 0,183, 0, - 7, 0,184, 0,104, 0, 1, 0,103, 0,139, 2,105, 0, 5, 0, 4, 0,163, 2, 4, 0,164, 2, 0, 0, 19, 0, 0, 0, 45, 2, - 0, 0, 71, 2,106, 0, 2, 0, 4, 0,165, 2, 4, 0,164, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0,105, 0,166, 2, -104, 0,167, 2,106, 0,168, 2, 4, 0, 54, 0, 4, 0,126, 2, 4, 0,125, 2, 4, 0, 37, 0, 84, 0,169, 2, 92, 0, 14, 0, - 12, 0,170, 2, 84, 0,169, 2, 0, 0,171, 2, 0, 0,172, 2, 0, 0,173, 2, 0, 0,174, 2, 0, 0,175, 2, 0, 0,176, 2, - 0, 0,177, 2, 0, 0, 19, 0, 91, 0,122, 2, 91, 0,124, 2, 2, 0,178, 2, 0, 0,179, 2, 93, 0, 8, 0, 4, 0,180, 2, - 4, 0,181, 2, 81, 0,182, 2, 85, 0,183, 2, 4, 0,126, 2, 4, 0,125, 2, 4, 0, 54, 0, 4, 0, 37, 0,108, 0, 7, 0, -108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 70, 1, 0, 0, 20, 0, 46, 0,134, 0, 0, 0,184, 2,109, 0, 7, 0, -108, 0,185, 2, 2, 0,186, 2, 2, 0,170, 2, 2, 0,187, 2, 2, 0, 90, 0, 9, 0,188, 2, 9, 0,189, 2,110, 0, 3, 0, -108, 0,185, 2, 32, 0,164, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,185, 2, 32, 0,164, 0, 0, 0, 20, 0, 2, 0,190, 2, - 0, 0,191, 2,112, 0, 5, 0,108, 0,185, 2, 7, 0, 88, 0, 7, 0,192, 2, 4, 0,193, 2, 4, 0,194, 2,113, 0, 5, 0, -108, 0,185, 2, 32, 0,195, 2, 0, 0, 72, 0, 4, 0, 70, 1, 4, 0, 19, 0,114, 0, 13, 0,108, 0,185, 2, 32, 0,196, 2, - 32, 0,197, 2, 32, 0,198, 2, 32, 0,199, 2, 7, 0,200, 2, 7, 0,201, 2, 7, 0,192, 2, 7, 0,202, 2, 4, 0,203, 2, - 4, 0,204, 2, 4, 0, 90, 0, 4, 0,205, 2,115, 0, 5, 0,108, 0,185, 2, 2, 0,206, 2, 2, 0, 19, 0, 7, 0,207, 2, - 32, 0,208, 2,116, 0, 3, 0,108, 0,185, 2, 7, 0,209, 2, 4, 0, 90, 0,117, 0, 10, 0,108, 0,185, 2, 7, 0,210, 2, - 4, 0,211, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,212, 2, 2, 0,213, 2, 2, 0,214, 2, 7, 0,215, 2, 0, 0,216, 2, -118, 0, 3, 0,108, 0,185, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0,108, 0,185, 2,120, 0,217, 2,121, 0,218, 2, -122, 0,219, 2, 7, 0,220, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,185, 2, 52, 0,221, 2, 7, 0,222, 2, 4, 0,223, 2, - 0, 0,216, 2, 7, 0,224, 2, 4, 0,225, 2, 32, 0,226, 2, 0, 0,227, 2, 4, 0,228, 2, 4, 0, 37, 0,124, 0, 10, 0, -108, 0,185, 2, 32, 0,229, 2, 47, 0,230, 2, 4, 0, 90, 0, 4, 0,231, 2, 7, 0,232, 2, 7, 0,233, 2, 0, 0,227, 2, - 4, 0,228, 2, 4, 0, 37, 0,125, 0, 3, 0,108, 0,185, 2, 7, 0,234, 2, 4, 0,235, 2,126, 0, 5, 0,108, 0,185, 2, - 7, 0,236, 2, 0, 0,216, 2, 2, 0, 19, 0, 2, 0,237, 2,127, 0, 8, 0,108, 0,185, 2, 32, 0,164, 0, 7, 0,236, 2, - 7, 0,251, 0, 7, 0,106, 0, 0, 0,216, 2, 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,185, 2, 32, 0,238, 2, - 0, 0,216, 2, 52, 0,221, 2, 32, 0,226, 2, 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,239, 2, 7, 0,240, 2, 7, 0,241, 2, - 7, 0, 75, 2, 7, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 7, 0,245, 2, 4, 0,225, 2, 4, 0,228, 2, 0, 0,227, 2, - 7, 0,246, 2, 7, 0,247, 2, 7, 0, 43, 0,129, 0, 7, 0,108, 0,185, 2, 2, 0,248, 2, 2, 0,249, 2, 4, 0, 70, 0, - 32, 0,164, 0, 7, 0,250, 2, 0, 0,216, 2,130, 0, 10, 0,108, 0,185, 2, 32, 0,164, 0, 0, 0,251, 2, 7, 0,252, 2, - 7, 0,253, 2, 7, 0,245, 2, 4, 0,254, 2, 4, 0,255, 2, 7, 0, 0, 3, 0, 0, 20, 0,131, 0, 1, 0,108, 0,185, 2, -132, 0, 7, 0,108, 0,185, 2, 46, 0,134, 0,133, 0, 1, 3,134, 0, 2, 3,135, 0, 3, 3,136, 0, 4, 3, 12, 0, 5, 3, -137, 0, 13, 0,108, 0,185, 2, 84, 0, 6, 3, 84, 0, 7, 3, 84, 0, 8, 3, 84, 0, 9, 3, 84, 0, 10, 3, 84, 0, 11, 3, - 81, 0, 12, 3, 4, 0, 13, 3, 4, 0, 14, 3, 7, 0,220, 2, 7, 0, 37, 0,138, 0, 15, 3,139, 0, 7, 0,108, 0,185, 2, - 84, 0, 6, 3, 84, 0, 16, 3,140, 0, 17, 3,141, 0, 15, 3, 4, 0, 18, 3, 4, 0, 13, 3,142, 0, 4, 0,108, 0,185, 2, - 32, 0,164, 0, 4, 0, 19, 3, 4, 0, 37, 0,143, 0, 2, 0, 4, 0, 20, 3, 7, 0, 37, 2,144, 0, 2, 0, 4, 0,125, 0, - 4, 0, 21, 3,145, 0, 21, 0,108, 0,185, 2, 32, 0,164, 0, 0, 0,216, 2, 2, 0, 22, 3, 2, 0, 19, 0, 2, 0, 70, 1, - 2, 0, 37, 0, 7, 0, 23, 3, 7, 0, 24, 3, 4, 0, 54, 0, 4, 0, 25, 3,144, 0, 26, 3,143, 0, 27, 3, 4, 0, 28, 3, - 4, 0, 29, 3, 4, 0, 30, 3, 4, 0, 21, 3, 7, 0, 31, 3, 7, 0, 32, 3, 7, 0, 33, 3, 9, 0, 34, 3,146, 0, 8, 0, -108, 0,185, 2,147, 0, 35, 3,140, 0, 17, 3, 4, 0, 36, 3, 4, 0, 37, 3, 4, 0, 38, 3, 2, 0, 19, 0, 2, 0, 57, 0, -148, 0, 8, 0,108, 0,185, 2, 32, 0, 45, 0, 2, 0,255, 0, 2, 0, 19, 0, 2, 0,206, 2, 2, 0, 57, 0, 7, 0, 39, 3, - 7, 0, 40, 3,149, 0, 5, 0,108, 0,185, 2, 4, 0, 41, 3, 2, 0, 19, 0, 2, 0, 42, 3, 7, 0, 43, 3,150, 0, 8, 0, -108, 0,185, 2, 0, 0, 44, 3, 0, 0, 45, 3, 0, 0,176, 2, 0, 0, 46, 3, 0, 0, 47, 3, 0, 0, 90, 0, 0, 0, 71, 2, -151, 0, 3, 0,108, 0,185, 2,152, 0, 48, 3,136, 0, 4, 3,153, 0, 10, 0,108, 0,185, 2, 32, 0, 49, 3, 32, 0, 50, 3, - 0, 0, 51, 3, 7, 0, 52, 3, 2, 0, 53, 3, 2, 0, 54, 3, 0, 0, 55, 3, 0, 0, 56, 3, 0, 0,191, 2,154, 0, 9, 0, -108, 0,185, 2, 32, 0, 57, 3, 0, 0, 51, 3, 7, 0, 58, 3, 7, 0, 59, 3, 0, 0, 70, 1, 0, 0,206, 2, 0, 0, 60, 3, - 0, 0, 37, 0,155, 0, 1, 0,108, 0,185, 2,156, 0, 8, 0,108, 0,185, 2, 0, 0,216, 2, 7, 0,125, 0, 7, 0, 61, 3, - 7, 0, 62, 3, 7, 0, 63, 3, 4, 0, 19, 0, 0, 0, 92, 0,157, 0, 27, 0, 27, 0, 31, 0, 2, 0, 46, 2, 2, 0, 47, 2, - 2, 0, 64, 3, 2, 0, 19, 0, 2, 0, 65, 3, 2, 0, 66, 3, 2, 0, 67, 3, 2, 0, 70, 0, 0, 0, 68, 3, 0, 0, 69, 3, - 0, 0, 70, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 71, 3, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, 7, 0, 75, 3, - 7, 0, 76, 3, 34, 0, 77, 3, 36, 0, 80, 0, 38, 0, 67, 2, 86, 0,116, 2, 7, 0, 78, 3, 7, 0, 79, 3,157, 0, 80, 3, -158, 0, 3, 0,158, 0, 0, 0,158, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, 7, 0, 81, 3, 4, 0, 19, 0, 4, 0, 37, 0, - 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 75, 0,159, 0, 82, 3, 2, 0, 17, 0, 2, 0, 83, 3, 4, 0, 84, 3, 4, 0, 85, 3, - 4, 0, 86, 3, 0, 0, 87, 3, 32, 0, 38, 0, 32, 0, 88, 3, 32, 0, 89, 3, 32, 0, 90, 3, 32, 0, 91, 3, 36, 0, 80, 0, - 77, 0, 66, 2, 71, 0, 7, 2,160, 0, 92, 3,160, 0, 93, 3,161, 0, 94, 3, 9, 0, 2, 0,162, 0, 95, 3,163, 0, 96, 3, -164, 0, 97, 3, 12, 0, 98, 3, 12, 0,110, 2, 12, 0, 26, 2, 12, 0, 99, 3, 12, 0,100, 3, 4, 0, 70, 1, 4, 0,101, 3, - 66, 0, 28, 2, 0, 0,102, 3, 4, 0, 30, 2, 4, 0,103, 3, 7, 0, 65, 1, 7, 0,104, 3, 7, 0,105, 3, 7, 0,172, 0, - 7, 0,106, 3, 7, 0, 66, 1, 7, 0,107, 3, 7, 0, 16, 2, 7, 0,108, 3, 7, 0,109, 3, 7, 0,110, 3, 7, 0,111, 3, - 7, 0,112, 3, 7, 0,113, 3, 7, 0,252, 2, 7, 0,114, 3, 7, 0,240, 0, 4, 0,115, 3, 2, 0, 19, 0, 2, 0,116, 3, - 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, 2, 0,123, 3, 2, 0,124, 3, - 2, 0,125, 3, 2, 0,126, 3, 4, 0,127, 3, 4, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, 7, 0,131, 3, 7, 0,102, 2, - 7, 0,132, 3, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,215, 0, 7, 0,137, 3, 7, 0,138, 3, - 7, 0,139, 3, 7, 0,140, 3, 2, 0,141, 3, 0, 0,142, 3, 0, 0,143, 3, 0, 0,144, 3, 0, 0,145, 3, 7, 0,146, 3, - 7, 0,147, 3, 12, 0,148, 3, 12, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 7, 0,152, 3, 2, 0,157, 2, 2, 0,153, 3, - 7, 0,139, 2, 4, 0,154, 3, 4, 0,155, 3,165, 0,156, 3, 2, 0,157, 3, 2, 0,247, 0, 7, 0,158, 3, 12, 0,159, 3, - 12, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3,166, 0, 62, 1,167, 0,163, 3, 67, 0,164, 3, 2, 0,165, 3, 2, 0,166, 3, - 2, 0,167, 3, 2, 0,168, 3, 7, 0,131, 2, 2, 0,169, 3, 2, 0,170, 3,152, 0,171, 3,140, 0,172, 3,140, 0,173, 3, - 4, 0,174, 3, 4, 0,175, 3, 4, 0,176, 3, 4, 0, 70, 0, 12, 0,177, 3, 12, 0,178, 3, 12, 0,179, 3,168, 0, 14, 0, -168, 0, 0, 0,168, 0, 1, 0, 32, 0, 38, 0, 7, 0,252, 2, 7, 0, 67, 1, 7, 0,253, 2, 7, 0,245, 2, 0, 0, 20, 0, - 4, 0,254, 2, 4, 0,255, 2, 4, 0,180, 3, 2, 0, 17, 0, 2, 0,181, 3, 7, 0, 0, 3,169, 0, 12, 0,169, 0, 0, 0, -169, 0, 1, 0, 32, 0, 45, 0, 4, 0,182, 3, 4, 0,157, 2, 4, 0,183, 3, 4, 0, 17, 0, 4, 0,184, 3, 7, 0, 67, 1, - 7, 0,185, 3, 7, 0,186, 3, 7, 0,155, 2,166, 0, 40, 0, 4, 0, 19, 0, 2, 0,187, 3, 2, 0,188, 3, 2, 0,245, 2, - 2, 0,189, 3, 2, 0,190, 3, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 7, 0,194, 3, 7, 0,195, 3, 7, 0,196, 3, - 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, 7, 0,203, 3, 7, 0,204, 3, - 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, 7, 0,211, 3, 7, 0,212, 3, - 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, 7, 0,219, 3, 7, 0,220, 3, - 52, 0,165, 0,170, 0,221, 3, 7, 0,222, 3, 4, 0,194, 2,171, 0, 5, 0, 67, 0,242, 1, 7, 0,223, 3, 7, 0,224, 3, - 2, 0, 19, 0, 2, 0,225, 3,172, 0, 9, 0,172, 0, 0, 0,172, 0, 1, 0, 4, 0,226, 3, 4, 0,227, 3, 4, 0,228, 3, - 4, 0, 19, 0, 4, 0,229, 3, 9, 0,230, 3, 9, 0,231, 3,136, 0, 19, 0,136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, - 4, 0,232, 3, 4, 0,233, 3, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, 4, 0,227, 3, 4, 0,157, 2, - 4, 0, 57, 0, 0, 0,238, 3, 0, 0,239, 3, 0, 0,240, 3, 0, 0,241, 3, 12, 0,242, 3,173, 0,243, 3, 9, 0,244, 3, -174, 0, 1, 0, 7, 0, 44, 2,165, 0, 30, 0, 4, 0, 19, 0, 7, 0,245, 3, 7, 0,246, 3, 7, 0,247, 3, 4, 0,248, 3, - 4, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 7, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, 7, 0,255, 3, 7, 0, 0, 4, - 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, 7, 0, 7, 4, 7, 0, 8, 4, - 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 4, 0, 14, 4, 4, 0, 15, 4, 7, 0, 16, 4, - 7, 0,137, 3,167, 0, 54, 0, 4, 0,227, 3, 4, 0, 17, 4,175, 0, 18, 4,176, 0, 19, 4, 0, 0, 37, 0, 0, 0, 20, 4, - 2, 0, 21, 4, 7, 0, 22, 4, 0, 0, 23, 4, 7, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, 7, 0, 27, 4, 7, 0, 28, 4, - 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 2, 0, 33, 4, 0, 0, 34, 4, 2, 0, 35, 4, 7, 0, 36, 4, - 7, 0, 37, 4, 0, 0, 38, 4, 4, 0,126, 0, 4, 0, 39, 4, 4, 0, 40, 4, 2, 0, 41, 4, 2, 0, 42, 4,174, 0, 43, 4, - 4, 0, 44, 4, 4, 0, 82, 0, 7, 0, 45, 4, 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, 2, 0, 49, 4, 2, 0, 50, 4, - 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4,177, 0, 57, 4, 7, 0, 58, 4, - 7, 0, 59, 4,136, 0, 60, 4, 12, 0, 5, 3,171, 0, 61, 4, 7, 0, 62, 4, 7, 0, 63, 4, 7, 0, 64, 4, 0, 0, 65, 4, -152, 0, 49, 0,151, 0, 66, 4, 2, 0, 17, 0, 2, 0, 67, 4, 2, 0, 68, 4, 2, 0, 69, 4, 7, 0, 70, 4, 2, 0, 71, 4, - 2, 0, 72, 4, 7, 0, 73, 4, 2, 0, 74, 4, 2, 0, 75, 4, 7, 0, 76, 4, 7, 0, 77, 4, 7, 0, 78, 4, 7, 0, 79, 4, - 7, 0, 80, 4, 7, 0, 81, 4, 4, 0, 82, 4, 7, 0, 83, 4, 7, 0, 84, 4, 7, 0, 85, 4, 80, 0, 86, 4, 80, 0, 87, 4, - 80, 0, 88, 4, 0, 0, 89, 4, 7, 0, 90, 4, 7, 0, 91, 4, 36, 0, 80, 0, 2, 0, 92, 4, 0, 0, 93, 4, 0, 0, 94, 4, - 7, 0, 95, 4, 4, 0, 96, 4, 7, 0, 97, 4, 7, 0, 98, 4, 4, 0, 99, 4, 4, 0, 19, 0, 7, 0,100, 4, 7, 0,101, 4, - 7, 0,102, 4, 84, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 7, 0,106, 4, 7, 0,107, 4, 7, 0,108, 4, 7, 0,109, 4, - 7, 0,110, 4, 4, 0,111, 4,178, 0, 78, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,175, 0, 2, 0, 71, 1, 2, 0,105, 1, - 2, 0,112, 4, 7, 0,113, 4, 7, 0,114, 4, 7, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4, 7, 0,118, 4, 7, 0,119, 4, - 7, 0,120, 4, 7, 0,163, 1, 7, 0,165, 1, 7, 0,164, 1, 7, 0,121, 4, 4, 0,122, 4, 7, 0,123, 4, 7, 0,124, 4, - 7, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 2, 0,130, 4, 2, 0, 70, 1, 2, 0,131, 4, - 2, 0,132, 4, 2, 0,133, 4, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 7, 0,137, 4, 7, 0,138, 4, 7, 0,139, 4, - 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, 7, 0,146, 4, 7, 0,147, 4, - 7, 0,148, 4, 2, 0,149, 4, 2, 0,150, 4, 2, 0,151, 4, 2, 0,152, 4, 7, 0,153, 4, 7, 0,154, 4, 7, 0,155, 4, - 7, 0,156, 4, 2, 0,157, 4, 2, 0,158, 4, 2, 0,159, 4, 2, 0,160, 4, 7, 0,161, 4, 7, 0,162, 4, 7, 0,163, 4, - 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 2, 0,168, 4, 2, 0,169, 4, 2, 0,170, 4, 2, 0,171, 4, - 2, 0,172, 4, 2, 0, 19, 0, 7, 0,173, 4, 7, 0,174, 4, 36, 0, 80, 0, 51, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, - 30, 0,150, 0,179, 0, 8, 0,179, 0, 0, 0,179, 0, 1, 0, 4, 0,115, 3, 4, 0,175, 4, 4, 0, 19, 0, 2, 0,176, 4, - 2, 0,177, 4, 32, 0,164, 0,180, 0, 13, 0, 9, 0,178, 4, 9, 0,179, 4, 4, 0,180, 4, 4, 0,181, 4, 4, 0,182, 4, - 4, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0, 37, 0, 0, 0,189, 4, -181, 0, 5, 0, 9, 0,190, 4, 9, 0,191, 4, 4, 0,192, 4, 4, 0, 70, 0, 0, 0,193, 4,182, 0, 10, 0, 4, 0,194, 4, - 4, 0,195, 4, 4, 0,196, 4, 4, 0,197, 4, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, 4, 0,202, 4, - 4, 0,203, 4,183, 0, 15, 0, 4, 0, 17, 0, 4, 0,196, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, - 7, 0,208, 4, 4, 0,209, 4, 4, 0, 90, 0, 4, 0,210, 4, 4, 0,211, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0,214, 4, - 26, 0, 30, 0,184, 0, 7, 0, 4, 0,215, 4, 7, 0,216, 4, 7, 0,217, 4, 7, 0,218, 4, 4, 0,219, 4, 2, 0, 19, 0, - 2, 0, 37, 0,185, 0, 11, 0,185, 0, 0, 0,185, 0, 1, 0, 0, 0, 20, 0, 66, 0,220, 4, 67, 0,221, 4, 4, 0,115, 3, - 4, 0,222, 4, 4, 0,223, 4, 4, 0, 37, 0, 4, 0,224, 4, 4, 0,225, 4,186, 0,136, 0,180, 0,226, 4,181, 0,227, 4, -182, 0,228, 4,183, 0,229, 4, 4, 0, 18, 3, 4, 0,126, 0, 4, 0, 39, 4, 4, 0,230, 4, 4, 0,231, 4, 4, 0,232, 4, - 4, 0,233, 4, 2, 0, 19, 0, 2, 0,234, 4, 7, 0,102, 2, 7, 0,235, 4, 7, 0,236, 4, 7, 0,237, 4, 7, 0,238, 4, - 7, 0,239, 4, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,243, 4, 2, 0,246, 0, 2, 0,244, 4, 2, 0,245, 4, - 2, 0,246, 4, 2, 0,247, 4, 2, 0,248, 4, 2, 0, 92, 1, 2, 0,106, 0, 2, 0,249, 4, 2, 0,250, 4, 2, 0,251, 4, - 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 93, 1, 2, 0, 2, 5, - 2, 0, 3, 5, 2, 0, 4, 5, 2, 0, 5, 5, 4, 0, 6, 5, 4, 0, 70, 1, 4, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, - 2, 0, 10, 5, 2, 0,122, 1, 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 13, 5, 2, 0, 14, 5, 24, 0, 15, 5, 24, 0, 16, 5, - 23, 0, 17, 5, 12, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5, 7, 0, 21, 5, 7, 0, 22, 5, 7, 0, 23, 5, 7, 0, 24, 5, - 4, 0, 25, 5, 7, 0, 26, 5, 7, 0, 27, 5, 7, 0, 28, 5, 7, 0, 29, 5, 2, 0, 30, 5, 2, 0, 31, 5, 2, 0, 32, 5, - 2, 0, 33, 5, 2, 0, 34, 5, 2, 0, 35, 5, 7, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 2, 0, 39, 5, 2, 0, 40, 5, - 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 2, 0, 47, 5, 2, 0, 48, 5, - 4, 0, 49, 5, 4, 0, 50, 5, 4, 0, 51, 5, 4, 0, 52, 5, 4, 0, 53, 5, 7, 0, 54, 5, 4, 0, 55, 5, 4, 0, 56, 5, - 4, 0, 57, 5, 4, 0, 58, 5, 7, 0, 59, 5, 7, 0, 60, 5, 7, 0, 61, 5, 7, 0, 62, 5, 7, 0, 63, 5, 7, 0, 64, 5, - 7, 0, 65, 5, 7, 0, 66, 5, 7, 0, 67, 5, 0, 0, 68, 5, 0, 0, 69, 5, 4, 0, 70, 5, 2, 0, 71, 5, 2, 0,239, 1, - 0, 0, 72, 5, 7, 0, 73, 5, 7, 0, 74, 5, 4, 0, 75, 5, 2, 0, 76, 5, 2, 0, 77, 5, 7, 0, 78, 5, 7, 0, 79, 5, - 2, 0, 80, 5, 2, 0, 81, 5, 7, 0, 82, 5, 2, 0, 83, 5, 2, 0, 84, 5, 4, 0, 85, 5, 2, 0, 86, 5, 2, 0, 87, 5, - 2, 0, 88, 5, 2, 0, 89, 5, 7, 0, 90, 5, 7, 0, 70, 0, 42, 0, 91, 5, 0, 0, 92, 5,187, 0, 9, 0,187, 0, 0, 0, -187, 0, 1, 0, 0, 0, 20, 0, 2, 0, 93, 5, 2, 0, 94, 5, 2, 0, 95, 5, 2, 0, 43, 0, 7, 0, 96, 5, 7, 0, 70, 0, -188, 0, 7, 0, 2, 0,211, 2, 2, 0, 70, 1, 2, 0,109, 0, 2, 0, 97, 5, 7, 0, 98, 5, 7, 0, 70, 0, 42, 0, 99, 5, -189, 0, 5, 0, 7, 0,100, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, 0, 0,239, 1,190, 0, 28, 0, 7, 0,128, 4, - 7, 0,129, 4, 2, 0, 70, 1, 2, 0, 19, 0, 2, 0,101, 5, 2, 0,137, 1, 2, 0,131, 4, 2, 0,132, 4, 2, 0,133, 4, - 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4,189, 0,102, 5, 2, 0,240, 4, 2, 0,241, 4, 2, 0,242, 4, 2, 0,243, 4, - 2, 0,246, 0, 2, 0,244, 4, 2, 0,103, 5, 2, 0,245, 4,188, 0,104, 5, 2, 0,105, 5, 2, 0,247, 4, 2, 0,250, 4, - 2, 0,251, 4, 7, 0,106, 5, 7, 0, 43, 0,191, 0, 6, 0,191, 0, 0, 0,191, 0, 1, 0, 4, 0,226, 3, 0, 0,238, 3, - 4, 0, 19, 0, 32, 0,107, 5,192, 0, 6, 0,193, 0,108, 5, 4, 0,109, 5, 4, 0,110, 5, 9, 0,111, 5, 0, 0,112, 5, - 4, 0, 90, 0,194, 0, 6, 0,192, 0,113, 5, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0,114, 5, 2, 0,115, 5, 9, 0,116, 5, -195, 0, 6, 0, 2, 0,106, 0, 2, 0,222, 2, 2, 0,232, 3, 2, 0,117, 5, 4, 0, 19, 0, 4, 0, 37, 0,196, 0, 14, 0, - 2, 0, 19, 0, 2, 0,118, 5, 2, 0,119, 5, 2, 0,120, 5,195, 0,121, 5, 9, 0,116, 5, 7, 0,122, 5, 7, 0, 57, 0, - 4, 0,123, 5, 4, 0,124, 5, 4, 0,125, 5, 4, 0,126, 5, 46, 0,134, 0, 32, 0,164, 0,197, 0, 4, 0,197, 0, 0, 0, -197, 0, 1, 0, 0, 0,127, 5, 7, 0,128, 5,198, 0, 6, 0,192, 0,113, 5, 7, 0,129, 5, 4, 0, 90, 0, 0, 0,130, 5, - 0, 0,131, 5, 0, 0,191, 2,199, 0, 7, 0,192, 0,113, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,132, 5, - 86, 0,133, 5, 9, 0,116, 5,200, 0, 74, 0,199, 0,134, 5,199, 0,135, 5,198, 0, 82, 3, 7, 0,136, 5, 2, 0,137, 5, - 2, 0,138, 5, 7, 0,139, 5, 7, 0,140, 5, 2, 0,232, 3, 2, 0,141, 5, 7, 0,142, 5, 7, 0,143, 5, 7, 0,144, 5, - 2, 0,145, 5, 2, 0,123, 5, 2, 0,146, 5, 2, 0,147, 5, 2, 0,148, 5, 2, 0,149, 5, 7, 0,150, 5, 7, 0,151, 5, - 7, 0,152, 5, 2, 0,153, 5, 2, 0,154, 5, 2, 0,155, 5, 2, 0,156, 5, 2, 0,157, 5, 2, 0,158, 5, 2, 0,159, 5, -194, 0,160, 5,196, 0,161, 5, 7, 0,162, 5, 7, 0,163, 5, 7, 0,164, 5, 2, 0,165, 5, 2, 0,166, 5, 0, 0,167, 5, - 0, 0,168, 5, 0, 0,169, 5, 0, 0,170, 5, 0, 0,171, 5, 0, 0,172, 5, 2, 0,173, 5, 7, 0,174, 5, 7, 0,175, 5, - 7, 0,176, 5, 7, 0,177, 5, 7, 0,178, 5, 7, 0,179, 5, 7, 0,180, 5, 7, 0,181, 5, 7, 0,182, 5, 7, 0,183, 5, - 2, 0,184, 5, 0, 0,185, 5, 0, 0,186, 5, 0, 0,187, 5, 0, 0,188, 5, 32, 0,189, 5, 0, 0,190, 5, 0, 0,191, 5, - 0, 0,192, 5, 0, 0,193, 5, 0, 0,194, 5, 0, 0,195, 5, 0, 0,196, 5, 0, 0,197, 5, 2, 0,198, 5, 2, 0,199, 5, - 2, 0,200, 5, 2, 0,201, 5, 2, 0,202, 5, 4, 0,203, 5, 4, 0,204, 5,201, 0, 8, 0, 4, 0,205, 5, 4, 0,206, 5, - 4, 0,207, 5, 4, 0,208, 5, 4, 0,209, 5, 4, 0,210, 5, 4, 0, 54, 0, 4, 0,126, 2,202, 0, 3, 0, 7, 0,211, 5, - 2, 0,212, 5, 2, 0, 19, 0,203, 0, 2, 0, 7, 0,213, 5, 4, 0, 19, 0, 46, 0, 40, 0, 27, 0, 31, 0, 39, 0, 75, 0, - 32, 0,107, 5,178, 0,214, 5, 46, 0,215, 5, 47, 0,238, 0, 12, 0,216, 5,179, 0,217, 5, 32, 0,218, 5, 7, 0,219, 5, - 7, 0,220, 5, 7, 0,221, 5, 7, 0,222, 5, 4, 0,115, 3, 2, 0, 19, 0, 2, 0, 64, 1, 60, 0, 59, 1,204, 0,223, 5, -200, 0,224, 5,205, 0,225, 5,186, 0,182, 0,184, 0,226, 5, 12, 0,100, 0, 12, 0,227, 5, 9, 0,228, 5, 9, 0,229, 5, - 9, 0,230, 5,206, 0,231, 5, 2, 0,232, 5, 2, 0,233, 5, 2, 0,247, 0, 2, 0,234, 5, 4, 0,235, 5, 4, 0,236, 5, - 12, 0,237, 5,189, 0,102, 5,190, 0,238, 5,202, 0,239, 5,162, 0, 95, 3,203, 0,240, 5,207, 0, 11, 0,207, 0, 0, 0, -207, 0, 1, 0, 47, 0,238, 0, 45, 0, 58, 1, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,106, 0, 7, 0,241, 5, 2, 0,242, 5, - 2, 0, 19, 0, 7, 0, 70, 0,208, 0, 39, 0, 7, 0,243, 5, 7, 0,244, 5, 7, 0,245, 5, 7, 0,246, 5, 7, 0,247, 5, - 7, 0,248, 5, 7, 0,249, 5, 7, 0,250, 5, 7, 0,251, 5, 7, 0, 77, 1, 7, 0,252, 5, 7, 0,253, 5, 7, 0,254, 5, - 7, 0,255, 5, 7, 0,171, 0, 2, 0, 0, 6, 2, 0, 1, 6, 2, 0, 2, 6, 2, 0, 37, 0, 2, 0, 3, 6, 2, 0, 4, 6, - 2, 0, 5, 6, 2, 0,242, 5, 7, 0, 6, 6, 7, 0, 7, 6, 71, 0, 8, 6,162, 0, 95, 3,208, 0, 9, 6,209, 0, 10, 6, -210, 0, 11, 6,211, 0, 12, 6,212, 0, 13, 6,213, 0, 14, 6, 7, 0, 15, 6, 2, 0, 16, 6, 2, 0, 17, 6, 7, 0, 18, 6, - 7, 0, 19, 6, 7, 0, 20, 6,214, 0, 55, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, - 2, 0, 24, 6, 7, 0,251, 5, 7, 0, 77, 1, 7, 0, 43, 0, 4, 0, 25, 6, 2, 0, 5, 6, 2, 0,242, 5, 32, 0,107, 5, - 32, 0, 26, 6, 12, 0, 27, 6,207, 0, 28, 6,214, 0, 9, 6, 0, 0, 29, 6, 4, 0,115, 3, 4, 0, 30, 6, 2, 0, 31, 6, - 2, 0, 70, 0, 2, 0, 32, 6, 2, 0, 33, 6, 2, 0,239, 1, 2, 0, 19, 0, 2, 0, 29, 2, 2, 0, 34, 6, 7, 0,112, 0, - 7, 0, 35, 6, 7, 0, 18, 6, 7, 0, 20, 6, 7, 0, 36, 6, 7, 0, 37, 6, 7, 0,171, 0, 7, 0,219, 5, 2, 0, 38, 6, - 2, 0,122, 1, 2, 0, 39, 6, 2, 0, 40, 6, 2, 0, 41, 6, 2, 0, 42, 6, 2, 0, 43, 6, 2, 0, 44, 6, 2, 0, 45, 6, - 2, 0, 2, 6, 4, 0, 46, 6, 12, 0, 47, 6, 2, 0, 48, 6, 2, 0,140, 2, 2, 0, 49, 6, 0, 0, 50, 6, 0, 0, 51, 6, - 9, 0, 52, 6,162, 0, 95, 3,216, 0, 25, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 53, 6, 23, 0, 54, 6, 23, 0, 55, 6, - 7, 0, 56, 6, 7, 0, 57, 6, 7, 0, 58, 6, 7, 0, 59, 6, 2, 0, 60, 6, 2, 0, 61, 6, 2, 0, 62, 6, 2, 0, 63, 6, - 2, 0, 64, 6, 2, 0, 19, 0, 2, 0, 65, 6, 2, 0, 66, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 33, 6, - 7, 0, 70, 6, 7, 0, 71, 6, 4, 0, 72, 6, 4, 0, 73, 6,215, 0, 6, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, - 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,217, 0, 8, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, - 7, 0, 23, 6, 2, 0, 24, 6,218, 0, 74, 6, 46, 0,134, 0,219, 0, 14, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, - 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,216, 0, 75, 6,220, 0, 76, 6, 12, 0, 77, 6, 2, 0, 70, 1, 2, 0, 78, 6, - 4, 0, 19, 0, 7, 0, 79, 6, 4, 0, 33, 6,221, 0, 20, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, - 7, 0, 23, 6, 2, 0, 24, 6,209, 0, 10, 6,216, 0, 75, 6, 2, 0, 80, 6, 2, 0, 81, 6, 2, 0, 82, 6, 2, 0, 83, 6, - 2, 0, 65, 6, 2, 0, 84, 6, 0, 0, 19, 0, 0, 0,137, 1, 9, 0, 66, 2, 4, 0, 85, 6, 4, 0, 86, 6, 27, 0, 87, 6, -222, 0, 18, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,216, 0, 75, 6, - 7, 0, 90, 2, 7, 0, 91, 2, 2, 0, 80, 6, 2, 0, 88, 6, 2, 0, 89, 6, 2, 0, 90, 6, 4, 0, 19, 0, 7, 0, 91, 6, - 4, 0,242, 5, 4, 0, 37, 0,162, 0, 95, 3,223, 0, 16, 0, 0, 0, 92, 6, 0, 0, 93, 6, 0, 0, 94, 6, 0, 0, 95, 6, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 96, 6, 2, 0, 97, 6, 2, 0,182, 1, 2, 0, 98, 6, 4, 0, 99, 6, 4, 0,100, 6, - 2, 0,101, 6, 2, 0,102, 6, 0, 0,103, 6, 0, 0,104, 6,224, 0, 16, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, - 4, 0, 22, 6, 4, 0, 37, 0,223, 0,105, 6,225, 0,106, 6, 12, 0,107, 6, 12, 0,108, 6,226, 0,109, 6,213, 0,110, 6, -227, 0,111, 6, 2, 0,112, 6, 2, 0,113, 6, 2, 0,114, 6, 2, 0, 70, 0,228, 0, 17, 0,215, 0, 0, 0,215, 0, 1, 0, - 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,216, 0, 75, 6, 12, 0,115, 6,229, 0,116, 6, 0, 0,117, 6, -230, 0,118, 6, 4, 0,119, 6, 4, 0,120, 6, 2, 0, 19, 0, 2, 0,121, 6, 2, 0,122, 6, 2, 0, 37, 0,231, 0, 30, 0, -215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6, 47, 0,230, 2, 45, 0, 58, 1, - 63, 0,123, 6, 2, 0,133, 0, 2, 0,124, 6, 2, 0, 70, 0, 2, 0,125, 6, 4, 0, 19, 0, 2, 0,126, 6, 2, 0,127, 6, - 2, 0,128, 6, 2, 0,239, 1, 0, 0,129, 6, 0, 0,130, 6, 0, 0,131, 6, 0, 0, 33, 6, 7, 0, 90, 2, 7, 0, 91, 2, - 7, 0, 91, 6, 7, 0,122, 1, 7, 0,132, 6, 7, 0,133, 6,162, 0, 95, 3,232, 0,134, 6,233, 0, 11, 0,215, 0, 0, 0, -215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6, 2, 0, 78, 6, 2, 0, 19, 0, 4, 0, 37, 0, -220, 0, 76, 6,216, 0, 75, 6,234, 0, 27, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, - 2, 0, 24, 6, 42, 0,135, 6, 4, 0,136, 6, 4, 0,137, 6, 2, 0, 90, 0, 2, 0,133, 0, 2, 0,138, 6, 0, 0,139, 6, - 0, 0,140, 6, 4, 0,141, 6, 4, 0,142, 6, 4, 0,143, 6, 4, 0,144, 6, 2, 0,145, 6, 2, 0,146, 6, 7, 0,147, 6, - 23, 0,148, 6, 23, 0,149, 6, 4, 0,150, 6, 4, 0,151, 6, 0, 0,152, 6, 0, 0,153, 6,235, 0, 10, 0, 27, 0, 31, 0, - 9, 0,154, 6, 9, 0,155, 6, 9, 0,156, 6, 9, 0,157, 6, 9, 0,158, 6, 4, 0, 90, 0, 4, 0,159, 6, 0, 0,160, 6, - 0, 0,161, 6,236, 0, 10, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6,235, 0,162, 6, - 2, 0, 90, 0, 2, 0,133, 0, 4, 0, 43, 0, 9, 0,163, 6,237, 0, 8, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, - 4, 0, 22, 6, 7, 0, 23, 6,216, 0, 75, 6, 4, 0, 19, 0, 4, 0,164, 6,238, 0, 23, 0,215, 0, 0, 0,215, 0, 1, 0, - 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,216, 0, 75, 6, 27, 0,165, 6, 27, 0, 81, 0, 2, 0, 19, 0, - 2, 0,133, 0, 7, 0,166, 6, 9, 0,167, 6, 7, 0, 90, 2, 7, 0, 91, 2, 7, 0,168, 6, 7, 0,169, 6, 60, 0, 59, 1, - 60, 0,170, 6, 4, 0,171, 6, 2, 0,172, 6, 2, 0, 37, 0,162, 0, 95, 3,239, 0, 10, 0,215, 0, 0, 0,215, 0, 1, 0, - 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6, 2, 0, 19, 0, 2, 0,124, 3, 4, 0, 37, 0,162, 0, 95, 3, -240, 0, 42, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6,216, 0, 75, 6, -225, 0,106, 6, 0, 0, 92, 6, 0, 0, 93, 6, 0, 0, 94, 6, 2, 0, 17, 0, 2, 0,102, 6, 2, 0, 19, 0, 2, 0, 96, 6, - 9, 0,167, 6, 4, 0, 99, 6, 4, 0,173, 6, 4, 0,174, 6, 4, 0,100, 6, 23, 0,175, 6, 23, 0,176, 6, 7, 0,177, 6, - 7, 0,178, 6, 7, 0,179, 6, 7, 0,166, 6, 2, 0,180, 6, 2, 0,237, 0, 2, 0,182, 1, 2, 0, 98, 6, 2, 0, 37, 0, - 2, 0, 43, 0, 2, 0,181, 6, 2, 0,182, 6, 9, 0,183, 6, 9, 0,184, 6, 9, 0,185, 6, 9, 0,186, 6, 9, 0,187, 6, - 2, 0,188, 6, 0, 0,104, 6, 57, 0,189, 6,241, 0, 7, 0,241, 0, 0, 0,241, 0, 1, 0, 4, 0,190, 6, 4, 0, 23, 0, - 0, 0, 84, 0, 4, 0,191, 6, 4, 0, 17, 0,242, 0, 16, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, - 7, 0, 23, 6, 2, 0, 24, 6, 4, 0, 17, 0, 4, 0,192, 6, 4, 0, 19, 0, 4, 0,138, 6, 12, 0,193, 6, 12, 0,194, 6, - 0, 0,195, 6, 0, 0,196, 6, 4, 0,197, 6, 4, 0,198, 6,243, 0, 5, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, - 4, 0, 22, 6, 4, 0, 37, 0,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 0, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, - 2, 0,202, 6, 2, 0, 37, 0,245, 0, 12, 0, 2, 0,201, 6, 2, 0,203, 6, 2, 0,204, 6, 0, 0,191, 2, 2, 0,205, 6, - 2, 0,206, 6, 2, 0,207, 6, 2, 0,208, 6, 2, 0,209, 6, 2, 0, 65, 6, 7, 0,210, 6, 7, 0,211, 6,246, 0, 18, 0, -246, 0, 0, 0,246, 0, 1, 0, 0, 0,238, 3,245, 0,212, 6,245, 0,213, 6,245, 0,214, 6,245, 0,215, 6, 7, 0,216, 6, - 2, 0,217, 6, 2, 0,218, 6, 2, 0,219, 6, 2, 0,220, 6, 2, 0,221, 6, 2, 0,222, 6, 2, 0,223, 6, 2, 0,224, 6, - 2, 0,225, 6, 2, 0,226, 6,247, 0, 10, 0, 0, 0,227, 6, 0, 0,228, 6, 0, 0,229, 6, 0, 0,230, 6, 0, 0,231, 6, - 0, 0,232, 6, 2, 0,233, 6, 2, 0,234, 6, 2, 0,235, 6, 2, 0, 37, 0,248, 0, 8, 0, 0, 0,236, 6, 0, 0,237, 6, - 0, 0,238, 6, 0, 0,239, 6, 0, 0,240, 6, 0, 0,241, 6, 7, 0,241, 5, 7, 0, 37, 0,249, 0, 17, 0,247, 0,242, 6, -247, 0,243, 6,247, 0,244, 6,247, 0,245, 6,247, 0,246, 6,247, 0,247, 6,247, 0,248, 6,247, 0,249, 6,247, 0,250, 6, -247, 0,251, 6,247, 0,252, 6,247, 0,253, 6,247, 0,254, 6,247, 0,255, 6,247, 0, 0, 7,248, 0, 1, 7, 0, 0, 2, 7, -250, 0, 77, 0, 0, 0, 3, 7, 0, 0, 4, 7, 0, 0,231, 6, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, - 0, 0, 9, 7, 0, 0, 10, 7, 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, - 0, 0, 17, 7, 0, 0, 18, 7, 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, - 0, 0, 25, 7, 0, 0, 26, 7, 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, - 0, 0, 33, 7, 0, 0, 34, 7, 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, - 0, 0, 41, 7, 0, 0, 42, 7, 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, - 0, 0, 49, 7, 0, 0, 50, 7, 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, - 0, 0, 57, 7, 0, 0, 58, 7, 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, - 0, 0, 65, 7, 0, 0, 66, 7, 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, - 0, 0, 73, 7, 0, 0, 74, 7, 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7,251, 0, 5, 0, 0, 0, 79, 7, - 0, 0, 27, 7, 0, 0, 29, 7, 2, 0, 19, 0, 2, 0, 37, 0,252, 0, 25, 0,252, 0, 0, 0,252, 0, 1, 0, 0, 0, 20, 0, -249, 0, 80, 7,250, 0, 81, 7,250, 0, 82, 7,250, 0, 83, 7,250, 0, 84, 7,250, 0, 85, 7,250, 0, 86, 7,250, 0, 87, 7, -250, 0, 88, 7,250, 0, 89, 7,250, 0, 90, 7,250, 0, 91, 7,250, 0, 92, 7,250, 0, 93, 7,250, 0, 94, 7,250, 0, 95, 7, -250, 0, 96, 7,250, 0, 97, 7,250, 0, 98, 7,251, 0, 99, 7, 4, 0,100, 7, 4, 0, 37, 0,253, 0, 3, 0,253, 0, 0, 0, -253, 0, 1, 0, 0, 0,101, 7,254, 0, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,139, 2, 7, 0,102, 7, 7, 0, 44, 2, -255, 0, 81, 0, 4, 0, 19, 0, 4, 0,103, 7, 4, 0,104, 7, 0, 0,105, 7, 0, 0,106, 7, 0, 0,107, 7, 0, 0,108, 7, - 0, 0,109, 7, 0, 0,110, 7, 0, 0,111, 7, 0, 0,112, 7, 0, 0,113, 7, 4, 0,114, 7, 2, 0,115, 7, 2, 0,116, 7, - 2, 0,117, 7, 2, 0,118, 7, 4, 0,119, 7, 4, 0,120, 7, 4, 0,121, 7, 4, 0,122, 7, 2, 0,123, 7, 2, 0,124, 7, - 4, 0,125, 7, 4, 0,126, 7, 4, 0,127, 7, 4, 0,128, 7, 4, 0,129, 7, 4, 0,193, 6, 4, 0,130, 7, 2, 0,131, 7, - 2, 0,132, 7, 2, 0,133, 7, 2, 0,134, 7, 12, 0,135, 7, 12, 0,136, 7, 12, 0,137, 7, 12, 0,138, 7, 12, 0,139, 7, - 0, 0,140, 7, 2, 0,141, 7, 2, 0,142, 7, 2, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 2, 0,146, 7, 2, 0,147, 7, - 2, 0,148, 7,254, 0,149, 7, 2, 0,150, 7, 2, 0,151, 7, 2, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, - 2, 0,156, 7, 2, 0,157, 7, 4, 0,158, 7, 4, 0,159, 7, 2, 0,160, 7, 2, 0,161, 7, 2, 0,162, 7, 2, 0,163, 7, - 2, 0,164, 7, 2, 0,165, 7, 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 2, 0,170, 7, 2, 0,171, 7, - 2, 0,172, 7, 2, 0, 70, 0, 2, 0,173, 7, 2, 0,174, 7, 0, 0,175, 7, 0, 0,176, 7, 7, 0,177, 7, 2, 0,165, 5, - 2, 0,166, 5, 55, 0,178, 7,218, 0, 21, 0, 27, 0, 31, 0, 12, 0,179, 7, 12, 0,180, 7, 12, 0,181, 7, 12, 0, 21, 6, - 46, 0,134, 0, 46, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, - 2, 0,189, 7, 2, 0,190, 7, 2, 0,191, 7, 2, 0,192, 7, 4, 0, 70, 0,213, 0,193, 7, 9, 0,194, 7, 2, 0,195, 7, - 0, 1, 5, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1,196, 7, 13, 0,197, 7, 4, 0, 19, 0, 1, 1, 7, 0, 1, 1, 0, 0, - 1, 1, 1, 0, 0, 1,198, 7, 0, 1,199, 7, 2, 0, 16, 5, 2, 0, 19, 0, 4, 0, 37, 0, 2, 1, 25, 0, 2, 1, 0, 0, - 2, 1, 1, 0, 3, 1,200, 7, 4, 1,111, 6, 0, 0,201, 7, 0, 0,202, 7, 0, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, - 2, 0,206, 7, 2, 0,207, 7, 2, 0,208, 7, 2, 0, 37, 0, 2, 0, 19, 0, 2, 0,209, 7, 2, 0,210, 7, 2, 0,211, 7, - 4, 0,212, 7, 2, 1,213, 7, 9, 0,214, 7, 4, 0,215, 7, 4, 0,216, 7, 4, 0,217, 7, 4, 0,218, 7, 0, 0,219, 7, - 5, 1, 22, 0, 5, 1, 0, 0, 5, 1, 1, 0, 0, 1,198, 7, 0, 1,199, 7, 0, 1,220, 7, 0, 1,221, 7,218, 0,222, 7, - 23, 0, 52, 0, 0, 0, 22, 6, 0, 0,223, 7, 2, 0, 66, 6, 2, 0, 67, 6, 2, 0,224, 7, 2, 0, 37, 0, 2, 0,186, 7, - 2, 0,191, 6, 2, 0, 19, 0, 6, 1,200, 7, 12, 0,225, 7, 12, 0, 21, 6, 12, 0,226, 7, 12, 0,227, 7, 7, 1, 22, 0, - 7, 1, 0, 0, 7, 1, 1, 0,216, 0, 75, 6, 23, 0,228, 7, 23, 0,229, 7, 2, 0, 66, 6, 2, 0, 67, 6, 2, 0,230, 7, - 2, 0,231, 7, 2, 0,232, 7, 2, 0, 19, 0, 7, 0, 86, 2, 2, 0,206, 7, 2, 0,207, 7, 2, 0,185, 7, 2, 0,190, 7, - 8, 1,200, 7, 12, 0,233, 7, 12, 0,234, 7, 12, 0,226, 7, 0, 0,235, 7, 9, 0,236, 7, 9, 1, 12, 0, 0, 0,237, 7, - 2, 0,238, 7, 2, 0,239, 7, 2, 0,240, 7, 2, 0,241, 7, 2, 0, 3, 5, 2, 0,254, 4,218, 0,242, 7, 46, 0,243, 7, - 4, 0,244, 7, 4, 0,245, 7, 0, 0, 35, 0, 10, 1, 1, 0, 0, 0,246, 7, 11, 1, 8, 0, 57, 0,247, 7, 57, 0,248, 7, - 11, 1,249, 7, 11, 1,250, 7, 11, 1,251, 7, 2, 0,129, 0, 2, 0, 19, 0, 4, 0,252, 7, 12, 1, 4, 0, 4, 0,136, 6, - 4, 0,253, 7, 4, 0,141, 6, 4, 0,254, 7, 13, 1, 2, 0, 4, 0,255, 7, 4, 0, 0, 8, 14, 1, 7, 0, 7, 0, 1, 8, - 7, 0, 2, 8, 7, 0, 3, 8, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,123, 4, 7, 0, 4, 8, 15, 1, 6, 0, 0, 0, 5, 8, - 0, 0, 94, 6, 49, 0,137, 0, 2, 0,106, 0, 2, 0, 2, 5, 4, 0, 37, 0, 16, 1, 21, 0, 16, 1, 0, 0, 16, 1, 1, 0, - 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 6, 8, 4, 0, 7, 8, 4, 0, 8, 8, 10, 1, 9, 8, 0, 0, 5, 8, - 4, 0, 10, 8, 4, 0, 11, 8, 15, 1, 89, 3, 12, 1, 12, 8, 13, 1, 13, 8, 14, 1, 14, 8, 11, 1, 15, 8, 11, 1, 16, 8, - 11, 1, 17, 8, 57, 0, 18, 8, 57, 0, 19, 8, 17, 1, 12, 0, 0, 0, 6, 2, 9, 0,223, 0, 0, 0,224, 0, 4, 0,227, 0, - 4, 0,235, 0, 9, 0,228, 0, 7, 0,230, 0, 7, 0,231, 0, 9, 0, 20, 8, 9, 0, 21, 8, 9, 0,232, 0, 9, 0,234, 0, - 18, 1, 45, 0, 18, 1, 0, 0, 18, 1, 1, 0, 9, 0, 22, 8, 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, - 4, 0, 23, 0, 4, 0, 88, 0, 4, 0, 23, 8, 4, 0, 24, 8, 4, 0, 7, 8, 4, 0, 8, 8, 4, 0, 25, 8, 4, 0,246, 0, - 4, 0, 26, 8, 4, 0, 27, 8, 7, 0, 28, 8, 7, 0, 29, 8, 4, 0,126, 0, 4, 0, 30, 8, 16, 1, 31, 8, 36, 0, 80, 0, - 46, 0,134, 0, 49, 0,137, 0, 7, 0, 32, 8, 7, 0, 33, 8, 17, 1, 60, 1, 18, 1, 34, 8, 18, 1, 35, 8, 18, 1, 36, 8, - 12, 0, 37, 8, 19, 1, 38, 8, 9, 0, 39, 8, 7, 0,247, 3, 7, 0, 37, 0, 7, 0, 40, 8, 7, 0, 41, 8, 4, 0, 42, 8, - 7, 0, 43, 8, 9, 0, 44, 8, 4, 0, 45, 8, 4, 0, 46, 8, 4, 0, 47, 8, 7, 0, 48, 8, 20, 1, 4, 0, 20, 1, 0, 0, - 20, 1, 1, 0, 12, 0, 49, 8, 18, 1, 50, 8,204, 0, 6, 0, 12, 0, 51, 8, 12, 0, 37, 8, 12, 0, 52, 8, 18, 1, 53, 8, - 0, 0, 54, 8, 0, 0, 55, 8, 21, 1, 4, 0, 7, 0, 56, 8, 7, 0,109, 0, 2, 0, 57, 8, 2, 0, 58, 8, 22, 1, 6, 0, - 7, 0, 59, 8, 7, 0, 60, 8, 7, 0, 61, 8, 7, 0, 62, 8, 4, 0, 63, 8, 4, 0, 64, 8, 23, 1, 13, 0, 7, 0, 65, 8, - 7, 0, 66, 8, 7, 0, 67, 8, 7, 0, 68, 8, 7, 0, 69, 8, 7, 0, 70, 8, 7, 0, 71, 8, 7, 0, 72, 8, 7, 0, 73, 8, - 7, 0, 74, 8, 4, 0,234, 2, 4, 0, 75, 8, 4, 0, 76, 8, 24, 1, 2, 0, 7, 0,100, 5, 7, 0, 37, 0, 25, 1, 5, 0, - 7, 0, 77, 8, 7, 0, 78, 8, 4, 0, 90, 0, 4, 0,192, 2, 4, 0, 79, 8, 26, 1, 6, 0, 26, 1, 0, 0, 26, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 80, 8, 2, 0, 57, 0, 27, 1, 8, 0, 27, 1, 0, 0, 27, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 80, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,126, 0, 28, 1, 45, 0, 28, 1, 0, 0, 28, 1, 1, 0, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 80, 8, 2, 0,242, 0, 2, 0, 33, 4, 2, 0, 81, 8, 7, 0, 82, 8, 7, 0, 89, 0, - 7, 0,247, 2, 4, 0, 83, 8, 4, 0, 82, 0, 4, 0,194, 2, 7, 0, 84, 8, 7, 0, 85, 8, 7, 0, 86, 8, 7, 0, 87, 8, - 7, 0, 88, 8, 7, 0, 89, 8, 7, 0,244, 2, 7, 0, 57, 1, 7, 0, 90, 8, 7, 0, 91, 8, 7, 0, 37, 0, 7, 0, 92, 8, - 7, 0, 93, 8, 7, 0, 94, 8, 2, 0, 95, 8, 2, 0, 96, 8, 2, 0, 97, 8, 2, 0, 98, 8, 2, 0, 99, 8, 2, 0,100, 8, - 2, 0,101, 8, 2, 0,102, 8, 2, 0, 29, 2, 2, 0,103, 8, 2, 0, 26, 2, 2, 0,104, 8, 0, 0,105, 8, 0, 0,106, 8, - 7, 0,240, 0, 29, 1,107, 8, 67, 0,242, 1, 30, 1, 16, 0, 30, 1, 0, 0, 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, - 2, 0, 80, 8, 2, 0,242, 0, 7, 0,239, 2, 7, 0,240, 2, 7, 0,241, 2, 7, 0, 75, 2, 7, 0,242, 2, 7, 0,243, 2, - 7, 0,108, 8, 7, 0,244, 2, 7, 0,246, 2, 7, 0,247, 2,230, 0, 5, 0, 2, 0, 17, 0, 2, 0,252, 7, 2, 0, 19, 0, - 2, 0,109, 8, 27, 0,165, 6,229, 0, 3, 0, 4, 0, 69, 0, 4, 0,110, 8,230, 0, 2, 0, 31, 1, 7, 0, 31, 1, 0, 0, - 31, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,111, 8, 32, 1, 5, 0, 0, 0, 20, 0, - 7, 0, 77, 1, 7, 0,112, 8, 4, 0,113, 8, 4, 0, 37, 0, 33, 1, 4, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 43, 0, - 2, 0, 70, 0, 34, 1, 4, 0, 0, 0, 20, 0, 66, 0,114, 8, 7, 0, 77, 1, 7, 0, 37, 0, 35, 1, 6, 0, 2, 0,115, 8, - 2, 0,116, 8, 2, 0, 17, 0, 2, 0,117, 8, 0, 0,118, 8, 0, 0,119, 8, 36, 1, 5, 0, 4, 0, 17, 0, 4, 0, 37, 0, - 0, 0, 20, 0, 0, 0,120, 8, 0, 0,121, 8, 37, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 38, 1, 4, 0, - 2, 0,122, 8, 2, 0,123, 8, 2, 0, 19, 0, 2, 0, 37, 0, 39, 1, 6, 0, 0, 0, 20, 0, 0, 0,124, 8, 2, 0,125, 8, - 2, 0,244, 2, 2, 0, 70, 1, 2, 0, 70, 0, 40, 1, 5, 0, 0, 0, 20, 0, 7, 0,109, 0, 7, 0,125, 4, 2, 0, 19, 0, - 2, 0,206, 2, 41, 1, 3, 0, 0, 0, 20, 0, 4, 0,194, 2, 4, 0,122, 8, 42, 1, 7, 0, 0, 0, 20, 0, 7, 0,125, 4, - 0, 0,126, 8, 0, 0,127, 8, 2, 0, 70, 1, 2, 0, 43, 0, 4, 0,128, 8, 43, 1, 4, 0, 0, 0,129, 8, 0, 0,130, 8, - 4, 0, 17, 0, 7, 0,210, 2, 44, 1, 3, 0, 32, 0,131, 8, 0, 0,132, 8, 0, 0,133, 8, 45, 1, 18, 0, 45, 1, 0, 0, - 45, 1, 1, 0, 2, 0, 17, 0, 2, 0,134, 8, 2, 0, 19, 0, 2, 0,135, 8, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 43, 0, - 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 46, 1,138, 8, 32, 0, 45, 0, 2, 0,117, 5, 2, 0, 40, 8, 2, 0,139, 8, - 2, 0, 37, 0, 47, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,140, 8, 2, 0, 19, 0, 2, 0,206, 2, 2, 0,141, 8, - 4, 0,142, 8, 4, 0,143, 8, 4, 0,144, 8, 4, 0,145, 8, 4, 0,146, 8, 48, 1, 1, 0, 0, 0,147, 8, 49, 1, 4, 0, - 42, 0,135, 6, 0, 0,101, 7, 4, 0, 70, 1, 4, 0, 19, 0, 46, 1, 18, 0, 46, 1, 0, 0, 46, 1, 1, 0, 46, 1,148, 8, - 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,149, 8, 2, 0,137, 8, 2, 0,134, 8, 2, 0,150, 8, 2, 0, 70, 0, 2, 0,239, 1, - 0, 0, 20, 0, 9, 0, 2, 0, 50, 1,138, 8, 45, 1,151, 8, 2, 0, 15, 0, 2, 0,152, 8, 4, 0,153, 8, 51, 1, 3, 0, - 4, 0,220, 2, 4, 0, 37, 0, 32, 0, 45, 0, 52, 1, 12, 0,160, 0,154, 8, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 82, 8, - 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,155, 8, 2, 0,156, 8, 2, 0,157, 8, 2, 0,158, 8, 2, 0,159, 8, 7, 0,160, 8, - 53, 1, 13, 0, 2, 0, 19, 0, 2, 0,161, 8, 4, 0, 43, 0, 4, 0, 70, 0, 2, 0,162, 8, 7, 0,247, 3, 7, 0,163, 8, - 19, 1, 38, 8, 54, 1,164, 8, 2, 0, 17, 0, 2, 0,122, 1, 2, 0,235, 5, 2, 0,165, 8, 55, 1, 11, 0, 4, 0,220, 2, - 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,166, 8, 0, 0, 20, 0, 7, 0,167, 8, 7, 0,168, 8, 7, 0,132, 3, - 2, 0,169, 8, 2, 0,170, 8, 56, 1, 5, 0, 2, 0, 17, 0, 2, 0, 43, 0, 4, 0, 37, 0, 46, 0,134, 0, 32, 0,107, 5, - 57, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,120, 8, 32, 0, 45, 0, 58, 1, 13, 0, 2, 0, 19, 0, - 2, 0, 17, 0, 2, 0,134, 8, 2, 0,133, 3, 7, 0,171, 8, 7, 0,172, 8, 7, 0,137, 1, 7, 0,145, 3, 7, 0,104, 3, - 7, 0,107, 3, 7, 0,173, 8, 7, 0,174, 8, 32, 0,175, 8, 59, 1, 10, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 82, 8, - 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,155, 8, 2, 0, 43, 0, 2, 0, 70, 0, 2, 0,239, 1, 2, 0,122, 1, 60, 1, 8, 0, - 32, 0, 45, 0, 7, 0,241, 2, 7, 0,176, 8, 7, 0,177, 8, 7, 0, 37, 0, 2, 0, 43, 0, 2, 0,206, 2, 7, 0, 70, 0, - 61, 1, 12, 0, 2, 0, 17, 0, 2, 0, 70, 1, 2, 0, 19, 0, 2, 0,244, 2, 2, 0,220, 2, 2, 0,178, 8, 4, 0, 37, 0, - 7, 0,179, 8, 7, 0,180, 8, 7, 0,181, 8, 7, 0,182, 8, 0, 0,183, 8, 62, 1, 9, 0, 2, 0, 19, 0, 2, 0, 17, 0, - 4, 0, 82, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,137, 1, 2, 0, 64, 0, 2, 0,184, 8, 2, 0,185, 8, 63, 1, 7, 0, - 4, 0,194, 2, 4, 0,186, 8, 4, 0,187, 8, 4, 0,188, 8, 7, 0,189, 8, 7, 0,190, 8, 0, 0,126, 8, 64, 1, 7, 0, - 0, 0,191, 8, 32, 0,192, 8, 0, 0,132, 8, 2, 0,193, 8, 2, 0, 43, 0, 4, 0, 70, 0, 0, 0,133, 8, 65, 1, 6, 0, - 2, 0, 19, 0, 2, 0, 17, 0, 4, 0, 82, 8, 4, 0, 89, 0, 0, 0,194, 8, 0, 0,195, 8, 66, 1, 1, 0, 4, 0, 19, 0, - 67, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,196, 8, 7, 0,197, 8, 42, 0,135, 6, 68, 1, 4, 0, - 0, 0, 71, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 69, 1, 2, 0, 4, 0, 17, 0, 4, 0, 55, 6, 70, 1, 6, 0, - 0, 0,129, 8, 0, 0,130, 8, 4, 0, 17, 0, 7, 0, 37, 2, 32, 0, 49, 3, 32, 0,198, 8, 50, 1, 10, 0, 50, 1, 0, 0, - 50, 1, 1, 0, 50, 1,148, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,134, 8, 2, 0,199, 8, 0, 0, 20, 0, 9, 0, 2, 0, - 32, 0, 45, 0, 71, 1, 10, 0, 7, 0,132, 3, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 4, 0, 19, 0, - 7, 0,178, 8, 7, 0,204, 8, 7, 0,205, 8, 7, 0, 37, 0, 54, 1, 8, 0, 7, 0,206, 8, 7, 0,207, 8, 7, 0,208, 8, - 7, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, 7, 0,212, 8, 7, 0,213, 8, 19, 1, 16, 0, 27, 0, 31, 0, 0, 0,222, 0, - 43, 0,149, 0, 9, 0,223, 0, 43, 0,214, 8, 36, 0, 80, 0, 7, 0,247, 3, 7, 0,215, 8, 7, 0,163, 8, 7, 0,206, 8, - 7, 0,207, 8, 7, 0,216, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,217, 8, 9, 0,218, 8, 72, 1, 15, 0,215, 0, 0, 0, -215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 5, 1,219, 8,216, 0, 75, 6, 19, 1, 38, 8, 2, 0, 70, 1, - 2, 0,161, 8, 2, 0, 90, 2, 2, 0, 91, 2, 2, 0, 19, 0, 2, 0,127, 6, 4, 0, 70, 0, 73, 1, 6, 0, 73, 1, 0, 0, - 73, 1, 1, 0, 32, 0, 45, 0, 9, 0,220, 8, 4, 0,247, 0, 4, 0, 37, 0, 67, 0, 4, 0, 27, 0, 31, 0, 12, 0,221, 8, - 4, 0,131, 0, 7, 0,222, 8, 74, 1, 27, 0, 74, 1, 0, 0, 74, 1, 1, 0, 26, 0,223, 8, 74, 1, 38, 0, 12, 0,224, 8, - 0, 0, 20, 0, 7, 0,225, 8, 7, 0,226, 8, 7, 0,227, 8, 7, 0,228, 8, 4, 0, 19, 0, 7, 0,229, 8, 7, 0,230, 8, - 7, 0,231, 8, 7, 0, 77, 1, 7, 0, 37, 2, 7, 0,232, 8, 7, 0,192, 2, 7, 0,233, 8, 7, 0,234, 8, 7, 0,235, 8, - 7, 0,236, 8, 7, 0,237, 8, 7, 0,172, 0, 4, 0,131, 0, 2, 0,146, 5, 2, 0,137, 1, 75, 1, 25, 0, 27, 0, 31, 0, - 39, 0, 75, 0, 12, 0,238, 8, 12, 0,239, 8, 12, 0,240, 8, 74, 1,241, 8, 9, 0,242, 8, 9, 0,243, 8, 4, 0, 19, 0, - 4, 0, 31, 6, 2, 0,248, 2, 2, 0, 85, 6, 4, 0, 37, 0, 4, 0,131, 0, 4, 0,244, 8, 2, 0,245, 8, 2, 0,246, 8, - 2, 0,247, 8, 2, 0,248, 8, 4, 0,249, 8, 4, 0,250, 8, 4, 0,251, 8, 4, 0,252, 8, 4, 0,253, 8, 4, 0,254, 8, - 76, 1, 2, 0, 7, 0,153, 2, 4, 0, 19, 0,164, 0, 5, 0, 76, 1,255, 8, 4, 0,192, 2, 4, 0, 0, 9, 4, 0, 1, 9, - 4, 0, 19, 0,163, 0, 16, 0, 4, 0, 2, 9, 4, 0, 3, 9, 4, 0, 4, 9, 4, 0, 5, 9, 2, 0, 6, 9, 2, 0, 7, 9, - 2, 0, 8, 9, 2, 0,247, 0, 2, 0, 9, 9, 2, 0, 10, 9, 2, 0, 11, 9, 2, 0, 12, 9, 4, 0, 13, 9, 4, 0, 14, 9, - 4, 0, 15, 9, 4, 0, 16, 9, 77, 1, 44, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0,223, 8, 12, 0,159, 3, 0, 0, 20, 0, - 2, 0, 19, 0, 2, 0, 17, 9, 2, 0, 18, 9, 2, 0, 19, 9, 2, 0,118, 3, 2, 0, 20, 9, 4, 0, 73, 2, 4, 0,251, 8, - 4, 0,252, 8, 74, 1, 21, 9, 77, 1, 38, 0, 77, 1, 22, 9, 12, 0, 23, 9, 9, 0, 24, 9, 9, 0, 25, 9, 9, 0, 26, 9, - 7, 0, 65, 1, 7, 0,172, 0, 7, 0, 27, 9, 7, 0, 16, 2, 7, 0,109, 3, 7, 0,111, 3, 2, 0,141, 3, 2, 0, 37, 0, - 7, 0, 28, 9, 7, 0, 29, 9, 7, 0,114, 3, 7, 0, 30, 9, 7, 0, 31, 9, 7, 0, 32, 9, 7, 0, 33, 9, 7, 0, 34, 9, - 7, 0, 35, 9, 7, 0, 36, 9, 7, 0, 37, 9, 7, 0, 66, 2,164, 0, 97, 3, 32, 0, 38, 9, 77, 1, 39, 9,161, 0, 12, 0, - 12, 0, 40, 9, 2, 0, 19, 0, 2, 0, 41, 9, 7, 0,102, 2, 7, 0, 42, 9, 7, 0, 43, 9, 12, 0, 44, 9, 4, 0, 45, 9, - 4, 0, 46, 9, 9, 0, 47, 9, 9, 0, 48, 9,163, 0, 96, 3, 78, 1, 1, 0, 4, 0, 46, 9, 79, 1, 12, 0, 4, 0, 46, 9, - 7, 0,146, 8, 2, 0, 49, 9, 2, 0, 50, 9, 7, 0, 51, 9, 7, 0, 52, 9, 2, 0, 53, 9, 2, 0, 19, 0, 7, 0, 54, 9, - 7, 0, 55, 9, 7, 0, 56, 9, 7, 0, 57, 9, 80, 1, 7, 0, 80, 1, 0, 0, 80, 1, 1, 0, 12, 0, 58, 9, 4, 0, 19, 0, - 4, 0, 59, 9, 0, 0,238, 3,251, 0, 60, 9,160, 0, 7, 0, 27, 0, 31, 0, 12, 0, 61, 9, 12, 0, 40, 9, 12, 0, 62, 9, - 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 63, 9,220, 0, 5, 0, 27, 0, 64, 9, 12, 0, 40, 9, 67, 0, 65, 9, 4, 0, 66, 9, - 4, 0, 19, 0, 81, 1, 13, 0,215, 0, 0, 0,215, 0, 1, 0, 12, 0, 21, 6, 4, 0, 22, 6, 7, 0, 23, 6, 2, 0, 24, 6, -216, 0, 75, 6,160, 0, 92, 3,220, 0, 67, 9, 0, 0, 70, 1, 0, 0, 78, 6, 2, 0, 19, 0, 7, 0, 68, 9, 82, 1, 8, 0, - 82, 1, 0, 0, 82, 1, 1, 0, 80, 1, 69, 9, 36, 0, 80, 0, 12, 0, 98, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 70, 9, - 83, 1, 5, 0, 83, 1, 0, 0, 83, 1, 1, 0, 36, 0, 80, 0, 2, 0, 19, 0, 0, 0, 71, 9, 84, 1, 14, 0, 84, 1, 0, 0, - 84, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 72, 9, 0, 0, 73, 9, 0, 0, 71, 9, 7, 0, 74, 9, - 7, 0, 75, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 76, 9, 7, 0, 77, 9, 85, 1, 9, 0, 85, 1, 0, 0, 85, 1, 1, 0, - 32, 0, 78, 9, 0, 0,251, 2, 7, 0, 79, 9, 2, 0, 80, 9, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0, 81, 9, 86, 1, 7, 0, - 42, 0,135, 6, 26, 0,223, 8, 4, 0, 19, 0, 4, 0, 82, 9, 12, 0, 83, 9, 32, 0, 78, 9, 0, 0,251, 2, 87, 1, 15, 0, - 32, 0, 78, 9, 2, 0, 84, 9, 2, 0, 19, 0, 2, 0, 85, 9, 2, 0, 86, 9, 0, 0,251, 2, 32, 0, 87, 9, 0, 0, 88, 9, - 7, 0, 89, 9, 7, 0, 37, 2, 7, 0, 90, 9, 7, 0, 91, 9, 2, 0, 17, 0, 2, 0, 70, 1, 7, 0, 77, 1, 88, 1, 6, 0, - 32, 0, 78, 9, 7, 0,255, 8, 2, 0, 92, 9, 2, 0, 93, 9, 2, 0, 19, 0, 2, 0, 94, 9, 89, 1, 6, 0, 32, 0, 78, 9, - 4, 0, 95, 9, 4, 0, 96, 9, 4, 0, 90, 0, 4, 0, 37, 0, 0, 0,251, 2, 90, 1, 4, 0, 32, 0, 78, 9, 4, 0, 19, 0, - 4, 0, 95, 9, 0, 0,251, 2, 91, 1, 4, 0, 32, 0, 78, 9, 4, 0, 19, 0, 4, 0, 95, 9, 0, 0,251, 2, 92, 1, 4, 0, - 32, 0, 78, 9, 4, 0, 19, 0, 4, 0, 95, 9, 0, 0,251, 2, 93, 1, 2, 0, 32, 0, 78, 9, 0, 0,251, 2, 94, 1, 10, 0, - 32, 0, 78, 9, 4, 0, 97, 9, 7, 0,125, 0, 4, 0, 19, 0, 2, 0,130, 6, 2, 0, 98, 9, 2, 0, 43, 0, 2, 0, 70, 0, - 7, 0, 99, 9, 0, 0,251, 2, 95, 1, 10, 0, 32, 0, 78, 9, 2, 0, 17, 0, 2, 0, 41, 4, 4, 0, 88, 0, 4, 0, 89, 0, - 7, 0,176, 8, 7, 0,177, 8, 4, 0, 37, 0,160, 0,154, 8, 0, 0,251, 2, 96, 1, 4, 0, 32, 0, 78, 9, 4, 0,119, 3, - 4, 0,100, 9, 0, 0,251, 2, 97, 1, 4, 0, 32, 0, 78, 9, 4, 0,119, 3, 4, 0, 37, 0, 0, 0,251, 2, 98, 1, 6, 0, - 32, 0, 78, 9, 7, 0,125, 0, 7, 0,101, 9, 4, 0,102, 9, 2, 0,119, 3, 2, 0,120, 3, 99, 1, 6, 0, 32, 0, 78, 9, - 4, 0,103, 9, 4, 0,104, 9, 7, 0,105, 9, 7, 0,106, 9, 0, 0,251, 2,100, 1, 16, 0, 32, 0, 78, 9, 32, 0, 22, 9, - 4, 0, 17, 0, 7, 0,107, 9, 7, 0,108, 9, 7, 0,109, 9, 7, 0,110, 9, 7, 0,111, 9, 7, 0,112, 9, 7, 0,113, 9, - 7, 0,114, 9, 7, 0,115, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,101, 1, 3, 0, 32, 0, 78, 9, - 4, 0, 19, 0, 4, 0, 29, 2,102, 1, 5, 0, 32, 0, 78, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,116, 9, 0, 0,251, 2, -103, 1, 10, 0, 32, 0, 78, 9, 0, 0,251, 2, 2, 0,117, 9, 2, 0,118, 9, 0, 0,119, 9, 0, 0,120, 9, 7, 0,121, 9, - 7, 0,122, 9, 7, 0,123, 9, 7, 0,124, 9,104, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, - 7, 0,125, 9, 7, 0,126, 9, 2, 0, 19, 0, 2, 0, 29, 2,105, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, - 7, 0, 12, 0, 7, 0,125, 9, 7, 0,126, 9, 2, 0, 19, 0, 2, 0, 29, 2,106, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, - 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,125, 9, 7, 0,126, 9, 2, 0, 19, 0, 2, 0, 29, 2,107, 1, 7, 0, 32, 0, 78, 9, - 0, 0,251, 2, 7, 0, 77, 1, 7, 0, 86, 1, 2, 0, 19, 0, 2, 0, 70, 1, 4, 0, 37, 0,108, 1, 5, 0, 32, 0, 49, 3, - 7, 0, 77, 1, 2, 0, 53, 3, 0, 0, 55, 3, 0, 0,127, 9,109, 1, 10, 0,109, 1, 0, 0,109, 1, 1, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 0, 0,128, 9, 7, 0, 21, 1, 7, 0, 22, 1, 2, 0, 58, 9, 2, 0,129, 9, 32, 0, 45, 0,110, 1, 22, 0, -110, 1, 0, 0,110, 1, 1, 0, 2, 0, 19, 0, 2, 0, 70, 1, 2, 0,130, 9, 2, 0,131, 9, 36, 0, 80, 0,160, 0,154, 8, - 32, 0,164, 0, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,132, 9, 7, 0,133, 9, 7, 0,134, 9, 7, 0,135, 9, 7, 0,237, 2, - 7, 0,136, 9, 7, 0,156, 8, 7, 0,137, 9, 0, 0,138, 9, 0, 0,139, 9, 12, 0,100, 3,111, 1, 8, 0, 7, 0, 44, 2, - 7, 0,176, 8, 7, 0,177, 8, 9, 0, 2, 0, 2, 0,140, 9, 2, 0,141, 9, 2, 0,142, 9, 2, 0,143, 9,112, 1, 18, 0, -112, 1, 0, 0,112, 1, 1, 0,112, 1,144, 9, 0, 0, 20, 0,111, 1,145, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,146, 9, - 2, 0,147, 9, 2, 0,148, 9, 2, 0,149, 9, 4, 0, 43, 0, 7, 0,150, 9, 7, 0,151, 9, 4, 0,152, 9, 4, 0,153, 9, -112, 1,154, 9,113, 1,155, 9,114, 1, 33, 0,114, 1, 0, 0,114, 1, 1, 0,114, 1,156, 9, 0, 0, 20, 0, 2, 0, 17, 0, - 2, 0, 19, 0, 2, 0, 6, 8, 2, 0, 40, 8, 2, 0,157, 9, 2, 0,133, 0, 2, 0,147, 9, 2, 0,252, 7, 12, 0,149, 8, - 12, 0,158, 9, 27, 0,165, 6, 9, 0,159, 9, 7, 0,150, 9, 7, 0,151, 9, 7, 0, 75, 2, 7, 0,160, 9, 2, 0,161, 9, - 2, 0,162, 9, 7, 0,163, 9, 7, 0,164, 9, 2, 0,165, 9, 2, 0,166, 9, 9, 0,167, 9, 24, 0,168, 9, 24, 0,169, 9, - 24, 0,170, 9,115, 1,150, 0,116, 1,171, 9,117, 1,172, 9,113, 1, 8, 0,113, 1, 0, 0,113, 1, 1, 0,114, 1,173, 9, -114, 1,174, 9,112, 1,175, 9,112, 1,154, 9, 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0, -162, 0, 95, 3, 12, 0,176, 9, 12, 0,177, 9,111, 1,178, 9, 12, 0,179, 9, 4, 0, 17, 0, 4, 0,180, 9, 4, 0,181, 9, - 4, 0,182, 9, 4, 0, 19, 0, 4, 0, 37, 0, 12, 0,183, 9,117, 1,184, 9, 4, 0,185, 9, 9, 0,186, 9, 9, 0,187, 9, - 4, 0,188, 9, 9, 0,189, 9, 9, 0,190, 9, 9, 0,191, 9,118, 1, 6, 0, 4, 0,124, 0, 4, 0,126, 0, 4, 0,252, 7, - 0, 0,192, 9, 0, 0,193, 9, 2, 0, 37, 0,119, 1, 16, 0, 2, 0,206, 7, 2, 0,207, 7, 2, 0,194, 9, 2, 0,201, 8, - 2, 0,195, 9, 2, 0, 68, 0, 7, 0,236, 2, 7, 0,196, 9, 7, 0,197, 9, 2, 0, 92, 1, 0, 0,198, 9, 0, 0,199, 9, - 2, 0,200, 9, 2, 0, 37, 0, 4, 0,201, 9, 4, 0,202, 9,120, 1, 9, 0, 7, 0,203, 9, 7, 0,204, 9, 7, 0,216, 8, - 7, 0,109, 0, 7, 0,205, 9, 7, 0, 91, 6, 2, 0,206, 9, 0, 0,207, 9, 0, 0, 37, 0,121, 1, 4, 0, 7, 0,208, 9, - 7, 0,209, 9, 2, 0,206, 9, 2, 0, 37, 0,122, 1, 3, 0, 7, 0,210, 9, 7, 0,211, 9, 7, 0, 15, 0,123, 1, 7, 0, - 0, 0, 6, 2, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0,196, 4, 4, 0,126, 0, 4, 0, 39, 4,124, 1, 7, 0, - 7, 0,212, 9, 7, 0,213, 9, 7, 0,214, 9, 7, 0, 86, 2, 7, 0,215, 9, 7, 0,216, 9, 7, 0,217, 9,125, 1, 4, 0, - 2, 0,218, 9, 2, 0,219, 9, 2, 0,220, 9, 2, 0,221, 9,126, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,127, 1, 2, 0, - 0, 0,166, 0, 0, 0,222, 9,128, 1, 1, 0, 0, 0, 20, 0,129, 1, 10, 0, 0, 0,223, 9, 0, 0,224, 9, 0, 0, 84, 6, - 0, 0,225, 9, 2, 0,194, 9, 2, 0,226, 9, 7, 0,227, 9, 7, 0,228, 9, 7, 0,229, 9, 7, 0,136, 9,130, 1, 2, 0, - 9, 0,230, 9, 9, 0,231, 9,131, 1, 11, 0, 0, 0, 2, 5, 0, 0, 17, 0, 0, 0,206, 9, 0, 0,109, 0, 0, 0,232, 9, - 0, 0,106, 0, 0, 0, 71, 2, 7, 0,233, 9, 7, 0,234, 9, 7, 0,235, 9, 7, 0,236, 9,132, 1, 8, 0, 7, 0,115, 8, - 7, 0,125, 0, 7, 0,199, 9, 7, 0,158, 2, 7, 0,237, 9, 7, 0,236, 0, 7, 0,238, 9, 4, 0, 17, 0,133, 1, 4, 0, - 2, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9, 2, 0, 37, 0,134, 1, 6, 0, 7, 0,242, 9, 7, 0,200, 2, 7, 0,243, 9, - 7, 0, 1, 8, 7, 0, 2, 8, 7, 0, 3, 8,135, 1, 1, 0, 0, 0, 20, 0,136, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, - 2, 0, 19, 0, 2, 0,244, 9,137, 1, 10, 0, 2, 0,227, 3, 2, 0, 19, 0, 7, 0,125, 4, 7, 0,245, 9, 7, 0,246, 9, - 7, 0,247, 9, 7, 0,248, 9,136, 1,249, 9,136, 1,250, 9,136, 1,251, 9, 63, 0, 9, 0, 4, 0, 19, 0, 4, 0, 64, 0, - 24, 0,252, 9, 24, 0,253, 9,137, 1,254, 9, 7, 0,255, 9, 7, 0, 0, 10, 7, 0, 1, 10, 7, 0, 2, 10,232, 0, 9, 0, - 4, 0, 58, 9, 4, 0, 3, 10, 7, 0, 4, 10, 7, 0, 5, 10, 7, 0, 6, 10, 7, 0, 10, 0, 7, 0, 12, 0, 4, 0,129, 0, - 4, 0, 19, 0,138, 1, 4, 0, 47, 0,230, 2, 7, 0, 7, 10, 7, 0,171, 1, 7, 0, 37, 0,193, 0, 18, 0, 27, 0, 31, 0, -138, 1, 8, 10, 63, 0,249, 9, 51, 0, 9, 10, 2, 0, 19, 0, 2, 0,241, 5, 4, 0,106, 0, 7, 0, 10, 10, 7, 0, 83, 2, - 4, 0, 11, 10, 7, 0, 12, 10, 7, 0, 13, 10, 7, 0, 14, 10, 7, 0,171, 1, 0, 0, 15, 10, 0, 0, 16, 10, 0, 0, 17, 10, - 0, 0, 70, 0,139, 1, 10, 0, 4, 0, 17, 0, 4, 0,125, 0, 4, 0, 19, 0, 4, 0,181, 3, 4, 0, 18, 10, 4, 0, 19, 10, - 4, 0, 20, 10, 0, 0, 92, 0, 0, 0, 20, 0, 9, 0, 2, 0,140, 1, 1, 0, 0, 0, 35, 0, 91, 0, 7, 0,139, 1, 21, 10, - 4, 0, 22, 10, 4, 0, 23, 10, 4, 0, 24, 10, 4, 0, 37, 0, 9, 0, 25, 10,140, 1, 26, 10,141, 1, 5, 0, 7, 0,153, 2, - 7, 0,220, 2, 7, 0, 37, 2, 2, 0,129, 2, 2, 0, 37, 0,142, 1, 5, 0, 7, 0,153, 2, 7, 0, 27, 10, 7, 0, 28, 10, - 7, 0, 29, 10, 7, 0,220, 2,143, 1, 5, 0, 32, 0, 30, 10,144, 1, 22, 0, 7, 0,213, 5, 7, 0, 31, 10, 7, 0, 57, 0, -145, 1, 7, 0, 4, 0, 32, 10, 4, 0, 33, 10, 4, 0, 34, 10, 7, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 57, 0, -146, 1, 8, 0,146, 1, 0, 0,146, 1, 1, 0, 32, 0, 45, 0, 4, 0,255, 0, 2, 0, 19, 0, 2, 0, 70, 1, 7, 0,220, 2, - 7, 0,123, 8,147, 1, 6, 0,147, 1, 0, 0,147, 1, 1, 0, 32, 0, 45, 0, 2, 0,205, 2, 2, 0, 19, 0, 2, 0, 38, 10, -148, 1, 17, 0,142, 1,175, 3,142, 1, 39, 10,141, 1, 40, 10,142, 1,107, 8,143, 1, 41, 10, 4, 0, 82, 0, 7, 0,220, 2, - 7, 0,247, 2, 7, 0, 42, 10, 4, 0, 32, 10, 4, 0, 43, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0,106, 0, 4, 0, 44, 10, - 2, 0, 19, 0, 2, 0, 45, 10,149, 1,110, 0, 27, 0, 31, 0, 39, 0, 75, 0,150, 1, 46, 10,171, 0, 61, 4, 4, 0, 19, 0, - 2, 0, 17, 0, 2, 0,117, 9, 2, 0, 47, 10, 2, 0, 48, 10, 2, 0,141, 3, 2, 0, 49, 10, 2, 0, 50, 10, 2, 0, 51, 10, - 2, 0, 52, 10, 2, 0, 53, 10, 2, 0, 54, 10, 2, 0, 55, 10, 2, 0,245, 4, 2, 0,125, 5, 2, 0, 56, 10, 2, 0, 57, 10, - 2, 0, 58, 10, 2, 0, 59, 10, 2, 0, 60, 10, 2, 0, 26, 2, 2, 0,100, 8, 2, 0, 75, 8, 2, 0, 61, 10, 2, 0, 62, 10, - 2, 0,191, 3, 2, 0,192, 3, 2, 0, 63, 10, 2, 0, 64, 10, 2, 0, 65, 10, 2, 0, 66, 10, 7, 0, 67, 10, 7, 0, 68, 10, - 7, 0, 69, 10, 2, 0, 75, 5, 2, 0, 70, 10, 7, 0, 71, 10, 7, 0, 72, 10, 7, 0, 73, 10, 7, 0, 82, 8, 7, 0, 89, 0, - 7, 0,247, 2, 7, 0, 88, 8, 7, 0, 74, 10, 7, 0, 75, 10, 7, 0, 76, 10, 4, 0, 83, 8, 4, 0, 81, 8, 4, 0, 77, 10, - 7, 0, 84, 8, 7, 0, 85, 8, 7, 0, 86, 8, 7, 0, 78, 10, 7, 0, 79, 10, 7, 0, 80, 10, 7, 0, 81, 10, 7, 0, 82, 10, - 7, 0, 57, 0, 7, 0, 83, 10, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0,132, 3, 7, 0,106, 0, 7, 0, 87, 10, - 7, 0, 88, 10, 7, 0, 89, 10, 7, 0, 90, 10, 7, 0, 91, 10, 7, 0, 92, 10, 7, 0, 93, 10, 4, 0, 94, 10, 4, 0, 95, 10, - 7, 0, 96, 10, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,210, 0, 7, 0,101, 10, 7, 0,218, 3, - 7, 0,216, 3, 7, 0,217, 3, 7, 0,102, 10, 7, 0,103, 10, 7, 0,104, 10, 7, 0,105, 10, 7, 0,106, 10, 7, 0,107, 10, - 7, 0,108, 10, 7, 0,109, 10, 7, 0,110, 10, 7, 0,111, 10, 7, 0,112, 10, 7, 0,113, 10, 7, 0,114, 10, 4, 0,115, 10, - 4, 0,116, 10, 67, 0,164, 3, 12, 0,117, 10, 67, 0,118, 10, 32, 0,119, 10, 32, 0,120, 10, 36, 0, 80, 0,166, 0, 62, 1, -166, 0,121, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,149, 1,122, 10,148, 1,123, 10,145, 1, 22, 9,173, 0,243, 3, - 9, 0,244, 3,151, 1,124, 10,151, 1,125, 10, 12, 0,126, 10, 12, 0,127, 10,132, 0,128, 10,140, 0,129, 10,140, 0,130, 10, - 32, 0,131, 10, 32, 0,132, 10, 32, 0, 38, 0, 12, 0, 83, 9, 0, 0, 20, 0, 7, 0,240, 0, 7, 0, 18, 3, 7, 0,133, 10, - 4, 0,194, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0, 83, 8, 4, 0,134, 10, 4, 0,135, 10, 4, 0,136, 10, 2, 0,247, 0, - 2, 0,137, 10, 2, 0,138, 10, 2, 0,139, 10, 0, 0,140, 10, 2, 0,141, 10, 2, 0,142, 10, 2, 0,143, 10, 9, 0,144, 10, -136, 0, 60, 4, 12, 0, 5, 3, 12, 0,145, 10,152, 1,146, 10,153, 1,147, 10, 7, 0,148, 10,134, 0, 35, 0,154, 1,217, 8, - 7, 0, 30, 4, 7, 0,149, 10, 7, 0,150, 10, 7, 0,213, 5, 7, 0,142, 3, 7, 0,132, 3, 7, 0,151, 10, 7, 0, 85, 2, - 7, 0,152, 10, 7, 0,153, 10, 7, 0,154, 10, 7, 0,155, 10, 7, 0,156, 10, 7, 0,157, 10, 7, 0, 31, 4, 7, 0,158, 10, - 7, 0,159, 10, 7, 0,160, 10, 7, 0, 32, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0,161, 10, 7, 0,162, 10, 4, 0,163, 10, - 4, 0, 90, 0, 4, 0,164, 10, 4, 0,165, 10, 2, 0,166, 10, 2, 0,167, 10, 2, 0,168, 10, 2, 0,169, 10, 2, 0,170, 10, - 2, 0,171, 10,171, 0, 61, 4,135, 0, 8, 0,154, 1,172, 10, 7, 0,173, 10, 7, 0,174, 10, 7, 0,243, 1, 7, 0,175, 10, - 4, 0, 90, 0, 2, 0,176, 10, 2, 0,177, 10,155, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,178, 10, -156, 1, 6, 0,156, 1, 0, 0,156, 1, 1, 0,155, 1,255, 8, 4, 0,253, 0, 2, 0,179, 10, 2, 0, 19, 0,157, 1, 5, 0, -157, 1, 0, 0,157, 1, 1, 0, 12, 0,180, 10, 4, 0,181, 10, 4, 0, 19, 0,158, 1, 9, 0,158, 1, 0, 0,158, 1, 1, 0, - 12, 0,124, 0,157, 1,182, 10, 4, 0, 19, 0, 2, 0,179, 10, 2, 0,183, 10, 7, 0, 91, 0, 0, 0,184, 10,162, 0, 6, 0, - 27, 0, 31, 0, 12, 0, 18, 5, 4, 0, 19, 0, 2, 0,185, 10, 2, 0,186, 10, 9, 0,187, 10,159, 1, 7, 0,159, 1, 0, 0, -159, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,188, 10, 0, 0,189, 10,160, 1, 5, 0, 12, 0,190, 10, - 4, 0,191, 10, 4, 0,192, 10, 4, 0, 19, 0, 4, 0, 37, 0,161, 1, 17, 0, 27, 0, 31, 0,162, 1,193, 10,162, 1,194, 10, - 12, 0,195, 10, 4, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 12, 0,199, 10, 12, 0,200, 10,160, 1,201, 10, 12, 0,202, 10, - 12, 0,203, 10, 12, 0,204, 10, 12, 0,205, 10,163, 1,206, 10, 12, 0,207, 10,213, 0,208, 10,162, 1, 31, 0,162, 1, 0, 0, -162, 1, 1, 0, 9, 0,209, 10, 4, 0,184, 7, 2, 0,210, 10, 2, 0, 37, 0,218, 0, 74, 6,218, 0,211, 10, 0, 0,212, 10, - 2, 0,213, 10, 2, 0,214, 10, 2, 0,206, 7, 2, 0,207, 7, 2, 0,215, 10, 2, 0,216, 10, 2, 0,181, 3, 2, 0,191, 6, - 2, 0,217, 10, 2, 0,218, 10, 2, 0,185, 9,164, 1,219, 10,165, 1,220, 10,166, 1,221, 10, 4, 0,222, 10, 4, 0,223, 10, - 9, 0,224, 10, 12, 0,200, 10, 12, 0,226, 7, 12, 0,225, 10, 12, 0,226, 10, 12, 0,227, 10,167, 1, 17, 0,167, 1, 0, 0, -167, 1, 1, 0, 0, 0,228, 10, 26, 0, 30, 0, 2, 0,229, 10, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0,230, 10, 2, 0,231, 10, - 2, 0,232, 10, 2, 0,233, 10, 2, 0,234, 10, 2, 0, 19, 0, 2, 0,235, 10, 2, 0, 31, 0, 2, 0, 37, 0,168, 1,236, 10, -169, 1, 10, 0,169, 1, 0, 0,169, 1, 1, 0, 12, 0,237, 10, 0, 0,228, 10, 2, 0,238, 10, 2, 0,239, 10, 2, 0, 19, 0, - 2, 0,240, 10, 4, 0,241, 10, 9, 0,242, 10,163, 1, 8, 0,163, 1, 0, 0,163, 1, 1, 0, 0, 0,228, 10, 0, 0,243, 10, - 0, 0,244, 10, 12, 0,138, 7, 4, 0,245, 10, 4, 0, 19, 0,226, 0, 14, 0,226, 0, 0, 0,226, 0, 1, 0, 0, 0,228, 10, - 26, 0, 30, 0,170, 1,200, 7, 9, 0,246, 10, 9, 0,247, 10,168, 1,236, 10,160, 1,248, 10, 12, 0,249, 10,226, 0,250, 10, - 4, 1,111, 6, 2, 0, 19, 0, 2, 0,137, 1,171, 1, 8, 0,171, 1, 0, 0,171, 1, 1, 0, 9, 0, 2, 0, 9, 0,251, 10, - 0, 0,238, 3, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,252, 10,172, 1, 5, 0, 7, 0,253, 10, 4, 0,254, 10, 4, 0,255, 10, - 4, 0, 70, 1, 4, 0, 19, 0,173, 1, 6, 0, 7, 0, 0, 11, 7, 0, 1, 11, 7, 0, 2, 11, 7, 0, 3, 11, 4, 0, 17, 0, - 4, 0, 19, 0,174, 1, 5, 0, 7, 0,176, 8, 7, 0,177, 8, 7, 0,220, 2, 2, 0, 40, 2, 2, 0, 41, 2,175, 1, 5, 0, -174, 1, 2, 0, 4, 0, 54, 0, 7, 0, 4, 11, 7, 0,176, 8, 7, 0,177, 8,176, 1, 4, 0, 2, 0, 5, 11, 2, 0, 6, 11, - 2, 0, 7, 11, 2, 0, 8, 11,177, 1, 2, 0, 42, 0,162, 6, 26, 0,223, 8,178, 1, 3, 0, 24, 0, 9, 11, 4, 0, 19, 0, - 4, 0, 37, 0,179, 1, 6, 0, 7, 0,106, 0, 7, 0,222, 2, 7, 0, 10, 11, 7, 0, 37, 0, 2, 0,246, 0, 2, 0, 11, 11, -180, 1, 6, 0, 27, 0,165, 6, 0, 0, 12, 11, 0, 0, 13, 11, 2, 0, 14, 11, 2, 0, 19, 0, 4, 0, 15, 11,181, 1, 7, 0, -181, 1, 0, 0,181, 1, 1, 0, 0, 0,238, 3,180, 1, 16, 11, 2, 0, 17, 11, 2, 0, 17, 0, 7, 0, 61, 0,182, 1, 7, 0, - 12, 0, 18, 11, 0, 0, 19, 11, 9, 0, 20, 11, 7, 0, 61, 0, 7, 0,252, 10, 4, 0, 17, 0, 4, 0, 19, 0,183, 1, 3, 0, - 7, 0, 21, 11, 4, 0, 19, 0, 4, 0, 37, 0,184, 1, 15, 0,184, 1, 0, 0,184, 1, 1, 0, 80, 1, 69, 9,182, 1, 62, 0, - 12, 0,100, 3, 35, 0, 50, 0,183, 1, 22, 11, 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 15, 1, 4, 0, 23, 11, - 0, 0, 12, 11, 4, 0, 24, 11, 7, 0, 25, 11,185, 1, 2, 0, 0, 0, 26, 11, 0, 0, 27, 11,186, 1, 4, 0,186, 1, 0, 0, -186, 1, 1, 0,160, 0, 49, 3, 12, 0, 28, 11,187, 1, 24, 0,187, 1, 0, 0,187, 1, 1, 0, 12, 0, 29, 11,160, 0,154, 8, -186, 1, 30, 11, 12, 0, 31, 11, 12, 0,100, 3, 0, 0,238, 3, 7, 0,252, 10, 7, 0, 32, 11, 7, 0, 88, 0, 7, 0, 89, 0, - 7, 0,132, 9, 7, 0,133, 9, 7, 0,237, 2, 7, 0,136, 9, 7, 0,156, 8, 7, 0,137, 9, 2, 0, 33, 11, 2, 0, 34, 11, - 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, 4, 0, 70, 0,188, 1, 6, 0,188, 1, 0, 0,188, 1, 1, 0, 12, 0, 29, 11, - 4, 0, 19, 0, 4, 0,157, 2, 0, 0,238, 3,189, 1, 10, 0,189, 1, 0, 0,189, 1, 1, 0, 27, 0,165, 6, 0, 0, 35, 11, - 4, 0, 15, 11, 4, 0, 36, 11, 0, 0, 12, 11, 4, 0, 23, 11, 2, 0, 19, 0, 2, 0, 37, 11,190, 1, 7, 0,190, 1, 0, 0, -190, 1, 1, 0, 12, 0, 38, 11, 0, 0,238, 3, 2, 0, 19, 0, 2, 0, 39, 11, 4, 0, 40, 11,191, 1, 5, 0,191, 1, 0, 0, -191, 1, 1, 0, 0, 0, 12, 11, 4, 0, 23, 11, 7, 0,210, 2, 39, 0, 12, 0,160, 0, 92, 3,160, 0, 41, 11,186, 1, 30, 11, - 12, 0, 42, 11,187, 1, 43, 11, 12, 0, 44, 11, 12, 0, 45, 11, 4, 0, 19, 0, 4, 0,247, 0, 2, 0, 46, 11, 2, 0, 47, 11, - 7, 0, 48, 11,192, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,193, 1, 5, 0,193, 1, 0, 0,193, 1, 1, 0, 4, 0, 17, 0, - 4, 0, 19, 0, 0, 0, 20, 0,194, 1, 6, 0,193, 1, 49, 11, 32, 0, 45, 0, 4, 0, 50, 11, 7, 0, 51, 11, 4, 0, 52, 11, - 4, 0, 58, 9,195, 1, 3, 0,193, 1, 49, 11, 4, 0, 50, 11, 7, 0, 53, 11,196, 1, 8, 0,193, 1, 49, 11, 32, 0, 45, 0, - 7, 0, 65, 1, 7, 0, 54, 11, 7, 0, 18, 3, 7, 0,216, 8, 4, 0, 50, 11, 4, 0, 55, 11,197, 1, 5, 0,193, 1, 49, 11, - 7, 0, 56, 11, 7, 0, 40, 8, 7, 0,243, 2, 7, 0, 57, 0,198, 1, 3, 0,193, 1, 49, 11, 7, 0,216, 8, 7, 0, 57, 11, -144, 1, 4, 0, 7, 0, 58, 11, 7, 0, 89, 10, 2, 0, 59, 11, 2, 0, 70, 1,199, 1, 14, 0,199, 1, 0, 0,199, 1, 1, 0, - 12, 0, 60, 11, 12, 0, 61, 11, 12, 0, 62, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0, 63, 11, 7, 0, 64, 11, - 4, 0, 52, 11, 4, 0, 58, 9, 7, 0,247, 3, 7, 0,245, 2,150, 1, 23, 0, 4, 0, 50, 11, 4, 0, 65, 11, 7, 0, 66, 11, - 7, 0, 57, 0, 7, 0, 67, 11, 7, 0,241, 2, 7, 0, 58, 11, 7, 0, 68, 11, 7, 0,222, 2, 7, 0, 69, 11, 7, 0,125, 4, - 7, 0, 70, 11, 7, 0, 71, 11, 7, 0, 72, 11, 7, 0, 73, 11, 7, 0, 74, 11, 7, 0, 75, 11, 7, 0, 76, 11, 7, 0, 77, 11, - 7, 0, 78, 11, 7, 0, 79, 11, 7, 0, 80, 11, 12, 0, 81, 11,120, 0, 36, 0,119, 0, 82, 11,200, 1, 83, 11, 67, 0, 84, 11, - 67, 0,118, 10, 67, 0, 85, 11,201, 1, 86, 11, 48, 0,165, 0, 48, 0, 87, 11, 48, 0, 88, 11, 7, 0, 89, 11, 7, 0, 90, 11, - 7, 0, 91, 11, 7, 0, 92, 11, 7, 0, 93, 11, 7, 0, 70, 9, 7, 0, 94, 11, 7, 0,171, 1, 7, 0, 95, 11, 4, 0, 96, 11, - 4, 0, 97, 11, 4, 0, 98, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0, 99, 11, 2, 0,100, 11, 2, 0,101, 11, 4, 0,102, 11, - 7, 0,222, 2, 4, 0,103, 11, 7, 0,104, 11, 4, 0,105, 11, 4, 0,106, 11, 4, 0,107, 11,136, 0,108, 11, 12, 0,109, 11, -171, 0, 61, 4,121, 0, 11, 0,119, 0, 82, 11,147, 0, 35, 3, 7, 0,138, 1, 7, 0, 70, 9, 7, 0,110, 11, 7, 0,111, 11, - 2, 0,112, 11, 2, 0,113, 11, 2, 0,114, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0, 82, 11,138, 0, 15, 3, -140, 0, 17, 3, 7, 0,255, 8, 7, 0,115, 11, 7, 0,116, 11, 7, 0, 67, 1, 7, 0,117, 11, 4, 0, 92, 9, 4, 0, 13, 3, - 2, 0, 17, 0, 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0}; diff --git a/source/blender/editors/datafiles/Bfont.c b/source/blender/editors/datafiles/Bfont.c index bbef7d1e2c3..324bcffde77 100644 --- a/source/blender/editors/datafiles/Bfont.c +++ b/source/blender/editors/datafiles/Bfont.c @@ -28,10 +28,6 @@ * ***** END GPL LICENSE BLOCK ***** */ -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - int datatoc_Bfont_size= 25181; char datatoc_Bfont[]= {"\x80\x01\xe4\x01\x00\x00\x25\x21\x50\x53\x2d\x41\x64\x6f\x62\x65\x46\x6f\x6e\x74\x2d\x31\x2e\x30\x3a\x20\x42\x66\x6f\x6e\x74\x20\x30\x30\x31\x2e\x30\x30\x31\x0a\x31\x31\x20\x64\x69\x63\x74\x20\x62\x65\x67\x69\x6e\x0a\x2f\x46\x6f\x6e\x74\x49\x6e\x66\x6f\x20\x31\x30\x20\x64\x69\x63\x74\x20\x64\x75\x70\x20\x62\x65\x67\x69\x6e\x0a\x2f\x76\x65\x72\x73\x69\x6f\x6e\x20\x28" \ diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt new file mode 100644 index 00000000000..d37ee338733 --- /dev/null +++ b/source/blender/editors/datafiles/CMakeLists.txt @@ -0,0 +1,26 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public LicenseS +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC "") + +BLENDERLIB(bf_editor_datafiles "${SRC}" "${INC}") diff --git a/source/blender/editors/datafiles/blenderbuttons.c b/source/blender/editors/datafiles/blenderbuttons.c index 64d2659dcb2..f4afe8b0252 100644 --- a/source/blender/editors/datafiles/blenderbuttons.c +++ b/source/blender/editors/datafiles/blenderbuttons.c @@ -1,6570 +1,6560 @@ /* DataToC output of file <blenderbuttons> */ -int datatoc_blenderbuttons_size= 210034; +int datatoc_blenderbuttons_size= 209697; char datatoc_blenderbuttons[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, - 2, 90, 0, 0, 2,128, 8, 6, 0, 0, 0, 68,254,214,163, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, - 66, 40,155,120, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111,116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108, -101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222,244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20, -145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, - 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123,163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, - 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17,224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179, -100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7,190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15, -234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0, -160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127,230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, - 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, - 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, - 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153,178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40, -206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243, -253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126, -209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, - 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228,228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253, -108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230, -143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, - 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0,176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116, -192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104,131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, - 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68,160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, - 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, - 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61,112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, - 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33,193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, - 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70,186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61, -212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171, -104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171, -198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18,129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78, -216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81,194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, - 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70, -210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218,100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51, -228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85, -163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173, -162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221,149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, - 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25,119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152, -231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10,149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85, -243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227,169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168, -135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179, -120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217,124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, - 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, - 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, - 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83,217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27, -161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76,111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, - 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53,113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, - 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140,105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, - 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76,199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231, -155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, - 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167,185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25, -176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103,183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135, -217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222,154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, - 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23,103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27, -198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157,155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, - 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, - 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, - 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65, -129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246,178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, - 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14,133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135, -133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209,220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, - 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54, -110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23,152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, - 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209, -136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145,188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, - 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49,131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118, -203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201,107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, - 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43,205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225, -146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, - 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107,129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235, -220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27, -135,111,202,191,153,220,148,180,169,171,196,185,100,207,102,210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13, -217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, - 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97,215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, - 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251,179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237, -199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, - 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29, -103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, - 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242,207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99, -206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154, -175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156,187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, - 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221,189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203, -187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243, -209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5,143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253, -233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147, -191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30,190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163, -223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208,167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, - 0, 0, 32, 99, 72, 82, 77, 0, 0,122, 37, 0, 0,128,131, 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, - 0, 58,152, 0, 0, 23,111,146, 95,197, 70, 0, 3, 41,157, 73, 68, 65, 84,120,218,236, 93,119,152, 19, 69, 31,126,103,179,233, -185,222, 27, 28,119,244,222,145,222,139,210,145,206,135, 32, 98,161,136, 21, 4, 11, 74,145,162, 72, 85, 16, 59,160, 72, 85, 16, - 84,138,210,123,239, 85,234,221,113,189,167,151,157,239,143,203,198, 92, 72, 46, 57, 56, 16,113,222,231,217, 39,217,246,238,204, -238,148,119,126,243,155, 25, 66, 41, 5, 3, 3, 3, 3, 3, 3, 3, 3, 67,217,131, 48,161,197,192,192,192,192,192,192,192,240, - 96,192,149,246,134,205,155, 55,251,172,204, 8, 33, 29,125,229,180,111,109, 30,117,206, 7, 24,119, 90,134,156,109,236,156, 31, -252, 75,194,217,230, 81,229, 20,227,235, 43,111,105, 56,125, 77, 83,165, 12, 39, 45,235,112, 62, 40,206,178,202, 71,110,194, 73, - 31,192,119,255,224, 95, 18,206, 54,143, 26,167,107,250,241,133,183,180,156,190,164,169,123, 8, 39, 45,235,112, 62, 40,206,251, -205, 71, 37,132,147,222,111, 90,242,240,237, 63,192,127, 8,252,131, 18, 89,165, 65,183,110,221,136, 19, 63,121, 84, 57,157,223, -131,200, 95,150, 97, 45, 67,236, 44,107, 78,151,247, 89, 86,248,160, 91,183,110,100,243,230,205,187, 0,180, 41,203,184,151,197, -119,119,137,107,153,240,150, 86,100,149,150,179,172,210,253,131,230, 44,171,188,228,202, 89, 22,233,222,221,119,127,128,223,168, -172,194, 89, 38,121,233, 65,164,121, 55,233,231,190,121, 93, 57,203, 34, 47,185,114,150, 69,186,127, 24,156,101,145,151,220,113, -150, 69,186,247,244,237,153, 69,235,225, 10, 2,215, 12,222,246, 81, 22, 68, 15, 74,108,250,106,129,121, 20, 56,203,248, 27,125, - 96,231, 44,203,214, 77,219,178,250, 70, 15, 34,189, 59,115,150, 21,191, 43, 79, 89,124, 39,119,156,247, 27, 94, 15,225, 44,243, -184,223,111,186,127, 88,156,101,252,141,202, 36, 47,185,112,182, 45,227,198, 64, 91,167,253, 15,202,146,179,172,242,146,155,112, -222,247,119,114,199,121,191,225,245, 16,206, 50,143,123, 89,212, 33, 15,138,247,177,181,104, 61, 72,145,245,160, 42,181,178,228, -126, 16, 86,157, 7,101,121, 43, 43,171,142, 27,222, 93,101, 72,183,179,172,195,105, 15, 31,121, 80,214,215, 71, 29, 44, 47,177, -188,244,168,229, 37,119,233,166, 91,183,110, 31,108,222,188,249,253, 71,173, 17,237,204, 89, 86,130,200, 77,220,239, 43, 47,185, -222, 91, 22,121,201, 11, 39,121, 16,241, 47,235,252,196,132, 86, 41, 44, 69,101,220, 50, 65, 25, 91, 96, 30, 88,188,203, 56,156, -109, 31,132,133,240, 1,160,204,195,105,111, 41,191,255, 0,226,254,111,121,167, 44, 47,177,188,244,200,229, 37,151, 52,217,182, - 12, 45, 69,101,106,121,118,229, 44,139,103, 56,115,148, 85, 26,125,208,113, 47,203,188,244, 32,190,253,191, 14,148,210, 7,182, - 1,232,200, 56, 25, 39,227,100,156,140,147,113, 50, 78,198,249, 95,221, 56, 48, 48, 48, 48, 48, 48, 48, 48, 48, 60, 16,176,121, -180, 24, 24, 24, 24, 24, 24, 24, 24, 30,182,208,138,141,141,221,164, 86,171, 43,121,186, 81,171,213,222, 73, 73, 73,105,199, 94, - 33, 3, 3,131,215,130,134, 16, 14,127,143,114, 22, 0, 80,202, 90,121, 12, 12, 12,255, 1,120,116,134, 87, 40, 20,137, 23, 46, - 92,168, 34, 8, 2,108, 54, 27,172, 86,171,227,215,100, 50,161,117,235,214,165,118,164,143,138,138,218, 45,145, 72, 42,148,230, - 30,155,205,118, 43, 53, 53,181,101, 9, 5,248,126, 0,137,132, 16,231, 99, 37,254, 2, 72, 49,155,205, 13, 74,226, 36,132, 36, -186,242,121,224, 18,255,151,200, 25, 20, 20,116,148,231,249, 56,119, 92,158,254, 11,130,112, 45, 61, 61,189, 57, 75,166, 15, 7, - 81, 81, 81,187,121,158, 47,117,250,188,115,231,142,199,244, 25, 19, 19,115,130,227,184,152, 82, 80, 74, 4, 65,184,116,231,206, -157,150,158,132,136,152,230,189, 8,155, 98,255, 9, 33, 73, 86,171,181,145,183,124, 84, 18,151,155, 52, 90, 34,167,179,200,226, -121,126, 86, 68, 68,196, 40,157, 78,103, 0, 64, 37, 18, 9, 13, 13, 13, 21,195, 6, 0,176, 90,173, 25, 57, 57, 57,181, 89, 74, -100, 96, 96,248, 79, 8, 45, 65, 16, 56,163,209,136,203,151, 47,195, 67,121,111,187,135,231, 85, 57,246,199,182, 8,255,136, 72, - 88,205,102,104,194,194, 29,220,105,231,207,194,106, 49,195,106, 50,161,124,227,166, 98, 37,134,154, 53,107, 74,188,112,198,205, -158, 61, 59,194,223,223, 31, 6,131, 1, 6,131, 1, 70,163, 17, 6,131, 1, 38,147, 9, 38,147, 9,102,179, 25,102,179, 25, 86, -171, 21, 70,163, 17,219,183,111,247, 22,246,184, 15, 63,252, 48, 34, 32, 32,192,193, 39,110, 34,167,200,107,177, 88, 96, 48, 24, -240,231,159,127,150,200,201,243,124, 92, 74, 74, 74,132, 76, 38, 3,165, 20,130, 32,184,115, 46, 44,134,138, 21, 43,154, 89, 18, -125,168,168,242,225,202,205, 17,129, 42, 5,172,130,128,238,117, 43, 58, 78, 92,251,106, 13,168,213, 6,193,106, 69,229,177, 67, -129, 34,147, 12,106,212,168, 81, 98,250,164,148,198,127,184,114,115,144,175,156,153,153,153,250,234,213,171,167,160,104,232,179, - 39,139, 79,156, 94,175,143, 16,195,224, 42,136, 56,142, 43,182,109,217,178, 5,221,187,119,247, 22,247,184,215, 94,123, 45,194, - 98,177,192,100, 50,193,104, 52,194, 98,177,192,106,181, 58, 54,155,205,230,216, 76, 38, 19, 14, 29, 58,228,171, 37,107,118,167, - 78,157, 70,108,222,188, 89,243,243,207, 63,107, 42, 84,168, 0,153, 76, 6,137, 68, 2,137, 68, 2,142,227,192,243, 60,158,120, -226, 9,194,146, 32, 3, 3,195,127, 70,104, 25,141,198,235,245,235,215,167,246,255,177, 10,133, 66,230, 82,128,198, 84,169, 82, -229,146,235,125,222,186, 20,253, 35, 34, 49,169, 92, 8, 0, 96,242,205, 44, 71, 5,241, 81,243,122,142,107,166, 38,231, 1, 0, - 84, 42, 21,136,115, 51,218, 3, 52, 26, 13, 58,117,234, 4,185, 92,142, 70,141, 26, 65, 42,149,186,221,100, 50, 25,164, 82,169, - 47,149, 3,252,252,252, 48,101,202, 20, 81, 36, 65,163, 84,224,229,230,141,160, 4,197, 23,103,175,192, 36, 80,240, 60,239,216, -124,225,148,201,100, 56,115,230, 12,120,158,135, 68, 34,113,252,138,255, 55,110,220,136,126,253,250,129,231,121,168, 84, 42,224, - 63, 52,207,200,163,130, 64,149, 2,195,150,252, 4, 0,184, 61,111,172,227,219, 29, 26, 61,217,113, 77,252, 11, 3, 64, 8,129, - 84, 42, 5,199,113,101,198,153,157,157,173, 31, 52,104,208, 94,127,127,255, 45,249,249,249,240, 34,224,112,251,246,109,240, 60, -239, 49,189,115, 28,135,185,115,231,226,234,213,171, 62,197,221, 96, 48,224,203, 47,191,132,205,102, 43,198, 43,254,119, 61,230, -163,200,154,222,185,115,231,161,155, 55,111, 14, 38,132,224,211, 79, 63,133, 76, 38, 67,215,174, 93, 17, 26, 26,138,173, 91,183, - 66, 38,147, 97,194,132, 9, 44,241, 49, 48, 48,148, 4, 41,128,122, 0,194,237,134,158, 2, 0, 65, 78,231, 51,236,191,225, 78, -251, 71,220,240, 52,182, 95, 35,158, 23,247, 77, 0,228,110,142,103, 1, 80,217, 55, 35,128,253, 0,106, 57, 61, 71,188, 15,158, -158,203, 3, 69,235, 15, 1,216, 9,160,173, 56,137,222,157, 59,119,158,114,178,172, 92,184,116,233, 82, 53, 81,243,216,187, 16, -101, 86,171,181,138,216,157, 40, 90,139, 58,118,236, 88, 98, 11,223,106, 54,223, 37, 64,220,105, 41,119,221, 21,158, 4,140,217, -108,198,128, 1, 3,138,190,132,135, 74,199,121,243, 65,187,193,100, 50,129,231,121, 84, 45, 23,142,247,186,212, 71, 19,106,129, -182,144,192,154,167, 69, 47, 63, 11, 46,212,104,128,165,183, 50,112, 51,191, 16, 60,207,251,196, 41, 8,130, 71,145, 37,145, 72, -176,100,201, 18, 12, 26, 52, 8, 18,137,196, 39, 62,134,178,135, 85, 16,220,166, 67, 79,105,214,151,239,228, 11,103,118,118,182, -190,123,247,238, 7, 21, 10,197,178,200,200,200,148,164,164, 36,175, 66,203, 85,252,184, 54, 42, 62,249,228, 19, 44, 92,184, 16, -237,218,181,243, 41,156, 70,163, 17,132, 16, 44, 93,186,244,174,115,211,166, 77,187,235,121, 37,113,218, 27, 72, 92, 76, 76,204, -232,223,127,255, 61, 64,188, 54, 44, 44, 12, 82,169, 20,181,107,215,134,191,191, 63,246,238,221, 11,155,205,230,115,190,100, 96, - 96,120,124,225, 78,139, 56,161,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220,191,127,255, 74, 66,200, 38,167, 50, -177,187,189,236,217,228,180,223,216, 69,244, 72, 1,132, 19, 66, 54,137,215, 59,239, 59, 29,239, 8, 64, 46,238, 79,154, 52,169, -214,172, 89,179,102, 76,156, 56,241,237,153, 51,103,202, 38, 77,154, 84,103,214,172, 89, 51,196,231,184, 11,135, 59,139, 86,137, -179, 10,139,221,136, 23, 47, 94,132, 55,255, 85, 74,105,137,165,165, 38, 44,220, 97,201,154, 26, 31,234, 56, 62, 37, 41,215, 81, -129, 45,106, 88, 9, 26,141, 6, 93,166,126,236,147,165,200,100, 50, 33, 61, 61,221, 97,101,240,182,249,202,169, 86, 41,177,253, -181,218,184,157, 37,199, 7, 7,178,177,249,228, 85, 72,165, 82, 60, 89,163, 54,158,146,249,227,221,120, 57, 94,187,114, 3, 22, - 31,125,122, 41,165,110, 5,150,248, 95,236, 66, 97, 66,235,159, 67,247,186, 21, 29, 86,167, 67,254, 29, 28,199,251,105,207, 56, -190,201, 27, 75, 62, 2, 0,180,107,240, 4,124,241,231,246,198,153,149,149,165,111,217,161,237, 46,155,222,244,221,208,161, 67, -175,239,216,177, 67,229, 83,243,206,141,208, 18,173,182,162,200,226,121, 30, 38,147,201,167,184,155, 76, 38,143,249, 67, 38,147, -149,218,162, 5, 0, 90,173,214,180, 97,195, 6, 44, 90,180, 8,161,161,161,232,220,185, 51,162,163,163,177,102,205, 26, 80, 74, - 49,118,236, 88,168, 84, 42,209,122,205, 18, 32, 3,195,127, 27, 37,105, 17,197,172, 89,179,102,184, 10, 25,231,125,103, 1,229, - 34,166,156,197, 90, 45, 47,245,255, 38, 87,241, 36, 62,151, 16,178,105,230,204,153,221,189,132, 35,195,147,208, 42,113,250,126, -163,209,120,189,110,221,186, 62,169, 9,157, 78,151,234, 77,108,184,107,213, 59, 91, 9,252,252,252,160, 9,240, 3,231, 99,185, -107,177, 88, 28, 66,101,219,182,109, 80,169, 84,232,218,181,235,125, 89,180,204,102, 51,228, 50, 41,184,176, 72, 12,155,183, 3, - 89, 5,122, 71, 5,179,243,218,117, 28, 79, 75,199,107,205, 58, 64,163, 74, 71,161,201,228,147,229, 77, 16,132,187, 68, 22,207, -243, 24, 48, 96,128,195,154,224,236,183, 2,214,117,248,143,193, 93,250,116, 61, 46,184, 88,170,238,133, 51, 43, 43, 75,223,189, -123,247,131, 54,189,233,187,228,228,228,131, 0,148, 77,154, 52, 41,181,208, 18, 5,150, 84, 42,197,220,185,115,177,112,225, 66, -199,121, 95,133,150,213,106, 45, 38,160,174, 92,185, 82,236, 89,174,194,174,164,110, 83, 74, 41, 37,132, 8, 0,132,196,196, 68, -199, 61, 81, 81, 81, 8, 10, 10,130, 32, 8, 16, 4, 1, 74,165, 18, 42,149, 10, 50,153,140, 37, 58, 6, 6,134,146,180,136,126, -226,196,137,111, 19, 66, 54,217, 45, 75,103, 75, 16, 84,238,208,216, 69,172,101,120, 40,187,186,187, 19, 91,206,255, 69, 76,154, - 52,169,150,155,112, 28,241, 40,180, 92,166,221, 47, 6,231,110,196,178,170,196, 74,170,200,252,130, 2,160,210,104, 32,145,112, - 32,132, 80,111, 92,102,179,217, 81,240,143, 26, 53,170, 68,191, 21, 95,253,169,204,102, 51, 56, 94,130, 59, 81, 9,176,113,123, - 28,247,138, 27,199, 75,113, 51,170, 26, 36, 23, 79, 64,234, 99,133,235,106,209, 26, 59,118, 44,190,252,242, 75,112, 28,231,120, - 39, 60,207,163,114,229,202,184,126,253, 58,203,113,143,136,200,242,116,220,102, 19,124,182,194,184,187, 46, 43, 43, 75,223,191, -127,255, 93,121,121,121,223,213,172, 89,243, 10,138,166, 63,224,124,229,227,121,190,152,192, 18, 69,214,130, 5, 11,138,137, 34, -139,197,226, 83, 67,192, 98,177,220, 37,120,230,204,153, 83,236, 23, 0,154, 55,111,238,147,101, 24, 0,229, 56,142,202,100, 50, -116,234,212, 9,117,234,212,193,207, 63,255, 12, 65, 16, 48,102,204, 24,168, 84, 42,204,159, 63, 31, 86,171, 21,179,103,207,102, - 22, 45, 6, 6,134,146,180,136,113,230,204,153,103,103,206,156,233,176, 44,185, 90,180, 60, 81,218, 69, 85,184, 40,210, 80,228, -107,117,164,132,186,186,187, 39, 1,230,124,108,214,172, 89, 51,220,132,195,181,187,242,225,175,117,152,122,238, 12, 62,110, 81, - 31, 64,241,238,194, 37, 79, 84,131,198, 79, 3,141,191, 31,250,111,220, 3, 0,246, 66,127,162, 79, 22, 45, 81,104,101,101,101, -149, 40,178, 74, 99,209,226,228, 60,214,198,229,128,202,165,224, 77,150, 98, 66, 75,194, 75,113, 59, 52, 1,156, 84, 6,222,102, -245,137,147, 82,122, 87, 87,225,240,225,195, 65, 8,113,140, 16,171, 91,183,174, 51, 23,171,121, 30,118,250, 60,250, 21, 46,172, - 27, 13, 0,104,169,213, 58,190,197,135,117,255, 30,223, 49,239,204, 46,135,245,113, 42,222,188, 39,206,172,172, 44,125,147,234, -181, 14,202, 66, 2,191,187,117,235,214, 65, 0,220,192,129, 3,131,234,214,173,235, 83,158, 20, 7, 87,184,138, 44,103, 75,150, -248,107,177, 88,124,138,187,232, 43,229, 13, 98, 55,162,183, 52, 79, 41,165, 33, 33, 33,224, 56, 14, 1, 1, 1,240,243,243,115, -140,184, 85, 42,149, 80,171,213, 14,255, 78, 31,133, 27, 3, 3,195,127, 23,193,162,208,177,139,165, 98,150, 38, 74,105,119,103, - 49,228,169, 11,209,110,129,218,237,205,176,102, 23,104,110, 33, 90,214, 92,202,228, 77,158, 68, 26, 47, 42, 72,231,223,232,232, -232,223,252,252,252, 18,124,141,125,105, 38, 47,181, 89,204,119, 89,182, 8, 33,240,243,247,131,202, 79, 3,149,191,159, 71,171, - 87, 73, 66, 75,180, 20,137,149,206,178,101,203,224,231,231,135,103,159,125,182,212, 62, 90, 14,161, 37,227,176, 85,241, 39, 36, -114,190,152,200,226,121, 30, 18,169, 20,169,126,209,224,164, 82,240, 86,223,172,100,121,121,121,224,121, 30,239,189,247,158,163, - 5,239, 44,178, 74, 19,103,134, 7, 3,106,179,220,101,133,242,100,125,189, 87, 78,209,146, 37, 11, 9,252,174, 90,181,106, 14, - 75,150, 90,173, 22, 71,155,122, 5,199,113,110, 69,150,235, 8, 65,158,231,139,210,178,151,209,145,206, 22,173,153, 51,103, 58, -120,157, 45, 89, 34, 74,147,143,196,176,238,218,181, 11,199,143, 31,199,168, 81,163,160, 82,169,176,112,225, 66, 88,173, 86, 76, -155, 54, 13, 42,149, 10,114,185,156, 37, 62, 6, 6,102,205, 42,166, 69, 92,144,225,226, 7, 69, 92, 68, 77,134, 59,129,229,220, - 77,232,244,223,226,134,215,228,210,165,232,122, 92,252,205,154, 57,115,230, 14,209,146,229,116,188, 88, 56,188, 90,180, 20, 10, - 69,194,229,203,151, 29,147,149,150,244,107, 50,153,208,174, 93, 59,159, 45, 99,226,168, 67,158,151, 20, 19, 22,106,127, 63,168, - 3,252,161,242,243,115, 21, 28,196, 91, 33, 46,182,136,157,133,214,251,239,191, 15,158,231,241,229,151, 95, 2, 0,222,124,243, - 77,159,125,180, 68, 78,216, 8,146,232, 95,168, 63,175, 31, 76,223, 91,144,182,239, 20,120,158, 71, 68,211,167, 32, 52,233, 7, -157,202, 15,188,205,234,243,168,195,236,236,108, 92,191,126, 29, 18,137, 4,175,191,254,122,177,185,142, 92, 71,178,109,219,182, -141, 89,180,254, 9,161, 37, 88,125, 18, 85,165,177, 58, 58,115,138, 62, 89,121,121,121,223,221,186,117,235, 16, 0,110,232,208, -161, 65,106,181, 26, 95,127,253,181, 14,128,124,205,154, 53, 42,111,162, 72, 76, 55,222, 68,150, 84, 42, 45, 74,203,190,196,157, - 22,159,178,196,155, 99,188, 47,105, 94, 12, 43, 33, 4, 54,155, 13, 42,149,170,152, 37, 75,169, 84, 66,161, 80,176,132,199,192, -192,224, 13, 71, 74,113,109, 99, 39,209,116,228, 30,121,143,148, 85,192,121, 79, 66,195,104, 52,226,252,249,243,190,242,248, 60, -121,105,185, 70, 79, 96,106,114, 30, 8, 33,248,162,121, 77,104, 2,252,160,214,104,208,247,231, 93,142,130,251,204,140, 55,161, -208,248, 33,166, 85,103,159, 10,114,177,235,208, 89,104,229,230,230, 66, 42,149, 98,250,244,233,224, 56, 14,179,103,207, 70,108, -108, 44,238,220,185,131, 53,107,214,248,100,209,146,216, 36,136,126,166, 58,212,195, 3, 17,240, 76,107, 4,119,122, 31,201, 38, - 30,251, 13,106,180, 54,156,131,124,235, 2,152, 4,155,207, 35,176,172, 86, 43,118,237,218,229,234,240, 14, 74,169, 99,214,125, -139,197, 2,179,217,140,217,179,103,131,173, 80,242,240, 17,221,116, 44,194, 27,189, 4, 0,216, 56,243, 57,199,241,247,206,252, -157, 62,231,126, 95,180, 0, 64,181, 10,157, 75,197,153,149,149,165,127,178, 93,243,221, 6, 65,250,109,237,218,181,139, 89,178, -148, 74, 37,177,239,251, 36,174, 57,142,131, 68, 34,185,171,187,208,147,216,242,197, 71,203,106,181, 58, 38, 18, 45,201,159,241, - 94, 44, 90,207, 61,247, 28,162,163,163, 29,150,172,169, 83,167, 66,165, 82, 97,210,164, 73,176, 88, 44, 88,176, 96, 1, 75,124, - 12, 12, 12,255,132, 40,123,224,112, 91,146, 26, 12,134, 27,117,234,212,129,135,115,177, 74,165, 82,234, 82, 72,199, 84,169, 82, -229,146,107, 23, 34, 33,164, 35,165,116,187,187, 66,157, 16, 2,255, 0,127, 40,253, 52, 80,187, 88,177,148,254, 1, 80,248,249, -129,147, 73,221, 85, 8,119,113,138,190, 37,206, 66, 75,220,242,242,242, 32,149, 74,177,104,209, 34, 4, 4, 4,192,104, 52,122, -229, 20, 43, 29,137, 68, 2,221,237, 2, 92,152,177, 29,114,229,126, 84,234, 60, 8,209, 82, 21,100,123,215, 67,111,179,148, 56, - 97,169, 59,206, 42, 85,170, 96,242,228,201,119, 77,235,224, 9,177,177,177, 94,227,126,191, 96,156,238, 57, 75, 26, 21, 43, 66, -160, 54,119,215,185,229, 20, 45, 89, 6, 65,250,237,245,235,215, 69, 75, 86,160, 90,173,198,231,159,127,174, 3,192, 77,155, 54, - 77, 29, 31, 31, 47,241, 37, 45, 73, 36, 18,204,155, 55,207,173, 79,150, 59,209, 85,154,124,228,124,111,155, 54,109,220, 78, 88, -234, 78,188,185,227, 20,195, 26, 26, 26,234,176,100,217,108, 54,199,104, 67,113,246,121, 79,141, 10,150, 62, 25, 39,227,252,239, -112, 62,174,112, 91,203,167,164,164, 60,233,233,134, 74,149, 42, 93,190,124,249,114,101,113, 41, 14,123,193, 41, 51, 24, 12, 85, -154, 55,111,238,213,180, 35, 8, 2, 20, 10, 5, 40,165,104, 63,121, 22, 8, 7,112, 40, 94,137, 69,180,232, 0,137,132,135, 80, -180,212,135,215, 81,135,122,189,190, 88,229,224,110, 43, 44, 44,132,209,104,244,121, 54,111,131,193, 80,108, 10, 6, 66, 5,220, -252, 99,245, 93,163, 15,197,205, 87,191, 29,165, 82, 89,172,235,167, 36,120,155,147,140,161,236, 33, 14, 88, 0,128,170,205,187, - 66, 16,108,160, 54, 91,177,101,146,170, 39, 60, 9,129,218, 96,182,232, 96, 52, 26,189,153, 29, 73,102,102,166,190,127,255,254, -187, 0,124,211,171, 87,175, 75, 40, 26,241, 66,253,252,252, 20, 82,169, 84, 0,144, 13,128,230,228,228, 4, 38, 39, 39, 11, 6, -131,161,188,183,112,110,222,188, 25,231,207,159, 71,171, 86,173,138, 45, 7, 37, 90, 69,157,103,119,247, 37,125,138,221,229,238, -102,132,247, 36,228,124,133, 68, 34, 65, 96, 96, 32,100, 50, 25,166, 79,159, 14,153, 76, 6,181, 90, 13, 0, 88,176, 96,129, 99, -242, 85, 6, 6, 6,134,255,140,208,242, 86,110,150,208,173, 88, 98, 23,162,213,106, 77,138,143,143, 47,213,195,108, 54, 91,154, - 23,225,150,180,102,205, 26,153,179, 21,194,219, 47,165, 52,205, 75,101,155,180,113,227, 70,153, 59,235,134,167, 5,166,189,113, -218,108,182,164, 10, 21, 42,120,180,152,184,131,197, 98, 73,102, 73,244,225,193,102,179,149,144, 62,223,185,215,244,121,165,106, -213,170,201, 65, 65, 65,191, 70, 70, 70,102,237,219,183, 47,180,113,227,198,161,206,215, 52,110,220, 56,218,229, 54, 19, 60,175, -115, 8, 66, 72, 82,175, 94,189,220,166,121, 81, 52,185, 73,159, 73,222,210,252,225,195,135,101,206,247,123,226,119,202, 71, 73, - 62, 8,215,155,245,235,215,231,156,121, 60,165,125,139,197,146,193, 82, 33, 3, 3,195,127, 94,104,233,245,250,219,117,234,212, -177,122, 56,119,171,164,123, 51, 51, 51, 27,149,117, 4,204,102,115,243,127, 3,103, 70, 70, 70, 35,150,220, 30,109, 60,136,111, -148,150,150,214,164,172, 57,173, 86,107,153,167, 79,139,197,210,252, 65,188,211,172,172,172,102, 44,101, 49, 48, 48, 48,161, 85, - 10,248, 58,141, 3, 3, 3, 3, 3, 3, 3, 3,195,127, 29, 28,123, 5, 12, 12, 12, 12, 12, 12, 12, 12, 15, 6, 4, 69,171, 84, -223,133,210,140, 38, 32,132,116, 44,237,131,189,241, 51, 78,198,201, 56, 25, 39,227,100,156,140,243,241,227,244,198,253,216,141, -102, 20, 71, 83, 61,136, 13, 64, 71,198,201, 56, 25, 39,227,100,156,140,147,113, 50,206,255,234,198,186, 14, 25, 24, 24, 24, 24, - 24, 24, 24, 30, 16,120,246, 10,254, 25, 16, 66, 36,148, 82, 91, 25, 82, 6, 3,240,180, 96,156, 9, 64,206,189, 4, 19,128,204, -190,137, 19, 29, 89, 0,152,237,155, 15, 83,215, 79,225, 82, 82,130,107, 81,155,180, 49, 37, 68, 42, 8, 56, 89,190,124,185, 19, -192,147, 38, 0,240,139,170, 81,195, 79,163,234,104, 52,155, 18, 20, 82,249,249, 92,109,225, 54, 67,218,165, 27, 44,133, 48, 48, -252, 35,229, 82, 15, 0, 83,236,121,127, 38,165,116, 53,123, 43, 12, 12, 15, 72,104,249,251,251, 31,229, 56, 46,206,219,252, 60, - 78, 25, 20, 54,155, 45, 41, 59, 59,187,145,143, 25,154, 7,208,223,207,207,175,157, 84, 42,109, 1, 0, 22,139,101, 95, 97, 97, -225, 14, 0,107, 40,165,214,123, 44, 40, 2, 0, 12, 0, 48,196,126,232, 7, 0,171, 41,165,249,247,200, 87, 39, 48, 48,112,157, - 84, 42,165,153,153,153, 77, 1, 32, 52, 52,244,160,197, 98, 33,249,249,249,125, 41,165,167, 75,201,199, 73,165,210,185,173, 90, -181,106, 77, 8,249,134, 82,186,168,140,190,165,130,227, 56,183, 2, 69, 16,132, 10,247,192, 39, 3, 16,184,104,209,162,208, 21, - 43, 86,212, 79, 74, 74,170, 13, 0,113,113,113,103,134, 14, 29,122,226,229,151, 95,206, 2,144,103, 23, 92, 30,145,146, 18, 92, - 43, 61,245,218,168,180,244,243, 3, 0, 32, 42,186,246,106,137,132,147,197,198, 30, 63,160, 14, 27, 18, 86,181, 90,197,151,126, -252,122,145,172, 66, 66, 57,252,185,255,120,189,151, 95,121,187,150, 50,178,234, 39, 76,108, 61, 60, 4, 4, 4, 28,229, 56, 46, -174,164, 60,238, 46,207,219,108,182,164,172,172,172, 70,158, 56,121,158,143, 43,169,188,112,119, 76, 16,132,107, 25, 25, 25,110, -167,154, 8, 12, 12, 60,192,243,124,130,175, 92,226,175,213,106, 77,242, 52,181, 76, 96, 96,224, 81,137, 68, 18, 87, 82, 60,221, -157, 19, 4,225, 90,122,122,186,167,112,222, 21,247,178, 8,231,189,112,150, 20, 78,177, 60, 2,176, 32, 52, 52,244,137,172,172, -172,255, 1,120, 59, 63, 63,191,174, 68, 34, 65, 72, 72,200,219,132,144,171,129,129,129, 95,229,229,229,237, 7,240, 10,165, 84, - 96, 57,134,129,161,140,132, 22,199,113,113,201,201,201, 17, 26,141, 6,192,223,235,241,137,139, 73, 11,130, 0, 74,169,227,215, -106,181,162,122,245,234,190,138,141,218, 1, 1, 1,107, 39, 77,154, 84,190,127,255,254,114,113,169,153,148,148,148, 42,235,214, -173,251,223,244,233,211,223, 39,132,244,163,148,158,241, 85,188, 0,232, 0, 96,120,253,250,245,159,158, 58,117,170,172,125,251, -246,176,217,108,248,245,215, 95, 91, 77,155, 54,109, 17, 33,100, 61,128,239, 0,252,225,107, 97, 65, 8,105, 25, 21, 21,181,114, -239,222,189,209,215,175, 95,183,245,239,223,127, 21, 0, 28, 61,122, 52,209,102,179,145,166, 77,155,110, 38,132, 12,166,148,238, - 45,197, 59,127,122,220,184,113, 3,199,142, 29, 27,241,236,179,207,142, 0,176,200,254, 44, 98,127,207,165, 93,224,208, 97,201, -162,148,202, 74,184, 46,170, 20,150, 45,205,245,235,215,131,155, 55,111, 62, 58, 61, 61,253, 53,103,222,180,180, 52, 28, 59,118, -204, 60, 99,198,140,121,251,247,239, 95,156,144,144,144, 3, 64,235,137,136,218,164,141,211,210,207, 15,104,221,108, 81, 32, 0, -172,217, 56,122,208,225, 19, 25,254,155,126, 95,250, 63,185, 82,102, 92,241,197, 60, 89,229, 74, 21,176,243,232, 21, 28, 58,159, - 77,106,183,236,206,231,109, 90,222, 9,192, 82,150, 61, 31, 14, 36, 18, 73,108, 82, 82, 82,132, 90,173,118,187,112,188,139, 95, -134, 56, 1, 42,170, 84,169,226,185, 96,225,249,184,228,228,228, 8,165, 82,233, 40, 59, 92,203, 12,177, 92,113,164, 21, 74, 81, -181,106, 85,115, 9,101, 82,252,173, 91,183, 34,212,106,181,131,199, 93,248, 92, 5, 71,213,170, 85, 75,138,123,177,112,250,194, - 73, 41, 69,229,202,149,109,222,226, 46,174,128,225, 45,222, 34,103, 66, 66, 2, 45, 13,167, 47,225,172, 88,177,162,217,203,231, - 95,112,233,210,165,177,229,202,149, 67,229,202,149,247, 63,241,196, 19, 1, 26,141, 6,191,255,254, 59,106,212,168, 81, 43, 32, - 32,224,208,154, 53,107,164, 19, 38, 76,168,247,237,183,223, 2,192,203, 44,199, 48, 48,148,145,208, 34,132, 64,163,209, 96,213, -170, 85, 30,151,227,112,254, 95,190,124,121,159, 30, 72, 8,105,148,144,144,176,107,239,222,189,170,232,232,191, 39,196, 54,153, - 76, 8, 14, 14,198,152, 49, 99,228, 61,122,244,168,220,185,115,231,131,132,144, 54,148,210,163, 94,248,158, 14, 15, 15,255,244, -189,247,222,139, 28, 56,112, 32, 66, 67,139, 77,186,141,254,253,251,163,111,223,190,178, 75,151, 46, 13, 90,182,108,217,160, 37, - 75,150,164, 18, 66, 94,166,148,174, 47,137, 87,173, 86,247,170, 84,169,210,231,123,247,238,141,136,136,136, 64, 98, 98, 34, 55, - 97,194,132,202, 85,170, 84, 81,197,197,197,113,119,238,220,193,207, 63,255, 28, 59,120,240,224,181,114,185,252, 37,147,201,180, -193,135,184,203, 67, 67, 67,223,126,233,165,151,194,242,243,243,173,199,142, 29,187, 44, 30,151,203,229,211,154, 53,107,214,152, - 16,242, 61,165,244,171,123,177,100,217,173,118,174,107,153, 88,196,243, 62, 90,182,228, 39, 79,158, 12,105,214,172,217,122,163, -209,216, 96,212,168, 81,183,102,204,152,161, 10, 8, 8, 8, 0, 64,242,243,243,115,166, 76,153, 98,154, 63,127,254, 91, 53,106, -212,232,112,224,192,129,167,235,213,171,103,177,139,184,187,133, 22, 33,142,240,220, 78,206,192,174,253,130,124,242,164, 55,227, - 62,250, 48,225,230,145,115,183, 5, 94, 21,128, 95,118,159, 69, 90, 86, 33,126, 59,112, 14, 81,161,254, 68,166,144,214, 10,138, -171,213, 38, 47,249,220,110,202, 86,214,126,224, 32,132, 64,173, 86,227,151, 95,126,185,107,233, 42,119,203, 90,241, 60,143,160, -160, 32,175,171, 27, 40,149, 74,108,219,182,205,237,218,139,238,150,244, 9, 12, 12, 4, 74, 88, 84,155, 16, 2,165, 82,137,125, -251,246,129,227, 56,183, 75, 3,185, 30,211,104, 52,224, 74, 88,235, 74,228,220,189,123,183, 87, 46,241,215,207,207, 15, 0, 36, - 37,102, 74,133, 2,123,247,238,245, 24,103,215,255,126,246,245, 94,189,113,238,219,183,175,216,210, 95,174, 75,130, 57,239,107, - 52, 26, 71, 3,206, 99, 43, 45, 56,184,105, 92, 92, 28, 14, 31, 62,140, 53,107,214,132,212,170, 85, 11, 87,174, 92, 1, 33, 4, - 51,102,204, 32, 53,107,214,148,166,166,166,162, 85,171, 86,248,233,167,159,154,179,220,194,240, 15, 66, 10,160, 30,128,112, 20, -173, 66, 83, 0, 32,200, 94,247,200, 1,100, 1, 80,217, 55, 35,128, 66, 0, 97,246,123, 51,237,101,139,179, 64,200, 64,241,197, -167, 27,219,185,197, 21, 42,194,157,206,137,207,112,221,119,253,117,203,205, 3,192,230,205,155,197,202,172,109,183,110,221,118, - 21,139,153, 15, 34, 75, 92,167,204, 53, 79,187, 89, 96, 86,161,209,104,214, 29, 60,120, 80, 21, 30,254,119, 28,140, 70, 35, 10, - 10, 10, 80, 88, 88,136,130,130, 2,248,251,251, 99,205,154, 53,170, 14, 29, 58,172, 35,132, 84,161,148, 26, 61,113, 2,152,119, -231,206,157, 72,171,213, 10,185, 92,238,169, 37,140,234,213,171,227,237,183,223, 70,151, 46, 93,162,218,181,107, 55, 15,192,250, - 18, 56,161, 86,171, 63, 63,118,236, 88,132, 90,173,198,229,203,151,145,148,148,132, 55,222,120,163,156, 32, 8,184,125,251, 54, -174, 92,185,130,228,228,100, 44, 91,182, 44,162,119,239,222,159, 3,216, 80, 82,220,237, 24,245,218,107,175, 85, 11, 14, 14,230, - 62,254,248,227, 92,173, 86,251,153,253,248,228,133, 11, 23, 62,211,186,117,235,136,145, 35, 71, 82, 66,200, 10, 74,233, 93,194, -197,133,211,157, 37,203, 6,224,130,203,109,213, 93, 44, 93, 81,246, 68,152,235,134,147, 0, 8,236,220,185,243,235, 70,163,177, -193,222,189,123,175,182,104,209, 34, 30,192, 29, 49,241, 5, 6, 6,106,230,205,155, 23,217,189,123,247, 75,237,219,183,111,208, -185,115,231,215, 51, 50, 50,102,216,207, 83, 87, 78, 65,192,201,168,232,218,171,119, 31,120,121,192,206,125, 38,217,155,175,188, -127,171,124,185, 10,121, 39, 47,103,219,206, 93,203, 64,129,222,138, 62,237,139, 22, 48,111, 90,187, 60, 62, 93,181, 23, 99, 94, -125, 71,186,126,245,242,190, 87, 41, 52, 0, 54,151,240, 62,239, 11,140,243,111,177, 33, 8, 2,164, 82, 41,158,122,234, 41, 16, - 66,238, 90,203, 83, 42,149,226,192,129, 3,104,223,190, 61,164, 82, 41,158,123,238, 57,159, 56,121,158, 71,231,206,157, 29,235, - 40, 58,243,185,138, 6,119,154,192, 53,238,148, 82,240, 60, 15,142,227, 60, 46,164,237,202,233,173, 92, 18,195, 89, 18,151,243, - 57,111,225, 20,173, 73,190,138, 44, 95, 57,197,112,242, 60,143,230,205,155,227,196,137, 19, 37,138, 46,119,250,210, 53,238, 57, - 57, 57,195,170, 84,169,178,123,209,162, 69, 33, 0,144,149,149,229, 88,240, 94, 34,145,224,226,197,139, 48,153, 76,248,224,131, - 15,204,249,249,249, 35, 89, 62, 98,156, 15,146,179, 36, 45, 2,160,245,164, 73,147, 26,205,154, 53,107, 70,179,102,205,126,220, -191,127,255, 74, 66,200, 38, 74,105,119,241,119,210,164, 73,181,102,205,154, 53, 99,226,196,137,111,207,156, 57,243, 44, 33,100, - 19, 0,184,238,219,195,223,221, 69,196,133,139, 60,246, 60, 87,236, 90,119,251,174,191, 30,184,255,182,104,117,235,214,141,216, - 35, 73,156, 11, 53, 95,133,150, 47,107,247,241, 60, 63,118,198,140, 25,145, 37,137,172,194,194, 66,164,164,164, 32, 62, 62, 30, -207, 61,247, 92,228,162, 69,139,198, 2,152, 83, 2,173, 76, 34,145,224,240,225,195, 72, 79, 79, 71,157, 58,117,144,144,144, 80, -236,130,191,254,250, 11,191,254,250, 43,114,115,115,209,176, 97, 67,160,200,255,200, 45,234,213,171,247, 65,245,234,213, 59,119, -238,220,217,170, 82,169,112,242,228, 73, 52,104,208, 0,171, 86,173, 66,249,242,229,161, 86,171,113,233,210, 37,212,169, 83, 7, -187,118,237, 66,120,120, 56,234,215,175,111,109,216,176,225,158,236,236,236, 29, 55,110,220,248,192, 67,203, 89, 22, 27, 27,251, -254,139, 47,190, 40, 79, 73, 73, 17,190,251,238,187,189,148,210,189,132,144,177,239,188,243,206,136, 46, 93,186, 68, 28, 63,126, - 60,239,200,145, 35,135,220,137, 44, 31, 45, 89, 86,215, 74,201,102,179, 25,245,122,189,201,104, 52, 90, 56,142,187, 65, 8, 49, -217,108, 54, 79,125, 62,202,225,195,135, 87,204,204,204, 28,243,234,171,175, 94,183,139,172,139, 40,114,128, 7, 0, 88,173, 86, - 99, 97, 97, 97,126,179,102,205,226, 7, 15, 30,124,117,229,202,149, 99,134, 15, 31,190,230,187,239,190, 43, 4,160,119, 37, 44, - 95,190,220, 9,137,132,147,105, 11, 66,174,173, 93,243,213,107,191,110, 28, 91,238,246,237,228,202,161, 97,225, 90,153, 95,120, -202,154, 31,190, 61, 10,192,148,146,145,143,211,127,165, 66, 42,149,224,252,237, 60,180,126,178,191,244,234,229, 15, 91,138, 66, -139,225,129,130,138,139, 80,239,220,185,179, 68,139,214,129, 3, 7, 32,149, 74,161, 82,169, 48,127,254,252, 18, 73, 69, 97, 32, - 90,139,188,137, 25,142,227, 74, 44, 71, 68,177, 33, 46,244,238,186,125,246,217,103,120,245,213, 87,139, 61,195, 46, 54,136, 55, - 78, 79,225,139,175, 80, 1,233,105,105,197,142,249,178, 40,189,205,102,131, 84, 42,197,151, 95,126,137,238,221,187, 99,211,166, - 77, 37,254, 62,245,212, 83,224, 56,142,250,242, 62,155, 55,111, 14,179,217,236, 8,243,197,139, 23,221,242, 46, 89,178,196,155, - 37,179, 7,128, 41, 13, 26, 52, 8,104,215,174, 29,118,239,222,141,190,125,251, 26,205,102,243,101,123,157, 80,117,209,162, 69, -242, 99,199,142, 33, 52, 52, 84,122,235,214,173,111, 8, 33,204, 65,158,225,129,194,157, 22, 17,235,188, 89,179,102,205,112, 21, - 49,206, 16,207, 19, 66, 54,205,156, 57,179,187,179, 40,114,222,119,178, 58, 57,139,184, 90,206, 22, 41,103, 17,229, 73, 64,185, -212,183,206,215,103,184, 21, 90,246,136,181,117,182, 2,137,133,175, 55,145,229,169,229,232,138,192,192,192,174,125,250,244,113, -136, 28,131,193,224, 16, 88,162,200, 18,247, 47, 93,186,132, 70,141, 26,201, 2, 3, 3,187,122, 17, 90,162,136, 67, 76, 76, 12, - 50, 51, 51,113,230,204, 25,196,199,199,195, 98,177, 96,203,150, 45,200,203,203,131, 84, 42,133, 76, 38,131,217, 92,178,203, 66, -245,234,213,159, 90,177, 98, 69,163,229,203,151,231,136, 45,186, 31,126,248, 1,148, 82,132,135,135, 67,167,211, 33, 45, 45, 13, - 59,118,236,128,213,106,133,159,159, 31, 18, 19, 19,229,189,122,245,106, 57,101,202, 20, 41,128, 15, 60, 80, 55,239,219,183,111, - 96, 64, 64, 0, 94,121,229, 21,106, 54,155,103, 18, 66,154,247,237,219,247,253,151, 95,126, 57,244,198,141, 27,166,231,159,127, -254,176,217,108,254,216, 94, 8, 74, 41,165, 22, 47, 45, 10,143,150, 44,139,197, 34,190,211,235,133,133,133, 8, 11, 11,139,247, -226,195, 5, 0,178,125,251,246, 53, 7, 32,153, 54,109,154, 18, 64,154,179,200, 50,153, 76, 40, 44, 44,132, 86,171,181,228,229, -229,165,143, 31, 63,222,186,114,229, 74,137,253,158,243,238,132, 22,240,164,169,102, 77,141,156, 82,201, 59, 75,151, 46,245,235, -210,165, 11,231,231,231,135,130,130,130,128,223,126,255,221,175, 67,187,150,137, 51,102,125,180, 53, 32,174, 78,218,190,147,215, -144,156,154, 7,147,197,130,196,232,192, 34,123, 24,195, 3,135,125, 32,139,195,162,229, 44, 42,118,239,222,141, 39,159,124,210, -145,215,101, 50, 89, 49,203,151, 55, 78,158,231,241,228,147, 79,222,101,225,217,185,115,167, 91,235,147, 55, 56,139, 34, 87,113, -228, 78,128,113, 28, 7,111,189,207,162, 53,207,157,216,114,182,234,187,136, 55,111,173,125,240, 60,143,151, 95,126, 25, 82,169, - 20, 19, 38, 76, 0,207,243,168, 95,191, 62,120,158, 71,179,102,205, 32,149, 74,209,190,125,251, 82,199,253,224,193,131,104,208, -160,129, 35, 76,245,235,215, 71,227,198,141,193,243, 60, 90,181,106, 5,169, 84,138,206,157, 59,251,194,249,118, 65, 65, 65, 93, - 63, 63, 63, 92,186,116, 9, 18,137, 4,132,144, 43,148,210,186, 0,240,226,139, 47, 94,213,233,116, 21, 13, 6, 3, 94,124,241, - 69, 98, 50,153,234, 76,152, 48,225, 29, 0, 76,104, 49, 60, 48,184,106, 17, 39,232, 39, 78,156,248, 54, 33,100,147,104,161,114, -181, 60,185,219,119, 83, 54,137, 98, 72,236,218,107,236, 34,226,196,110,191,110, 37,220,107,114, 17, 86,174, 93,135, 71,124,182, -104,137,133,175,175, 66,203, 27, 12, 6, 67,189,136,136, 8,143, 34,203,249,215,100, 50, 33, 33, 33, 1, 6,131,161, 94,105, 43, -141,232,232,104,152,205,102,124,245,213, 87,144,201,100,144,201,254,214, 23, 38, 83,201,198,162,115,231,206, 93, 63,120,240, 96, -131,134, 13, 27, 6,255,244,211, 79, 25,109,218,180, 9,239,210,165, 11, 84, 42, 21,244,122, 61, 44, 22, 11,154, 54,109,138,234, -213,171, 35, 41, 41, 9,191,253,246, 91,102,149, 42, 85,194, 14, 29, 58, 36,164,166,166,222, 44,129,186, 83,135, 14, 29, 64, 8, -193,239,191,255,158, 73, 41, 61,162, 84, 42,127,253,240,195, 15,131, 77, 38,147, 48,116,232,208, 91,217,217,217,175, 2, 48, 43, - 20,138,133,157, 59,119,110, 38,145, 72,190,183,217,108,243, 75,155, 80, 93,223,173, 86,171,133, 82,169,244,101, 42, 9,105,118, -118,118,109, 0,208,104, 52, 33, 0,174, 58, 82,184, 94, 95, 76, 12,155, 76, 38, 67, 72, 72,136, 6, 0,236,247, 72, 61,124,143, -112,181, 90,189,246,230,205,107,254,206,254,115, 65, 65, 65, 24, 50,120, 48,215,162,121,115,121,221,122,245, 58,191,251,201,242, - 85, 49,161, 1,166,196,152, 80, 88,108, 22,108,223,186, 69,160,130,101, 43, 43,118, 30,142,208, 18,197,134,171, 69, 75, 42,149, - 98,215,174, 93,119, 29,147,201,100,248,226,139, 47,124, 18, 6,162,168,242,212,117,230,210,213, 69,188, 9, 24,169, 84, 10,137, - 68,130, 47,191,252, 18,130, 32,224,181,215, 94, 43,214,157,232,204,239, 99, 23,136,227,158,234,239, 11, 0, 76, 72,154,171,112, -220,239, 26, 94,251, 61, 62, 89,201, 22, 45, 90,228,147, 69,171, 91,183,110, 94,133,171,115, 15,131,115,184, 78,156, 56,225,150, -119,233,210,165, 94,223,167,205,102,195,230,205,155, 29, 34, 85,196,123,239,189,247, 98, 92, 92, 92,228,158, 61,123,144,154,154, - 10,173, 86,139,194,194, 66, 52,109,218, 52,177, 99,199,142, 39, 83, 83, 83,111,156, 59,119,174, 15,203, 61, 12, 15,209,162,101, -156, 57,115,230,217,153, 51,103,186,181, 88,185, 90,150, 74,178, 60, 57, 9,172, 35,176,119, 25, 78,156, 56,241,109, 20,185,213, - 28,241,225, 94,185,107,215, 97,137,134, 32, 23, 21, 57,197, 93,225,235, 75,247,161,143,230,116,158, 16, 2,131,193,224, 86, 96, - 57,139, 3,179,217,140,236,236,108,216,108,182,123,158,235,203, 93, 75,214,155,208, 58,115,230,204,179, 35, 70,140, 72, 9, 12, - 12,172,155,145,145,145, 46, 8, 66,251, 3, 7, 14,132,243, 60,143,128,128, 0, 4, 4, 4,224,215, 95,127,133, 90,173,198,203, - 47,191,156,110,179,217,118,251,251,251,135,234,245,250, 83,169,169,169,239,122, 84, 48, 82,105,231, 86,173, 90,225,216,177, 99, -200,201,201,217, 70, 8,169, 63,114,228,200, 39,203,149, 43, 71, 62,252,240, 67,195, 95,127,253, 53, 31, 64,186, 70,163, 89,177, - 98,197,138,118, 13, 27, 54,244, 31, 58,116, 40, 8, 33, 75, 41,165, 6, 95,227,172,213,106,139, 9,172,252,252,124, 20, 20, 20, - 64,163,209, 88,125,124,103, 82, 20,249, 90,137,254, 86,142,111, 99,183,102,137,223,135,242, 60, 79,139, 46,161, 82, 79,124, 26, -141,102,218,242,229,203, 85,174,131, 20,108, 54, 27,210,210,210, 16, 16, 16,128,247,222,125, 87, 54,245,141,145, 13, 36,126,145, - 7, 56,142,192,100,166,185, 84, 48,109,209,166, 13,220,195,138,157,135, 3, 81, 24,244,236,217,243,174,238, 66,153, 76,134,109, -219,182,161,119,239,222,142,134, 75,195,134, 13,189, 54,174, 68, 97,208,163, 71, 15,135,101,104,203,150, 45,110,187,253, 68,139, -148, 47,130, 80,188,118,220,184,113,224,121, 30,159,126,250, 41, 94,127,253,117,112, 28,135,185,115,231,130,227, 56, 76,158, 60, -217,103,145,233, 44, 96,110,124, 84,244, 27,247,122, 62,178,150, 68, 2, 0,252, 3, 2,196, 8,149,170,236,225,121,222, 97,201, -170, 87,175, 30,164, 82, 41,154, 53,107, 6,158,231, 29,150,172,174, 93,187, 58,191, 71,234, 11, 39,207,243,184,124,249,178, 35, -204,205,154, 53, 43,102,201,226,121, 30,221,186,117,243, 37,152, 51,130,130,130,166, 84,175, 94,189,198,188,121,243,164, 18,137, - 4, 29, 58,116,168,250,252,243,207,223, 12, 13, 13, 13,157, 54,109,154,218,205, 61, 42, 0,117,107,212,168,161, 97,185,134,225, - 1, 90,180,166,184, 57, 21,236,236,115, 85,138,134,228, 38,231,235, 69, 14, 87,113,100,183,144,237,246,198,229,238, 94,111,224, - 69, 5, 89,146, 73,221, 23,161,101, 55, 59,151,248, 48,181, 90,125, 58, 61, 61,189,153, 74,165, 42, 38,178,220, 9, 46,137, 68, -130,212,212, 84,168,213,234,211,101,249, 17,189,117, 29,218, 69,205, 27, 78, 47,182, 99,215,174, 93,191,219,182,109, 91,244,246, -237,219,113,232,208, 33,132,135,135, 99,209,162, 69,119,210,210,210,158,165,148,110,243,229,185, 21, 43, 86,172,237,231,231,135, -125,251,246, 1,192, 46, 0, 35,199,140, 25, 67, 44, 22, 11,150, 44, 89,162, 5,240,123, 80, 80,208,230, 53,107,214, 52,168, 91, -183,174,124,251,246,237,249,135, 14, 29,250,195, 71,145,101, 19, 4,225, 46,129,229,252, 78,253,253,253,125,177,104, 89, 2, 3, - 3,207,228,231,231,247,215,235,245,249, 10,133,194, 63, 63, 63,223,232, 44,176, 68,126,158,231,165,151, 47, 95, 78, 1,144, 24, - 24, 24,120, 6, 78, 93,140,197, 18, 24,207,119,232,208,161, 3,239,250, 13,210,210,210,144,154,154, 10,179,217,140,134, 13, 27, - 18, 9,177, 72,178,111,157,122,145, 21, 51,255,136, 69,139,138,121, 93, 28, 37,232,110,164,225,150, 45, 91, 28,251, 28,199,193, - 62,220,223,171, 40,218,182,109, 91,137, 14,235, 46, 93,135, 94, 77,227,226,245,139, 23, 47, 46, 90,222,194,110,201,226, 56, 14, - 19, 39, 78,132, 66,161,192,135, 31,126,136,137, 19, 39,130,231,121,175, 93,135,206, 2,166,194, 4,157,115,227,168, 40, 83,216, -253,161, 8, 33,206, 98,139,248, 42,222, 74,178,230,249,210, 19,224,204, 41,222,167, 84, 42, 61, 58,194,187,112,146, 18,226,253, - 11, 33,228, 90,116,116,244,190,102,205,154, 5, 30, 61,122, 20,115,231,206,149, 25,141,198,242,219,183,111,119, 60,215,221,251, -210,106,181, 42,150,115, 24, 30,132, 53,171,132,211, 25, 46,254, 85,196,185, 27,175,132, 95,215,235,225,116,204,153, 55,195,165, - 30,115, 62,238, 42,174, 92,159,225,124, 77,134, 71,139,150,183,194,194,155,224,242,197,162,165,211,233,254,248,253,247,223, 27, - 15, 30, 60,152, 47,169,219, 80,171,213, 34, 50, 50, 18,103,207,158,181,234,116,186, 63,124,176,148,149,153,208,114, 83,168,108, -143,138,138,146, 88, 44, 22, 84,174, 92, 25,177,177,177, 48, 24, 12,200,205,205,149,248, 42,178, 8, 33,178, 70,141, 26, 73, 0, - 32, 55, 55, 23, 40, 26,106, 90,181, 74,149, 42, 56,118,236, 24,178,179,179,215, 3,232, 50,101,202,148,134, 77,155, 54,149,173, - 90,181, 74, 55,106,212,168,245, 22,139,229, 3, 31,173, 17, 38,171,213,154,192,113,156, 57, 55, 55, 55,217,249,125, 70, 70, 70, -134,104, 52, 26,146,150,150,102,241, 69,104,213,173, 91,247,240,173, 91,183, 48,109,218,180,140, 25, 51,102, 84, 41, 40, 40,200, -201,203,203,179, 58,139, 45,131,193,192,133,133,133, 41,150, 44, 89,162, 2,128,186,117,235, 30,246, 36,180,180, 90,109, 57,181, -250,239,134,177,209,104, 68,106,106, 42, 82, 83, 83,145,150,150,134,130,130, 2, 36, 38, 38, 66,167,211,197,179, 98,230, 31, 19, - 90,197,186,207,156,243,183,115, 69, 94,154,188,238, 44, 96,122,246,236,233,240,237, 18, 45,100,226,182,118,237, 90, 87, 7,115, -159,132,214,226,197,139, 49,110,220, 56, 40,149, 74,204,155, 55,175, 88,215,161,171, 56, 16, 4,129,248, 18,247,132,183,244, 72, - 93, 24, 2,169, 84,138,208, 81,105,197,186,232,220, 8, 14,159,194, 57, 99,198,140, 50,233, 58,116,230,140,143, 47,202, 42, 95, -126,249, 37,250,247,239,143, 61,123,246,220,115,215, 97,173, 90,181,126,216,180,105, 83,224,185,115,231,144,159,159,143,140,140, - 12, 24,141, 70, 36, 37, 37,121,236, 21,176,151,229, 74,150,115, 24, 30, 50,142, 60,100,222, 50,123, 30,239,165, 2,247, 89,104, -249, 98,209, 50, 26,141,243, 94,121,229,149, 49, 29, 59,118, 12,241,247,247, 71, 74, 74,202, 93, 34,171,176,176, 16,126,126,126, -208,235,245,216,184,113, 99,190,209,104,156,231, 77, 28, 88, 44, 22, 68, 68, 68, 32, 51, 51, 19,130, 7,255,105,142,227,160, 82, -169, 80, 88, 88, 8, 79,162,160,164, 10,195,108, 54,195, 98,177,192, 98,177,192,108, 54,163,148,211, 59,169,197,137, 95,181, 90, - 45, 0,104, 99, 98, 98, 42, 43,149, 74, 92,191,126, 29, 40, 26,217,215,241,201, 39,159,148,102,101,101,209,231,159,127,126, 47, -165,244, 69, 47,179,227,155,118,239,222,157, 0, 0, 42,149,234, 18, 0, 36, 37, 37, 89,114,115,115,139, 89, 10,213,106, 53,237, -221,187,119, 52,165, 20,187,119,239, 78,144,201,100, 20, 30,230,188, 2, 96,216,176, 97,195,185,192,192,192,149,179,102,205, 26, -220,189,123,247,179,181,107,215, 78,208,106,181,233,122,189, 94,111, 48, 24,168, 68, 34,145, 5, 7, 7, 43,183,110,221,122,245, -192,129, 3, 29, 3, 2, 2, 86,110,216,176,225, 28, 0,183,150, 55,141, 70,147,164,211,233, 42,136,223,212, 89,100,165,166,166, -130, 82,138,107,215,174, 65,173, 86,223, 98,229,200, 63, 7,177, 81,229,106,121,113, 61,230,171,200,114, 22, 6, 91,183,110, 45, -113, 14, 45, 95, 57,157, 69,209,235,175,191,142,133, 11, 23,222,101,209,250,240,195, 15, 1, 0,239,190,251,174,207, 62, 90,162, -245, 42,117, 97, 8,162,198,101, 23, 11, 59, 0, 16, 49,124,165,156,210,141,231,121, 76,155, 54,237, 46, 39,117,231,174, 61, 31, -187,248,138,133, 51, 61, 61, 29, 60,207, 35, 36, 36, 4, 67,134, 12, 65,231,206,157, 29, 93,144,165,229,189,112,225,194,190,183, -222,122,171, 78,173, 90,181, 48,125,250,244,236,160,160, 32,255, 23, 94,120,129,207,205,205, 37, 37, 89,180,152,208, 98, 96, 40, - 3,161, 37,102, 48, 95, 71, 29,186, 43, 44, 9, 33, 29,157,231,218,160,148,230, 17, 66,134,116,234,212,233,167,213,171, 87,171, - 42, 86,172,136, 11, 23, 46, 32, 59, 59, 27, 38,147, 9, 50,153, 12,209,209,209,200,205,205,197,183,223,126,171,215,233,116, 67, - 40,165,121, 37,113, 2,120,167, 81,163, 70,159,207,153, 51, 71, 89,191,126,125,100,103,103,163,176,176,176,216, 44,214, 1, 1, - 1, 80,169, 84, 56,124,248, 48,182,108,217,162, 7,240,142, 23, 78,119,106, 14,102,179,217, 33,184,188, 9, 45, 23, 78,141,104, -213,209,233,116, 0, 96, 41, 87,174, 92, 20, 0, 92,187,118, 13, 0,110, 36, 38, 38, 78,169, 88,177, 34, 89,177, 98, 5,165,148, -110,113, 39,178, 92, 56,179, 91,181,106,149, 3, 32,202,100, 50,201, 0, 32, 47, 47,207, 28, 22, 22, 22,161, 80, 40, 4,149, 74, - 37, 40,149, 74, 33, 37, 37,197,106,181, 90,101, 0,208,170, 85, 43, 19,128, 84, 56,249,130,184,112, 10, 0,242,151, 46, 93, 58, -101,232,208,161,205,154, 55,111, 94,107,244,232,209,103,158,127,254,121, 46, 54, 54, 54,184,160,160,192,112,229,202,149,156, 79, - 62,249,164,224,224,193,131, 29,165, 82,233,205,165, 75,151, 78, 1,144,111,191,247, 46, 78,171,213,250,199,246,237,219,159,237, -222,189, 59,159,156,156,140,180,180, 52,135,200, 74, 75, 75, 67,245,234,213,113,224,192, 1,155,217,108,222, 94,138,247, 89, 86, -150, 28,198, 89,212, 8,161, 98, 94,247, 36,176,196,198,148,175,156,206,162,168,127,255,254,197,172, 88, 50,153, 12,235,214,173, -115, 91,110,184,153,225,188,163,235,124, 82, 98,152,222,122,235,173, 98,162,237,189,247,222,243, 24, 52,111,239, 83,228,201,251, - 50,182,248,168, 67, 15,249,188,164,112,138,101,167, 84, 42,197,123,239,189,231,179, 69, 11, 46, 62, 90,238, 56,197,184,183,105, -211, 6, 58,157,206, 33,100, 61, 89,180,188,189, 79,155,205, 54,110,225,194,133, 52, 32, 32,224,137,252,252,252,255,221,186,117, -107,153, 78,167,107,146,151,151, 87,162, 69,203,104, 52, 42, 88, 62, 98,156, 15, 98, 46,173,255,148,208,178, 87,146, 40, 87,174, - 92,177,181,179, 56,142, 43,182,149,198,207,192,158,113,183, 18, 66,158,110,209,162,197,247,227,198,141,243,175, 95,191,190,180, - 66,133, 10,208,106,181,184,126,253, 58,206,158, 61,107,221,176, 97, 67,190, 78,167,251, 31,165,116,171, 15,124,203, 9, 33, 91, -186,116,233, 50,185,105,211,166, 47,189,255,254,251,146,170, 85,171, 34, 47, 47, 15,193,193,193,136,136,136,192,197,139, 23,177, -113,227, 70, 91,102,102,230,231, 0,166, 82, 74, 51, 74,219,224, 55,155,205, 24, 52,104, 16, 4, 65,192,252,249,243, 65, 8, 41, - 77,243,214,108, 54,155, 41, 0,146,153,153, 9, 0, 58,251,236,210,184,114,229, 10, 0,220, 76, 72, 72,240, 7,128,237,219,183, - 19, 0,190, 46,233, 67,157, 45, 91,213,171, 87,191,238, 90, 56,138,150, 44,209, 10, 6,239, 11, 65, 27, 6, 12, 24,144,174,211, -233,186,188,254,250,235,147, 23, 47, 94, 60,120,241,226,197,119, 93, 20, 16, 16,176,114,238,220,185, 83, 7, 12, 24,144,238,201, -154,101,183,224,189, 59,108,216,176, 1,167, 79,159,246, 87, 42,149,208,106,181,200,202,202,130,217,108, 70, 98, 98, 34,210,211, -211,177,124,249,242, 2,189, 94,255, 1,203,142,255, 12,156,133,129, 39,171,150, 55,145, 85,146, 85,231,151, 95,126,113, 59, 71, - 85,105, 57, 93,197,134,175,115, 91,149,212, 40, 18,167,165,113, 55,101, 68,105,202, 53,119,188, 60,207,227,227,143, 63,118, 76, -218,234,206,146, 85, 26,139,150,200, 25, 18, 18, 82,100, 38,183, 47,153,212,173, 91,183,123,230,181, 47, 71,246,178,211, 51,102, -140, 31, 63,126, 74,245,234,213,171, 2, 80, 56,191, 3,182, 72, 3, 3, 67, 25, 11, 45,155,205,150, 84,173, 90,181, 98, 5,156, -183,197, 76, 45, 22, 75,146,143,153,123, 11, 33, 36,113,238,220,185,175,104, 52,154,142, 58,157,174,142,189,224, 56,173,213,106, -183, 27,141,198, 5,165, 89, 4,218, 46,156,198, 18, 66,230,119,233,210,229,195,246,237,219,247,123,227,141, 55, 8,165, 20, 75, -150, 44,161,127,253,245,215, 90, 0,239, 80, 74,255,186,151,151, 20, 18, 18,114,238,219,111,191,141,252,233,167,159, 96,177, 88, -176, 96,193, 2,248,251,251,159, 43, 69,248,210,121,158,255,174,121,243,230,207, 28, 56,112, 96, 57,165,244,148, 92, 46, 95,214, -178,101,203, 97, 7, 14, 28,248,129, 82,122,150,231,249,101, 77,155, 54, 29,118,228,200,145, 53,148,210, 19,165, 8,158,195,178, -101,181,186,239,105,116,103,201,242,130,252, 17, 35, 70,152, 71,140, 24,241,198,128, 1, 3,190, 58,114,228, 72,147,220,220,220, - 58, 0, 16, 20, 20,116,186,113,227,198,135, 87,175, 94,125,209,110,201, 50,120,251, 54,132,144,222,117,234,212, 89, 63,125,250, -116, 77,173, 90,181,248,202,149, 43,227,198,141, 27, 56,115,230,140,245,155,111,190, 41,212,235,245, 61, 41,165, 57, 44, 59,254, -115, 66,139, 82,138,160,160,160, 98,141, 40,113,200,127,105,187, 11,157, 43,102,113,169, 30, 87, 94, 79,156, 37, 77,155, 32,194, -207,207,207, 49,185,169, 47, 46, 11,130, 80,242,124,108,148, 82, 7,167,184,249, 32,178,188,142, 16,180, 47,129,227, 51,167, 47, -211, 59,104, 52, 26, 88, 44, 22, 7,175, 15, 35, 63, 73, 41,191,217, 47, 0,126,169, 92,185,242, 21, 0,149,152,184, 98, 96,120, -128, 66, 43, 59, 59,187,209,131,124,176, 93, 72, 77,181,111,101,197,249, 23,128, 1,132,144, 57,127,254,249,167,216,143, 48,205, -219,122,137,222,112,225,194,133,238, 82,169,244,139,149, 43, 87, 54,165,148, 34, 48, 48,240,224,141, 27, 55, 94, 40, 13,135,213, -106, 29, 65, 8, 25, 35,142, 34, 52,153, 76, 35, 8, 33,175, 80, 74, 11,157,206, 59,246, 75, 27,117, 0, 70, 74,105,140,135,243, -198, 82,136, 44,135,101, 11,128,105,245,234,213,133, 0, 78,226,239,121,178, 44,246,205, 0,167,238, 66, 47,223,101, 7, 33,164, -242,123,239,189, 55, 67, 34,145,116,208,106,181,177, 26,141,230,182,213,106,253, 67,167,211,189, 67, 41,205, 98, 89,241,159,131, -201,100, 74,174, 86,173, 26,239,174, 1, 85, 82, 69, 94, 82,195,202,102,179, 37, 85,169, 82,197,107,227,204, 13,103,114, 9,233, -232,102, 98, 98, 34,231, 43,151, 8,179,217,156, 94, 82, 56, 19, 19, 19, 81, 90, 78,111,113, 79, 72, 72,112, 27,119, 47,130, 48, -185,132,242,227,158, 56, 75,122,159, 37, 65,175,215,231,132,135,135, 23, 26, 12, 6,169,209,104,148, 90,173,214, 98,230, 71,149, - 74,149,193,114, 14, 3,195,125, 10,173,127, 51,236,194,170, 71, 25,242, 25, 1, 60, 83, 6, 60, 6,151,253,194,146,246, 75,137, - 7, 97, 17, 18, 0,232,202,232, 29,102, 2,120,158,101,185, 71, 15,153,153,153, 79,148, 53,103, 86, 86, 86,153, 55,212, 50, 50, - 50,154, 61,128,184, 55,250,175,114,150,132,228,228,228, 39, 88,206, 96, 96, 40, 27,112,236, 21, 48, 48, 48, 48, 48, 48, 48, 48, - 60, 24, 16, 0, 29,221,157, 40,205,104, 2, 66, 72,199,210, 62,216, 27, 63,227,100,156,140,147,113, 50, 78,198,201, 56, 31, 63, - 78,111,220,143,221,104, 70, 74,233, 3,219, 0,116,100,156,140,147,113, 50, 78,198,201, 56, 25, 39,227,252,175,110,172,235,144, -129,129,129,129,129,129,129,225, 1,129, 9, 45, 6, 6, 6, 6, 6, 6, 6, 6, 38,180, 24, 24, 24,254,141, 32,132, 84, 45, 95, -190,252,249,106,213,170, 37, 19, 66,134, 63,224,103, 13,105,214,172, 89,150, 82,169,220, 74, 8,169,202,222, 62, 3, 3, 3, 19, - 90, 12, 12, 12,143,181,200,170, 83,167,206,222, 11, 23, 46, 84,223,190,125,123, 76,108,108,236, 71, 15,242,121,141, 26, 53,154, -189,103,207,158,144,223,127,255,189, 83, 84, 84,212,238,123, 17, 91,132,144,170,241,241,241,231,171, 85,171,150, 68, 8, 25, 82, -198,239, 99,120,243,230,205,179, 21, 10,197, 22, 38, 4, 25,254, 3,249,191, 54, 33,164, 14, 19, 90, 12, 12, 12, 12, 15, 80,100, -237,223,191, 63,212, 96, 48,224,194,133, 11,200,200,200, 56,241, 32,159,121,233,210,165,156,253,251,247, 35, 46, 46, 14, 63,252, -240, 67,120, 66, 66,194,158,210, 8, 26, 49,204,231,207,159,175,190,125,251,246,216,136,136,136, 79,202, 50,124, 77,154, 52,249, -112,207,158, 61,193, 91,183,110,237, 28, 30, 30,190,155,137, 45,134,199, 48,223, 43, 8, 33,207,112, 28,119,184,118,237,218,167, -107,213,170,117,138,227,184, 3,132,144,254,132, 16,254, 63,249, 78,196, 37, 22, 54,111,222,188, 11, 0,186,117,235,214,134, 37, - 21, 6, 6,134,251, 44,108,107,213,170, 85,235,224,193,131, 7,213,122,189, 30,107,214,172,193,251,239,191,111,201,206,206,222, - 3, 64,235,230,150, 35, 0, 62,243,101,233, 45, 66, 72, 0,128, 49, 0, 26,187, 57,173, 9, 9, 9,105, 53,101,202, 20,233,147, - 79, 62, 9,131,193,128,190,125,251, 26, 46, 93,186, 84,159, 82,122,201, 87, 97,168,215,235,113,244,232, 81,244,236,217,115,171, -197, 98,233, 82, 86,239, 37, 48, 48,240,236, 47,191,252, 82, 51, 38, 38, 6,215,174, 93,195,176, 97,195, 50,210,210,210, 90,123, - 11, 27, 3,195,191, 32,207, 87, 0,240,146,159,159,223,200,182,109,219, 6,247,236,217, 19,161,161,161,176, 90,173,184,125,251, - 54, 54,109,218,132,253,251,247,167,152, 76,166,133, 0,190,164,148,230,186,227,121, 28,181, 8,161,148, 98,243,230,205, 20, 64, - 91,123,228,118,177, 36,195,192,192,112,159,133,238,126,157, 78,215, 76,167,211,161,160,160, 0,229,202,149,131, 84, 42,117,123, -109,122,122, 58,246,237,219,135,151, 95,126,249, 92,106,106,106,235,146,214,189, 36,132, 4, 55,104,208, 96,255,142, 29, 59,170, -250,251,251, 59,142, 11,130, 0,179,217, 12,139,197, 2,179,217, 12,163,209, 8,163,209, 8,185, 92, 14,149, 74,133,144,144,144, - 51,148,210, 58,190,138,172,227,199,143, 99,232,208,161, 25, 89, 89, 89,101, 42,130, 8, 33, 85, 35, 34, 34,118, 47, 95,190, 60, - 60, 49, 49, 17,183,110,221,194,115,207, 61,151,121,243,230,205, 86, 76,108, 49,252,139,243,251,196,167,159,126,250,195,200,200, - 72,174,118,237,218,136,142,142,134,209,104,132, 94,175, 7,165, 20, 60,207,131, 82,138,188,188, 60,236,222,189, 27, 59,118,236, - 48,230,228,228,124, 11, 96, 1,165,244,178,147,200,122, 44,181,136, 67,104,117,235,214,141,176,228,194,192,192, 80, 70, 5,239, -233,188,188,188,218, 70,163, 17, 90,173,214,167,123,174, 93,187,134,225,195,135,159, 75, 77, 77,109,225,206,178, 69, 8, 9,104, -208,160,193,161,221,187,119, 87, 53, 24, 12,200,207,247,190,238,188, 92, 46,135, 82,169, 68,104,104,232, 1, 74,105,115, 79, 45, -241,218,181,107, 31, 61,112,224, 64,136, 94,175,199,137, 19, 39, 48,100,200, 16,115,118,118,246, 94,184,183,190, 1, 64, 54,138, -214, 81,189,233,134, 47, 30,192, 43, 0, 42,120,184, 87, 19, 30, 30,222,114,197,138, 21,178,138, 21, 43, 66,167,211,161,127,255, -254,217,151, 46, 93,106, 76, 41,189,206, 82, 15,195,191, 48,191, 95,186,112,225, 66, 21,155,205,134,204,204, 76, 24,141, 70,232, -116, 58,135,208,146, 72, 36,160,148,194,106,181, 58, 26, 70,199,142, 29,195,246,237,219,233,181,107,215,222,167,148, 78, 19,133, -214,227,168, 69,120,150, 68, 24, 24, 24, 30, 0, 6, 52,105,210,228,196,111,191,253,166,148,203,229,216,184,113,163,199,174,195, -200,200,200, 90,203,150, 45, 75, 72, 76, 76,196,162, 69,139,106,246,237,219,119, 12,128, 25,110, 56,199,236,216,177,163,170,193, - 96,192,137, 19, 39, 48,108,216,176,235,105,105,105,103, 93, 69, 76, 66, 66, 66,171, 79, 62,249, 68,218,176, 97, 67,228,231,231, -163, 83,167, 78, 58, 0, 47,149, 16,214,177, 59,119,238, 12,209,235,245, 40, 40, 40, 64,219,182,109,145,149,149, 37, 3,208,222, -211, 13,122,189, 30, 21, 42, 84,168, 10,224, 46,241, 22, 26, 26,250,245,173, 91,183,218,169, 84,170, 18, 95,144,217,108, 70, 82, - 82, 18,130,130,130,176,105,211,166,144, 74,149, 42,189, 11, 96, 4, 75, 58, 12,255, 70,152, 76, 38,252,248,227,143,104,208,160, - 1,106,212,168,129,194,194, 66,135,232, 50,153, 76, 14,145, 5, 0, 28,199,161,113,227,198,168, 82,165, 10,121,237,181,215,134, - 0,152,246, 56,191, 27, 81,104, 77, 97, 62, 90, 12, 12, 12,101, 5, 74,233, 37, 66, 72,253,142, 29, 59,238, 89,187,118,109, 88, -215,174, 93, 81,169, 82, 37,105,159, 62,125,194,181, 90,109, 7,151,214,112,240,176, 97,195,142,222,190,125, 59,193,126,168,177, - 7,218,198,254,254,254,162,111,211,245,180,180,180, 70,174,221,140, 10,133, 98,203,201,147, 39,165,114,185, 28, 71,142, 28,193, -240,225,195, 51,175, 95,191,238,173, 91, 46,200,100, 50, 65, 34,145, 0, 0,146,146,146,188,198,239,214,173, 91, 16, 4,193,232, -238, 28,199,113,138, 99,199,142, 33, 38, 38,166, 68, 14,142,227, 32,147,201,156, 15,229,178,148,195,240, 47,133,197,100, 50,161, - 81,163, 70,184,126,253, 58,142, 29, 59,230, 16, 92,153,153,153, 72, 73, 73, 41,118,241,225,195,135,113,252,248,113,180,110,221, -218,149,231,177,212, 34,188, 61, 66, 31,108,222,188,153, 9, 44, 6, 6,134,178, 22, 91,173,122,244,232,177,123,249,242,229,225, -229,202,149,131,191,191,127,128,155,235,114, 8, 33,103,165, 82,105,130,175,220,105,105,105,103,221,249,114, 69, 69, 69,213, 55, -153, 76, 56,126,252, 56,134, 12, 25,146, 97,247,249,242,230,251, 52,189, 67,135, 14, 61,182,110,221, 26,162, 84, 42,113,246,236, - 89, 95,186, 14,111, 0, 88,224,238, 68, 70, 70,198,144,214,173, 91,191, 7, 32,196,195,189,154, 42, 85,170,180, 60,122,244,168, -140, 16,130, 27, 55,110,160,127,255,254,217, 0, 62,101,169,134,225, 95,138,201, 79, 63,253,244, 55, 99,198,140, 9,108,218,180, - 41,146,146,146, 28,130,171,126,253,250,168, 91,183, 46,254,250,235, 47,108,217,178, 5,199,143, 31,135, 66,161, 64,165, 74,149, - 80, 56,231, 19,224, 19, 88, 68,146,199, 85,139, 56, 70, 29, 50, 48, 48, 48, 60,144, 66,134,144,170, 50,153,108,126,120,120,120, -189,228,228,228,215, 41,165, 63,184,156, 15,238,215,175,223,217, 85,171, 86, 69,223,184,113, 3, 21, 43, 86,220, 72, 41,237,229, -134,103, 3,165,180,231,181,107,215,208,162, 69, 11,183, 22, 45, 66,200,240,168,168,168,169, 5, 5, 5,121, 58,157,174,191,175, - 14,230,132,144,170,149, 43, 87,222,179,113,227,198, 48,181, 90,141,243,231,207, 63, 48,103,248,106,213,170,237, 61,124,248,112, -168, 84, 42,197,145, 35, 71, 48,108,216, 48,230, 12,207,240, 56,228,115,127, 0,227, 19, 19, 19,223, 28, 53,106,148,162,102,205, -154, 72, 74, 74, 66, 70, 70, 6,114,114,114,112,240,224, 65, 0, 64,108,108, 44, 98, 99, 99,113,241,226, 69,236,219,183, 47,191, -176,176,112, 4,165,244,167,199,250,221, 48,161,197,192,192,240,144, 11,228,120, 56, 57,139,247,235,215,175,209,138, 21, 43,162, -179,178,178,112,232,208, 33,244,237,219,247, 29, 74,233, 12, 55,247,189,157,154,154,250, 33, 0,156, 57,115,198,213, 71,203,163, -115,122,105, 68, 80,133, 10, 21,246,172, 89,179, 38, 44, 52, 52, 20, 23, 46, 92, 64,255,254,253,207,106,181,218,218,101, 21,119, -181, 90,189, 53, 53, 53,181,147, 76, 38,195,129, 3, 7, 48,100,200, 16, 54,189, 3,195,227,150,191, 35, 0,188, 91,179,102,205, -151, 70,142, 28,201,199,199,199, 35, 57, 57, 25,127,254,249, 39, 42, 85,170,132,219,183,111, 99,199,142, 29,166,140,140,140,249, - 0,102, 81, 74,243, 30,251,151,242, 32, 87,172, 6, 91,217,156,113, 50, 78,198,121,247,117, 91,206,157, 59, 71, 69,216,108, 54, -154,156,156, 76,183,110,221, 74,163,162,162,206, 2, 8,112,199, 9, 32,160, 70,141, 26, 23, 46, 94,188, 72,111,221,186, 69,205, -102,179,131,227,194,133, 11, 20,192,174,251, 13, 39,128,170,177,177,177,233, 59,119,238,164, 23, 47, 94,164, 81, 81, 81,183,203, - 50,238, 21, 42, 84, 72,207,200,200,160,127,254,249, 39, 13, 15, 15, 79, 7, 80,149,165, 37,198,249, 56,114,218, 27, 82, 43, 26, - 54,108,104, 91,184,112, 33,125,233,165,151,104,124,124,188, 13,192,215, 0, 98, 31,164,246,120,212, 54, 54,234,144,129,129,225, - 97, 67,113,240,224, 65, 40, 20, 10,199,129, 83,167, 78, 57,207,163,149,239,161, 81,152, 79, 8,105,209,181,107,215, 61, 11, 23, - 46,172, 97,177, 56, 92, 59,176,115,231, 78, 0, 48,150, 65,195,243, 18, 33,164,117,151, 46, 93, 22,132,134,134,214, 75, 77, 77, -157, 92,150, 17,191,113,227,198,235,117,234,212,153, 81, 80, 80,144, 95,154,174, 77, 6,134,127,161, 17,231, 6,128,161,132,144, -143,142, 29, 59,246, 14, 0, 10, 96, 58,165,244,252,127,237, 93, 48,161,197,192,192,240,176, 49,252,249,231,159,119,117, 22,247, -105,102,120,187,227,124,243,110,221,186,185,206, 12,239,209, 57,253, 94,196, 22,128,206, 15,168,242,249, 1,192, 15, 44, 9, 48, -252,135, 4,215, 89, 0, 3,255,203,239,128, 9, 45, 6, 6,134,135, 93,240,222, 4,240,220,125,220,159, 15,247,243,108, 49, 48, - 48, 48, 60,114, 96,139, 74, 51, 48, 48, 48, 48, 48, 48, 48, 48,161,197,192,192,192,192,192,192,192,240,239, 2, 1,208,209,221, - 9, 74,233,118,159, 73, 8,233, 88,218, 7,123,227,103,156,140,147,113, 50, 78,198,201, 56, 25,231,227,199,233,141,187, 52,250, -227, 95, 1, 31,135,113, 18, 54,244,149,113, 50, 78,198,201, 56, 25,167, 47,156,246, 70, 60, 65, 81,175, 9, 39,238, 63,226,211, - 17,144, 71, 53,238,255, 21,206,255,228,244, 14,132, 16,199,203, 34,132, 8, 0, 4, 90, 6, 51,156, 18, 66,196, 15, 81, 38,124, - 12, 15,192,212, 89,244,141,200,223,122,156,125, 39, 6, 6,134, 82,149, 29, 18,167,202,214, 6,192, 70, 8,193,163, 86,150,148, -101, 61,247, 32,226,254, 95,230,124, 92,192,151,244,194, 36, 18,201,214,176,176,176,118,153,153,153,130,253, 56,228,114, 57, 56, -142,131, 84, 42,213, 23, 20, 20, 4,220,195,199,248, 58, 50, 50,114,120, 86, 86,150,192,113, 28,148, 74, 37, 8, 33, 14,206,220, -220,220,128,127,250,165, 84,168, 80, 33, 71,175,215,251,185, 30, 87, 42,149,134,155, 55,111,250,255, 23, 10, 74,153, 76,246,116, - 72, 72, 72, 80, 70, 70, 6, 21, 23,191,149, 72, 36,226, 66,184,214,220,220,220,239,124,229, 11, 9, 9, 57, 28, 18, 18, 18, 36, -222, 79, 8, 65, 86, 86, 86,110, 90, 90, 90, 19, 0, 80,169, 84,251, 52, 26, 77, 40,207,243,144, 72, 36,144, 72, 36,208,233,116, - 89,153,153,153, 45, 88,181,245,239,196,218,181,107, 37, 93, 98,159,171,196, 83,125, 93,142,163,129,130, 64,242,172, 68,117,106, - 75,242,215, 87,125,185,191, 95,191,126, 54,246, 22, 31, 30, 20, 10,197,252,200,200,200,145,133,133,133, 58, 66, 8, 37,132,160, -168, 26,192, 93,191, 54,155, 45, 41, 51, 51,179,145,151,202, 86, 42,151,203,231, 70, 69, 69, 13,211,233,116, 58, 59, 31, 37,132, - 32, 58, 58,186, 24, 31, 0, 88, 44,150,164,140,140,140, 70,190,132, 53, 34, 34, 98,169, 74,165,250,159, 78,167,211,218,133,145, -115, 15,141,115,101,254, 87, 70, 70, 70, 43,111,194, 64, 46,151, 47,136,140,140,124,214, 30,119, 16, 66,104,120,120,248,125,199, - 61, 50, 50,114,152, 86,171, 45, 22,247,136,136, 8,183,156,158,226,238,142,211, 57,156,132, 16,132,135,135,223,119, 56, 31, 69, -206,199, 94,104, 1,224, 8, 33, 27, 90,180,104,209,118,215,174, 93,220,133, 11, 23,184,234,213,171,195,102,179, 65, 16,138,210, -117, 92, 92,156,250, 30, 42,240,101,173, 90,181, 26,180,123,247,110,110,195,134, 13, 92,227,198,141, 65, 8,129,205,102,131,205, -102, 67,237,218,181, 85,247, 41, 16,252,120,158,127, 77, 46,151,183,177, 90,173, 53, 0, 64, 42,149,158, 55, 26,141,187,172, 86, -235, 60, 74,105,161, 47, 60,102,179, 89,157,158,158,126,215,187, 73, 76, 76,148,223,107,216, 2, 2, 2,246,115, 28,151,232,120, -193,118,193,225, 46, 51,139,191,148,210,107, 25, 25, 25,205, 61,113, 6, 7, 7, 59, 56, 61,113,184, 30, 19, 4,225, 90,122,122, -122,115, 47, 34,171,111,171, 86,173, 2,183,111,223, 78,110,223,190, 77, 84, 42, 21, 4, 65,128,205,102,131,197, 98, 65,205,154, - 53, 75, 53, 45, 72, 80, 80, 80,192,196,137, 19, 43, 61,245,212, 83, 88,183,110, 29,158,121,230, 25,180,108,217,242,178,120, 94, -163,209,132,158, 59,119,174, 74, 72, 72, 8,116, 58, 29,242,242,242,208,169, 83,167,127,125,230,106,218,160,220,116,194, 17,199, - 92, 81,212,106,203, 62,120, 50,249,221,251,229, 13, 10, 10, 58, 46,151,203, 35,197,239,202,113,156,219,111,237,124,204, 96, 48, -164,101,102,102, 54,240,146,127, 42, 0,232, 33,145, 72, 42,243, 60, 95, 13, 64, 5,171,213, 26, 9, 0, 50,153, 44, 77, 34,145, -220,176, 88, 44, 23, 77, 38,211, 21, 0,191,216, 39, 36,116,139, 46,177,207, 85, 34, 86, 93,191, 2,163,208, 85, 93,113, 86, 85, -221, 95, 19, 47,169, 21,186, 95,187,196, 62,183,214, 87,177,245, 15, 54, 52,170, 2, 88,141,162, 5,165, 95,178,207, 3,116, 63, -124,177, 0,122, 2,168, 42,147,201, 18,204,102,115, 38,128, 99, 0,182, 83, 74, 47, 19, 66,226,195,195,195,127, 16, 4,193,152, -149,149,245,156,187,101,132,154, 53, 42,127,148,227,184, 56,216,101,132, 64,109, 73, 7,142,222, 46,147, 10, 74, 34,145, 44,232, -211,167,207,179,107,215,174, 85, 31, 59,118, 76, 93,163, 70, 13, 71,249, 36, 8, 2, 92, 13, 17, 9, 9, 37,174,253, 77, 0,240, - 28,199,205,239,215,175,223,224, 21, 43, 86,168,111,222,188,169,142,137,137,113,112, 58,139, 56, 17, 49, 49, 49, 62,133, 53, 52, - 52,244,235,167,158,122,106,232,242,229,203,165, 27, 55,110, 84,133,133,133, 33, 52, 52, 20, 50,153,236,174,107, 91,180,104, 33, -120,161,227, 56,142, 91,208,171, 87,175,161,171, 86,173, 82, 31, 58,116, 72, 93,187,118,109, 72, 36,146,251,142,123,239,222,189, - 7,255,248,227,143,234,211,167, 79,171, 43, 87,174, 12,142,227,192,113,220, 93,124, 28,199,161, 92,185,114, 62,113,246,236,217, -115,240,234,213,171,213,199,143, 31, 87, 87,171, 86,205,241, 62,157,186,237, 74, 29,206, 71,156,243,241, 21, 90,118, 51,234,138, - 22, 45, 90,116,217,181,107,151, 4, 0,142, 31, 63,142,236,236,108,196,198,198,194,207,207, 15, 10,133, 2, 6,131,129,150,178, -176,249,218, 46,178,164, 0,176,254,127,189,113, 77, 10,188,156,110,130, 76, 38,195, 95,127,253, 5,137, 68, 66,239,163, 48,107, - 29, 16, 16,176,252,167,159,126, 10,110,208,160, 1,151,153,153,137,132,132, 4,100,103,103, 55,217,189,123,119,195,231,158,123, -238, 57, 66,200, 51,148,210,221,190,114,254,250,235,175,208,104, 52, 80,171,213,208,104, 52, 48,153, 76,228,158, 95, 52,207,199, -221,184,113, 35,194,207,207, 15,130, 32, 56, 54,151,254,109, 7, 4, 65, 64,149, 42, 85,204, 94, 10,200,184,155, 55,111, 70,168, - 84, 42, 80, 74,139,241,217,108, 54, 40, 20, 10,231,150, 3,108, 54, 27, 18, 19, 19,205,222, 44, 89,162,200, 2,128,149, 43, 87, - 34, 42, 42, 10, 17, 17, 17,208,104, 52, 80,169, 84,197, 42,118, 31, 11,114,116,233,210, 5, 31,124,240, 1,102,205,154,133,241, -227,199, 23, 43,104,165, 82, 41, 66, 66, 66,240,251,239,191, 35, 32, 32, 0,241,241,241,144, 74,165,255,126,203, 32, 71, 66, 14, - 28,189,229,176,208, 62,217,190, 58,223,180, 97,252, 98,251, 23, 6,199, 1,130, 80, 84,117, 18, 2,106,181, 8, 57, 71, 78, 37, - 79,246,225,125,198,220,188,121, 51,194,121,102,245,146, 96,179,217, 16, 27, 27, 43,241,146,127,186,214,170, 85,107,253,232,209, -163,101,149, 43, 87, 38, 50,153, 12, 60,207,131,231,121, 49, 61,198, 83, 74,227, 5, 65,104,155,150,150, 70, 23, 45, 90,244, 17, - 33,164, 15,165,244, 87,183,233,157,234,235, 22, 24,133,174,123, 78,160, 73,191,142,111,225,247, 53, 19,155,180,170, 47,192, 95, -173,191, 10,224,145, 21, 90,132,144,170,181,106,213, 58,113,232,208, 33,165,217,108, 70,211,166, 77, 15, 18, 66, 26,222,203, 12, -238,132,144, 96, 0,159, 76,154, 52,105,232,232,209,163, 37, 65, 65, 65,144,203,229, 40, 40, 40,192,213,171, 87,135,125,247,221, -119,148, 16,242, 25, 0,255, 27, 55,110, 52, 59,124,248, 48,218,181,107,247, 10,128,215,238, 86, 4,146,184,125,135,175, 71,136, -251, 61,187,212,145, 53,111, 28,159, 86,212, 32,115,189,154, 66,176, 9, 73,135, 78, 36, 53,242, 33,140, 31, 61,253,244,211, 67, -214,174, 93,235, 7, 0, 75,150, 44,193,211, 79, 63,141,144,144, 16,168,213,106,200,100, 50, 72,165,210, 98,191, 94, 44, 68, 18, - 0, 31, 13, 28, 56,176,223,138, 21, 43,252, 1, 96,197,138, 21,232,221,187, 55, 66, 67, 67,225,239,239, 15,185, 92, 14,137, 68, - 82,234,111, 19, 26, 26,250,117,203, 38, 77, 70, 44, 95,190, 28, 0,240,206,171,175,226,169, 39,158,128,159, 90, 5,181, 74, 14, -241, 93,200, 37, 82, 60,249,242, 56,111,241,230, 0,204,121,250,233,167, 7,172, 90,181,202, 31, 0,142, 29, 59,134,244,244,116, - 68, 70, 70, 66,165, 82, 65, 46,151, 59,226, 76, 8,129, 74,165,242, 41,238, 79, 63,253,116,191, 31,127,252,209, 31, 0,150, 45, - 91,134, 46, 93,186, 56,226,174, 80, 40, 32,147,201,138,109,174,162,211, 29,103,159, 62,125,250,173, 94,189,218, 31, 0,190,251, -238, 59,116,236,216, 17,193,193,193,142,247, 41,114,149,230, 27, 61,202,156,143,181,208, 18,125,167, 34, 35, 35, 7,236,217,179, -135,115, 18, 9, 80, 40, 20, 80, 40, 20,144,203,229,142,238,195, 82, 20, 56, 36, 50, 50,114,248,238,221,187, 29, 55,153,232, 93, -166,235, 82, 87,224, 78,252, 29,219,181,107,247,227,166, 77,155,148, 50,153, 12,122,189, 30,103,207,158, 69, 96, 96, 32,228,114, - 57,122,245,234, 37,105,209,162, 69,104,219,182,109,215, 17, 66, 6,251, 50,162,129, 82, 10, 63, 63,191, 98, 66,235,126,187,152, - 85, 42, 21, 54,110,220, 8,137, 68,226,182, 0,115,254, 31, 17, 17,225, 75,188,161, 80, 40,176,127,255,126, 72, 36, 18, 72,165, - 82,240, 60, 15,169, 84,138,205,155, 55,227,141, 55,222, 64,102,102, 38, 8, 33,144, 74,165,240,247,247,218,235, 73, 66, 66, 66, -130, 68,145, 37,138, 32,149, 74, 5,169, 84, 74,120,158, 39, 98,215, 30, 33,132,248,218,231,206,113, 28,190,255,254,123,204,158, - 61, 27, 19, 38, 76,192,210,165, 75, 81,183,110, 93,103, 17,138,252,252,124, 4, 7, 7, 35, 56, 56, 24, 74,165,242,158,211,194, -163, 4,215,183, 51,119,222, 66, 53, 4,138, 34, 39, 16, 1, 16, 0, 10, 10,129, 10, 72, 75,190,138,247, 63,248,216,231,218, 71, -161, 80, 96,223,190,125, 14, 49,196,243, 60, 8, 33,112, 22, 72,226, 22, 21, 21,229,149, 79, 38,147, 77,249,249,231,159,229,223, -127,255, 61, 86,173, 90,229, 72, 91, 26,141, 6, 65, 65, 65, 8, 13, 13,117,108,113,113,113,228,155,111,190,145,213,173, 91,119, - 10,128, 95,221,127,115, 26,168,174, 56,171,106,191,142,111, 1, 0,250,189, 69,145,115,249,195,122, 92,238,228,192, 71, 89,100, -213,169, 83,103,239,254,253,251,149, 58,157, 14,130, 32,224,215, 95,127, 85,119,236,216,113, 15, 33,164, 85,105,197, 86,133, 10, - 21, 54,238,223,191,191, 69,120,120, 56,242,242,242,144,159,159, 15,139,197, 2,137, 68,130,248,248,120,124,244,209, 71,164, 87, -175, 94, 99,135, 13, 27,102, 80,169, 84,162,101,163,130,167,242,200, 25,139, 62, 93, 28, 68,105, 81,250,161, 2, 45,246,155,157, -126, 3,175,190,254,190, 79, 97, 44, 87,174,220, 75,235,214,173,243,115,182, 44, 57,139, 0,231, 50, 74,220, 60, 9, 3,187, 85, -131, 43, 95,190,252,136, 31,126,248,193,193, 25, 22, 22,230, 40,151,120,158, 7,199,113,216,179,103, 15,102, 78,153,132,224,240, - 24, 44,252,116,137,215,112, 70, 68, 68, 44,237,218,181,235,255,150, 45, 91,230, 56, 86,167, 98, 69,116,107,241, 4, 34,194, 2, - 16, 22, 92, 84,182, 81,129,224,212,197,235, 94,235, 35, 0, 92,185,114,229,158, 91,179,102,141,159,115,131, 80,140, 43, 0,232, -116, 58,135, 21,223,100, 50,161, 81,163, 70, 62,197,221,153, 83,180,182,137,162,205,181,172, 23, 27, 50, 37,113,150, 43, 87,110, -132, 40,132, 1, 32, 36, 36,164, 24,135, 84, 42,197,154,223,151,223, 85, 55,220, 47,103,105,191,187, 43,231,141, 27, 55, 48, 99, -198, 12, 71,153, 36, 90,245, 8, 33,136,141,141,197,194,133, 11, 75,226,116,135,198, 0,194,157,246, 77, 0,228, 78,191, 25, 40, - 90, 97,194,245, 58,241,184, 20, 64, 61,251, 57, 27,128, 2, 0, 65,110,248, 60,241,100,162,104, 25,161,112,151,235, 93,159,227, - 94,104,109,222,188,153, 2,192,198,141, 27,219,245,236,217,115, 95,102,102,166,112,225,194, 5,238,216,177, 99,144, 74,165,136, -136,136, 64,227,198,141,197,110, 53, 72,165, 82,104, 52, 26, 18, 20, 20,148, 38, 86,188,226, 75,116,238,107,119, 18, 52, 92,118, -118,182,176,109,219, 54,110, 69,159,206, 48, 81,160,254,123, 51,209,165,123,119,108,137,149, 67, 2,160,201,133, 76,168,213,106, - 94, 42,149, 90,196,143, 33,114, 58,251,110,185,138, 36, 66,136,191, 70,163,249,230,151, 95,126, 81,114, 28,135,130,130, 2, 8, -130,128, 22, 45, 90,128,227, 56,156, 57,115, 6,239,188,243, 14,214,175, 95,143,159,127,254, 89,213,160, 65,131,111, 8, 33, 53, - 40,165, 5, 78,133,216,118,119,137,212,223,223, 31,106,181,218, 33,180,196, 56, 59,155,192,197,235, 41,165,201,153,153,153, 13, - 75,226,180,217,108,232,221,187, 55, 8, 33,144, 72, 36,197, 10, 31,231, 95,153, 76,134, 51,103,206,220,149, 8,221, 9, 68, 65, - 16,208,178,101, 75, 0,128, 90,173,134,159,159,159,184,238, 27, 0,160,126,253,250, 48,153, 76, 8, 11, 11,195,249,243,231,221, - 21,224,197, 56, 51, 50, 50,104, 74, 74, 10, 89,177, 98, 5,164, 82, 41, 66, 67, 67,161, 86,171,201,242,229,203, 39,201,100,178, - 56,131,193, 32,152, 76, 38,200,229,242,133,162,117,139,231,121,109, 94, 94, 94,168, 39, 78,137, 68,130,209,163, 71,227,205, 55, -223,196,210,165, 75,241,226,139, 47,222,101,241, 50, 24, 12, 8, 11, 11,115,136, 45, 95,226,126,255, 66,232, 1,115, 10, 20,103, -143,111,193,185,211,219, 33,216, 4,216, 4, 10, 74,109, 16,172,192,177,109, 7,171,220,185,150, 18, 75, 65, 1,123, 7,135, 34, -175,208,218, 54, 76, 81, 13,192,134,157,153,198,249,222,210, 39,207,243,176, 88, 44,248,229,151, 95,112,245,234, 85,108,221,186, - 21,122,189,222,241, 30,155, 53,107,134, 17, 35, 70,184, 21, 90,174,156,148,210,101,183,111,223,174,223,178,101, 75,146,155,155, -139,220,220, 92,232,245,122,216,108, 54, 88,173, 86,240, 60, 15,165, 82, 9,149, 74,133,200,200, 72, 24, 12, 6,106, 52, 26,151, -121,226, 20, 4,146,167,251,107,226,165,223,215, 76,108,210,239, 45,138,181,179, 9, 42,149, 87,232,254, 56,234, 63, 98,195,222, -241,157, 0, 80,193,174, 29, 56,128, 90,108, 66,230,155,147, 62, 25,251,208,191,209,221, 34, 43, 84,175,215,163,160,160,168,120, -144,203,229, 88,187,118,109, 88,143, 30, 61,118, 19, 66, 90,123, 18, 91,238, 56,253,253,253,227, 37, 18, 9,206,156, 57,131,207, - 63,255, 28,127,252,241, 7,210,210,210,114, 98, 98, 98, 2,219,182,109,203,189,250,234,171,168, 95,191, 62,190,253,246, 91,165, - 55, 78, 74, 41,110, 92,222,131, 27, 87,246, 66, 16,168,147, 85,220,253,127,234, 99,220,181, 90,173,225,196,137, 19,126, 95,125, -245, 21, 34, 34, 34,144,144,144, 0,181, 90, 13,165, 82, 89,172,146,117,174,120,189,229, 77,189, 94,111,184,113,227,134,223,143, - 63,254,136,208,208, 80, 84,168, 80, 1,106,181, 26,114,185,220,209, 32, 88,177, 98, 5, 86,126, 48, 4, 55, 46,158, 70,239,110, -157,188,134, 83,173, 86,255,111,217,178,101,197, 76, 32,145,193,193,224,165, 28, 36, 82,130,224, 14,125, 0, 0, 57,127,254,228, -113,118, 72, 23, 78, 82, 80, 80, 96, 56,116,232,144,223,209,163, 71, 33, 8, 2, 42, 84,168, 0,157, 78,135,128,128, 0, 71,252, -183,109,219,134, 94,189,122,225,251,239,191, 71,179,102,205,188,198,189,176,176,208,112,250,244,105,191, 31,126,248, 1, 33, 33, - 33, 40, 87,174,156, 35,238,226, 38,149, 74, 33,145, 72,144,152,152,136,188,188, 60,248,249,249,121,253, 70,199,142, 29,243,251, -225,135, 31, 16, 28, 28,140,184,184, 56,135,197, 77, 20, 71,179, 23,127, 80,140, 67, 73,162,239,155,179,180,223,221,149,179,119, -239,222,168, 84,169, 18, 2, 2, 2,160,209,104, 28,220, 37,113,138, 90, 4, 64,219,110,221,186,237,114,249,132,225,132,144, 77, - 78,207,239, 78, 8,217,228,252,235,233, 58,251,223,214,147, 38, 77,106, 52,107,214,172, 25,205,154, 53,251,113,255,254,253, 43, - 61,241,121,226,153, 52,105, 82,173, 89,179,102,205,112,190,222,205,115, 60, 91,180,186,117,235, 70,236,145,228, 1,160,122,245, -234,200,206,206,134, 66,161, 64,227,198,141,145,153,153, 9, 63, 63, 63,200,100, 50, 80, 74, 49,118,236, 88,201,248,241,227, 35, - 56,142,131,213,106,117, 20,252, 30,250,218, 5,142,227,208,188,121,115,156,181,247, 8,117,233,222, 29,113,113,113, 16,157, 60, -148, 74, 37,198,142, 29, 75,222,120,227, 13, 94,180,102, 80, 74,161,215,235, 17, 29, 29,173, 42,161, 75,238,213,117,235,214, 5, -138, 38,121,177,235, 76, 34,145,224,194,133, 11,152, 51,103, 14,134, 13, 27,134, 91,183,110, 33, 38, 38, 6,111,190,249,166,223, -172, 89,179, 94, 5, 48,213, 91,129,236,231,231,231, 16, 89,106,181, 26,175,190,250, 42,223,162, 69,139, 8, 63, 63, 63,248,251, -251, 67,236, 6,180,217,108,168, 88,177,162, 87,105, 46, 8, 2,182,108,217, 2,158,231,189, 90,180,236, 9,208, 39,206, 67,135, - 14, 57, 68,154,115, 43,137, 16,130,179,103,207, 58, 68,157, 15,156,148,227, 56,104, 52, 26, 68, 69, 69, 65,165, 82, 65,173, 86, -147, 31,127,252,241,221,132,132,132,232, 55,222,120,131,203,207,207,231,154, 55,111,142,167,159,126,154, 23, 4, 1,102,179, 25, -181,106,213,242,106,121,219,181,107, 23, 62,255,252,115,188,248,226,139,110, 45, 90,162,179,100, 64,192, 63, 62, 22,162,204, 32, - 0, 48, 91, 45,208, 21,234, 29, 93,187, 54,155, 13,167,119,158,172,114,237,228,229, 90,155,126,252, 94, 10, 0,134,157, 63, 57, -223, 22,253,244,226,213, 85,219,134,200, 14,237,204, 54, 31,242,102, 41, 28, 55,110, 28, 38, 79,158,140,129, 3, 7, 98,219,182, -109,120,231,157,119,240,220,115,207, 21,179,104,249, 2,139,197,242,197, 51,207, 60,243,226,218,181,107,171,189,245,214, 91,156, -104,209, 82,171,213,162,143, 23,140, 70, 35,244,122, 61, 46, 94,188, 40, 60,255,252,243,151, 76, 38,211, 23,158,248,172, 68,117, - 74,173,208,253, 90, 49,142,171,164,189,254,177,127,203, 39, 42,232,137,170, 97, 94,159,170, 29,105,215,225, 21,130, 65, 41,168, - 0, 8, 20, 48, 26,181, 24, 59,246, 21,201, 63,245,157,156, 69,150,193, 96,192,137, 19, 39,208,174, 93, 59,220,190,125, 27,231, -207,159, 71,149, 42, 85,176,124,249,242,240,193,131, 7,151, 40,182, 92,113,250,244,233, 73,245,234,213, 91, 80, 88, 88,152, 93, - 88, 88,184, 0,192, 74, 74,105, 46, 33,164,198,213,171, 87, 23,109,217,178,165,213,251,239,191, 47,113,241,209,145,120, 50,143, - 90, 44, 86,232,245,198, 18, 5,150,184, 79,169,224,107,220,105,181,106,213,208,163, 71, 15, 72,165, 82, 71, 99,205,185,219,204, - 85,112,149, 84,126, 0, 16, 8, 33,136,137,137, 65,215,174, 93, 33,147,201,138,113,138, 21,107,215,174, 93, 49,110,234,123,248, - 98, 92,123,124,254, 76, 21,116,156,158, 86, 98, 56,117, 58, 93,225,142, 29, 59, 84,111,190,248, 34,234, 85,174,140,176,128, 0, -148,143, 12,135, 74, 33,135,204, 57, 76,196,187,145,157, 82, 74, 9, 33,130, 68, 34, 65,237,218,181,145,150,150,134,235,215,175, -227,250,245,235,224, 56, 14, 45, 91,182,116, 88, 97,174, 92,185,130,169, 83,167,194,104, 52,250, 28,247,202,149, 43,163,125,251, -246,144,203,229, 80,171,213,197,186, 12,197,119, 90, 80, 80,128, 74,149, 42, 97,195,134, 13,168, 90,181,170, 87,206,234,213,171, -163, 77,155, 54,197,222,167, 74,165,114,212, 27, 0,112,251, 80,161,227, 25,177,177,177,165,226,220,122,248, 22,190,218,182, 3, - 70,147,128,124,157,165,216, 13,209, 97, 1,216,251,195, 91, 62,197, 93,228,252,242,203, 47,145,155,155,235, 40,131, 68,163,137, -104,164, 40, 87,174, 28,150, 44,113,111,201,116,210, 34,196,195,247,235,238, 99,131, 74,188, 78, 76, 92,138, 89,179,102,205,112, -189,223, 27,159,243,121,151,251, 77, 46,226, 44,205,167,174, 67,177,126, 16, 51, 67,108,108, 44, 68, 63, 16, 49,163, 56, 10, 82, -171, 21,235,215,175, 71, 68, 68,132, 99, 11, 12, 12,244,152,176, 69, 63,162,113, 25, 69, 46, 66,191,199,200,112, 3, 64,183, 12, -234,240, 35,177,217,108, 88,183,110, 29,156,133,140,191,191,127,137,221, 72,114,185,188,109,227,198,141, 57,163,209,120,151,200, -154, 53,107, 22, 6, 15, 30,140,170, 85,171, 66, 16, 4, 20, 22, 22,162, 93,187,118,210,133, 11, 23,182, 45,141,208, 82,171,139, -252,254, 77, 38, 19,118,238,220,137,224,224, 96,132,134,134, 34, 36, 36, 4,254,254,254,226,200, 73,234, 77,108, 80, 74,209,187, -119,111, 71,226,115,182, 98,185,138,174,253,251,247,251,212, 37, 71, 41,197, 19, 79, 60, 1,141, 70, 3, 63, 63, 63,248,249,249, - 97,203,150, 45,142,107,154, 52,105, 2, 65, 16, 16, 17, 17,129, 3, 7, 14,148,216,253, 73, 41,165, 50,153,204,113,189, 84, 42, - 37,203,151, 47,159,148,152,152, 24,253,250,235,175,115, 18,137, 4,199,143, 31,199,185,115,231, 80,161, 66, 5,159,125,182,114, -115,115,239, 76,154, 52,201, 54,105,210, 36, 0, 64,173, 90,181,144,155,155,155, 46,158,207,207,207,207,234,220,185,115, 49,191, -141,204,204,204,172,127,189,208, 18, 4, 88,205, 86,232, 12, 6, 20, 22,232, 28,214,161,244,148,180,160,183,222,120, 77, 58,103, -236,179, 0,128, 55,230,127,138,130,165,127, 23,100, 63,189, 49, 40,162,207, 39,171, 38, 2,232,229,165,242,129,209,104, 68,124, -124, 60, 14, 31, 62,140,130,130, 2,116,236,216,177,152,197, 84,124,167,222, 76,244,148, 82, 19, 33,164, 69,247,238,221,143,204, -155, 55,175, 98,141, 26, 53,136, 86,171,133, 78,167,131,243,239,233,211,167,233,202,149, 43,175,233,116,186,230,148, 82,147, 39, -190, 45,201, 95, 95,237, 18,251,220,218, 63,142, 75,186, 71, 84,186, 20,144,156, 83,209,154,149,172,208,230,235, 47, 26,108,244, - 28,168, 13,176, 65, 0,181, 10,176,217,187,189,254, 41,168, 84,170, 69,123,247,238, 13, 53, 24, 12, 56,118,236, 24,134, 14, 29, -106,202,204,204,148, 3,192,255,254,247, 63,211,138, 21, 43,228,149, 42, 85,194,242,229,203,195,159,126,250,233, 53, 0,106,251, - 88,208,127, 15,224,123,215,227,161,161,161, 11,111,221,186,213,214,217,231, 71,108,172, 2,112,219,168,164, 2, 96,177, 88,160, -215, 27,145,151, 87, 0,147,217, 98, 47, 51, 5,216,108, 86,251,175, 0,171,189, 28,149,203,120,255,134,117,162, 11, 41,165,224, - 8,201, 61,122,250, 78, 57, 79,229,146,167, 46, 46, 95,172, 89,110, 96, 19, 71,153,133,134,134, 66, 42,149,226,251,239,191,199, -169,125, 91, 32,151, 80,216,172, 22, 88, 45,102,216, 44, 38, 72, 37, 18,252,113,252, 58, 58, 85,247, 62,144,155, 16, 66,195,194, -194,208,173, 89, 51,116,111,214,172,104,120, 27,207,195, 79,161,128, 90,166, 44,178,100, 1,160, 54, 14,240, 45, 41, 9, 98, 56, - 35, 35, 35,113,244,232, 81,140, 27, 55, 14,179,103,207,134, 74,165,114,140,126,190,112,225, 2, 86,175, 94,141, 78,157, 58,149, - 58,238,162, 5,111,226,196,137, 72, 73, 73,193,252,249,243,209,176, 97, 67, 72,165, 82,228,230,230,162,121,243,230, 72, 75, 75, -243,137,211,185,123, 79, 46,151, 23,179, 62,137, 2,176,180,223,200,153,243,217,222,209,216,184,111, 37, 8, 8, 14,254,240, 90, -177,186,104,201,170, 61,165,230,156, 60,121,114,177,112,250, 98,205, 42, 69,195,104,147, 47, 98,203,233,186, 99,162,177,117,226, -196,137,111, 19, 66, 54, 77,156, 56,241,237,153, 51,103,158,245,133,207,195,249,205,162, 46,116, 58,118,204,103,161, 69, 41,165, -114,185, 28,130, 32, 20, 19, 87,174,142,183,162, 41,208,217,212,232, 77, 20, 8,130,224, 72, 20,174,205, 54,137, 68,130, 3, 7, - 14,224,192,129, 3,197,142,127,245,213, 87, 37, 86,228, 86,171,181,134,191,191,127, 49,107,150, 76, 38,195,196,137, 19, 49,116, -232, 80,135,200,146,201,100,248,238,187,239,208,168, 81, 35,152, 76,166, 26, 94,252, 85,116, 81, 81, 81,156, 88, 16,105, 52, 26, - 50,110,220, 56,137,213,106,117,188, 19,113, 19,125,215,188, 37, 26,113, 20,203,214,173, 91,125,178,104,249,234,163, 68, 41,197, -201,147, 39,139,137, 55,113,212, 12, 0,156, 60,121,210,225,191,229, 11,167, 68, 34,129,205,102,131, 74,165, 34, 50,153,140,200, -100,178, 56, 81,100, 73, 36, 18,199,247,118,246,217,243, 22,247,228,228,228,118, 37,157, 79, 79, 79,127,108,167,113, 48, 91, 44, -208,235, 76, 40, 40,212, 99,202,204,111,139, 14, 78,193, 33, 0,135, 90,188, 52, 14,163,187,116,106,239,226, 7,224, 75, 65,227, -168, 28,215,173, 91, 7,169, 84,138, 13, 27, 54, 32, 32, 32, 0, 61,123,246, 68, 64, 64, 0,222,122,235, 45, 12, 28, 56,208,103, -139,150, 61, 45,229, 17, 66, 90,188,250,234,171, 71, 62,254,248,227,242,229,202,149,131,201,100,130,217,108,134,201,100,194,213, -171, 87,177,114,229,202,219, 58,157,174, 5,165, 52,207, 27,223,150,228,175,175,174,223,253, 70, 74,199,129, 79,235, 47,164,253, -142,212,212, 44, 88,173,201, 16,108, 86,152,173, 69, 35,152,109, 86, 43,172, 86, 27,100, 50, 73,192,199, 31,190,182, 77, 0, 5, -199, 17, 83,191,126,253,158,122, 88,223, 40, 40, 40,168, 86, 70, 70, 6, 46, 95,190,140, 97,195,134,165,102,101,101,157, 7,208, - 1, 0,178,178,178,246, 14, 29, 58,180,198,178,101,203,162, 18, 18, 18,224,231,231, 23,224,195,247,241, 3, 48, 26, 64,103,187, - 31,136,136,108, 0,211,194,195,195, 21,199,142, 29,187,203,250,191,123,247,110, 0, 56,228,222,100, 96,183,104, 25, 12,200,200, -202,193,200,151,222,117,152, 18, 0, 90, 76, 92, 80, 80,140,122, 25, 74, 0,200, 76,187,138,103, 71,142, 83,120,107, 16,184,171, - 8, 75,225,163,227,108, 41,114,164, 81, 63, 63,191,162,238,183, 13, 43,177,249,147,151, 0,155, 25,212,162, 7,204, 58,192, 92, - 8,193,164, 3,145,169, 0,139,222, 39,161,229,231,231, 7, 63,149, 10, 17, 65, 65, 69,147, 64, 74, 36,144, 74,121, 8, 22,128, -216,136, 67,144, 10, 54,159,210, 58, 13, 11, 11,131, 32, 8, 80,169, 84,184,113,227, 6, 70,143, 30, 13,179,217,140,222,189,123, -195,100, 50,193, 96, 48, 64,175,215, 35, 49, 49, 17, 58,157,206,167,184,139,229,188,216,251,243,218,107,175,161, 81,163, 70,152, - 58,117, 42, 38, 76,152,128,196,196, 68,140, 26, 53, 10, 43, 87,174, 68,173, 90,181, 74,228,117,126,159, 34,167,248, 93, 92,187, -248, 0,148,250, 27,185,114, 22,141, 15,192, 93,223,253,149,103, 58,148,154,115,214,172, 89,200,200,200,184,203,146, 37,254,143, -141,141,197,226,197,139,239,181,235, 95,180, 30, 69,186, 51,136,185,177, 68, 53, 70,145,239,148,113,230,204,153,103,103,206,156, -217,157, 16,178,105,230,204,153,221, 75,176,104,117,243, 98,241,234,134, 34,159, 44,159,192,187,244,141,182,117,182,148,136, 21, -169, 88,161, 59, 23,242,106,181, 26,235,215,175,135, 56, 2,196,249,154,146,132,214,175,225,118,211,177,221,146,229,188,223,163, - 71, 15, 36, 36, 36, 20,179,102,169, 84,170, 18, 19,143, 32, 8,184,121,243, 38,206,158, 61,139,166, 77,155, 34, 47, 47, 15, 82, -142,195, 27,167, 79,163,230, 51,207,192,100,183,208,200,229,114,188,248,226,139, 62, 57,180, 95,191,126, 61,216,121, 63, 44, 44, - 44,169, 85,171, 86,177,135, 15, 31,118, 56,200,219,187,213, 28,130,195, 23, 17, 67, 41, 69,223,190,125,139, 89,177,156, 69,150, -243,246,251,239,191,251,212,117, 72, 41, 69,171, 86,173, 28,214, 44,127,127,127,252,252,243,207,142,111,213,186,117,235, 34,127, -134,200, 72,159, 56,197,120,216, 29,224, 97, 48, 24,132,130,130, 2,238,216,177, 99,144,203,229, 14, 11,158, 74,165,130, 82,169, -132, 66,161,184,167, 17, 68,255, 5, 80, 42,192,100,177, 64,175,215,163,176,176,104,102,145,171,103,214, 21, 23, 98,198,252,123, -230, 23,173, 86, 5, 5, 5,248,227,143, 63,240,211, 79, 63,161, 97,195,134,119, 57,195,251, 98,209,114, 74, 79, 25,132,144,150, -227,199,143, 63, 56,125,250,244,152,144,144, 16,152,205,102,220,186,117, 11,223,124,243, 77,138, 78,167,107, 73, 41,205,240,253, - 37, 0, 22,139, 21, 6,157, 17,121,249, 5,248,224,195,239, 60, 38, 61, 0,200, 78,191,136, 30, 61,251,203, 31,230,119, 74, 73, - 73,121,189,101,203,150, 31, 22, 20, 20,228,234,116,186,254, 0,230, 56, 27, 14,179,178,178, 90,245,236,217,115, 94, 72, 72, 72, -195,244,244,244,183,125,160,156,120,227,198,141,183,227,227,227,139, 29,180, 91, 31,171,166,167,167, 15,105,221,186,245,123, 0, - 66,156, 78,251, 3,216, 10, 96,177,167,180, 36,118, 29, 22, 22,234, 17, 16, 20,141,228,235,187,188, 6, 68, 38, 49,128, 10,130, -215, 6,160, 59, 43,150,115,249, 84,138,244, 67, 69,159, 64,177,194,126,170,239, 51,120,106,244, 44,168,165,192,140,103, 91, 32, - 49, 8,128, 42, 4,178,214,111,129, 4,217,223,209,232, 95,124,226,159,240,249,231, 56,126,185,104,102,152,184,240,112,140, 31, - 56, 16,212, 2,236, 63,119, 14,171,118,236,192,192,118,237,160, 86, 42,125,110,176,136,141,240,171, 87,175, 98,255,254,253,168, - 94,189, 58,174, 92,185, 82,108, 26, 10, 74,169, 79,241,167,148, 82,113, 16,147, 66,161,128, 84, 42, 69,106,106, 42,186,119,239, -238,104,232,239,218,181, 11,227,199,143,199,136, 17, 35,208,182,109, 91,183,126,179,174,156,225,225,225, 14, 3,130,235, 64, 5, -231,238,220,210,124, 35,119,156, 34,238,245,187, 59,115, 78,159, 62,221,237,128, 10, 95, 56,157,181, 72, 9, 56,230, 98, 77,130, -232, 47, 37, 10, 35,215,125, 0,193,226,177,137, 19, 39,190,237,235,125,206,251,162, 69,172, 52, 93,152, 14,161,213,173, 91, 55, -226,174,178, 21,205,200,238,160,209,104, 48,102,204, 24, 76,158, 60, 25, 97, 97, 97, 94,125,107, 68, 37, 91, 18,126,249,229,238, -204,182, 97,195, 6,111, 93,135, 23, 2, 3, 3, 27,181,107,215, 14,121,121,121,184,125,251, 54, 52, 26, 13,106,126,242, 9, 78, -143, 30,141,122,159,127, 14,174,125,123,199,100,171,167, 79,159,134, 74,165,186, 80, 90, 11,130,191,191, 63,130,131,131, 29,125, -238,162,224,114,178,104, 81, 31, 18, 35,126,253,245, 87,183,173,198,123,241,209, 18, 11,129,131, 7, 15, 22,243,207,114, 22, 62, - 7, 15, 30,116, 88,180,196,219,124,233,242, 82,169, 84, 84,228, 83,171,213, 8, 9, 9,129, 66,161,128, 74,165, 42, 38,178,124, -177,230,121,155,144, 84,165, 82, 29,214,104, 52, 65,226,121,169, 84,138,130,130,130,220,172,172,172, 38,255,234,174, 67, 80, 88, -205, 86,232,245, 6, 20, 22,232,203,156, 95, 28,152,178,126,253,122, 60,241,196, 19,119,137, 44,241, 93,223, 67,139, 49,137, 16, -210,118,193,130, 5,135,230,206,157, 27, 92, 88, 88,136,111,191,253, 54,175,176,176,176, 45,165, 52,169, 84, 92, 2,133,197,108, -134,206, 96,132,182,176,232, 29,252,117,118,221, 35, 38,136,233, 74, 0, 43, 93, 45,134, 78,231,255, 2,208,189, 20,148, 79,196, -199,199, 35, 53, 53,181,216,193,155, 55,111,194,102,179, 25,237,243,100, 61,231,244, 60, 9,165,212,230,173,236, 48,219,187, 14, - 11, 11,139,172, 32, 6,109,102,217,164, 83,187,216,240,228,147,117, 47, 93, 60,226, 72,103,137, 68,130,177, 99,199,226,244,169, - 83,232, 16,147,143,196, 40,127,208,252,100,200,218,191,143,147, 25, 42,204,153,247,107,169,185, 87, 59, 13,246,153,179,122,181, -219,115,127,245,234, 85,170,184, 95,186,116, 9, 42,149, 10, 54,155,237,174,250,166,180,241,119, 22, 48,243,230,205,195,248,241, -227,241,221,119,223,225,244,233,211,168, 87,175, 30, 58,118,236,136,244,244,116,156, 58,117, 10, 70,163,209,231,112, 58,251,205, - 93,186,118, 14,219,247,255,134,155, 73,215,145,146,122,251,158,191,187, 51,167,171,208, 90,191,253, 4,250,118,106,112, 79,156, - 31,124,240, 1,210,211,211,139, 89,178,156, 7,144,121,178,104,185,106, 17, 23,100,186,248, 66,137,251, 38, 23,209,227,186,239, -122, 61, 0,164, 3,144,120,185,207,117, 63,115,230,204,153, 59, 69, 75,152,157, 87,226,205, 63,203,109,215,161, 40,138,196,140, -226,106,169, 18,255,107, 52, 26,248,251,251,195,223,223, 31, 1, 1, 1, 94, 45, 69,162,208,106,117,173,160,152,175,151,104,217, - 2,128, 17, 35, 70,220,101,209,114,158,216,211, 29,140, 70,227,174, 93,187,118,213,239,209,163,135,228,194,133, 11,144, 72, 36, - 16, 4, 1,166,102,205, 80,239,243,207,113,230,181,215,208,230,198, 13, 24,204,102, 40,149, 74,108,217,178,197,172,211,233,118, -149,182,220,112, 22, 90, 26,141, 6,129,129,129, 14,161,225,139, 74, 23, 51,111, 73,254, 15,226,230, 60, 24,192,151, 76, 45, 86, -168,206,126, 57,132, 16,232,245,122,135, 83,167, 47, 86, 71,231,174, 67,231, 12,200,113, 28,130,130,130, 28,133,135,104,209,242, -213,154,231,109, 66, 82,181, 90, 29,112,241,226,197, 74,226,244, 19,153,153,153,104,223,190,253,229,127,189, 73, 75, 0,204, 86, - 27, 10,245, 6, 20,234,117,101, 70, 43,166,181,239,191,255, 30, 87,175, 94,133,217,108,198,204,153, 51,239, 18, 88,165,113,134, -119,147,174,174, 54,104,208, 64,120,242,201, 39,113,240,224, 65, 40, 20, 10, 11,165,180,212,243, 95, 9, 84,128,217,106,133, 65, -175, 71,161, 86,251, 95, 49,102, 58, 84,245,249,243,231, 97, 50,153, 48,117,234, 84,219,145, 35, 71,118, 2,120,201,254, 13, 57, - 0, 67,218,180,105, 51,173, 91,183,110, 65,132,144, 87, 40,165,223,149,148,207, 45, 86,187,104, 47,195,247, 40,166, 37, 79,101, -210,189, 76,179,226, 92,177, 10,130,128, 23,158,127, 30, 29, 99,242,209,167, 97, 56,180,119, 46, 67, 29, 24, 14, 18, 84, 1,115, -230,253,138,179,215,124,118,197,164, 0,240,100,155, 94,168, 91,253,238,233,193, 90,118, 40,106,147,237,253,227, 48,210, 50, 83, - 74, 29,119,173, 86,235,209,114,229,171, 69, 75,228, 20,167, 89,145, 74,165,168, 95,191, 62,170, 84,169,130,157, 59,119,162, 65, -131, 6,184,114,229, 10,174, 92,185,130, 27, 55,110,224,244,233,211,200,201,201, 41,245, 55,250,121,235, 42,228, 20,100, 67, 46, -147, 35, 59, 55, 19, 55,147,175, 35, 50, 52,234,190,191,187,136,106,221, 62, 0, 0,196,132, 7,150, 74,104, 57,115,126,244,209, - 71,119,137,247, 50,152,178,231,176,151,253,210,222,255,208,192,123,176, 18,233, 67, 66, 66, 84,206,253,171, 28,199, 33, 48, 48, -144,204,158, 61, 91,194,113, 28,252,253,253, 17, 24, 24, 8,209, 92,232, 13,114,185, 92, 95,161, 66, 5,149,152, 16,197,140, 24, - 16, 16, 32,153, 61,123, 54,249,234,171,175, 60, 90,185,188,248,104,205, 29, 58,116,232,115, 73, 73, 73,193, 17, 17, 17,184,115, -231, 14,228,114,121, 81,230,104,215, 14,173,174, 93,131,185,200,231, 8,151, 46, 93,194, 23, 95,124,161, 53, 26,141,115, 75,251, -162,252,252,252, 16, 26, 26,234,232, 50, 20, 45, 58, 78,162,209, 39, 23,204,146, 76,244, 98, 11,240, 94,186,144, 92,197,214, 75, - 47,189, 84, 76,116,249, 10,153, 76,102, 21,103,126,231, 56, 14,102,179, 25, 13, 26, 52, 64,122,122,186, 35,211, 56, 91,242,124, - 17, 90,222, 38, 36,229,121, 30, 38,147, 9,173, 91,183, 6, 33, 4,159,126,250,233,227,209, 29, 41, 8,196,207, 47, 20, 49, 49, - 85, 17, 30, 97,128, 32,148,221,170, 50, 86,171, 21,163, 70,141, 42,102,193, 18, 71, 54,138, 93,255,148, 82, 88, 44,150,123,158, -252, 85,204,215,247, 51,127, 28, 5, 28, 93, 94, 90,173,225, 95,247, 9, 35, 34, 34,154, 18, 66, 54,184, 28,206, 6, 48,205,221, - 12,238,118, 56, 62,244,237,219,183,209,165, 75, 23,252,246,219,111,146,159,126,250,169,195,198,141, 27,207, 85,170, 84,233,246, -128, 1, 3,202,189,248,226,139,138,214,173, 91, 35, 51, 51, 19, 13, 27, 54,156, 2,160, 4,161,101,127,143, 6, 35,180,218,178, -183,142,150,212,224,187, 31, 1, 55,121,242,123,232, 24,157,139,222,245, 2,177,108,211, 62, 12,169,175, 2, 76,138, 82,243,137, - 97, 9,137, 73, 64,133, 90, 77,239, 58,175, 8, 40,234,178,171, 80,171, 41,184,219, 87, 74, 29,119,231, 48,187,150,151,247, 98, -209,115,126,159, 35, 71,142,196, 91,111,189,133,206,157, 59,227,202,149, 43,216,189,123, 55,174, 92,185,130,113,227,198,161, 86, -173, 90,168, 87,175, 94,169, 56, 55,110, 95,139,252,194, 60,112,132, 67,118, 94, 22, 12, 70, 61, 38,140,154,124,223,223, 93,196, -245,237, 51, 1, 0,235,182, 29,191,103,206,119,222,121, 7,169,169,169,197, 44, 89,247,227,151,245,111,135, 91,161,149,149,149, -229,182, 31, 48, 60, 60, 60,173, 83,167, 78, 17,119,238,220,129,159,159,159, 87,145, 69, 8,233, 40,206,181,145,154,154,234,150, -211,223,223,223,220,169, 83, 39,105,116,116,116,177,209,134, 26,141,230,174, 76,230,202,105,175, 4, 10, 8, 33, 47,180,104,209, - 98,217,239,191,255,174,174, 82,165, 10,242,243,243, 65, 41,197,119,223,125,135,177, 99,199, 66,169, 84,226,210,165, 75,232,217, -179,167, 78,167,211,189,224, 60,135,150, 59, 78, 79, 45, 52,113, 86,124, 55, 34,171,196,184, 59,103,214, 5, 11, 22, 96,198,140, - 25,120,251,237,146, 93, 61,150, 46, 93, 10,184,116,243,185,227,164,148, 98,206,156, 57,101,198,153,149,149,245,157,139, 53,234, -211, 62,125,250,240,183,111,223, 46, 38,174,156, 55, 55, 5, 83, 49, 78,111, 19,146, 74, 36, 18, 68, 70, 70, 98,250,244,233, 8, - 13, 13, 69, 84, 84,212, 93,150, 24,111,223,232, 30, 43,131, 7,202,105,163,194,177,143,103,189,215,242,219, 21, 27,165, 10, 57, -112, 96,247, 58,228,231, 20,239, 78, 50,154,255, 30, 74, 45,111,208, 1,166,227,127,248, 20, 78,163,209,136,143, 62,250, 8, 31, -124,240, 1, 62,248,224, 3, 95,190,251,125,197,221, 23,177,229,150, 83,160, 68,173, 9,134, 82, 19,131,154,181,130, 33, 80,235, - 35,245,141, 60,224,200,225,195,135,123,134,134,134, 34, 41, 41, 41, 92, 42,149,246, 44,102,174,210,235, 81,161, 66,133,170, 0, -154,123,227, 28, 55,110,156,241,221,119,223, 85, 12, 26, 52, 8,125,250,244,193,160, 65,131, 20, 50,153,172, 50,165, 20,102,179, - 25, 73, 73, 73,248,227,143, 63,144,145,145,113,161,164,112, 10,148, 18,149, 58, 8, 74, 77, 52,106,214, 14,130, 32, 88,203, 36, -238, 98, 37,232,106,205, 42,229,132,212,110,203, 58, 0, 56,242,199, 6, 76,126,173, 54,190,219,124, 8, 11, 15, 3,117,131,210, - 81, 51, 60, 3, 66,198, 5,188, 57,164, 17,230,252,112, 20, 0,176,123,151,215,111, 84,226,252,200, 6,189,249,190,226,238,108, -185,114,126,142, 55, 31, 45,119,156, 98, 35,177,160,160, 0,185,185,185, 88,182,108, 25,158,125,246, 89,164,167,167,227,198,141, - 27,184,124,249, 50,126,252,241, 71,199,104,246,210,126,163, 55,158,127, 7,239,206,121, 29, 20, 20,213, 42,213,196,196,209, 31, -160,113,221,102,247,253,221, 93,225,205,154, 85, 18,231,252,249,243,239, 41, 45,253,167,132, 86, 73,173, 10,142,227, 16, 22, 22, -230, 72, 36,206, 9,240, 94, 90,190, 18,137, 4, 86,171,213,225,251, 35,110, 0,208,163, 71, 15,252,242,203, 47,190,140,164,248, -157, 16,242,191, 26, 53,106,124, 51,101,202, 20,191, 54,109,218,240, 49, 49, 49,104,220,184, 49, 46, 93,186,132,205,155, 55, 91, - 22, 47, 94,172,213,233,116, 35, 40,165,219,238,165,124, 18,151,180,113,222, 74,211,234, 49,155,205,183,175, 92,185, 18, 61,103, -206, 28, 9,199,113,152, 63,127,190, 35, 83,138, 19,190, 58, 99,247,238,221, 86, 65, 16, 74,236,170,177, 88, 44,183,175, 92,185, - 18,253,201, 39,159, 72, 8, 33, 14, 78,142,227,224,188,128,115,105, 56,221,137, 76,113, 96,132,187,205, 93,216,221,125,227,146, - 38, 36,229,121, 30,151, 46, 93,194,228,201,147, 65, 8,193,186,117,235, 30,139,204,117,250, 66,230, 87,245,106, 70, 4,247,120, -170,101, 29, 16, 2,179,233,238,217, 16,252,114, 10, 29, 34,171,207, 39,171,240,211, 27, 3,125, 17, 61, 87,247,238,221, 27,242, -209, 71, 31,241, 18,137, 4,243,230,205, 43, 54,105,176,235,119,223,179,103,143,245, 94,186,253,196,252,108, 54,155,161,215,223, -155, 21,133, 82,186,127,230,135,239,118, 90,254,253,175, 82, 66, 76, 56,176,107, 29,242,114,221,187, 51,200,165, 60,190, 90,182, -222, 42,147, 74,110,255,195,159,238,179,222,189,123, 15, 90,180,104, 81, 77,119, 39,111,223,190, 13, 65, 16, 74,114,174,185, 97, - 48, 24,144,156,156, 12,157, 78,183,118,210,164, 73,230, 95,127,253,245,185,167,159,126, 26,245,234,213, 67,116,116, 52,238,220, -185,131,171, 87,175, 98,217,178,101,116,223,190,125,107, 1,140,241,242, 30, 55,204,250,240,221, 97,203,126,248, 85,206, 17, 51, - 14,236, 94,135, 60, 23,209,126,183,117, 90,138,175,191, 91,111,150,201,164, 23,189,149,235,206,214,172,178,172, 24,123, 14, 29, -141, 62, 11, 22,162, 98,227, 46,152, 53,187, 35,190,254,176, 63,230, 62, 41,131,121,205, 16,212,237,183, 28, 43,167,118, 5, 0, -196,124,237,163,181,132,151,225,150, 27,139, 85,110,158,210, 46,110, 74,103, 53, 21,227, 94, 82, 25, 94, 90,139, 22,199,113, 72, - 72, 72, 64,197,138, 21,209,162, 69, 11, 52,104,208, 0,237,218,181,195,169, 83,167,112,234,212, 41,140, 27, 55,206,163,200,242, -229, 27,181,109,222, 9,135, 90, 93,188,239,111,227,250,221,203, 2,190,164,165,209,163, 71, 3,192,127,202,186,197,223,203, 75, - 20, 19,230,253, 46, 73, 35,114,154, 76, 38, 71,151,156,243,188, 76,162,115,188,143, 35,250,182, 17, 66,106,189,247,222,123,175, - 41,149,202,118, 58,157,174,170,221, 34,115,201,104, 52,238,208,235,245,243, 40,165,185,247, 19, 86,231,233, 28,220, 5,161,164, -123,115,114,114,186,116,233,210,101, 27,207,243, 9,174, 11,254,186,203,200,130, 32,220, 72, 75, 75, 43,113,136,123, 86, 86, 86, -151,206,157, 59,187,229,116, 87, 64,248,194,233,238,251, 8,130,224, 81,100,249, 82, 16,121,155,144,148,231,121,104, 52, 26,252, -252,243,207, 8, 11, 11,123,172, 50,216,201,115,233, 31,149,116,190,109,152, 98, 23,128,240, 62,159,172,186,181, 51,211, 20,223, - 54, 76,126,243,167, 55, 6,150, 47,233,158,204,204,204,206,207, 62,251,236,111, 60,207, 39,184,190,127,119,223,194,106,181, 94, - 79, 77, 77, 45,245,116, 9,148, 82, 92,188,120, 81, 24, 57,114,100,102, 70, 70, 70,255,123,137,255,196,201, 11,231,206,152, 50, - 54,244,201, 78, 77, 27,131, 3, 76,158,157,127, 41, 1, 40, 47,149,220, 30,255,246,252,231,255,201,111, 70, 41,205, 39,132,180, -232,219,183,239, 24, 20, 13, 13,191, 75, 72, 1, 88, 80, 2,197,130,114,229,202,213,150, 72, 36, 10, 0,147, 41,165, 55, 9, 33, -159,237,219,183,175, 51,128, 39, 36, 18, 73,180,205,102, 75, 70,209,154,143,171, 40,165, 39,189,167,163,180, 23,235,213, 8,143, -123,178,227, 19, 93, 64, 8, 53,153,140, 94, 26, 72,160,160,148,202,100,210,139,135, 79,166,212,245,102,173,183,175,192, 81,230, - 93,246, 99,198,140,193,152, 49, 99, 28,233,233,211, 79, 91, 97,237,153,189,232, 87, 55, 9,198, 47, 90,130, 4,148,247,185,193, - 7, 0,239,188, 55,178, 44, 45,155,197, 6,105,149,149,143,150, 68, 34, 65,102,102, 38, 46, 93,186,132,180,180, 52,232,116, 58, -156, 63,127, 30,102,179, 25, 57, 57, 57,168, 93,187,246, 61,135,179,172,190,209, 63,201,249, 95,236, 62, 44,149,208,178, 90,173, - 73,222, 86, 89,183, 88, 44,165, 26,149, 36,149, 74, 13, 85,170, 84, 33,238, 70, 39,136,255, 53, 26,141,222,199, 2, 50, 23,192, -100, 0,147,237,235, 89, 33, 59, 59,251,190,213,160,205,102, 75,137,143,143,151,120, 18, 48,246,119,147,230, 37,108, 90, 0,205, -202,184, 66, 40,115, 78, 55,223, 71, 91,189,122,117,135,175,151,235,156, 40,246,197, 86, 75,244,206,245, 54, 33,169, 86,171,189, -211,165, 75, 23,155,243,121,231, 9, 77, 31,107, 16,122,179,235,160,231,226,119,102,154,226, 1, 64, 20, 91,240,236,255, 3, 74, -169, 30, 64,155, 7, 29,180,107,215,174,153,158,120,226,137,239, 11, 10, 10, 70, 83, 74,239,217,155,255,237,247, 63,125,251,223, -246, 89, 40,165,249, 0,102,220,227,189, 55, 1,180,119, 57,118, 18,192,201,251, 9,211,201,243, 25,101, 62,183,152,213,106, 77, -170, 88,177, 98,169, 44, 55,222,202,120,139,197, 82, 98, 61,113, 22,129,120,251, 32, 80,180, 76, 92,150, 79,156, 6,131, 33,187, - 89,179,102,210, 82,198, 45,221,215,184, 71, 71, 71, 35, 38, 38,198,241, 43,194,245,184,183,112, 90,173,214,164,184,184, 56,132, -133,133,121,156,241,221,213, 39,203, 23,206,178,254, 70, 37,113,198,196, 44, 47,115,206,178,210, 11,255, 9,161, 37,174, 97, 88, -150, 72, 75, 75,123, 32,107,174,208,178, 48,183,253,109, 57,106,140,255, 40,178,178,178, 66,239,151,195,219,132,164,105,105,105, -237,254,171,239,119,103,134,105,248, 93,199,236,162,235,159,134, 86,171, 45,239,109,218, 1, 79,232,215,175,159, 13, 12,143, 60, - 50, 51, 51,203,188, 76,127, 16,245, 68,118,118,118,157,255,106,220, 31, 68, 56,255, 45,156,143, 11,152,151, 26, 3, 3,131,167, -198, 10, 19, 75, 12, 12, 12, 12,247, 9, 2,160,163,135, 66,214,231,145, 62,132,144,142,247, 80,136,111,103,156,140,147,113, 50, - 78,198,201, 56, 25,231,127,139,211, 27,119, 89,143, 52,126, 20, 90,173, 15,108, 3,208,145,113, 50, 78,198,201, 56, 25, 39,227, -100,156,140,243,191,186,177,174, 67, 6, 6, 6, 6, 6, 6, 6,134, 7, 4, 38,180, 24, 24, 24, 24, 24, 24, 24, 24,152,208, 98, - 96, 96, 96, 96, 96, 96, 96, 96, 66,139,129,129,129,129,129,129,129,129,129, 9, 45, 6, 6, 6, 6, 6, 6, 6,134, 7, 7, 82, -134,243,122, 50, 48, 48, 48, 48, 48, 48, 48, 48,184, 10,173,205,155, 55, 59,212, 86,183,110,221, 8,123, 45, 12, 12, 12, 12, 12, - 12, 12, 15, 19,143,171, 22,225,153,192, 98, 96, 96, 96, 96, 96, 96,120, 20,240, 56,106, 17,206,157,146,100, 96, 96, 96, 96, 96, - 96, 96,120,216,120, 28,181, 8,247, 56,171, 72, 6, 6, 6, 6, 6, 6,134,127, 15, 30, 71, 45,194,124,180, 24, 24, 24, 24, 24, - 24, 24,254,113,252,155,181, 8, 33,132, 2, 0,165,148,136,251,142,255,108,212, 33, 3, 3, 3, 3, 3, 3, 3,195,189, 9, 44, - 74, 41,241,244,203,132, 22, 3, 3, 3, 3, 3, 3, 3, 67, 25, 9, 46,241, 63,240,183,117,139,123,192, 15,238,200, 56, 25, 39, -227,100,156,140,147,113, 50, 78,198,249, 56, 67, 20, 85,226,127,231,125,158,189, 30, 6, 6, 6, 6, 6, 6, 6,134,251, 22,159, -212,157,240, 98, 66,139,129,129,129,129,129,129,129,225, 62, 69,150,179,184,114,222,103,107, 29, 50, 48, 48, 48, 48, 48, 48, 48, - 60, 32, 48,139, 22, 3, 3, 3, 3, 3, 3, 3,195,125, 64, 28,105,232,188,207,132, 22, 3, 3, 3, 3, 3, 3, 3, 67, 25,138, - 45,119,199, 9,128,142, 30,110,216,238, 43,249,189,140, 62,240,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211, - 27,119,105,244,199,163, 2, 66, 72, 27, 0, 59, 1,180,181,255,254, 45,188, 40,165, 15,108, 3,208,145,113, 50, 78,198,201, 56, - 25, 39,227,100,156,140,243,113,222,138,228,212,223,191,206, 27,115,134,103,240,166,210,121, 66, 8,127,175,231, 31, 22, 39, 3, - 3, 3, 3, 3,195, 63, 92, 95, 82,241,215,217, 95,139,247,112,113,101, 0,111, 3, 8,116, 58,124,152, 82, 58,211,229,186, 31, - 0,168,157, 14,105, 1, 76,165,148, 94,241, 33, 76, 50, 59,191,194,190, 9, 0, 12, 0,140, 0, 10, 0, 88,216,103,251,199, 19, - 77, 51, 0,221,237,255, 55, 81, 74, 15,148,230,252,195,226,124, 88,136,137,137, 81, 5, 7, 7,119, 62,126,252,184,252,252,249, -243,216,179,103, 15,253,234,171,175,204, 57, 57, 57, 91, 83, 82, 82,244, 44,197, 60, 22,105,190, 11,128,137,246,221, 89,148,210, - 45,247,201, 71,212,106,245, 56,141, 70,211, 85,161, 80,196, 88,173, 86,162,211,233, 82,180, 90,237, 54,171,213,250, 9,165, 84, -184, 7,206, 94, 33, 33, 33,207, 85,171, 86,173,242,141, 27, 55,146, 83, 82, 82,126, 0,176, 6, 64,255,152,152,152, 33, 21, 42, - 84,136,189,120,241,226,149,236,236,236,175, 41,165, 27,254,169,112, 50, 48,252,151,224,201, 63,203,163,208, 2, 48,153, 82, 58, -196, 37, 35,222,117, 81,251,246,237,123,110,221,186, 85, 45, 8, 2,196, 77,165, 82, 89, 1, 12,247, 18,166,208,253,251,247,199, -143, 30, 61,186, 79, 74, 74, 74,163,130,130,130, 38, 0,160, 86,171, 15, 69, 68, 68, 28, 89,176, 96,193,143,157, 59,119, 78,178, - 11,174, 82, 89, 74,164, 82,233,179,193,193,193, 93,173, 86,107, 3, 74, 41,164, 82,233,241,156,156,156, 45, 22,139,229,107, 74, -105,169,197, 27, 33, 68,206,243,252, 24,133, 66,209,197,106,181,214, 1, 0,158,231, 79, 27,141,198, 45, 86,171,245, 51, 74,169, -233, 30, 56,149,114,185,124, 76, 64, 64, 64, 39,147,201, 84, 7, 0,228,114,249,233,252,252,252,109, 38,147,233, 51, 74,169,225, - 17,168,112,120, 0,221, 41,165, 82, 0,144, 72, 36,189,154, 53,107, 22, 79, 8, 17,196,249, 65, 56,142,171,111,179,217, 56,251, -245,221, 9, 33, 71, 40,165,214,210,112, 62,241,196, 19,229,120,158,167,246,153,116, 57,142,227,234,150,134,179,172, 16, 30, 30, - 62, 67, 16,132,152,146,174, 9, 12, 12,108,116,252,248,241,106,171, 87,175,182,125,241,197, 23,185, 35, 70,140,240, 27, 61,122, - 52,255,233,167,159,126, 6,224, 21,215,235,195,194,194,230,114, 28, 23,230,203,243, 5, 65,200,204,204,204,124,157, 21, 87,255, - 56, 38, 46,222, 94,208,154, 82, 96, 76, 39,127, 14,192,125, 9,173,216,216,216,101,195,134, 13, 27, 84,167, 78, 29,158, 82, 10, -139,197, 2,163,209, 88,237,192,129, 3,109,215,173, 91,215, 8, 64,255, 82,230,203,231,223,122,235,173,233,211,166, 77, 11,147, - 74,165,196, 98,177, 84, 90,189,122,117,131, 23, 95,124,241,213,165, 75,151,150, 27, 48, 96,128,191,120,124,242,228,201,141, 9, - 33,137,148,210, 79, 30,118, 56, 25, 24,254,131,141,180, 54, 40,238,163, 53,133, 82,250, 65, 73, 66, 75, 99,191, 49, 13,192, 97, -209,162,229,122,209,159,127,254,185,145,231,121,209,162,213, 68,171,213, 70,186, 88,193,220,161,194,208,161, 67,155,173, 93,187, -118,198,128, 1, 3, 82,213,106,117,149,167,159,126,186,128, 16, 34, 89,189,122,117,253,138, 21, 43,170,122,244,232, 49,180,125, -251,246,111,252,246,219,111,123, 0,100,248, 24,201,154, 33, 33, 33,235, 63,250,232,163,248, 46, 93,186,200,194,194,194, 64, 41, - 69, 74, 74, 74,236,230,205,155,159,156, 50,101,202, 27,132,144,222,148,210,115,165,120,113,141, 85, 42,213,218, 41, 83,166, 68, - 63,249,228,147,124, 84, 84, 20, 12, 6, 3,206,159, 63,223,113,203,150, 45,173,151, 46, 93,250, 10, 33,164, 31,165,244, 72, 41, - 56,155, 4, 6, 6,174,251,246,173,183, 34,155, 62,251, 44, 31, 18, 18, 2, 74, 41, 50, 50, 50, 58,238, 93,190,188,237,168,143, - 62,122,133, 16,210,151, 82,122,248, 81, 74, 68,114,185,156, 91,177, 98, 69, 61,185, 92, 14, 0, 48,153, 76,168, 85,171,214,125, -173,174, 46,149, 74,185, 79, 62,249,164, 1,207,243, 48,155,205, 66, 65, 65, 1,125,250,233,167,185,127, 40,147,196,165,164,164, - 4,202,100, 50,183,231,109, 54, 27, 90,183,110,157, 32,147,201,240,201, 39,159, 88, 50, 51, 51,235, 47, 90,180,232,248,202,149, - 43,195, 62,251,236,179,126,238,132, 22,199,113, 97, 73, 73, 73,110, 57,109, 54, 27,204,102, 51,172, 86, 43, 76, 38, 19,106,212, -168,193, 74,170, 71, 3,241, 0,240,235, 41, 3, 0,132,220, 47,153, 70,163,169, 62,120,240, 96, 62, 35, 35, 3, 82,169, 20,102, -179, 25,169,169,169,168, 85,171,150,228,251,239,191,175, 90, 90,190, 74,149, 42,141,152, 53,107, 86,248,175,191,254,106, 94,177, - 98,133,169, 83,167, 78,210, 17, 35, 70, 4,180,110,221,186, 70, 92, 92, 28,247,205, 55,223, 24,183,109,219,102, 25, 58,116,168, -124,230,204,153,225,155, 55,111,238, 1,224,147,135, 29, 78, 6,134,255, 32,118,186, 46, 42, 13,160, 68,161, 37,226, 48,165,180, - 23, 0,200,100,178,250,229,202,149, 91,102,181, 90,163,236, 86,157, 84,169, 84,250,137,217,108, 62, 97,175,168, 54, 8,130,208, -211,155, 37,107,232,208,161,205,126,251,237,183, 57, 7, 14, 28,200,203,202,202,138,218,184,113,163,225,141, 55,222,184, 1, 0, -215,174, 93, 75,236,209,163, 71,236,216,177, 99,147, 58,119,238,188,160, 93,187,118, 47,239,216,177, 99, 27,138,186, 36, 75, 20, - 89,181,106,213,218,191,123,247,110,255,160,160,160,226,170,174, 66, 5,188,252,242,203,178,158, 61,123, 86,236,208,161,195, 62, - 66, 72, 43, 74,233, 25, 95, 4, 81,229,202,149,183,255,249,231,159,126,193,193,193,200,205,205, 69,106,106, 42,116, 58, 29, 2, - 2, 2, 48, 96,192, 0, 89,155,150, 45,202,141, 29,247,202,118, 66, 72, 71, 95,196, 22, 33,164, 73,139,154, 53,183,175,156, 57, -211,207,114,235, 22, 84, 42, 21, 10, 11, 11, 1, 0,254,254,254,104,148,144,192, 31, 93,190, 60,118,200,132, 9, 34,231, 67, 23, - 91,132, 16,133,221, 12,106, 36,132,108,146, 72, 36,189,228,114, 57,215,171, 87, 47,108,223,190,157, 24, 12, 6, 30, 0,148, 74, -165,181, 87,175, 94, 80,169, 84, 48,153, 76, 2,128, 77,158, 44, 79,238, 56,165, 82, 41,215,174, 93, 59,221,225,195,135,179, 69, - 78,181, 90,109,105,215,174, 93,168, 92, 46, 87, 89,173, 86, 90, 18,231, 3, 18,147,184,122,245,106,177, 99, 5, 5, 5,200,200, -200, 64, 86, 86, 22,140, 70, 35,114,115,115, 33, 8, 2, 81,169, 84, 25,130, 32,128,227,138,140,111,158, 56,101, 50, 25, 46, 93, -186, 84,236,152,213,106,133, 86,171,133,209,104,132,217,108, 70, 65, 65,129,202,223,223,191,114,205,154, 53,147, 0,108,200,206, -206,254, 36, 53, 53,245, 38, 43,183,254, 17,220,218,116,194, 80, 30,128, 9,192,245, 50,224, 19, 0, 96,207,158, 61, 72, 75, 75, - 67,102,102, 38, 50, 50, 50, 16, 23, 23,135,123,233,142,187,122,245,234,226,218,181,107,147,179,103,207,110, 1,240,233,234,213, -171,135,103,103,103, 79, 28, 63,126,124,200,199, 31,127,156, 61, 97,194,132, 89, 0,190, 91,189,122,245, 75,213,171, 87,239,122, -225,194,133,165,255, 68, 56, 25, 24, 30, 0, 26, 3, 8,183,255,207,180,151,187,161, 78,251,167,236,249, 86,188,206, 4, 64,238, -230, 87,132,184,159, 1,224,136,211,125,226,254,189,212,159,212,249,215,209,232, 6,128,205,155, 55, 83,113,115,119,115,100,100, -228,184,246,237,219,207, 57,118,236, 88,141, 59,119,238, 4,223,185,115, 39,248,216,177, 99, 53,218,183,111, 63, 39, 50, 50,114, -156,120,157,221,227, 30, 78,251,206, 67, 52,101,251,247,239,143, 95,191,126,253,172,237,219,183,231,213,175, 95,223,244,231,159, -127, 90, 59,119,238,156, 14,192, 10,192,218,185,115,231,244, 29, 59,118,216,154, 54,109,170,250,237,183,223,110,239,219,183,111, -238,218,181,107, 35, 1, 72, 60,112,130, 16, 34, 13, 10, 10,250,121,215,174, 93,119,137, 44,103,148, 43, 87, 14,155, 54,109, 10, - 8, 10, 10,218, 64, 8,145,149, 16, 78, 16, 66,148, 74,165,114,221,142, 29, 59,252,252,253,253,145,158,158, 14,169, 84,138,136, -136, 8,228,229,229, 33,245,206, 29,220,188,124, 25,156,201,132,121, 31, 78,243, 87,169, 84,107, 9, 33,114,111,156,129,129,129, -235, 86,206,152,225,151,181,125, 59, 78, 78,159, 14,179,217,236,232,114, 53,155,205,216, 55,122, 52, 50,254,248, 3,223, 76,158, -236, 23, 24, 24,184,142, 16,162, 44,137,179, 44,224,204, 73, 8, 25, 13, 32, 27, 64, 54, 33,100, 52,165,244, 64,173, 90,181,142, -157, 63,127, 30,173, 90,181,194,154, 53,107,234,142, 31, 63,126,244,248,241,227, 71,175, 89,179,166,110,171, 86,173,112,254,252, -121,212,170, 85,235,152,179, 47,149, 47,156,187,118,237, 66,251,246,237,115,214,172, 89,147, 56,121,242,228, 25,147, 39, 79,158, -177,106,213,170,138,237,219,183,207,153, 63,127,190,177, 36,206, 7, 17,119,103, 75,147,243, 38, 8,127,215, 49, 49, 49, 49,233, -235,215,175,199,128, 1, 3, 56,185, 92,126,103,224,192,129,138,189,123,247, 82, 0,155, 74, 19, 78,131,193, 0,189, 94, 15,173, - 86,139,107,215,174,169, 62,250,232,163,150, 31,124,240, 65,165,237,219,183,199,190,253,246,219,163,194,195,195,143, 71, 69, 69, -197, 63,236,184, 51, 78, 0, 64, 42, 0,179,189,113,119,243,126, 56, 59,116,232, 80,187, 82,165, 74,145,171,207, 6, 35, 71, 86, - 13,130, 44, 8,130, 44, 8,182,208,198,184, 42,127, 10,229,203,151,143,244,247,247,111, 86, 26, 78, 74,233,138, 51,103,206, 60, - 65, 41,253,128, 82,154, 69, 41,157, 51, 97,194,132, 41,132,144, 61, 19, 38, 76,152, 70, 41,157, 99, 63, 62,253,252,249,243, 77, - 41,165, 43,255,137,112,178,180,196, 56,239, 5, 94,180, 72, 56, 33,100, 19, 33,100,211,164, 73,147,218, 1, 8,117,217,111,238, -124, 29, 0,185,187, 95,113,115, 58, 30, 14,160,155,211,125,225,247,248, 62,136,235, 86, 76,104, 1, 64,183,110,221, 72,183,110, -221,196, 19,135, 9, 33, 27, 1, 28,150,201,100,245,235,213,171,215,235,247,223,127,247, 15, 15,255,251,249,225,225,225, 88,187, -118,173,127,205,154, 53,123,201,100,178,250, 0, 14, 7, 4, 4,108,132,155, 46, 70, 59,130, 70,143, 30,221,231,153,103,158,201, -175, 95,191, 62, 0,228,158, 59,119, 78,221,180,105, 83,173,213,106, 37, 86,171,149, 52,109,218, 84,123,238,220, 57,181,197, 98, - 41,104,220,184,177,166, 67,135, 14, 55, 94,127,253,245,161, 0,148, 37,196,111,240,236,217,179,227,130,131,131, 75,122, 1, 40, - 40, 40, 64,100,100, 36, 70,143, 30, 29, 37,149, 74,159, 43,233,133,241, 60, 63,102,246,236,217, 17, 65, 65, 65,200,201,201, 65, - 92, 92, 28, 76, 38, 19, 46, 93,186, 4,131,182, 16,150,130,124, 88,242,115,145,241,215, 21, 4, 73,121, 12,237,217, 61,146,231, -249, 49, 94,172, 37, 99,190,158, 48, 33,210,116,227, 6,174,173, 89, 3,155,245,110, 67,141,213,108,198,233, 47,191,132, 33, 41, - 9,179, 70,142,140,148,203,229, 99, 30,178, 37,235, 99, 74,169,138, 82,170, 34,132, 44,104,222,188,249,247, 42,149,106,244,204, -153, 51,187,108,221,186,245,201,221,187,119,183,181, 90,173, 82,171,213, 42,221,179,103, 79, 43,131,193,192, 43, 20, 10,240, 60, - 79,125,229,108,214,172,217, 50,149, 74, 53,106,201,146, 37, 93,118,236,216, 49,244,232,209,163, 99,108, 54,155,220,102,179,201, -143, 30, 61,250,162, 94,175,151, 82, 74,109,158, 56, 31, 54,164, 82, 41,100, 50, 25, 84, 42, 21, 90,182,108,249,215, 87, 95,125, -101,137,139,139,147,174, 91,183, 46, 56, 38, 38, 70,243,233,167,159,230, 22, 20, 20,204,246,149,207,108, 54,195,104, 52, 66,175, -215,195, 96, 48,224,207, 63,255, 76, 24, 59,118, 44,111, 48, 24,108, 61,122,244,200,182, 88, 44,198, 9, 19, 38, 4,132,132,132, -188,193, 26,176,255, 8,172, 0, 10,237, 66,203,232,156,150, 9, 33,117, 68,235,172, 47,200,205,205, 93,250,245,215, 95,199,113, -138, 32,236, 53,117,197,143,194, 20,108, 13,252, 20,233,241,111, 34, 34,174, 18, 6, 13, 26, 20, 65, 41,253,180, 12, 42,188, 69, -148,210,214,148,210, 5,247,114,255,131, 14, 39, 33, 36,222,207,207,111, 77, 64, 64,192, 94, 63, 63,191, 53,132,144,248,251,141, -115,231,202,164, 99,175, 26,146,164,206,149, 8,237, 85, 67,146,212,185,114,233,231,122, 98,120, 52,225,162, 69,156,145, 65, 41, -237, 78, 41,237, 62,107,214,172, 25, 78,233, 95,220, 87,249,152, 95,186, 83, 74,187,187,164,209, 77,101, 80,135, 82,215,205,161, - 41,156,149,164, 24, 57,231,209,133,229,202,149, 91,182,108,217, 50,127, 87,210, 59,119,238, 32, 63, 63, 31,239,190,251,174,255, - 51,207, 60,243,202,237,219,183,135,121, 9,135, 60, 53, 53,181,193,144, 33, 67,148,102,179, 57, 71, 16, 4, 46, 63, 63,159, 15, - 12, 12,180,137, 23, 4, 6, 6,218,242,242,242,164, 90,173, 86, 98,179,217,140,207, 60,243,140,124,228,200,145,141,156, 45, 90, -119, 73,220,240,240, 78, 93,187,118,149,123, 58,111,177, 88,160,213,106,161,213,106, 97, 54,155,209,178,101, 75,197, 87, 95,125, -213, 25,192, 18, 79,247, 40, 20,138, 78,157, 58,117,146,102,103,103, 35, 48, 48, 16, 55,111,222,196,245,235,215, 97, 44, 44,132, -185, 48, 31,230,194, 2, 88, 11,242, 65,243,243,144,117,229, 34,154, 86,175, 38,251, 65,161,232, 2, 96,174, 39,206,128,128,128, - 78, 77,135, 15,231, 53, 26, 13,218, 14, 41, 26,103,240, 91,245,234,160, 54, 27, 4,155, 13, 54,171, 21, 93, 46, 93,130,197, 98, - 1,199,113,104,156,157,205, 7, 44, 95,222, 9,192,156,127, 34,177, 43, 20, 10,126,197,138, 21,131,229,114, 57, 40,165,196,100, - 50, 97,235,214,173,247,205,185,124,249,242,161, 34,167,217,108,166,181,107,215,190, 43, 67, 25,141, 70,250,168,100,122,185, 92, - 14,165, 82, 9,179,217,140, 10, 21, 42,232,135, 12, 25,178,255,195, 15, 63, 44,207,113,156, 70, 38,147,253,158,149,149, 53, 35, - 37, 37,229,154,175,124, 22,139, 5, 38,147, 9, 38,147, 9,122,189, 30,127,253,245, 87, 84, 66, 66, 2, 25, 61,122,180, 77,167, -211, 37, 46, 92,184,240,234,214,173, 91,213,179,103,207,126, 26,192,203,172,216,125,120,176, 91,165, 3,203,135,242, 90,169, 4, -133, 0,252,237,162,224,105, 66, 72,211, 26, 53,106, 4,159, 63,127, 62,135, 16,114, 16,192,143,148,210, 59, 37,241, 9,130, 64, - 4, 65,192,139, 77,114, 49,186,153, 4, 22, 75, 30,242,242,242,112,243,230, 77,156, 59,119, 14,135, 14,157,187,167,112, 42,149, -202,231,252,252,252, 58, 43,149,202, 10, 86,171,149, 43, 44, 44,188,169,211,233,182, 11,130,176,148,186,118, 43,248,128, 7, 21, - 78, 17, 26,141,230,163,183,223,126,187, 69, 96, 96, 32, 78,156, 56,145,184,106,213,170,143,112,159,206,245, 74, 41,247,205,220, -249,159,198,198, 70, 4,225,212,238, 95, 98,103,124,190,250, 27, 0,113, 44, 21,255,251,225,172, 69, 92,112, 4, 64, 55,251,104, -244,238,247,145,207,239,235,254,146, 44, 90,174, 11, 75,223, 37,180, 60, 68, 12, 86,171, 53,202,217,146, 69, 41,197,157, 59,119, -144,156,156,140,140,140, 12, 4, 7, 7,195,108, 54, 71,249, 82,207, 22, 20, 20, 52, 9, 13, 13,213, 73,165, 82,163, 94,175,135, - 90,173, 22,164, 82, 41,181, 63,135,216, 71, 45,218,140, 70, 35,225,121,222,226,239,239,239,103, 52, 26,171,161, 4, 95, 50, 74, -105,147,208,208, 80,183,231,140, 70, 35, 10, 11, 11,161,213,106, 81, 88, 88, 8,163,209,136,200,200, 72, 88,173,214, 6, 37, 54, -105,173,214, 58,225,225,225, 72, 73, 73,129, 74,165, 66, 82, 82, 18, 76,133, 5, 48, 23, 20,192,170,205,135, 45, 47, 15, 66,126, - 62, 4,109, 62, 44, 38, 29, 98,171, 84,135, 56, 34,209, 19, 76, 38, 83,157,208,208, 80,104,181,127,187,155, 81,187,192,178, 90, -173,176,218,157,163,197,238,196,176,176, 48,136, 35, 18, 31, 6,236,254, 83,227, 57,142, 91,160, 80, 40,248, 81,163, 70,225,206, -157, 59,197,210,196,168, 81,163, 28, 62, 89,173, 91,183,222,163, 84, 42,173, 25, 25, 25, 48, 26,141, 82, 95, 56, 43, 84,168,112, -243,221,119,223, 61,108, 50,153,226, 98, 98, 98,130,140, 70,163,190,106,213,170, 49, 42,149, 42,210,100, 50,217, 26, 53,106,180, - 84,165, 82, 89, 10, 11, 11,169,213,106, 37,143, 66,166, 39,132,128, 16, 82,244,141,172, 86,132,133,133,105, 51, 51, 51, 15,229, -228,228, 12,190, 23, 62,139,197, 34,142,232,130, 94,175, 7,165, 20, 39, 78,156,128, 82,169,148,218,108,182,179, 86,171, 85, 45, -149, 74,193,217,157,191, 24, 30,218,119,110, 91, 45, 72, 62,119,102,211,136,160,122, 61, 52, 90,181, 92,162, 21,110,214,171,240, -237,199,231, 86, 61, 51,244, 57,255,169, 83,167,198,135,133,133, 41,175, 94,189,106,152, 54,109, 90,194,138, 21, 43,136,183, 70, -208,173, 91,183,126,122,251,237,183, 67,186,118,237,154,168, 80, 40, 72, 94, 94, 30, 50, 50, 50,144,150,150,134,235,215,175,211, - 83,167, 78,253,101, 52, 26,215,148, 38,156, 49, 49, 49, 95,141, 29, 59,246,153,134, 13, 27, 74, 69, 11,169, 86,171,173,191,107, -215,174,158,191,253,246, 91, 43, 0,165, 78,151,183,111,223, 94,243,206, 59,239,104,158,122,234,169,106, 10,133,130, 43,139,112, - 58,131,227,184, 72, 63, 63, 63,108,223,190, 29, 65, 65, 65,224, 56, 46,242,126,191,151,193, 44,196,198, 68,133,194,176,111, 46, -170,133,199,195, 96, 22, 98, 89, 42,126,124, 44, 90, 30, 78, 53, 22, 45, 82, 94,196,146,126,226,196,137,111, 19, 66, 54, 77,156, - 56,241,109,119, 22, 45,251, 95,155,243,117, 78,215, 27,203, 90,108,149,106, 82, 72, 65, 16,144,156,156,140,148,148, 20, 36, 39, - 39, 35, 43, 43, 11, 28,199,149, 56,127,132,115, 24, 8, 33,194,182,109,219,130,247,239,223,175,109,220,184,113,174,232,255, 98, -181, 90,137,197, 98, 33,118,191, 24,114,243,230, 77,217,222,189,123,131, 46, 92,184, 16,137, 34,135, 53,193, 75,228,238, 58, 38, - 10, 44,231,205, 96, 48, 64,169, 84,250, 20, 87,177, 34, 60,113,236, 88,145,200, 42, 44,176,119, 25,230,193,150,159, 7,170, 45, -128,220,102,129, 28, 20,196,160,243,249,253, 57, 67, 20, 89,102,187,208, 50,153, 76,176, 88, 44, 16, 4, 1, 86,171,245,161, 39, -112, 74,233,226,250,245,235, 55,248,233,167,159, 70, 36, 39, 39,223,117,190,119,239,222,120,249,229,151, 49,118,236,216, 11,221, -186,117, 59,245,203, 47,191, 96,204,152, 49, 16, 4,161, 30, 33, 36,143, 82,250, 91, 73,156, 19, 39, 78, 60,122,251,246,237,157, -151, 47, 95, 30, 21, 17, 17,161,168, 83,167,206,149, 58,117,234, 72,126,250,233,167,200,231,159,127,254,216,147, 79, 62,121,227, -143, 63,254, 8,217,190,125,187, 82, 16,132,134,132,144,228,127,122, 30, 45,163,209,232,176, 64, 25, 12, 6,152,205,102,160, 4, -231,119,111,105, 83,252,182, 86,171, 85,228, 38, 63,253,180, 30,123,246,236,225,206,157, 59, 27, 55,106,212,104,209,225,158,149, -184, 15, 71, 96, 61, 37,231,200, 23,227,235,133, 42,223,168, 27,170,149,243,164,240,210, 23,111, 23, 94, 47, 31,160,141, 44,167, - 54,197, 37, 4,197,204,152,241, 97,244,133, 11, 23,141,239,190,251,238,249,129, 3, 7, 70,188,241,198, 27, 53,214,173, 91,215, -138, 16,242, 53,165, 52,215, 3,175,114,248,240,225, 7, 35, 34, 34, 18, 62,255,252,243,244,219,183,111, 7, 91, 44, 22,141,217, -108, 22,180, 90,237,117,189, 94,191,221,108, 54,111,167,148, 30, 43, 77,120,253,253,253,235, 14, 31, 62, 92,154,155,155, 11,251, -104, 93,164,167,167,163, 69,139, 22,146,141, 27, 55,214,188,151,119,144,157,157, 61,151, 16,178,115,229,202,149,157, 3, 2, 2, - 26, 42, 20,138, 40, 0,182,130,130,130, 52,173, 86,123,242, 94,194, 89,172,156,179,217,210,142, 29, 59, 86, 49, 32, 32, 0,183, -110,221,130,205,102, 75,187,223,239,166,148,113,183, 79,239,222, 88,174,122, 88, 2,246,238, 63, 8,165,140,187,205, 82,243, 99, - 15,209,135, 10,206, 2,202,141, 64,218, 63,115,230, 76,213,172, 89,179, 48,115,230,204,179,238, 44, 90,162,224,154, 57,115,230, - 89,241, 58,167,235,119,223, 71,121,226,217,162, 85,130,130, 4,207,243,169, 25, 25, 25,193, 65, 65, 65, 14,129,149,146,146,130, -148,148, 20,200,229,114,220,188,121, 19,114,185,252,142, 47,141, 16,149, 74,117,180,126,253,250, 85,175, 93,187, 38,155, 54,109, - 90,185, 99,199,142, 5,180,104,209,162,182, 74,165,178, 81, 74, 97, 48, 24,184,243,231,207,251,205,153, 51, 39,182, 73,147, 38, -166, 38, 77,154, 28, 95,189,122,181, 30, 37, 76, 94, 74, 8, 57,124,231,206,157,196, 10, 21, 42,136,162,173,152,184,114, 22, 92, - 64, 81,151, 39,207,243,199, 75, 10, 40,207,243,167, 47, 93,186,212, 81,173, 84,192, 84,144, 15,115, 97, 62,172, 5, 5,176, 21, -228,193,150,151, 7,104,243, 33,183, 90, 33,181, 89,160, 82, 42,145,156,148, 4,158,231, 79,151,196, 41,151,203, 79,167,165,165, -117, 12, 10, 10,114, 84,162, 22,171,181,104,179,217, 96,178, 90, 29, 22, 45,169, 84,138,219,183,111, 67, 46,151,159,126,216, 41, -153,227, 56,155, 56,133,131,135,120, 32, 50, 50, 82,104,218,180, 41,198,140, 25, 3,155,205,102,255, 12,164, 45, 33,100, 47,165, -180,208, 19,167, 32, 8,220,249,243,231,251, 92,189,122, 85, 34,149, 74,185, 39,158,120,162, 86,203,150, 45, 77,114,185, 28, 50, -153,140, 47, 44, 44,244,223,190,125,187,210, 98,177, 16, 59,231, 67,155, 71, 75, 76, 59,119, 53,141,236, 78,235,122,189, 30,133, -133,133,200,201,201,225, 85, 42, 85,213,218,181,107, 31, 52,153, 76,107,172, 86,235, 55,215,174, 93,203,247,196,105, 23,102, 14, -209, 37, 8, 2, 40,165,176,217,108,176, 88, 44,144,201,100,194,174, 93,187, 49,103,222, 71, 88,246,205, 10,218,179,103, 79,178, -113,227, 70, 8,130,144,196,202,213,135,130, 79,114,127,252, 80, 9,171, 77,107,220,181,178,240,251,203,249,218,169,223,207, 63, -106,146, 75,242, 27,181,137,172,147,152, 80, 85, 18, 20, 20,204, 45, 89,186, 32,235,135, 21,107,175,222,186,117, 43,255,179,207, - 62,107, 86,181,106,213,192,147, 39, 79,198, 2,112, 43,180,212,106,117,229,231,158,123,110,120, 78, 78,142,108,217,178,101,171, -239,220,185,115, 20,192, 57, 74,169,214,169,236,234, 70, 8,249, 14, 69, 35,159, 34,237,229,220, 94, 74,233,180,146,218,107,132, - 16,236,216,177,227,174,209,129,194,253,169,243,160, 74,149, 42, 13,184,118,237,218,158,212,212,212,190,110,242,253,212, 42, 85, -170,116, 57,123,246,236, 20, 74,233,175,165, 33,214,233,116, 19,214,174, 93,251,177, 68, 34,137,177,217,108, 41,122,189,126,194, -125, 91,180, 44,194,200,153, 75, 86,125,169, 55,217,202,171,228,146, 91, 6,139,240, 60, 75,202,143,181, 53, 11,176,251,104,137, -255, 1, 16,151,253,147,246,255, 38,167,107, 51,156,172, 88, 38, 23, 43,152,187,115, 25,184,199,201,210,221,141, 56, 20, 69,151, -167,153,225, 39, 1,104, 2,224,176, 84, 42, 93,240,204, 51,207,204,249,225,135, 31,252,243,243,243,145,150,150,134,244,244,116, -240, 60,143,128,128, 0, 44, 94,188, 88,159,150,150,182,192,249, 30,215, 25,228,197,188, 17, 22, 22,118,116,197,138, 21, 81, 95, -124,241, 5, 63,108,216,176,155,221,186,117,171,182,120,241,226,107, 50,153,140,218,108, 54, 98, 52, 26,201,139, 47,190, 88,113, -222,188,121, 55, 36, 18,137,122,192,128, 1, 68,163,209, 28, 70,145,131,170,251, 55,159,145,177,237,231,159,127,238,243,250,235, -175, 43, 76, 38,147, 91, 75,150,120, 44, 40, 40, 8,251,246,237, 51,229,228,228,108,245, 98,197,216,246,251,175,155, 91,255,111, -224, 64,153,165, 32, 31,150,130,124, 88,243,243, 97, 43,200, 5, 41,204,135,212,102,133, 74, 38, 32, 42, 78, 9,171,222, 15,155, -143,156,180, 24,141,198, 18, 39, 54,204,207,207,223,182,119,217,178,182, 77,226,227,249,125,227,198,193,108,177,224,169, 75,151, - 28,226,202,108, 54, 99, 67,157, 58,176, 17,130,122, 47,188,128, 43, 86,171, 53, 63, 63,127,219,163,152, 25, 78,157, 58,149, 62, -100,200,144, 99,130, 32, 52, 40,141,117, 71,132,159,159, 95, 65, 97, 97, 33, 50, 51, 51,109, 89, 89, 89, 6, 0, 72, 79, 79,207, -217,184,113,227,121, 65, 16,154,220, 11,103, 89,192, 98,177,220,101,141,178,217,108, 69, 86,199, 34,203,129,124,243,230,205,173, -207,159, 63, 47, 59,115,230, 12,246,236,217, 83,239,135, 31,126,152, 20, 31, 31, 95,231,230,205,155,169,222,196,155,187, 73,127, - 97,247, 63, 92,189,114, 13, 94,122,233, 37,146,154,154,138, 31,127,252, 17,222, 38, 79,101, 40, 51,104, 97,181,169, 76,187, 86, - 22,118,251,245, 86,193,129, 59,250,105, 0,182, 80,189,149,150, 43, 87,238, 84,195,134,193, 97, 0, 96, 52,216,162, 42, 87,174, -220,134,231,121,185, 61, 13, 55, 12, 13, 13, 93, 12,160,165,155,242, 83, 50,112,224,192,166, 17, 17, 17,245,127,251,237,183,147, -119,238,220, 57, 75, 41, 61,228,122, 93,197,138, 21,223,189,112,225, 66, 99,169, 84, 74,188,164, 17, 0, 64,219,182,109,171,198, -199,199,135,254,122, 57, 16,249,178, 74,160,146, 60,128, 87,194, 22, 84, 23, 55,101, 53, 16, 23,119, 48, 52, 40, 40,168, 94,110, -110,238,201, 82, 86, 16,237,250,244,233,243,205,178,101,203,226,218,180,105, 67, 9, 33,156,235,148, 14, 21, 43, 86,236,124,224, -192,129, 6,207, 63,255,252,231,246,209,195, 62, 59, 15, 83, 74,111, 2,232, 87,150, 31,109,235, 21,186, 29,246, 57,207, 24,254, - 51, 56,242,128,174, 45, 19,220,203,204,240, 77, 4, 65,232,201,113, 28,204,102,243,204,200,200,200, 13, 3, 6, 12,232, 61,105, -210, 36,191,208,208, 80,135, 37,107,241,226,197,250,235,215,175,175, 51,155,205, 39, 8, 33,147, 83, 82, 82,122,198,196,120,172, - 31, 10, 22, 46, 92,184,170, 71,143, 30,195, 94,120,225, 5,125,157, 58,117, 2,170, 85,171,166,219,191,127,191, 95,167, 78,157, -242, 37, 18, 9,221,183,111,159,127,197,138, 21, 13,132, 16,197, 31,127,252,145,117,240,224,193,138, 51,103,206,252, 26, 69,195, -173, 61, 97,229,244,233,211,223,237,217,179,103,197,208,208, 80,228,231,231, 23, 19, 91,226,127,165, 82,137,212,212, 84,172, 95, -191,254,142,197, 98,249,218,139,101,227,179, 79, 23, 47,121,165, 93,211, 39, 98, 3,212, 42,164, 38,221,132, 45, 47, 7,208, 22, - 66,110,181, 64, 37,167,136,173,164, 6, 47,209,224,106,106, 33,150,237, 63,146,106,181, 90, 63, 43,137,211,100, 50,125,246,242, -188,121,175, 28, 88,178, 36, 54,190,127,127,156, 91,190,220,209, 85, 40, 10, 45, 27, 33, 40,223,161, 3,184,192, 64,204,248,252, -243, 52,147,201,244,217,195, 78, 44,130, 32, 72, 76, 38, 83, 73,241,128, 32, 8, 73,231,206,157, 91, 69, 8, 41, 32,132,180,181, -159,218,233,206,154,229,204,201,113,156, 80,163, 70,141,159, 34, 35, 35,251, 0,208,214,168, 81,227, 39,133, 66,209,222,100, 50, - 61, 33, 8, 66,210,137, 19, 39,214, 19, 66, 82, 9, 33, 98,171,227,161,206,163,101,177, 88, 48,121,242,100,204,154, 53, 11, 19, - 39, 78,116,196, 87,236, 62,204,205,205, 77,216,187,119,175,108,215,174, 93,244,243,207, 63,207, 26, 54,108, 88,208, 11, 47,188, - 16,244,197, 23, 95,188, 6, 96,130, 39,206, 9, 19, 38,224,243,207, 63,199, 75, 47,189,116,183,202,146, 72,132,164,164,219, 48, - 24, 12,116,225,194,133, 41, 82,169, 52,248,235,175,191, 86, 61,255,252,243,132,149,171, 15, 5,239,168,134,188,247,170,189,140, - 89, 64, 41,221, 41,158, 8, 8, 8, 80,253,244,211,207, 60, 0,172, 91,187, 94, 74, 41, 13, 20, 39,152,253,254,251,239,149, 45, - 90,180,136,240, 80,224,218,148, 74,165,113,246,236,217,161, 35, 71,142,124,242,207, 63,255, 12, 38,132, 52, 5,112, 20, 64,154, - 93, 92, 71, 0, 56, 23, 22, 22, 22,176,122,245,234,216,206,157, 59,107,188, 5,180,160,160,224,235, 85,171, 86, 85,152,183, 55, - 16,191,106,251,224,182,208, 31, 52,136, 34, 36,162, 0, 53,252,110, 97,240,224,193, 49, 11, 22, 44,248, 18, 64,195, 82,136,172, -193,189,123,247,158,181,108,217,178,152,145, 35, 71,166, 30, 63,126, 60, 13,192, 50, 55,130, 47,243,153,103,158,185,179,124,249, -242,104, 74,233, 18, 66,136,156, 82,186,142, 37, 31, 6, 6, 71, 94,106,131,162, 25,225,239, 18, 95,196,157,127, 19, 33,100,131, -213,106,237,201,243,252, 70,231, 9, 75, 35, 35, 35, 95, 49,153, 76,209,132, 16, 42,147,201, 82,211,210,210, 22, 56, 79, 88,154, -148,148,212, 51, 46, 46,206,113,143,125,210, 77,231,185, 54, 2,158,122,234,169,142, 7, 14, 28, 88,180,105,211,166,244,130,130, - 2,191,181,107,215,170,102,205,154,117, 83, 16, 4,250,214, 91,111,197,119,233,210, 69,103,179,217,238,188,240,194, 11, 21, 19, - 18, 18, 94,184,112,225,194,118,103,161,229,134, 19,132,144,154,149, 42, 85,218,183,110,221,186,128,160,160, 32,164,167,167, 35, - 59, 59, 27, 90,173, 22, 54,155, 13, 82,169, 20, 25, 25, 25,152, 54,109, 90,126, 74, 74,202, 93, 19,150,122,224,108, 82, 33, 54, -118,219,130, 41,147,253,131,120, 14, 89, 23,207,195,154,147, 5,169,213,130,114, 53, 3, 33,147,171,112,229, 82, 1, 94, 91,185, -190,224, 86,118,238, 93, 19,150,122,226,108, 84,185,242,246,207,199,143,247, 51,220,190,141,232,103,159,133, 78,167,131,217,108, - 6,199,113,248,107,193, 2,200,194,195,241,238,234,213,218,179,183,110,117,112,157,176,212, 29,103, 25, 36, 14, 7, 39, 33,100, - 52, 33,196,225, 12,223,187,119,239, 98,215,254,252,243,207, 88,178,100, 9,140, 70,163,149, 82,250, 10,165,116, 49, 33,196,207, -158,160, 10,189,113, 86,168, 80,225, 86,173, 90,181,142,216,108, 54,222, 46, 50,232,185,115,231, 26, 94,191,126,189,156, 11, 39, -111,231,180, 62,172,184,135,134,134, 46,248,237,183,223, 42, 68, 68, 68, 16,231, 25,219,237, 66, 17, 0, 48,102,204,152, 14, 7, - 15, 30, 84,212,175, 95,223,152,153,153,217, 56, 60, 60,252,207, 21, 43, 86,132, 13, 24, 48, 32,229,236,217,179,177,174,156, 97, - 97, 97,115,214,173, 91, 87,169, 82,165, 74,156,104, 21,115,237,158, 28, 49, 98, 68,199, 21, 43, 86,200,251,244,233, 99,212,106, -181,145,254,254,254, 87,215,173, 91, 23,214,171, 87,175,212,179,103,207, 70, 63,140,184, 51, 78,247,168, 85,171,214,149,179,103, -207, 86, 18,247,245,122, 61, 50, 50, 50,144,153,153,137,160,160, 32,116,234,212,233,175,235,215,175, 87,114,199, 73, 8,169,223, -175, 95,191, 41, 95,126,249,101, 71,141, 70, 35,219,189,123,183,118,251,246,237,134,155, 55,111, 90, 45, 22, 11,141,142,142,230, - 91,182,108,169,236,218,181,171, 70,161, 80,112,239,189,247, 94,230,135, 31,126, 24, 70, 8, 89, 41, 46,127,230,202,217,160, 65, -131, 67,191,255,254,123, 19, 66, 8, 36, 18, 9, 76, 38, 51,114,115,115,145,156,156,132,115,231,206,225,192,129, 3,216,186,117, -235,201,194,194,194,250, 62,230,247, 80, 0,187,141, 70, 99, 53,185, 92,238,179,176,183,217,108,224,121,254, 34,128,206,148,210, - 36,150,150, 24, 39,195,223,254, 89,165,114,134,183, 11,176, 38,132,144, 13,246, 67,135, 93,167,112, 32,132, 76, 34,132, 76,118, -178,130,121, 11, 75,254,111,191,253,182,167, 99,199,142, 99, 58,116,232, 48,175,115,231,206,119,238,220,185,147, 56,119,238,220, - 56,171,213,106, 62,119,238, 28,119,245,234,213,155, 71,143, 30,173, 84,165, 74,149, 23, 46, 92,184,176,203,139, 53, 75, 12,235, - 57, 66, 72,139,118,237,218,173,127,225,133, 23,202, 55,109,218, 84, 30, 20, 20, 4,158,231,113,237,218, 53,156, 60,121,210,180, -122,245,234,164,220,220, 92,159,151,224,161,148, 30, 38,132,116, 26, 48,246,149,117, 47,244,238, 17,246, 68,181,170,242,232,232, -104, 64,175,199,197, 91,169, 56,120,241,164,249,171, 61, 7, 51,140, 70, 99, 95, 95,151,224,177,115,118,108, 63,126,252,186,169, -255,251, 95, 36,238,220,225,163,163,163, 33,151,203,113,253,250,117, 92, 21, 4,235,236,165, 75,211,242,243,243, 31,250, 18, 60, -226,156, 87,130, 32,240, 0,160, 82,169,240,242,203, 47,195,121,201,157, 37, 75,150, 64,175,215, 3, 0, 79, 8,249,152, 16,242, -141, 39, 43,150, 7,206,242,191,254,250,107,121,103,206,234,213,171,187,227, 52, 62,236, 76,146,157,157,253,238, 83, 79, 61, 53, -147,231,121,143,179,222, 6, 7, 7,163,160,160, 0, 86,171,213,150,156,156,124, 49, 56, 56, 24, 82,169, 20,148, 82,183,249, 40, - 43, 43,235,221,190,125,251, 78,231, 56, 46,194, 19,103, 64, 64,192,205, 63,255,252,179,242,243,207, 63,207,125,251,237,183,215, - 70,142, 28,169,248,243,207, 63,109,148,210,245,172,232,122,180,224,220, 40,181, 55,226,104, 9,215,158, 32,132,204, 59,122,244, -104,248,152, 49, 99, 18,255,247,191,255, 5,180,107,215,206,207,249, 26,189, 94, 47,252,242,203, 47,218, 37, 75,150,228,237,217, -179,231,198,136, 17, 35,154,162,200,191,196, 45,110,221,186,181,121,198,140, 25,129, 93,187,118,173, 2,192,225,159,149,145,145, -129,155, 55,111,226,204,153, 51, 55,205,102,243,198, 82,196, 39,139, 16, 50,117,208,160, 65, 31, 47, 95,190, 60,102,228,200,145, -169,171, 87,175, 62,131,162, 9,134, 93, 17,212,187,119,239, 58,203,151, 47,143, 30, 57,114,100, 42,128,105,148, 82,230, 71,200, -192,240, 55,218,186,250,105,149,232,163, 5, 32, 79, 16, 4, 24, 12,134, 72, 65, 16,122, 10,130, 0, 63, 63, 63,119,215, 53, 73, - 73, 73,233,233,188,168, 52,188, 44,151, 3, 32, 99,251,246,237,219, 86,174, 92,217,225,173,183,222,250, 95,110,110,110,147, 83, -167, 78, 53, 5, 0,169, 84,122, 64,163,209, 28,154, 57,115,230,179, 19, 38, 76,200,240, 69,100,185,136,173, 26,115,230,204, 41, -179, 69,165,237,194,168,242,103,107,214,143,249, 90,161,232,228,178,168,244, 54,251,162,210,134,123,225, 28,255,229,151, 99, 2, -214,172,121,100, 23,149, 54, 26,141,214, 62,125,250,124,205,113,156, 96,111,197,242, 70,163,241, 89,148,114,164,170, 43,103,239, -222,189,191,149, 72, 36, 86,187,165,136, 51, 26,141,207,221, 15,103, 25, 86,162,133, 0,198,150,116, 77,237,218,181, 87,108,220, -184,113, 72,207,158, 61,109,102,179, 57,189, 71,143, 30,252,161, 67,135, 40,199,113,219, 61,112, 26, 1,188, 89, 18,103, 84, 84, - 84,252,167,159,126,122,124,220,184,113, 1, 43, 87,174, 12,217,187,119,175,109,225,194,133,249,217,217,217,159,176,114,235,209, -130, 84, 42,133, 90,173,134,201,100, 66, 70, 70, 6,188, 77, 89, 69, 41,221, 65, 8,233, 58,126,252,248,167,199,143, 31,223, 53, - 42, 42,170, 98,133, 10, 21,212, 28,199, 33, 57, 57,217,154,146,146,146,110,177, 88,182, 1, 88, 15, 0, 21, 43, 86,124, 6,192, - 87,158,248,178,178,178,166, 19, 66,118, 44, 95,190,188,155, 70,163,169,161, 84, 42, 67, 44, 22, 11, 87, 80, 80,144,173,215,235, -207, 27, 12,134, 77,148,210,253,165, 76,247,171, 9, 33,153,195,134, 13,251,102,217,178,101,113,215,174, 93, 43, 56,122,244,232, - 83,174,215,213,168, 81, 99,239,242,229,203,163,159,127,254,249, 59,171, 87,175, 46,149,143, 22, 3,195,127,164, 33,182, 11, 30, -252,139, 61, 85,112, 51,228,114, 57, 15,251,226,210,162, 69,203,205,117,135, 93,124,178,242, 0,204,240, 33, 76,218,193,131, 7, - 95, 31, 60,120,240,199,246, 48, 72, 80, 52,133,131, 21, 69, 30,255,102,120,153,210,193, 67, 68,173, 0,190,180,111,101,245,242, - 12, 40,154, 47,103,206,163,204, 89, 6, 97, 50, 18, 66,198, 19, 66, 62,182, 31, 26,127,226,196,137,197, 46, 22,170, 83,206,231, -189, 89,158,220,113,158, 60,121,210,149,243, 76,105, 56,255, 73,228,230,230,190,242,233,167,159, 30,158, 56,113,162, 98,248,240, -225, 56,115,230, 12,102,205,154,101,204,205,205, 93,121,175,156,169,169,169, 55,163,162,162, 26,204,159, 63,255,141,121,243,230, -245, 34,132,176,181, 14, 31, 17,232,245,250,191,234,214,173, 11, 82,228,176, 68,173, 86,171, 99,180,168,125,134,255,191,124,177, - 26, 1, 88,106,223, 64, 8, 9, 65,209, 40,195, 44, 74,169,107, 67,114,188, 15,124, 7, 0, 28, 40,227,188,191,131, 16,242,236, -213,171, 87,103,252,245,215, 95,110,133,218,149, 43, 87,118,182,108,217,210,255,212,169, 83,239, 80, 74, 55,179,212,193,192,224, - 59,120, 15, 25,239, 10,128,255,249,144, 65,103,222,199,179,109, 62, 88,191, 24, 30,174,216, 90, 76, 8,249,198,201, 26, 83,170, -243, 15,139,243,159, 66, 82, 82, 82, 14, 0,199, 82, 36,137,137,137,119,249,177,221,171,216, 66,209, 44,240,108, 38,248, 71, 8, -215,174, 93,123,234, 1,228,177,236, 71, 52,239,239, 4,208,212,211,121,139,197, 50, 25,192,100,150, 42, 24, 24, 74, 15, 54,251, - 52,131,107,129,107, 44, 73,240,120, 59,255,176, 56, 25, 24, 24, 24, 24, 24, 30, 21,184, 89,235,176,141,227, 28,128,142, 30, 42, -191,237,165,120, 64,169, 23,244,244,198,207, 56, 25, 39,227,100,156,140,147,113, 50,206,199,143,211,137,123,158,135, 83, 23, 93, -248,190,248, 55, 10, 47,199,232, 67, 74,233, 3,219, 0,116,100,156,140,147,113, 50, 78,198,201, 56, 25, 39,227,188,199,231,188, -240, 48,158, 83,198, 97,166, 0,218,136,251, 60, 24, 24, 24, 24, 24, 24, 24, 24, 24,202, 4, 62,205,163,181,118,237, 90,137,248, -127,208,160, 65, 35,108, 54,155, 99,216,187, 68, 34,249,244,199, 31,127,252,166,164,135,244,235,215,207, 86, 18,167, 59,120,123, -142, 59,206, 90, 85, 3, 71,133, 6,170, 95,201,205,211,205,191,150, 98,219, 99, 48, 24,106,136,231,148, 74,229,249,111,190,249, -230,114, 89,135,115,196,136, 17, 85, 92,159, 83, 33, 78,218, 54,196, 95,249,114,118,110,225,220, 51,151, 11,190, 96,201,236,193, -162,127,255,254,165,186,254,250,245, 32, 28, 71, 52, 2, 52, 50, 20,106, 45,176, 29,123, 60,124,122,163,163,163,171, 5, 4, 4, - 12, 5, 80, 83,167,211, 69,168,213,234,116, 0,231,242,243,243, 87,220,185,115,231,162,175, 60,109, 19,200, 77, 0,229,237,187, -183,118, 94,167,241,190,156,243,134, 46,149,136,129, 2, 10, 66, 96,222,114,133, 58, 22,208,124,178, 50, 49, 8,244,238,227, 93, - 42, 19, 19,165,144, 17,192,184,229, 42, 85, 62, 46,233,149, 16, 18, 0,160, 19,128, 90, 0, 78, 1,216, 74, 41,213,177,156,204, -192,240,248,192,117,162, 82,231,125,222,131,152,104, 45,227,201, 34, 10, 26, 4,208, 80,163,209, 40,149,203,229, 48,153, 76, 80, -171, 85,159,189, 56,114,196, 20,112,200,181, 88,241,242, 55,223,124,115,207, 43, 93,151,230, 57,253,250,245,219,225,122,127,112, -128,106,250,206, 95,222, 10,110,221,109,246, 44,211,245,204, 9, 5, 5, 5,156, 66,161,128,209,104, 68, 96, 96, 96,139, 81, 47, -188,208,144,147, 82,147, 76,166,217, 63,111,222,188,212,123, 13,231,107,175,189, 22,101, 54, 27,154, 11,130, 32, 55,153, 76, 10, -215,231, 4,170, 53,179,119,254,242,150,186, 77,247, 89, 83, 0, 48,161,245, 8,161, 72,100, 69,225,213,193, 79,224,163,113, 29, - 17,212,118,246,227,144,161, 37,137,137,137, 99,226,227,227, 7, 46, 93,186, 84,150,152,152, 8,165, 82, 9,189, 94, 31,253,215, - 95,127, 69,143, 26, 53,170, 77,197,138, 21, 87, 93,187,118,237, 51, 74,169,205, 7,202,242, 59,191,123, 15, 0,208, 98,232,180, -242,132,144, 55, 1,232, 0,160, 77,133,191,207,181, 29, 62,173, 60, 33,100, 60,138,143, 22,190, 67, 41,117, 59, 73, 38, 5,228, -155,150,207, 65,207,103,222,228, 9, 33,163,196,227, 93,171, 0,191,127,191, 0, 79, 14,122,165,216,241, 46, 21,193,255,178,124, - 14,186, 63,243,166,199, 85,205,159,172,194, 89, 4,129,122,180,196,115, 28,177,110,185, 66,221, 45, 48,156, 70, 41,221,226,230, - 93,118, 65,209,130,206,110,175,239, 94,157, 79, 51, 91,108,110, 39,156,149, 73, 37,233,155, 46, 88,239,186,119,120, 3, 98,177, -216,138,202, 86, 25, 15, 91, 96, 96,224,206,119,222,121,135,239,222,189, 59,190,250,234,171,150, 95,124,241,197, 11,132,144, 63, - 0,108,164,148, 94,101,185,148,129,225,241, 21, 92, 30,133, 22, 47,193,231, 27,215,125, 83, 41, 45, 61, 19,195,158,127, 3, 43, - 87,174, 68, 78, 78, 14,130,131,131, 33,151,201,164,243, 63,126, 47, 42, 32, 64, 19, 53,236,133, 9,159, 3,168,118,175, 1, 42, -229,115, 42,223, 21, 33,251,132,166,188,132,147,202,229,114,110,213,170, 85,200,205,205, 69, 80, 80, 16,228,114, 41, 55,111,214, - 36, 85, 64,128,159,234,185,209, 19, 91, 2, 88,115,175,225, 52,153, 10, 91,254,180,242,155,128,140,140, 12, 12,127,105, 2, 92, -159, 35,147,201,108, 98,197,194,146,217, 63,135,204,204, 76, 0, 64, 88, 88,152,139,200,106,138,121,175,119,198,107,115,183, 66, -103, 48,253,235,227,153,152,152, 56,166,127,255,254, 3,167, 79,159, 46,227,184,162,129,195, 90,173, 22,122,189, 30,177,177,177, -216,185,115,167,236,221,119,223, 29,248,243,207, 63, 3,192,194,210,242,159, 61,123,182, 66,249,242,229, 13, 0,208,163,142,191, -235,185,120,241, 28, 0,248,251,251,123,229, 11, 13,210, 24,207,158, 61, 88, 83,188,111, 76,135, 88,155,135,227, 6, 0,234,146, -184, 4,129,242, 91, 23,141,242,120,254,249,233, 63, 88, 79,173,217, 83, 45, 49, 49, 81,239,124,220,195,132,203, 0, 16, 89, 88, - 88, 88,222,245,160,120,189,217, 98,139,240,244,188,206, 47, 47,113, 43,192, 44, 54,240, 63,252,240, 3, 0,224,147, 55,135, 72, -190, 60,148,201,243,124, 81, 81,251,241,199, 31, 99,234,212,169,242, 45, 91,182,116, 93,190,124,121, 87, 66,200,124, 79, 66,149, -129,129,225,223, 39,178,156,127, 75, 20, 90, 28, 33,254, 1,254,126,232, 55,248, 69,252,246,219,239,104,221,186,181,227, 92, 66, - 66, 2,250,247,237,133, 31,191,155, 7, 0,254,247, 19,168,251,125, 78, 78,158,246,253, 39, 7, 46,154,118, 43,181,240,192,166, - 77,155,208,170, 85,171, 98,247, 15, 30,208, 15,223,127,253, 49, 40,165,178,251,122,121,148,147,249, 7,104, 48,104,216, 75,112, -247,156, 23,134,247,222,212,165,255,130,142,105, 89,218,121, 44,169, 61, 92, 92,184,112, 1, 70,163, 17, 1, 1, 1,144, 74,165, - 80, 4,149, 71, 10,223, 4, 25, 36, 17,233, 17, 58,188,222, 49, 18,159,188,218, 14,175,205,221,138,249, 43, 15,162, 1, 82,255, -213,241,141,142,142,174, 22, 31, 31, 95, 76,100, 21, 20, 20,160,176,176, 16,249,249,249, 40, 40, 40, 0,199,113,152, 48, 97,130, -108,215,174, 93, 3,163,163,163,183,251,208,141,120,171,197,208,105, 69, 98, 67, 34, 45,156, 60,121,178, 49, 34, 34,194,168, 86, -171, 41, 47, 83, 20,180, 29, 62,205, 31, 0, 56, 94, 86, 48,127,254,124, 83,108,108,172,129,231,121,249, 43,175,188,226,211,244, - 48, 70,163,145, 58,115,154, 76, 70,199,241,217,179,103,155, 34, 35, 35,141,106,181,154,154,205,190,139,224,211,215,179,161,144, - 73,160,144, 73,160,148, 75,225, 95,161, 49, 20, 57,103, 96,181, 90,241,209, 71, 31,153,163,162,162, 76,106,181,154,202,229,114, -217,184,113,227,188,134,115,196,136, 17, 52, 40, 40,200,172, 86,171,101, 83,167, 78,189,107,118,231, 63, 79, 37, 67, 37,151, 66, -173,224, 81, 57, 33, 14, 10,170,247, 57,172, 18, 73,113,111, 4,133, 66,129,150, 45, 91,162,102,205,154,216,176, 97, 67, 91, 0, - 76,104, 49, 48,252,203,225,106,197,186, 75,104,109,222,188,185, 13,236,171, 78,119,235,214,173,104,181,105, 80,140, 31,211, 23, -207, 13, 31, 4,155, 77,112, 44, 55, 65, 56,130,209,207,118,133, 32,216,124,121,176,215, 33,158,165,125,142, 51, 39, 37,156, 4, - 0, 42,197, 71,211, 23,158,251, 31,108,130, 80, 52, 13, 42, 0, 72,128, 23,135, 63, 89,116,172, 12,194, 41,129, 13,111,140,122, - 26,238,158, 83,173, 82, 12,103, 53, 27, 64,156, 22,123,124, 16,139,109, 50,206,226,216,191,127, 63,212,106, 53,134, 12, 25,130, -113,227,198,193,198, 7, 97,237,129, 44,188,181,248, 0,116, 70, 51, 6,183,171,128,215,255, 87, 7,175,207,255,211, 33,178, 18, - 18,114,255,213,113, 15, 8, 8, 24,186,116,233,210,187, 68, 86, 90, 90, 26, 87, 88, 88, 8,179,217, 44, 20, 20, 20,192,102,179, - 97,226,196,137,210,119,223,125,119, 40, 33,100,170,157,199,232,142,115,231,117, 26, 79, 8, 25,127,246,236,217,248,119,222,121, -199,220,190,125,251, 91, 9, 9, 9, 90,137, 68,130,232,232,232, 5,157, 58,117, 10,153, 62,125,186,185,107,215,174, 55, 36, 18, - 9, 42, 87,174,172, 61,115,230, 76, 60, 0,149,175,113,119,230,252,230,207, 79,197, 86, 31, 58,117,234,116,179,114,229,202, 90, -137, 68,130,203,191,204,166,190,190, 79, 41,207,161, 74,108,160,216,140, 4, 84,126, 64, 78,209,110,167, 78,157,146,170, 85,171, - 86,200,113, 28, 78,159, 62, 29, 7, 64,233,141, 83,165, 82, 89, 6, 15, 30,124,235,226,197,139,119, 93, 15, 0,188,132, 67,211, -106,118, 3, 86,108, 3, 32,105,175,199,112, 74, 37,176,190, 59,102, 8, 31,164, 4, 20,254, 97,198,252,252,124, 4, 4, 4, 20, - 89,200,204,102,156, 56,113, 2,205,154, 53,107,179,102,205,154, 93, 44,191, 51, 78,198,249, 55,220,105,145,127,155, 53, 75, 20, - 92,238,124,180,118,186, 70,202,102,179, 34,161,124, 36,102,191, 55, 2, 54,155, 0,155,205, 6,171,253,215,102,179,193, 98, 54, -151, 73,224,238,231, 57,193, 1,170,233,191,175,122, 57,184,125,239,143, 59,204,124,103,248, 54,155, 13, 16, 4, 11, 44, 22,192, - 38, 88, 32,216,108,176, 88,202,166,171,200, 34, 8,136,143,139,194,204,119,134,195,245, 57, 43,126, 92,211,227,207,141, 19,212, -173,187,207,122, 3,192, 71, 76,219, 63, 28, 75,150, 90,173,198,138, 21, 43,208,184,113, 99, 0,192,158, 75, 86,188,181,248, 0, -182,204,108,129, 22, 53, 67,145,158,107,196, 43,159,157,196,111, 7,210,239, 18, 89,255, 98,212, 76, 76, 76, 44, 38,178,230,204, -153, 19,182,120,241,226, 88, 0,232,219,183,111,114,135, 14, 29, 50, 47, 93,186,132,232,232,104,146,153,153,217, 13,192, 43,246, -140, 63,158, 82,186,216, 3,175,182,124,249,242,134,240,240,112,163, 40,136, 56,142, 3,207,243, 40, 95,190,188, 33, 34, 34,194, - 88,185,114,101,173, 76, 38, 3,199,113, 16,133,158,143, 5, 16, 36, 18, 9, 68, 78, 87,107,143,200, 89, 26, 72,121,167,235,233, -221, 22, 36,142,227,220, 62,207, 19,148, 74, 37, 5,224,241,122, 9,231, 84, 60,242, 37,123, 8,124,119,156, 74, 9, 33, 59, 41, -165, 56,126,252, 56,174, 93,187, 6,153, 76,134,168,168, 40, 76,157, 58, 21, 70, 99,145,222,237,223,191,127, 27, 0,167, 89,110, -102, 96,112, 96,231,191, 77, 96,185, 90,181,220,249,104,113,110,212,164, 67, 0, 21,137, 29, 55,226,199, 98,133,197, 98, 6,188, - 44,170,234,171,208,242,244, 28,155, 77, 40,241, 57,162,143,150, 32, 80,222,173,200, 18, 4, 88, 45,150, 50,121,129,130,205, 2, - 65,176,192,221,115, 8,225,108,246, 2, 95,198,242,201,195,129,209,104,196,160, 65,131, 28, 34, 11, 0, 50, 11, 44,208, 25, 45, -104, 81, 51, 20, 13,219,245, 71, 68,144, 2,171,119, 39, 35, 34, 72,253,184,136, 44,232,116,186, 8,165, 82, 9,173, 86,235,176, -100, 45, 94,188, 56,214,100, 50,113, 38,147,137, 91,189,122, 77,220,202,109,151,202,173,216,114,169,220,210,245,199,202,229,228, -228,213,164,148,170, 40,165, 42, 0, 31, 19, 66, 20, 37,241,203,100, 50,135, 64,113, 22, 64, 10,133,226,158, 4,140,163,160,177, -139, 51,153, 76,230,246,184,107,247,154, 55,200,156,133, 22,104,145, 85,203, 69,108, 73, 36, 18,136,190, 81,222, 32,151,203, 29, -113,119, 7, 94,226,244, 60, 73,233, 93, 49,205,102, 51, 10, 11, 11,145,155, 91,204,162, 10, 81, 4, 51, 48, 48,184,215, 34,255, - 86,177, 85,172,252,112, 85,147,176,175, 62,109,181,152,221,138,159, 53,191,236,195,173, 84, 45,162,194, 14,131,122, 88,169,218, - 19, 6, 14, 28,248, 93,116,116,180, 99, 61, 45,133,202, 47,244,133,151, 63,128,213,106,134,191,138,195,243, 67,159, 44, 38,178, -138, 44, 90, 38,120,146,115, 57,121,218,247,159,236,191,112, 90, 96, 64,232, 1, 87,241, 51,115,217,177,126, 57,249,198, 56,142, - 59,130, 28, 18,109,235,255,226, 7, 35,156, 10,247, 83,171,150, 76,126,221,231, 23, 71, 56,105,191, 81, 11, 94,160,188, 95, 13, - 53, 87,176,251,173,225, 79,252,228, 44,230, 66, 66, 66, 54,117,238, 55,191, 99, 90, 54,243,209,122, 88,144,203,229, 24, 55,110, - 92,177, 99, 97,254, 82,168, 21, 82,236, 59,151,137, 99, 59,214, 96,207,217, 76, 40,101, 18,132,211,107,143, 77,188,213,106,117, -186, 78,167,139,214,235,245,200,207,207, 71,126,126,126,113, 65, 32,149,146, 23, 94, 26, 27, 38,149,201, 97, 49,155,240,219,138, - 15,189,114,182, 77, 32, 55,219, 84, 64,249, 30,117,252, 33,145,202, 11,206, 37, 38, 46,224,121, 30, 28,199,225,151,207,222,122, -101,253,220,151,253, 1,224,212,166,207,242, 7, 77,248,116, 33,199,113, 48, 26,141,138,210,132,251,246,237,219,113, 70,163,209, - 96, 23,104,162,105, 29,215,175, 95, 47,103, 52, 26,245,206,199,125,129, 74,237, 15, 4, 37, 0,234,136,187,172,103, 55,110,220, -136,177, 88, 44, 58,158,231, 97, 50,153,124, 82, 69, 28,199,201, 78,159, 62, 29, 39, 8,130,219,235,107, 86,140, 1,162,234, 0, -242,192,210, 20,184, 62, 93,227,174, 5,204,192,240, 95,183,108,161,148,250,226, 81, 16, 88,238,254, 59, 11,173,182,155, 55,111, -166,206, 45, 68,171,197, 98, 23, 89,127,139, 30,155, 77, 64, 74,134, 1,151, 46, 93,198,252,249,243,177,239,224,155,129,211,167, - 79, 87,188,251,238,187,198,129, 3, 7,206, 21, 4,161, 46,199,113,167,250,245,235,231,182,149, 38, 8, 66,185, 99,199,142, 37, -138,251, 22,139, 5,254,254,254,240,247,247, 71,181,202,113,119,137, 44,155,205, 6,115, 9, 93,135,162,143, 22,161, 2,181, 88, -108,176, 9,130, 67,252,228,228, 27,227, 54,110, 63, 94,201,233,242,170,226,159,150,141,107,120, 22,131,163,166, 58,226,177,106, -201,228,215,167,127,245,149, 34,199, 22, 62,110, 80,191,231,106,245, 31, 52, 20,131,159,126,170,141,209,100,218, 32,225,168, 96, -113, 60, 15, 28, 40,138,249,104, 49, 60, 56,100,102,102, 66,175,215, 35, 40, 40,168, 88,133, 21,173,209, 98,194,128, 42,232,244, -214, 94, 24,204, 54, 40,164, 28, 94,233, 21,143, 67, 63,175, 70,166, 49,211, 49, 26,241, 95,142,115, 87,175, 94,141, 46, 87,174, - 28,242,243,243, 97,181, 90,133,190,125,251, 38,243,188, 52,142,151, 74, 73,247, 65, 99,133,212,212, 20, 11,199, 73, 64,169, 13, - 79,245, 31, 69, 20, 74,149,204,108, 50, 89, 1,140,247,176,166,164,243, 20, 14,254,157, 58,117, 10, 17, 71, 2,174,159,251,178, -191,211,185,128,134, 13, 27,134, 56,143, 58,244, 81, 20,147,129, 3, 7,170,202,151, 47, 79, 0,224,200,138,119, 68,235, 25,233, -209,163,135,178,124,249, 34, 63,252, 63, 62,243,125, 77,237, 48, 53, 5,242,174, 3,121, 55,238,178,100,245,232,209, 67,145,152, -152, 88,170,188,104,119,128,247, 56,119,151,134,183, 2,169,199,125,226, 26,222,128, 88,222,105, 13,126,238, 83, 28,228,126,161, -198,166,111,109, 57,196,196, 22, 3,131, 79,112,209, 34,255, 30,216,215, 54,220, 9,160,173,253, 23,197,124,180,186,117,235,182, -171,152,122,164,128,197,106,190, 75,100,217,108, 54, 72,137, 17,243,231,207,199,171,175,190, 10, 0,178,215, 95,127,253,167,233, -211,167,247, 17, 4,161, 46,165,180, 21, 33,164,164, 86,227,206,232,232,232, 52, 74,169,148,227,184, 86,159,125,246, 89, 72,215, -174, 93,225,239,239, 15, 42,208,187, 68,150,205, 38,192,108, 54,193,147, 73, 43, 56, 64, 53,253,247, 53,227,130,219,247,250,184, -131, 77, 16,182,137, 34, 75,176,217, 0,161,232,166,172,244,100,108,253,109, 3, 62, 95,242,121, 14, 8,189, 0, 10,129,227,184, - 83,158,194, 40, 8, 66,221,189, 71,206,183,106,217,184, 6,166,127,245,149,226,236,177, 59, 63,141,125,237,237, 90,253, 7, 13, -197,154, 31, 87,128,179,230, 30,119, 22, 89, 54,139,128,188,156,204, 30, 59,152,143,214, 63, 6,139,197,130,156,156, 28, 88, 10, -115,208, 40, 90,139, 15,250, 71, 32, 45,199, 0,169,160, 67,245,128,116,236,200,190, 1,181, 90,253, 88,196, 53, 63, 63,127,197, -168, 81,163,218,236,222,189, 91,198,113, 28,242,243,243,209,174, 93,187,204, 12, 33, 86,249,194, 75, 99,195, 82, 82,146,173, 1, - 42,222, 40,147, 73,145,158,158, 46,180,233, 58, 68, 63,104,196,171, 49,175,190, 51,115,105,202,190,197,139,125,121,134,243, 72, - 64,215,115, 95,126,249,165, 41, 54, 54,214,160, 80, 40,228,195,135, 15,247,169,255,208,100, 50,209,217,179,103, 27, 93, 71, 23, -154, 76, 38, 58,127,254,124, 83, 92, 92,156, 81,165, 82, 81,139,197,187,223, 39,199, 17,235,243,211,127,176, 90,173,214, 98, 86, - 44, 81,100, 89, 4, 82,184,104,209, 34,115, 92, 92,156, 73,173, 86, 83,133, 66, 33,243, 37,156, 99,199,142,165,193,193,193,102, -141, 70, 35,155, 48, 97,194,125,141, 58,180,216,192, 79,255,204, 49,189,131,194,223,223, 31, 5, 5, 5,142,176, 70, 71, 71, 51, -177,197,192,224, 6,119,105,145,127,153, 21,206,147,143,150, 91, 7, 6, 1, 40, 76, 75,207,140, 8,139,172, 0,171,213,106,223, - 44,176, 90, 44, 24,247,226, 32,204, 93,178, 8, 0, 68,177,213,233,245,215, 95,255, 9, 46,254, 94,238,176,106,213,170,105,175, -191,254,122, 64, 90, 90,218,150,239,190,251, 46,100,200,144, 33, 24, 63,126, 60, 62,254,248, 99, 72,229, 74,132,132,151,115, 60, - 71,124,110,102, 70, 54, 40,104,161, 91, 5,105,247,209,162, 20,124,104,120, 60, 44, 54, 11, 4,139, 5, 22,139, 5, 68, 82, 20, -181,173,191,109,192,144,103,199, 66,170, 8, 8,254,116,254, 71,250, 90,141,162,251,188, 59,114,164,209,187, 60, 5,119,246,216, -157,159,198,190, 58,161,147, 40,178,214,173, 88,114,225,147,137,189, 86, 42,228,188,227, 57, 22, 65, 0,199, 73,152,143,214, 67, - 68, 88, 88, 24, 50, 50, 50,144,155,155, 11,141, 70,131,172,172, 44,100,103,103, 35, 55, 55, 23,198,252, 28,132,218,114, 65,172, -217,224,121, 30,233,183,139,124, 0, 31, 19,107, 22,238,220,185,115,177, 98,197,138,171,222,126,251,237, 65, 19, 39, 78,148, 10, -130,128, 75,151, 46, 1,132, 80,169, 76, 14,142,227, 32,149,242,200,203,203, 23,212,126, 65,119,204, 84,162,150,202,254,207,222, -117,135, 71, 81,188,225,119,246,122,201,165,247,132,132,208,146,144,208,165, 19,138, 84,233, 82,164, 23,145, 38, 77, 16,233,210, - 20, 65,154, 72,147, 34, 2,210,225,135,210,165, 72,239, 16,122, 8, 37,144,222,123,114,185,203,213,157,223, 31,228,226, 17, 83, -238, 66, 20,197,125,159,103,159,189,155,221,125,119,102,118,119,246,221,111,190,249, 70, 4,134, 39, 44,109,152,112, 76,235, 97, -175,194, 59, 48,124, 97,174,105, 36,160, 80, 40,196,245,253,203,115, 90, 15,251,202, 22, 0,132, 98,105,102,135, 14, 29,162,107, -214,172,153,119,251,246,109, 95, 20, 25,117, 88,204,243,105,232, 57,108, 26, 79, 38,149,228,181,111,223, 62,198,196, 25,117,122, -109,206,224, 79,103, 19,194, 19,229,117,237,218, 53, 58, 56, 56, 56,143,199,227,225,241,161,165, 57, 61,135, 77,147,144, 63,198, -244,254, 9, 39,159,211,145,247,247, 95, 10, 88,180,104,145,190,115,231,206,177, 38,127,177,168,168, 40,207, 46, 93,186,136,191, -251,238, 59,125,151, 46, 93,226,106,213,170,165,100, 24, 6,161,161,161,222,165, 89,170, 76,144, 74,165,250, 17, 35, 70,196, 60, -124,248,176, 92,163, 14,203, 66,165, 74,149,192,178, 44,218,180,105,131,252,252,124,206,178,197,129,195, 59,136,162,113,180, 74, -141, 12,175, 55,232,199,143,158,180, 96, 45, 64,108,204, 90,129, 63, 12, 75, 20,100,234,212,207,229, 0,164, 38,177, 53,121,242, -228,204,178, 50, 97, 38,178,222, 27, 56,112, 32,102,206,156,137, 21, 43, 86, 24,151, 45, 91,198,123,242, 44, 82, 55,236,211,121, - 89, 69,206, 3, 10,170,100,245,236,248,226,248, 50,179,243,230,133,116, 89,178, 32, 62, 89,117,121,216,216, 57,133,173,151, 17, - 64, 14,241, 48, 2,192,134, 31,126,200, 19,136,109,229,125,251, 15, 6,128,246,107, 87, 45,253,229,107,252, 88,182,216,162, 36, -112,252,228,105, 14, 38,145,181,238,187, 69, 15,237, 72,242,154, 9,159,135,233,205,207, 3, 0,142, 10,252, 18,210,101, 73,199, -148,140,188,239,185, 91,237,239,129, 86,171,197,234,213,171, 49,103,206, 28,100,100,100, 32, 45, 45, 13,153,153,153,133,139, 82, -169,132,187,187, 59,126,251,237,183, 63,249, 49,253,219,241,242,229,203,117,135, 15, 31,198,133, 11, 23,250,205,152, 49, 67,224, -238,238, 78,236,236,146,137, 94,167, 5, 64,105,106,106, 42, 43,179,177, 79,116,118,243,142, 73, 72, 74, 9,212,235,180, 96,141, -186, 18,189,205, 11,194, 59, 76,125,244,232, 81,229,229,203,151,107,205, 71, 2,246,159,182,118,117,131, 6, 13, 28,215,172, 89, -163,237,218,181,107,180,201,121,221, 18,103,248, 83, 47, 48,233,209,163, 7, 65, 69, 57, 91,143, 90,190,197,196,105, 62, 26,177, -219,231, 27,183, 84,175, 94,221, 49, 56, 56, 56,186, 52,222, 42, 85,170,168, 61, 60, 60,180, 1, 1, 1, 74,129, 64,240,202,146, -165,215,171,170, 84,169,194,186,185,185,105,107,214,172,169,180,214,105, 95, 42,149, 82,147, 85,172, 56, 88, 51,234, 80,192,131, - 97,224,192,129,133,145,225,167, 86,175,158, 56,120,240, 96,143, 41, 83,166, 96,203,150, 45,184,114,229, 74, 70,209, 99, 90,181, -106,133,139, 23, 47, 46, 0, 48,143,123,186, 57,112,248,247,161,204, 56, 90, 69,177,117,235,142,223, 97,230,211, 84, 28,190,254, -250,107,113,129, 37,171,253,103,159,125, 6,181, 90,237, 80,140,186,107,103,138,181, 81,156,200, 90,186,116,233,110, 74,169, 55, -128, 22, 70, 35,123, 99,243,143, 91,219, 88,160, 24, 11, 57, 41, 97,120, 12, 67,148, 34, 1,189,251,195,166, 45, 59,205,247, 43, -112,126,247, 7,193,253,181,171,150,170, 1,180, 47, 42,182,250,244,233,163, 42,202,105,194,152,177, 99, 10, 69,214,218, 85, 75, - 79, 7,191,231,243,225,156, 79,190, 42, 86,156,125, 53,111,180,156, 97, 72, 51,115, 31,173,226, 56, 43, 64, 45,115,156, 5, 16, -139,197,216,179,103, 15, 66, 66, 66, 80,167, 78, 29,100,100,100, 64,169, 84, 66,169, 84, 22, 90,189, 30, 63,126,140,232,232,104, -136,197,226,119,170,236, 5,211,234,172,246,240,240, 56, 51,119,238,220,193,105,105,105, 93, 50, 51,179,156,142,110,253, 10,157, -250,142, 37,173, 58, 15,200,211, 82,190, 36, 46, 49, 57,224,252,241, 93,142, 39,246,174,131, 78,171, 29, 77,200, 15,225,166,240, - 14,197,228, 83,101, 10,227, 16, 16, 16,144,103, 46, 84,124,124,124,242, 61, 61, 61, 53,193,193,193,133,233,197,141,230, 43,174, -236,214,114, 22,248,127,229,149, 85,159, 38,209, 86, 52,108,132, 76, 38,131, 73,124, 89,147, 79,243,209,150,197, 54,148,101,140, - 58, 52,231,220,118,135, 10,204,183,109, 35,132,183, 99,199,142,118, 59,118,236,120, 15,192, 93, 0,167, 0,232, 11,142, 43,116, -154,167,148,206, 7, 48,159,123,222, 57,206,255, 42,231,191,220,154,213, 10, 5,190, 89, 5,104, 77, 41,189, 80,162,208, 42, 11, - 38,199,119, 0,204,228,201,147, 51,213,106,181,195,224,193,131, 75, 61, 38, 41, 41,105,203,246,237,219, 95, 19, 89,189,122,245, - 26,126,224,192,129, 51, 41, 41, 41,229, 42,152,131,173,244,235, 11, 71,166, 59,180,234,186,228, 51, 0,203,138,151,153, 96,131, -223,243,248,112,237,170,165,191, 20, 17, 91, 63, 3,232, 85, 92,125, 1, 64,135, 15,122, 96,215,214,181, 38,223, 46,233,195,219, -241, 39,250,221, 89, 88,236,104, 69,123, 27,241,194,130,124, 76, 1,231,163,245,183, 32, 48, 48, 16, 87,175, 94,197,216,177, 99, -209,182,109, 91,244,232,209, 3,149, 42, 85,130, 88, 44,198,139, 23, 47,112,233,210, 37,188,124,249, 18, 42,149, 10,117,234,212, -121, 39,235, 32, 49, 49,241, 73, 65, 48,210, 73,166,175, 41,177, 68, 42, 28,240,241,103,222,133,163, 14,247,174,131, 38, 95, 13, - 0,124, 66,200, 50, 66,200, 79, 37, 56,196,191, 18, 20,124,190,240,222,189,123,190, 38,171,149, 78,167, 19,155,210,111,223,190, -237,107,138,173,149,159,159,111,241,168,195,191,138,243,193,131, 7,222,166,209,145,166,209,133,124, 62, 95, 24, 26, 26,234,109, -226,212,104, 52, 22,141, 58, 20,137, 68,194,123,247,238,121, 27,141,198, 10, 27,117, 88, 68, 24,159, 44, 88, 76,141,178, 73,100, -153,124, 58,184,110, 67, 14, 28,254,221, 56, 95,116, 82,105,147,158, 40,151,208, 50, 57,190, 91,161,244,248,149, 43, 87,238,208, -191,127,255,215, 68, 86,159, 62,125,140, 7, 15, 30, 60,239,225,225,145,204, 48,204, 19,107,243, 81,232,163, 5, 8,138,110, 99, - 24,230,126,139,134, 53,193, 48,204,253, 57,159,124,162,249, 26, 63,190, 38,182, 14,253,178,175, 99, 73,237, 34, 0, 56,185,122, - 97,224,240,241, 24, 56,124,188, 3,128,230, 64,201,163, 21, 75,203, 7,135,191, 14,205,154, 53, 67,120,120, 56, 78,159, 62,141, -139, 23, 47, 66,165, 82,129, 16, 2,169, 84, 10,173, 86, 11,177, 88,252,206,138,172,146,160,211,233, 12, 51, 22, 44,223,206,227, - 11, 13, 44,171, 35, 58,157,238, 99,107,158,243, 25, 51,102, 48, 40,198,247,106,194,132, 9,197,166,191, 45,206, 89,179,102, 21, - 59, 74,112,194,132, 9,165,142, 30, 44, 9,159,127,254,121,133,141, 58,180, 80,124,113,130,138, 3,135,119,207,170, 85,236,208, -189,114, 9, 45,134, 97,238, 23, 51,186,144, 0,160,197,141,232,163,148, 26,120, 60,222, 2,123,123,251,209,121,121,121,191,245, -234,213,107,114,159, 62,125,140,192, 43, 7,249,242, 22, 42, 51, 59,111, 94,235,110,223, 78,201, 82,106,214, 20,221, 86,212,242, -100, 18, 91,235,190, 95,186,254,151, 3,123,250, 36, 37,196,173, 47,169,108, 37, 9,170,146, 70, 43,102,231,168, 23,180,238,246, -237,103,153, 57,106,206, 71,235, 45, 88,182, 76, 40, 58,169,244,127, 1,148, 82, 13, 33,228, 11, 66,136,201,162,251,197,203,115, -223,175,255,227,193, 95,253,192,124, 91, 41,214,172, 68, 75, 38,136, 46,238,184,210,182,253, 5,156,201,165, 76, 16, 93, 26,146, -173,228, 75, 6, 0,161,128,151, 82,210,228,209, 66, 1, 47,165,130,174,161, 41,192,225, 2,238,137,230,192,225, 95,219, 22, 91, -231,163,101, 18, 65, 37,161,164, 56, 89,165,193,104, 52,126, 11,224,219,138, 44,216,195,103,185,155, 0,108,178,116,255, 2,159, -172,161, 5, 75,241,249, 76,127,100,117,217,250,244,233,179, 1,192, 6,238, 86,251,123,176,127,255,126,174, 18, 94,127,192,215, - 19, 66,126, 50, 9, 47, 75,183, 21,217,239,240, 95,144,175,191,130,243,228,223,201,119, 52,220,224,246,182, 27,105, 14, 28, 56, -252,243, 81,156, 53,171,212, 81,135, 28, 56,112,248,215,137, 45, 77,121,182,113,224,192,129, 3,135,138,251, 88, 42,206,215,146, - 0,104, 87,194, 65, 22,143, 38, 32,132,180, 43, 71,166,206,112,156, 28, 39,199,201,113,114,156, 28, 39,199,249,223,226, 44,139, -219,252,120, 66,200, 40, 74,233, 38,252, 11, 80,226,128, 22, 74,233, 95,182, 0,104,199,113,114,156, 28, 39,199,201,113,114,156, - 28, 39,199, 89,206,243,140,250, 59,206, 83, 1,249,164, 69, 23,211, 54,174,235,144,195, 95, 14,111,111,111,176, 44, 11,134, 97, - 16, 23, 23,199, 85, 8, 7, 14, 28, 56,112,120,167, 96,181, 51, 60,135, 98, 76,130,190, 61,231,128,197,172, 87,127,176,148,198, -252, 58,255, 93, 43, 99,223,190,125,121,214,236, 31, 25,105,207,220,129,199, 10, 91,185,176,155, 50, 79,191,194, 24, 58,119, 77, -113,251,177, 44,139, 35, 71,142,160, 91,183,110, 38,243, 42, 0,192,195,195, 3, 71,142, 28, 41,220,175, 65,131, 6,133,193, 27, - 57,112,224,240, 23,183,105, 14, 65,149, 64,200,199, 0,253, 99,216, 37, 75,195,104,214,227,173,175,237,103, 95,115, 56, 24, 18, -100,150,164, 6,197,102,154, 25, 22, 91, 66,247,137,233,133, 99, 31, 17, 17,225, 91,173, 90,181,104, 0, 89, 69,118,251,211, 54, - 90,202,195, 79, 8, 33,206, 85,234, 15,145, 73,100,159,106,181, 90, 63, 27,133, 34, 37, 35, 61,117, 67, 70,204,131,117,102,187, -217,222,184,113,195,163,113,227,198, 9, 0,114,203,226,228,192,161, 66,159,167, 63, 7, 44,173, 56,103,120, 82,163,183, 31, 12, -204, 80, 80, 12, 2,193, 61,250,114,127,239,114,241, 84,235,229, 5,150,223, 8, 64,125,128,214,151, 75, 37,245,212, 90, 93, 10, - 75,233, 16, 26,177,247,174,213,124, 85,250, 30, 3,208,185,132,173, 11,232,203,125,214, 9, 37,150,206,190,117,241,160,216, 94, - 70, 80,173, 65,175,105, 48,139,224,252, 6, 23, 70, 10, 96, 24, 33,164,173, 76, 38,171,161, 82,169,162, 40,165, 15, 0,172,167, -148, 38,148,147,147, 1, 48,194, 70, 46,239,228,171, 16,213,143, 73,203,142,207,213, 27, 47, 1, 88, 70, 41,205,172,168,155,234, -149,200,114,223,244,217,128,198,195,150, 78,108, 7,251,214,223, 78, 3,176,166,180, 99, 24,134, 25,233,233,233,233,231,229,229, - 21,185,182,123,221,205,227, 15,223, 67,143, 30, 61, 0, 96, 36,203,178,126, 94, 94, 94,145,132,144,205,150,182,141,132, 16, 15, - 0,124, 74,105,108,193,127, 57,128, 96, 0, 85, 0,188, 4,240,136, 82,154,247,134,215,232, 95,193,233,237,237,237,201,178,236, - 39,110,110,110, 93,146,147,147,143, 49, 12,243, 99, 92, 92, 92,194, 91,110,123, 54,154,252, 43, 44, 93, 3, 24,109,205, 9,164, - 82,105,114,126,126,190, 43, 0, 72, 36,146, 20,181, 90,253,151,141, 18,252, 59,207,245,247,188, 25, 48,242,212,229, 71,157,204, -147, 58,180, 8, 42,230,193, 37, 65,167, 46,135,181,124,125,191, 96, 99,113,109, 96, 65,244, 85, 44, 88,176,128, 44, 92,184,112, -120,213,170, 85,171, 51, 12,243,116,238,220,185,175,133,190, 41,186,109,222,188,121,127, 68,110, 45,134,211,219,191,217,161,126, -253,251,182, 30, 55,106,152,141,151,139, 13, 18,211,242,156,126,216,178, 99,249,142, 29,187,186,126,210,175,125, 39, 0,248,234, -171,175,122, 86,170, 84,169, 50,143,199,139,252,242,203, 47,127, 46,141,147, 3,135,191, 0,214, 77, 42, 93,230,243, 25,212, 87, -142,124,218, 7, 32,195, 90, 53,109,208, 98,244,144,110,132,242, 36, 24, 48,114,186,193,106,174,202,195,197,224,169,191,174, 29, - 28, 52,185,111,183,118,204,123,193,149,225,225, 98, 7, 48, 2,108, 60, 30,229,180,102,233,151,235, 1, 52, 46, 71, 54, 59,191, -184,182, 27,137, 89, 70, 16, 2, 16, 2, 48, 4, 80,230,179,232,208,115,232, 60,235,133, 18, 97,236,101, 4,147,119,231, 3, 0, -239,141,219, 56, 66,234,187,184,184,172,155, 56,113,162, 67,237,218,181, 61, 36, 18,137, 76,173, 86, 87,143,136,136,240,155, 51, -103, 78,123, 66,200, 18, 74,233, 65, 43, 57,125,170,121,123,238, 91, 51,121, 68,163, 58, 85,124, 33,208, 42,193,106,242, 42, 61, -139,120,222,116,204,250,253, 35, 9, 33,253,203, 51,101, 66, 90, 90, 26, 1, 0,103,103,103,250,186,200,106, 50,236,187, 41, 29, - 48,121,229, 41,168,242,181, 59, 75, 58, 62, 33, 33,193,100,217,242, 59,114,228, 72, 80,183,110,221,208,200,207, 27, 55,186,165, -162,225,161, 56, 0, 40, 76,183,162,172, 11, 1,204, 42,104,135,119,241,120,188,211,237,218,181,243,251,228,147, 79, 72,131, 6, - 13, 16, 26, 26, 90,101,247,238,221,237,248,124,126,164,209,104,124, 0,224, 41,165, 84,111, 33,183, 0,128, 63,143,199,171,253, - 79,230,244,244,244,148,106,181,218,161,222,222,222,163,186,119,239, 94,187, 91,183,110,196,223,223, 31, 79,158, 60,105,112,226, -196,137,121,117,235,214,125, 16, 23, 23,183, 73, 36, 18,109, 79, 72, 72, 80,191,133, 47,188, 81, 0, 60, 11, 12, 28, 11, 44, 88, - 39, 0, 88, 64, 41, 77,180,244, 28,249,249,249,174,166,247, 40, 33,196,245,175, 44,143, 53,231, 34,132, 60, 38,132, 56, 22,252, - 70,105,107,134, 97, 96, 48, 24,242, 12, 6, 67,213, 50, 56,253, 1, 48, 86,100,153, 82, 74, 75, 11, 4, 45, 5,128, 14,205,131, - 50, 64, 16,102,178,104, 21,243,145, 25, 86, 40,192, 40,130, 78, 93, 9,115,124,205, 10, 86, 4, 11, 22, 44, 32,243,230,205,195, -252,249,243,187, 1, 8, 97, 89,246, 82, 96, 96,224,234,215, 40, 89,182,112,219,188,121,243,190, 95,176, 96, 1, 1, 80,172, 32, -114,172, 92,119,240,135, 31,246,104,189,104,246, 4,155,248,116, 29,238, 69,170,225,104, 35,196,188, 47,198,138, 52, 26,125,211, -245, 63,239, 24,181,118,201,244,205, 70,163,241,125, 0,239, 25,141,198,219, 0,126, 46,141,147, 3,135,191, 0,173,173,154, 84, -186,132,135,156,160,106,239,150, 48, 98,152,111, 37,183, 62, 19, 63,249, 72, 26, 28, 88, 13,249,176, 65, 84,154, 17,199,143,158, - 0,128,189,214, 89,157,250,189,199, 23, 98,251,210,249, 95, 4,132, 52, 10,198,195,120, 61,110,199, 27,161,138,212,131,199,232, - 97,100, 41, 64,145, 95,222, 82,199,101, 26,112,249,169, 22, 12, 1,120, 12,192, 48, 4, 60,166,156,100,172,246,217, 87, 91,239, - 4,167, 37,179, 0,171,125,246,134, 47,160,247,107,212,168,177,106,225,194,133,238,201,201,201,142,183,111,223,134, 88, 44,134, -131,131, 3,223,211,211, 51, 96,213,170, 85,217, 19, 38, 76,248,130, 16,114,151, 82, 26,101, 33,103, 96,231,247,106, 95,221,180, -244, 43, 59,253,141, 19,200,218,243, 63,240, 24, 10,161,220, 6,126, 82, 41, 78,124, 88,205,177,207,209,200,131,132,144, 64, 74, -105,124, 89,124,225,225,225, 60,141, 70,211,223,214,214,182,137, 64, 32,112, 19,219,251,176, 9,252, 70,233,169,164,202,203, 20, - 87, 85,203, 41,237,220, 58,173,248,172, 13, 38,175, 60,133, 85,187,175,111,171,143,164,185,214,212, 65,214,173,115,184,151,249, -231, 75,235, 46, 23, 88, 82, 86, 7, 0,211,181, 90, 45, 35, 20, 10,137, 68, 34, 25,188,104,209, 34,221,128, 1, 3, 10, 29,192, - 66, 66, 66, 16, 18, 18, 66,114,115,115,171,156, 59,119,174,202,142, 29, 59, 12,132,144,199,148,210, 67, 37, 91, 44,100, 49,249, -249,234, 74, 18,169, 84,245,195,250,245, 43, 90,182,108,201,154,207,147, 88, 30, 78, 0,176,183,183,223, 92,163, 70, 13, 50,115, -230,204,132,138,226,244,243,243, 59, 21, 18, 18,210,166, 67,135, 14,252,230,205,155,195,211,211,179,112,155,179,179, 51, 66, 66, - 66, 72,108,108,108,157, 75,151, 46,173, 63,117,234,212,106, 63, 63,191,115,145,145,145, 29,254,206, 86,167,192, 82, 5, 43,132, -211,166, 98, 2, 33,255, 59,141, 69,132,216,108,220,184,209,213, 52, 39,163, 94,175,135,209,104, 44, 92,155, 22,150,101, 97, 52, - 26,177,104,209, 34,163,133,117,154,135,130,224,208,102, 11, 91,220, 90, 36, 18, 89, 22,185,151, 32,204, 67,156, 85, 83, 46,151, -251, 2,232, 92,163, 70,141,233,230,155,171,187,188, 90,231,229,229, 69, 39,106,236,195, 0,180, 44,237,118, 95,184,112,225,208, -249,243,231,247,192, 31,115, 86,214,238,219,183,239,185, 34,251,213, 46, 88,231, 17, 66,206, 51, 12,115, 4,192, 86, 0,127,178, -186,203,100, 54,163, 39,126,250,137, 77, 92,154, 14, 95, 31, 76,195,214,139, 57, 24, 26,162,192,228, 15,236, 48,112, 64, 63,249, -254,255, 29, 24, 13, 96,179,217, 33, 79, 2, 3, 3, 73,120,120, 56, 39,178,222, 45, 52, 4,224, 98,246, 95, 11,192, 52,101, 86, - 90,193,115,225, 84, 36,221,124, 63,211, 58,181, 32,221,165,224, 56,106,198,155, 10,224, 86, 57,219,187, 11, 5,121,248, 19,248, - 0,112,236,216, 49,218,165, 75, 23, 98, 90, 23,223,178,247, 57, 62, 98, 64,247, 78, 93,218, 54, 3, 35,113,192,179, 20,224, 90, - 12, 5,159,209,131, 1,197,141, 43,231, 40,248,236,246, 34, 39, 46,209,122, 66,252,250,124, 94,187, 86,240,183, 63, 46,157,196, -123,156,194,199,214, 75, 42,232,242,149, 72, 77,138, 65, 74, 66, 52, 18,227, 94, 34, 62,230,229, 3,128,204,179,148,243,207, 5, - 7,140,108,193, 55, 32,139,130,250, 44,118,228,101,217,156,186,188,240, 42,254,193,193,153, 34, 35,160,203, 11,183,160,210,207, -148,208, 0,183,175, 86,173,218,178,217,179,103,123, 63,122,244,200, 54, 47, 47, 47,239,196,137, 19, 23,162,163,163,221,220,221, -221, 99,199,142, 29,219,204,203,203,203,181,103,207,158,178,125,251,246,205, 6,240,137, 5,156,193,221,155,212,187,182,101,245, -119,242,244,253,107,160,141,184,143,227,137,121,184,146,172,162, 85,236,196,100,124, 29, 23,216,136,249,248,170,185,167, 77,231, - 95, 34,190, 5, 48,176, 52,206,171, 87,175,122,200,100,178,149, 3, 7, 14,244,156, 56,113,162,200,200,183,231, 31,184,150,110, - 55,125,253, 53, 79,149, 70,199, 27,208,166, 50,166, 12,170,141, 41,171,206,154, 68,214, 40, 63,191, 44,182, 56, 78,111,111,239, -145, 44,203,250, 21,252,173,108, 90,183,189,156,187,216,236,148,133,233, 68,225,188,216,211,211, 19, 12,195, 68,198,197,197,109, -182,244, 26, 73, 36,197,207,158,226,224,224,128, 86,173, 90, 33, 48, 48,144,223,178,101,203,218, 0, 14,149,196,169,211,105, 61, - 88,150, 66,161, 80, 72,157,156,156, 28, 20, 10, 69,186, 78,167,123, 35, 78, 0,112,116,116,236,221,170, 85, 43,254,238,221,187, -211, 34, 35, 35,111, 12, 24, 48,224,165,173,173,237,107,214, 95,185, 92,142,234,213,171,227,203, 47,191,228,119,234,212,169, 76, - 78, 55, 55,183,246, 59,118,236, 0, 33,164,240,165, 93, 20,190,190,190,112,119,119, 71,231,206,157,249,189,123,247,110, 95,222, -231,200,138,134,230, 76, 49, 22,173, 5,175,139,217,146,187,223,138,219,223,130,235,158, 98,178, 46, 73, 36,146,148,242,228,179, - 8, 74,236,238, 20,139,197,133, 86,168,162,231, 42,142,147, 97, 24,204,153, 51, 7,132, 16, 8, 4, 2, 8,133,194, 98,215,173, - 91,183,182, 54,159,177,132, 16, 70, 40, 20, 78,231,243,249,159,104, 52, 26,111,137, 68,146, 96, 52, 26,183,105, 52,154, 69, 5, - 22, 81,251,226,238,221,146, 56,229,114,185,239,179,103,207,106,148, 84, 41, 26,141, 6,181,107,215, 6, 52,120, 92, 26,103, 68, - 68,132,111,213,170, 85,253, 1,152,166,104,187, 72, 41,109,105,246,223, 28, 23, 41,165, 31, 20,252,126,250,226,197, 11, 95,147, -208, 50,231,212,235,116,126,222,174,182,184, 23,165,198,214,139, 57,248,125,182, 39,218, 46, 74, 64,175,250,124, 4,250,216,192, -160,211,251,247,237,219,119, 59, 0,255,130,151,100,207,190,125,251, 6,240,120,188,179, 0,126, 5,144,253,119,221,243, 28,231, -155,161, 12, 45,226, 66, 8, 57,106,118,254,174,166,255, 51,102,204,152,181,120,241,226, 71,132,144,163,230,233,230,251,153,175, - 11,218,155,163,148,210,174, 51,103,206, 12, 94,178,100,201, 55,166,125,255, 10,133,104, 77,215,161,109,106,190, 28,151, 98,108, -193,231, 25,193,103, 8,248, 60, 0,148, 32, 58, 42, 2,185, 57, 89,151,233,203,255, 69, 90,102,201,234,219,188,110,189,218, 75, -119,173,154,198,252,116, 73,133,172,188,124,132,223, 61,143, 91,231,127, 77, 50, 26,140,191,130,208,219, 0, 19,138,151,236, 19, - 74,247, 27,203,127, 35,224,149, 85, 12,164,136,216,122,107, 95,185, 31, 4, 4, 4, 44,158, 51,103,142,239,221,187,119, 21, 57, - 57, 57,169, 59,119,238,124,162,209,104,238, 2,248, 62, 38, 38,166,213,247,223,127, 47, 91,190,124,121,135,218,181,107,251,239, -223,191, 95,101, 1,103,157, 47,134, 13,188,246,201,196,207, 36,143,247,173,131,232,113, 40,230,220, 79, 51,254,158,168,154, 13, - 96, 21, 98,149,205, 83,243, 13,167,191,107, 85,137,169,172, 16,162,154,189,168,117, 89,150, 44,153, 76,182,114,199,142, 29,190, - 13, 27, 54,100, 0,224,210, 83,131,120,250,250,107,158, 39, 23, 55, 39,205,131,156,144,146,165,193,164,117,247,112,226, 90,202, -111, 69, 69,214,159, 12,129, 5,221,133,230,105, 71,142, 28,145, 1,248,147, 51,136,121,122,105,221,136,148,210, 76, 66,200,183, - 34,145,104, 14, 33,132, 54,108,216,240, 94,173, 90,181,148, 14, 14, 14, 80,171,213,208,104, 52, 16, 10,133, 80,171,213,136,142, -142,198,141, 27, 55,224,224,224, 96,213,181, 82, 42,149, 80, 40, 20, 96, 89,246,141, 57,141, 70, 35,217,176, 97,131,252,209,163, - 71,242, 3, 7, 14,184, 77,158, 60, 57,189,102,205,154,183,251,245,235,247,220,213,213, 85,115,255,254,125, 92,189,122, 21,153, -153,153,104,210,164,137, 69,156, 90,173, 22,124, 62, 31,106,181, 26, 98,177, 24,124, 62, 31, 6,131, 1, 44,203, 22,138, 47,165, - 82,137,140,140, 12, 8,133, 66,104,181,218,191,253,126, 55, 89,180,204, 81, 90,247, 91,113,251,151,133,138,246,147, 42,173,187, - 51, 43, 43, 75,106,111,111, 63,221, 18, 11, 29, 33, 4, 60, 30, 15, 66,161, 16,132, 16,180,108,217, 18, 35, 70,140, 64,253,250, -245, 17, 17, 17,129, 61,123,246,224,214,173, 91, 16, 8, 4,133,251, 91,220, 63,209,186, 53, 79, 34,145, 92,237,222,189,123,240, -236,217,179, 37,149, 43, 87,198,227,199,143,125,150, 44, 89, 50,253,204,153, 51, 61, 8, 33,239, 81, 74,217,178,173,244, 5, 93, -130,175,186, 11, 59,107, 52, 26, 60,126,252,216,154, 99,254,132,106,213,170, 69, 51, 12,243,156,101,217, 75, 0,106, 83, 74, 91, - 18, 66, 78, 0,144, 23,217, 53,143, 82,250, 1, 33, 36, 7,192, 3,134, 97,158,178, 44, 27, 93,156, 59,149, 66,161, 72,141, 75, -201,113,115,178,145, 96, 72, 11, 27,180, 93,148,128, 62,239,137, 33, 22, 18, 60,137, 76, 66,181,170,149,201,189,203,135,222, 43, - 16, 89, 13, 19, 19, 19, 1,224, 61, 0,145,177,177,177, 30, 38,161,197,225,221, 64, 81, 49,100, 18, 80,139, 23, 47,238, 90,156, -184, 42,230,217,124, 45,125,201,146, 37,223,152,253,207,124,131,182,163, 21, 94,119,134,111, 93, 96,229,250, 67,104, 29, 59,118, -172,116, 5,194,162,215,209,131,187,175,183,213, 17,223,224, 6, 45,204,172, 67, 20,161, 55,174, 2,160,219, 44,202,140,103, 55, - 41, 35,147,111,219,240,205, 4,102,227,121, 21, 98, 19, 82,112,245,248, 54,164, 38, 70,109, 5,232,100,250,114,127,206, 27, 55, -150, 85,250, 6,187, 58, 59, 33, 95, 71,193, 82, 0,127, 18, 91,111, 69,100,117,243,247,247, 95,120,237,218, 53,223,252,252,124, -197,149, 43, 87,178,118,236,216,241, 92,171,213,254, 72, 41,221, 89,176,207,225,180,180,180,175, 40,165, 80, 40, 20,124,129, 64, - 32, 45,205,153,147, 16, 82,255,139, 79,134, 94,254,118,195, 22,201,243,135,247,240,253,129,227,200, 82,169,140,231, 83,212, 61, - 41,165, 71, 11,246, 57,123, 39, 77, 29, 79, 65, 43, 9, 24, 2, 15,185,192,157, 16, 34,161,148,230,151,240,229, 58, 96,224,192, -129,158, 38,145, 5, 0,105,185,122,190, 74,163,231, 53, 15,114, 66,131, 54,125, 17,122,110, 63,246, 93,140, 71, 85, 23,217, 69, - 63,121, 86,169, 53,202, 48, 76,164,153,104,170,124,228,200, 17, 89,183,110,221, 84, 0,204,187, 68,255,148,206, 48, 76,100, 25, - 15,219, 92, 66,136,219,246,237,219, 25,189, 94,175,140,136,136,128,187,187, 59,220,220,220, 96,103,103,135,240,240,112,252,254, -251,239,120,242,228, 9, 88,150, 69,221,186,117,173,186, 94,233,233,233,184,127,255, 62, 58,119,238, 50, 57, 53, 53,197,214,193, -209, 41,239,242,165,139,203,203,195,201,178, 44, 1,128,224,224, 96, 4, 7, 7, 75,226,227,227,189,143, 30, 61,234,250,245,215, - 95,199,248,250,250,238, 82,171,213,175, 89, 14, 44, 21, 90, 5,194,165, 80, 4, 74, 36, 18, 8,133, 66,228,228,228, 32, 57, 57, - 25,185,185,185,175,250,114,236,237,223,138,208, 42,206, 66, 85,145,251,255,149,226,176, 56, 49, 69, 8, 25, 4, 96,186,133,101, -129,193, 96,128, 80, 40, 68,227,198,141,177,102,205, 26,220,186,117, 11,191,254,250, 43,124,124,124, 48,108,216, 48, 48, 12,131, - 71,143, 30, 89,155, 69,246,218,181,107,211,123,246,236, 25,188,125,251,118, 73,116,116, 52,158, 60,121, 2,123,123,123,172, 89, -179, 70, 60,106,212,168,106,231,206,157,155, 11, 96, 89,153,101, 53, 27, 93,232,233,233,249, 81,237,218,181,255,180,143,187,187, -187,221,201,147, 39, 93, 77, 2,172,232,136,196, 98,144, 53,119,238,220,239, 2, 3, 3, 87, 21,116, 23,134, 0,144, 83, 74, 91, - 31, 56,112,128, 0, 64,159, 62,125, 40, 33,196,244, 66,122,176,127,255,254, 54,225,225,225,116,254,252,249,197,182,115,169, 41, -137, 27,190, 91,179,241,187,111, 23,124, 33,154,210,217, 14,125,222, 19, 64, 34, 36,176,149, 9,176,104,245,102,253,157, 27, 23, -239,123,120,120, 28, 5,208, 51, 49, 49, 17, 30, 30, 30, 74, 0, 79,121, 60, 94,164,209,104, 76,224,124,225,255, 93, 40, 78,139, - 20, 88,149, 19,139, 19, 74,229, 17,106,230, 22, 47, 19,102,206,156, 25,188,120,241,226,155,111, 34,178,204,157,224, 9, 33,148, - 16,210,154, 82,122,161,240,101, 90, 98,151, 97,161,237,139,241,112,119,115,118,156, 49,172, 57, 88, 22, 48, 24, 1,131,145, 34, - 79,165,198,227,135,183, 84,144,144, 3, 22,229, 72, 44, 90,250,245,236,207,170,220,139, 99,144,144,169,195,133, 67, 27,105,106, - 98, 84,111,250,114,223,199, 21, 37,178,220, 93,157,207,239,222,248, 21,110,189,212,194,200,190,210, 89, 44, 75, 11,127,191,133, - 23, 78,117,103,103,231,229,215,175, 95,175, 44, 22,139, 21,207,158, 61, 51,238,223,191, 63, 65,171,213,174, 55,137,172, 2, 12, -106,208,160,129, 94, 46,151, 67,169, 84,106,116, 58,157,178, 20,145,229,221,186,126,157,139,223,110,216, 34,201,215,106,145,173, -214,128,231,228,250,154,200, 42, 64,179, 54, 53,188,188,136, 68, 1, 10, 32, 42, 71,151, 80,146,200, 2, 0,145, 72,212,110,226, -196,137,230,253,219,112, 86, 8, 12, 50,177,192,120, 37, 44,141, 13, 61,183, 31,151, 30,165,177, 18, 33,207,232, 66, 95, 86, 41, -171,236,113,113,113,155, 19, 18, 18,102, 38, 36, 36,204, 52, 19, 87, 81, 0,102,214,180, 19,254, 41, 61,200, 94, 52, 51, 33, 33, - 97, 38,203,178,155, 45,168,218,132,129, 3, 7,198, 5, 5, 5,101, 7, 6, 6,102,167,167,167, 35, 44, 44, 12,153,153,153,248, -254,251,239,241,248,241, 99,176,236, 43, 29, 88, 92, 55,138, 5, 2, 9,153,153, 25, 54,148, 82,100,102,164,203,103,207,158,109, - 87, 30, 78,163,209,248,218,179,229,229,229,133,177, 99,199, 10, 85, 42,149,125, 76, 76,140,173,249, 54, 75, 57,181, 90,109, 97, - 40, 12, 74, 41,180, 90, 45,178,179,179,161,213,106,241,252,249,243, 66,145, 85,112,254,183,102,209, 50,253,150, 74,165,201, 38, - 7, 81,137, 68, 2, 66, 72,113,221,111, 21, 18,253,217,116, 46, 66, 8,149, 74,165,201,229, 16,135,101,150,199,194,235, 14,161, - 80,136, 17, 35, 70,224,230,205,155,136,136,136, 0,143,199, 67, 94, 94, 30, 84, 42, 21,218,183,111, 15,145, 72,100,173, 69,139, - 10,133,194, 65,179,102,205,146, 68, 70, 70, 34, 45, 45,205,228, 76, 15,163,209,136,201,147, 39, 75,197, 98,241, 32,107, 77,247, - 9, 9, 9, 29,159, 61,123,230, 95,116, 73, 74, 74,202, 54,247, 41, 44, 47, 14, 28, 56, 64,250,244,233, 67,251,244,233, 67, 77, -130,203, 82,100,197,133,109,248,245,240,209,211,159,127,185, 84,169,202,203, 69, 85, 79, 41,148,185,217, 88,180,248, 91,253,181, -107,151,206, 79,159, 60,166,233,254,253,251,151, 0,120, 90,112,200,211,253,251,247, 15,253,242,203, 47,127, 70, 65,152, 7, 14, -255, 30, 20,167, 69,204,159,189,138,232,222, 43,142,163,160,251, 80, 90, 78, 74,211,136,195, 86, 38,225, 85, 32,186,206,191,102, -209, 42,181,241,169,214,175,158,155,179,211,185,237,107, 23,216, 28,125, 8,196,197, 70, 33, 53, 49, 26,239, 53,109,141,199, 15, -239,129,213, 27, 15,210,103,251,203, 28,158, 78,252,250,214, 8,172, 25,244,105,171,166,181,176,244,168, 18,207, 66, 79, 34, 43, - 53,113, 45,141,220,119,176, 34, 46, 16,169,210, 55,216,205,197,249,252,207,235, 22, 58,158, 8, 99, 16, 27, 27,133, 67, 63,175, -130, 94,247, 39, 93,113,220,234,198,155,213,138,148, 89,201,208,230, 26, 33, 97, 84, 18, 43, 47,234,115, 23, 23,151,237,223,125, -247,221,152,166, 77,155,202, 6, 12, 24,240, 44, 51, 51,243,107, 74,233, 62,179, 6,254,125,127,127,255,169,107,215,174,173, 22, - 27, 27,139,223,127,255,253, 25,128,219,165,112,198,241,120,188,245,191,255,188,249, 11,105,149, 0,124, 63,235,115,195,129, 91, - 97,221, 41,165, 39,204, 56, 3,219,213,174,113,244,235,169,227, 24,246,206,111,184, 31,157,140,151,217,154,223, 75,226, 76, 75, - 75, 35,106,181,186,178,189,189,189,249,121,224, 33,207,211, 76,251,168, 70, 66,251,233,151, 61,243,117, 70,136, 5, 12,157,212, -195, 55,225,198,175,251,156,210, 52,105,196, 52, 26,209, 90, 60, 83, 26,193,231,243,225,234,250, 71, 15, 82, 88,166, 85, 99, 31, -108,110,222,188,201,240,120,188,215, 4,186,185,133,200, 90, 75,145, 53,176,148,179,168,208, 50,193, 96, 48,144,242,114,106, 52, -154, 98, 99,142, 21,231,171,197,178,236, 95, 82,126,107, 44, 84,230, 93,134, 38,127,186,252,252,124, 87,169, 84,154,108,234,254, -171, 40,139,214,155,140, 68, 44,173,251,210,154,252, 49, 12, 3,150,101, 33, 20, 10, 81,183,110, 93, 28, 61,122, 20,142,142,142, -176,181,181,133,173,173, 45,164, 82, 41,156,156,156, 10,133, 22,195, 88, 60, 74,135,106, 52, 26, 31, 31, 31, 31, 60,127,254, 28, - 18,137,164,112, 17,139,197, 8, 14, 14, 70, 94, 94,158,215,219,179,221,255, 53, 24,217,175, 93,143,117, 59,126, 25,114,244,232, -177, 79,117,154,252, 90, 1, 1,254,244,246,181,115,247,167, 79, 30,211,137,147, 38,255, 45,152,172, 81,230,190, 86, 51,102,204, -152, 85, 94,190, 25, 51,102,204, 42,206,194, 85, 94,193,133, 87, 93,125,166, 53, 10,133,150, 73, 65, 22,167, 36, 77, 34,107,235, -154,249,182,191,220, 5,226,226, 34,113,122,223,234, 92,189, 78,155,201,178,122,223,151, 79,238, 1, 12,182, 89,148, 5,134, 54, -234,209,185, 13, 57,253, 72,139,156,172, 84, 60,189,125, 50, 10,106,209,204,138, 20, 89,219,215, 45,112, 60,242,144, 32, 54, 54, - 10, 39,246,172,202,214, 27,116,239,211,151,251,239,190, 9,247, 96,145,168, 71,191,154,246, 93, 63, 9, 73,128,145, 24, 49,232, -113,248, 7,158, 33,164, 71,194,165,210, 71,134,153, 35, 53, 53,117,145,141,141, 13,179,108,217,178,143,243,243,243,231, 83, 74, - 15,152,221, 56,237,171, 86,173,186,116,195,134, 13,222, 49, 49, 49,162,203,151, 47,103,156, 63,127,158, 2, 88, 92,198, 11,124, - 26, 33,132, 87,191,178,215,132, 59, 81,241,221, 41,165,191,153,113, 6,119,109, 16,116,101,203,226,185, 10,253,149, 3, 80, 38, -198, 98,230,149,184, 28, 0, 22,215,183, 94,175, 71,102,102, 38,244,202, 76,195,123, 30,121,217,243,251,186,106,146, 51,243,249, - 2, 86,101, 8,180, 77,209,156,203,136,226,201,100,178,114,215,171, 80, 36,130, 94,175,135,151,151, 87, 97, 90, 78,174, 18,132, - 16,120,120,120,148,245,176, 45, 4, 48,185, 89,179,102,164,113,227,198, 55, 86,173, 90,117,170, 52,177, 82, 30,139, 86, 89,176, -148,147,101, 89,166,132,250, 37,229,229, 52,183,104,149, 37,180,222,166, 69,171, 56,209, 98, 46, 18,205,133, 80,121,124,180,254, - 74,113,104,141, 8, 43,134,167,208,162,117,239,222, 61, 84,170, 84, 9, 58,157, 14, 10,133, 2, 10,133, 2, 54, 54, 54,200,205, -205,133, 64, 32,128,149,101,102, 37, 18, 73, 76, 88, 88,152,191,139,139, 11,140, 70,227,107, 98,235,217,179,103,144,203,229,241, -214, 90,180, 60, 61, 61, 79, 22,140, 58,124, 13,238,238,238,118, 21, 81,175,230,150,172, 62,125,250,148,235,195,108,221,226, 47, -118, 0,216,209,183,111,223,237, 15,174, 29,123,207,195,195,227, 88, 96, 96, 32, 1, 0,110,132,225,187,101,205, 42,161,135, 45, -181,136, 37, 74,107,246, 63, 21, 0, 41,248,159,106, 38,196,204,127,107,139, 73, 75, 95,188,120,241, 57, 51,255,174,212, 55, 44, -130, 41,196,195,107,190,208,252,178, 44, 89,174, 78,142,231,126,252,126,190,237,190, 80, 32, 62, 54, 18, 23, 14,174,201, 54, 24, -117,239,131,165,137,215,206, 28, 60, 0, 2, 21, 94, 30,184, 0,236,179,160,137, 64,253,250, 53,125,241,235, 35, 61, 82,227,158, -129, 82,118, 43, 77,254, 89,245,198,141, 99,129,200,218,186,102,190,227, 47,247, 8,226, 98, 35,113,122,223,234,108,131, 81,247, -126,121,130,157,154,240, 9, 33, 14, 60,185,100,253,144, 14, 13, 63,242,173,234, 13,150,234,193, 10, 41,122, 77,115,230, 63,189, -163,250,213,167, 3,111, 31,171,100, 63,141,187,102, 89, 32, 80,165, 82,249, 21, 33,228, 23, 74,233, 99,179, 6,249,131,106,213, -170,125,243,195, 15, 63, 84,142,143,143, 87,220,185,115, 39,103,211,166, 77,145, 44,203, 46,164,148,150, 57,138,138, 82,250, 57, - 33,228, 71,243,120, 57,132,144, 58, 95,124, 60,240,218,192,225,159, 72, 34,207,236,128, 67,228, 99, 76,189,146, 96,124,154,169, - 29, 64, 41, 77, 42,137,203,217,217,153,166,166,166, 70,101,101,101,249,203,229,114,164,167,167, 35, 35, 35, 3, 89, 89, 89,208, -228,100, 26,156,140, 89,121,196,144, 1, 62,159,143,148, 88, 3,140, 70, 99, 82, 89,214,172,146, 70, 29, 2, 88,172, 86,171, 77, - 34,171, 48,221,214,214,118,177,173,173,173,201, 71,107,115, 9, 47, 49, 83,120, 7, 82, 16,222,161,201,111,191,253, 22,222,169, - 83,167,184,226,196,138, 88, 44, 70,126,190,117, 81, 66, 74, 26,197, 88, 30,206,146, 44, 90, 69,211,173,225, 52,117, 95,154,156, -224,139,166,155,192,227,241,192,178,236,159,210,255,110,209, 98, 62, 58,176, 60, 34,231, 53,235,114, 25,129, 67,203, 51, 18,177, -162, 45, 90,166,107, 33, 20, 10,113,248,240, 97, 12, 31, 62, 28, 70,163, 17, 50,153, 12, 54, 54, 54,144,203,229, 56,120,240, 32, - 76,225, 31,172,201,162, 94,175,223,185,120,241,226, 89, 27, 54,108,144, 82, 74, 33, 18,137, 10,133,214,252,249,243,213, 58,157, -110,167, 37, 66,171, 48,226, 59, 75,195,170,187,148, 62,234,176,184, 99, 74,240,215,178, 95,184,112,225, 80,150,101,123,160, 72, - 8,135, 34,251,189, 22,250,161,180,240, 14, 0, 28, 22, 46, 92, 56,146,101, 89,211, 0,154,215, 70, 23,154,237,103,122,151,248, -247,237,219,119,123,209, 81,135, 28,254,245,184,245, 15,206, 91,107,179, 64,165,164,160,189, 40, 20, 92,252,146, 69, 86,223, 64, - 87, 39,231,115,155, 87,205,183,221,117, 19, 72,136,125,137,171,135,215,102, 27, 89,189,185,120,105, 97,101,203, 91,223,211,213, - 30, 25,215,213,200, 73,139, 1, 40,238,188,185,200,234, 87,221,213,217,233,252,150,213,243, 29,247,223,101, 16, 31, 19,137,243, - 5, 98,240, 77, 68,214, 96,145,168, 71,112, 13,239, 45,253, 63,104,238, 96, 71, 12, 48, 68,135,227,199, 97, 31, 33,180,155, 14, -205,251,217,161, 81,103, 5,170,213,147,124,116,124,115, 70, 91,207, 16,242,137,165,214,173, 34, 34,171, 91,229,202,149, 23,220, -184,113,195,151,101, 89,197,133, 11, 23,114, 55,108,216,240, 50, 63, 63,127, 53,165,244,152, 21, 47, 7,115,145, 85,127,198,168, - 97,151,191,249,225, 71, 73, 88,232, 45, 44,221,121, 4,106,189,214,120, 50, 78,217,215,188, 91,177, 20, 75,201,153,213,171, 87, - 87,158, 51,103,142, 40, 35, 35, 3,105,105,105,200,204,204, 44, 92,148, 74, 37,220,221,221,241,219,111,191,233,114,114,114,174, - 91,240,178,169,240, 81,135,197, 65,161, 80, 64, 40, 20, 66,167,211, 21, 90,180,196, 98, 49,236,236,236,144,158,158,142,189,123, -247, 2, 64, 70,169, 22, 54,161, 40,145, 97, 72, 37,169, 76,166,145, 72, 36,108,113, 86, 53,107, 57, 11, 16,247,193, 7, 31,120, - 47, 92,184, 80,210,160, 65,131, 63, 89,180,202,195, 73, 41, 85,117,232,208, 65,182,122,245,106,248,250,250, 66,171,213,190, 38, -168, 24,134,129, 80, 40, 68,108,108, 44,190,254,250,107, 80, 74, 85,127,119,203, 99, 46, 90,204,197, 80,129, 15,213,159,132,144, -165, 22,163,178,186, 6,173, 29,137,104, 46,220,196, 98, 49,178,178,178,164,132,144, 65, 37, 68,176,183,216,162,101, 18, 90,143, - 31, 63,198,246,237,219,209,185,115,103, 56, 56, 56, 32, 51, 51, 19,251,246,237, 67,120,120, 56, 68, 34, 17, 8, 33,214, 88,181, -216,198,141, 27,127,123,233,210,165,110, 3, 6, 12, 8,154, 58,117,170,180, 86,173, 90,120,250,244, 41, 22, 46, 92,152, 31, 26, - 26, 26,161, 86,171, 23,194,146,192,166, 5, 17,223, 77,193, 72, 45, 26,117, 88,228,152,162, 40, 33,188,195, 7, 37,176,153,135, -126,120, 45,188,131, 57,174, 94,189,234, 87,185,114,229, 64,188, 26, 73,104,122,225,154,143, 46,124,237,101,156,152,152,216, 16, -220,168, 67, 14,127,111, 91,119,129, 16, 82, 24,176,212, 36,190,254, 52,234,240,207, 71,146,201, 3,134,141,178,221,121,147, 32, - 54, 58, 2,183,143,175, 47, 42,178, 44,105,108,218,153,199,218,144, 72,229,181, 88,242,106, 56,115, 78, 90, 44, 64,121, 86, 11, -173,162,156,160,236,231, 3,134,142,114,220,125,155, 32, 33,246, 5,174, 28, 90,103,181,200, 50,231, 28, 44, 18,125, 41,224,145, - 57, 93, 90,214, 23,182,168, 87, 3,242,148, 40, 36,197, 37, 96,239,227,212,140,136, 76,205, 39, 87,136, 14,209, 47, 52, 63,118, - 30,233,232,232,224, 46, 64,215, 49, 78,142,215,143,228,252,234,245, 62,163,163, 58,186, 56,225, 50,157, 95,108, 62,255,124,206, -234,182,182,182,203, 66, 67, 67, 93, 36, 18,137,237,237,219,183,141, 27, 55,110,140,205,207,207, 95, 78, 41,221, 99, 81,217,255, -188,221,187, 97,141,170, 23,190, 89,183, 89,162,204, 83, 33, 79,171,131,216,205,195,248,203,181,135,189, 75, 10,128, 89,148, 83, - 44, 22,239,222,179,103, 79,231,144,144, 16,223, 58,117,234, 48, 25, 25, 25, 80, 42,149, 80, 42,149, 38,171, 23, 30, 63,126,204, - 70, 71, 71,199,139,197,226, 50,243, 89, 81,163, 14,205, 57,205,194, 59,204, 2,192, 16, 66,110,221,187,119, 79,217,169, 83, 39, - 72,165, 82,228,229,229,193,199,199, 7, 6,131, 1,199,143, 31, 71,104,104,104, 30,203,178, 23, 0,220, 43,173,236,106,181,202, -135, 16,194,168, 85,170,186, 67,135, 14,109, 53,101,202,148,215,134,164,187,186,186,194,209,209,209, 42, 78, 0,200,200,200,168, -249,219,111,191,125,118,239,222,189,207, 59,119,238,108, 55,107,214, 44,177,159,159, 31,140, 70, 35, 83, 94,206,204,204, 76,187, - 59,119,238, 44,111,209,162,197,184, 78,157, 58,241,191,249,230, 27,216,217,217,193,104, 52, 66, 42,149, 34, 39, 39, 7, 11, 23, - 46,196,229,203,151, 13,148,210,117,217,217,217, 83,173,185,151,202,105,193,122,141,179, 36, 11, 80, 73, 66,168,184,253,255,142, -124, 22, 17,110,176,183,183,159, 14, 96,122, 9, 17,236, 97,233,179,105, 18, 90, 60, 30, 15, 81, 81, 81,216,184,113,227,159,226, -104,153,194, 63, 20,199, 93, 66,217,233,249,243,231,141,132,144,166,183,111,223,158, 62,100,200,144, 79,242,242,242,188,229,114, -121,130, 94,175,223,166, 86,171, 77,113,180,132,214,180, 33,121,121,121,209,197,141, 58, 44,186, 15, 96, 95, 42,103,145,240, 14, -175,133,112, 40,114,216,107,161, 31,138,134,119, 48,231,108,214,172, 89, 36,195, 48, 79, 10,186,224,159,160,200,232, 66, 51, 78, -255,196,196,196,134, 30, 30, 30, 23, 0,200,138,142, 58,252, 59,238, 37,142,243,191, 45,182, 80, 90,192,210,226,143,130,228,204, -141, 40,136,164, 25,184,255,251, 86,171, 69, 86,113,208,228,171, 34,230,238,142,169,167,213,228, 35, 47, 59,249, 41,141,220,147, -242,230, 87, 27,242, 51,183,162, 33,145,103,225,238,153,159,178,140,198,252,247,105,196,255,238,149,159, 14, 51,127, 56,113, 64, - 72,236, 28,113,255,179,225, 72,200,202,195,137,151,153,251,168, 74,243,233,142,130,185, 2,189,155,146, 75, 91,102, 39,173, 15, -233,101,247,145,179,151, 0, 43,191,216, 6,201, 12, 39, 97,163,182, 45, 45,158, 3,209,228, 32,255,253,247,223,143, 13, 9, 9, -177,249,232,163,143,158,101,100,100,188,230, 32, 95,142, 11, 29, 71, 8,249,225,216,134, 21, 95, 56,213,110,130,181, 95, 78, 51, -238,190,246,176,232, 40,196, 82, 17, 24, 24,104,188,122,245,234,148,177, 99,199,174,108,219,182,173, 87,143, 30, 61,132,149, 42, - 85,130, 88, 44,198,139, 23, 47,112,233,210, 37,221,203,151, 47,227, 85, 42,213,148, 58,117,234,148, 25,227, 44, 46, 46,110,179, - 72, 36, 66, 88, 88, 24, 90,181,106,181,184,192, 98, 21,117,245,234,213,153, 57, 57, 57,200,201,201, 65,255,254,253, 11,211,199, -143, 31, 63,179,106,213,170,200,200,200, 40,171,172,115, 9, 33, 27,240,106,174,195,164, 29, 59,118, 52, 61,116,232, 80,211,201, -147, 39, 11, 59,119,238,140,235,215,175,227,244,233,211, 58,157, 78,119, 13,192, 53, 75,167,181, 41,136, 63,116,135, 16,242,112, -233,210,165, 77,121, 60, 94, 97,196,251,176,176, 48,108,221,186,181, 60,156, 6, 0,203, 9, 33, 63,236,216,177, 99,238,153, 51, -103, 62, 30, 58,116,168,173, 94,175,199,227,199,143,241,211, 79, 63,149,151,243, 51, 23, 23,151, 57,199,143, 31,223,118,234,212, -169,158,131, 7, 15,102, 38, 78,156,136, 53,107,214,224,127,255,251, 31,107, 52, 26, 15, 9, 4,130,161,169,169,169,121,111,169, -225,217, 84, 48,173,206, 38, 43,230, 60, 44,147,247, 77,186, 6, 45,204,119,226, 27, 55, 75, 5,229,104,221,186,117,161,149,145, - 82,250,154, 95,157, 73, 96, 89,219,117, 8,192,190,224, 62, 93,135, 87,243,139,154, 71,133,231,225,143,200,241,150, 50, 6, 37, -106,236,195,160,193,227,210, 39,149,182, 7, 40,130,202, 96,203,154, 59,119,238,119,243,230,205,251,174,104, 8, 7,243,157,138, -134,126, 88,176, 96, 1, 74, 10,239, 0, 32,115,238,220,185,223, 22,180, 79,164,160,187,240, 61, 20,140, 46, 52,227,220, 94,144, - 46,155, 63,127,254, 16, 0,165,113,114,224,240,183,161, 20, 31, 45, 58, 43,236,210,110, 61, 0, 39, 16,102, 38,125,177, 55,236, -141, 27, 48,150,206, 56,187,107,254, 26, 80,100, 82,163, 97,122,133,148,128,229,205, 14,187,180,139, 5,136, 61, 8, 51,131,190, -248,223, 27,231,147,216, 57, 34,119,225, 88,252,239, 81, 2, 77,202,211,127,184, 67,171,125,205, 26, 84,224,147,213,207, 51,132, -236,117,240, 20,252,242,217,251, 78,228, 88,198, 16,171,207,147,154,154,250,141,141,141, 13,111,249,242,229, 31,171,213,234,215, - 28,228,223,224, 37, 49,141, 16,194,107, 84,221,119,194,205,231,209, 61, 44,233, 46, 44,138,102,205,154, 37,134,135,135, 15, 60, -125,250,244,128,139, 23, 47,182, 83,169, 84,149, 9, 33,144, 74,165, 81, 90,173,246,140, 88, 44,222,109,137,200, 50,127,161,152, - 79, 17, 3, 0, 57, 57, 57,200,205,205,125, 45, 12, 1,240,202,191, 42, 53, 53, 21, 62, 62, 62,214,190, 16, 47, 18, 66, 66, 23, - 46, 92,216,114,225,194,133,117, 11,172, 66, 23,203,219,101, 86, 32,120, 46, 74,165,178, 4, 66,136,183, 80, 36,206,187,122,245, -234,153, 55,228, 84, 21, 88, 74, 86,174, 92,185,114,145, 92, 46,111, 24, 22, 22,246,251,155,112, 22,136,168,222, 78, 78, 78,158, -219,183,111,223,191,101,203,150, 38,124, 62,255, 58, 33,164,111, 86, 86,214,219,158, 84,122, 52, 44,155,227,176, 76,139,145, 37, - 22,177,242,226,175, 16,110, 70,163, 81, 57,103,206,156,148,162,194,171,168,245,202,244, 95,167,211,229, 91,248, 44, 89, 51,138, -178, 12,145, 65,148, 0,240,106,238,194, 87,211,234, 88, 58,169, 52,128, 18,231,206,156, 55,111, 30, 93,176, 96, 1, 97, 24,230, - 16,128,167, 12,195, 60, 47,234,172,110,190,109,193,130, 5,152, 55,111, 30,157, 63,191,228,111, 84, 19,103,120,120, 56,229,241, -120,191, 3,136,228,241,120, 81,230,188,230,233,166, 99, 74,227,228,192,225,173, 11, 45,250,114,127, 44,128,225, 21,250,165, 24, -185,255, 12, 94, 57, 50, 86, 28,103,212,158,104, 0,131, 43,138,143, 5,150,125,210,168,245, 23, 0, 8, 5, 86, 22, 21, 89,230, - 72,184, 68, 15,121, 52, 39,139, 27,181,109, 57,185,192, 26,246,141,181,231, 43,206, 65,190, 2,196,214,159, 28,228,173, 69, 96, - 96,160, 17,192, 14, 0, 59,138, 78, 42, 93,142,151, 14,164, 82,105, 97, 55, 34,195, 48,145, 89, 89, 89, 48, 89,180,204,211, 11, -234, 4,118,118,118,229, 21, 50, 39, 8, 33,167, 40,165,198,138,168, 75,181, 90, 85,169,224, 5,199,171, 40,206,130, 65, 14,159, - 84, 36,103,122,122,122, 2,128,102,213,170, 85, 19, 69, 68, 68,104,255, 41, 13, 76, 69, 88,135,254,106, 84,180,112, 43,248, 96, -168,249, 23,212,229,211, 10, 38,252,169, 67,139, 32, 30,204, 99, 7,149, 53,169,180, 73,160, 81,252, 84, 66, 30, 41,121,165, 36, - 41,128,237, 47, 94,188,240,101, 89, 54,186, 24,203,210,107,219,230,207,159,143,146, 98, 6, 22,225, 4,128, 95, 99, 99, 99, 61, -141, 70, 99, 98, 17,222,215,210, 75,227,228,192,225, 31, 98,209,250,111, 98,167, 86, 59, 15,192, 60, 75,247, 79,188, 66,103, 3, -152,253,134, 13,232,227,138, 46, 71,121, 68,214,254,253,251,141,127, 69,157,234,245,175,122,195,204,231, 46, 52,199,144, 33, 67, - 54, 87,112,217,141,127, 65,125,254, 43, 56,255, 73, 34,139,195, 63, 27, 52, 51, 44, 22,192,151,101,238, 87,118, 52,248, 63, 9, -163,130,159,153, 0, 50, 75,208, 58,165,109, 43,141, 19, 0,114, 0,228, 20,115,108, 73,233, 28, 56,188, 85, 48, 92, 21,112,224, -192,129, 3, 7, 14, 28, 56,252, 53, 32, 0,218,149,240, 5, 97,241,104, 2, 66, 72,187,114,124,205,159,225, 56, 57, 78,142,147, -227,228, 56, 57, 78,142,243,191,197, 89, 22,119,209,209,203, 21, 53, 61,215,223, 42,174,204,243,109, 26, 9,243, 87, 44, 0,218, -113,156, 28, 39,199,201,113,114,156, 28, 39,199,201,113,150,243, 60,163,254,142,243,252,149, 11,231,163,197,129, 3, 7, 14, 28, - 56,252,139,208,222,159,120,240,141, 96, 78, 68,208,248,138,224,251,160, 26,241, 2,128,138,226,251, 47,130, 16,226, 1,160,139, - 89,210, 49,211, 96, 32, 78,104,253,123, 47,106,117, 0,179, 0,216,153, 37,223,164,148, 46, 46,178,223, 46, 0,230, 19, 18,230, - 1, 88, 72, 41,125,110,205,249,120, 60,222,226,150, 45, 91,126,122,249,242,229, 21,122,189,126, 97, 57,242,235,235,225,225,241, - 45, 33,164, 1, 0, 1, 33,228, 69,114,114,242, 98,189, 94,127,230, 13,234,160,138,187,187,251, 18, 0,245, 24,134, 17, 16, 66, - 34,146,147,147,191,214,235,245,231,223,128, 83,225,230,230,214,156, 82,234, 14,128, 39, 16, 8,210,227,227,227,111,148,119,244, - 92,223, 5,225,194,156, 60,131, 0, 0,108,229,124,253,254,121,129, 58, 75,211,184,187,156, 3,135,255,124, 67,207, 43,154,212, -177, 42, 22, 17,138,169, 70,128,116,172, 66, 86,159,140,196,212, 18,143, 47,110,192, 77, 17,206,142, 85,177,136,210, 87, 28, 29, -171,145,229, 39, 95,148, 49,184,203, 2, 78, 19, 54, 1,204, 40, 75, 38, 56,255, 11, 6, 6,189, 5,116, 49,239,226, 44, 8,192, -188,169, 76,161,213,223,159,120, 24,249,224,239, 15,163,177,166,151, 16,128,186, 0,170, 3,120, 14,224, 30,165, 52,247, 13, 5, -195,191,130,243, 31,136,185,148,210,129, 69,202,253,167,157,222,127,255,253,238,167, 78,157,146,153,166,103, 97, 89, 22, 82,169, -212, 0, 96,152, 21,245,233, 58, 96,192,128, 25, 63,254,248, 35, 62,250,232,163, 57,132,144,239, 40,165, 74, 75,143,119,116,116, -236, 83,165, 74,149, 53,155, 55,111,118,105,210,164, 41, 17,137, 68,120,241, 34,194,123,244,232,209,181,220,220,220, 14, 37, 39, - 39,127, 98,109,225,157,156,156, 6, 85,173, 90,117,229,198,141, 27,157, 91,180,104, 1, 66, 8, 66, 67, 67,189, 63,251,236,179, -186,238,238,238,123,146,146,146,198, 89,203,233,236,236, 92,163,106,213,170,109,214,174, 93, 43,109,222,188, 57, 36, 18, 9,238, -221,187,103, 51,102,204, 24,119,119,119,247,199, 73, 73, 73, 23,172, 21, 89, 15, 66,143,244, 52,232, 52, 75, 1,128, 47, 20, 79, -107,250, 93,206,145,140,208,139,221,202, 74,235,187, 0,191,114, 98,139, 3, 7, 14,230, 24,228, 9,119, 74,241,197,169,159,190, -100, 0,160,195,199, 95, 77, 28,228,137, 21, 59, 19,144, 84, 65,124, 83,135,122, 97,205,246,120, 36,191, 73, 62, 55, 1,204,103, -124,254,196, 70,141, 27, 59,143,191,114, 37, 66, 7,108,251,143, 24, 64, 70, 21,151, 94,162,208,234, 19, 68, 22,130,143, 89, 0, -200, 7,213,201,158,211,145,188, 75,237,219,183,175, 54, 98,196, 8, 82,191,126,125,132,134,134,214,216,179,103, 79, 23, 62,159, - 31, 97, 52, 26, 67, 1, 60,178, 52,170, 53, 33, 68, 0, 32,152,199,227, 53,248, 39,115,254,195, 33, 47, 40,119, 50,128,155, 38, -139, 86,209,157,206,158, 61,123,152,207,231,155, 44, 90,141,242,242,242,220,138, 88,193, 44, 65,101,189, 94,143, 39, 79,158,128, - 97, 24, 1, 0, 63,252,121, 74,141,146,174,139,183,183,183,247,250,107, 55, 67,157, 8, 95,138,204,124, 0,249, 58,136,108,220, -240,227,214, 29,142, 83, 38,141,235,109,107,107,123, 41, 39, 39,231,103, 43,110,102, 63, 31, 31,159,239,238,223,191,239, 36,147, -201,192,178, 44,114,115,115,225,238,238,142,205,155, 55,219, 79,153, 50,101,160, 84, 42, 61,175, 86,171,255,103,141, 56,175, 90, -181,106,155,135, 15, 31, 74, 77, 19, 74,107,181, 90,120,123,123, 99,215,174, 93,226,137, 19, 39,214, 20,139,197,113, 26,141,230, -165,165,156, 57,121, 6,129, 65,167, 89,186,125,221,252, 74, 0, 48,116,220,252,165,162, 92,219,227,150,164,229,228, 25,142, 1, -224,132, 22,135,191,251, 69,209,192,217,217,249, 64, 90, 90,218, 5, 0,159, 84, 68, 8, 18, 66,136, 39,159,207,247,163,148,218, - 23,252,207, 50, 24, 12,145,148,210,114, 7,212,117,174,214,166, 27,196,178,225,160,108, 93, 6, 0, 97,152,123, 70,157,106,107, -218,211,115, 71,222,136, 83, 36,253, 24,160,117, 25,128, 37, 12,115,159, 53,168, 54,167,134,159, 59,241, 79,185, 62,215,179,225, - 95,213,221,242,137, 49, 43,130,175,127, 21,120, 48, 44,152, 93, 81,176,184, 91,113, 2,208,121,210,164, 73,238,227, 62,253,148, - 12, 31, 54,172,250,133,203,151, 73, 43,107,102, 43,248, 23,162, 52,135,253, 98,133, 86,223, 32,226, 0, 96,250,158, 53,179, 24, - 62,143, 71, 6, 76, 90, 60,112,203,186,229, 76,251,110,125, 11,187, 79, 66, 66, 66, 16, 18, 18, 66,150, 46, 93, 90,253,247,223, -127,175,190,107,215, 46, 3, 33,228, 62,165,116,111, 73, 39,235, 84,141,168, 89, 64,210, 37,128,159, 55,224,203,159, 55, 54,110, -220, 24, 98,177, 24,111,194, 9, 0, 29,170,243, 94,118,110, 92,237,254,128, 9,115,163,155, 52,105, 70, 43,130,243, 95,132,155, -148,210, 30, 5, 13,152,131,143,143, 79,115,131,193, 32, 1, 0, 62,159,159, 15, 96, 2, 45,152, 58,136, 16,114,136,101,217,238, - 86, 52,144, 12,128,121,221,187,119,159, 51,126,252,120,248,248,248, 96,226,196,137,208,235,245,161,132,144,185, 0,150,148, 21, - 16,208,213,213,117,238,250,245,235, 29,249, 34, 57,234, 79,143, 68, 98,150, 1, 0, 96, 35, 6, 14,143,165,152, 56,113,162,237, -237,219,183,191, 6, 96,177,208,114,117,117, 93,184,121,243,102, 71,153, 76, 6, 74, 41,148, 74, 37,114,115,115, 11,231,100, 28, - 55,110,156,237,227,199,143,191, 5, 96,177,208,114,115,115,107,190,118,237, 90,169, 68, 34,129, 82,169, 20,234,116, 58,146,155, -155, 11,149, 74, 69,181, 90,173,110,194,132, 9,226, 71,143, 30,181, 6,240, 18, 28,254, 41,162,128, 7,224, 67,129, 64,208,171, - 90,181,106,239, 61,127,254,252,174,193, 96, 56, 8,224,224,155,126, 76, 17, 66,218,122,122,122, 46, 74, 72, 72, 88, 75, 41,221, -241, 95,169, 83, 55, 55,183,131, 87,175, 94,173,180,126,253,250, 97, 43, 86,172, 56,110,205, 51, 84,194,199,111,211, 70,141, 26, - 57,247,234,213, 75,224,238,238, 14,149, 74,133,136,136, 8,217,153, 51,103, 92, 36, 18, 73,186, 70,163,185,102,205,181,114,246, -111,110, 3,190,237,158,166,109,218,181,248,168,247,135, 10, 55, 39, 59,168,181, 70, 60,143, 78,244,249,237,248,225, 86,158,181, -186, 92,213,233,178,251,167, 61,189,162,180,150,179, 77,167,174, 45,218,181,109,171,176,179,183, 67,118,158, 14, 47,162,226,125, -207,157, 62, 18,226, 81,171,203, 69,150,232, 7, 39, 63, 56,165,122,155,215,102, 34,192,207,147, 56,213,169,219,172,254,237, 14, - 35,190,126,143, 82, 10,134, 98,117, 81,107,214, 68,128,191, 26, 48, 88,203, 7, 74, 41, 33, 88,110,110,205, 42,236, 86,100, 64, - 58,250,161,244,110, 74,211,251, 24, 16,219, 59, 58, 54, 30, 51,106, 20,201,205,201,193,189,123,247, 84, 69, 69,214,119, 94, 16, - 94,100, 80,249, 80, 44,158,189, 75,214,172,162, 93,135,166,255, 22,199,209,146,201,100,197,166,219,217,217,161, 77,155, 54, 88, -188,120, 49, 31, 64,131, 34, 10,239,245, 73, 86, 1,241,209, 13, 51, 97, 39, 23, 51, 62, 62, 62, 10, 91, 91,219, 55,230,124,149, -200,250, 53,243,161, 31,220,250,121,214,176, 51,187, 86, 6,231,229,102, 9,138,238, 98, 99, 99, 3,127,127,127,204,153, 51,199, - 50,206, 55, 87,183,127, 43,167,135,135, 71, 64, 72, 72, 72,131,179, 23, 46,216, 39, 36, 36,136, 19, 18, 18,196,167,206,158,181, -111,218,180,105, 3, 15, 15,143, 0, 51, 14,107,242,249,213,186,117,235,230, 30, 58,116,136, 9, 9, 9,129,131,131, 3,218,180, -105,131,227,199,143,243, 87,172, 88,241, 13,128, 57,101,229,147, 97,152, 22, 33, 33, 33, 4,148, 34, 41,219,128, 27,139, 3,112, -111,121, 32,114,243, 41, 50,178,115,160, 86,231, 67, 38,147, 73, 10,186,123, 45, 45,123,179,166, 77,155, 18, 0,133,226, 42, 55, -247,213,162, 84,230, 65,171,213, 65, 44, 22, 43, 8, 33, 18, 75, 57, 41,165,238,205,155, 55, 7, 0,232,116,186,194, 47,188,172, -172, 44,146,157,157, 13,173, 86, 11,129, 64, 32, 36,132,240, 45,229,180,149,243,245,124,161,120,218,208,113,243, 99,135,142,155, - 31,203, 23,138,167,105, 21, 57, 70, 75,210,108,229,124,253,219,188, 63, 9, 33, 46, 60, 30,239,167,106,213,170, 61,230,241,120, -219, 9, 33,238,111,194, 73, 8,105, 72, 8,249, 70, 38,147,157,169, 89,179,102,172, 92, 46, 63, 75, 8, 89, 66, 8,105, 90, 30, - 78, 66,136, 72, 38,147,157,253,230,155,111,246,223,189,123,247,163,223,127,255,221,239,193,131, 7,189,151, 46, 93,186,199,198, -198,230, 18, 33, 68,246, 38,207,166,159,159,223,150, 27, 55,110, 52,108,214,172,217,143,132, 16,113, 69, 60,239,132, 16, 30, 33, -164, 30,177,112,174,161,191,251,186, 19, 66, 60,235,215,175, 95, 73, 34,145,160, 93,187,118, 0,208,250, 13, 57,155,142, 25, 51, -198,125,202,148, 41,130,123,247,238,225,199, 31,127,196,161, 67,135,144,146,146,130,174, 93,187, 10,223,127,255,125,119,177, 88, -220,212, 42, 78,190,237,158, 73,159, 77,238,244,197,196,145,138,251, 49, 58,108, 61, 19,131, 95,175, 37, 34, 69, 37, 66,183,222, - 67,237, 58,246,232,215, 81, 36,182,219, 99, 45,231,140,233,211, 59,141,250,120,160, 34, 44,145,197,225,235, 73,184,254, 36, 27, - 6,129, 61, 58,247,254,196,161,110,243, 78, 93,248, 16,108,123,219,215,104, 51,208,100,210,164, 73, 46,211,150,239,188,226,217, -240,195,213,169,153, 8, 49, 23, 62, 53, 0,123, 71,185,252,195, 39,173, 90,141,148,190,154,243,177, 84,206,215,248, 26,244, 88, -147,146,137,150,230,254, 89, 45, 29, 81,189,160, 91,145,119,234,167, 47, 25, 74, 48,113,144, 39,220,203,202,231,121,224,163, 73, -147, 39, 11,236, 28, 28,176,110,221, 58,104,242,242, 94,243,153,109, 91, 9,157,206,200,248,113, 85, 2,189, 31,183,241, 37,151, -222,193, 15,192, 81, 37, 90,180,142, 29, 59, 70,187,116,233, 66, 0, 96,127, 24,205,236, 19, 68,190,237, 55,254,155, 57,132, 33, -180,114,112,179, 48,175,170, 65,121, 78, 78, 78, 80,169, 84,208,104, 52, 16, 10,133,200,207,207, 71, 76, 76, 12,174, 95,191, 14, - 7, 7, 7,171, 50,147,147,147, 3, 27, 27, 27,216,216,216, 84, 8,231,204, 97,237,196, 47, 98, 83,197, 39,175,159,111,245,253, -167,255,107, 82,181, 94,235, 7,109,251, 77,124,104,235,226,153,255,224,193, 3, 92,189,122, 21,153,153,153,104,220,184,241,187, -114, 61,111, 22,180,215, 55, 9, 33, 14, 33, 33, 33,222, 39,207, 92,116, 80,230,179,182, 81,201,122, 1,203,178,144,201, 60, 12, -123, 15, 28,206,254,168,119, 55, 66, 8, 73, 1,112,179, 64,220,222, 44,227, 70,145, 0, 8,232,211,167,207,140, 79, 63,253, 20, - 17, 17, 17, 24, 57,114,164,250,230,205,155,233,205,154, 53,115,218,188,121,179,116,202,148, 41,184,112,225,194, 60, 66,200, 47, - 0, 34, 41,165,249, 37, 52, 26, 66,161, 80, 8, 67,129,108,208, 25,217, 66,125,159,147,147, 3,170,206,132, 80, 40,228, 1,112, - 1, 96,145, 31, 29,203,178, 66,129, 64, 80, 40,178, 98,146,115, 16,147,162, 66,142, 82, 11,181,218, 0,173,154,130, 39,115,226, - 3, 81,110, 0,162, 44,172, 79,158, 68, 34,129,193, 96, 40,156,127,209,100, 41,211,106,181,200,206,206, 6,143,199,179, 1, 96, - 11, 32,195, 18,194, 87, 78,238,248,181,160, 27, 16,183,118,118,119,126,126,108,166,174,207,252,199,133,105,182,114,190,254,192, -148,154, 60, 39,239,186,151,235,125,180, 45,208,148,246, 54,253,179, 8, 33, 98, 23, 23,151,115,251,247,239,175, 89,189,122,117, - 68, 70, 70, 6,246,237,219,183, 49, 33,164,158,181,115, 50, 18, 66,100, 12,195,124, 59,124,248,240, 79, 7, 12, 24, 64,106,212, -168, 1, 62,159, 15,131,193,224, 29, 17, 17,209,102,223,190,125,211,249,124,254,102,163,209,248,185,165,126,127,132, 16, 70, 36, - 18,237,221,184,113, 99,203,198,141, 27, 99,251,246,237,184,121,243, 38,219,176, 97, 67,102,200,144, 33,240,245,245,109, 60,100, -200,144, 95, 9, 33,157,203, 99,217, 34,132,248, 14, 26, 52,168, 18,143,199, 67,179,102,205,132, 87,175, 94,173, 15,224,234, 27, -214,169,141,183,183,247,133,214,173, 91,215, 59,115,230,204, 29, 66, 72,107,107,252, 28, 9, 33, 61, 60, 61, 61,151,218,217,217, - 57, 88,209,198,170,226,227,227,167, 90, 49,135,106,147, 6, 13, 26, 32, 58, 58, 26, 1, 1, 1, 16, 10,133, 77, 9, 33,163, 1, -116, 2, 48,219,154, 25, 44, 8, 33,158, 77,155, 54,117,110,221,186, 53, 89,178,100, 9, 0, 64, 32, 16,192,104, 52,130, 97, 24, - 8, 4, 2, 4, 6, 6,146,151, 47, 95, 58, 18, 66, 60, 45,233, 70,116,174,214,166, 91,179,182,157, 90,180,108, 92,135, 89,113, -224, 57,140,172, 17, 60, 98, 0,159,176, 96,245, 98,136,133, 60,212, 8,126,143,247,228,209,253,198,206,254,237,187,165, 61, 61, -125,196, 18,206, 78,221,186,135,212, 12,168,193,124,255,235, 11,100,197, 63, 54,198,135, 95, 76, 99,120, 12,106, 54,120,223,185, - 70, 80, 61, 94,189,198,173, 5, 9,145,143,218, 56, 86,111,213, 46,227,249,133, 51,111,227,153, 92, 0,240,188,189,156, 63,236, -218,190,181, 48, 49, 33, 33,111,223,129, 35, 15, 85,122, 92, 7,128, 11, 0,233, 12,212,169,221,168, 81,171,205, 75,150, 56,121, -120,120, 8, 6, 15, 24, 96,216,116,231,206,157, 81,128,177, 36, 62,103,119,247,118, 99,198,140,225, 37, 38, 36,208,125, 7,143, - 61, 48,241, 1,128, 12,168, 93,199, 59,176, 43,242,158, 88,213, 77,217, 13, 16,185,185,187,215, 28, 61,122, 52,146, 18, 18,176, -125,199, 14,101, 62,112,205,100,197, 58,204,195,218,160,170,238,195,167,125,210,157, 84,242,112,198,152,121,155,154,182,209,165, - 84, 61,135, 63, 44, 91,230, 90,228,223, 42,178,138,138,173, 18,191,206, 15,132,209,185,182, 34,226,183,111,223,110, 38, 53, 87, -151, 23, 17, 17, 1,103,103,103,120,120,120,192,206,206, 14, 97, 97, 97, 56,123,246, 44,158, 62,125, 10,150,101, 81,183,110, 93, -171, 50,148,150,150,134,251,247,239,195,193,193,161,194, 56,171, 86,114,193,248, 74, 46,194,228,244, 28,225,153,155, 79, 27,111, -154,217, 59,136, 9,236,189, 37, 63,255, 15, 13,160,213,190, 27, 51,148,152,143, 46,244,241,241,105,190,117,235, 86,161,198, 0, - 69,141,209,215,150,229,229, 27,229, 0, 32,151,240,242, 66,151,250,127,254,213, 87, 95,229,125,252,241,199,129, 49, 49, 49,139, -203,226, 21,137, 68,139, 62,248,224,131, 47, 40,165,130, 73,147, 38, 1, 0,134, 14, 29,154,115,253,250,245, 26,148,210, 20, 66, -136,231,136, 17, 35,158,157, 59,119, 78, 54,121,242,100,158,193, 96, 8,227,243,249,148, 16,178,144, 82, 58,191, 40, 31,195, 48, -183,239,220,185, 83,217,211,215, 31,190, 78, 12, 66,230,188,154,174,205, 73,198, 34, 46,234, 5,194, 31,220,132,187,187,187,157, -135,135,199,227,128,128, 0, 93,124,124,252,116,165, 82,185,190,180, 60, 10,133,194,123,161,161,161, 30,190,190,190, 80, 42,149, -136, 75, 85, 97,226, 65, 25,114,212,175,140, 24, 2,168, 81,175,146,191, 66,202,104,111,186,185,185,233,180, 90,237,151, 89, 89, - 89,165, 78, 35, 34, 16, 8,210, 31, 60,120, 96,227,227,227,131,252,252,124,154,145,145, 65,242,242,242,144,155,155, 75,142, 29, - 59,214, 51, 49, 49,177,161,159,159, 31,241,246,246, 94, 88,189,122,117,117,124,124,252, 72, 75,124,192,246,207, 11,212, 17, 66, -140,124, 62,127,197,168, 81,163, 62,250,229,151, 95,110, 31,152, 95,179, 7,165, 84, 87,240, 64,218, 5, 7, 7,159,172, 83, 39, -200,115,199,242,218,171, 41,165,203,254, 1,183,215,240, 89,179,102,213,116,116,116,196,152, 49, 99,176, 96,193, 2,204,157, 59, -183,250,152, 49, 99, 70, 1,248,206,138, 70, 71,234,238,238,126,235,251,239,191, 15,108,222,188, 57,142, 31, 63,142,221,187,119, -227,229,203,151, 6, 63, 63, 63,126,227,198,141, 49,111,222, 60,116,236,216,113,228,132, 9, 19, 90, 17, 66,234, 91, 40, 62, 62, -158, 55,111, 94,143, 22, 45, 90, 96,216,176, 97,154,243,231,207,127, 4,224,212,233,211,167,223,191,112,225,194,129,157, 59,119, - 74,191,249,230,155,118, 83,166, 76, 25, 3, 96, 77, 57,202,223,179,101,203, 87,115, 40,183,104,209, 2, 75,151, 46,237,248, 38, - 66,139, 16, 34,114,114,114, 58,182,125,251,246,122,254,254,254, 24, 60,120,112,253,143, 62,250,232, 24, 33,164, 61,165,212,162, - 6,201,203,203,235,219, 67,135, 14, 85, 43,169,103,161, 56,104, 52, 26,199, 15, 63,252,112, 9, 0,171,132,214,174, 93,187, 48, -117,234, 84,212,173, 91,183, 78,147, 38, 77, 54,140, 30, 61, 26,125,250,244,105, 75, 8,113,163,148,230, 89, 66,196,231,243,253, -186,118,237, 42, 56,120,240,224, 43,235, 72,203,150,104,215,174, 29, 30, 62,124,136,203,151, 47,131,199,227, 65, 46,151,163,121, -243,230,162,132,132, 4, 63, 0,101, 10, 45, 70, 44, 27,222,163,107,103,197,225,235,137, 48,178, 6,188, 87,205, 22,141, 3, 93, -241, 36, 46, 7,161,143,227, 96,212, 10, 97,235,232,132,166,173, 58, 56, 38,197,191, 28, 14,160,108,127, 45,177,108,120,175, 30, - 93,108, 14, 95, 75, 64, 86, 66, 56,125,126,243,151,179,250,252,188,145, 0,112,251,247, 61, 27,220,157,164,237,107, 52,120,143, -215,186,125,119,135,131,187,147,134, 3,120, 43, 66,235, 66, 37,108,244, 21,164, 13,157, 54, 48,132, 10, 28,188,111, 42,244,250, -181,166,109, 29,129, 14,211,103,205,106,242,201,168, 81, 18,150,101,177,243,231,159,115,238,223,185,243,164,180,209,126,107, 1, -223,143,122,244, 16, 43,108,109,241,217,196,137, 80,232,245,231, 10,171, 4,104,251,217, 23, 95, 52, 31, 55,110,156,116,195,194, - 79,111,119, 28,241,117, 3,150, 82, 82, 92, 55,101, 81,156, 1, 26,142,232,209, 3, 10, 91, 91, 76,154, 52, 9, 68,167, 59,105, -218,118,148,143,115, 31,247, 12,105, 60,176, 91, 11, 16, 16,236, 62,122, 25,207,163, 83, 31,156, 75,196,139,119,228,157,108,157, -143,150, 9,185, 58, 36,183,237,210, 27,119,238,220, 1, 0,164,167,167, 35, 61, 61, 29,213,170, 85,195,154, 53,175,183, 95,229, - 17, 48, 44,203, 86, 56, 39, 0,184, 57,217, 98,112,231, 70,252,203,247,119, 75,242, 82, 83, 37, 54, 54, 54,249,239,154,208, 50, -135,193, 96,144,248,249,249, 33, 71, 13,146,173,210,219,164,237,121,101,241,119,238,127,222, 70,171,213, 50, 54, 54, 54,208,104, - 52, 18, 11, 94, 8,130, 30, 61,122,124,177,119,239, 94, 65,120,120, 56,170, 86,173, 10,157, 78,135,235,215,175,199, 21, 76,132, - 12, 74,105, 2,143,199, 75, 96, 89,182,122,221,186,117,177,120,241, 98, 4, 6, 6,146,206,157, 59, 79, 47, 16, 91,175, 61,220, -137,137,137,223,142, 30, 61,250,253,125, 7,126,113,220,216, 79,141,156,236, 28, 40,149, 74,220,187,123, 27, 25,201,249,216,180, -105, 19, 36, 18, 41, 1, 32, 76, 73, 73, 22, 78,158, 60,121,181,183,183,119,167,184,184,184,174, 37,229, 51, 33, 33, 97,209,184, -113,227,154,238,217,179,199, 62, 55, 55, 23,106,117, 62, 50,242,100,120,188,234,213, 60,190, 53, 63,123,140,117,107,215, 51,181, - 43,203,157, 85, 42, 21, 62,253,244,211,149,158,158,158,205, 19, 18, 18, 70,148,196, 25, 31, 31,127, 99,252,248,241,110, 59,119, -238,148,104,181, 90,157,209,104,132, 90,173,102,246,236,217, 51,189,114,229,202, 14,155, 55,111, 38, 18,137,180, 96,223, 56,225, -216,177, 99,247,186,187,187,239, 76, 74, 74, 26, 86, 86,119, 17,143,199, 91,181, 99,199,142, 33,253,250,245, 83, 36, 38, 38, 6, - 29, 58,116, 72, 12, 64, 93,176,139, 71,251,246,237, 43, 47, 95,190,220, 37, 56, 56,120, 58, 33, 68, 64, 41,253,230,109,222, 79, -206,206,206, 19,122,244,232,129, 37, 75,150,224,200,145, 35, 83, 28, 29, 29, 87, 46, 88,176, 0,158,158,158,227, 9, 33,171,172, -152,168,119,217,119,223,125, 23, 24, 24, 24,136,161, 67,135,106,207,156, 57, 51, 11,192,175, 0,162, 47, 93,186,228,179,109,219, -182,110,123,247,238, 93,242,253,247,223, 75,214,172, 89, 83,173,119,239,222,171, 0,140, 40,243,249,118,115,155, 60, 96,192, 0, - 44, 95,190, 28,231,207,159,239, 77, 41, 61, 94,176,233, 4, 33,164,219, 55,223,124,243,251,156, 57,115,240,221,119,223, 77,178, - 86,104, 17, 66,108,106,214,172,249,101,167, 78,157,112,233,210, 37,132,132,132,160,105,211,166, 83, 8, 33,171, 41,165,105,229, - 16, 89,140,141,141,205,222,173, 91,183,134, 84,174, 92, 25, 95,127,253, 53,190,248,226, 11,108,217,178, 37,100,240,224,193,123, - 9, 33,189,138, 62, 51,197,193,206,206,206, 70, 38,147, 97,250,244,233,244,229,203,151,153,101,237, 95,169, 82, 37,135,149, 43, - 87, 18, 7, 7, 7, 59, 75, 69,177, 68, 34,105, 86,171, 86, 45,204,155, 55, 15,167, 79,159,198,156, 57,115, 80,171, 86, 45, 68, - 71, 71,163,127,255,254,178,217,179,103,247, 1,176,213,194,151,142,157,147,147, 19, 82, 82, 82, 32, 16, 8,208,188,121,115,252, -250,235,175,208,104, 52,112,117,117, 69, 86, 86, 22, 26, 53,106,100, 18,101,118, 22,190,202,106, 57, 59,218, 33,229, 81, 60,248, - 48,160, 65, 13,103,156,123,152, 14,157,158,133,171,147, 61,146, 82,146,209,164,150, 55,180, 90, 31, 80,202,214,178,132, 81,196, - 99, 26,136, 37, 82,100,228,166, 33,254,241,249,116,157, 81, 51, 58,235,229,229, 88, 0,112,172,218,114,244,237,203,167,111,247, -237,210,210, 85,153, 87, 9,132,178,141,222,198,243,216,215, 7,149,228, 18,254,208,163, 27,103, 18, 3,203,226,131, 17,139, 26, -118,114,131, 10,201,128, 11,224,215,183,127,255,102,159,127,254,185,232, 89, 68, 4, 59,121,226,196,172,187,183,110,157,255, 13, -184, 93, 26,167, 18,168,222,190,125,123, 48, 0,126, 59,117, 42, 47, 13,136, 3, 0, 55,160, 82,247, 15, 63,108, 57,107,198, 12, -209,139,168, 40,246,122,132,242,240,139, 20,186,184,153, 35,238,239,137,126,181, 79,105, 48, 2,181, 77,188, 39, 79,158,164,234, -130,124,180,174,132,241, 29,155, 7, 55, 30,210,163, 37,226,146,210,177,244,199,195,120,240, 44,241,164, 19,139, 65,239,202,123, -184,180, 8,246,140, 5, 15,204,159,210, 84,170, 63,247, 30,188,169,128,249, 43, 56,139,195,187, 40,180, 76, 48, 77,222,172,213, -179,208,234, 89,211, 87, 45,212,106,181,165,138, 92,127,242,228,201,237, 19, 39, 78,196,202,149, 43,241,236,217, 51, 8,133, 66, -212,170, 85,203,131, 16, 98, 99,178,192, 52,104,208,192,149, 97, 24, 60,121,242, 4, 43, 86,172,192,199, 31,127, 76,175, 94,189, -186,165,184, 23, 6,165,244,110, 70, 70,198,218,209, 35, 63,206,202, 76,142,129, 94,157,137,148,248, 23,208,228,101,225,235,197, -223, 66,165,231, 35, 41, 91,135,164,108, 29, 24,177, 35, 54,108,222,202,171, 89,179,102, 39, 62,159,223,181,148,124, 94, 79, 78, - 78,222, 60,118,236,216,172,164,164,164,194,242,105,245, 20, 90,253,235,247,171, 76, 38,195,170, 85,171,236,106,212,168,209, 67, - 32, 16,180, 41,133, 51, 49, 54, 54, 54,124,236,216,177,218,228,228,100,100,103,103,227,240,225,195,221, 42, 87,174,236,176,100, -217, 74,146,167,227, 35, 41, 75,135,164, 44, 29, 68, 54,174,216,123,224, 23,158,191,191,255, 64,129, 64,208,180, 44,145,181,115, -231,206, 33,253,250,245, 83, 44, 91,182, 44,227,208,161, 67,235, 40,165,230, 23,228,201,170, 85,171,246,237,221,187, 55,247,139, - 47,190,112, 92,186,116,233, 20, 66,200,172,183,216, 88,180,233,215,175, 95, 0,203,178,216,191,127,255, 3, 74,233,119,191,252, -242,203, 45,141, 70,131,254,253,251,251, 21,116, 35, 89,194,211,112,224,192,129,159,134,132,132,224,179,207, 62,211,157, 57,115, -166, 1,165,116, 37,165, 52,138,190, 66, 52,165,116,245,133, 11, 23,234, 78,152, 48, 65,211,168, 81, 35, 12, 27, 54,236, 99, 66, - 72, 72, 25,188,205, 6, 12, 24, 16,200,178, 44,246,236,217,115,223, 76,100,153,174,227,217, 3, 7, 14, 92,215,106,181, 24, 52, -104, 80, 21, 66,200,251, 86,148, 93, 40, 22,139,247,127,245,213, 87,246,241,241,241, 24, 50,100,136,230,201,147, 39,152, 63,127, -190,212,206,206,238,184,233, 25,176, 6, 98,177,120,211, 15, 63,252,208,163,118,237,218, 24, 59,118,172,118,253,250,245, 19, 63, -253,244, 83,109,131, 6, 13,176,110,221,186, 30, 34,145,200,170,169, 69, 18, 18, 18,178,194,194,194,156,202, 90,226,226,226,146, - 45, 44,179, 76,161, 80, 92, 11, 14, 14,206,169, 85,171,214,123, 6,131, 1, 97, 97, 97, 47,182,111,223,206,214,170, 85, 11,107, -215,174,197,210,165, 75,209,181,107, 87,240,120,188, 62,214,228, 53, 47, 47, 15, 18,137, 4, 66,161, 16,161,161,161,208,104, 52, -144,201,100,144, 72, 36,224,241,120,176,183,183,135, 66,161, 0, 44, 28,141, 70, 8,104,142, 74, 15,129,128, 1,159, 97, 17, 30, -157, 13,157,158,133, 68,200,131,128, 79, 0,202,194, 94, 46,128, 68,196, 3, 67, 8,107, 33, 39,178,243,116, 16, 9, 25, 8,132, - 34,194, 24,140,210,194,151, 35,223, 40,149, 74, 69,196,217, 86, 12,137,240, 31, 52, 45, 48,121, 85, 95,195, 1,129,220,199,231, -163,229, 43, 86,136,114,148, 74,244,238,221, 59, 35,234,214,173, 29,106,224, 86,171, 50,234,148,225,243,107,180,110,213, 10,161, -119,238, 32, 55, 51,243, 57,240,202, 57, 94,228,233,217,111,213,170, 85, 34,117,126, 62,122,247,234,149,245,236,242,229,157,177, - 74, 28,181, 68,100, 1, 0, 79, 40,116, 55,241,102,103,102,102, 2,175, 66, 72,184,185,216, 44, 25, 55,176, 35,114, 85,249,152, -246,237, 14,246, 78,120,226,248, 75,113,232,242, 75, 2,178,223,165,119, 48, 33,100,148,249, 98,145, 69,203,100,117,178, 68,172, -104, 52,154, 10, 23, 64,111,202, 89,156, 72,124, 83,206,127, 34,248,124,126,254,211,167, 79, 69,182, 78,158,172,147, 66,144, 89, -249,227,203,118, 0,224,104,195,207,214, 25,245,108, 66, 66, 2,196, 98,113,190, 37, 92,249,249,249, 35, 9, 33, 95, 3, 8,226, -243,249, 71,183,110,221, 74,118,236,216,225, 48, 96,192,128, 8, 66, 72,124,112,112,176,239,214,173, 91,109, 1, 96,245,234,213, -116,239,222,189, 29,241, 42,100, 70,137, 38,229,164,164,164,249, 2,129,224,234,184,113,227,214,136, 68, 34, 7,185, 92,238,116, -233,210, 37,146,175,163,104, 56, 43,186,112, 36,162,173,148,193,197,153,182, 24, 53,106, 20,239,241,227,199,139, 1, 28, 45,133, -115,186, 88, 44,190,244,236,217,179,149,118,222,245, 92,228,190,179,236, 26,207,124, 2, 0,240,117, 22,128, 41,104, 23,179,178, -178,144,154,154,138, 79, 63,253,212, 33, 34, 34, 98, 58,128,115, 37,113,198,197,197, 93, 16,139,197,113,143, 30, 61,106, 45, 16, - 8, 68,114,185,188,225,181,107,215, 72,190,150, 69,157,233,209,200, 80,190,202,167,163, 13, 31,183,191,114,195,248,241,227,249, -207,159, 63,255, 22, 64,139, 98, 27, 51,134, 89,106, 46,178,166, 77,155,118, 15, 64, 21, 66,200,107, 93,163, 70,163,145, 12, 26, - 52,232, 33,128, 90, 95,124,241,133, 35,165,116, 10, 33, 36,131, 82,186,241,239,190,151,108,109,109,151,140, 30, 61, 26,123,247, -238, 69,102,102,230, 42, 0,200,201,201,249,110,215,174, 93,123, 70,142, 28,137,159,127,254,121, 9, 33,228, 55, 11,172, 90, 31, -244,239,223, 31, 39, 78,156,192,239,191,255,254, 37,165, 52,172,132,103,244, 25, 33,100,250,161, 67,135,190, 31, 48, 96, 0,126, -250,233,167, 78, 0, 74,115,144,109,223,177, 99, 71, 28, 63,126, 28,233,233,233,235,138,219, 33, 43, 43,107,253,225,195,135,155, -116,236,216, 17,139, 23, 47,110, 15,224,172, 5, 13,100,160,157,157,221,214,239,191,255,190, 97,237,218,181, 49,112,224,192,124, -157, 78,215,233,139, 47,190, 56,178,123,247,110,197,246,237,219,223, 27, 53,106,212, 13, 66,200, 39,148,210,235, 22,189,116,120, -188,111,214,172, 89, 51,162,117,235,214,152, 50,101,138,225,228,201,147,221, 41,165,167, 8, 33, 17,211,166, 77, 59,182, 98,197, - 10,222,242,229,203, 71,240,120,188, 84,163,209,248,182,196,245, 87,171, 87,175,110,210,161, 67, 7,188,120,241, 2,215,175, 95, -135, 78,167,251,249,218,181,107, 23,171, 87,175,254,149, 86,171, 61, 34,151,203,135, 42, 20,138,224,122,245,234,189, 79, 8,145, - 89,226,167, 71, 8,201,138,136,136,144,187,186,186, 66, 32, 16,224,254,253,251,112,117,117, 5, 0,164,164,164,160, 86,173, 90, -224,241,120,200,202,202, 2, 96,217,203,150, 16,230, 65, 68, 84, 66, 21, 71,133, 28, 48, 74,112,247, 73, 28, 92,156, 29, 96, 36, - 12,146,146, 18, 81, 47,192, 27,132, 16,100,165, 39,129, 16,242,208, 18, 78, 35,101, 67, 99, 18, 82,188,156, 20, 98,212,110,210, -193,233,218,111,169, 59,236,170,182, 24,197,231, 17,158, 88, 98,187,113,196,176, 97,206, 44, 75,145,149,158, 12, 62,195,220,124, - 27, 23,104,127, 12, 98, 91, 85,149,220,237, 48,226,235,122,132,130,170,117,216,254, 83, 50, 50,101, 64,189,213,179,103,219, 59, - 57, 59, 99,224,192,129,108,122,124,252, 25, 21, 96, 81, 96,229, 42,213,171,187,217, 40, 20,184,114,229, 10,120, 64, 36, 0,108, - 1, 2,151, 78,155,230,228,234,238,142,143, 71,140, 96,147, 99, 98,206,170, 45,232,210,125,141,183,106, 85,129,137,151, 41,224, - 77,228, 97,226, 23,221, 67,196,114,169, 24,223,108,248, 5,177,105,121,123,174, 37, 98,195,187,104,236, 40,211,162, 85,146,243, -217, 43,167,106, 89,169, 98, 69, 34,145, 20, 90, 83,172,248,210,171,112,206,178,240, 87,112,190, 69,229, 60,147, 16,114,136, 16, - 50, 51, 54, 54, 54,124,196,136, 17, 58,131, 78,147,123,245,235, 42, 51,238, 44,174, 60,246,218,124,143,177,191, 78,180,155,161, -202,206,200, 93,189,122,181, 62, 54, 54, 54,220,252,152, 50,110,150, 24, 74,233,241,109,219,182,173,223,191,127, 63,106,213,170, -133,176,176, 48,215,188,188,188,250, 15, 31, 62,116, 12, 12, 12,196,142, 29, 59,176,119,239,222,149,148,210,211,165,137, 44, 51, -107,219,153,196,196, 68,255,232,232,232,106,246,246,246,122,123,123,123, 20, 29,137,152,163,102,145,158,149, 13, 71, 71, 39,216, -218,218,250,149,197,169,209,104,142, 39, 38, 38,214, 96, 29, 2, 90,214, 72, 91,149, 29,250, 77, 37,132,126, 83, 9,199,167,123, -194,195, 94,132,204,204, 76,164,166,166, 34, 53, 53, 21,132, 16,232,245,250,154, 22,112,190, 76, 72, 72,248, 49, 38, 38,230,144, -155,155, 27, 20, 10, 5, 40,128,164, 44, 61,238, 45, 15,196,189,229,129, 72,202,210, 35, 39, 55, 23,149, 43, 87,134, 66,161,168, - 85, 82,151,145,151,151, 87,231,126,253,250, 41, 0,160, 64, 64,181,165,148,142, 45,102, 25, 99, 48, 24,154,155,246,157, 58,117, -170, 35,128,142,127,243,253,196, 35,132,140, 27, 57,114,228,123, 18,137, 4,107,215,174,125, 9, 96,167,169,173, 95,191,126,253, - 19, 0,152, 56,113, 98, 48,128, 41,164,132, 72,208, 38, 8,133,194, 6, 53,107,214,196,181,107,215, 0,224,151, 50, 78,127,224, -234,213,171,168, 94,189, 58, 36, 18, 73,195, 50,246,245,171, 84,169, 18,158, 60,121, 2, 0,119, 75,216,231,238,147, 39, 79, 80, -169, 82, 37, 16, 66,252, 44, 40,123,143, 14, 29, 58, 60, 56,119,238, 92,195,102,205,154, 97,196,136, 17,218, 27, 55,110,116,166, -148, 94,188,123,247,110,155, 65,131, 6,229,213,168, 81, 3, 23, 46, 92, 8, 28, 52,104,208, 85, 30,143,247,181, 5,156, 31, 47, - 92,184,112,102,207,158, 61,177,112,225, 66,186,111,223,190,129,148,210, 83, 5,207,215,201, 61,123,246, 12, 89,180,104, 17,237, -213,171, 23, 22, 44, 88, 48,147, 16, 50,182, 12,235, 80,182,209,104, 68, 94, 94,158, 69, 38,121, 75,247,119,118,118,254,160, 67, -135, 14,152, 51,103, 14,188,188,188,112,228,200, 17, 10,224, 40,165,244,146, 70,163,105, 73, 41, 93,145,151,151,247,235,181,107, -215,208,190,125,123, 33, 94,159, 98,164, 68, 24, 12,134,168,115,231,206,233,156,156,156,224,237,237, 13, 31, 31, 31,228,229,229, - 33, 43, 43, 11,181,106,213, 66,147, 38, 77,144,151,151,135,163, 71,143,234,178,178,178, 44, 26,176, 98,208,230,109, 63,125,236, - 96,182,147, 66, 12,111, 87, 59, 84,246,114,132, 50, 43, 13,169, 73, 9,104, 80,211, 7,173, 26, 84, 70, 90,182, 22, 39,143, 30, -204,204,205, 85,109,183,168, 23, 64,163,218,122,230,183, 35,217, 14, 10, 33,252, 3,130, 49,104,196,196,122,245,234, 55, 62,221, -168, 81,243,147,203,150,124, 83,167,109,211,154, 36, 46, 45, 31, 39,142,254,146,153,157,147,179,245,109,180,245, 11, 0, 94,190, - 93,141,139,235, 14,133,254, 24,212,105,228,143,225,113, 88, 5, 0,122, 30, 47,176,243, 7, 31, 32, 46, 46, 14, 7,247,239, 79, - 84, 1,247, 45,229,147, 74,165, 12, 0,100,103,103, 67,252,106,182, 16, 24,128,128, 46, 93,186, 32, 53, 45, 13,187,118,238, 76, - 61, 1,220,177, 38,159,221, 0,145, 76,250,202, 32,152,157,157, 13, 2,228, 0, 0,225,163,115,163, 90,213,145,154,145,131,115, - 55,195,149,149,213,248,180, 52,158,127,171, 35,124,105, 62, 90,101,217, 67,211,166, 76,153, 2,177, 88, 12, 15, 15,143, 66,113, -100, 18, 43, 34,145, 8, 30, 30, 30, 48, 24, 12,216,179,103, 15, 0,148,234,195,192, 0,154,238, 99, 23,179, 26, 61, 85, 9, 4, -130, 10,225, 44,176, 28,104,122, 79,251,137,253,237,106,241,131, 98,202,195,249, 47, 64,163,130,152, 88,141, 40,165,153, 81, 81, - 81,113, 31,245,238,158, 29, 29,241, 40, 41, 47, 43, 33, 49, 39, 61, 54, 49,246,229,195,164, 89,211,167,100,199,197,197,197, 22, -196,210,106,148,144,144,208, 29,128,165,190, 6, 83, 62,250,232,163, 31, 70,142, 28, 73,239,221,187, 7, 0, 8, 13, 13,197,176, - 97,195,232,144, 33, 67, 86, 1,152, 81,142,124,231,169,213,234,215,172, 33, 58, 35, 91,216,229,151,147,147,131,132,132, 4,104, -181, 90,139, 21,241,179,147,203,159,102, 68,221,214, 7,251,202, 17,236, 43, 71, 96, 37, 25,136, 65, 89, 40,178, 82, 83, 83,145, -156,156, 12, 0,249, 86,228, 51, 71,163,209,188,150, 79,243,174,201,156,156, 28, 36, 37, 37,193,104, 52,106, 75,120,232,216,248, -248,248,147,123,247,238,205, 5,128,101,203,150,101, 16, 66,126, 39,132,252, 80,204,178,129,207,231, 95, 49,237,187,124,249,242, - 12, 0,199,255, 70,145,213,179,118,237,218,153, 51,103,206, 92, 59,105,210, 36,108,216,176, 1,137,137,137, 51, 40,165, 6, 83, - 89,210,210,210,166,173, 91,183, 14,195,135, 15,199,220,185,115,151,215,175, 95, 63,135, 16, 82,162,127,133,139,139,139, 55,159, -207,199,157, 59,119,114, 40,165, 47,202,104,160,146,238,220,185,147, 76, 8,129,135,135, 71,213,210,246,117,116,116,172,166, 80, - 40, 16, 31, 31, 15, 20,124, 49, 23,131,168,132,132, 4, 42, 18,137,224,233,233, 89,189,172,242, 59, 56, 56, 76,251,241,199, 31, -249,143, 30, 61, 66,219,182,109,227, 46, 92,184,208,158, 82,122,190, 32,111,119, 66, 67, 67, 67,218,180,105,243,244,244,233,211, -248,246,219,111, 73,221,186,117,199,150,197,233,235,235, 59,230,227,143, 63,198,154, 53,107,176,113,227,198,177,148,210,253, 69, -202,188,123,221,186,117, 19, 55,110,220,136, 17, 35, 70,192,207,207,175, 84, 95,149,232,232,232,233,173, 91,183, 14,125,246,236, -153, 69, 51, 30, 88,178, 63, 33,164, 77,227,198,141,171,169,213,106,108,221,186,245, 69,181,106,213,110,237,223,191,127, 10,165, -180,232, 11,251,215,131, 7, 15, 98,240,224,193,168, 91,183,238, 86, 66,200, 0, 11, 94, 58, 9,209,209,209,105,247,239,223,103, -121, 60, 30,188,189,189,209,185,115,103,244,239,223, 31,117,235,214, 69, 74, 74, 10, 46, 94,188,200, 70, 68, 68,164, 89, 26,184, - 52,237,233,185, 35,145,145, 79,175,220,185,113, 81,207,231, 49,240,241,112,196,135,237,234,225,147, 62,205,209, 32,208, 11,209, - 41,106,156, 61,123, 90, 31, 25,249,226,154, 37, 35, 14, 77,156,225, 97,247,175, 62,186,115,217, 32,224, 19, 4, 6,212,192,156, - 89,211, 28, 22,205,155,110, 95,163,170, 15,238,191,204,198,233, 83, 39,244, 9,113,177,231,222,214,136,195, 11,128,208, 70, 76, -228, 60,134,129,145, 17,231,241, 10, 2, 25,215, 10, 10,242,119,115,119,199,177, 99,199,192, 0,143,173,226,179,121,213, 11,174, - 84, 42, 97,226,171, 22, 16, 16,224,227,235,139,227,199,142,129,199,178,143, 91, 89, 25, 96,244, 9, 32, 51,231, 37, 64,254,167, -149,160,168, 86,201, 53,192,193, 78,142, 27,247,159, 67,163,167, 55,119,102, 66,133,119, 16, 69,187, 13,173,233, 58, 92,182, 97, -195,134, 70, 63,254,248, 99,251, 41, 83,166,216, 12, 29, 58, 20, 18,137, 4, 42,149, 10,222,222,222, 48, 26,141,248,237,183,223, -112,251,246,109, 37,203,178,167, 81, 36,108, 0, 33,164,157,121,172,141,223, 34,168,244, 85, 16, 76, 85,163, 67,125,251, 86, 8, - 39, 0,216, 60,103,109,211, 43,107,119,172,222,127,185,215,174,147,119,200,103, 3, 90, 49, 13, 2, 42, 1, 0,220,220,220, 96, -107,107,107, 53,103, 5, 84,250, 95,206,105,222,173,155,152,152,248,132, 16,146, 50,114,228,200, 64,147,227,187, 88, 44,206,143, -141,141, 13, 55, 5, 44, 45,122, 76, 89,249, 44, 24, 25,247, 41, 33,228,112,118,118,246,201, 47,190,248, 2,139, 22, 45,194,145, - 35, 71, 66, 40,165, 87,202, 83,118, 74,169,209,207,207, 47,235,230,205,155,110,213,107,214, 71, 21, 87, 1, 90,126,249, 12,148, - 82, 56,201, 40,114,179, 50,112,247,238, 29,228,230,230,222,176, 38,159,158,158,158, 89, 41, 41, 41,206,174,174,174,200,200,200, - 64, 90, 90, 90,161,200,202,204,204, 68, 70, 70, 6, 37,228,245,152, 45,101,112,230, 85,171, 86, 77, 21, 30, 30, 46,114,171, 84, - 29, 85, 93,133,104, 60,235, 9, 64, 41,124, 28, 25,228,230,100,225,218,181,107,200,206,206, 62, 95, 18, 39,203,178,159, 15, 26, - 52,136, 7, 96,200, 23, 95,124,225, 8,160,238,180,105,211, 78, 23, 29, 89, 40, 16, 8,190,219,177, 99, 71, 45, 83, 23,227,244, -233,211, 87, 82, 74,127,252,187,238, 37, 39, 39,167,207,143, 29, 59,166,208,233,116, 88,189,122, 53, 86,174, 92,185,133, 82,250, -191, 34,245,113,140,199,227,173, 99, 24,102,220,248,241,227, 49,122,244,104,217,123,239,189, 55,197,204,234,245, 26,103,124,124, -252,156, 6, 13, 26,204, 77, 73, 73,177,200,177,255,217,179,103,163, 26, 52,104, 48, 39, 37, 37,101,105,105,215, 72, 46,151,203, -141, 70, 35, 34, 35, 35, 51, 41,165,217, 37, 92,187,252, 26, 53,106,196, 27,141, 70,111,153, 76,230, 88,214,253,153,153,153,249, -205,123,239,189, 55, 63, 57, 57,249, 20,128,175,139,134, 42,161,148,222, 35,132, 4, 79,154, 52,105,194,146, 37, 75,122, 37, 37, - 37,237, 41,139, 51, 58, 58,250,155, 54,109,218,124,249,244,233,211,109, 37,117, 1, 83, 74,215, 18, 66,116, 59,118,236, 24, 27, - 25, 25,185,184, 52, 78, 74,233, 81,148,210,149, 94, 12,119,177,251,155,115,242,120,188,105, 75,150, 44, 97, 54,108,216, 0, 74, -233,114,131,193, 80, 82, 62,239,243,120,188,237,205,155, 55, 31,186,127,255,126, 73,112,112,240,104, 0,187,203,186, 63, 53, 26, -205,245,171, 87,175, 54,137,138,138,114,110,211,166,141,208,244,129,146,149,149,133,163, 71,143,234, 34, 34, 34,210,242,242,242, -174, 91,211,134, 24,180, 57, 3,174,158, 61,180, 59,234,217,195,166,173, 59,245,112,208,234,188, 33, 78,231, 33, 43, 61, 9,191, - 29, 61,152, 25, 25,249,226,154, 74,149, 53,192, 26, 78,157, 38,187,255,181,115,135,247,196, 69,134, 55,105,217,166,179, 67,190, -214, 23, 98, 33,131,244,228,120,252,118,236, 80, 70,100,228,203, 75,249,122,205,176,183,213,206,243,252,240, 53, 47,233,246,200, - 49,221,234, 65,234,224,125, 87, 0,172,110, 14, 72,157,221,220,132, 5,207, 14,108,128,104, 75, 57,147, 1, 81,245,130, 94, 42, -149, 74, 5, 1,160, 29, 14, 8, 92, 92, 92,164, 0,240,244,233, 83,200,128, 24,107,243,169, 4,228, 50, 51, 94, 6, 80,165,243, -225, 85,205, 86, 78, 0, 32, 46, 41, 29, 90, 61,174,224, 29,133,201,162, 85,156, 83,124, 89,193, 23, 89, 0,215, 9, 33,119,150, - 46, 93,218,242,135, 31,126,104, 53,121,242,100,209, 7, 31,124,128, 91,183,110,225,204,153, 51, 90,141, 70,115, 1,192, 69,211, -112,117, 11, 50, 83,225,156,251, 95,237,247, 81, 35, 47,226,168, 99,213,191,204,249,225, 68,139,202,238,246,212, 96,100,201,195, -135, 15,113,245,234, 85,171, 57,255, 37, 23, 22, 0, 26, 17, 66, 14, 21, 36,221, 44, 26,194,161,160,187,176,145,153, 21,172, 60, -167,186,203,231,243,105, 64, 64, 0, 41,152,158, 38,236, 77,242,157,148,148, 52,112,250,244,233,167,246, 29,248,133,127,112,188, - 20,217, 89,217,175, 26,224,236, 44,164, 39, 39,224,236,217,179,186,212,212,212,209,214,112,166,166,166,126, 58, 96,192,128,125, -187,119,239,118,204,204,204, 44, 20, 90,153,153,153, 96, 89, 22, 91,182,108, 73, 77, 78, 78,158,109, 13,103, 98, 98,226,136, 47, -190,248,226,192,174, 61, 7,248,167,103, 56, 64,105,138, 62,159,151,141,244,148, 68, 28, 57,114, 68,147,150,150, 54,169,148,235, - 99, 36,132,124, 54,104,208, 32,152,196,214,181,107,215, 38, 18, 66,214,154, 94,230,132,144, 42,159,127,254,249, 0, 51, 63,174, -149,127,247,168,195,244,244,244, 69, 77,154, 52, 89,153,154,154,250, 82,167,211,237,167,148, 22, 27,165,223,104, 52,142, 39,132, - 92, 93,187,118,109,127,103,103,103,183,164,164,164, 37,214,190,232,223,116,255,152,152,152,153, 13, 26, 52,152,149,146,146,178, -164,180,253,158, 63,127, 62,174, 96,191,165, 22,156,251, 24,128, 99,101,236, 99,192,171,208, 22,223, 89, 88,158, 67, 0, 14, 89, -216, 56,111,122, 27,237,135,209,104, 92, 86,187,118,109,137,193, 96, 56, 93,150, 63, 32,203,178,163, 38, 79,158, 28, 55,117,234, -212,122, 70,163,209,210, 58,208, 3,184, 68, 8,241, 76, 75, 75,243, 3, 96, 15, 0,124, 62, 63, 43, 43, 43,171, 92, 83,240, 20, - 68,124,239,234,236,223,190,219,254,109,107,134, 83,214, 88,151, 16, 2, 30,195,187,151,171, 84,109,181,212,146, 85, 12,103, 23, -103,255,246,221,146,227,163, 63,166,172,177, 46, 64, 88, 62,159,185,159,171, 84,109, 78, 13, 63,253,214,166,224, 25,234, 5, 55, - 30,193,248, 83, 63,125, 73, 0,160,253,199, 95,213,171,108, 15, 27, 67, 22,178, 80,208,150, 39, 38, 38,194, 1,200,180,148, 83, - 6, 24,116, 5, 62,209,153, 25, 25,144, 1,234, 68,128, 87,224,119, 73,146,147,146, 96, 99, 5, 95,225, 7, 35,160, 43,194,155, - 13, 64,108,114,231,204,200,201, 3, 44,143,107,248,175,180,104, 21,253, 93, 40,184, 40,165, 22, 47,120, 53,191,222,135, 0, 22, - 23,172,229,101,236,223,238,109,112, 54,241,128,127,187,106, 36,188,115, 0, 63, 3, 64,159,138,224,180,118,249,171, 57, 1,108, -211,106,181, 52, 63, 63,159,170, 84, 42,170, 84, 42, 41,128, 67,197, 28,115, 40, 33, 33,129,198,197,197,209,152,152, 24, 26, 21, - 21, 69, 1,236,180, 54,159,182,182,182, 63,246,237,219,215, 40, 16, 8,214, 84, 68,217, 29, 29, 29, 23, 55,110,220, 88,247,253, -247,223,211, 95,127,253,149,110,222,188,153,142, 31, 63,158,214,170, 85, 75, 99,111,111, 63,160, 60,156,238,238,238,115, 2, 2, - 2,210,183,108,217, 66,119,238,220, 73, 87,173, 90, 69,103,207,158,109,244,246,246, 78, 82, 40, 20, 29,203,195,233,234,234,186, -169, 69,139, 22,186, 77,155, 54,209,211,167, 79,211, 93,187,118,209,207, 63,255,156, 6, 6, 6,106,228,114,121,111, 75, 56, 1, -240,248,124,254,138, 49, 99,198, 36,121,122,122, 30, 43,178, 77, 22, 20, 20,116,107,208,160, 65, 9, 0,166,191, 43,247, 39,199, -201,113,114,156,111,206, 57,196, 11,158,237,171,192, 64, 47,126, 73,233,197, 47,105,187, 42, 96, 7,122,194,139, 2, 60,153, 80, -216,191, 85, 72,200,114, 33,208,159, 2,188, 98,151,226,242, 9,240, 36, 60, 94,159,230,141, 27, 47, 23, 2, 3, 76,251, 74,120, -188, 62,173, 66, 66,150, 11,120,188,193, 37,242,149,194, 73, 1,158,144,207,159,222,188,105,211, 21,124, 96,150, 41,237,253, 42, -228,241,231,157, 42,209, 16, 95,242,124,176, 43,100,165,113,150, 80, 31,163, 42,186,142,255,238,165,188, 55, 2,191,162,111,194, -127, 11,231, 63, 72,104, 85, 47,232,182, 57,100,182,204, 44,230,152,153, 69,246,217, 6,160,122, 57,235, 83, 90,145,101, 7, 80, -219,217,217,249, 68,245,234,213, 83, 43, 87,174,156,224,224,224,176, 27,128,247, 27,114, 6,187,187,187,255,236,230,230,246,204, -195,195,227,190,179,179,243,119, 0, 92,222,132, 83, 32, 16, 52,118,115,115, 59,239,231,231,151,229,235,235,155,236,236,236,188, - 7,128,155,181,156, 0, 60, 80, 76,163, 2, 64, 8,192,131,123,233,112,156, 28, 39,199, 89, 84,192,116,168,138, 37,237,171,192, -208,190, 10,140, 29,252,240,157,185, 64,233, 10, 72,203, 43,138,134, 1,226,162,251,151,201, 87, 6, 39, 5,120,205, 0,155,162, -199,116,246, 70,144, 37,156,255,102,161,101,202,103, 65, 59, 63,202, 60,223,252,242,152,200, 76, 78,178, 21,220, 13,246,175,224, -252, 7,117, 27, 62, 7,202, 14,246,102, 30, 65,190, 2,206,169,174,224, 50, 60, 0,240, 65, 5,115, 62, 2, 48,164, 34, 57,117, - 58,221, 13, 88, 56,239, 91, 25,121, 75, 44,197, 23, 46, 17, 28, 56,112,224,240,122,227, 96, 60, 9,204,104,239, 79, 86,243,141, - 96, 78,188,160,241,230,155,143,252, 17,248,216, 42, 78, 0,216, 90,204,244, 60,229,226, 51,227, 4,128, 43,192,159,102,119, 56, -246,134,238, 38,255,178,119,115, 34,128, 77, 86,197,209,226,192,129, 3, 7, 14, 28, 56,188, 61,156,126, 74,185, 15,177,127, 62, -142, 21,153,227,176,208,239,147, 0,104, 87,130, 42,179,120, 36, 5, 33,164, 93, 57, 84,223, 25,142,147,227,228, 56, 57, 78,142, -147,227,228, 56,255, 91,156,102,220, 37, 13,172,120, 82,132,239,173, 12, 24,169, 40, 16,203,167, 45, 43, 7,249,191, 52,108, 2, -199,201,113,114,156, 28, 39,199,201,113,114,156,127, 47,231,191, 90, 76,189,110,205,122, 77, 32,114, 93,135, 28, 56,112,224,192, -129, 3, 7, 14,111,128,210,172,110,156,208,226,192,129, 3, 7, 14, 28, 56,112,120, 3, 16, 66, 60,240,106,138,170, 99, 5,107, -206,162,197,129, 3, 7, 14, 28, 56,112,224, 80, 65,232, 66, 41,221, 84, 92,100,120,134,171, 27, 14, 28, 56,112,224,192,129, 3, -135, 55,131,201, 79,203,218,185, 14, 57,112,224,192,129, 3, 7, 14, 28, 56,148,130,210,124,180, 94, 27,117,120,236,216, 49,218, -165, 75, 23,194, 85, 25, 7, 14, 28, 56,112,224,192,225,109,224,223,168, 69,204, 44, 88,199,138, 6,167,230, 44, 90, 28, 56,112, -224,192,129, 3, 7, 14,111, 0,147, 69,171,160,219,240,181, 52, 78,104,113,224,192,129, 3, 7, 14, 28, 56,188, 1, 74,179,104, - 49,192, 43, 51, 29, 87, 77, 28, 56,112,224,192,129, 3,135,183,133,127,179, 22,161,148,110, 42, 88,254, 52, 93,146,105,212, 97, -235,130, 2,182,230, 46, 53, 7, 14, 28, 56,112,224,192,225, 45,224, 95,171, 69, 8, 33, 30, 5,221,134, 30,127,218,246, 87, 78, -193,195,129, 3, 7, 14, 28, 56,112,224,240,174,195, 20, 63,171,184, 56, 90,156,208,226,192,129, 3, 7, 14, 28, 56,112,120, 67, -161, 85, 52,173,208, 65,158, 19, 90, 28, 56,112,224,192,129, 3, 7, 14,127, 13,254,210,200,240,132,144,118, 28, 39,199,201,113, -114,156, 28, 39,199,201,113,114,156,239, 58, 76, 17,225,139, 90,183,184,240, 14, 28, 56,112,224,192,129, 3, 7, 14,111, 40,178, -204,125,179,204,255,115,115, 29,114,224,192,129, 3, 7, 14, 28, 56,252, 69,224, 44, 90, 28, 56,112,224,192,129, 3, 7, 14,111, - 0,211,136, 67,243,255,156,208,226,192,129, 3, 7, 14, 28, 56,112,168, 64,177, 85, 92, 58,215,117,200,129, 3, 7, 14, 28, 56, -112,224,240, 6, 40,234, 0,111,254,159, 0,104, 87,130, 50, 59, 99,197, 9,172, 30,125, 80, 22, 63,199,201,113,114,156, 28, 39, -199,201,113,114,156,239, 30,103, 89,220,214,232,143,127,146,208, 42,201, 25, 30,148,210,191,108, 1,208,142,227,228, 56, 57, 78, -142,147,227,228, 56, 57, 78,142,243, 93, 94, 0,120, 0, 24,101,182,120,152,182,113, 62, 90, 28, 56,252,219,113,128,240,144, 25, -224, 7, 74, 61,193, 19, 37, 34,241,193, 11,204,163,236, 27,115, 38, 7,249, 66,170,119,131, 65,146,138,228,251, 47,223,152,147, - 3, 7, 14, 28,222, 81, 20, 76, 38, 93,172,143, 22, 39,180, 56,112,248,183, 35, 53,208, 31,124, 44, 6, 3, 15, 80, 93, 4, 92, -130, 22, 3,120,248,198,156, 66,246,107, 24, 25,111, 80,221, 83,184, 6, 44, 1, 16,198, 85, 54, 7, 14, 28, 56, 88,135,191,221, - 25, 94, 32, 16, 36, 19, 66, 88,177, 88,124,176,184, 89,174, 57,112,168, 40, 16, 66, 60,164, 82,233, 65, 66, 8, 43, 20, 10,147, -223,201, 66,238,168, 45, 3, 99,252, 64,171,103,189,126,123,144,229,170,210, 24,253,193, 24, 58,227, 39,127,155, 55,226,228,147, - 14,249, 58,214,103,231, 77,149, 91,158,214, 80, 19, 20,111,198,249,199, 53,177, 23,137, 68,191, 17, 66,156,185, 59,244,221, 68, - 16, 33,239, 53, 20, 8,166,214, 36,228,125, 66, 8,225,106,132, 3, 39,180,254,102, 24, 12, 6,215,216,216, 88,178,121,243,230, -238,182,182,182, 17, 2,129, 96, 38, 33, 68,248, 95,169,112,133, 66,113,213,206,206, 46,217,222,222, 62,217,206,206,238, 78, 89, -233,239,168, 0,242,119,117,117,141,118,114,114,122,106,158,238, 90,183, 87,179, 26, 45,134,206,115, 14,238,217,234, 13,249,133, - 2,129, 96,166,157,157, 93,196,166, 77,155,186,135,135,135, 19,189, 94,239,250, 78, 86,102, 62,235, 6,134,215,230, 81,162, 74, -150,152,163,119, 11,141, 82, 41, 0, 94,107,104, 81,254,143,152,108,214, 13,160,239,223,139, 83,203,175,102,184,184, 93,122,161, -177, 5,195,180, 65, 62,113,127,227, 6,135, 97,198,178, 44,219, 94, 40, 20,126,198, 53,191,239, 38, 68, 12,211,252,106,247,238, - 95, 79,175, 83,103, 66, 32,208,173, 56,177, 69, 94, 97, 98,205,154, 53, 79, 16, 66,250, 87, 96,219,242,109, 96, 96, 96, 60, 33, -100, 18,119, 37, 56,252,205,239,181,250,166, 15,252,130,105,120, 60,172, 22, 90,125,171,144,230, 3,171,146, 11,253,170,144,220, -254, 85,137,114, 72, 85,114,185, 79, 21,242,126,121, 50,228,237,237,141,102,205,154,241, 98, 98, 98,164,147, 38, 77,154, 39, 22, -139, 35, 9, 33, 29,203,195, 37,147,201,110,203,229,242, 88,129, 64,240, 90, 94,228,114,249,109, 27, 27,155, 88,129, 64,208,214, - 60,221,214,214,246,170,157,157, 93,178,173,173,237,157, 18,132,208,109, 59, 59,187,100,133, 66,113,219, 60, 93, 32, 16,180, 85, - 40, 20,113,182,182,182, 69,211,223,183,181,181,141, 45,154, 94, 18, 4, 2,129,119,108,108,172,107, 92, 92,156,171, 72, 36,114, - 51, 79,143,137,137,113,141,141,141,125, 45,221, 26, 8, 4,130,247,109,108,108, 98,229,114,249,237,226,210,139,150,169, 36,152, -213,221,251,150,164, 91, 43,178, 58,116,232,112, 57, 49, 49,209,199,222,222,222,222,124,155,163,157,125,199,159,183,172,155,210, -163,115,135,177,174, 65, 31,214, 46, 39,127, 71,177, 88, 28, 57,121,242,228,121,113,113,113,210,198,141, 27,243,132,194,119, 84, -199, 31, 8, 18,130,176, 45, 89, 74, 93, 30,199,231,187,116,233,222,151,127, 55, 86,237,162, 55, 26, 29, 1, 94,107,108,171, 44, - 46, 23, 39, 95, 31,194, 82,234,246,123,148,192,165,205, 71, 19,120,103,163,248, 46,122,163,209, 9, 12, 90,149,139,243,143,107, - 35,224,241,120, 83, 86,172, 88,193, 0, 24, 79, 8, 17,253,151, 26,226,198, 94,196,171,109,117,254,205, 6,158,164,121, 5, 54, -238,193,114,185,252, 54, 33,196,255,159, 82, 78, 45,203, 62,217,243,242,229,201,193,213,170,117,157, 94,167,206,240,162, 98,171, -224,247,244, 37, 75,150, 12,121,244,232,145, 75,149, 42, 85, 70, 19, 66,152, 10,168,139, 85, 75,150, 44,153,246,232,209, 35, 79, - 63, 63,191, 5, 21,193,201,225,159,165,225, 1,180, 1,208, 5, 64, 91, 0,141, 10,126, 55, 44, 88,186,224, 85, 20, 5,243,117, -195,130, 99, 77,219, 27,151,192,209,165,152,227, 26,154,165,155,255, 47,250,219,132,250, 5,235, 46, 5,163, 13,187, 20,110,161, -148,226,232,209,163,212,124, 93,116,233,231,135,249, 19,154,121,169, 30, 31,217, 69,149,177, 47,105,102,248, 93,122,119,211, 55, -116, 66, 67, 23,213,192, 42,248,214, 74,207,124, 74, 41,165, 59,119,238,164,103,207,158,165, 89, 89, 89, 52, 44, 44,140, 54,106, -212, 72, 45,147,201,126, 7,224,103, 13,159, 66,161, 72,254,253,247,223,105,135, 14, 29,178,109,108,108,150, 3, 96, 40,165,176, -181,181, 77,190,114,229, 10,237,208,161, 67,182, 66,161, 88, 5,128, 71, 41, 69,239,222,189, 83, 40,165,212,197,197, 37,161, 56, -190, 30, 61,122,100, 82, 74,169,157,157, 93,114, 65,126,121, 10,133, 98,213,184,113,227,148,183,110,221,162, 14, 14, 14,166,116, -198,214,214,118,249,248,241,227,149,161,161,161,133,233,101, 45,142,142,142,177, 70,163,145, 30, 57,114,132,186,186,186, 22,230, -193,193,193, 33,214,104, 52,210, 67,135, 14,149,152,183, 82,234,148,177,177,177, 89, 54,120,240,224,220,168,168, 40,234,228,228, -148,108,150,190,124,232,208,161,185, 49, 49, 49,212,217,217,217,162, 60, 58, 57, 57, 37, 95,189,122,149,246,234,213, 43,199,188, - 78,157,156,156,146,175, 93,187,102, 74, 95,102, 74, 47,109,241,244,244, 28,237,234,234,154,224,234,234,154, 96,111,111,191,200, -195,195, 35, 41, 53, 53,149, 82, 74,105,213,170, 85, 83, 40,165,112,169,243, 97,179,234,205,135,204,115, 13,238, 62,121,195,254, -107, 55, 46, 62, 76, 79,173,211,126,236, 50,187, 58, 61,236,172,168, 3, 63,137, 68,242,123,203,150, 45,213, 81, 81, 81, 84,169, - 84,210,219,183,111,211, 75,151, 46,209,199,143, 31,211,130,251,238,221, 26,233,178, 46,200,155,110, 12,216, 19, 54,215, 39,252, -226,146, 78,122, 26,117,150,238, 26,238,162,191, 48,217, 43,130,254, 16,248, 63,186,177,102,165,114,113,254, 80,115,215,253,217, - 62, 79,214, 44,152,168,143,142,142,166, 83,135,118, 50,156,154,224,245,130,110, 8,220, 95, 46,206, 63,174,209,128, 15, 63,252, - 80, 25, 19, 19, 67,131,130,130,242,120, 60,222,136,255,202,136,164, 70,158,240,106,231, 47,138,191,191,115, 42,219, 45, 88,150, - 94,223, 3,205, 43, 96,148, 83,176,171,171,107,218,182,109,219,168, 66,161, 72, 1,224,255, 15, 25,125, 69, 2,129,238,219,235, -212, 57,196,246,233, 99,220, 94,167,206,161, 64,160, 59, 94,133, 19, 34, 0,102, 44, 93,186, 52, 84,175,215,135,110,221,186, 53, -180,123,247,238,161, 0,166,190,225, 57,191,255,246,219,111,169, 94,175,167, 91,183,110,165,221,187,119,167, 0, 86, 91,122,188, -141,141, 77,245,218,181,107,239, 8, 10, 10,138,169, 91,183,174,182,102,205,154,249,254,254,254, 81,193,193,193,219,196, 98,177, - 31, 55,170,238,239, 89,202,208, 34,141,102,204,152, 49, 19, 0,157, 49, 99,198, 76, 74,105,151,130,118,189,139,249,239,162,107, - 74,105, 59,243,255,197,113,152,150,226, 56,139, 59, 71,145,223, 69, 71, 29,122, 20,252, 31, 85,184,205, 84,168,163, 71,143,182, - 58,122,244,232,133,162,133,235, 91, 5,205, 38, 52,243, 82,171, 83, 19,233,195,111, 62,163,231,218,120,211, 43,173,221,233,211, - 41, 31,210,196,157,171,232,167,245, 28, 84,125,170,160,141,181, 66,235,224,193,131,244,208,161, 67,244,248,241,227,244,225,195, -135, 52, 61, 61,157,238,220,185,211,232,228,228,164, 22,139,197, 75, 0, 72, 45,225,179,181,181, 77,166,148, 82,141, 70, 67, 23, - 45, 90,148,175, 80, 40,238, 0,112, 43, 16, 74, 52, 43, 43,139, 46, 89,178, 36,223,206,206,238, 62, 0, 79,103,103,231,216,151, - 47, 95, 82, 55, 55,183, 98,197,140,131,131, 67,242,147, 39, 79,168,131,131, 67, 50, 0, 47, 7, 7,135,135,135, 15, 31,214, 81, - 74,105, 92, 92, 28,117,116,116, 76, 6,224,230,228,228,116,247,232,209,163, 58, 74, 41, 77, 72, 72,160,142,142,142, 22, 11, 45, -181, 90, 77, 79,157, 58,245, 90, 30, 76,233, 39, 78,156,120, 77,128, 89, 80,159,110,118,118,118,161,123,247,238,213, 26,141, 70, -250,240,225, 67,106,103,103,151, 12,192,205,222,222,254,206,254,253,251,181, 70,163,145,134,135,135, 91, 44, 6, 43, 87,174,156, - 66, 41,165, 6,131,129,110,216,176, 65, 99,170, 83, 83,186, 86,171,165,235,215,175,215,216,218,218,134, 2,112, 43,141,203,217, -217, 57, 65,171,213,210,172,172, 44,218,184,113, 99,229,149, 43, 87,104, 78, 78, 14,165,148,210, 2, 62, 4,180, 26,241,213,141, -103,202,156,143,167,173,219,231,215,104,224, 55, 39,111,198,199,253,248,235,237, 80,231,224, 30,157, 44, 40,191, 84, 40, 20, 46, -241,240,240,200, 63,123,246,172, 81,171,213,210,231,207,159,211,171, 87,175,210,235,215,175,211,219,183,111,211,135, 15, 31,190, -123, 66,107, 63,120,116, 99, 64, 15,186, 49, 32,116,219, 96,231,180,220, 59,187, 41, 61, 61,137,190,248,170, 10,157,219, 73,145, -203,110, 12, 8,165, 27, 3,251,208,249,173,248, 86,113,110,170,217,141,110, 12, 8,253,182,175,111,250,221,208, 91,244,194,133, - 11,116,253,170,165,116, 66, 59,175, 60,118, 99, 64, 40,253,161,102, 47,171, 56,205, 22,177, 88,252,236,242,229,203,244,226,197, -139,116,193,130, 5, 84, 38,147,197,188,121, 61,212, 20,210, 31,252,125,233,102,255, 86,116, 75, 13, 15,122,190,124,121,251,171, - 69, 86,123,127, 81, 92,218,221, 95, 41,205,120, 78,147,150, 7,209, 78, 1,130, 55, 18, 91, 5, 34, 43, 53, 42, 42,138, 38, 37, - 37,209,149, 43, 87, 82, 91, 91,219,127,180,216, 10, 0,122, 0,152,185,108,217,178, 66,145,181,110,221,186,208, 7, 15, 30,132, -250,248,248, 28,127,131,115,173, 94,182,108, 89,161,200, 90,183,110, 29,125,240,224, 1,245,245,245,141, 45,235,216,193,131, 7, -203,154, 53,107, 22, 58,104,208, 32,213,182,109,219,104, 84, 84, 20,189,127,255, 62, 93,182,108, 25,157, 55,111, 30,253,233,167, -159,104,175, 94,189,242, 26, 55,110,124,163, 79,159, 62, 18, 43,243,198,167,148,138, 10, 22, 1,165,212, 36, 52,249, 0, 4,166, -143,127,110,121, 93,104,149,164, 69, 74, 18, 83, 37, 9,172,162,219, 74, 17, 98,165, 10,182,178,206, 87, 84, 84, 21,183,152,155, - 86,207,119,233,210,229, 79,190, 49,124,138,133,163, 62,255, 74, 18,185,109, 37,146,247,174, 5, 47, 43, 25,130,220,116,104, 46, - 31,131,254,242, 97, 12,105,218, 84, 42, 37,228,107,107,109,128, 18,137, 4, 82,169, 20, 98,177, 24, 89, 89, 89,120,241,226, 5, -154, 53,107,198,220,190,125, 91, 50,106,212,168, 73, 82,169, 52,134, 16,210,211, 2,115, 49, 0,224,234,213,171, 24, 57,114,164, -120,199,142, 29,117, 93, 92, 92,238, 25,141, 70, 17, 0,132,135,135,163, 95,191,126,226,221,187,119,215,242,244,244,188,163,211, -233,100, 98,177, 24, 60, 30,175, 68, 62,145, 72, 4,189, 94, 47,174, 81,163,198,253,123,247,238, 5,119,237,218, 85, 16, 29, 29, -141,151, 47, 95, 66,175,215,139,252,253,253, 31,220,185,115,167,110,151, 46, 93, 4,177,177,177,136,142,142,134,165, 62,159,132, - 16,104,181, 90,136,197, 98, 48, 12,243, 90,186, 70,163,129, 72, 36,178,152, 75, 32, 16,188, 31, 24, 24,248,224,222,189,123,245, -123,244,232, 33,188,117,235, 22,226,226,226, 96, 52, 26, 69, 53,107,214,124,112,239,222,189,122,221,187,119, 23,222,191,127, 31, -201,201,201,175,157,175, 12, 63, 26, 0,192,189,123,247, 48,104,208, 32,209,111,191,253, 86,207,195,195,227,190,193, 96, 16, 1, -192,131, 7, 15,208,175, 95, 63,209,201,147, 39,235, 87,170, 84,233,126, 25, 93,137, 60, 0,208,235,245, 24, 61,122,180,220,214, -214, 22,177,177,177, 96, 89, 22, 70,163, 17, 0,144,158,153,254,224,222,131,135,225, 67, 6,244,109,165,214,105, 52,215,110,222, -126, 92,181,178,175, 55, 33,180,114, 25,117,217, 83, 38,147,197,124,251,237,183,147, 35, 35, 35,197, 1, 1, 1,204,253,251,247, -145,149,149, 5,145, 72, 4,137, 68, 2,177, 88, 12,129, 64,240,238, 25,209,115,130,156,192,162,125,116,170, 86, 44,182,247, 86, -216,120,248, 3, 49, 23, 81,197, 69, 12, 30,195,147,220,122,169,146, 3,180, 61,124,210,156,172,227,100,219,191, 76,209,138,245, -142,181,108, 60,189,125,144,158,158,142, 74, 85, 3,145, 47,114, 17, 93,125,158,103, 3, 98, 37,231, 31,215, 42,164, 70,141, 26, -238,213,171, 87, 71, 90, 90, 26,234,215,175, 15, 7, 7, 7, 7, 66, 72,251,114,215,193,182,202, 98,228,160, 57,192, 44,135,145, - 44,128,158,191, 24,207, 83,235, 99, 83,131,127,204, 5,111,236, 69,188,108,109, 68,215,119,239,217,235,229,228, 83, 19, 56,246, - 49,220,236,197,216, 50,182,190,163,139,157,248, 80,121,186, 17, 9, 33,193,110,110,110,103,111,220,184,225, 44,145, 72,112,231, -206, 29, 4, 5, 5, 97,229,202,149, 46, 14, 14, 14, 23,255, 9,221,136,148, 82, 26, 14, 28,249,246,254,253,173, 59, 34, 34,142, - 14,174, 86,173,235, 32,127,255, 69, 99,250,247, 31, 49,113,226, 68, 44, 93,186, 20,135, 14, 29, 66,243,230,205, 49,106,212, 40, -125, 76, 76,204,246,114,118, 23,174, 93,190,124,249,132, 73,147, 38, 21,229,212, 69, 71, 71,127, 91,218,177,193,193,193,222,207, -158, 61,139,159, 50,101, 74,253, 29, 59,118, 72,101, 50, 25,178,178,178,176,121,243,102,204,156, 57, 19,132, 16, 80, 74,241,211, - 79, 63,201,134, 15, 31,222, 40, 34, 34, 34,190,114,229,202,150,184,117, 16, 0, 18, 0,178,130, 69, 14, 64,182,123,247,110,187, - 30, 61,122,216, 22,164, 73, 1, 72, 9, 33, 98,112, 40,138, 98,181,136,217, 53, 63, 90,228, 94,235, 90, 52,173,232, 54, 74,105, -215,210, 56,172,188,183,139, 59,223,177,162,145,225, 95,123,167,154,253,110,125,236,216,177, 11,127, 34, 5,234,184,251, 5, 32, -251,244,126, 72,249, 4, 82, 94,193,194, 39, 96, 94, 60, 64, 37,137, 0,122, 74,131,203, 35,180, 76, 98, 75, 42,149, 66, 40, 20, - 66,169, 84, 66,175,215, 99,214,172, 89,226,211,167, 79, 59, 49, 12,243,191,178,120,204, 5,211,211,167, 79, 81,179,102, 77,114, -228,200, 17,183,241,227,199, 75, 1, 64, 36, 18, 33, 59, 59, 27,213,171, 87, 39, 39, 78,156,112,157, 61,123,182, 77,105, 98,134, - 16, 2,161, 80,136, 73,147, 38, 73,111,222,188,233,232,233,233,137, 23, 47, 94, 32, 35, 35, 3, 54, 54, 54,152, 52,105,146,244, -198,141, 27, 46,158,158,158,136,138,138, 66,118,118, 54,108,108,108,172, 22, 90, 66,161,240,181, 99, 8, 33,208,233,116, 16,137, - 68, 22, 11, 34, 59, 59,187, 93,161,161,161, 46,118,118,118,184,127,255, 62, 12, 6, 3,236,236,236, 48, 97,194, 4,105,104,104, -168,139,189,189, 61,194,195,195, 77,150, 63,171,242, 8, 0, 44,203, 34, 60, 60, 28,149, 43, 87,198,197,139, 23, 93,199,140, 25, - 35, 49,165, 63,127,254, 28,222,222,222,184,120,241,162,171, 92, 46,223, 85, 18, 23,203,178, 72, 76, 76,196,163, 71,143,240,226, -197, 11,164,166,166, 34, 45, 45, 13,185,185,185, 48, 24, 12,175,252,236,114,115,142,237,222,119,228,158, 84, 42,149, 5,249,215, -240,121,240, 48, 44, 69, 42,149,202,124,125,124,252, 9, 89,192,148,146,207,255, 69, 68, 68, 56, 13, 31, 62, 92,248,236,217, 51, - 36, 36, 36, 64, 32, 16, 20,222, 91,166, 69, 44,126,199,218, 50, 66, 8,136,182, 6, 8,169,127,253, 69,158, 99, 72,215, 1, 66, -188,252, 13, 96,245, 0,195, 71,235, 58,222,252, 67, 15,242,220, 64, 81, 7, 26, 4, 2, 22, 92,120, 66, 8,160,171, 14,144,247, - 78, 61, 51, 56, 53,255,112,172, 48, 62, 62, 30, 66,161, 16, 98,177, 24,245,223,239,205,223,125, 79,239, 14,130,186,208, 33,192, - 34, 78, 51, 72,165,210, 47,231,205,155, 39, 55,231, 28, 49, 98,132,220,206,206,110, 94,185, 69, 86,158,172, 41, 12,116,210,163, -120, 85,229, 69,199,146,106, 70,164,168, 3, 64,233, 20, 64, 95,239, 77,197, 22, 33,164,181, 68, 34,121, 73, 8,105,241, 70, 34, - 75, 33,186,182,103,207, 94, 47,199, 74,175, 68, 22, 12,249,128, 64, 10,119, 23,123,108,153,220,198,209,197, 94,106,149,216, 42, - 16, 89,191, 95,191,126,221, 89, 34,145, 32, 52, 52, 20, 66,161, 16, 18,137, 4,181,107,215,198,198,141, 27, 93, 28, 29, 29,255, - 81, 98,107,201,253,251,219, 22, 63,122,244,116, 70,112,112, 96, 79,185,220,113,220,160, 65,118,179,103,207, 62,122,248,240,225, -173, 93,186,116, 73,187,121,243,230,119,148,210,253, 86, 94, 31, 66, 8, 89,183, 98,197,138,113, 38,225, 54,123,246,236,159, 14, - 31, 62,188,184, 75,151, 46,137, 55,111,222,156, 66, 41, 93, 87, 26,135, 82,169, 60, 60,103,206, 28,187, 15, 63,252,208,244, 31, -151, 47, 95,198,246,237,219, 33,151,203, 95,219,183,123,247,238, 24, 57,114,164,131, 86,171, 45,245,157,228,230,230,214,246,250, -245,235, 65, 0,132, 0,196, 38,161,245,240,225, 67,251,156,156, 28,123, 27, 27, 27,123, 15, 15, 15,133, 73,108,125,248,225,135, -246, 2,129,160, 5, 56,160, 44, 45, 98, 46,116, 44, 73, 43,239,254,150,138,173, 34,255, 19, 75,154,231,240, 53,161,213,165, 75, -151, 11, 0, 90, 22,183,147, 46, 35, 25, 98, 24, 33,229, 17,200,120,102, 98, 11, 44,248,217, 41, 40,207, 0,222,162, 47, 67,169, - 84, 10,137, 68, 2,129, 64, 0,189, 94,143,236,236,108,171, 68,129,173,173, 45,108,108,108,160, 86,171, 97, 48, 24, 32,145, 72, - 76, 98, 4,182,182,182, 16, 8, 4,133, 47,225,162,214,164,162,214, 28,161, 80, 8,185, 92,142,196,196, 68, 68, 71, 71,131,101, - 89,216,216,216, 64, 46,151, 67, 36, 18, 33, 33, 33, 1, 9, 9, 9,160,148, 66, 46,151, 67, 46,151, 91, 44,142, 0,192,104, 52, - 66, 36,250,179, 31,176, 94,175,183,202,162,101, 48, 24,240,248,241, 99,196,196,196, 64, 34,145, 20,150, 85, 44, 22,227,249,243, -231, 72, 74, 74,130, 76, 38,131,173,173, 45,236,236,236, 44,230, 53,149, 69,161, 80, 64, 42,149, 34, 51, 51, 19, 42,149,170,176, - 78,109,109,109, 33,151,203,145,157,157,141,148,148,148, 82,203,110, 52, 26,145,144,144,128,212,212, 84,196,198,198, 34, 45, 45, -173, 80,108,177,236,155,199,191,188,120,241, 34, 94,188,120, 97,234,154, 42,188,190,230,107, 83,190,223, 25,172, 15,182,131, 94, -208, 33, 77,169, 23,167,234,132,118,110,193,237,128,151, 39, 0,134, 15, 72, 28,208,164, 86, 21, 68,103, 26,229, 79,146,181, 18, - 16,116,196, 58,127, 7,139, 56,141,130,246,169,185,122,113,148,206,197,182,102,157, 6, 72, 78, 78,134, 88, 44,134, 88, 44,198, -123,205,219,225,101,186, 81, 22, 22,175,150,129,162,131, 69,156,127, 60,163, 85,109,108,108,154,182,104,209,130,152,115,118,238, -220, 25,132,144,218,132,144, 64,171,202,191,166,154, 8, 58, 89, 19,240,233,164,176, 68,149,231,161,135,249,254,221,122,246,118, -252,254, 76, 74,205,199, 73, 26, 63, 80,253,231,160,186, 6,229, 21, 91,132,144, 86, 10,133,226,232,154, 53,107,252, 36, 18,201, - 9, 66, 72, 72,121,120,108,164,188, 13, 95,142, 27,224,229, 96, 18, 89,122, 21,192,151, 2, 2, 41,192,151,194,221,213, 25, 95, -143,108,239, 40,147, 8, 14, 90, 33, 88,119,175, 91,183,206,165,168,200, 50, 45,245,235,215,199,220,185,115, 93, 28, 29, 29,119, -189,229,111,129, 14,246,246,246, 59,218,181,107,119, 61, 65,161, 24,153,216,160,129,232,119, 59,187,236,182,217,217,118,190, 15, - 31,234, 2,128, 7, 0,214,199,198,198,118,178, 84,100, 17, 66,250,219,217,217,133,182,107,215, 78,167, 80, 40, 98, 86,174, 92, -249,233,248,241,227,177,116,233, 82,204,153, 51,103, 51,128, 79, 40,165,179, 98, 99, 99, 61,203, 18, 89, 0,144,148,148, 52,112, -250,244,233,105,105,105,105, 0,128,218,181,107, 35, 43, 43, 11, 83,167, 78,197,103,159,125, 6, 0,168, 87,175, 30, 40,165, 72, - 78, 78,198,242,229,203,147,147,146,146,134,149,209,182,199,238,223,191,191,145, 78,167,243, 46,232, 30, 20,103,101,101,217,102, -100,100, 40,116, 58,157,156,101, 89,185,189,189,189, 13, 0,217,144, 33, 67,248, 97, 97, 97, 53, 13, 6, 67, 60,167,173,254, 64, -105, 90,164,156, 56,246, 38,150,171,226, 44, 98, 37,220,159,165, 91,180,186,116,233, 66,204,215,175, 89,140, 8,238,199,220,190, - 8,199,224, 6,175, 89,179,100, 60, 2,169,173, 29, 94,198, 70, 67, 8,242,200,218, 66,152,132, 85, 81,177,149,157,157,141,177, - 99,199,170, 63,250,232,163,116,150,101,123, 91, 42, 10,236,236,236, 96,103,103,135,176,176, 48,218,171, 87,175,228,149, 43, 87, -170,205,133,214,211,167, 79,105,135, 14, 29, 82,230,205,155,167, 44, 77,104,153, 44, 90, 75,150, 44, 81,183,110,221, 58,245,209, -163, 71,212, 36,166,108,108,108,176,124,249,114,117,155, 54,109,146,111,221,186, 69, 77,105,214, 88,180, 24,134, 41, 20, 90,230, -199, 48, 12, 3,150,101,173, 18, 90,121,121,121, 3,187,116,233,146, 28, 30, 30, 78, 77,229,180,179,179,195,202,149, 43,213,237, -219,183, 79,126,244,232, 17, 53,165,217,218,218, 90, 44, 6, 77,231, 87, 40, 20,176,181,181, 69, 88, 88, 24,237,208,161, 67,242, -234,213,171,243,205,211, 31, 63,126, 76,187,119,239,158,156,155,155, 59,176, 52,139,214,139, 23, 47, 10, 45, 88,249,249,249, 72, - 75, 75, 67,108,108,108, 97,215,161, 90,110,219,105,192, 71,221,234,170,213,106, 85,216,211,103, 49,181,107, 5,185,170,213,106, - 85,116, 76,204, 83, 74,231,177,165, 60, 8,189, 63,254,248,227,244,153, 51,103,170,115,114,114,138, 21, 89,166,245, 59, 5,134, -117, 7,161, 45, 46, 61, 83,218,183,239,214, 79, 68,146,110, 2, 58, 37, 32,118, 0,196, 14,224,203,157,240, 65, 72, 61,222,182, -235, 57,238,160,108, 51, 8,197,222,101,114, 10,168, 27,192,134,156,126,154,239,208,162,207, 4, 81, 70, 70, 6,120, 60, 94,161, - 40,146,201,229,104,219,115, 8,243,211, 77,141, 59, 64,155,131,240,188, 45,205,174, 72, 36,154,246,229,151, 95, 10, 51, 51, 51, -193, 48,204, 31,156, 50, 25,198,140, 25, 35,182,181,181,157, 99,113,217, 15, 4, 9, 33, 16, 55, 1,232,103, 79,146,242, 61, 15, - 63, 80, 7,124,190,100,139, 52,184, 94, 35,140,110,237, 42, 93,114, 44, 37,248, 94,172,186, 10, 96,156, 12,131,246, 61,107,197, - 22, 33, 36, 68,161, 80, 28,187,125,251,182,172,115,231,206, 88,190,124,185, 92, 42,149,158, 32,132, 88,221,240,231, 41,141,227, - 23,174,254, 57,249,254,119, 29, 1, 93,222, 43,129,101,182,164, 40, 89,204,221,114, 54, 91,175,167, 3, 44,229, 84,171,213, 67, - 63,249,228,147,244,131, 7, 15,254, 73,100, 73, 36, 18, 68, 70, 70, 98,209,162, 69, 25, 25, 25, 25,195,222,166,200, 26, 63,126, -252,162,184,184,184,128,211,167, 79,243, 83, 83, 83, 93, 87,252,248, 99,246,129,236,236,140,197, 15, 31, 62,153, 85,171, 86,141, - 25,117,234, 12, 43, 41,244, 67, 73, 34,107,220,184,113,187,227,226,226,234,159, 57,115, 70,144,154,154,234, 61,110,220, 56, 44, - 91,182, 12,115,230,204,217, 8, 96, 52, 45,112,150,177, 20, 90,173,246, 73,102,102,102,215,142, 29, 59,102,101,102,102,162, 78, -157, 58,232,214,173, 27,220,221,221,225,233,233,137, 30, 61,122,192,223,223, 31,233,233,233, 24, 48, 96, 64, 70,106,106,106, 71, - 74,233,139,210, 56,211,211,211, 35,118,237,218,245,116,194,132, 9,245,227,226,226,106, 2,112,202,205,205,149,231,230,230,138, -181, 90,173,212,193,193,193,161, 94,189,122,206,163, 70,141,178,185,123,247,110,205,184,184, 56, 37,128,104, 78, 94, 21,138,172, - 18,181, 8,128,212, 2,193,163, 45,178, 78, 45, 99,155,165,199, 22,251,219,130,253, 94, 19, 91,230,203,159, 44, 90, 37, 65, 7, -204,221,190,127, 91,190,200,167, 58,236, 2,234, 66, 38,145, 64, 42, 18, 65,234,224, 4, 13,203,226,199,200, 36, 85, 30,165,115, -172,173, 80,243,110, 67,137, 68, 2, 30,143,135,245,235,215, 27,154, 54,109,154,127,246,236,217, 53, 42,149,202,135, 82,250,171, - 53,162, 96,245,234,213,170, 73,147, 38,221, 75, 73, 73,169, 43,145, 72,180,166,244, 53,107,214,168,134, 12, 25,242, 48, 46, 46, -174,190, 76, 38, 83,149,228,159,101, 46,180,196, 98,177, 38, 37, 37,165,209,136, 17, 35,194,215,175, 95,159, 39,147,201, 32,151, -203, 33, 22,139,181, 41, 41, 41,117, 63,253,244,211,123,203,150, 45, 83, 73,165, 82,200,229,114,171,186,229, 40,165,127, 18, 84, -230,233,150, 66,175,215,159, 77, 73, 73,169, 59,105,210,164,187,223,127,255,125,158, 73, 0,153,231,113,197,138, 21, 42, 27, 27, - 27,171, 44, 90,166,253,228,114, 57, 86,173, 90,165,154, 48, 97,194,189,148,148,148,186, 98,177, 88,107,150,158, 55,126,252,248, -187, 41, 41, 41,117,245,122,253,217, 82,190,240,140, 57, 57, 57,224,243,249,120,248,240,161, 70, 40, 20,130, 97, 24, 60,127,254, -188, 80,104, 57, 58, 58, 6,213,173, 93, 43,240,231,221,251, 47, 72,133, 98,113,211, 70,239,213,124, 17, 21, 29, 71, 41,137, 42, -227,139,227,215,252,252,124,159,203,151, 47,175,233,216,177, 99,254,230,205,155, 13,124, 62,255, 79, 47,159,119, 79,104, 65, 6, - 2,233,179, 20,141, 66,194, 24, 8,158,254,250, 74,100, 73,236, 1,137, 3, 32,113,128,151,151, 55,110, 70,170, 20, 96, 32,130, -209,130, 24, 98,148,202, 65, 32,123,152, 12,133, 64, 36, 37, 73, 73, 73,133,130,200,180,248, 85,175,137, 59,209, 74, 27, 16, 42, - 6, 15,214,132, 32,233,234,228,228,196, 79, 76, 76,252, 19,103, 80, 80, 16, 79,175,215, 91, 30,218, 37,193,232, 1,176,227,158, - 38,229,123,252,114, 47, 47, 96,242,226,159,164, 82, 99, 22,112,123, 53,130,171,122, 98,114,159,122,162,217,135, 83,131,111, 69, -169,170,130, 71, 71,131, 85,186, 88, 33, 16, 90, 40, 20,138, 19,183,110,221,146, 41, 20, 10,188,120,241, 2,141, 26, 53,194,166, - 77,155,100, 50,153,236, 56, 33,164,181, 53,151,233,122, 18,141, 86,230, 26,155, 78,219, 31,147,116, 63,209,240,154,200, 74,205, -163,248,228,219,195, 89,153, 57,249,189,175,197,148,252,252, 20,115,207,223,205,202,202,234, 48,103,206,156,244,212,212,212,215, -238,241,232,232,104,147, 32,104, 77, 41,125,244,182,110, 79, 59, 59,187, 65,139, 23, 47,198,173, 91,183,208,185,115,103, 92,188, -120, 17, 25, 25, 25,216,115,226,196,179, 93,207,158,205, 50,249,108, 21, 23,250,161, 36,216,218,218,126,190,120,241, 98,220,190, -125,187,144, 51, 61, 61, 29,139, 23, 47,142, 3, 48,214, 90,145,101, 66,114,114,242,205, 39, 79,158,116,172, 83,167,206,227, 53, -107,214,196,121,120,120,176,163, 70,141,194, 39,159,124, 2, 23, 23, 23,227,170, 85,171, 98, 66, 66, 66, 30, 70, 68, 68,180,203, -203,203,123, 96,193,245,161,105,105,105, 87, 55,109,218,116,253,253,247,223,151, 13, 29, 58,212,229,208,161, 67, 78, 42,149,202, - 83, 44, 22,187,106,181, 90,209,227,199,143,121, 7, 14, 28,112, 15, 11, 11,139, 84,171,213, 55,203,155,247,255, 32,110, 21, 88, -167,206, 20, 89,223, 42, 99,155,165,199,150,244,187,172,253,204,175,255, 38,243,197,124, 67,153,203,160,170,152, 63,166,150, 66, -117,117,112, 19,154, 52,170, 5, 77,238, 87,147, 94,110,229, 72, 71, 84, 35,121, 67,203, 25,222, 33, 62, 62,158, 38, 39, 39,211, -244,244,116,186,119,239, 94,234,238,238,158,167, 80, 40,172, 14,239,224,238,238,158,156,147,147, 67, 27, 54,108,152,225,226,226, - 82, 24,138,192,195,195, 35, 57, 47, 47,143, 54,105,210, 36,195,213,213,117, 21, 10, 70,120,120,123,123,199, 82, 74,169,175,175, -111, 66, 73,124, 6,131,129,186,187,187,155, 66, 36, 8, 28, 29, 29,127,104,220,184,113, 70,114,114, 50,245,240,240, 40, 12,157, -224,226,226,178,188, 81,163, 70,175,165, 91,144,223,216,184,184, 56, 26, 23, 23, 71, 43, 85,170,148, 96,158, 30, 29, 29, 77,163, -163,163,169,183,183,183,213,225, 29, 92, 92, 92,150, 21,205, 75,121,243,232,227,227,147,172, 86,171,105,179,102,205, 94,171, 83, - 31, 31,159,228,252,252,124, 83,186, 69,225, 29,164, 82,233,104,137, 68,146, 32,145, 72, 18,196, 98,241,162,202,149, 43,167,236, -219,183,143,174, 90,181,138, 42, 20,138, 87,225, 29,130,186, 55,173,222,108,216, 44,151,160, 30,159,191, 73,120, 7,133, 66,241, -187,187,187,123,222,129, 3, 7,168, 70,163,161,122,189,158,154,128,119,105,212,225, 38,255,234,244,135,192,195, 17, 11,253,194, - 38,181,148,229, 63,248,186, 46,165,255,251,144,210,227,159, 80,122,118, 26,189,185,113, 20,109,230, 39, 54, 94,153, 90,233, 41, -221, 16,240,139, 69, 33, 25, 54,213,174, 78,127, 8, 60,254,108,129, 95,216,208, 16,207,252, 31,215,175,162, 55,110,220,160, 15, - 31, 62,164, 47, 94,188,160,199,127,221, 71,155, 85,149,189,226,252, 33,240,176, 53, 97, 30, 0, 52, 23,139,197,202,149, 43, 87, -210,235,215,175, 23,114, 30, 62,124,152,202,100, 50, 21, 96,225,168,101,128,208, 31,130,122, 26,214, 7, 92,154,221,222, 38, 55, -253,232, 52, 74, 31,108,163,116, 83, 48,165, 91, 27, 83,186,175, 11,165, 71,134,209,235,171,250,208,230,126, 66, 61,221, 16,112, -145,110, 12,106,111,105, 62, 5, 2, 65,206,193,131, 7,105, 66, 66, 2,189,120,241, 34,189,125,251, 54, 13, 15, 15,167, 49, 49, - 49,244,216,177, 99, 84, 32, 16,228, 3,176,122, 84, 99, 99, 55,248,182,171, 33, 76,188,183,164, 57,165,135, 6,208,212, 93,131, -104,215, 90,138,140, 38,149,248,239,191,193, 72,187,122, 78, 78, 78,105,199,142, 29,163,145,145,145,244,194,133, 11,212,213,213, - 53, 13, 64,240,219,190, 63,219,181,107,119,131, 82, 26,218,185,115,231, 80, 0,191,181,107,215, 46,244,229,203,151,161,141, 26, - 53,186,142, 82, 66, 63,148,198,217,182,109, 91, 29,165,148,118,238,220,153, 2, 72,104,215,174, 29,125,249,242, 37,109,212,168, -145,182,130, 70, 73,242, 0, 12, 19, 8, 4, 63, 58, 58, 58,158,115,112,112, 56,203,227,241, 54, 1, 24,108, 73, 59, 87, 10,167, - 39,128, 32, 0,239, 21, 44, 53, 11,210,184, 17,135,255,165, 9,167, 45,221,177,143, 31,154, 15,175, 74, 46, 12,172,130,220, 1, - 85,160,252,184, 26,185,220,219, 15,239, 91, 59,187,183, 73,104,101,100,100,208,187,119,239,210, 86,173, 90,229,201,229,242,120, - 0, 29,203, 51, 99,184,179,179,243,109, 87, 87,215, 88, 62,255,245, 70,203, 44,189,173,121,186,171,171,235, 85, 15, 15,143,100, - 23, 23,151, 59,197,113, 58, 59, 59,223,246,240,240, 72,118,118,118,190,109,126, 28,143,199,235,236,236,236, 28, 95, 52,157,207, -231,191,239,234,234, 26, 91, 52, 29, 37,204,108,238,238,238, 30,155,144,144, 64, 83, 83, 83,169,143,143, 79, 66, 81, 1,150,148, -148,244,154, 0,179,102,182,244,146,242, 82, 82,122, 73,156, 22,212,169,213,215,221,108,155,191,151,151, 87,202,138, 21, 43,168, -141,141, 77,138,249,182,128,150, 31,127,121,227,153, 50,231,147,233, 63,236,115,169,217,179,118,121,102,138, 7,208, 81, 46,151, -199,183,105,211, 38,239,249,243,231,165, 10, 45,252, 75,102,180,255, 19,231,254,154, 66,186,177,102,115,186,161,230,177,240,121, -190,143,135, 53,150,107, 66, 87,116,166,244,236, 52,122,253,135, 79,104, 83, 63,209, 43, 65,180, 49,240, 4,253,201,191, 37, 93, - 93, 85,100, 17,231,143,213, 66,232,198,192, 19, 97,115,125, 31,127,216,192, 69,187,123,219, 70,250,252,249,115,122,248,192, 46, -218,164, 74,129,200,218, 80,243, 20,253,161,102, 27,139, 56,139, 17, 91, 91,182,108,161,207,159, 63,167,191,252,242,139, 69, 34, -235, 53, 78, 51,161, 53,179,157, 77,214, 39,141, 37,154, 1,245, 68,218, 30,193, 66, 93,135,234, 66, 67, 51, 95,190,177,174, 7, -195,214,116, 1,237, 16, 32,213,208, 13, 1, 23,233,134,154, 29, 45,205,167, 72, 36,138,129, 89, 76,157,162,139, 88, 44, 78, 45, - 73,104,149,117,221, 27,187,193,183,157,191, 56,241,247,133,239,211,110,117, 20,233,150,136,172,178, 56, 1,212,115,118,118, 78, -219,186,117, 43,117,115,115, 75,181, 68,100,253, 29,247,167,157,157,221, 14,165, 82, 25,122,242,228,201,208,118,237,218,133,238, -216,177, 35,244,242,229,203,161, 50,153,108, 71, 73,161, 31,106, 22,105,255,139,114,218,218,218,134,230,230,230,210,147, 39, 79, -210,118,237,218,209, 29, 59,118,208,203,151, 47, 83,153, 76, 22,250,143,122, 54, 57,206,255,174,152,122, 21, 67,235,181,197,106, -161, 85, 81, 23, 2, 0,205,202,202,162,147, 39, 79,214, 74, 36, 18,149, 80, 40,156, 9, 64,248, 95,185, 9,157,157,157,175,186, -185,185, 37,187,185,185,189, 38,246,204,211,157,157,157,239,188,203, 15, 32, 0,127,161, 80, 24, 45, 16, 8,158,154,167,187, 4, -117,111, 90,173,249,208, 57,110,193,221, 63,120,147,124, 2, 16, 10,133,194,153, 18,137, 68, 53,117,234, 84,173, 82,169,124,183, -132, 22,165,160,171,171,138, 76, 98,235,193, 28,223,240,110,181,100,186, 77, 83, 58,208,166,149,139,136,172,173,190, 98,171, 56, - 11,196,214,221,217, 62,225,109,252,109, 12,139,231, 76,166, 77,170, 72, 95, 23, 89,214,112, 22, 17, 91, 50,153, 44,119,222,188, -121, 22, 91,178,254,196,249, 99,128, 15,221, 24,184,227,149,136, 42, 99,249, 33, 96, 51, 93, 27,224,243, 79,185,238,141,221,224, -219,214, 95,252,200, 82, 75,150, 37,156, 0,234, 57, 56, 56, 60,182,212,146,245,119,148, 29, 64,135, 49, 99,198,132,190,124,249, - 50,244,197,139, 23,161,151, 47, 95, 14,237,217,179,103, 40,128, 14,197,197,217,210,245,234,165,169,199, 48,147,203,224,236, 63, -102,204, 24,250,242,229, 75,250,226,197, 11,122,249,242,101,218,179,103, 79, 10,160, 63, 39, 96, 56,161,245, 79, 95,248,127,119, - 39,171, 68, 34, 73,177,183,183,119,177,177,177, 57,150,159,159, 63,129, 82,154,248, 95,234,100, 78, 77, 77,109,102, 77,250,187, - 8, 74,233, 83, 0,190, 69,211, 83, 30, 29,186, 6,224, 90, 5,240,235, 0, 44, 38,132,108,223,184,113,227,154,229,203,151,247, -148, 72, 36,169,239, 84, 37, 78,136,208, 98, 77,181,219, 16,137,150,212,242,146,205,248,178, 51, 37,139, 79, 94,245, 93,218,203, - 53,166, 89, 53,121, 36, 4,236,183, 32,154,155, 24, 22,165,177,146,243, 38,164,250, 37,117, 43,201,102,124,211, 3,228,219, 19, -219,124,151,245,116,138,105, 86,213, 38, 6, 20,223, 66,172,186,102, 21,231,235,215,229, 10, 33,228,131, 21, 43, 86,108, 87,169, - 84, 35, 41,165,231,172, 38, 81, 48, 73,200,211,207,131,158, 87, 11, 20,162, 82, 78,166, 2,195,123,136, 20,252, 99, 38, 19,191, -158, 68,163, 1, 4, 87,240,179,116,183,160, 59,234,159,244,124,159, 34,132, 96,215,174, 93,131, 2, 3, 3,171,134,133,133,189, - 80,169, 84, 59, 41,165,167,204,125,153, 8, 33, 71,190,189,127, 63,111,109, 88,216, 21, 45,203, 94, 41,131,115, 79, 1,231,231, -129,129,129,193, 97, 97, 97,143, 84, 42,213, 10, 74,233, 30,206,117,137,195, 63, 29,127,187,208, 82,171,213,110, 92,181,115,248, -155, 26,252, 68, 0,189,222,217, 2,154,137,173, 6, 62,210, 9, 7,199, 72, 85,160, 36, 14, 2,118,149,213, 34,171, 24,177,213, -200, 87,250,217, 47,163,165, 42, 80, 36,129,226,187, 55, 17, 89,230, 98, 11, 64,149,114, 19,244, 9,211, 1,136, 4, 33, 81,152, -143,146,157,168,231,163,240,179,155,195,219, 17, 91, 0, 78,149,177, 15, 5,112,182, 96,177,132,115, 15, 0, 78, 88,113,224,132, - 22, 7, 14, 28,254,102,177,117, 32,232, 22,210,120, 83,193,160, 10, 96,136, 70,158, 33, 9, 19,162,180,111,200,121, 3,105,100, - 18,120,240,135,200, 16, 1,165, 54, 9, 99,222,128,243, 47,120,147,227,149,239, 84,241,152,199,221, 26, 28, 56,112,248,251, 64, - 8, 25,101, 62,210,208,252, 63, 39,180, 56,112,248,183,227,149,149, 39,174, 96,249,231,114,114,224,192,129,195,127, 76,112, 1, -175,230,100,106, 87,194, 7,227, 25, 43,136,219,149,227,131,244, 12,199,201,113,114,156, 28, 39,199,201,113,114,156,255, 45,206, -178,184,173,209, 31,255, 36,129, 85, 76, 57, 54,153,126,252,173,163, 14, 57, 78,142,147,227,228, 56, 57, 78,142,147,227,228, 56, -255, 43, 11, 3, 14,255,102, 19,101, 9,203, 43, 83, 37, 33,197,239,195,129, 3, 7, 14, 28, 56,112,168,208,247,113,253,130,181, - 71,193, 20, 60, 30,166,109,111,213, 71, 75,230,236,239, 1, 62, 83,135,176, 52, 16, 0, 40, 67,194, 97, 96,239,171,210,158,190, -113,200, 7,133, 87,128, 35,133,104, 63,129,182,111,110,252,147,140, 55,229,171, 29, 96,215,203,205, 89, 49, 40, 41, 61,123,251, -195,240,220, 67,214, 28,107,111, 95,217, 78,226,232,208, 71,163,211,215, 18, 9,133, 49,186,172,156, 77, 25, 25, 17,185, 21, 91, -155, 20,243,231,131, 28, 77,188, 67,132,178,235,140,211, 2, 33, 81,206, 87, 82,101, 98, 40,235,151, 21, 73, 15, 28,232, 67, 1, - 78,100,113,224,192,129, 3, 7, 14,127, 1,234, 3,184, 3,160, 11,165,116, 83, 65, 87, 98,233,206,240,149,131, 67,110, 73, 36, - 82, 63, 0, 96, 41, 5, 75,129,188,156,172,208,196,136, 91, 29, 1,192,197,175,193, 73,129,196,182, 1, 75, 95,109, 55,178,128, - 65,151, 31,153, 29,117,189,161, 37, 57,178,113, 13,248,176, 93,135,118,189,186,118,237, 18, 80,187, 86,237,106, 0,240,224,225, -131,136,163, 71,143, 61,177,113, 13, 56,168, 76,121,242,203,155,201, 14,201, 87,239,189, 87,175,197,237,219,119, 22, 2, 24,247, -166, 53,232,228,100, 51,225,212,255,166,182,108,219,107,185, 28,128, 85, 66, 75,226,232,208,167, 71,183, 78,245,190,152, 56,134, -249,100,234, 55,126,183,174,156, 95,170,240,172,149, 69, 89,253,169,188,228,126,151, 74,155, 56,217, 18,204,159, 79,201,206,140, -223,152, 85, 91,191,114, 80,103, 68,244,163,172,177, 31, 33, 4, 60,145,236,128, 75,213, 22,251,236, 91, 79,201,164, 20,218,210, - 6,105,113,224,192,129, 3, 7, 14, 28,202,141, 99, 5,226,234, 88,209, 13, 37, 10, 45,137, 68,234,119,253,252, 81,199, 95, 46, -199, 2, 0,218,213,119,199,172,175,215,116, 32,132, 60, 1,128,238,159,204,247, 95, 56,115, 34,174, 62, 74, 1,165, 20,245,170, - 59,225,131, 30,125, 45,202,141,212, 61,168, 97,191,143, 62, 26, 56,117,234,231,221,159, 63,127, 30,181,123,247,238, 75, 0, 16, -210,178,101,245,111,190,249,230,163,229, 14,142, 98,169,123, 80,188, 58, 41,236, 86,121, 74, 43,245,170,230, 21, 84,163,206,160, -189, 63,173, 97, 90,119,236, 61, 64,234, 85,109,177, 58, 62, 34,222,146, 99, 93, 92, 92, 38, 9, 4, 2, 59, 0, 96,217, 63,244, - 79,213, 74, 60,119, 0, 48, 24, 89,133,163, 87, 96, 46, 79, 40, 49,138,197,194,176, 92,165,114,123,118, 92,216,143,165,113,106, -244,250,224,207,198, 14,103,238,190, 72,135, 95,112, 8,111,213,226,217, 96,141,122,135,201, 51,191,238,115,251,198, 94, 0,243, - 46,148,247,202,122,121, 53,225,125,181,216,166, 61, 33, 24,230,219,244,227,158, 11,183, 29, 16,188, 87,221, 22, 26, 61,139, 19, -161,233, 77,127,248,238,171,101, 87,126,232,114,132,124,155,188, 17,192,239,148, 82,150,123, 30, 56,112,224,192,129, 3,135,138, - 67, 65,220,198, 77,102,255, 55,149, 41,180, 0,192, 70,202,199,147,151, 73, 0, 0,123, 41, 48, 97,244, 80,164,167,165,250,107, - 13, 44, 62, 30, 58, 24,119,194, 19,241, 36, 50, 21,148, 82,248,123,203, 44,206, 16, 15,236,123, 31,143,248,184,213,201, 83,167, -110,126, 57,231,203,159, 9,121, 21, 13,124,227,166,205, 77,231,206,155, 59,114,240,208,193,237, 15, 28, 56,240, 8, 69,102,198, -182, 20,124,162, 88,179,108,201, 34, 81, 92, 90,126,254,164,169, 51,216,207,167, 76, 90, 5,160,183, 37,199, 10, 4, 2,187,184, -184, 56, 27,134,121,221,125,237,219, 69, 51, 46,182,239,181,252, 89, 84, 76,214,221,147,135, 15, 55, 12, 10, 10, 66, 92,124, 82, -243,165,223,111,168,235, 81,173,225,240,220, 28,117,175,188,212,176, 98,163, 80,139, 5,130, 71, 11,150,254, 80,143,181,175,206, -204, 26,217, 25,193,213, 60, 17,159,146,133,150, 29,187,243, 67,111,221,234, 0,160,188, 66,171,143,150, 77,169,251,205,246, 27, -109,123, 54,243,124,143, 97,120, 80,170,245, 72,205,214,192,200, 2, 33, 53,237,208,105,199,247,252,140, 60,253,135, 95,255, 47, -246,195,107,171,187, 38, 19, 66,198, 83, 74, 15,114,143, 5, 7, 14, 28, 56,112,224, 80, 49, 40,109,212, 33, 3, 0,199,142, 29, - 43,182, 79,201,104,164,120, 18,153,136, 39,145,137,184, 25,158, 10, 29, 21, 96,213,210, 5, 88,177,120, 30, 50,212, 12,126,185, - 26,139,167,145, 73,120, 26,153,132,180, 76,101,113, 10,239,181, 33,154, 43,150,200,234,175, 90,101,183,172, 67, 75,121,107, 71, - 7, 7,135,103,143,126,206,155, 59, 37,185,230,130,207, 98,133, 2,173, 56, 78,110, 35,111,182,127,255,190, 32, 55, 23, 87,185, -141,141, 98,154,220,187,222, 22,123,251,186,118,165,113, 22,133,204,173,102,247,238, 93, 58,189,239,238,238,198,142, 89, 21, 26, - 94,171,102,160,190, 70,245, 26,205,101,110,254,221, 75, 81,162,133,156, 44,203,130, 97, 24, 36, 39, 39, 35, 33, 33, 1, 47, 95, -190,196,211,167, 79, 17, 27, 27,149,204, 82, 42, 48,130,101, 60, 60,188,193,231,139,224, 87,217, 23, 63,172, 90, 44,251,122,254, -172, 70, 18,185,232, 16, 49,243, 52, 55,231,204,207,200, 60,112,252,183, 83,241, 39,118,255, 96, 4,128,148, 76, 37,206,222,122, -142, 59, 97,177,214, 42,230,162,101,175, 28, 31,253, 60,199, 16,121,140,183,112,246,231,177,151, 47, 95,137,202,206,213, 34, 87, -165,131, 42, 95, 15,141,214, 8,189,145,133,175,139, 4,191,206,168,133,195,231,238,187, 17, 66,190,179,166, 62,203,169,236, 57, - 78,142,147,227,228, 56, 57, 78,142,211, 42,148,164, 69,254, 37, 22,173, 77, 69, 23,211,182, 82, 71, 29, 70,196,102,224,201,203, - 36, 52, 8,244, 66,181,202, 30,184,249, 52, 19, 59,207,198, 98,203,201,104,156,189,151, 10,150,175, 64, 82, 14,240, 44, 42, 25, -207,162,211,202,116, 1,226,137, 5,253, 62,251, 44,123,106,237,160,156, 38,231, 79, 76,128,151,203,179,160,233,211,179, 38,240, -196,130,126, 14,149, 20,187,103, 76,157, 60, 72, 33,147,137,180, 26, 45,170, 86,241,149, 76, 28, 63, 97, 56,113, 16,239,182,180, -160,182,222, 65, 14, 98,169,244,199,175,231, 79, 19,127,247,203,179,152, 60, 45,242, 14, 94, 75,126,241,249,140,185, 25,124,129, -228, 7, 91,239, 32, 7, 75,185,244,122, 61, 52, 26, 13,180, 90, 45,116, 58, 29,226, 99, 31,119,255,253,151, 47, 58, 86,169,228, -216, 81, 44,145,128, 2,200, 81, 27,240, 50, 81,133, 54,109,219,243, 26,212,175, 31,108,227, 81,115, 68,113, 92, 89, 89, 81,217, - 44,229, 41,142,254,186,139,183,239,244, 93,252,124,244, 22, 14,157,187,139,155, 23, 78, 24, 40,171, 47,156,166, 66,225, 89,195, - 95,225, 89, 39, 90,225, 85, 55,185,112,241,174,125,187,212, 58,229, 49,180, 77,219,118,103, 70,143,155,120, 94,149,155,158,242, -227,154, 5,241,169, 9, 81,143,197, 66, 98,144,137,121, 80,230, 27,176,237,247, 4,244, 89,124, 15, 97, 49, 74, 80, 74,133,220, -183, 7, 7, 14, 28, 56,112,224, 80,177, 22, 45,179,197,195,124, 91,137, 93,135,249,249,234,200,222,253, 6,195,195,213,221,166, - 71,235, 97,194,208,136, 44,164, 38, 70,227,249,211,135, 80,229,235, 33,116,168, 2, 72,220, 81,217,207, 23,247,159, 28,210,173, - 94,118, 76,201, 26, 52,145, 37,241,245,232,225,233,237,225, 34,103,150, 45,245,185,254,244, 73,102,131, 93,115,182, 98,224, 64, - 27,231,101, 75,125,174, 71,189,144, 51, 50, 9,109, 54,124,232, 0,194, 16,138,233,211,167,162, 71,215, 78,248,120,248, 16,178, -125,251,182, 38,150, 22,148,133, 96,237,204,217, 11, 68,201, 89, 6,237,205,167, 74,141, 76, 46,149, 94,121,166,204, 11,246,243, -145,118,238, 53, 44,225,216,254, 31,191, 3, 48,212, 18, 46,147,192,210,235,245,208,233,116, 0, 96, 4, 0,134,121,181, 78,207, -213, 34, 37, 75,131,228, 44, 13, 12, 70, 22,189,250, 13,149,222,186,125,111, 40,128, 18,252,181, 88, 86,111,208,227,224,233, 59, -136,191,117,128, 37, 12, 47,219,228, 12,111, 18, 89,238,238, 62, 23,187,246, 26,226, 34,146,188,234,134,205,205,211, 96,251,134, -165,165,230,147, 33,132,178, 70, 67,150, 65,175,207,171, 90,165,106,124, 96, 80, 93,201,229,243, 39,187, 95, 57,115, 80,105,168, - 58,196, 62, 34, 42, 17, 60,129, 24, 60,161, 4, 26, 29,231, 12,207,129, 3, 7, 14, 28, 56, 84, 52,138, 78,191, 67, 8, 65,153, - 83,240, 68, 61,186,212, 16, 0, 2, 26,118, 76,183,145,240, 29,249, 12, 65,114, 92, 4,182, 47,159, 4,150,165,232, 60,114, 25, - 20,126,238,144, 10,121,208, 40,211,149,233,207,207, 59,149,174,246,244,237,215,109,140,247,251,116,108, 85,219, 93,187,148, 2, - 0,216,181, 75, 41, 24, 59,166,146,237,250,141,145,126,141, 91, 52, 0, 53, 26,209,181, 71,111,244,235,223, 15, 81, 73, 42,252, -239, 98, 12,242,212, 90,139,230, 87,147,185,212,172,235,234,233,213,233,179, 97,157,228,124, 30, 33, 53,124,237,120,177,169,122, - 3,143, 39, 48, 30,185,149,157,208,171, 87,127,231,179,199,247,189, 47,115,169, 89, 87,149,250,248, 94, 89,124, 26,141, 6, 70, -163, 17, 26,141, 6,122,189, 30,142,206, 85,142,183,239,189, 60, 46, 49, 41,247, 88, 82,102,126,227, 60,189, 1,201, 89, 26,164, -100,105,144,149,167,131,187,194, 1, 6,189,182,118, 41, 23,225,231,158,189, 7, 15, 1,192, 16,198,176, 53, 55,225,241, 83,211, - 54,147,200,234,212, 99,160,203,197,208, 8, 60,191,125, 34,147,178, 6,253,171,138, 99,139,157, 2, 69,226,221,180,160, 94, 65, -121, 4,172,144, 79,244, 60,134, 97,117, 58,165,222,213,213,229,236,133,179,191,117,203, 55,188, 0, 79, 40, 46, 60, 70,173, 53, -114, 79, 3, 7, 14, 28, 56,112,224,240, 23,192,204, 79,235, 88,129,115, 60, 94, 19, 90,166,190,209, 46, 93,186,252, 41,216, 82, -124,114, 6,156,108,248,112,241,244,195,160, 73, 43,240,243,119, 83, 96, 52,234, 65, 41, 96, 48, 90, 54,136,141, 82,193,233,113, - 99,253, 2, 43,251,241, 92, 6, 13,148,169,119,238, 82, 73, 7, 13,148,169,107,213,118,202, 30, 55,214, 47, 50, 55,223,167,185, -193,104,196,149, 71, 41,120, 24,153,141,135, 81, 57,176,145, 90, 30,230,139, 39, 18,142, 93,186,100,177,144,207, 35,228, 81,180, - 82, 25,151,110, 80,242, 4, 2,157, 76, 42,162, 90,202,215, 68,165,209,244,182, 61,135,171,143,236,248,126, 4,128,241, 37,241, -152, 70, 26,154, 44, 89,166, 53,165,148, 18,128,101,137,209, 24,151,150, 15,165, 78,143,228,204, 63,132, 22, 49,148,220,115,170, -240,172,225,111,103,235,248, 27,143,199, 19, 83, 10,232,117,134,143, 20,158, 53, 58,230, 38, 60,123,106, 46,178,174, 63, 74, 64, -196,221, 51,201, 70,157,106,112, 94,114,248,239,150, 95, 92, 80, 30, 15, 44,143, 33, 44, 33, 96, 5, 12,213,130, 82,182,104,142, - 84,156,208,226,192,129, 3, 7, 14,255, 96,148,166, 69,254,233, 48, 89,176,138,181,104,149, 86, 32, 74,129,103,209,105,168,236, -237, 2,239,202,213,240,244,241,253, 63,182, 1, 48, 24, 45,235,142, 58,116, 40, 33,110,229, 74, 59,118,202,148,236,166, 75,151, -250, 92, 27, 59,166,146, 93,173,218, 78,217,211,166,197, 52, 93,185,210,238,218,233,235, 2, 35, 45,136,215,101,138,205, 85, 16, -230,223, 66, 48,141,234, 6, 85,225, 45,216,245, 44,230,247, 7,185, 41, 66,161, 80,239,238, 32, 33, 10, 27, 17,143,199, 8, 68, - 26, 61,163,241, 15,174,207, 59,194,188,138,222, 90,150,208, 42,218,117,152,158, 26,209,253,212,255,166,214,106,221,115,153, 99, -124,170, 26,217, 90, 94, 97,215, 33,143, 33,120,240, 56, 26,224, 9, 31, 22,199,105,171,112, 60,185,123,231,207, 62, 43,151, 46, -130,206, 96,196,184, 41, 95, 98,248,208,193, 39, 21,158, 53, 58,250,248, 5,132, 94, 58,178, 85,214,113,204, 15,136,126,114, 59, -201,160,201,217, 99,141,200, 42, 20, 91, 0, 53, 82,150,201,200,204,177,209, 24, 32, 65, 49,186, 79,163,227, 34, 59,112,224,192, -129, 3,135,127, 38,254,141,226,234, 15,131,199,107,163, 14,139,183,104,149, 6, 95,111, 55,220,120, 24,137,218,129, 85, 96,103, -171, 64,120, 68, 28,120,140, 0, 12, 1,244, 6,203,197, 16,213,233,247,174, 92,105,135,232, 72, 57,179,254,135, 72,191,113, 99, -253, 34, 87,174,180,187, 70,117,250,189, 0, 6, 83,250,106,238, 69, 83,128, 84,163, 21,186,128,178,250, 74,110,142, 50,222,237, - 23,121,233, 12,195,211, 56,217, 73, 88, 39, 59, 49,227,164, 16, 9,132, 2, 30,107,160,140,206,219,213, 47,159,178,108, 93, 75, -248,204,187, 14,141, 70, 35, 8, 97,140, 5, 66, 76, 30,155,174, 70,118, 62, 15,201, 89, 26,100,230,234, 80,195, 75,142, 51,103, - 15,168,140,122,245,174,226,184,120, 2,161, 93, 53, 63,111,204,250,106, 37,212, 26, 35,158,197, 43, 33, 20,139,221,221,220,131, -239, 13,254,116,134,120,226,166, 8,140,120,223, 9, 83, 46, 69,196,171,146, 37, 51,172,185,184, 70,163, 17,234,124,173, 48, 57, - 45,211, 33, 39, 55,207, 86, 42, 17,171, 93, 28,237,210,138,219, 55,159,179,104,113,224,192,129, 3, 7, 14, 21, 14,115, 31,173, -162,176, 72,104,217,200, 36,160, 60, 9, 46,133, 70, 32, 32,168, 14,182, 29,190,137,234,181,155, 32, 49,215, 0, 10,198,226,128, -227,159,207, 80,221, 1,112,167, 71, 15, 79,239, 15, 63,244,106, 79,169,224,244,250, 13,217,113, 0,240,195,158, 86,160, 0, 88, -150,130, 82,128,178,175, 4,151,229,114,146, 31, 29,153,152, 83,217,207, 93,142,176, 56,157, 70, 46, 22, 50, 14,114, 17,207,197, - 78, 36, 20,242,249, 48, 82,162, 73, 76,140,208, 16, 32,202, 18,186,162, 93,135, 50, 27,143,227,109,123, 46, 75,141,138,201,190, - 93, 35, 67, 85, 55, 91, 39, 2,165, 64, 13, 47, 57, 30, 94, 63,102, 76,142,127,254, 76,157,252,100, 67,113, 92, 44, 11,158,206, -192,226,222,139,108,100,229,233,145,165,212,161,121,155,110,194,230,237,186,227,210,195, 52,176, 6, 61,150,110, 62,150,107,164, -250,126,148,134,233,173, 40, 52,115,227,206, 35,239,212,204, 60,177,128,207,207, 10,172,238,251, 82, 36, 20, 24,114,114,114, 68, -175,239,197,131, 92, 42, 66,134, 82, 15, 0,122,238,145,224,192,129, 3, 7, 14, 28, 42, 14, 5, 35, 13,187,224, 85,100,248, 46, -230,226,203,162, 73,165,141, 44,133,179,147, 35, 36,114, 91, 68, 38,235,144, 75, 92,145,169,162, 48, 26, 95, 89,180,216,146, 79, -220,174,184,244, 67,135, 18,226,126,253, 53,117,203,161, 67, 9,102,142,222,127, 88,178, 10,215, 44,181,152,147, 80,227,153,195, - 39,206,103,119,111,236,226,192,240,120,106,161,128,209,240,133, 60,157,144,207,232,133,124, 70,235,102, 43,224,157, 63,178, 71, - 68, 9,206,151,197,153,159,159,143,118,237,218,161,115,231,206,232,209,163, 7,250,246,237, 11,127,255,154,174, 12,143,104, 41, - 97, 89, 23, 81, 46,170,185, 16,240,243, 99,241,251,158,111, 85, 15,175,252,122,207,168,201,239, 70,205,250, 58, 95,227,164,148, -205,200,214, 32, 95,103, 68,166, 82,135,204, 60, 29, 12, 46, 77,241,235,213, 4,168,181, 70, 68,135, 30, 80,167, 38,197, 77,202, - 79,126, 22, 89,198,133, 44, 82,118, 26,247,201,199, 67, 83, 21, 18,230,121, 72,179,134,169,206, 78,142, 6,243, 73,163, 9, 33, -144,216,186,194,193, 94,129,200, 59, 39,112,106,105, 91, 53,128,217,150,212,231, 27,222,112, 28, 39,199,201,113,114,156, 28, 39, -199,249, 95, 66,151, 2, 97,213,165,104, 28, 45, 11, 44, 90, 20, 85, 61,228,168,238, 37, 71,190,206, 21,249, 90, 35,242,242,141, -200, 81,233,144,163,210, 35, 50, 73,133,135,135,223, 60,135,175,172, 88,175,166, 61,166, 20, 0,121, 37,240, 44,181,105,137,116, -218,175, 86, 44,253,230,163, 61,245,235,105, 39,118,241,168,116, 63, 82,155, 64, 8,163,102,120,124,189,163,130, 47, 8, 15,191, -159,122,237,226,241,150, 18,131,113, 72,105, 60, 6,131, 33,219,203,203,171,192, 18,245,135,132,172, 89, 77,218,227,202,177,233, - 85, 90,117, 95,234,242,221,162,169, 42,134, 39,100, 9, 95,248,208,168, 87,239, 86, 39, 63,249,129,150,226, 80,198, 8, 37,143, -111,220, 13,107, 98,239, 88, 9,207,227,243,144,151,111,128,206,192,194,193, 70,136,184, 7, 39,117,145,225,183,247,229,198,223, -219,102,125,157,209, 93,132, 16,239, 78,157, 58,246,110,210,164, 41,111,238,220, 47, 17, 16, 16, 0,181, 90, 13,134, 97, 80,169, -114, 53, 68, 62,189,139,235,199,190, 50,170,210,163, 54, 0, 88, 72, 41, 77,229,158, 7, 14, 28, 56,112,224,192,161,194,197,231, - 40,243,117,153,225, 29,204,172, 59,145, 45,218,117, 3,203, 82, 24, 41,192, 26, 11, 44, 79,236, 31,214, 39,163, 62, 63,242, 77, - 51,200,178,198,155,107, 55,109,233, 92,191, 81, 43, 94,144,143, 13,114,210,147,112,253,202, 57, 3, 88,122,205,146,227,211,210, -158, 42,101,238, 53,122,127,212,231,195,253, 67, 63, 30,147,213,178, 77, 27,185,171,171,187, 38, 46, 62, 78,245,211,142,157,250, -147,199, 15,181,100, 97,232,159,150,246, 76, 89, 26, 79, 86, 86,214,247,197,165,183,109, 81,169, 57,128, 42, 60, 62,209,170, 82, -158,202,173, 41, 91, 90,124,108,175,111,190,154, 31, 53,112,228,100, 81, 85,175,106, 72,201,230, 33, 50, 46, 9,225, 23, 15,105, -226,159,222,250, 37, 39,238,206, 8,107,235, 43, 63,238,154, 73,108,197, 1,248,142, 16, 18,220,169, 83,167,142,239,191,255, 62, - 29, 53,106, 20, 40, 5,126,223, 52,150,102, 68, 94, 63, 0, 96, 54,165,244, 5,247, 24,112,224,192,129, 3, 7, 14, 21,143, 55, -242,209,138, 9,123, 21, 79,235,175, 70,110, 82,202,224,109,219,126,254,250,231, 29,123,154,231,107,181, 94, 20,194, 88,163, 65, -123, 65,105,196, 92, 75, 57, 84, 73,207,110, 59, 59,251,215,250,105,243,218,217, 63,109, 89,223, 10,172, 49,144, 0, 81,148,224, -188, 68,111, 28, 90,150,200, 42, 93,200,229,110,108,223,123,185, 58, 61, 93,249,179,181,199,170,210,194,147,108,220,170, 86,218, -184,234,171,101, 12,195,235, 96, 52,178, 2,214,168,127,110,212,229,127,171, 78,125,114,152, 90, 55,188,178,164,139,252, 8,192, - 35, 66, 72,200,217,179,103, 27, 1,248, 30,192, 5, 74,233,109,238, 17,224,192,129, 3, 7, 14, 28,254, 58, 16, 66, 70, 21, 13, - 90,106,177, 69,235,239, 66, 70, 70, 68, 46,128,137,111,202,147,150,246, 84, 9, 96, 70, 69,231,239,193,211,236,255, 1,248, 95, -121,143, 87, 38,191, 72,133,133, 81,233,223, 80,112, 93, 2,112,137,187,237, 57,112,224,192,129, 3,135,183, 43,184, 0, 11,157, -225, 57,112,224,192,129, 3, 7, 14, 28, 56,148, 46,178,204,215,133,233, 0,138, 29, 57, 96,205,204,220,229, 25,125, 80, 22, 63, -199,201,113,114,156, 28, 39,199,201,113,114,156,239, 30,103, 89,220,214,232,143,127,133, 0,171, 0,247,160, 82, 43,177,162, 43, -140,227,228, 56, 57, 78,142,147,227,228, 56, 57,206,119,143,243, 95, 45,166,138, 88,177, 10, 4,227, 63,203, 71,139, 3, 7, 14, - 28, 56,112,248,187,224,236,236,111, 3, 20,250,245,150, 9,185, 75,144, 27, 0,228,165,134, 37,115,181,199,161, 36, 81, 85,156, -143, 86,185,132, 22, 33, 68,192,240, 69,159, 73,164, 54,195, 8, 3, 91,101, 86,154,215,127, 88,197, 18,255,202,242,241,149, 42, -185,180,137,139, 79,222, 30,254, 66,117,232,109,112,218,184, 85,117, 33, 34,135, 95, 8,171,249, 38, 39,238,225,137, 10, 46,163, - 56, 40, 40,168, 30, 0,132,133,133,221,165,148,106,222,148, 83,238, 22, 48,192,193,214,126,180,142,213, 26, 85,121,170, 31,148, - 73, 79, 15, 84,100,158, 21,158, 53,156,192, 87,108,128,209,208, 6, 20, 60,240,248,247,136, 38,255,147,156,212,176, 82,195, 92, -248,244, 88, 28, 56,226,163, 46,115,182,236, 59,246,117,204,161,153,225, 69,183, 59,126,176, 70, 49, 97, 72,135,233,235,246, 28, - 90,146,118,120,154,146,107, 94,172,135, 79,139,129,246, 6,190, 59, 47,225,252,242,116,107,142,243, 14,104,250, 72, 32, 16,184, -232,116,186,148,248,167,215,107, 89,114, 76,165,192,102,119,120, 60,198,211,104, 96,227, 98,159, 92,125,143,171,253,178, 33,117, -173,218, 20, 6,195, 44, 10, 16, 16,254,138,252,244, 23,231,222,132,207,211,211, 83,106,103,103,215,210,214,214,182,146, 76, 38, -147,100,102,102,170, 51, 51, 51, 99,162,163,163,207, 82, 74, 13,111,163,140,114,183,128,153, 68, 64,230, 21,252, 94,144,151,252, -100,113,233,237,107,224,215,132,161, 51, 11,126, 47, 86, 38,135,207,249, 39, 92, 43,137,123,128, 47,143, 98, 34,143,225, 55, 51, -176,250, 69,170,228,167, 71,172, 57,222,209,209,177, 3,159,207,151,154,254, 27, 12, 6,117, 70, 70,198, 41,238, 41, 40,215,123, -114, 84,209,223,229,182,104, 17, 66,120, 2,177,236,242,192,143,199,213, 90, 50,127,134,100,213,150, 95, 33,177,113, 8,203, 87, -102, 6,253, 19, 11,239, 82,181,241,109, 30,195,243, 54, 79, 51,178,198,184,212, 23, 55, 42,164,209, 13,168, 44, 29, 49,123,218, -224, 41, 3, 62,106,231,219,174,235, 36, 2,160, 88, 81,164,240,105,120,149, 16,166, 10, 67, 0,134, 33, 96, 8, 0,208,132,180, - 23, 55,234,151,151,211, 4, 59,215,106, 85, 68, 54, 46, 23, 91,244, 24,231, 30,122,102,231, 54,185, 75, 80,251,188,212,176,251, - 21,112,227,184, 84,171, 86,173,161,191,191,191,211,132, 9, 19,132, 0,240,221,119,223, 85,175, 94,189,122,122, 68, 68,196,173, -242, 6, 63,149,187, 6, 14,254,126,249,194,159, 63,248,160, 51, 18,210,242,176,116,229,186,214, 54,238,254,125, 43, 74,108, 57, - 56, 84,177,229,219, 58, 60,152, 52,109,161,107,167,214, 13,121,202,124, 3,126,187,120, 55,100,231,186,133, 55,109, 93,130, 26, -149, 38,182, 88, 85,246, 28, 55, 27,218,137, 85,101, 3,192,128,162,219,189,108,244,237, 92,164,198, 78, 30, 98,254, 93, 0, 7, -203,204,139, 95,139,147, 2,177,216,151, 97, 24,152,174, 61,143,188,186,254,122,157, 58, 58,238,241,197,142,255,132,231,196,214, -183,113, 18,120,124, 39,134,252,145, 63, 82,112,159, 18, 74,115, 18,159, 94,114,170,128,251,201,174, 86,117,251,224, 46,205, 91, -252,116,225,101,134,220,167,213,228, 99,132, 50,235,163, 47,174,184,103,209, 75, 69, 34,113, 56,114,228,136, 75,167, 78,157,236, -220,106,245,188, 96,201, 49, 54, 34, 73,208,209,163,135,133,157, 58,117,180,226,254, 12,104, 15,134,217, 65, 0, 1,203,210,239, -120, 44,221,167, 76,127, 26, 97,109, 24, 22,153, 91,224, 8, 6,212,226,118,134, 5,185,173, 74, 14,223, 82,222,250, 21, 72,236, -218, 10,132,194,207,170,248,215,174, 31, 31,245,252,118,158, 50,119,165, 62, 63,235,130,213, 68,122,195, 23,103, 46,133,126,192, - 23, 8, 72,167,182,141,121, 0,222, 72,104,185,185,185,245, 92,179,102, 77,213,166, 77,155,154, 94,230,182,251,247,239,119,255, -234,171,175,228,150, 60, 67, 37,220, 75, 94, 46, 46, 46, 62, 34,145,200, 11, 0,180, 90,109,124,106,106,106, 12,165, 52,190,204, -123,194,189,154, 51, 1,127,225,165,139, 23,249, 0, 16, 18,210,242,107,223,144, 9, 14, 60,161,141,186,216,234,208,230,202, 1, - 76,190,126,227, 26, 1,128, 38,141,155,206,144,187, 4,173,125,155,150, 45,169, 91, 96, 99, 6,152,210,188,101,251, 94,253,250, - 15,102,130,107,248,160, 67,251,247,167, 3,176, 74,104,241,249,124,233,205,155, 55,171, 49, 12,195, 51, 24, 12,249, 77,154, 52, -137,121,147,124,121, 5, 52,187, 74,192, 84,210, 25,180,155, 83, 95,220,254,154, 82,202, 22,213, 15,118,149,234,207, 6,143, 63, -146,101,217,216,156,232, 91,205,222, 53,139, 86,177,245,108, 45, 25,195, 23,125, 54, 96,248,167,181, 38,127, 62, 75, 50,105,213, - 89, 28, 91, 55, 35,237,159, 42,178, 0,128,199,240,188, 79,158, 58,233, 42, 19,241, 0, 0,202,124, 3, 62,232,212,169,204,227, -236,253, 26,159,103, 8, 9, 48, 77,104, 99, 52,232, 36,124,129, 40,159, 0, 0,121, 53,138,192,217,179,242, 89, 15, 15, 71,217, -128,143,218,249,238,216,115, 58, 46, 38, 46,189,196, 70,141, 97,120,222,135, 14, 31,113,245,114,146,128,207, 35, 80,170, 13,232, -212,185, 91,177,179, 60,123,120, 56,118, 25,240, 81, 59,223, 93,123,207,196, 36, 38,102, 28, 43,181, 49,247,240,111, 32,183,115, -251,173,215,232,175,156,242, 25, 71,204, 93,244,189,243,197, 19,187, 46,180,234, 50,152,141,142,142,205,167,132,132,101,102, 36, -126,166, 76,124,254,196, 82, 33,109, 99, 99, 83,213,198,198,166,238, 7, 31,124, 32,153, 58,117,170,160,117,235,214,133,219, 71, -141, 26, 37, 60,127,254,188,199,242,229,203, 59,123,122,122,230, 43,149,202,123, 74,165,242, 5,165,212,226, 25,171,221,221, 93, -198,247,254,176, 27,222,239, 53, 14, 70,150, 96,212,167,147,113,242,196,193, 49, 0, 42, 68,104,233,101,182, 95,141, 28, 61,213, -165, 73,195,122,188,133,187,158, 64, 42,226,163,227,123, 1,100,248,132, 57,246, 91, 86, 47,252, 17, 64,171,226, 44, 89,172, 42, -123, 78, 45,103,109,255,238, 77,171,224,240,110,109,127,239,118,211,193,200,236, 10, 45, 91,213, 62,152,168,112,144, 74,215,120, -218,243, 92,197,198,212, 53,213, 62,152,120, 38,226,196,234,220, 82, 95,126, 98,177,239,238, 93,187,106, 56, 40,132,224, 51, 4, - 60, 30, 1,159,199, 32, 95,107, 68,223,143,250, 87,212,151, 20, 79,234, 90,163, 51, 3, 12,127,245,194,198, 86,117,202,179,227, -214, 92, 19,194, 19, 58, 29, 61,252, 11,223,213, 78, 12, 30,143,128,199, 0, 60,134, 32, 42, 89,141, 17, 35,134,219,189,169, 96, -255,160,185,107,195,243,107, 91,117,108, 82,203,177,206,222,107,196,174,201, 7,253,156,210,242,101,195,246, 28, 58,215,223,167, -229,148, 27,148,178,203, 98, 47,173, 42,245, 75, 90,163,209, 36,119,236,244,129, 45,225,203,101,103,126,253, 63,123,231, 29, 30, - 85,209,182,241,123,182,103,179,155,108,122, 37, 9, 16, 8, 9, 37, 64,232,189, 23, 9,189, 55, 81,164,136, 32, 10, 34,210,164, - 40, 32,130,116, 17, 65,154,244, 42,210,123, 87,106, 2,129, 80, 18, 72,239,125, 91,182,151,249,254, 72,194, 27, 49,101, 3,248, -189,175, 58,191,235, 58, 87,178,187,103,239,157,115,206,156,115,238,243,204, 51, 51, 59,218,243, 56, 4, 38, 11,133,217, 66, 97, - 41,158, 27,181,232,124, 37,224,112, 8,168,149, 98,252,248, 15,208,163,231, 59, 26,171,217,154,106,251, 69,142,179,235,204,133, -223,220,245, 38, 43,190, 91,191,245,171, 66, 69,206, 87,241, 79, 93, 19,237, 61,235, 76,211,100,197,216, 60, 15, 6, 7,180,105, - 74,220,163,137,123, 78,220, 66,131,122,117, 97,177, 22,149, 51,184,154, 4,123, 78,222, 66, 72,112, 72, 81,185,173, 20,117,252, -164,104,214,180, 25, 0,188,150,209,226,219, 57,206,239, 16,254,238,162,222, 67,198,194,195,221, 29, 28,106,234,125,225,228,158, -222,124,177,236,115,147, 86,241, 93,213,238, 24,150,151,247, 5,106,181,190,113,122,137,143,143,143,123,179,102,255, 25,142,209, -108, 54,163, 70,141, 26, 72, 75, 75, 11,126,141,186,100,239,237,237, 29,190,105,211, 38,143, 94,189,122,241,189,188,188, 0, 0, -153,153,153,190,103,206,156, 9,243,241,241,201,206,200,200, 56, 73, 41,213,148,167, 97, 49,113, 4, 28, 30,184,118,118,246, 69, -219, 8,194,153, 49,229,221,134,158,222, 62,101, 70,234,115,114, 50,133, 51, 39, 95, 38, 60,158,160,120,125,112, 40,181,146, 10, -162, 68, 93,249,124,190,184,172,207,140, 92,199,150,148, 47, 27,199,225,114,138, 42,171,217,148,147,159, 20, 81,183, 10,145,184, -250,124,161, 96,227,200, 49, 19, 91, 15, 30,216, 15,222,238, 50, 92,184, 17,133, 15,167, 76, 55,153,141,166, 85,175,117,143,228, -114,121,217,217,217,137,206,206,206, 94,111,126,191, 37, 53,207,159, 61,237,113,225,226,165, 89, 43,215,172,155,228, 83,167,157, -201, 74,233,203,121,140,253, 27,116,230,119,235, 61,212,209,163, 86, 75,187,117, 11,198,241,255,105, 17,173,242,204, 86,149, 79, - 34,161,216, 97,232,151, 51, 63,182,251,122,247, 45,156,220,240, 97,110,161, 34,199,253,229,147,130,204, 57, 82,173, 40, 8,123, -157, 66, 58,120, 4,183, 34, 92,222, 68,194,229, 74, 8,135, 8,173, 22,107,138,217, 96, 88,172,201,141,201,120,211, 29, 96,181, - 82, 28,254, 61,187,106, 59,141,162,246,174,253,191,120,120, 58,137,160, 51, 90, 48,108,196,104,236,220,185,211,193, 93, 38,132, -206, 96,198,138,149, 43, 85,234,196,147, 30,137, 41, 5,105, 93,251, 76, 63, 23,151,144,253, 40, 57, 67,119,160,252,131,192,129, -135, 76,132, 37,251, 98,224, 40,230,195,217, 65, 0, 14,231, 15,243, 18,190,108, 46, 76,207, 40, 80,148,210,220, 93,238, 73,231, - 29,218, 67,230,236,179,119,192,196, 37, 78,177,217, 60, 80, 24,241,194,209, 14, 67,223,155,234, 24,232, 37,134,196,142,235, 20, -159,148,230, 61,227,243,207,111,200, 60,106, 53, 87,100,191,136,175,108,187,171, 87,175, 62,176,119,239,222,246,159,125,246, 25, -223,207,207, 15,219,247, 28, 12,104,215, 99, 72,159,244,140, 44, 63, 74, 41, 60, 61, 60, 82,198,191, 63,228,248,169, 83,167,146, - 82, 82, 82,248,203,151, 47,111,241,203, 47,191,212,171,202,147,169,133, 82,232,244, 22, 88,138,111,144, 57, 10,125, 85, 43, 52, -241,245,245, 21,165,165,165,233, 75,162, 12,164,212, 36,143, 82,223,198, 61,186,116,104,193,219,116, 58, 1,106,157, 5, 18, 59, - 62, 18,178, 52,104,218, 56,148,252,100, 49, 55, 42, 75,243,131,161,225,243, 60,165,180,103,223, 86, 53,225,225,108,143,109,223, - 47,193,177,155,241, 61,179,212, 4,110,125,151, 79,244, 22,241,186,185,219, 11,214,119,108, 90,203,171,115,147, 0,220,109, 90, -203,235, 90,196,179,152,208,161,171, 62, 78, 83,243, 47,228,159,254, 88, 85,246,133,135, 3, 23, 7, 1,182,158, 77,130,189, 29, - 15, 18, 59, 30, 36,162,162,191,165,143,255,107, 61,213,250,212,243,227, 90, 45, 31, 56,250,212,251, 96,248,208, 33, 62, 35,135, - 15,161,224,114,112,240,240,241,126,187,119,239,202,144,122, 5,111,177,112,184, 91,181,233,143, 83, 42,221,167, 28,192, 67, 38, -196,231, 91, 30,193, 81,204,135,131, 61, 31,142,246,124,116,110,232, 14, 46,231,181, 47, 60,206, 31,246, 11,236, 21,181,179,107, -167, 96,127,105,208,131, 23,138,199, 31, 44,190,183,230,138,188,211,167,223,175,174,231,170,150, 27,120,243,103,140,231,165,166, -167,119, 58,120,252,106,103,159,230, 31, 60, 51, 27, 11,231,100, 63, 56, 80,102, 4, 55,229,233,239, 97,213, 90, 13,177, 51,170, - 77, 15, 31, 60, 75,173, 85,160, 23, 33, 58, 81, 9,137, 29, 15,210,146,125,107,199,131,196,142, 15,169, 29, 15,233,169, 9,200, - 47,228,222, 72,115,229,116,162, 87,126,175, 82, 19,149,206,104,193,253,120, 53,170, 7, 55,134,183,183, 15, 12,189, 70, 85,191, -125,233,240,175, 18,239,186,223, 20,102, 60,153, 99,171,206,158, 19,183, 48,107,218,196, 8, 2, 68, 22,223,164,195,230, 47,219, -208,228,171, 89,147,255,240,222,140, 69,235,154,188,126, 36,203,113, 94,231, 1, 31, 45,106,215,109, 0, 84,249, 89,248,253,220, - 1,244,232, 61, 8,163,198,126, 2, 39, 39,183, 21,124, 59,217, 3,147, 78,113,233, 79,215, 92,239,186,109, 67, 27,212,221,237, -235,227,227,103,181, 22,205,242, 65, 41,208,182, 67,103,204,252,116, 60,172,148,162, 81, 88,243,206,189,134,127, 76,105,241,108, - 32,185,121,185,133,207,158, 62,238,170,205,122,122,219,230,125,169,211,153,114,114,114,112,255,254,125,196,196,196, 32, 58, 58, - 26,121,121,121,144,201,100,234, 42,214, 39,199,134, 13, 27,142,188,116,233,146,157,179,179,243,203,247, 13, 6, 3, 28, 28, 28, - 48,114,228, 72,126,247,238,221,125,195,195,195,199, 16, 66,246, 80, 74,149,101,233,104,243, 98,211, 29,189, 66,126,236,208,177, -195, 36, 0, 16, 59,122,199,175,223,126, 60,186,194,115, 77,230, 19,208,186,117,155, 90,160, 20, 4,116,109, 97,238,179,204, 10, -162, 68,146, 91,183,110, 5,114,185, 92,222,127,238, 65, 86,252,176,109,127,200,249,235, 15, 7, 46, 91,241,157,157,163, 68,132, - 28,133, 1,227, 70, 13,176,249, 30,108,239, 21,210,171, 77,155, 14,191,126,181,232, 75,158, 84, 34,193,185,219,113,248,248,211, -207,117, 25,137,143,190,163, 86,254,134,194,236,103,217,111,120,171,124, 43, 61,227,130,170, 73,225,208,183,135,221,135,239,246, -181, 51,152, 44,144, 23,154,160, 55, 90, 96,177, 82, 40, 10, 77,120,156,172,130,155,163,240,117,164,155, 1,112, 7,144, 3,224, -238, 43,175, 81,252, 63,202,120,157, 91, 20, 30,129, 43, 0, 3,128,210, 63, 94,242,186,188,247, 75,190,255, 24, 64,221, 98, 77, - 11,128, 59, 0, 10,202, 50, 91,101, 69,185,120, 39, 79,158,164,225,225,225, 47,175,248,175,190,126, 21,145,128,239, 35,145,185, -131,210, 39, 40, 61,129,177,167,119,181,188,141, 63,254,228, 34,115,118, 77, 82, 20,228, 5, 20,255,200, 5, 91,110, 22, 60,194, - 93,213,161, 99,251,238,147, 62,250, 8,193,129,213, 4, 22,139,133, 62,138,137, 55,237,216,186,237, 61,153, 95,232, 26,101,234, -163,121, 37, 33,200,170,246,114,176, 88, 45,169,175, 70,176, 44, 86, 75,234, 43, 59,227,194,159,119, 24,224, 36, 21,226,199,211, - 9,160, 20, 32,160,144, 73,248,216,119, 37, 21,241, 17, 71,148,189, 27, 41, 11, 71, 46, 91,216,185, 83,175,169,151, 30,191,208, - 29,200,206,214,157,165,148,102,150,167,201, 33, 0,143, 75,224,104,207,135,204, 94, 0, 39,137, 0,164,212, 13,172,116,115, 97, -199, 94, 83,207, 95,250, 45,105, 14,128,156,210,249, 80,165, 53,197, 94, 65,205, 28,157,170, 29, 24, 56,105,185,195,195, 84, 51, -120, 92,160,166,151, 24, 46, 14, 2, 24,204, 4,137, 57,198,226, 51,199, 9, 31,207, 88,228, 50,107,250,164, 83,132,212,107, 64, -233, 99, 99, 69,219,174,209,104,132,163, 71,143,230,155, 76, 38,227,200,113,159,116,207,204,204,233,247,195,218,111, 69, 30, 30, -158,208,232,204,136,136,126, 94,247,171,175, 22,213, 60,126,230,202,209,133,159,127,248,107,207,158, 61,101,251,247,239,183, 86, -182, 63,255,240,132,152,149,251,253,182,221,135,118,174,254,110, 41,158, 37, 21, 96,235,166, 13,160, 22,243,143,149,132,101, 47, -148,250,159,206,153, 51, 71,124,244,232,209,106, 18,137, 68,169,209,104,114,254, 16,143,224, 16, 94, 86,190, 6,110, 14, 66, 8, -120, 28,120, 58,219,193, 67, 38, 2,159, 11,112, 8,177,148,165,185,245,192,201,197, 86,141, 2,199,246, 26,134,111,251,126, 9, -198, 78,153,139, 71,185,194, 51, 28,123,217,226,201,195, 7,206,114, 23, 91,122,250, 56,113, 60, 58, 55,169, 14,137,157, 0,179, -167,142, 70,243,136, 68,143, 52,185,117,110,142,150,219, 24,197,147,117,255,233,184,115,138, 34, 88, 14,246,124,156,217,189, 34, -187, 80,145,163, 40,105,146, 51,232,117, 73, 54,134,164, 47,148,241,100, 59,171, 73,227,134, 75, 38, 77,248,128,211,166, 85,115, -202,225,240,145,171, 50, 16, 74,129, 79, 63,254, 16,147, 63, 28,239,149,146,158, 61,127,195,134, 31,231, 73, 61,234,126,173,206, -126,178,176, 34, 77, 14, 41,138, 2, 73,237,120,144,138,139,140,139,212,142, 7,157,193, 2, 66,192,117, 14,104,162, 32, 69,145, -220,244,188,196,178,159,192, 95,213,116,241,175,127,241,124,188, 67, 72,193,129,130,155, 9,233,209,139, 35,162,178,238, 80, 74, -243,253, 59, 76, 31, 99, 52, 83,168,117,102, 36,100,105, 96, 54, 82, 50,246,157, 0,212, 24, 76,130,151,110,139,220, 73, 8,113, - 44, 49,208,175,106,166,222, 60,168,115, 11, 29, 56,108,245,186, 77,119,191, 91, 50,151,155,171, 48,192, 74, 41,236,132, 92,136, -133,188,226,133, 11,109,161, 2, 27, 54,254,148,105, 6, 25, 72,175, 92, 49, 87,165,126,194, 74, 71, 13,232,213,126, 31, 1,132, -132, 35, 72,245, 9,168, 30,208,165,207,123,118, 93,250,142,134,197,108,152, 37,241, 12,185, 92,152,245,244,162, 45,154, 13,234, -213, 5, 1, 34,213, 89,207, 62, 4, 0,169,103,240,143, 33,193, 33, 77, 94,125,175,118,237,224, 38,182, 28,247, 18, 4, 98,199, - 41,206, 46,238,115,131,235, 55,246, 8, 12,237, 64, 28, 92,171, 33, 33,246, 62,246,110,156,191,203,170, 51, 44,186,120,242,192, -146, 53, 91,127, 25,218,165,231, 0,108,251,225,219,217, 0, 46,253,233, 60,178, 90, 71,237,216,178,217,143, 47, 20,193,100,182, -194,100,161, 69,127,205, 22,228,231, 23,192,100,182,194,206,222, 1,102, 43,129,201, 98,133,201,108,133,222, 96,150,124, 56, 58, -252, 35, 0,183,203, 42,103,181,186, 29,207, 10, 68,162, 0,138,162,185,107, 41,165,224,154, 13, 28,111,111,239, 61, 0, 32, 18, -137, 32, 18,137, 96,181, 90, 17,241, 44,103,138,123, 72,215, 73, 40, 54,120, 22,163, 33,169, 32,225, 70,143,242,182,221,203,203, -171,207,171, 38, 75,167,211, 65,173, 86,227,250,205,187,178, 45, 59, 15,245, 76, 72, 74, 13,180, 82,153,222,193, 35,176, 7,128, - 62,229,237, 79,101,230,211,143,252, 90, 77,224,124, 54,121, 76,237,117, 59, 78,220,137, 61,243,245,236,138,170, 68,205,174,179, - 12,159, 77, 28,212,116,217,218,173,177,249, 55, 54, 78,171,236, 24,241,120, 60,126, 78, 78,206,203,243,123,253, 79,123,155, 70, - 62, 75,235,191,102,245, 26,187,136, 56, 21, 30, 38,164, 99, 76, 87,127,252,225, 38, 80,129,166,212,171,150, 91,173, 90, 33,123, - 54,172, 93,198,139, 77,215,225,251, 35,119,112,233,215, 31,175,103,102,223,238, 73, 51,211,181,175,115, 13,121, 83,163, 85,145, -230,229,168, 92,168,117,102,232, 13,102,152,172, 20, 74,141, 9,217,114, 3,148, 26, 35,212, 90, 51,198,116,243, 47,243,123,149, -248, 17,119, 66,200, 9, 74,105,111, 20, 13, 75, 37, 44,245, 26,132,144, 19,197,229,250,195,235, 89,179,102,205,249,230,155,111, -162, 75,214, 45,121,191,100,221,138,222, 47,245,125,215,217,179,103, 55, 88,182,108,217,210, 86,173, 90,237,251,253,247,223,227, -203, 50, 90, 21, 70,180, 74, 54,230,228,201,147,180,146, 39,138, 64,123, 71, 87,145,163,152,143,154, 53,252,241,254,156,109,110, -142, 46,158,217,118, 66, 30,247,244,233, 51, 46,121, 6, 41, 56, 28,110,161,237, 81,172, 58,173,197, 98,251,147, 43, 87,174,196, -240, 62,237,196,201,185, 38,117, 84,178, 54,171,208, 0,179,135,123, 29,225,226,165,203,164,203,150,175,152,124,226,152, 85, 14, - 96, 69,217, 77,124,205,238,113, 73,169, 28, 44, 66, 64,173,150,212,252,132, 59, 77, 1,224, 77,114,177,212, 58, 19,184,197,185, - 53,132, 0, 26,157, 25, 92, 46,201,150, 63, 59,240,120,228,215,139, 59,239,218,119, 62,157,114,156, 84,133,133, 9,246,197,115, - 14, 86, 16, 49, 32, 80,106, 76,144,217,243,225, 36,229, 67, 38, 17,128, 91,234, 36, 43,105, 46,220,181,247, 92, 90, 82, 82,222, -221, 98,147, 85,174, 38,143,203,137,167, 22,147,142, 82,139, 67,239,102,238,240,112, 18,194,219, 89, 4,145,144, 7,147, 25,208, - 26,172,208, 25, 44, 72,204,214, 66,165, 21, 35,180,195,144,154,174,222,247,244,174, 1,205,142,230, 37,221, 29, 88,161, 57,181, - 88,176, 99,207,161,218,233,233, 89,253, 78, 29,221, 45,202, 81,154, 16,149, 88,136,108,185, 30,224,186, 99,193,210,239, 69, 95, - 76,155,208,127,199,222,195, 73, 93,218,181, 72,170,234,126, 45,204,126,186, 43,180,117,248,143,189,123,247, 23, 71,223, 62,133, -216,251, 23,151,168,179,108,207,207, 34,132,112, 14, 30, 60,104,158, 48, 97,130,106,233,210,165,126,199,142, 29,171,145,147,147, -115, 31,128,201,201,201, 41,164, 78,237,128, 7,231,206,156,246, 13,239, 63,132,159,154,171,133,204, 94,128, 0, 15,123,220,188, -126,214, 36, 20,242,203,204, 55, 41,110, 30, 28, 81,173,235, 23, 56,118, 51,190,103,116,158,221,149,241, 31,140, 73, 58,119,237, - 89,222,250,157,231,190,245,149,154,238,219, 89,115,214,223,107, 90,203,107,214,199,163,241,205,186, 93,184, 26,241, 44,187,144, -227,189, 36, 67,111, 62,191,112,216,204,114, 66,233, 69, 6,219, 65,204, 71,161, 50, 71,241, 60,226,116,157,183, 20,169, 30,115, -238,232, 46, 78,190,202,132,148, 92, 29, 73,207, 87,193, 98,165,112,178, 23,192,108,165,144,231,231,146,221,187,118,226,238,221, -155, 28,112, 57,227, 0, 44,172,176,153,139, 20, 53, 21, 74,237,248, 69, 17, 33,113,209, 95,147,197,138,224,218,181,176,121,253, - 42, 71, 55, 15, 79,180,109,223,201,246, 40,181,107, 64,163,125,219,215,227,202,239,145, 29,175,174,249,190,153,212,199,125,157, - 99,181,122,223,201,106,116,211,233,141, 22, 40,228, 5, 16, 26, 82,208,220, 55, 7, 46,246, 22, 36, 42,189,241, 40, 51, 86, 90, - 89, 46, 84,238,195, 35,247,221, 27, 12,152,119,232,248,165,111,122,116,235,136, 71,137, 74,136,133, 60,216, 9,185,176, 19,114, -193, 39, 22,172,218,248,163,169, 64,161,234,157,251,232,104,238,107,212,207, 11,197, 79,191, 69, 55, 57,207, 64,247, 93,235,230, -253, 60,126,230,242, 30, 61, 7,188, 71, 30,221,189, 60, 7,192, 69,219, 30,244,168, 77,239, 89,173,182,223,227,196,142,238,107, -167,207, 91, 49,181,123,239, 33,224,114,121, 48,153, 76, 56,188,127, 23,182,127,191,224,169, 65,157,247, 30,165,212, 74,136,203, -132, 3,187, 54, 14,153, 57,127, 21,105,208,168,121,139, 50,253, 36,151,108,122,247,131,137,195, 60, 61, 61, 29,254, 19,209,162, -168, 19, 92, 15,189,250, 14,194,217, 95,127,193,227,232, 40, 88,105,145, 97,178, 90, 41,228, 5,121,153,102,147, 97, 71,185, 45, - 30,118,118, 1,219,182,239, 12,226,112, 8,140, 38, 43, 12,102, 43,166,125,244,190,225,195, 79,231,180,237,213,189, 67,180,144, - 11,101, 98,114,134,211,205,200, 39,161, 86,190,212,239,131, 25,171, 4, 58,189, 5, 10,141, 9,167,182,150,239,117,196, 46, 1, -173, 26,181,238,255,193,135, 95,110, 22,137,184, 28, 99,253, 58,126,241, 29, 90,214, 79,241,247,113, 83,125,181,236,251,230, 55, -110, 71,246, 26, 58,242, 3,187, 49, 33, 77,136,143,171,216,225,253,145, 3, 26, 74, 92,253,223, 45,204, 75, 46,119,202, 52,190, -189,179,220,191, 70,109,205,127, 34, 70,193, 71, 8, 69,205, 63,220, 56, 9,226, 53,153,207, 6, 2,128,183,143,191,142, 47,114, - 84, 85,193,136, 80, 0, 88,247,211,222,166, 15, 98,210,199,175, 94,189,198, 62, 34, 78,133,251,113, 10,136, 4, 28, 24, 77, 86, - 16, 27,131,218, 86,202,157, 56,119,246, 44,199,130, 66, 11,174, 68,229, 32,250,222,101,106, 80,235, 70,218,155, 29, 7, 74, 60, -131,223, 5, 80, 11,192, 11, 66,232,166,194, 44,175, 95, 41,189, 82,229, 78, 6, 86,107,209,243,178,204,163, 86, 77, 11, 79,212, -139, 47,148,180, 34,132,214, 39, 20,206, 0, 77,203, 43,190,167,218,234,212, 10,179, 98,176,124,233,124,172,221,242, 11,210,243, -116,144, 89, 82,240,235,214,197,248,236,155, 61,208,234,203,207,106,168,204,143,148,101,140, 94, 53, 92, 37,255,151,172,247,205, - 55,223,244,126,229,216,244, 46,231,152,253,105,189,146,239, 47, 91,182,108,105,169,207, 53,182,154,172,151, 70,171,100,163, 42, -217,184, 58,238,222, 1,191,255,122,244,136,115,129,218, 8, 59, 1, 23,254, 53,106, 99,225,250, 95,221,223,105,234,134, 92,163, - 12,123, 55,127,151,175,211,168,246,219,116,177,240, 12,105,225,224,224,112,234,200,225, 95, 16,232,239, 33,216,125, 61, 63, 33, - 50, 94,251, 50,212,171,204, 73, 18,214,112,212,240, 6, 14, 24, 96,127,241,210,229, 79,203, 51, 90, 92,194,173,246,211,206,195, - 30, 14, 98, 62, 8, 1, 84, 90, 51,198,191, 59,232,205,111, 99,212,202,253,224,189, 49, 32,197, 38, 75,153,151,137, 57, 95,124, -164,147,152, 98, 31, 39, 39, 38,167,117,237,243,217, 69,165,154,232,134,141,254,232,238,227,152,111, 10, 42,175,197,166,212, 94, -225,189, 4, 69,145, 3,128, 75, 8,172,212,154, 21, 92, 67,250,241,159,154, 11, 51,245, 63, 85,102,220, 84,105,207,242, 29,188, - 67, 7,239, 90, 57,229, 39, 31, 79, 15, 87,169, 68, 76,165,246, 34, 82, 63, 36, 72,208,178,101,107, 97,141,224,134,130,235, 79, -180, 72,206,209, 34, 62, 93, 1,145,103, 99,222,240,206,239, 96,215,154, 25, 29, 9, 33,156, 87,147, 20, 95,229,252,149, 91,125, -182,108, 92, 45,202,146, 27,241, 52, 89,141,204, 2, 29, 50, 10,244,200,204,215, 65, 42,230,163,125,223, 9,162,147,191,110,234, -211,165, 93,139,117,175,179,123,227,227, 19, 78, 38,166,101, 12,105, 24,214, 28,187,126,222,222,206,217,185,166, 99, 65, 65,188, -210,214,163,179,120,241, 98,225,178,101,203,120,235,215,175, 87,182,108,217,210,107,246,236,217, 61,178,179,179,239, 84,175, 94, - 61,248,236,145, 29,151, 26,183,239,215, 12, 86,163,123,187, 14,157, 4, 34, 43, 15,231, 78,156, 48, 30,216,191, 59, 79,171, 85, -125, 88,161,225,176,151, 45,206, 82, 19,184,251,250, 70, 75,133,150,110, 60,142, 60, 38,255,244,199, 59, 1, 28,169,245,206,212, - 11,151,239, 61,139,105, 26,145,232,113, 41,226,121,118,190,198, 88,231,197,233,233, 21, 94,120,185,132,128,207,229,192, 65,204, - 3,167,248,170,234,224,219,232, 57, 8,113, 47,137,156, 18,144,226,191, 0, 33, 72,207, 79,138,180, 33,103,131, 80, 43, 5,158, -165, 22, 66,173, 43, 10,205, 87,115,179, 71, 78, 86, 42,126, 88,183, 3,145,247,238,162,251, 59,125,177,225,167,221, 24,255,238, - 16, 93,101,106, 28, 78,113, 68,171, 84, 52, 75, 42,230, 1, 32,144, 23,154,112,248, 70, 10,106,213,228,216,124, 99, 0, 0, 7, -169, 61, 20, 42, 45, 56, 2, 7,188,136, 56,101,127,250,242,237,217,243,190, 94,253,121, 65, 70, 84,242,243,135,215, 17,236,166, - 64, 77, 95, 35,162, 51, 29,113, 47,175, 6,130,107, 7,130, 35,184,107,147,118,110,116,232,242, 95, 57,135,123, 55,109, 92,175, - 85,128,135, 19,180, 6, 75,113, 84,139,139,237,219,118, 34, 49, 33,245,131,220,232,163,145,111,195,209,170,179,226,114,236, 60, -131, 38, 63,188,125, 49,126,192,200,201,240,246,245,111, 84,149,180, 5, 91,222,179,216,104,180,132, 18,231,217, 51,230,175,156, -218, 61,124, 48,110, 93,191,136,251,209, 47,208,162, 69, 51,188,211,127, 56, 84,202,252,144,131, 59,215,116, 3,112,150, 39, 50, - 79,109,222,186, 51,177, 90, 44,136,125,250,232, 69, 89, 90,154,244,167,247, 1, 56,254,161,121,202,189,110, 35,169,204,229,190, -222,104, 65, 90, 90, 42,126,251,253, 74, 88,241,122, 54, 35, 18,112,113, 46, 50, 27, 70,147, 21, 70,179, 21,237, 59,116, 51, 8, - 56,250,118, 75, 86,111,107,153,145,158,193,145, 56,186, 89, 93,124,235, 10,188, 69, 70,253,131, 56,133,192,104,178, 34,208, 71, - 82,161,166,187, 79,237,165, 51,102, 76,171,203, 21,136,161, 42,212, 27, 50,210,211,188, 54,239,189,172,126,242,244,161,111, 53, - 15,153,227,183,107, 54, 9,148, 58,130,108,133, 30,249, 42, 37, 25, 57,113,166,207,150,239,191, 25, 5,192,230,185,105, 9, 69, -205,147,231,174,135, 56, 59, 8,136, 90,103,182,230, 41,141,150,145,253, 59,189, 81,221, 41, 54, 89, 19, 86,175, 90, 99, 31, 25, -167,194,131, 56, 5,236, 4, 92, 8, 5, 28, 24, 76, 86,216,114, 58, 17, 66, 56, 53, 27,116,248,176,117,211, 80,156,189,159, 11, - 46,151, 3,173,170, 64,195, 67, 94, 76,211,142,221,237,155, 52,111,137, 78, 29, 59,224,121,204, 51,255, 19,199, 14,119,185,249, -219,213, 76,169, 71,240, 20,117,246,179, 95,170, 84,207, 53, 26,174, 73,232,245,190,183,111,245, 54, 3,135,191, 47, 11,240,247, - 37, 30,110,174, 48, 83, 30, 38,188, 59,200,230, 51,191,200,152, 3,203,190,158, 13,189,222, 0,119, 39, 33, 40, 5,182,173, 91, - 8,131,193, 0, 31, 87, 17, 20,133,166,114,191, 95,153, 31, 41, 47, 10, 85,197,102,232, 19,101,153,173, 87,223, 39,132,156,152, - 53,107,214, 28, 0,116,214,172, 89,115, 74, 94,127,243,205, 55, 90, 0,233, 21, 53, 29,150, 54, 94,188,210, 27, 87,110,161,132, -194, 96, 55,239,128,155,231,206,158,145, 29,125, 96,197,173, 95,238, 33,188,133, 55, 4, 60, 14,236,101, 62,120,144,160,192,201, - 35, 27,229,191,238,219,148,166,215,235, 87, 84,222,214, 28,212,212, 65,226,120,246,231, 93,251,173,110,174,174,156, 31,206,229, -196,229,169,204, 47,155,180, 98,110, 31,179,222, 59,187,217,155,130,156,177,179,179,171,109, 48, 24,156, 43, 59,176,219,206, 37, - 21, 39,241,146,183,113,109, 5,225,114, 45,187,118,239,130,155,163, 16,122,147, 21,179, 62,255, 68, 59,166,187, 84, 62,114,232, -240,206,157,122, 77,189,196,151, 4, 93,108, 29, 22, 68, 27, 55,110, 44,231,114,185,149,234,229,197,223,249, 83,239,138,144, 26, -246,227,230,206, 28, 51,183,140,230, 66,155, 18,119, 85, 25, 15,111, 0,248, 67,132,132,212,170, 37,220,115,240,215, 79, 6, 15, - 29, 54,207,183, 81,127,105, 66,134, 2, 2, 98, 68,179,186,222,184,124,230, 23,154,154, 24, 51,173, 50,147, 5, 0,217, 57,249, -126,238,238,158,136,140, 87, 35, 45, 79,139,204, 98,147,149, 81,160,135, 74,171, 66,195, 0, 31,200, 21, 10,191,215,222,191,192, - 47,103,207,158, 29,210,171,223, 48, 76,253,124, 81,219,173, 27,191,139,146,122,213, 25,171,206,140,185, 98,203,147, 34, 33, 36, -255,139, 47,190,168,245,211, 79, 63,113, 70,141, 26,165, 13, 13, 13,181, 27, 61,122,116,219,157, 59,119,218,217,219,219,105, 31, - 92, 63, 54,111,220,199,179,250,109, 94,187,184, 81, 65, 65, 1, 49,155, 76,167,141, 5, 5,179, 84,149,152,185,228, 95,103, 63, - 37,245, 22,189,215,173,157,251, 49, 23,123, 78,125, 17, 53, 12, 39,245, 22,237,167,143, 23, 24, 95,156, 94,167, 10, 29,186,234, -227,116,185,117,174,142,227,177,164, 50,147, 5, 0, 28, 46,129,193,108,129,131,152, 15, 14,135, 83, 98,226,189,183,239, 63,109, -239, 46, 19,130,207,229,128,199, 45,138,118,230, 42,141,152,252,126, 63,155,159, 4,204, 22, 10,173,193, 12, 77,241,211,161, 74, -153,139,217,159, 79,199, 59,125, 6, 96,220,135,211, 81,160, 5,238,197,171, 96, 52,153, 42, 61, 41, 56,132, 3,141,222,140,177, -221, 3,144,175, 54,162, 80,107,134,193,108,133,189,144, 7, 62,143, 3,137, 29, 15,142,246,124,128, 82, 65,201,197,132,207,231, -235,140, 70,227,174, 10,142, 19,106,248,121, 66,107,226,160,249,176,239,208,181, 85, 29, 68,223, 56,204,187,122,235, 97,205, 79, - 63,159,139, 79,198,247,193,161,167,181,224,226, 17, 0,169, 68, 12, 19,229, 0,176,109,232, 16, 74, 23, 88,189, 67, 6,142,248, -241,167,109,207,190,154, 63,203, 78, 94, 72, 32, 18,112,113,233,226, 5,220,188,125,111,109, 78,244,209, 93,120,139,240, 41,199, -211,209,209, 17,118, 66, 46, 12, 70,189,193,246,212, 5, 10, 10,132, 73, 61,131,127, 44,126,226, 15,179, 88, 81,198,123,149, 27, - 45,190, 88, 54,107,234, 23,139,151,118, 15, 31,140,115, 39, 14,225,224,161,253,150, 86, 61, 63,224,238,222,190, 17,109,187,246, - 69,219,238,195,112,250,151,157,211,249, 98, 89,189, 9,159,124,249,117,251,206,189,112,238,228, 33,100,101,166,174,180,181,188, - 92, 62,153,218,185, 91, 31,232, 12, 22,180,235,210, 27,103,142,255,242, 49,138, 59, 89,216,126, 19,123,229,250, 12,142,121,250, -180,169,252,108,185,129,159,163, 52, 32, 53, 71,131,132, 44, 13,126,221,183,149,218,126,189, 48, 52,107,223,176, 26,127,194,242, - 75, 41,126,213,188,245,124,189, 86, 28,243, 34, 46,100,220,251, 99,248, 53,107,135,112,178, 21,122,228, 40,244,200, 85,232,161, -214,153, 81,187, 90, 16,199,100, 38,173,170,122,156,221,100, 66,254,134,227,241,112,148,240,209, 58,228,245, 59,218, 90,173,214, -255,152,172,213, 69, 38, 43, 42, 94, 1,145,128, 11,145,128, 3,145,128, 11,179,133,218,244,224, 34,246,168,211,107,242,148,143, -124, 12,102, 32, 79, 97, 0,143, 75,224,225,230, 44,105,214,104, 4,182,125,247, 49, 0, 96,252, 23, 63, 96,220,216,209,168, 91, - 63, 20,242,130, 2,175, 17,131,123,173, 6,240,139,173,101, 61,117,238,138,255,185,107,145, 95, 76,158,177, 64, 58,180, 79, 39, -238,253, 56, 5, 50,242,245,120, 17,163,170, 82,228, 13, 0,204, 22, 43, 40, 40,118,236, 63, 1,177,144,135, 28,133, 17,148, 82, - 44, 94,127, 0, 14, 98, 62, 50, 10,138,154,251, 43,162, 34, 63, 82, 81, 68,170, 10,209,198,222, 40,202,229,114,183, 53,162,245, -205, 55,223, 68,127,243,205, 55,101, 70,200, 74, 76,214,107, 79, 42, 45, 20, 74, 67,220, 92,125,110,157, 59,115,202,225,151, 7, - 22, 92,126,144,135,193,237,170, 65,157,159,140, 21,159, 15,205, 39,160, 6, 14,151, 43,215,107, 53, 71,180,218,194, 37,148, 82, - 99,133, 38,203, 59, 56, 76, 34,118,188,176, 97,243,207,102, 55, 15, 15,236,186,158,159, 90, 80,104, 54,253,167,217,202, 68,238, -157,221, 92,211,108, 53,245,212,102,198, 86,250,120,107,165, 16,124,179,241, 87, 0, 20, 86,171, 21,212,106, 5,223, 78, 42,113, -175,213, 42,171,248, 66,103,199,227, 16, 93,233, 43, 0,181,154, 83,115,226, 42, 14,131, 18, 0, 50,123, 62,246, 95, 77, 3,128, - 44,174, 42,226,201,200,161, 69,205,133, 58,131,157,178,126,173, 90,180, 89,179,102,114,177, 88,252,218, 7,187,170,205,133, 54, - 85,160, 23, 47, 12, 0,150,251, 4,183, 27,208, 67,218,176,185,144, 35, 64,147, 96,111, 92, 62,123,148,222, 58,179,109,188, 38, -235,217,207, 54, 86, 68,168,117, 38,164,231,233,144,150,167, 67,102,129, 14,153,249,122,100, 22,232, 64, 8,129,206,240,102,195, -223, 20,102, 63, 59,184,235,231, 45,125,245, 70, 12,111,223,125, 0,166, 47,216, 16,176,235,199,101, 23,196,158, 33,109,108, 73, -180,165,148, 90, 8, 33,137,239,191,255,126,163,189,123,247,114, 27, 52,104,160,125,242,228,137, 61, 0, 43, 0,163, 84,106, 47, -222,250,253, 55,103,155, 55,111,190, 47, 45,230,233, 37, 0, 5,182,116,207,175,222,241,125, 81,136, 99,254, 4,127, 73,235, 30, -129, 94,246,240,151,168,122,132, 72, 31,172,240,232,242,233,210,236,139,107,178, 51,244,230,243, 57, 90,110,227, 52, 53,223,166, - 92, 65,147, 94,151, 52,112,240,112,112, 9, 7, 70,157, 38,169,164,114,121,200,132, 88,184,251, 41,164,118,124, 56,136,121,144, -138,249,104, 91,207, 5, 85,184,158, 81,147,197, 10,141,222, 2,173,222, 12,157,193, 12, 55, 63,103,252,180,235, 32,146,179,181, -248,245,110, 46,158, 37,169, 16, 84, 77, 2, 74, 43,191, 76, 90, 45,166,194, 62,131, 70, 57,112, 57, 4, 92, 14,225,212, 11,169, -131,124,181, 17, 2, 30, 7, 2, 59, 49, 36, 34, 30, 28,197,124, 8, 4,124,100,103,103, 67,175,215,195,223,223,223,174, 98, 43, - 72,225, 32, 21, 35,168,166, 15,140, 38, 51, 78, 93,123,140, 37,211, 6,162, 91,251,166, 32,124, 41,158,234,195,224,224,226, 0, - 43,135, 3,163,217, 10,131,209, 2,128, 83,110,244,205,223,223,191,179, 68, 34,145,104, 52, 26, 85, 82, 82,210,149,140,167, 71, -146, 61,234,247,159,112,230,220,165, 93,189,223,233,134,200,168,104, 28,250,229,216,245, 92, 87,197,140,146,239, 52,104,208,160, -165,155,155,155, 52, 47, 47, 79,249,240,225,195, 59,175,249,244, 75, 36,158, 33,159,182,106,219, 17,106,121, 54,178, 82, 18,108, -126,138,174, 27,224,128, 47,191,217,208, 36,184, 78,112, 19, 11, 45, 50, 94,245,252, 29,240,217,130,117, 77,106, 5,213,105, 82, -210, 33,164,174,191,180, 98,147, 37,113,236,254,238,132,207,190,233, 59,248, 61, 92, 58,119, 12,171,150,124,190, 75, 34,115,175, -235,226, 44,107,220,160,101,119, 92,191,112, 12,118, 14, 94,112,118,245,106, 59,106,236,148,174,131, 71, 77,196,205,235, 23,176, -118,217,156,157, 22,189,106,143, 45,101,149,122, 6,186, 55,110,214,126,164,131,139, 39,228, 10, 21, 28,156, 61, 80,183, 97,179, -145, 82,207,192, 47,212, 89,113, 57,175,123,174, 91, 41,133,222, 72, 81,160, 54, 34, 37, 71,139,196,204, 34,163,101,181, 86, 33, - 39,200, 98, 37, 82, 59, 30,207,197,244,220,255,225,133, 75, 52,192,207,147, 44,255,250,115,174, 17,118,200,145, 23,153,172, 28, -165, 1, 57, 10, 3,212, 58, 19, 92, 36, 60, 88, 45,214, 42, 63,117, 23,168,141,112, 40,206,163,181, 88, 95, 63, 55,124,227,246, -253,193, 15, 98,210,251,175, 90,181,198,254,126,124, 41,147,197, 47,138,102,137, 4, 92, 88,172,214,226, 59, 77, 37, 6,155,199, -159,218,175, 87, 87,164,228,106,139,122, 45,115, 8,130, 66,155,195, 77,108, 69,151, 97,179, 0, 0,125,122, 21, 13, 95, 18,159, - 81,136,227,183,114,128, 63, 38,118, 87,124, 45,214,106,185,155,119,159,252,244,224,129,125, 50,157,133,135, 77,167, 19,161,209, -155, 97, 39,224, 66, 36,224, 66, 44,224,254, 33, 31,187,114,163, 85,148,115,151,156,107,130, 70,167,131, 82,107, 2, 5,112,231, -185, 26, 90,131, 25,138, 66, 19, 90,134, 56,191,233,179,207, 73, 0,225,175, 26,162, 87,205, 82,169,136, 84, 89,220, 45,173, 81, -178,126,121, 70,174,116,206, 22,128, 42,245,224,226,189,234, 28, 75,191, 22, 74, 93,234,202, 92,221,111,157, 57,125, 66,250,203, - 3, 43,174, 68, 21,153, 44,147, 54, 23, 43,191, 24,145,170,148,231,118,162,148,198,217,250, 99, 18,247,122, 13,197,246,246,151, -190, 93,179,201,232,225,233,107, 61,114, 75,158,173,208, 88,254, 16, 67,180,232,245, 28,106,165, 2, 91, 76, 86,113,147,135,113, -193,199, 3, 96,165, 20, 11,215, 28,196,210, 25,195, 32, 21,143,178, 39,132,216, 23,234,204,152,182,104, 11, 86,126,249,129,131, -189,136, 7, 66, 0,157,193,130,119,135, 15,176,173, 2,234,204,120,113,123,175, 90, 21,127,226, 73,233,230,194, 22,109,223,185, -215,162, 69, 11,185,179,179, 51,196, 98,241,127, 34, 21, 54, 94,180,203,234, 93,152, 45, 71,170,131,131, 67, 7, 71, 71,199,210, -122,133,114,185,252,232,235,212, 66,149, 60,247, 82,102,226,195,230,109, 58,245,193,149,179, 71,233,173,211, 91,199, 87,101,140, - 30,103, 23,231,148,136,135, 47,234, 18,226, 82, 20,209, 42, 54, 89, 6,147, 21, 1,158,246, 72, 73,124, 1, 39,153, 44,197, 86, - 61,123,143,144,126,132, 67, 63, 36,160,219,212,153, 49, 7,139, 77,207, 8,137, 87, 72, 84,244,163,251, 75,122,143,156,202,235, - 62,248, 35,238,143,223, 76,153,131, 87,146, 88, 43,192,248,236,217,179,199, 31,124,240, 65,235,155, 55,111, 90, 0,104, 8, 33, - 38, 46,151,107,111, 48, 24, 4,157, 58,117, 82, 60,125,250,244, 42,202, 72, 90,124,149,118, 99, 15,185, 17,145,234,157, 90, 65, -205, 70, 4, 56,168,186,117,106,215, 10,173,234,251, 33,165, 93, 43, 0,152,154,164,150, 6,183,157,180,117,127, 77,247,106,167, -126,220,126,124,233,248, 97, 93,167,249,244, 89,180, 42,253,248,130, 10, 19, 81,147, 31, 95,233, 81,150,141,231,113, 57,112, 16, -243, 33, 21,243,224, 32,230,195,193,142, 15,147,153, 86,229,201,145,154,204,214,162,136,150,193, 12,181,214,140, 75,247,179,144, -169, 48, 64,174, 50, 66,107,180,128,130, 22, 61,141,218,112, 53,207,142,189,225,244,242,216, 7, 52, 81,108, 94,255,157,227,225, - 27,169, 47,123,244,201,236,133,112,176, 47,234,141,125,237,218, 53,184,186, 86,254,180,111,181, 90,113,232,204, 29,172,218,113, - 9,103,182,205,132,157,128,139,134,253, 22,225,189,254, 45, 96,165, 86,188,120, 22,157, 21, 84,175,145, 39,135, 35, 6,135, 16, -232, 77, 86, 0,180,220,253,105, 48, 24, 92,147,147,147,149,181,107,215,246,242,245,245, 29,204,229,114,169, 8,208, 31,221,151, -175,185,120, 98,143,125,161, 86,111,177, 55, 43,182,213,206,208,134, 7, 5, 5,129, 16, 66,221,220,220, 4,151, 46, 93, 82,135, -134,134,186,191,166,201,226,136, 61,234,172, 29, 55,233,211,193,181, 2, 3,113,112,207, 54, 80, 74, 14,219,250,253,221,199,111, -226,235,217,127,236, 97,248,217,130,117, 77, 86, 46,154,250,135,247, 38,205, 94, 85, 97,175, 67,177, 72, 58, 99,224,136, 9,184, -119,231,119,172, 88,244,217, 62,189, 58,255, 61,147,217, 52, 36, 63, 35,126, 95,205,122, 45, 64,141, 42,156, 59,240, 29,134,141, - 30, 47,234,222,123, 48,110, 94,191,128,165,115, 38,237,214,200,179,223,183,117,252, 47, 43,229,127,216,169, 71,127,190, 86,111, -196,186,229,243, 49,113,198, 18,180,236,220,135,255,232,254,173, 15, 1,124,101,235, 54,235,141, 22,116, 10,117, 43, 50,207, 38, - 43,142,197,115,121,101,213, 64, 30,151,112, 26, 7, 58, 65,107, 48, 67,169, 49, 85,124,163, 18,240, 51,229, 10,101,245,239,151, -126,202, 45,212,153,145,163, 48, 32, 91,161, 71,174,252, 63, 6, 43, 87,161, 71,142,194, 0, 62,143, 32, 38, 46, 9, 28, 62,175, -202,249,121, 5,106, 19,154,215,113, 46, 58, 71, 95,179,117,196,196,115,108,113,230,234,131,129,171, 86,173,182,123,144,160, 66, - 84,188,178, 56,146,197,133,136,207,129,176,248,127,139, 21,168,236, 39,100, 30,181,106,142,249, 96,124, 23, 71,169, 24,233,177, -217,224,113,139,134,136,145,121,248, 65, 38,210, 97,202,164, 9,112,115,117, 66,114,174, 30,107,127,137, 65,212,227,231,176,106, -171,182,217,235, 54,237,235, 57,110,242,103, 78, 28,190, 16, 59,207, 38, 20,149,147,107,193,211, 91,199,117,233, 47, 30, 22,170, -149,121, 20,212, 98, 99, 0,128, 80,179,165,168,186, 45, 93, 56, 11,251,118,252,128,179, 17,217, 47,147,183,110, 28, 94,137, 79, -103, 47, 70,174,210, 80, 92,245, 43,142,100,189,242, 58,167, 84, 36,234, 79,175, 75,153,163,178, 94,147,226,215,134,114, 52, 12, -175,152, 43,195, 43,239, 27, 94,209,123, 80,198,195,255,230, 74,155, 14,255,100,138,156, 61, 26,200, 28,100,191,159, 62,125, 92, -114, 52,138,190, 52, 89, 70, 77, 46, 93, 50,181, 79,170, 82,158,211,189, 74, 38,203,163, 78, 3,145, 68,114,117,222,226,181,122, - 79,223,234,230, 83,247,149,121, 42,157,229, 79, 97, 17,129,189,196, 34,145,185,235,156, 2,194, 86,241,181,134,249, 57, 57,143, - 11, 43,139, 60, 89, 41,197,137,219,153,160,180,232, 17,233,192,181, 52, 20, 63,153,195, 98, 45,106, 86, 57,127, 63, 27,188,226, - 60, 20, 91,195,223, 27, 55,253,160, 12, 15, 85, 20,142, 92,186,240,101,115, 97,203, 70, 69,145, 44, 71, 71, 71, 56, 57, 57, 65, - 42,149,194,150,166,195, 18,202,235, 93,232,224,224,208,225,254,253,251,118,142,142,142,224,114,185,208,235,245,168, 95,191,254, -107,157,232, 82,175,144,201,205, 59, 15,152,211,182,115, 31, 92, 58,115,132,222, 58,179,125, 66, 85, 7, 66, 12,239,218,250,248, -215, 95, 47,172, 57,111,201,247, 34, 7, 59, 30,158,168, 13,224, 16,130, 0, 79,123,184, 74, 56,184,114,116,167,110, 88,159,214, - 54, 15,142,231,231,231,187,107,229,250,205,146,149,203, 22,117,114,240, 13,190,164, 74,123,150, 15, 0,133,153, 79,151,219,123, -133, 60,174,246,251,185, 83,141, 58, 12,128,167, 79, 96,183, 42,132,127, 41, 33, 68, 19, 23, 23, 23, 63,111,222,188,224,101,203, -150, 81, 46,151,107, 5, 32, 90,179,102,141, 38, 54, 54,246, 62,138,186,230,162,178,155, 77,151,110,245,167, 73,133,150,150, 46, -246,156,250,129, 94,246,104, 85,191,168, 85,116, 88,120, 91,248,249,251, 35, 46, 83,211, 56, 95, 99,229,171, 13,220,192, 13,155, -162,238,214,112,227,142, 55,107, 13,143, 81,201, 96,178,229,213,217,146, 4,249,146,104,150,131,152, 15,107,209,141,189, 74, 70, - 75,111,180, 64,171,183, 64,107, 48,163,208, 96,129,198, 96,129,149, 22,157, 19,132, 16, 24,205, 86,216,244,216,252, 74,221,119, -116,113, 67, 96,141,162, 94,178, 14,226,162,161, 30, 28,237,249, 69,125,164, 93, 93,225,225,225, 97, 83, 84,212, 96, 44, 58,197, - 13, 38,235,203,102,125,131,209, 12, 74, 41, 98, 98,158,205, 76,140,143,239, 87, 59,168,118,251,122, 13, 27,185,216,139, 56, 0, - 80,174,209,210,104, 52, 22, 7, 7, 7, 15, 23, 23, 23, 78, 90, 90,218, 75,243, 92,187,113, 39,243, 47, 71, 14, 99,224,192, 1, -234, 39,119, 30,188,236,226,174,213,106, 73,155, 54,109, 28,253,252,252, 56,122,189, 94, 89,181,125, 64,136,196,189, 78,127,191, -144,214, 75,222,125,127, 98,157, 78, 93,123,226,242,197,115,248,245,200,222,159, 11,179,159,217, 60,114,118,112,112,200,159,122, - 29,214, 10,170,243,167, 94,135,213,107, 6, 85,104,180,234, 53,108,214,130, 18, 30,206,158, 56, 64,117, 28,227,164,162,132,119, -114, 96,255,198, 47,191, 26,241,225,236, 90,189,250,142,192,187,163,223, 3,143,199,197,149,243,199,177,114,209,244,147,106, 69, -246, 24, 91,210, 4, 0,128,212,171, 39,168,237, 95,253, 19,255, 90, 13, 16,113,235, 58, 94,196, 60,138,126,112,247,102,253,218, -161, 45,225,238, 19,240, 9,169, 87,111, 25,125,252,216, 88,153,142, 65,167, 75,122,111,204,104,148,238,117,216, 42, 44,216,149, -188,122, 2, 0,208,168,178,141, 91,191,155, 22, 91,210,235,208,106, 52, 36,149,167,171, 40,200, 57,116,229,183,219, 51,250,133, -247,228,228, 42, 13, 69, 17, 44,133,161,120,209, 35,183,228,127,165, 30, 65, 62, 82, 60,139,142,176,234, 20,185,135,171,120, 94, -234,222, 27,210,227,113, 73,221,181, 90, 41, 8,160,171,234,249, 77,249,142, 19,150,175, 88,101,247, 32, 94,141,168, 4,101, 81, - 83, 33,159, 91,100,176,248,156,151,166,171,168, 55,123, 37,209, 33,194, 93, 58,118,204,112,228, 42,141,176, 90, 1, 30,151, 83, -188, 8,144,172, 34, 72, 81,105,144, 91,144,131,248,196, 36,200, 51, 95,128,195,225,192,205,167, 14,108, 13, 63, 90,168,208, 91, - 99,160,161,131,195,219,243,142,252,158, 1,123, 17, 15,122, 85, 22, 78,239,255, 46, 71,175, 86, 46,209,106,212, 71,180,121,177, -233,182,110, 59,135,144, 28,165, 90,231, 41,226,115,113,112,199,247, 24,242,222,164,226,157, 82,244,103,230,220,175, 1, 14, 65, -126,129, 10,132,144,170, 70, 73,239, 86,242,250,117,120, 27, 26, 40,203, 92,253,225, 65,161,252,167, 81,122,250,220,153,227,146, - 27,137, 34,220,121,150, 81,108,178,114,172,139, 63, 14, 79, 85, 41,242,123, 80, 74, 99,170, 84, 2, 14,167,199,176,177, 51,162, - 3,235,212,211, 95,126,164, 78,144, 23,154,202,205,115,104, 53,120, 94,244,189,147,235,123, 41, 76,113, 31, 73,125,234, 91,172, -102,243,114, 77,246,179, 69,229, 52, 29, 10, 23,173, 61,248,178,217,240,139,101, 59,139,254,183, 88, 96,161, 86, 80, 43, 48,229, -203,141, 48, 91, 45,176, 90, 44,176, 90, 40, 76, 22,106, 95, 89,113, 61,124,170, 31, 41,120,122, 32,100,228, 87,127,110, 46,116, -114,114,130,171,171, 43, 92, 93, 93, 81, 98,140,222,180,185,208,209,209, 17, 82,169, 20,215,175, 95,135, 88, 44,134, 68, 34,169, -146,110, 41,147,245, 81,179,142,253,190,239,220,247, 3,156, 63,178,137,222,189,118,124,162, 38,235,217, 22,155, 35,244, 22, 11, - 49,153, 76, 8,239,222, 49, 41, 50,250,249,153,185, 51, 62,236,217,186,247, 68, 81,171, 96, 95,232, 12, 22,164, 38,190,192,149, -163,219,117,117,106,122,159,237,210,174, 69,146,201,100,130,197, 98,169,244, 70,174, 51, 24,115,185,124,177,100,248,240,145,252, -187,119,238, 28,150,122,212, 57,104, 33,156, 7,132, 90, 27, 18, 66, 6, 54,108, 88, 23, 70,147, 21, 26,141,178,160,170,219,172, - 82,169,226,183,109,219, 86,115,204,152, 49,246,245,234,213,227,191,120,241, 2, 43, 87,174,204, 83,169, 84,241,182,106,156,187, -246,108, 13,143, 20,196, 10,173,198, 17, 1, 14,170,110,201,109, 91, 97,120,239,182,216,119,242, 6,174, 92,191,137, 36,181,244, -190,218,204, 59,154,146,148,174,175,239,162, 60,220,183, 85,117,238,193, 29, 5,135, 61, 58,205, 30, 74,169,232, 92,206,149, 5, -133,182,223,196, 1,149,214, 4, 71,251,162,241,158, 74, 34, 91, 92, 66,108,118, 68, 4,136,191,126, 51,162, 65,211,160,122,136, -140, 87, 32, 91,174,135, 86,111,134,213, 74, 97, 5,133,171,131, 16,118, 2, 14,146, 19,227, 97,165,198,132, 42, 94, 46,114, 58, -180,239,192, 3, 8, 8,161, 60, 62,143, 7,138,162,241, 21,197, 98,177,218,195,195,195,166,136,150,209,108,198,192,158, 45,208, -178, 89, 67,244,155, 88, 52,102,230,197,159,103,193, 89,202,199,190, 93, 91,144,124,117,245,174,192,214,147,206, 61,122, 24, 61, - 40, 58,242,247,145,239, 52, 17, 55,246,226,165, 11,202,211, 83,171,213,135, 9, 33, 66,129, 64,208,179,125,251,246, 46,135, 15, - 31,150,187,185,185, 89,133, 2, 65, 78,223, 62,189,173,124,129, 32,191,100,221,223,126,251,141, 63,113,226, 68,135,130,130,130, -228,172,172,172,155,148, 82, 83,197, 15,130, 33, 93,193,193, 94, 16, 98, 39, 21,219, 39,181,234, 58,220,167, 89,203, 22,178,254, - 3,135, 64, 36, 20,225,252,185, 51, 88,183,122,217, 1,117,198,147,177, 85,217,147,111,171,215, 97,106,114, 66,188, 70,171, 15, -109,208,180, 35,185,126,238,232, 84, 66,220, 87,115, 69,142,223,117, 29, 56,169, 86,124,186, 26,235,190,153, 9,103,153, 4, 9, - 47,158,106, 99,159, 60,220,104,210, 41,103,218,106,178, 0,192, 62,207, 50,168,213,232,158,206,122,163, 5,215, 46,157,212, 89, -205,214,158, 55,175,158,122, 81,173, 78, 51,187, 6,205,186, 56,231,254,186,101, 32,128,125,149,233,164, 62,249,115, 4,215, 63, -184,121,194,197, 75, 23,100,158, 1,245,185, 4, 4, 70,189, 14, 57,113,119,205,154,172,167, 74, 69,234, 67,155,122,225,230,165, -224,203,217, 11,190,253,168, 89,211,166, 18, 10,187, 63, 68,176, 74, 12, 86,174,210, 0, 55, 7, 33,180,202, 28,196,222, 61,163, -211,228,112, 43, 28,239,204,108, 40,180,207,205,206,122,217,196,166,206,122,214,178,162,245,115,179,179,132,102, 67,161,125,229, -183, 58, 46, 28, 37, 66, 60, 76, 72,123,153,248, 46,226, 23,229,102, 9,249,220,151,121, 90, 37,215,130, 74,232, 40,176,115, 66, - 90,158, 14, 4, 20, 86,139, 25,102,147, 1, 42,165, 18,105,233,153,200,202,204,130, 74, 37,135,189,212, 25, 13, 26, 55,135,131, -196, 14, 15,174, 28, 0,165,212,166,113, 13, 77,132, 31,220,172,101, 59,209,163,196,162, 92, 44, 59, 62,197,241,189,203,242,212, -202,236,118,170,244,152,216,170, 94,139,205, 22,203,133,168,199,177,245,171,121,215, 32,247, 95, 40,176,235,167,245, 48, 20, 71, - 54, 77, 38, 11, 30, 37, 23, 34, 35, 95,131,228,184, 39,212,106,177,252,107, 38,164,230,149, 31, 0, 4,175, 97,131,186,232, 62, -170, 63,126,248, 97, 35,226,226, 19,173, 75,166,246, 74, 86,171,228,239,216,106,178, 74,207,238, 93,152,249,116,249,216, 31, 18, - 82,143, 69,230,115,180,134,138,231,183,178,115, 15, 64,187,177, 43,207,106, 85,249, 66,139, 94,195, 59,190,107,236,222,178, 52, -139, 28, 52, 12, 75, 62, 27, 6,169,152, 7, 66, 8, 74,154, 11, 55,124, 61, 1,246,162,162,182,101,173,222,140, 81,211, 86, 97, -215,170,233,160, 0, 70, 12,185,161, 41,175,156,165,154,246,170, 37, 37,102,167,117,237,243,217, 69,157, 81,164,239, 61, 96,204, -189,166, 77,155,202,197, 98, 49,196, 98, 49, 28, 29, 29,225,236,236, 12, 39, 39,167, 74,183,189,220,193, 72, 75,245, 46,228,112, - 56,224,112, 56,144, 72, 36,144, 74,165,144, 72, 36, 21,106,150,107,178, 58,244,221,208,165,223, 56,156, 63,178,153,222,189,118, -252, 67, 77,214,179,159,108, 61, 70,197,205, 61, 15, 6, 14, 28, 24, 58,113,226, 68,193,130, 25, 19,207,158, 60,119, 37,230,224, -137,205,125, 10, 10,228,126,148, 82, 56,201,100, 41,195,250,180, 62,222,169, 77,179,164,139, 23, 47, 90,247,238,221,171, 39,132, - 60,172,172,156,185,217,217, 63, 95,188,112,105, 97,187, 14, 29,177,101,199,222, 14,209,143,159,116,120,241, 34, 22,126, 1,129, -168, 81, 51, 8, 26,226,140, 75, 87,175, 67, 45,207,254,217,150,114,190, 18,213, 34, 5, 5, 5,191, 15, 27, 54,172,251,141, 27, - 55, 56,195,134, 13,211,228,230,230,254, 86,242, 28, 85, 94, 52,171,180,230,239, 27,251,231, 0,248,185,122,199,247, 15,164, 25, -229,159, 0, 88,230, 31,224,143, 43,215,111,226,230,141,219, 27,115,237,253, 23,141, 29,245,254,132,234,125,185,227,250,182,170, -206,245,112,182,199,158,205, 43,185,199,110, 38,174, 74,204,179,108, 1,240,181, 45,199,232,229,141, 67,101, 68,155,186, 46, 48, - 89, 40,172,180,232,130,235, 96,199, 47,243,194, 91,150, 38,207, 32, 26,251,225,196,137, 47, 26, 52,108,252,233,168,247, 63, 20, - 52, 14,244,195,157,231,114,128, 16,184,120, 73,144,145,145,129,107,135, 54,155, 11,210,158,110,228,114,173, 95, 85,165, 46,229, - 39, 70,214, 46,181,222,132,220,220, 92, 92,185,114, 5, 37, 6,203,221,221,189, 76,163,245,170,102, 94, 86,250,111, 95,175,216, -212,102,252,187, 3,208,187, 99,125, 92,189,251, 2,134,226,241,154, 74,186,146,199,223,252, 81,248,201,176, 64,195, 71, 3,235, - 40,181, 38, 97,226,151, 9,138,107,165,123,197,190,170, 73, 41, 53, 16, 66,142, 61,123,246,172,109,163, 70,141,170,159, 58,117, - 42, 63,250,246,217,169,165,203,241,217,103,159, 73,127,248,225, 7,123, 74,233,111,122,189, 62,206,166,109,231, 96, 79,196,189, -123,174, 70,147, 21,215,111, 63,168,219,165, 77, 99, 88, 41,112,247,238, 93,108,217,186, 69,247, 48,234,254,119,133, 89, 94, 95, -149,103, 94,202,219,159,150, 55,232,117, 88, 90, 51, 35, 45,241,187,243, 39, 15,237,106,214,161, 15, 70, 78,249,234,171, 43, 39, -247, 46,108,210,174, 55,167,110,179,238,136,184,121, 9, 23, 78,157,249,214,168,206, 95, 88,217, 60,164,229,149, 83, 36,182,255, -184, 94,147, 14, 72, 78, 74, 68, 66,236,163,159,181,121,177,233, 82,175,144,159,211, 83,147, 62,172, 89,191, 13,110,156,221, 55, -181, 60,163, 85, 89,157,247,115, 23,111, 62,117,226,216,240,212,212, 31,189, 10,181, 58, 17,165, 84, 39, 18,242, 50,165,156,242, -123,168,255,249,184, 63, 54, 74, 92,106, 12, 28, 50,234,195,147,235,214,173,230,123, 58,217, 35,179, 64, 7,165,214, 8,149,198, - 8, 14, 33,168,237, 35,129, 70,149,143,171,135, 86,152, 12,234,130, 97,148, 62, 55,150,167, 41,245, 12, 89, 12,208, 41,159, 77, -186, 12,161,204,207,167,102,151, 57, 21, 70,235, 84,233, 81,125, 62,155,116, 60,152, 82,218, 69,234, 25,162, 42,153,235,176,172, -109, 39,164,232,252, 30,217,201, 15, 70,115,209,248, 99,102, 43, 96,177, 90,139,163,124, 0,125,217,158, 79, 42,217,118, 98,221, -127,242, 55,164,103,201,161, 53,152,160, 55,152, 97, 52, 89,192,225,114,225,228,236,132,160, 26, 97,144, 57, 57, 34, 43, 51, 29, - 55, 47, 30, 67, 76,212,213,223, 8,197, 34, 77,118,204, 69, 91,142,145, 64,236, 20,236,237,227,197,201, 80, 26, 32, 22,114,113, -255,234, 41,163,201,160,255,206, 22,147, 85,150,166, 60, 47,127,213,167, 51, 62, 31,177,125,219, 14,175,208,154,142, 72,205,213, - 34, 53, 71, 7,149,206, 84,108,196,172,208,171,115, 17,117,105, 71,166, 69,167, 90,245,175, 55, 90,102,163, 78,117,248,204, 29, -215, 89, 11, 87,112,159,191,136, 51, 45,254, 36, 60, 85,171, 86,246,170,114, 36,171, 20,219, 62,170,177,175,106,223, 40, 30,210, -228,171,196,138,159,191, 95,109, 46,164, 86, 88, 41,197,241,219,153, 47,155, 11,173,197,153,151,145, 47,228, 85,106,218,139,122, -166,218,173,213,102,201,158, 62,255,174, 0, 0,184, 92,238,203,165, 36,151, 74,167,211, 25, 94,167,185,240,213,196,119,171,213, - 10, 71, 71, 71,136,197,226, 42, 55, 73, 74, 60,131,135, 55,235,216,239,251, 46,253,199,227,194, 47, 63,209,187, 87,143, 77,210, -100, 63,219, 92,229, 28,133,130,130,104, 66, 72,236,119,223,125,215,120,203,150, 45, 53,103,204,152, 17,183,243,251,133,235, 0, - 32, 47,175,104, 14,224,200,200, 72, 58,105,210, 36,189, 78,167,139, 47, 40, 40,136,168,172, 3, 4, 0,104,115,236,151,110,217, -176,172, 65, 74, 90,198,128,192, 6,205,225, 94,179, 57,188,106,183, 64,129,202,136, 59,207,211, 17,247,228, 34,158, 92, 63,116, - 74, 35, 53, 47,172,106,153, 27, 53,106,228,199,225,112,106,168,213,106,175,122,245,234, 53,146, 72, 36,145,141, 26, 53, 10,227, -241,120,169,247,238,221, 75,172,138, 86,226,149,237,250,234, 29,223, 95,155,164,114,232, 20,151,169, 9, 75, 82, 57, 68,106, 68, -178,233,217, 23,215,232, 61,187,127,183,138, 26,115,163, 15,238, 80, 30,222,179,121, 37,119,212,132,207, 44,143, 20,206,159,240, -196,194,243,223,188, 23, 90,133,102, 41, 78,198, 71, 99,250,253,103,120,135,226, 72, 86,241,255, 54,133,233,229,242, 7, 10, 0, - 95,136,125,234,127,255,232,147,137, 95, 55,108,214,102,116,251,119,134,113,204, 2, 41,206,254,242, 35,141,143,186,116,144, 71, - 45,115, 53, 54,204, 6, 80,105,115,144,193, 80,169,201, 42,179,185, 39, 69,210,241,224,222,173,239, 29,254,229,200, 55,253,251, -246,115,221,240,229, 80,172,216,116, 20, 18,177, 8,212,106,197,176,206,254,131,159,236,237,209,199,207,211,206,247,240,229,212, -107, 83, 86, 63,250, 66,163, 49,198, 84, 22,137, 41, 54,206,215, 29, 28, 28,114,218,182,109,219, 82, 36, 18,145,220,220, 92,158, -135,135,135, 89, 38,147, 25, 82, 83, 83, 53,122,189,254, 48,165,180,176, 42,219,105, 52, 89,145,144,165,195,175, 71, 14,227,193, -237,139,120,242,228,153,234,201,227, 39,235, 9,143,174, 86,103,198,228,191,206,190,179,150,217,235,144, 86,185,215,161, 69,175, -218,179,115,227,226,206, 26,157,254,189, 70,173,195, 81,189,110, 27,142,209,100,193,195,187,151,113,249,208,234, 21, 6, 85,222, -172, 55, 57,198, 62,213,106, 6, 81,174, 16,191, 95, 57, 9,106,181,110, 4, 0,106,181,110,140,188,113,234,195, 22,189,198,193, -197,163,122, 35, 66, 8,169,234,124,143, 0, 32,224,113, 10, 79, 31,222,254, 75, 66, 66, 2,158, 62,125,138,231,207,159, 35, 63, - 63, 31,123,246, 36, 84,233,248, 20,230, 39,156,151,186, 6,246, 24, 52,116,228,241,193,195,223,181,171, 25, 20,202, 9,174,230, - 12, 87, 41, 15,207,158, 39, 34,230, 94,148,245,217,157, 83, 58,163, 50,187,191, 38, 63,161, 92,227, 39,113,175,231, 73, 56,116, - 86,201,220,133,173, 90,181, 9,254,124,201, 55, 45, 93,221, 61,202,188,142,231,229,100, 11,103, 78, 57, 22,124,243,214,239, 54, -205,117,104,181, 88,242, 38,188, 55,204,202, 45,154, 40, 20, 47,227,212,164,232, 96, 23, 61, 76, 21,189, 79,173,230, 74, 35,248, -239, 15,104, 7,179,213,138, 66,173, 17,202, 66, 61, 20, 42, 29, 50,178,243,240, 32, 42, 10, 87,143, 31,195,139,103, 15,226, 77, - 6,195, 57, 14,135, 28,210,100, 62,187, 90,181,150, 38, 94, 77, 87, 23, 23,196,231,171, 97, 39,228, 33, 49,230,158,190, 80,169, -216,253,186,245, 72,147, 27,147, 33,241, 12,238, 62,108,216,240, 51,157,123,244,149, 53,107,221,213,222,205,209, 9, 2, 30, 69, -108, 66, 58, 34,126, 59, 83, 24,247,224,154,210,100, 80,247,124, 27,179,190,252, 47, 99, 83,175, 67,163,190,176,207,136,126, 29, -142,112,185, 60,161,213,106,214, 27, 13,250, 65,111, 98,178,254, 42, 40,181,164,190, 55, 98,192, 31,158, 13,204, 86, 42, 30, 49, -228,172,182,244,179,130,201, 66,237, 71, 12,249, 77, 83,116, 1, 41, 63,177,239,101,211,222,190,243,169, 73, 73,121,119,243,243, -245,151,223,180, 39, 96,233,185, 11, 43,232, 93, 88, 24, 18, 18,242,210, 92,113,185, 92, 88, 44, 22,155, 47, 68, 2,145,120,124, -231,190, 31,144, 11, 71,127,162,119,174, 28,253, 72,147, 29,179,233, 13,218,153,141, 0,110, 19, 66, 30,205,157, 59,183,153,167, -167,167,231,252,249,243,237,148, 74, 37,127,195,134, 13,186,220,220,220, 76,165, 82,121,147, 82,170,181, 93, 51,194, 4, 96,160, -212,179, 78, 39,122,248,167,110, 78,110,190,221,101,238,213,106,201,115,210,226, 21, 57,233,231, 0, 92, 40, 30, 40,178, 74,132, -133,133, 5,114, 56,156, 97, 0, 26, 72, 36,146,218, 82,169, 84, 68, 41, 13, 33,132, 68, 91,173,214,168,122,245,234,157, 0, 80, -165,227,151,120,101,187,190,253, 71, 91,247,230,107,172, 2, 3, 71,176, 55,241,202,118, 61, 0,100,157,155,161, 1,240,171,103, -167, 89, 3,143,221, 76, 92, 23, 93, 32,155,154,125,121,233,177,170,150, 89,158,114,191,246,219,170,255,218,244,232, 84, 0,239, - 73, 60,131, 87, 62,140,188,185,128, 80,240, 45, 48, 47,214,100,197,222,123, 27,250,124, 62, 95,231,235,235, 91,102,239, 66,145, - 72,164,171,248,152, 95, 49, 3,216, 66, 72,199, 29, 71, 14,236,120,239,232,177, 95,191,105,223,165,191,171, 93,181,106,168,225, - 65,176, 99, 86,147,169, 23, 35,115,238,244,253,252,218, 15,113,233,186, 40, 74,105,149,242, 97, 84, 42, 85, 12, 33,164, 64,173, - 86,247,163,148,166, 16, 66,252, 10, 10, 10,238,155, 76,166,135, 85, 54, 4, 86,140,108,213,170,249, 30, 66, 8,143,154,173,203, -111,242,185,123,117, 25, 79, 82, 95,199, 88,148, 38,180,134, 35,166,205, 95,219,164, 86,237, 58, 77, 74,230, 58,172, 95,221, 1, - 19,191, 88,217,164,122,205,160, 38,255,153,255, 80, 90,217, 57, 73, 9, 33, 99,143,108, 93,126, 45,242,214,229, 57,110,222,213, -171,103,166,198, 61, 73,121,126,255,107,179, 86,113,228, 77,143,115,194,243,232,213, 91,190,251, 98, 70, 70, 90,252,150,194,236, -152, 71, 0, 80,152, 29,243,200,222,179,206,151,185,153,169, 51,242,178,227,190,123,221,125, 81, 88, 88,152,190,123,247,110,167, - 54,109,218,112, 60, 61, 61,145,147,147,131,203,151, 47, 91,173, 86,107, 90, 85,181,212,121,113,151, 9,169,229,242,243,166,239, -151, 11, 36, 14,189,204,102,179, 15,165, 0,143,199,203, 48,104,148,103, 84, 28,201,231, 52, 63,161,146,122,105, 37, 0, 56, 37, -115, 23, 90,173, 86,178,124,221,142, 68,190,157, 67,153,243, 35,154,116, 42,123,171,213,106,243, 92,135, 5, 73,247,106,189,181, -155, 53,165,139, 26, 53,109, 57,199,100, 50,234, 80,148, 47,166, 3,160,163, 20,121, 28, 14,185,202,181,154,206, 42,222,224, 97, -138, 16, 56, 82,194,131,131,152, 7, 2, 2,181, 34,159, 86, 37, 39,171,204,227,157,245, 44,154,144,142, 1,167, 13, 7,198, 92, - 58,127,106,136,197, 98,169, 81, 92,115, 18,244,218,194,131,234, 12,231,159, 41,189,107,198, 63,159,147, 37,102,139, 87,193,137, - 29,131,162,185,125,254,167,201,139,191,211,244,109,234,101,100,229,239,232,209,127, 6, 77, 72,204,190,147,156,169,255,185,244, -180, 58,111,170,153,146,146,115,185,184,185, 80,255,231, 8,197,235,245, 46,124,105,140,117,218,111,215,204, 29, 14,157,182,112, -167, 38, 59,102,199,219, 49,177, 84, 11,224, 42, 33, 68,246,209, 71, 31,133, 73,165, 82,126,110,110,238,109, 74,169,226,117, 53, -213, 89, 49,151, 1, 92, 6, 48,235,109,148, 49, 50, 50, 50,174,113,227,198,187, 56, 28, 78, 13, 74,169, 39,165, 84, 86,108,100, -115,121, 60, 94,218,227,199,143,211, 94,107,219,245, 14,167,213, 6,110,144,153, 58,159,249,147,249,112,245, 56,159,148,111,249, -137, 43,177,251,159,201, 49, 40,204,122, 22, 13, 96,208,219,214,173,104,156, 44,219,235,209,127, 12,215,149,147,219,223,227, 8, -101,139,187, 4,235, 52,221, 63, 77,251,250,250,195,156,219,148, 82,213, 27,212,209, 28,161, 80,168, 37,132,248, 9, 4, 2,173, -193, 96,136,122,173,253, 87,100,242,221,223,230,190,179,130,220,107,210,164,105,149,214,183, 33,146,183,163,120,121,171,168, 51, -159,126,141,226,230,239, 63, 68, 40,178, 98, 22, 3, 88,252, 38,218,119,239,222, 61,254,221,119,223, 41,214,173, 91,231,111,177, - 88,236, 13, 6,131, 70,171,213, 38,164,166,166,254,254,122,199,252,133, 1,192, 39,197,203,107, 68, 93,158,102, 74, 61,235,172, -109,221,170,245, 39, 69, 15,232,116,109,194,213,181,211, 42,250,142,212,179,142,182,244,250, 21,205,117,248, 86,143, 75,118,204, - 70, 0, 27,255,186, 72,133, 53,103,228,224,126, 64,241,192,220, 86,179, 57,231,173,200, 22,157,243, 91,241,154,147,164,255, 19, -160,148,102, 0,216, 92,108,152,233, 95,246, 67,182,230,171, 48, 77,166,201, 52,255, 93,154,182,204, 78,192,246, 39,211,252, 43, - 53,197, 62,245,252, 0,192,150, 73,215,203, 91,159,237, 79,250,175, 73,104,183, 97,127, 76, 40,195,108,217, 54, 96, 41,131,193, - 96,252, 5, 79,123, 86,182, 23, 24,255, 77,108, 53, 88,175,187, 62,227, 95,119, 77, 43, 55, 39,154,160,104, 22,236,178,190,100, -179, 83, 37,132,116,125,141, 66, 93, 96,154, 76,147,105, 50, 77,166,201, 52,153,230,191, 75,179, 50,237,191, 99,164,172,140,136, -214,201,226,230,195,162,129,217,254,170, 5, 64, 87,166,201, 52,153, 38,211,100,154, 76,147,105, 50,205,127,211, 2, 96, 66,201, -255, 28, 48, 24, 12, 6,131,193, 96, 48,254, 18, 88,142, 22,131,193, 96, 48, 24, 12,198, 27, 80, 86,211, 33, 51, 90, 12, 6,131, -193, 96, 48, 24,111,129,138,146,225, 89,211, 33,131,193, 96, 48, 24, 12,198, 27, 80, 18,209, 34,132,120, 19, 66, 38,148,142,112, - 49,163,197, 96, 48, 24, 12, 6,131,241, 22,160,148,102,188, 26,221, 34,148, 82,156, 60,121,146,134,135,135, 19, 0,127,248,159, -193, 96, 48, 24, 12, 6,227,255,131,191,179, 23, 33,132,120, 3, 8, 47,189, 57, 37,195, 59,112, 74,111, 32, 59,204, 12, 6,131, -193, 96, 48,254,155,102,235,239, 88,238,146, 72, 86,169,229,229,164,217, 47,141, 86,120,120, 56, 97,102,139,193, 96, 48, 24, 12, -198,127,139,127,162, 23,225,188,186,129,236, 48, 51, 24, 12, 6,131,193,248,111,154,173,127,210,246,176,225, 29, 24, 12, 6,131, -193, 96, 48,222,128,138,114,180, 72,241, 80,241, 12, 6,131,193, 96, 48, 24,140,215, 51, 90, 19, 74,247, 54, 44,253,154, 69,180, - 24, 12, 6,131,193, 96, 48,222,130,217, 42,243,125, 22,209, 98, 48, 24, 12, 6,131,193,248,107,248, 75, 7, 44, 37,132,116,101, -154, 76,147,105, 50, 77,166,201, 52,153, 38,211,252, 39, 83, 50, 34,124,241,255, 19,138,115,182,254,122,163,197, 96, 48, 24, 12, - 6,131,241, 47, 32,156, 82,186,185, 84,110, 86, 56, 51, 90, 12, 6,131,193, 96, 48, 24,111,145,178, 38,151,102, 70,139,193, 96, - 48, 24, 12, 6,227, 45, 26,172,210,175,153,209, 98, 48, 24, 12, 6,131,193,248,139, 96, 70,139,193, 96, 48, 24, 12, 6,227, 47, -130, 0, 40,179,231, 0,165,244,130,205, 34,175,209,251,160, 50,125,166,201, 52,153, 38,211,100,154, 76,147,105,254,243, 52, 43, -211,174,138,255,248,159, 49, 83,255, 25, 25,254,100,241,223,255, 52, 31, 82, 74,255,178, 5, 64, 87,166,201, 52,153, 38,211,100, -154, 76,147,105, 50,205,127,242, 2, 96, 66,233,191,165, 23,214,116,200, 96, 48, 24, 12, 6,131,241,230, 81,173,210,227,104,189, - 28, 37,158, 77,193,195, 96, 48, 24, 12, 6,131,241, 6,148, 53,172, 67, 9, 44,162,197, 96, 48, 24, 12, 6,131,241, 6,188, 58, -207, 97,233,215,204,104, 49, 24, 12, 6,131,193, 96,252, 5,134,139, 25, 45, 6,131,193, 96, 48, 24,140,183,104,178,254, 20,221, - 42,206,146,199,201,147, 39,105,120,120, 56, 97,187,138,193, 96, 48, 24, 12,198,127,131,127,162, 23,225,148,222,176,147, 39, 79, - 82,118,152, 25, 12, 6,131,193, 96,252,183, 76,214,223,209,139, 16, 66,188, 75,122, 27, 22, 47,222, 37,159,177, 94,135, 12, 6, -131,193, 96, 48, 24,111, 70,120,233,158,135,197,205,135,155,153,209, 98, 48, 24, 12, 6,131,193,120, 11,148,149, 8, 15,176, 28, - 45, 6,131,193, 96, 48, 24,255, 35,252, 19,189,200, 75,163,197, 96, 48, 24, 12, 6,131,193,120, 13, 51, 85, 70, 52,171,164, 41, -145, 25, 45, 6,131,193, 96, 48, 24,140,183,100,184, 94, 29, 37,158, 25, 45, 6,131,193, 96, 48, 24,140,191,192,100, 1,127,241, -128,165,132,144,174, 76,147,105, 50, 77,166,201, 52,153, 38,211,100,154,255,116,147, 85,242,151, 77, 42,205, 96, 48, 24, 12, 6, -131,241, 22, 97,147, 74, 51, 24, 12, 6,131,193, 96,252, 69,176, 73,165, 25, 12, 6,131,193, 96, 48,254,159, 13, 23, 51, 90, 12, - 6,131,193, 96, 48, 24,111,209,100,189,106,182, 88,142, 22,131,193, 96, 48, 24, 12,198, 27, 80, 81,142, 22, 1,208,181,156, 47, - 93,168,130,139,235,250, 26,133,186,192, 52,153, 38,211,100,154, 76,147,105, 50,205,127,151,102,101,218, 85,241, 31,255,171,252, - 97,168, 7, 74,233, 95,182, 0,232,202, 52,153, 38,211,100,154, 76,147,105, 50, 77,166,249,111, 90, 0, 76, 40,249,159, 53, 29, - 50, 24, 12, 6,131,193, 96,188, 97, 4,171,188,207,152,209, 98, 48, 24, 12, 6,131,193,120, 3,216, 56, 90, 12, 6,131,193, 96, - 48, 24,127, 17,132, 16,239,226, 17,225, 75,254,134, 49,163,197, 96, 48, 24, 12, 6,131,241,118, 8, 47,142,106,149,252,101, 70, -139,193, 96, 48, 24, 12, 6,227,109, 81,222, 56, 90,132, 82,138,147, 39, 79,210,226,215, 29,195,195,195,175,178,221,197, 96, 48, - 24, 12, 6,227,255,147,127,170, 23,121, 25,209, 10, 15, 15, 39, 0,174,176, 67,205, 96, 48, 24, 12, 6,227,191,193, 63,209,139, -112, 94,113,146, 29,217, 97,102, 48, 24, 12, 6,131,241,223,224,159,232, 69,120,175,184, 72, 6,131,193, 96, 48, 24,140,255, 10, -127, 87, 47, 66, 8,241, 6, 16, 14,224,100,241,223,151, 67, 62,176,113,180, 24, 12, 6,131,193, 96, 48,222,208, 35, 82, 74, 55, -255, 97,234,157, 18, 19, 86, 60, 84, 60,131,193, 96, 48, 24, 12, 6,227, 53, 40,107,100,248, 18,195,197,140, 22,131,193, 96, 48, - 24, 12,198, 95,101,194,152,209, 98, 48, 24, 12, 6,131,193,120, 67, 67, 85, 42,170, 85,186,249,144,243, 23,255,104, 87,166,201, - 52,153, 38,211,100,154, 76,147,105, 50,205,127,186,201,162,148,110, 46, 89, 74,155, 46, 54, 50, 60,131,193, 96, 48, 24, 12,198, - 95, 4,235,117,200, 96, 48, 24, 12, 6,131,241, 6,188, 26,197, 42,221,116,200,140, 22,131,193, 96, 48, 24, 12,198, 91, 48, 91, -101,189,207,154, 14, 25, 12, 6,131,193, 96, 48,222,128,178,134,119, 96, 70,139,193, 96, 48, 24, 12, 6,227, 47, 54, 92, 4, 64, -153, 61, 7, 40,165, 23,170, 32, 92,229,222, 7,149,233, 51, 77,166,201, 52,153, 38,211,100,154, 76,243,159,167, 89,153,118, 85, -252,199,255,178,193,122,217,148, 72, 41,253,203, 22, 0, 93,153, 38,211,100,154, 76,147,105, 50, 77,166,201, 52,255,173, 11,107, - 58,100, 48, 24, 12, 6,131,193,248,139,176,217,104, 17, 66,220,249,124,254, 28,123,123,251, 31,236,237,237, 55,241,249,252,239, - 8, 33,206, 85,253, 65,169, 84, 58,213,219,219,251,169,183,183,119,106, 64, 64,192, 41, 71, 71,201,167,181,236, 72,123, 66, 8, -255, 45,132,238, 56,132,144, 96, 66,200,167,246,246,246, 79,196, 98,113, 34, 33,100, 23, 33,228, 83, 66,136,219,155,104, 47,246, - 37,131,162, 63,237,127,116,177, 47, 25,244,202,111,134,123,121,121, 93, 39,132,116,127, 91, 7,101,132,132,116, 29, 34, 37,201, - 67,164, 36,121,132,228,245, 7,133,115,116,116, 28,237,227,227,115,211,205,205, 45,205,199,199,231, 55,177, 88, 60,184,138,251, -211,195,203,203,107,133,191,191,127,140,175,175,239,154,226,217,201,255,103,105,111, 71,218,181,178, 35, 57,173, 69, 68,213, 86, - 68,126,104, 45, 34,221,186, 19, 98,255,154,117,169, 45, 33,228,144, 76, 38,187,207,231,243, 79, 16, 66, 6, 22,215,175,129,124, - 62,255,132, 76, 38,187, 79, 8, 57, 68, 8,105,251,154,245,116, 5, 33, 36,141, 16,178,180,248,245,199,254,254,254,170, 70,141, - 26, 37, 54,106,212,104,123, 80, 80,208,187,182,234, 73, 36,146,110,254,254,254,135, 3, 2, 2, 18, 91,183,110,157, 95,173, 90, -181,103,126,126,126, 59,236,236,236, 58,178, 75, 28,131,193, 96,252,151,177, 33, 60,216, 7,192, 55, 0,214, 71, 69, 69, 69, 80, - 74, 35, 40,165, 17, 81, 81, 81, 17, 0,126, 0,176, 12,229,132, 16, 95,125,223,213,213,117,209,226,197,139,117, 25, 25, 25, 52, - 39, 39,135,198,196,196,208,213,243,190,176,246,112,225,209, 64,119,103,141,183,183,247,139,128,106,213,246,213,151,114,190, 0, - 80,171, 42,225, 74, 0,206, 98,177,248,246,188,121,243,212,215,175, 95, 87, 27, 12, 6,181,213,106, 85,167,167,167,171, 47, 92, -184,160,110,211,166,141, 26,192, 52, 0,220,215, 9,129,126,229,131,171,116,235,151,244, 43, 31, 92, 45,253,126, 72, 72,200, 99, -171,213, 74, 7, 13, 26,164, 7,224,251, 38, 97, 85, 95,192,174,190, 35,156, 6, 75,145,101,222,241, 53,165, 27,102,208,193, 18, - 36,191,142,166,135,135,199,175, 83,167, 78, 85,166,165,165, 81,189, 94, 79,147,147,147,233,196,137, 19, 21, 30, 30, 30,187,109, -220,159,174,161,161,161, 89, 55,111,222,180,202,229,114,122,229,202, 21,107,131, 6, 13,178, 0,120, 87, 53,164,236,225,225,177, -217,199,199,231, 84, 85, 22, 15, 15,143, 45, 85, 61, 70, 45, 68, 72, 54, 70, 92,166,244,238, 57,122,108, 80, 43,186,186,105, 53, - 58,208, 69, 40,111, 43,196,199, 29, 0, 94, 21,234,210,144, 14, 29, 58, 20, 62,124,248,208,146,151,151, 71, 31, 63,126,108, 29, - 63,126,188, 14, 64,244,248,241,227,117,143, 31, 63,182,230,229,229,209,135, 15, 31, 90, 58,116,232, 80, 8, 96,156,173,229, 44, -126,184,217,182,112,225, 66, 74, 41,165,139, 23, 47,166, 13, 27, 54,164,157, 59,119,166,106,181,154, 82, 74, 19, 41,165,219,205, -102,243,123,182,104,202,100,178,209, 83,167, 78, 85,107, 52, 26, 90,130,213,106,165,114,185,156,174, 95,191,190,208,203,203,235, - 20, 0, 55,214, 60,193, 52,153, 38,211,100, 77,135,127,105,170,148, 55,128, 9,165,150,151,247,202,202,190, 56,226,139, 47,190, - 40, 49, 85,167,219,182,109,123,231,189,247,222,139,120,239,189,247, 34,218,182,109,123, 5,192,217,123,247,238, 69,204,156, 57, - 51, 2,192,136,138, 14, 4, 0,231,214,173, 91,203, 51, 51, 51,105, 80, 80, 16,173, 94,189, 58,205,204,204,164,148, 82,122,119, - 72, 19,122,177, 46,104,202,181,211,244,220, 47,135,232,120,111, 30,109,231, 45, 51,121,123,121,229,185,185,185, 45, 65,241,156, -140,229, 29, 92, 0, 3,234,214,173,171,138,142,142, 86,199,198,198,170, 23, 45, 90,164,238,220,185,179, 58, 52, 52, 84, 61,112, -224, 64,245,186,117,235,212, 70,163, 81,189,101,203, 22,181,163,163, 99,244,171,102,235, 77,140, 22,143,199, 91, 27, 21, 21, 69, - 95,188,120, 65, 1,172, 40, 79, 19,128,204,201,201,169,167,179,179,243, 52, 39, 39,167,158, 0,100,148, 82, 4, 1,210, 70, 50, -248,127,220, 40, 48,228,196,136,174,181,214,119,109,214,100,176, 3, 71,110,250,126, 6,165,131,252, 95,203,104,201,100,178,209, -159,126,250,169, 74,175,215, 83,141, 70, 67,213,106, 53,213,104, 52, 84,165, 82,209, 17, 35, 70, 40,237,236,236, 6, 84,166,233, -230,230,246,245,181,107,215,204,153,153,153,244,218,181,107,244,212,169, 83,116,195,134, 13, 86, 15, 15,143, 85, 85, 61, 1,189, -188,188,206,159, 59,119, 46, 34, 50, 50, 50,226,246,237,219, 17, 38,147, 41,194,104, 52, 70, 24,141,198,136, 19, 39, 78, 68, 28, - 57,114, 36, 98,255,254,253, 17, 6,131, 33,194, 96, 48, 68,232,245,250,136,154, 53,107,158,169,234, 49,106, 46, 66,138,225,250, - 49, 74, 87, 77,166,138,111, 39, 81,249,244, 94, 52,123, 98,123,250, 67,179,106,180,189, 24,199, 75,215,163,138, 52,249,124,254, -213,196,196, 68,235,236,217,179, 13,245,234,213, 83,140, 29, 59, 86,167,215,235, 41,165,148,234,245,122, 58,118,236, 88, 93,189, -122,245, 20,179,103,207, 54, 36, 36, 36, 88,121, 60,222,133, 42, 24,173,101, 37, 38,235,234,213,171,180, 52,106,181,154,118,238, -220, 57,177, 97,195,134,219,107,212,168, 49,178, 50, 77,169, 84,218,111,214,172, 89,106, 90, 6, 38,147,137,170, 84, 42,154,144, -144, 96,173, 94,189,122, 58, 0, 87,118, 49,103,154, 76,147,105, 50,163,245,151, 25,173, 9,229,189,174,112, 39,206,156, 57, 51, -130, 82, 26, 49,119,238,220,136,226,200,150, 0,128,180,120,225, 1, 24, 62,107,214,172, 8, 74,105,196, 23, 95,124, 17, 1,160, - 79, 5, 70,171,207,193,131, 7,141,107,214,172,161,158,158,158,212,203,203,139,174, 93,187,150, 90,173, 86,154,121, 98, 55,189, - 88, 23,244,201,156, 49,148, 82, 74, 99,150, 76,161, 23,235,130,198,109,252,138,142, 26, 53, 74, 99,111,111, 63,162, 2, 3,227, -210,164, 73, 19,149, 86,171, 85,239,216,177, 67,109,111,111,127, 23, 64, 61, 0,124, 20,245,170,148, 2,120,183, 94,189,122,202, - 71,143, 30,169,247,238,221,171, 6,176,200,198,200, 70, 45, 0,157, 36, 18,201,192, 89,190,252, 88,186,245, 75, 58,203, 19, 15, - 1, 52, 0,224, 94,188,142,207, 23, 95,124, 65, 41,165,212,207,207,239, 90, 57,219, 46, 11, 13, 13,253, 34, 54, 54,118,129,201, -100, 90, 16, 25, 25,185,160, 78,157, 58,179,251,214,244,110,117,116, 68,183, 48,197, 87,147,194,232,202,233,161,223,189,211,188, -235,190, 97, 29, 71,188, 95,195,237,250, 88, 15, 59,205, 80, 25, 87, 53,220,254, 15, 58, 54, 85,108, 95, 95,223,219,201,201,201, - 47,205,149, 74,165,162,105,105,105, 52, 62, 62,158, 94,191,126,157,122,123,123, 95,172, 76,211,203,203,235,113,114,114, 50,221, -184,122, 53, 29,212, 32,132,182,119,114,160, 29,156, 29,104, 83,169, 93, 97, 93,160,105, 85,141,214,253,251,247, 35, 0, 68, 0, -136,200,203,203,139,200,203,203,139, 40, 40, 40,120,249, 30,128, 8,133, 66, 17,161, 80, 40, 34, 12, 6, 67, 68, 96, 96, 96,149, -141, 86, 27, 59,180,105, 97,135,252, 86, 34,104,251,248,186,165, 79,170,233,102,185, 53,162, 21, 45,152,220,153,174, 9,243,165, -109,133,248,216,198,227,222, 71, 40, 20, 94, 1, 48, 3, 0, 23,192,152,158, 61,123,106, 40,165,180,103,207,158, 26, 0, 99,138, -223,255,148,199,227, 93, 0,208,211,150,114, 2,224,212,174, 93,187,176, 36,146, 5,224,247,218,181,107, 23, 54,108,216,144, 54, -108,216,144,250,249,249,169, 0,140,177,245,130, 86,171, 86,173, 24,173, 86,251,210, 0,202,229,114,154,158,158, 78,227,226,226, -104,116,116, 52,189,123,247, 46, 77, 76, 76,164, 7, 14, 28,176, 56, 57, 57,157,100, 23,115,166,201, 52,153, 38, 51, 90,127,157, -209,122,117,249,147,209, 58,113,226, 4,125,229, 75,223,222,187,119, 47, 98,214,172, 89, 17,175, 58,181, 87,197,231,206,157, 91, - 18,245,250,166,130,155,255,150,152,152, 24, 58,102,204, 24, 26, 28, 28, 76,131,131,131,233,123,239,189, 71, 21, 10, 5, 85, 63, -127, 68, 47,214, 5,189, 59,180, 41,165,148, 82,213,147, 72,122,177, 46,104,196,168,214,244,193,131, 7,180, 90,181,106,231, 42, -248,253,227,191,253,246, 91,206,238,221,187, 51, 1,236, 42, 54, 88, 45, 1,172, 21,139,197,219,138,155, 11,171, 3,112, 14, 10, - 10,202,215,104, 52,234, 65,131, 6,169, 1,248, 87,160,217, 33, 56, 56,248,197,150, 45, 91,104,118,118, 54,205,207,207,167,203, -219,212,161,116,235,151,116,113,211,234,214,141, 27, 55,234,103,204,152, 81,232,226,226,114, 2,128,207,160, 65,131,204,148, 82, -218,190,125,251,172,178,244,156,156,156,122,198,198,198, 46,208,233,116, 11,228,114,249,130,252,252,252, 5,199,142, 30, 93,208, -163, 65,157, 49,138,175, 38,133, 29, 29,209, 45,236, 29, 95,231,129,171,186, 55,251, 48,109,246,184, 65,115, 91,215,123,162, 91, -246,201,229, 33, 53, 61, 87,188,206, 1,119,119,119,207,208,235,245, 20,192,159,150, 23, 47, 94, 80, 87, 87,215,228,202, 52, 92, - 92, 92,230,126, 58,124,152,101, 64,117, 95,250, 98,205, 60,106, 58,191,151,154, 78,237,160,207,191,157, 78,251,122,185, 41, 91, - 10, 56,179,108, 45,143,151,151,215,249,219,183,111,255,193,104, 21, 20, 20,148,105,180,148, 74,101,132,193, 96,136,168, 93,187, -246,153, 55,173,248, 45,133, 8,236, 32,230,222,141, 28,211,142,230, 76,234, 76,123,202,248,137,111,112, 18, 13, 7,112, 5,192, -168, 42,126,143, 3, 96, 89,137,161,250,246,219,111, 41,165,148,214,174, 93,187, 16, 0,231, 13,202, 35, 11, 9, 9,137, 31, 55, -110,156,185,110,221,186,217,109,218,180,145,223,185,115,135, 94,189,122,149,158, 58,117,138, 30, 58,116,136, 62,122,244,136,166, -165,165,209,152,152, 24, 26, 30, 30, 46, 7,208,129, 93, 16,217,194, 22,182,252, 47, 47,175,122,145,127, 76,175,195,147, 39, 79, -210,240,240,112,114,242,228, 73, 90,156,172, 43, 3, 96,215,180,105,211,156,101,203,150,173, 44,158,195,135, 52,228,145, 33, 93, -236,249, 15,186,216,243, 31, 52,228,145, 33,132, 16, 66, 41,221,188,100,201,146,175, 27, 54,108,152, 1, 64, 76, 8,241, 42, 39, - 23,172,157,171,171, 43,146,147,147, 33,147,201, 32,147,201,144,156,156, 12, 74, 41,204, 20, 48, 81, 64,111, 52, 66,171,213, 66, -103,165,208, 90, 1,165, 90, 13, 47, 47, 47, 24,141,198,192,114,146,138, 27, 13, 29, 58, 52, 48, 52, 52, 52,103,230,204,153,233, - 0,198, 1,216,246,193, 7, 31,156,255,253,247,223, 67,213,106,117,126,116,116,180,174, 65,131, 6, 61, 1,120,197,198,198,142, - 94,191,126, 61,198,140, 25, 3, 0, 29,202,209,108, 16, 30, 30,126,234,209,163, 71,129,163, 70,141,194,149, 43, 87,176,124,249, -114,228,230,230, 82, 0,208,235,245,212, 98,177, 24, 91,183,110,109, 92,179,102, 77,243,246,237,219,223,174, 89,179, 38, 23, 0, -226,227,227,159,151,163, 89, 39, 32, 32, 0,122,189, 30, 57, 57, 57,120,244,232, 17, 28,100, 50, 68,165,231,122,118, 92,181, 49, -111,206,209,243,252,225,205, 67, 93,166,117,107,163, 95,122,238, 74, 80, 61, 31, 79, 79,131,209,228, 21,147,145,149,254, 58,121, -119, 2,129, 32, 57, 55, 55, 23, 6,131, 1, 90,173, 22, 74,165, 18,121,121,121,200,205,205, 69,122,122, 58, 4, 2,193,139, 74, - 19,233,243,243,175,197,255,118,149, 28,248,241, 91, 4,154,243,193, 59,188, 22,188, 95,127, 64, 45, 67, 14, 54,205,155,232, 96, -112,117, 95, 40,115,116, 44,112,118,118,222, 76, 8,169, 93,153, 94, 88, 88, 24,242,242,242,144,151,151, 7, 87, 87, 87, 56, 59, - 59,195,217,217, 25,114,185, 28, 10,133, 2, 74,165, 18, 65, 65, 65,104,212,168, 17,118,238,220,249, 86,242, 15,111,234,105,156, - 25,150, 73,231,159,165, 67, 32,145,160,166,179, 52,160,185, 3,113,169, 32, 73,189,179, 64, 32, 56,232,234,234,122,142, 16, 50, -153, 16, 34, 33,132, 76,118,117,117, 61,199,231,243,251, 3, 88, 76, 41,221, 93,197, 98, 44, 93,184,112,225, 23,177,177,177,246, - 15, 30, 60,192,204,153, 51,177,104,209, 34, 60,127,254,252,123, 74,169,181,248,119, 63,114,115,115, 59,193,229,114,127, 34,132, -244, 34,132,244,244,241,241,233, 82,137,110,255, 25, 51,102,232,154, 52,105, 18,243,228,201,147,254,191,253,246, 91,211,233,211, -167, 43,146,146,146, 16, 19, 19, 3,111,111,111,248,249,249, 65,173, 86,163,160,160, 0,253,251,247,151, 57, 58, 58,142, 96, 89, -169, 12, 6,227,127,149, 87,189,200,223,137, 87,199,209, 42,253,186,204, 94,135,246,246,246, 11, 35, 34, 34, 90, 53,108,216,144, - 7,224, 0, 0,132,114, 49,184,127,235,198,219,142,110,254,182,225,145, 53,243, 26,246,104, 24,180, 45,148,139,146, 94,108, 39, -154, 54,109,234, 28, 17, 17,209, 90, 36, 18,125, 92, 94,222, 61, 0, 56, 59, 59, 67, 38,147,193,201,201, 9,206,206,206,176, 90, -173, 80,107,116, 40,180, 0, 42,157, 1, 10,133, 2,170,226,215,106,189, 17,133,133,133, 47,191, 91, 6, 29,199,141, 27,151,179, -126,253,250,236,140,140,140,111, 1, 52, 24, 51,102, 76,191,117,235,214,225,210,165, 75,186, 94,193,181, 92,151,180,107,252,117, -189,140,231, 11,130,249, 24, 15,224,218,181,107,215,208,186,117,107, 16, 66,134,149, 37, 40, 22,139,127,216,183,111,159, 56, 58, - 58, 26,181,106,213,138, 30, 54,108,216,144,111,191,253, 54, 80,162,206,191, 1, 0,230,188,204,232, 41, 83,166,124,185,100,201, -146,156,156,156, 28,163, 70,163,241,232,219,183, 47,146,147,147,145,150,150,246,123, 57, 38, 51, 38, 50, 50,146, 42, 20, 10,196, -197,197, 33, 50, 50, 82,252,229,151, 95, 54,183,112, 56,253, 82,225,240,254,152, 54, 77,155,143,106,217, 24,187,111, 62, 16, 92, -127, 22,239,212,180,186,175,243,253,148,140, 26, 38,130, 23,175,115,192, 85, 42,213,218,175,191,254, 90,173, 86,171,145,154,154, -138,135, 15, 31,226,201,147, 39, 72, 76, 76,196,242,229,203,213,249,249,249,235, 42,211,240,177,227,125,182, 98,250, 7,132,247, -248,119,224,193, 85, 64,163, 2,180,106,232,159, 70, 96,251,211, 76,108, 56,252,139, 48, 41, 57,217,105,255,254,253,227,252,253, -253, 35, 8, 33, 65,149,117,186, 0, 0, 14,135,243,106,229, 4,135,195, 81, 1,200,148, 72, 36, 41, 14, 14, 14, 41, 28, 14, 39, -147, 82, 90,248, 54, 42, 63,199, 12, 35,184, 92, 64, 40, 6,135,207,171,232, 36, 25, 50,108,216,176,125, 41, 41, 41, 61,226,226, -226, 90,173, 91,183,238,107, 59, 59,187,168,117,235,214,125, 29, 23, 23,215, 42, 37, 37,165,199,176, 97,195,246, 17, 66,222,173, -202,239,215,174, 93,123,202,130, 5, 11,176,124,249,114, 52,106,212, 8, 65, 65, 65,154,133, 11, 23,174, 5, 48,143, 16,242,113, - 80, 80,208,141, 41, 83,166,140,205,206,206,246, 74, 77, 77,109,244,253,247,223, 79, 92,187,118,109,179,244,244,116,187, 74,164, -219,118,239,222, 29,167, 79,159, 6,128, 12, 74,105, 92, 94, 94,158, 57, 61, 61, 29, 33, 33, 33,104,222,188, 57,212,106, 53,212, -106, 53,228,114, 57, 2, 2, 2, 96,181, 90, 91,177, 75, 57,131,193, 96,252,255, 25,174,114,141,150,157,157,157,115, 88, 88, 24, -106,214,172,233, 92,156,139, 5, 87, 33,111,246,180,113,195,237,165, 17,103, 64, 34, 47, 98, 88,187,250,246,174, 66,222,236,226, -175,240, 2, 2, 2, 68, 97, 97, 97,144, 72, 36,190,229,252,254,149,204,204, 76,132,133,133,193,201,201, 9, 50,153, 12, 97, 97, - 97, 48, 26,141, 80,168, 84, 40,180, 0, 26,147, 21, 10,133, 2,249, 57, 89,208, 88, 0,179,131, 43, 18, 19, 19,193,229,114,227, -203,209,244,174, 85,171, 86, 78, 84, 84, 84, 14,128,107, 0, 62, 92,180,104, 17,102,205,154,133,249,243,231,239,179,207, 72,232, -190,239,244,175,174,123, 22,126,228, 30, 36, 36,195, 1, 24, 83, 82, 82,224,228,228, 4,137, 68, 82,166, 49,104,223,190,125, 19, -137, 68,130, 29, 59,118,208,212,212,212, 54,148,210, 67,148,210,120, 66,138,204,158,152, 3, 5,165,116,109, 68, 68, 68,139, 47, -191,252,242, 89,215,174, 93,249, 45, 91,182,196,226,197,139, 1,224, 68, 89,154,114,185,252,214,187,239,190,107,184,124,249, 50, -158, 62,125, 42, 57,122,244,232,224,197,139, 23,215, 79, 74, 74, 18, 29, 63,117,230,157, 93, 41,202,193,223,158,187,110,183,228, -236,149, 91,110,142,146,122, 53,220, 92, 16,153,148, 38,176,112,113,167,178,131,218, 82,192, 27,215, 73,204,143,108,111,199,205, -232, 36,230, 71, 52, 23,240, 62, 80, 42,149,251,143, 29, 59,118,118,250,244,233,234,236,236,108, 56, 56, 56, 32, 47, 47, 15, 75, -151, 46, 85, 71, 70, 70, 30,214,235,245,199, 43,211,181, 88,105, 19,191,234,254,192,139,168,151,239, 25,173, 20,119, 12, 2,244, -254,240, 19, 4,135,132,192, 96, 48,160, 65,131, 6,100,209,162, 69, 18,153, 76,246,121,165,166,135,243,167,234,102, 38,132,100, - 82, 74,211,212,106,117,170, 88, 44, 78, 18, 8, 4, 73,249,249,249,169,148,210,172,183, 80,225, 57,148,131,207, 90, 55,168, 13, -136,196, 72,202, 83,167,223, 81,209,252,178,214,117,112,112,248, 96,195,134, 13,118, 91,183,110, 53, 77,153, 50, 69, 63,113,226, - 68,190, 86,171,245,152, 56,113, 34,127,202,148, 41,250,173, 91,183,154, 54,108,216, 96, 39,149, 74, 7,190, 78, 89, 76, 38, 19, -162,162,162,190,141,141,141,149, 80, 74, 63, 5,240,201,194,133, 11,199,196,198,198,218,173, 95,191, 30,135, 14, 29,194,161, 67, -135,208,175, 95, 63, 76,157, 58, 21, 11, 22, 44,168,104,187,236, 27, 54,108, 24,230,234,234,138,171, 87,175,166, 83, 74,147, 8, - 33, 77,164, 82,169, 67,191,126,253,208,163, 71, 15,232,116, 58, 24,141,198,151, 70,139,203,229,194,201,201,201,149, 93, 6, 25, - 12, 6,227,175, 53, 89,175,154, 45, 30, 0,148,132,234,194,195,195, 73, 69, 55, 70, 75, 65, 54,228,133, 26, 36, 42, 52, 72, 46, -176,254,225, 51,171,213, 90, 97, 1,210,211,211,143,223,188,121,243,131,176,176, 48, 94,122,122, 81,139, 88, 88, 88, 24, 52, 26, - 13,210, 31,220, 70,161, 21,144,212, 10, 69, 97, 97, 33, 10,158,220,135,180, 97, 43,184,134,143,194,170,245,235,245,121,121,121, - 63,150,165, 41, 20, 10,249,213,170, 85,203,137,143,143, 55, 3,200,151,201,100,221,253,253,253,113,229,202, 21, 0,216, 77,129, - 21,136,188, 12, 92, 61, 2, 90, 20, 82,145, 6, 4, 4, 32, 59, 59, 27,106,181,250, 74, 89,154, 55,111,222,140, 53,153, 76, 13, -250,246,237, 75,126,254,249,231, 3,132,144,249, 0, 30,206,241, 2,247, 65, 74, 22, 10, 45,176, 35,132,116,115,118,118,254,116, -193,130, 5, 93,166, 76,153,130, 99,199,142,225,220,185,115, 70, 20,229,130,221, 44, 35,154,163, 32,132,108,154, 49, 99, 70, 75, - 14,135,243,225,249,243,231,205, 65, 65, 65, 74,163,209,104,169, 19, 28,204,153,191,232, 43,193,228, 15, 39, 56,229,105,240,184, - 71, 29,239,214,132, 0,143,211,178,147, 98, 85, 52,175,162,125,218, 65,196, 59, 49,172, 93,195,246, 31, 12,235, 35,149,212,170, -135,194, 71,183,189, 54, 29, 60,181,170,163,152,215, 59, 75,107,238, 39,147,201, 6, 95,185,114,101,178,193, 96,168, 41, 18,137, - 94,200,229,242, 53, 42,149,170, 82,147,197,227,241,194, 67,253,170, 57,203,243,243, 97, 87, 28,137, 82,154,172,200,213,155,241, -212, 41, 8, 35,170,249,189,108, 6,205,204,204,132,151,151, 23,177, 88, 44,125, 42,210, 60,119,238, 28,122,247,238, 93, 98, 60, - 65, 8, 1, 33, 36, 55, 56, 56, 56, 75, 36, 18,229, 9, 4, 2,229,138, 21, 43,116, 58,157, 14, 60, 30,207,206, 98,177,112,223, -164,194,183,144, 16,143,246, 98,242,195,196,190,157,186, 54,170, 23, 66,175,221,125, 64, 10, 52,186,237, 21, 68, 1,191,175, 93, -187, 54, 47, 63, 63,255, 56,128,167, 38,147,105,207,129, 3, 7,236, 70,143, 30,173, 59,120,240,224, 72, 0,129, 43, 87,174, 28, -172, 86,171, 55, 87,165, 28,207,159, 63,255,126,201,146, 37, 95,204,157, 59, 23, 59,119,238,156, 2, 96, 86,113,164,171,223,130, - 5, 11,176, 98,197, 10,236,220,185,211,250,244,233,211, 83, 86,171,245,249,244,233,211, 27,122,122,122,230,102,100,100, 60, 95, -180,104, 81,121,178, 77,123,246,236,169,191,113,227,134, 80,165, 82, 93, 39,132,124, 58,105,210,164,113, 45, 90,180, 80, 14, 27, - 54, 76,154,159,159, 47,183,183,183, 23,110,217,178,197,153,199,227,161,176,176, 16,132, 16,168, 84, 42, 3,187, 20, 50, 24,140, -255, 85,202,243, 34,127, 7, 94, 78,183, 83,214, 61,181,172, 13,212,104, 52, 89,201,201,201, 33,105,105,105,102, 0,102, 0,200, - 51,152,191, 89,178,229,200,214,129, 45,107, 75, 50, 76, 38, 28,189, 27,173,201, 51,152,191, 41,137, 76,164,165,165,169,146,146, -146, 28,180, 90,173,186,156,223,250,253,135, 31,126,208, 94,190,124,217, 33, 46, 46, 14, 22,139, 5, 77,154, 52, 65, 76, 76, 12, - 10,158, 70, 65, 18,210, 4,146, 14,189, 17, 29,113, 23,145,231, 46, 32, 65,109, 48, 63,155,183, 68,161, 46, 44, 92, 96, 48, 24, -142,150, 37,200,231,243,243,139,182,143, 90, 0, 64,169, 84, 62, 84,171,213,237, 60, 61, 61,241,248,241, 99, 73,161, 5, 83, 7, -207, 94,181,142, 82,106, 17, 20,245, 20,155, 54,108,216, 48,220,187,119, 15, 0,238,149,165,169, 84, 42,167,140, 31, 63,254,242, -142, 29, 59,120,113,113,113, 61,182,110,221,218,227,217,179,103,148,228, 39, 91,110,104,248, 8, 28, 51,181,217,198,128,224,115, -189,123,247,134,183,183, 55,182,108,217,130, 53,107,214,152, 62,250,232,163,216, 53,107,214, 52, 3,176,167,156,131,160, 0,112, -198,205,205,109,114,253,250,245, 85,133,133,133,200,203,203, 67,122,122, 58, 92, 92, 93, 57,102,112, 90,187, 59, 57,237, 57,158, -169,146,240,206,220,194,237,212,140, 10,163, 89,173, 4,188,119,135,119,108,220,254,227,185,179,165,184,113, 20,100,252, 2,208, -173, 95,227,147,247, 6, 59,232,244,123, 58, 52,229,241, 70, 43,204,230, 93, 0, 14, 85,209,145,247,108,215,174,221,190, 37, 75, -150,136,231, 44, 95,130,149, 33,190, 48,231,229, 33, 71,111, 65,174,222, 12,101,193, 83, 60,126, 28, 13, 87, 87, 55, 36, 36, 36, - 64,167,211,225,201,147, 39,148,203,229, 30,175, 44,162, 83,234, 55, 74,154, 11,229, 34,145, 40,143,207,231,103,241,120,188,252, -184,184,184, 66,157, 78, 7, 14,135, 35,177, 88, 44, 98, 27,202, 90,205,205,205,109, 58,128,129, 0,142,169,114,115,215,134,241, -225, 4, 30, 58,214,244,112,125,103,222,196,209,110,254, 62, 30,242,184,216, 23,166, 31,207,254,150,171,211,227,155, 10, 78,146, - 19,165, 35,146,132,144, 79, 14, 30, 60, 56, 14,192,182,226,121,183, 46, 0,216,248, 26,231,223,188,195,135, 15,127, 49,119,238, - 92,136,197,226,151,131,167,138,197, 98, 59, 0,216,187,119, 47, 30, 63,126,220,162, 36, 95, 11,192, 62, 27, 52, 3, 67, 67, 67, -227,142, 28, 57, 34, 4,224, 51,105,210,164, 86,235,214,173,195,123,239,189,151, 19, 29, 29,221,178, 40, 2, 75, 2, 63,252,240, -195, 59, 59,119,238,116,182, 90,173, 40, 40, 40,128,193, 96,136,103,151,114, 6,131,193,204,214, 95, 18,205, 10,163,148, 70, 22, - 15,236, 29, 14,224, 36,165, 52,227, 15, 70,171,100, 3, 1, 64,167,211,125, 31, 16, 16, 32, 3,224, 7,160, 55,128, 99, 15, 45, - 56,132,103,137,136, 74, 72,157, 93, 98,188, 30, 90, 94,222,196,135,222,185,115,199, 80,189,122,245, 7, 0,190, 46,231, 70,166, -116,115,115, 91, 60,125,250,244,165,139, 23, 47,230,241,120, 60, 92,190,124, 25, 55,207,158,180, 62,185,126,155, 36,106, 45, 90, -229,221, 25,105, 60,106,185,229,169,205,127,116, 95,131,195,148,210,212,138, 54,172,176,176, 48,249,249,243,231,194,250,245,235, - 91,238,223,191,239, 70, 41,253,229,212,169, 83,237,102,206,156,137, 43, 87,174,236, 57,175,179,140,160,212,122,128, 16,194, 3, - 48,162, 79,159, 62,159, 14, 30, 60, 24,141, 26, 53, 50, 2,216, 89, 78, 57,111, 16, 66, 70,164,164,164,108,250,252,243,207,157, - 62,255,252,115,112, 56, 28, 82,122, 95,229,230,230,226,193,131, 7, 24, 54,108,152,226,183,223,126,155,218,165, 75,151,177,109, -219,182,197,233,211,167,125,108, 56, 24,191, 63,121,242,100,128, 76, 38, 35,207,159, 63,135, 82,169,196,141, 27, 55,248, 1, 1, - 1,173, 15, 28, 56, 32,170, 89,179, 38,162, 31, 61,194,169, 17, 35,194, 9, 33, 1,148,210,164,178,116,196,124, 50,121,204,144, - 62, 82,253,141,227, 64,228, 53, 0,128, 90,169,130, 54, 33, 10,131,155,215,118,188,242, 36,113, 18,138,122, 97, 86, 9, 23, 23, -151, 79, 86,174, 92, 41, 9, 10, 10,194,103, 75,150, 99,250,220,153,248,208, 35, 0,202,180,100,228, 90, 0,161,189, 61, 22,207, -155,139, 62, 67,134,193,195,195, 3,143, 30, 61,162, 91,182,108, 41, 84, 40, 20, 43,108, 49, 90, 92, 46, 23,132, 16, 0, 40, 84, - 40, 20,106,161, 80,168,224,241,120,121, 22,139, 37,235,196,250,181, 77, 56,121, 89,239, 19, 66,184, 98, 43,231, 68,113,103,139, - 50,243,243,156, 8, 9,168, 21, 24,248,232,167, 45, 91, 36, 45, 90,180, 32,119,239,222,157, 60,105,194,248,113, 3, 67,107,156, -234,223,181, 61,188,188,189,244, 86,163, 65,126,234,216, 9,211,198,131,167,174, 26,136,245,243, 8, 74,181, 85,120, 58,217, 87, -218,244, 16, 66,134, 3, 24, 2,224, 8,165,116, 55, 33,100, 12,128,254, 0, 14,151,151, 32, 79, 8,225, 0,216, 60,104, 80,209, -100, 2, 90,173, 86, 83,242,126,195,134, 13, 75,255,150,181, 42,199,200,222,222,222,193,206,206,238,197,233,211,167,197,195,134, - 13,115, 94,186,116,105,218,123,239,189,231,187,103,207,158,239, 1, 36, 16, 66,130, 1,212, 42, 44, 44,180,112, 56, 28, 4, 7, - 7, 99,195,134, 13,106,139,197,178,141, 93,198, 25, 12,198,223,193,108,253, 13,139, 29, 6, 32, 18, 64,120,113, 7,194, 9, 0, - 42,158, 84, 26,192,146,168,168,168,146, 49,180, 38, 85, 52,188,195,172, 89,179, 34,238,221,187, 23, 1, 96, 89,101,221, 28,121, - 60,222, 47, 31,125,244, 17,245,244,244, 84,123,120,120,252,194,231,114,199,249,137, 17,134,215,232,234, 14,160,221,174, 93,187, -250,125,255,253,247,225, 0, 90, 0,224,251,250,250,166,103,102,102,170,127,251,237, 55,117,155, 54,109,212,110,110,110,217,161, -161,161,234,149, 43, 87,170, 77, 38,147,122,250,244,233,106,188, 50,222, 87, 57,218,118, 0, 38, 11,133,194, 95,234,214,173, 27, - 53,175,111,103,211,242,169,227,232,152,218,238,106, 0,223, 3,248, 8,128, 19, 0,254,224,193,131, 47, 62,121,242,228,108,104, -104,232, 38, 27,116,125,234,215,175,127,105,223,190,125,247,142, 28, 57, 18,241,249,231,159,223,115,117,117, 77,141,141,141,181, -234,116, 58, 90, 80, 80, 64,229,114, 57, 61,121,242,164,197,197,197,101,125,121, 58,237, 68,220, 12,122,110,119,153, 67, 56,164, -204, 29, 69,219, 8, 57,105,175,211, 13, 85, 34,145,228,231,229,229,209,204,204, 76, 26, 23, 23, 71, 15, 31, 62, 76,123,182,110, - 78,247,127, 56,144,238,254,160, 31, 93,209,179, 57,109,225, 96, 87,232,229, 32,189,231,224,224,144,237,228,228,180, 25, 64,237, -202,134,119,208,235,245, 47,135,111,168, 86,173, 90, 68,112,112,240,145,208,208,208, 85,199,142, 29,251,100,245,234,213,253, 58, -213, 8,248, 98,105,143,214, 90,205,133,131, 84,117,224,123, 58,171, 73,144, 46,148,139, 33,229, 14, 23,226,234,178,235,234,149, - 43,214,146, 1, 58,205,102, 51, 61,250,203, 47,116,232, 59,221,162, 20,103,246,254,116,125,193,148,125,211,155, 4, 29,109, 99, -135,225,120,101,160,210,178,150, 48, 41, 92,219, 59,114, 54,244,242,119,201,104, 39,227,124,223,210, 1,206,165,142,217,208,160, -160,160, 56, 74,105, 70, 72, 72, 72, 28,128,221, 33, 33, 33,165, 95,191, 95,217,224,164, 11, 23, 46,164, 40,154, 69,129, 3, 96, -254,146, 37, 75, 34, 40,165, 17,181,107,215,190, 65, 41, 69, 35, 9,220, 58,200, 56, 63,245, 13,244,204,235, 32,227,252,212, 72, -242,231,209,220, 41,165, 8, 16,160, 78, 59,119,251,235,253,106,123,171, 58,250,202,174,237,222,190,117,121,175, 94,189,182, 0, - 88, 15,224,107, 87, 87,215,235,195,135, 15,127,188,115,231,206,199, 43, 87,174, 52,198,198,198,210,177, 99,199, 22,138, 68,162, -175, 89,215,113,182,176,133, 45,108,249,203, 71,134,247,174,202,128,165,125,190,248,226,139, 8, 74,105,201, 88, 90,163,203, 88, -167,239,220,185,115, 35, 40,165, 37,163,195,119,173,108, 64, 51, 0, 11, 55,108,216, 64, 69, 34,209, 79,111, 58, 72, 26, 0,175, -254,253,251,183, 84, 42,149,205, 60, 61, 61,155, 21, 71,157,252,220,220,220,226,246,236,217,163,214,106,181,106, 74,169,218,108, - 54,171,239,221,187,167,238,216,177,163, 26, 69, 67, 64,216, 52, 66,120,233,101,142, 23,110,220,157,247, 1,157,227,133, 27,175, -124,119,212,182,109,219, 78,199,199,199, 31,119,116,116,156,105,227,192,149,126,238,238,238,243, 93, 92, 92,206,186,185,185,205, -113,113,113,201, 48, 26,141,180,160,160,128,198,196,196,208, 43, 87,174,208,155, 55,111, 82, 23, 23,151,212,242,202,217, 69,204, -187, 85,176,124, 50,181,110, 91, 66, 13,235,102, 83, 0, 84,190,122, 22,205,253, 97, 17,189, 59,190, 7,237,104,199,253,253,117, - 6,157,115,114,114,218,252,203, 47,191, 88,159, 63,127, 78, 79,156, 56, 65, 79,158, 60, 73,167, 78,157, 74,235,248,120,235, 91, - 10, 57, 89,237, 68,188,179,175, 51, 96,169, 94,175,143, 80, 42,149, 17,106,181, 58,162,110,221,186, 17,205,155, 55, 63,210,178, -101,203, 85, 7, 15, 30,252,100,233,210,165,253,186, 56,136, 98, 52, 23, 14, 82,250,249, 59,148, 78,110, 75, 95,140,235, 72, 59, -139,121, 15,202,213,244,244, 76, 45, 25,173,189,176,176,144, 94,187,118,141, 94,186,116,137,122,185,185, 41,219,139,185, 19,218, -136,208,161,141, 35,156,108, 45,103, 39, 25,103,251,173, 31,190,177,104, 79,239,164,123,199,188, 99,238,232,196,217, 80,106,189, -253,148,210,140, 65,131, 6, 37, 80, 74, 51, 14, 31, 62,156, 66, 41,205, 24, 56,112, 96, 66,113,104,120, 95, 89,154,175, 12, 78, -186,173,216,100, 77, 94,184,112, 97, 4,165, 52, 98,225,194,133, 17, 64,209, 32,170, 29,100,156, 29,183, 55,173,176,234, 79,238, -160, 7,199,134, 91, 58,200, 56, 59,202, 44,167, 19,239,120,228,182,213,212,112,118, 55,253,101,234, 72, 75, 91, 47,199,171, 65, - 65, 65, 43, 62,249,228,147, 35, 55,111,222,124,104,177, 88, 30,199,197,197, 61, 94,191,126,253,227, 86,173, 90,221,112,117,117, -141, 18, 10,133, 31,177, 65, 17,153, 38,211,100,154,108,192,210,255,206,194,171,160,233,228, 56, 33, 68, 66, 41,157, 62,120,240, - 96, 44, 91,182,108,104,131, 6, 13,134,251,250,250,186, 3, 64,122,122,186, 6,128,114,240,224,193,152, 63,127, 62,150, 47, 95, -190,170, 56,151,229,255, 51,249, 44,147, 16, 82,109,202,148, 41,217, 75,151, 46,181,142, 29, 59, 54,132, 82,250,136, 16, 82,103, -228,200,145,147,121, 60,222,224,128,128,128,208,140,140,140, 28,173, 86,187, 27,192,166,146, 54,211,170, 34,226,192,210,180,186, - 55,206,114, 96, 41,213, 52,244,206,252,249,243,135, 13, 28, 56,208,184,122,245,106,179, 82,169, 60,102, 99,185, 83, 0,124, 85, -242,218,213,213,213,235,193,131, 7, 31,121,120,120,112,226,226,226,160,215,235,241,252,249,115, 43,128, 95,203,211, 80,155,233, -218,141,135,207, 7, 79, 31,213,219, 81,243,244, 62, 4, 92, 46, 76,124, 33, 50,111,157,197,182,107, 79,149,133, 70,172,123,157, -237,148,203,229,223, 77,157, 58,117,228,204,153, 51,237, 2, 2, 2,200,239,191,255,142, 3, 7, 14,232,179,179,179,123, 82, 74, -175,190,238,177,178, 90,173, 16, 10,133, 0,128, 89,179,102,129,195,225,240,179,179,179,133,132, 16, 17, 33,196,158, 16,194, 53, -197, 63,134, 85, 89,128,172, 2, 57, 82,178,228, 21,234, 89,172,214, 3,183,111,223,158,214,184,113, 99,206,221,187,119,145,147, -147,131,231,207,159, 83, 11,165,251,174,106,204,155,171, 90, 62,123, 23,215,254,141,156, 69, 28,225,246,249,104,111,224,112,127, -180, 98, 16,128,201,197, 31,111, 35,132, 8, 0,228,213,173, 91,183,211,147, 39, 79,196,117,235,214,213, 62,125,250,244, 52, 33, -196, 23,192,142, 50,155,119,197,226, 92, 0,185,135, 15, 31, 6,128,241,148, 82, 43, 33,164,201,130, 5, 11, 50,174, 93,187,134, -133, 11, 23,102, 1,216, 0, 0, 82,103,215,190,161, 50, 1, 17,254,188, 16,173,244,224,172,179,210, 50, 59, 23, 72, 61, 60, 59, -215,151,112,192,223,250, 37,154,121, 5,115,132,102, 99,131, 69,139, 22, 93, 83,171,213,250,253,251,247, 27,222,127,255,125,110, -108,108,236, 29, 0,215,139,155, 53,205,172, 33,130,193, 96, 48,254,242, 28,173, 87,135,117, 40, 59, 71,171, 12, 67,176,151, 16, -146,187,124,249,242,206, 0, 28, 15, 30, 60,216,180, 78,157, 58, 0,128,152,152, 24,251,224,224,224,103, 13, 27, 54,124, 2,224, - 22,165,244,184,141,229, 41,185,240, 91,223,210,246, 69,207,156, 57,147,236,220,185,211, 12, 20,153,160,226,155,203, 90, 0,107, - 43,202,243,121, 83,130,130,130,186,125,249,229,151,134,173, 91,183, 90,190,254,250,235, 99,148,210,216,215,209,201,207,207, 95, - 57,122,244,232,145, 11, 22, 44,144, 57, 56, 56,144,168,168, 40,235,182,109,219,148,249,249,249, 43,203,251,206,109,131,121,127, - 7, 17,111,160,188,240, 96,183,161, 97,213, 29,158, 76, 9, 71,204,237,235,216,125,245,177, 42, 54, 95,123,238,174,217,124,224, - 53,205,235,115, 66, 72,163,249,243,231,207, 50, 26,141, 3,249,124,254, 29,165, 82,185,136, 82,250,251,235,238, 39,147,201,148, - 85,179,102,205, 87,127,199,100,181, 90, 41,165,148,111, 54,155, 37, 46, 70,235,201, 5,107,182,126,248,126,176, 76,148,155, 43, -199,207,177, 74,125,169,206, 22,127, 34, 39, 39,103,213,184,113,227,222, 91,176, 96,129,179,163,163, 35,137,142,142,166,251,247, -239, 87,231,228,229, 45,123,157, 50,106, 10,242,207,157, 56,116,112,112, 91,131,153,236, 74, 80, 81, 30,151,156, 46, 85,214,243, - 0,206, 23,159, 76,163, 8, 33,131, 0, 28,165,148,254, 92,161,166, 70,115, 14,128,112,208,160, 65,136,138,138, 26, 10, 96, 47, -128,125, 95,125,245, 85,203,249,243,231, 99,209,162, 69, 88,176, 96, 65, 55, 0,103, 85, 5,121, 39,143,236,219, 61,162,163,201, -196,217,149,168,178,114, 57,228, 84,153,154,185, 89,231, 79,159,191,208,183,153,163, 15,217,124,246,186, 85, 99,165,247,199,140, - 25, 83, 96, 48, 24,206, 2, 88, 7, 32,138, 82,202,122, 23, 50, 24, 12,198,255,111,224,103,115, 25,198,107,115,165, 70,171,248, -203, 23, 0, 92, 32,132,120,181,105,211,102,137, 76, 38,147, 88, 44, 22,228,231,231,167, 1, 88, 83, 28,157,169, 10,251, 21, 10, -197,231, 34,145,232,199,183,180,113, 58, 66,136, 71,221,186,117,249, 0,244,101,124,254,118, 76, 22,197,225,231,177,207, 29, 65, -113,184,228,173,216,216,216,125,161,161,161,253,158, 62,125,250, 27,165,244,212, 27,108, 67, 18, 33,164,241,212,169, 83, 63, 3, -208, 15,192,175,249,249,249, 43,203, 75,132, 47,225,170,222, 60,184, 25,143, 55,242,126, 98,230, 71, 6, 43,173, 33,228,112,226, - 11,141,244,135, 59,102,243,222, 55,220,167,207, 1,140, 45, 94,222,152,220,220,220, 74, 7,249, 36,132,144,171, 47,210,111, 61, - 78,201, 46,171,179, 69, 89,101,204, 32,132, 52,154, 62,125,250,116,171,213, 58,132,195,225,252,146,155,155, 91,233, 62, 43, 55, -146,103,176, 76,251,241,242, 93,193, 26,139,181,171,136,195, 57,171, 54, 89,102,151,243,187,187, 1,216, 52, 58,252,139, 23, 47, -126, 90,180,104, 81,253, 5, 11, 22, 96,227,198,141, 37,221, 46, 47, 44, 88,176, 32,219, 98,177,248, 45, 90,180, 8,155, 54,109, - 50, 3,128,222,100,157,177,245,218,125,206,143, 86,235, 59,124, 14,231,180,222,100,157, 81,166, 41,215,153, 39,175, 59,114,198, -104,180, 90,187,113, 65, 78,103, 24,172,243,244,122,154,200, 46,115, 12, 6,131,241,191, 9,207,214, 21, 41,165,153,111,227,198, - 75, 41,141, 3,224, 56,103,206,156,183,233, 36,179,255,234, 29,245,101, 58,253, 30,192,247, 95,126,187,191,244,239,222, 1, 42, - 31, 84,212, 86,179, 5,224,227,226,197,102,238,154,205,123, 80,206,144, 18,127,179,167, 1, 10,224, 96,241, 98,235,119, 82, 81, - 52,151,229,180, 55,253,253,251, 26,154,129,162, 94,132,111,115,155, 34, 81,212, 11, 5,105,105,105,165,183,243, 97,241,130,146, - 49,229,110, 23,210,108, 0, 35,109, 44,231, 80,118,233, 98, 48, 24,140,255, 29,202,106, 58,172,178,209, 98, 48, 24, 12, 6,131, -193, 96,148,249, 96, 93,110,110, 48, 1,208,181,156, 47,217,156,216, 78, 8,233,250, 26,133,186,192, 52,153, 38,211,100,154, 76, -147,105, 50,205,127,151,102,101,218,255,223, 29,235,254, 63, 92,216, 95, 57,174, 4,235,250,202, 52,153, 38,211,100,154, 76,147, -105, 50,205,127,237,194, 97, 1, 63, 6,131,193, 96, 48, 24,140,215,135, 16, 18, 86,252,215,155, 16, 50,161,120, 42, 30, 0,229, -228,104,241, 91, 44,201, 50,155,205, 30, 0,192,227,241,178, 77,119,230,121, 87,244, 3,124,160,139, 25,248,169, 88,112,188,169, -168, 59,252,171,154,231,205,102,179,115,177,102,129,233,206,188, 30, 21,106, 54, 95,124,246, 15,235,223,158,219,173,140, 45,227, -242,155, 47, 78,127,165,172, 62, 54,239,153,226, 57, 18,255,234,114,254, 93, 52,255,205, 8, 90, 46,201, 50,153,138,234, 17,159, -207,203, 54,222,174,184, 30, 9, 90, 44, 78,255,195,250,183,230,122, 86,164,105, 47, 22,229,213,242,117, 95, 85,145,102, 92,122, -238,244, 66,141,206,181, 34,205,170,158,155,126,222,222, 93, 44,197,231, 38, 23, 24,159,146,158,126,254,127,169, 46, 17, 66,154, - 2,152, 7,192,177,212,219, 81,148,210, 79, 89,173,100, 48, 24,127, 35,202,157,130,167, 76,163,101, 54,155, 61, 34,126, 89,128, - 66, 61,208,229,221,197, 30,129,253, 55,253,169, 87,155, 89, 87, 32,148, 71,239, 15,229,154,148,206,238, 60,163, 99,122,122, 58, - 41,190,112,254, 4,192,191, 12, 77,231,136, 95, 22, 64, 99, 0,218, 15, 95,228,236, 15, 56,230, 8, 4,159,137, 37,146, 78, 90, -173,182, 62, 0,136,197,226,104,109, 97,225,101,119,163,113,229,171,235,151,183,101,165,203,218,121,244, 98,143,144,254,155,166, - 90,172, 86, 97,218,221, 31,219,235,114, 99,121,124,179,126,195, 28,224,244, 2,192, 98,203,158,250,195,239, 14,153,237,202, 7, - 58, 11,237,236, 26, 57, 57, 59,183,179, 82, 90,215,106,181, 18,139,217,252, 88,169, 80, 92,183,154,205, 15,204,134, 66,215,136, - 99,223, 88, 43, 42,231,171,219, 50, 4,224,253, 2, 12,150, 72,165,157,184,124,126,107, 0,176,152, 76,191, 23,170,213,151, 7, - 0,135,108,217,118, 91,247,207,235,174,255,111,195,100, 50,123,196,159, 93, 0,189, 9, 8, 27,244,141, 71,195,145, 63,239, 1, - 0, 67,246, 3, 79,117,236,177, 22, 0, 32,169,213,251,182,200, 43, 44, 11, 0,120, 73, 25, 30, 49, 39,230, 66,111, 2,234,246, - 94,228, 81,153,230,251,243, 15,184,206,156, 48, 80, 4, 0,231, 14,127, 95,231,210,145,141,239, 0, 64,231,129,147, 78,119, 31, - 52, 37, 6, 0,150,111, 62,226,186,239,155,161, 21,106,218,118,110, 42, 4,138,216, 19,181, 13,202, 12, 39, 63, 9,207, 43, 54, - 54,150, 3, 0, 62, 62, 62, 54,157,155,213, 0, 89, 6, 48,153,195,229,182,171, 85,187,118, 24, 0, 26,247,226, 69,164,197,108, -190,225, 13,108,120,203,117,105, 42,165,127, 28,156,181,120, 46, 76, 6,131,193,248, 59,113,178,216, 92,157,124,245,131,114,123, - 29, 22,234,129,171,207,129, 14, 45, 27, 98,194,200, 94,210,210,159, 29,218,180,200, 63,246,238,175, 33, 91,127, 94,201,105,216, -176, 33,226,227,227,109, 42,133,198, 0, 92,137, 5, 32,127,226, 80, 32,145,188, 88,189, 98,133, 99,183,110,221,120, 62, 62, 62, - 32,132, 32, 51, 51,179,229,133, 11, 23,154, 78,155, 54,237, 67,200,159, 20,104, 12, 80, 93,177, 97, 8,208,146,178,214,175, 83, - 29,243,166, 12,149, 1,192,156,119, 55, 52,189,251, 44,203,229,197,139, 23, 93,190,248,226,139, 60,238,229,203, 27,221,128,237, - 89, 64,138, 45,229,220,121,252,182,157, 44, 99,111,224,168, 41, 83, 14,215,174, 93, 91, 26, 16, 16, 64, 28, 28, 28,192,229,114, - 81, 80, 80,224,255,232,209,163,119,238,220,185, 83,120,225,234, 79,194,123,119,250,198,101,219,181,208,217,180,237,218,116,187, -115, 14, 14,209,163, 7, 12,168, 54,116,232, 80,187, 90,181,106, 1, 0, 94,188,120, 17,116,232,208,161,225,135, 15, 31,158, 15, -109,186, 89, 99,128,174,178,109,127,169, 9,192, 14,104,237,228,225, 49,138,203,231,215, 55,155,205,190,197,209,134, 52,139,201, - 20, 45,207,206,222,253,234,250,140, 63,163, 55, 1, 79, 50,128,174,237,194, 48,122, 96, 87, 9, 0,124, 49,108, 73,203,164,132, -231, 2,131,193,128, 58,193,117,219,124,253,205,170,179,224,112,176,235,200,133,151,235,219,162, 25,245, 36, 30, 11,190, 94,141, -244,135,135, 90, 90, 20,207, 59,169,148, 10, 46, 0, 56,202,100, 3, 15,237,223,123,217, 39,116,240,173,231,185, 70,155, 52, 43, - 58, 55,207,236, 95,239,157,250,232,114,189, 31,206,109,227,251,251,251,227,225,195,135, 85, 59, 55, 21,207, 28,172,222,222,143, - 87,126,254,185, 87,251,246,237, 33,149, 74,193,227,241, 96, 54,155,187,222,184,113,163,235,130, 5, 11, 38, 65,241,172,208,214, -115,211, 6, 86, 18, 66, 58,189, 63, 97,170,119,175,126,131, 49,176,103, 27, 86, 17, 25, 12,198,223, 10, 66,200,132,226, 94,135, - 47,123, 30,150,238,133, 88,166,209,226,241,120,217,221,198, 44,245,104,215,162, 1,238, 62,136, 81, 36, 38,103,168, 75, 62,203, -143, 62, 84,167, 95, 27,223,122,215,174, 93,133, 94,175,199,239,191,255,142, 7, 15, 30, 32, 33, 33, 1, 19, 39, 78,212,243,128, -241,229,104, 22,180, 31,190,200, 25,138, 88,105,144,240, 89,141, 11, 79,159,114,117, 58, 29,174, 93,187,134,130,130, 2, 8,133, - 66, 84,171, 86, 13,221,187,119,231, 61,125,250,212,165, 75,183,158,178,246, 61, 71,196, 67, 22,164,230,241,120, 5,229,109, 32, -143,199,203,238,242,238, 98,143,122, 65,213,241, 34, 49, 93, 49,239,155,173,106,171,149,242,226, 18,146,140, 87,175, 94, 69, 88, - 88, 24,206,159, 63,239,154,159,159,255,229,134, 13, 27,230,241,191,253, 97,173,201,144, 55,163, 2,189,130,246,195, 23, 57,187, -102, 31, 12,184,116,230,168, 32, 58, 58, 90,240,227,143, 63, 34, 47, 47, 15, 66,161, 16, 78, 78, 78,240,242,242, 66,157, 58,117, -200,156, 57,115,164,189,123, 71,227,227,241,131, 3,140,129,227,158,149, 87,206,151,219,174, 78,178,119, 83,158,171,117,228,228, - 73, 78,219,182,109,255,240,216, 94,179,102, 77,244,232,209,195,110,212,168, 81,181,134, 14, 31,105,109, 31,254,254, 11, 72, 3, - 52,149,106, 22,166,136, 93, 53, 55,125,186, 14, 31,126,108,209,162, 69, 78, 94, 94, 94,144, 72, 36, 0, 0,133, 66, 81, 45, 49, - 49,177,229,252,249,243, 7,221,142,218,207,107,223, 59, 37, 29, 18, 63,109, 69,251,243,223, 10,159,207,203, 46,137, 34, 57, 72, -196, 5, 41,169, 89,133, 0, 96, 48, 24, 96, 48, 24,160,215,235,241,209,164,137,220,241,131,154,215, 14,104, 55,245,126, 66, 90, - 86,126,221, 11,183, 92, 74,190, 91,153, 38, 79,147, 32,151, 39, 95, 28,191,224,243,207,189, 60, 61,255,211, 34,184,107,231, 78, -110,126,126,126,215, 5, 11, 22,212,163,246, 29,229,117,123, 47,114,170, 72,179,162,115, 83, 30,115,178,198,215, 83,122, 52,218, -244,205, 9, 88, 44, 22,220,188,121, 19,215,174, 93,195,170, 85,171,232,233,211,167, 21,142, 18, 73, 37,231,230, 51,135,182,222, -153,129,223,126,123,152,136, 68, 34,252,250,235,175,120,250,244, 41, 56, 28, 14, 26, 54,108,136,209,163, 71,163,107,215,174, 94, - 19, 38, 76,164,237,123, 14,139,131, 44, 88,245, 38,117,137, 16,194, 1, 48,117,246,130,111,189,223, 29, 55, 25,203,191,158,195, -140, 22,131,193,248,219, 70,179,202, 29,226,129, 82,138, 19, 39, 78,208,226,165, 3,165, 20, 20,224,212,236,191,105,223,193,123, -214,147, 53,251,111,218, 71, 1, 14, 5, 56,142, 64,245,198,141, 27,155,228,114, 57,189,115,231, 14,253,232,163,143, 10,215,174, - 93,123,249,228,201,147,135,204, 70,227, 22, 31,111,239,239, 40,192, 41, 51,243, 30,224, 4, 0, 50,123,123,251,156,228,228,100, -122,234,212, 41,186,112,225, 66,186,123,247,110,122,250,244,105,122,225,194, 5,122,250,244,105,186,111,223, 62, 26, 21, 21, 69, - 99, 98, 98,168, 68, 34,201, 9, 0,100, 21,104,114, 41,192,173,211,255,199, 25,135,239,154, 22, 5,247,223, 52,141, 2, 92,103, - 32,164,113,227,198,150, 67,135, 14,209, 93,187,118,209,159,127,254,153, 70, 69, 69,209,220,220, 92,202, 19, 73,114, 74,190, 87, - 94, 57, 41,192,241,245,245,205,145,203,229,212,207,207,143, 10,133, 66,234,233,233, 73,235,212,169, 67, 91,182,108, 73,223,121, -231, 29, 58,114,228, 72,250,229,151, 95, 82,185, 92, 78,237,236,236,178, 74,190, 87,158,102, 24, 32,150, 72, 36,201, 17, 17, 17, -180, 60,180, 90, 45,205,205,205,165,103,207,158,165, 18,137, 36, 57, 12, 16, 87,164, 41, 6,154,132,134,134,230,228,230,230, 82, -163,209, 72,147,147,147,233,163, 71,143,232,211,167, 79,105,114,114, 50,213,106,181, 47,181, 99, 98, 98,104, 96, 96, 96,142, 24, -104, 82,174,230,191,121, 41,169, 19,175, 44,254,158,158,239,120,121,121,105, 15, 31, 62, 76,211,210,210,232,142, 29, 59, 40, 7, - 88,242,167,117, 43,208, 20, 2,221,219,182,109,107,185,121,243, 38,189,127,255, 62,157, 53,107, 22,237,209,163, 7,237,217,179, - 39, 93,176, 96, 1, 77, 77, 77,165,169,169,169,244,157,119,222,177, 8,129,238,149,213,207,178,206, 77, 25,224,223,187,119,111, -173,209,104,164,113,113,113,180,126,253,250,169, 92, 96,148, 4,168,215, 1, 16, 85, 86, 63,125, 1,103,111,111,239,140,155, 55, -111,210, 35, 71,142,208,128,128,128, 28, 46,240,190, 35, 80,211, 17,168,201, 5,222,175, 89,179,102,206,205,155, 55,105, 94, 94, - 30,245,247,247,207,240, 5,156, 95,183, 46,161,104,130,237,109,179, 23,124, 75,159,165, 22,210,217, 11,190,165, 0,146,139, 7, -116, 61,207,234, 36, 91,216,242,239, 91,254,228, 69,254,105,189, 14,195,195,195, 9,128, 43, 21, 89, 54, 45,151,187,116,249,242, -229, 60,157, 78,135,173, 91,183,170,134, 12, 26,116,176, 67,187,118,113, 53, 2, 2,228,132,195,169,116,238,194, 28,145,232,147, -229,203,151, 59, 25, 12, 6,220,187,119, 15, 77,155, 54,133,151,151, 23,164, 82, 41,164, 82, 41, 60, 60, 60, 16, 28, 28,140,236, -236,108, 56, 56, 56, 96,230,204,153,178, 28,145,232,147,202,116,173, 86,202, 3, 0,139,213, 42, 20, 0, 19, 2,155, 53,187, 55, -127,254,124,142,171,171, 43, 92, 92, 92, 32,149, 74,241,244,233, 83, 24, 12, 6,216,139,237,109, 26,164,149,195,225,112,164, 82, - 41, 46, 93,186,132,169, 83,167,162,117,235,214,112,114,114,130,131,131, 3,234,215,175,143,238,221,187, 99,252,248,241,136,139, -139, 3,177, 33,169,228, 49,143, 55,121,252,248,241, 30, 97, 97, 97,101,126,174,211,233, 32,151,203,145,147,147,131,106,213,170, - 97,240,224,193, 30,143,121,188,201,229,233,185, 2, 94,213,130,130,142,221,185,115,199, 77, 34,145, 96,215,174, 93, 56,122,244, - 40,206,156, 57,131, 83,167, 78,225,196,137, 19,248,245,215, 95,145,147,147, 3, 0, 8, 10, 10,194,129, 3, 7,220,164, 30, 30, - 39, 92, 1, 47,246, 0, 98, 27, 73, 89, 89,231,234,103,102,186,141, 26, 57,242,186, 90,173,198,168, 81,163,176,116,217,178, 57, -124, 27, 71,163, 15, 6,100, 46,222,222,219,191,253,246, 91, 78,102,102, 38, 6, 12, 24,144,187,114,217,178, 15, 34,207,158,173, - 21,113,230, 76,173,165,139, 22,125,208,161, 67,135,220,212,212, 84,236,220,185,147,227,233,239,191, 61, 24,144, 85,181,156, 42, - 96,234,154, 53,107,236,116, 58, 29,186,117,235, 22,103,141,142, 14, 54, 3,123,213,192,211, 43,128,177,178,239,103, 0,147,103, -206,156,233, 37, 18,137,240,217,103,159,229,106,146,146, 26,152,129,159, 21, 64,162, 2, 72, 52, 3, 63,171,226,227, 27,188,251, -238,187,185, 34,145, 8,171, 87,175,246,202,248,207,164,219,182, 70,176,154, 18, 66,142, 17, 66,174, 2, 72,127,127,194,212,247, -195,154,183,194,206, 45, 27,240,205,162, 47,182, 3, 24, 66, 8,217, 13, 96, 6,171,121, 12,198,191, 19, 91,188,200,255,106,243, - 97,185, 45,101, 47,227, 94, 39, 79, 82, 0, 29, 43, 18,114,118,117,109,218,160, 65, 3, 92,187,118, 13,161,161,161,119,156,156, -156,204, 2,145, 8,124, 62, 31,212, 90,249, 28,209, 98,137,164, 75,215,174, 93,121,183,110,221, 66, 96, 96, 32,196, 98, 49,248, -124,254, 31, 22,129, 64, 0,111,111,111, 40,149, 74,116,233,210,133,191,110,221,186, 46,208,235,191,174,244,134, 24,251, 72,154, -115,235,219,145, 63,237,216, 94,179,125,251,246, 80, 40,148,176, 90,173,176,183,183,135,193, 96, 0,143,199, 43,106, 2, 50, 81, -165, 45, 59,205, 98,177, 88,184, 92, 46, 2, 3, 3,177,116,233, 82,232,116, 58, 8, 4, 2, 0,128, 82,169,132, 92, 46,199,163, - 71,143,144,152,152,104,211,124,138, 14, 50, 89,175,161, 67,135, 10,203,250, 76,175,215, 67,161, 80, 64,161, 80, 64, 46,151, 67, -167,211,161, 85,171, 86,194,147, 39, 78,244, 66, 94, 94,153, 19, 75,235,237,236, 6,237,220,185,211, 67, 40, 20, 66,171,213, 66, -165, 82, 33, 37, 37, 5, 73, 73, 73,186,236,236,108,179,131,131, 3, 39, 32, 32,128, 35, 18,137, 68,253,251,247, 39, 74,165, 18, -132, 16,244,238,221,219,117,207,174, 93, 67, 1,172, 98,167,180,109,156, 3,244, 77, 12,134, 62, 45,154, 55,191,116,231,238,221, -176, 79, 62,249, 4, 81, 81, 81,223,218,239,223,127, 85, 3, 60,168,232,187,113,192,228,239, 74, 25, 24,154,148, 20,106, 4,114, - 74,173,146, 24, 16, 31,127,230,221,119,223,125, 24, 21, 21,229,182,122,245,106,175, 33, 3, 6, 76, 6,176,164, 42,101,116,144, -201,154,121,123,123,227,244,233,211, 72, 78, 72,248,194, 12,104,171,242,125, 14,151,219,182,125,251,246,248,245,215, 95,145,154, -148,244,133,249,143,101, 44,122, 80, 2,114,120,113,113, 95,108,223,190,125,219,216,177, 99,193,229,241,218,194,108,174,202,207, -252, 41,241,125,236,196, 79,176,125,243,186,237, 0,198, 81, 74,173,120, 75, 83, 90, 49, 24,140,191,105, 27,156, 13, 94,228,239, - 98,182, 74,154, 18,171, 20,209,242,240,240,240,149, 74,165, 72, 79, 79, 71,221,144,144,108,145, 72, 4, 33,159, 15, 59,161,208, -166, 66,104, 52,154, 80, 31, 31, 31, 40, 20, 10,184,185,185, 65, 32, 16,188, 92,132, 66,225,203,255, 29, 28, 28,192,225,112,224, -239,239, 15,141, 70, 19, 90,169,110,214, 35,143,253,235, 38,125,116,243,234,233,154, 3, 6, 12,132,179,179, 11,252,252,170,193, -195,195, 3, 98,177, 24,126,126,126,168, 85,171, 22, 93,185,114, 37,236, 61, 26,218,116, 33, 47,109,158,120, 60, 30, 44, 22, 11, -178,178,178,240,236,217, 51, 68, 69, 69,225,230,205,155,184,127,255, 62, 84, 42, 21,108,153,183, 90,163,213, 54,226,241,120,101, -154, 44,185, 92, 14,185, 92,254,210,104,229,228,228, 32, 49, 49, 17,234,194,194,198, 21,152,222,129, 13, 26, 52,224, 2,128, 88, - 44, 70,227,198,141,177,105,211, 38,243,241,163, 71,135,213,187,121,211,197,239,236, 89,167,159,126,252,113,216,224,193,131, 45, -183,110,221,130, 82,169,196,147, 39, 79,224,238,238,206, 19,218,217,177,185,242,170, 72, 4, 80,232,166, 82,245,108,221,186,117, -188, 66,161,192,138, 21, 43, 56,124, 7,135,205,139, 0,110,133, 95,228,114,219,180,111,223, 30,199,142, 29, 67,122, 82,210,172, -164, 50, 12, 76, 18,144,147, 28, 23, 55,107,251,246,237,232,222,189, 59, 8,143, 87,229, 68,165,150, 45, 91, 54,176, 90,173,120, -248,240, 33,156,128,219, 85,253,126,173,218,181,195, 74, 34,191, 18,224,122,121,235, 73,128,235,145,145,145, 16,139,197,168, 91, -175, 94,147, 42,254,204, 74, 66, 72,198,216,137,159,224,200,153,223, 0, 0,219, 55,175,203, 42,101,178, 24, 12, 6,139,104,253, - 45, 35, 90, 37,198,170,244,242,242, 65,182,138, 34, 0, 0, 62,159, 15,161, 72, 4,161, 80, 88,100,144, 68,162,170, 56, 62,216, -217,217,189, 52, 86,165, 13, 86,233,255,237,237,237,109, 50, 48, 0, 80,240,252, 76,187,113, 31,140, 21,138, 68, 34, 24, 12,122, - 80, 74, 33, 18,217,193,201,201, 9,129,129,129, 80, 42,149,104,221,166,131, 62, 69, 46, 56,225, 90,183,127,212,235,236, 64,179, -217,140,194,194, 66, 20, 20, 20, 32, 63, 63, 31, 74,165, 18, 90,173,214,230,174,232, 86,171,149,155,146,146,130,189,123,247, 34, - 47, 47, 15, 64, 81,162,117,137,185, 42,249, 27, 31, 31,143, 93,187,118, 33, 33, 33,161, 74,199,167, 93,187,118, 56,113,226, 4, -183, 99,151, 46, 91,206, 7, 4,164,159, 15, 8, 72,239,216,165,203,150, 99,199,142,113,125,125,125,145,152,152,136,123,247,238, -161,160,160, 0,148, 82,214,127,254, 53,120, 1, 20,104,242,243,199,206,153, 51,135, 74,165, 82,172,248,238,187, 70, 75,128, 17, -182, 26, 24, 89, 5, 6, 70,246,102, 6, 6,148, 82, 88,173, 86, 88, 44,150,215,218, 54, 66, 8,225,243,249, 85, 29, 90,129, 84, - 65,255,101,226,251,204, 47,151,226,212,175,135, 74, 62,138,101, 38,139,193, 96,252,221,169,104,174, 67, 94, 41, 7,249,242,111, -121,100,101,101,165, 21, 22, 22,214, 12, 8, 8, 64,106,106,170,135,191,191,127,146,144,207,135, 64, 40, 4,225, 84,238, 9,236, -237,237, 31,166,167,167,183,241,245,245,133,217,108,126,105,170, 94,109, 58, 44,137,210,220,191,127, 31,246,246,246, 15,161,171, -112,228, 4, 88, 12, 5,213,155, 52,105,242, 50, 50,228,228,228, 4, 39, 39, 25, 68, 34, 59,204,157, 59,215,186,122,229,202, 13, -254,157, 23, 41,222,155, 54,135,206, 89,178,229,173,238, 92, 91,111, 76,246,246,246, 15,253,252,252, 90,201,100, 50, 28, 57,114, - 4,137,137,137, 40, 40, 40,128, 70,163,129, 94,175,135, 70,163,129,193, 96,128,157,157, 29,234,213,171, 7, 71, 71, 71, 92,184, -112,225, 33,244,250,178,205,101, 94,222,145,135, 15, 31,182,106,222,188,249,203,136, 74,167, 78,157, 72,167, 78,157,220, 94, 70, -209, 52, 26,228,230,230,226,206,157, 59,184,112,225, 2, 8, 33,136,141,141,181,232,181,218,125,236,180,120, 61,116,192,239,220, -237,219,183,125,248,225,135, 31,180,105,211, 6, 22,224, 29, 0,187,254, 91, 6,166,132,155, 55,111, 62,178, 88, 44,109,234,212, -169, 3, 57,208, 2,192,175, 85, 50,145,207,159, 71,154,205,230, 46,141, 26, 53,194,145,131, 7,219, 1, 72, 44,107,189, 66,160, - 93, 88, 88, 24,180, 90, 45,158, 60,126, 28, 81, 5,147,181,101,246,130,111,223,127,119,220,100,236,220,178, 1,219, 55,175, 75, -217,182,105,173, 31,108,200, 31, 99, 48, 24,255,170,104, 86,165, 94,228,127,145,178,114,180, 74,204, 23,175, 42, 66,138,130,130, -136,200,200,200,154, 77,154, 52,193,150, 45, 91,154,183,110,213, 42, 77, 32, 20,154,133, 2, 1, 56, 54,220, 72,180,133,133, 23, - 47, 94,188,216,162,127,255,254,188, 91,183,110,193,203,203,235,165,209, 42,249,203,227,241, 64, 41,133,189,189, 61,126,249,229, - 23,163,182,176,240, 98,165,209, 34,139,213,194, 41, 54,122,148, 82,200,229,114, 8, 4, 2,172, 90,181, 26,235, 87,174, 28,105, - 1, 14, 5, 73,220, 63, 7, 96,247, 95,187, 65,107, 52,151, 78,157, 58,213,116,254,252,249,252,106,213,170, 65, 46,151,163,160, -160, 0,121,121,121, 80, 42,149, 80, 42,149, 40, 40, 40,128, 92, 46,135,157,157, 29,162,162,162, 76, 58,141,230, 82,121,122, 34, -157,238,240,152, 49, 99,102, 70, 70, 70,122,243,120, 60,152, 76, 38, 88,173, 86, 88,173, 86, 24,141, 70, 60,127,254, 28,209,209, -209,120,250,244, 41,242,243,243,193,231,243,193,229,114,113,255,254,253, 2,137,201,116,144,157,210,175, 15, 31, 56,114,227,198, -141, 15, 70,143, 30, 13,159,106,213, 58, 32, 53,213, 38, 3,115,180, 2, 3,163,120, 13, 3,243, 7, 3,164, 82,221,141,143,143, -111,211,177, 99, 71,120, 87,171,246,109,189,212,212,243,143,171,144,167,101, 49,155,175,223,184,113,163,203,187,239,190,139, 45, - 91,182,124,235, 30, 31,127, 38,231,149,102, 78,119,192,189, 70,173, 90,223,190,255,254,251, 56,119,238, 28, 44,102,243,245, 10, - 46, 58,165, 71,124,175,254,254,132,169,126,175, 36,190,111, 34,132, 76, 1,176,130,213, 40, 6,131,241, 79,142,104, 85,169,233, - 80,108,177,204,158, 49, 99,134,137,195,225, 96,224,192,129, 14,191, 30, 59, 54,248,254,131, 7,129,217,217,217, 78, 22,139,165, - 82, 45,119,189,126,237,140, 25, 51,228, 6,131, 1,193,193,193,200,207,207,135,197, 98, 1,143,199, 3,143,199, 3, 33, 4, 28, - 14, 7, 82,169, 20,145,145,145,216,182,109,155,210, 93,175, 95, 91,233, 77,194, 98,121,184,107,215, 46,112,185, 92,106,103,103, - 7, 66, 8,120, 60, 30, 86,175, 94,157,189, 30, 56, 2, 0, 92, 14,199, 0, 0, 28, 14,177, 53,123,183,210,118, 75,161, 80, 8, -107, 81, 39,128, 74,215,117,214,235,215, 44, 95,190, 92,245,228,201, 19, 20, 22, 22,190,140,190,169,213,234,151,201,245,114,185, - 28,132, 16, 20, 22, 22,226,216,177, 99, 42,103,189,126, 77,121,122,121, 64,102,106,108,108,223,230,205,155,231,197,199,199, 67, -161, 80,224,225,195,135,184,112,225, 2, 14, 28, 56,128,115,231,206,225,249,243,231, 48,155,205,240,245,245, 5,165, 20, 71,143, - 30, 85,152, 85,170,119,242,128, 76,118, 90,148, 79,117, 47,175, 46,158, 30, 30,201,238,110,110,169,213,189,188,186,188,250,185, - 12,136,137,137,137,129,217,108, 70, 96, 96,160, 75, 69,121, 90,212,108,190,113,227,198, 13,188,251,238,187,240,171, 89,115, 89, - 0,224,254,234, 58, 1,128,123, 64,173, 90,203, 74, 12, 12, 53,155,111, 84,181,204, 14,192,186,207, 63,255, 92, 43, 16, 8,176, -127,255,254, 64, 83,237,218, 79,121,192, 8, 41, 16,210, 17, 16, 84,246,125,111, 96,195,151, 95,126,153, 73, 8,193,238,221,187, -221,100,181,106, 61,226, 1, 99,100, 64,117, 25, 80,157, 7,140,145,213,170,245,104,255,254,253,110,102,179, 25,211,166, 77,203, -244, 6, 54, 84, 32, 57,149, 82,218,135, 82,218,158, 82,234,183,109,211, 90,156,250,245, 80,137,201, 26, 71, 41,189, 67, 41, 29, - 77, 41,125,196,106, 28,131,193,248, 39, 67,202,202,131,226,183, 88,146, 5, 80,143, 14, 45, 27,226,238,131,103, 10, 55,103,199, -179, 37,159,229, 71, 31,170,211, 57,212,177,225, 15, 63,252, 0, 62,159,143,148,148, 20, 60,126,252, 24,142,142,142, 24, 57,114, -164, 94,171, 82,245, 45,153,235,144, 16,210,149, 82,122,161, 88,179,104, 62, 53, 69,172,180, 22, 47,170,230,153, 83, 39,184, 50, -153, 12,106,181, 26, 28, 14, 7,118,118,118,176,183,183,135, 88, 44,198,189,123,247, 16,222,167,159, 37,199,190,253,203, 1, 75, - 75,230, 83, 43,173, 9, 66,184, 0,208, 2,176,143, 4, 62,243,240,241,153, 49,111,222, 60,113,143, 30, 61, 32, 16, 8, 80,173, -122, 80,102, 96,207, 21,235, 56, 28, 98, 78,205, 83,206,173, 85,221, 71,246, 56, 54, 17, 0, 41,154, 19,177,120,174,195,178,202, -233,111,184, 26,248,203,207, 43, 29, 27, 55, 46,202, 71,151,203,229,200,202,202, 66,118,118, 54,228,114, 57, 10, 11, 11, 1, 0, - 39, 78,156,192,169,107, 79,149,218,106,131,227,202, 43,231,127,182,253,153,131,143,241,118,141, 61,187,126,230,186,187,187, 35, - 43, 43, 11, 57, 57, 57,144,203,229,208,106,181,176, 88, 44,200,207,207,199,214,237, 63, 91,242,164,237, 19, 74, 6,132,172, 80, -179, 48, 69,236,162,254,205, 55,172, 94, 0,253,224,131, 15, 28, 28, 29, 29, 97,181, 90, 81, 80, 80,128,228,228,100,196,199,199, -227,218,181,107,133,217,114, 3, 10,221,186,165,150, 12, 88, 90,230,254,124,123, 33,212,191,159,102,113, 93, 2, 0, 31,111,239, -244,164,164, 36, 15,139,197, 2, 95, 95, 95,179, 60, 63,127,153, 16, 56,231, 0,100, 0,160,185,192,188, 53,235,214,141,237,215, -175, 31,154, 53,107,150,146,153,149, 85,163,172,186, 4, 66,184,193,128, 76, 83,173, 90,244,157, 59,119,188,146,147,147,241,238, -187,239,230, 38,189,120, 49, 75, 86,156,175,165, 0,218, 5,212,170,181,108,255,254,253,110, 53,107,214, 68,104,104,104,166, 93, -114,114,253,103,128,162,156,250, 89,238,185, 41,143, 57, 89, 99,210,128, 6,205, 62,250,232, 35,152,205,102, 92,187,118, 13,183, -111,223, 70, 82, 82, 18,126,251,237, 55,185,163, 68, 50,172,100,174,195,242,234,231, 59, 65,133,129,187,119,239, 34, 2,129, 0, -219,183,111, 71,100,100, 36, 0, 32, 44, 44, 12,239,191,255, 62,204,102, 51, 70,141, 26, 77, 79, 62, 19,199, 85, 84, 63, 9, 33, - 13, 0,124,135, 34,147,215,140, 82,106, 71, 8, 73, 7,224, 87,149,156, 44, 86, 63,153, 38,211,252,247,104,254, 83,169,116,174, -195,197, 27, 33,251,227, 52, 31,227,211, 15,109, 90,196,107,219,174,125,200,162,133, 11, 56,205,155, 55,135,159,159, 31,194,194, -194,144,156,156, 44,114,114,114,170,108, 62, 53,117,251,158, 35,226, 27, 54,108,232, 52,107,214, 44, 89,247,238,221,249,126,126, -126,160,148, 34, 50, 50, 18, 71,142, 28, 49,110,217,178, 69,169,241,236, 35,143,184,188, 87,109,203,124,106,183, 1, 13,128,175, -170,165,167,111,158, 60,105,210,130,198, 77,154,124,176,112,225, 66,142,212, 94,204, 95, 58,119,156, 29, 0, 44,254,254,128,172, -223,224,145, 88, 83, 27,232, 48,162,236,121,228, 74,151, 51, 57,117,124, 82,175, 1, 93,106,127, 54,101,172,101,232,208,161, 18, - 71, 71, 71,248,249,249,193,217,217, 25,113,113,113, 72, 77, 77,165,199,143, 31, 87,223,188, 31,195, 63,122,238,110,146,157,204, -219,150,121, 9, 85,237,123, 12, 73,232,213,171,151,243,152, 49, 99, 28,154, 54,109,202, 23,137, 68, 16,137, 68,200,202,202,194, -243,231,207,141,199,143, 31, 87,107, 60,222, 41,136,184,188, 95,101,227, 92,135,218,246,195, 23, 61,191,126,126,225,180,232,135, - 15, 71, 91,129, 70, 70,163,209,215, 98,177, 16, 14,135,147, 97,181, 90, 31, 26, 85,170,109,250,176,133,171,217, 92,135,182, 97, -177, 88, 4, 22,139, 5,114,185, 28,231,207,159,231,189,120,241, 98,222,131, 7, 15,230,165,167,167,195,100, 50, 97,208,160, 65, - 8, 11, 11,195,229,203,151,145,147,149,117,188, 34,173,103,128, 66,148,154,250,254,248,241,227, 79,239,218,181,139,243,224,193, - 3,183,237,219,183,111, 45,203,192,140, 30, 61,218,154,149,156,252,190, 30, 80, 84, 80, 63, 43, 58, 55,115,207,236, 95,255,160, -255,192,193,245, 22,206,159,199,111,221,186, 53,220,220,220,208,174, 93, 59, 24,141, 70,167,186,117,235, 86,118,110,170,218,247, - 28, 22,215,168, 81, 35,201,234,213,171,189,198,142, 29,139, 41, 83,166, 0, 0,180, 90, 45,206,157, 59,135,105,211,166,101, 38, -243, 90, 20, 86, 86, 63,139, 35, 85, 37, 6,236, 42,128,246, 0,226, 88,226, 59,131,193,248, 71, 70,173, 8, 9,163,148, 70, 18, - 66,188, 1,132, 3, 56, 73, 41,205, 40,215,104, 1,255,153, 79,237,250,237, 71, 40, 61,205, 71, 17,222,143,205,254, 99, 94, 76, -156,177, 44,148,107, 82, 58,243,137,206, 49, 54, 38,134, 84, 54,231,225,203,249,212,100, 65,106,215,248,125,205,151, 46, 94,252, -201,154, 53,107,186,148, 12,225, 96,111,111,255, 80, 91, 88,120,209, 93,175, 95,171,145, 5, 93,172,234,220,124,169, 64, 22,128, - 73,206, 17, 17,235,122,247, 27,180,220,206, 37,144, 63,103,201, 22, 29,151,195, 49, 60, 79,207,193,154,218,128,196,134, 14,146, - 26, 3, 16, 45,247, 54,103,185, 14,126,246,229,231,159,127,182,248,171,175,154, 75,165,210, 14, 70,179, 57,200,106,181, 2, 86, -107,172,166,176,240, 42, 53, 26,239,232,195,230,175,180,147,121, 83,155,231, 37,116,170,171,114, 73, 56,212,124,199,182,109, 83, - 15, 30, 60,248,167,109,119,213,235,215,105,156,234, 94,176,101,219, 75,175,163, 3,126, 71,118,246,239,229, 86, 2,176,185, 14, -109,126,250,176, 90, 39, 56, 59, 59,239,236,210,165,139, 93,215,174, 93, 17, 30, 30,142,214,173, 91,195,106,181,130, 82, 10,149, - 74,133, 3, 7, 14, 96,249,242,229,177, 53,128,175, 42,211,211, 3, 23, 69,167, 78,189,211,168, 81,163,237, 21, 25,152, 98,147, - 85,105, 78, 98,197,231,166, 40,214, 44,235,155, 56,124,242,210,218, 6,101,134,147,171,189,217, 43,250,209, 67,142,237,231,102, -176,202, 18,121,160,197,160, 1, 3, 38,115,121,188,118,197, 61, 32,233,147,199,143, 35, 74, 38,149, 70,216,251,231,171, 88,151, - 74,198,174, 99,137,239, 12, 6,227,159, 74, 24,128, 72, 0,225,148,210,205,197,201,241,229, 39,195,243,120,188,236,146,168, 15, -143,199,203,142, 59, 58,113,100, 69,234,124,160, 75,113, 36, 11,149,206,117, 88,252,127, 34,160,130, 94,255,245, 31, 6, 35, 45, -213,187,144,255,202,250, 85,217,218, 2,224, 25,204,250,222,200,126, 12, 28,155, 84,164,215,124,241, 23,165,183,169,220,155,236, - 31,126, 87,144,175, 3,174, 67,173,190, 14,181,186,204,164, 93, 62, 79,144, 95, 89, 57, 95,221,246,100, 64,249,166,219,206,171, -226,254,225,189,193,254,252,183,145,150,155,123, 20,128,180,218,137, 19,158,103, 78,156, 24,250,217,244,233,131,188,125,124,106, -185,185,185, 57, 59, 56, 56,112,110,221,186, 21,111,214,233,214, 53, 6,118, 20, 71, 83, 43, 69, 15, 92, 12, 78, 78,174, 63,100, -192,128,201,132,199,107, 91,218,192, 80,179,249,183, 64, 96, 67, 69,145,172,215, 61, 55,253, 68,222, 93,138, 35, 89,224,218,120, -110,166, 22,149, 99, 9,204,230, 37,136,138, 42,163,206, 87,185, 46, 45, 38,132,168,192, 18,223, 25, 12,198, 63,151,147,197,230, -234,228,159, 62,249, 43,231,247, 1,208,149,105, 50,205,127,138,102,145, 87,129, 35,219,159, 76,147,105, 50, 77,166,249,246, 53, -255,169, 11,143,153, 80, 6,195, 54,104, 81,114,186,146,237, 9, 6,131,193, 96,148,166, 84,110, 86,233,123,198,102,160, 40,117, -167,107, 57, 55,149, 11, 85,248,129,174,175,113,211,186,192, 52,153, 38,211,100,154, 76,147,105, 50,205,127,151,102,101,218,127, -199,222,140,132,144, 9, 37,185, 89,175,142,169, 69,108,157,230,230, 53,127,152,117,125,101,154, 76,147,105, 50, 77,166,201, 52, -153,230, 63,154,138, 34, 90, 28,182,123, 24, 12, 6, 3, 88,180,136,112, 0, 66,128, 69, 28,224, 16, 23, 24,194, 45,122,253,250, - 12, 25, 66,202, 28,204,118,234, 40, 23, 7,182,199, 25,140,127, 14,148,210,140,242, 38,149,102, 57, 90,255, 93, 7,236,239,229, -229,181, 9, 0,201,204,204,156, 64, 41, 77,102,123,229,127, 15, 87, 87,215, 46,102,179, 25, 10,133,226,226, 63,113,251,234,215, - 38, 3, 40, 7,117,255,115,197, 64,242,227, 88,186,179,172,117,235, 5,145,119, 65,254, 51, 22, 23,177,226, 73,244,115,250, 75, - 21,234, 60,231,157,174,126, 27, 0,224,244,133,148,201,127,197,184, 90,132,144, 58,238,238,238,103,121, 60, 30,207, 98,177, 76, -202,202,202, 58, 81,190, 17, 26,194, 5, 0, 62,189, 60,219,205, 37,100,214,167, 31, 18,190, 70,191, 77,174,215, 22, 42,184,124, -110,130,136,239,117, 3, 92,223,211, 5,234, 86,143,203,250,254,193,131, 7,203,157,197,187, 65, 16,121, 39,164, 94,189, 62, 77, - 66,197,113,223,173,109,190,166, 67,160, 27, 63, 62,229,190,244,219, 31, 21,155, 28, 93,170,247, 25, 51,204,245, 4,207,158,140, -222,186, 53, 87,205,206, 50,219,249,134, 16, 23, 35, 16,202, 23,137,252, 44,102,179, 39, 1, 40,151,199,203, 50,233,245, 41, 2, - 32,106, 22,165,242,127,186,166, 64, 36,170,102, 49,155, 61, 1,224,127,177,156,140, 63, 82,174,209,114,112,112,184,199,225,112, -170,149,158, 12,183,100, 62,193,146,247, 74,127, 70, 8,129,197, 98, 73,205,207,207,111, 90,133, 11,162, 35,128,161, 0, 74,186, -168,239, 1,112,128, 82,170,124,205, 11,172,163, 64, 32,152, 33,145, 72, 58,107,181,218,250, 0, 32, 22,139,163, 11, 11, 11, 47, - 25,141,198,239, 94, 71,151, 16,194, 3, 48, 68, 42,149,118,226,112, 56,157, 40,165,132, 82,122, 89,173, 86, 95, 2,112,144, 82, -106,126, 13, 77,177,135,135,199,146,144,144,144, 17,179,103,207,206,115,117,117, 13,158, 54,109,218, 93,119,119,247,189,185,185, -185,115, 41,165,218,255,133,202, 65, 8,169,229,229,229,181,135,207,231,115, 83, 82, 82, 58, 1,128,159,159,223,101,131,193, 96, -201,206,206, 30, 73, 41,125, 81, 69, 61, 9,128,150, 82,169,180,169, 84, 42,109,111,177, 88,234, 22,207,207,248, 68,173, 86, 95, - 51, 26,141,247, 0,220,162,148, 22,254, 15,153, 97, 7, 15, 15,143, 93,132, 16, 16, 66,130, 40,165,170,127,220,147, 24, 7,117, - 31, 71, 63, 13,126,105,166,234,135, 84,176, 67,224, 95,198,186, 54, 27,173,206, 29,188,251,244,237,219,141, 3, 0, 6,211,233, - 62,168,226,228,215,182,152,172,129, 3, 7,254,190,107,215, 46,103,189, 94,143, 9, 19, 38,236,145,201,100, 27, 20, 10,197,236, -138,190,231, 40,117,158,182, 98,245, 57,251,162,249,175,225, 97,181, 90, 60,210,210, 94, 4, 61,126,244,123,207,232,232,155, 75, -181, 79, 47,221,178, 18,254, 68, 35,218, 61,181,165, 28,245,106,145,222,253,134, 12, 8,255,234,171,133, 24, 49,108, 68,245,232, -104,157,216,215, 49, 78,152,175,149,212,118,117,247,232,251,213,226, 67,228,198,245,163,125,119,109, 95,116,233,131, 15,220, 58, - 51,179,101,211,177, 37,139,121,188,150,206, 33, 33,237,135, 29, 61, 10,169,159, 31,143, 39, 18,113, 0,192,172,215,251,169, 83, - 82,188,247,247,237,219, 98, 17, 33, 87, 22, 80,122,155,105,254,255,107, 50,170,104,180, 56, 28, 78,181,180,180, 52, 15,137, 68, - 82, 18, 22,131,197, 98,129,197, 98,121, 57,121, 49,165,244,229, 95,179,217,140,144,144, 16,155,158,104, 1,116, 6,240, 94,199, -142, 29, 7,127,247,221,119,252,208,208,208,146, 41, 67,218,205,153, 51,231,123, 66,200, 97, 0, 59, 0, 92,180,245,137,151, 16, -210, 67, 34,145,236, 94,177, 98,133, 99,183,110,221,120, 62, 62, 62, 32,132, 32, 51, 51,179,229,133, 11, 23,154, 78,155, 54,109, - 18, 33,100, 20,165,244,108, 21, 78,236, 6, 14, 14, 14,135, 6, 12, 24, 80,173, 67,135, 14,118,245,234,213,131,197, 98,193,253, -251,247,199,222,187,119,111,248,225,195,135, 23, 16, 66, 6,219, 58, 95, 27, 33,132, 72,165,210, 49,190,190,190, 75,230,207,159, -239, 50,106,212, 40,225,163, 71,143, 10, 2, 3, 3,201,141, 27, 55,220, 15, 28, 56, 48,105,217,178,101, 67, 28, 28, 28,230,170, -213,234,159,169, 13, 9,116,142,142,142,247, 56, 28, 78, 53, 91,140, 48, 0,155,205, 48, 33,164,113,141, 26, 53, 14, 92,191,126, -189, 70, 98, 98,162,165,127,255,254, 59, 1,224,210,165, 75,161, 38,147,137,116,239,222,253, 52, 33,100, 40,165,244,190,141,219, -222,208,197,197,229,215, 17, 35, 70,184,212,170, 85,203,190, 70,141, 26, 68, 34,145,128,203,229, 66,161, 80,248, 60,122,244,168, -235,237,219,183,181, 23, 46, 92,200, 39,132,244,165,148, 70, 85,225, 56,181,246,240,240, 24,205,231,243, 27,152,205,102, 95, 0, -224,241,120,105, 38,147,233, 81,118,118,246, 46, 74,233,239,175,123,130,120,122,122,174, 95,178,100,137, 91,118,118, 54, 93,182, -108,217,122, 0, 99,254,169, 23,131, 61,123, 15,226,222,221,219, 0, 32, 32,132,144, 87,235, 31, 33,132,212, 13,130,224,211, 79, -167,163,105,179, 22, 24, 57, 98, 72,165,154,225, 93,253, 86,240,133, 2, 87,157, 78,247,187, 66,163, 63,232,233,234, 52,116,196, -240,222,177, 0,112,250,204,149,161, 45, 90,184, 92,150,217,139,134,216,217,217,181, 54, 25,140,121, 39, 47,164,124, 94, 21, 83, -229,235,235,123,214,217,217,217, 62, 63, 63, 63, 51, 39, 39,103,227,192,129, 3, 23,239,216,177,195, 57, 62, 62, 30, 41, 41, 41, -248,228,147, 79,164,169,169,169,147, 69, 34,209, 77,189, 94, 95,110,100, 75,165,202, 95, 59,103, 86,191,249, 50,153, 27, 87, 98, -239, 8, 7,153, 11, 2,107, 53, 66,203,214,125,240, 78,248, 7,120, 30, 27,217,114,199,246,175, 34,211,210, 46,124, 35,117,169, -185, 88, 46,175, 81,238,117,169,126, 48,233, 80, 98,178,230,207, 95,136,152,167, 79, 85,137, 9,156,143, 79, 30,229,217,191,211, - 37, 68,100, 54,100, 38,222,184,126,180, 70,219,118,253, 1,160,233,174,237,139, 46, 77, 29,229,210,101,221,238,124, 21,187, 37, -149,127,237,252,138,207, 31,211, 99,245,106,143,176, 73,147, 4,234,132, 4, 99,220,143, 63,106,178,174, 93,179,240, 68, 34,234, -215,179, 39,113,239,212,201,110,210,147, 39,130,223,150, 45,107,191, 84, 40, 12,156, 99, 48,236,102,154,255,127,154,172,142,190, - 76,134,127,153,171, 85,210,124,200,171,224, 75,144, 72, 36,216,191,127, 63,248,124, 62,120, 60, 30,248,124,126,185,255,251,251, -251,219, 82,144,129, 94, 94, 94,223,111,216,176,193,179, 71,143, 30,176,179,179,123,249, 25,151,203, 69,183,110,221,208,181,107, - 87,126,122,122,250,240,253,251,247, 15, 95,186,116,105, 22, 33,100, 10,165,244, 72, 37,186,157,130,131,131,143,156, 59,119, 78, -172,211,233,112,237,218, 53, 20, 20, 20, 64, 40, 20,162, 90,181,106,232,222,189, 59,239,233,211,167, 46,221,186,117, 59, 66, 8, -233, 77, 41,189,108, 67, 89,155,122,120,120, 92, 61,120,240,160, 93,163, 70,141,200,243,231,207, 17, 22, 22, 6, 0, 80, 40, 20, -232,223,191,191,221,168, 81,163,106, 13, 31, 62,252, 22, 33,164, 3,165,244, 94, 37,122, 77,188,188,188,126, 30, 48, 96,128,207, -210,165, 75, 29, 29, 28, 28,144,152,152,152,225,229,229, 21, 84,178,191,135, 15, 31, 46,236,211,167,143,247,242,229,203,215, 30, - 58,116,232,115, 66,200, 24, 74,105, 68, 69,186, 37,134,216,222,222, 30, 89, 89, 89,216,179,103, 15, 38, 79,158, 12, 46,151,139, -236,236,108, 28, 56,112, 0, 31,127,252,113,137,161,177,201, 12, 75, 36,146,174,141, 26, 53,218,122,233,210,165,106, 78, 78, 78, -240,241,241,225,124,249,229,151, 13, 2, 3, 3,197,213,171, 87,231,102,100,100,224,200,145, 35,129,163, 71,143,254,213,206,206, -110,172, 78,167,171,180, 73,205,211,211,115,219,201,147, 39,253,163,163,163,241,227,143, 63, 34, 63, 63, 31, 66,161, 16, 78, 78, - 78,240,242,242, 66, 80, 80, 16,153, 53,107,150,125,159, 62,125,236,167, 76,153,178, 13, 64, 99, 27,142, 81, 35, 15, 15,143, 77, -195,135, 15, 15, 92,180,104,145,147,151,151, 23, 74, 30, 12, 20, 10, 69,181,196,196,196,150,243,231,207, 31,236,233,233, 25,159, -157,157, 61,145, 82,250,160,138, 39, 78,227, 46, 93,186,244,238,223,191, 63, 55, 35, 35, 3,187,118,237,234, 77, 8,105,108,171, -185,252,187,113,239,238,109, 76,248,232, 19,181,143,159,159,224,220,217,173, 3,229,242,122,119,157,196, 69, 19, 82,203,181, 48, -118,238,192,109,214,189,199, 7,130, 94,225,253,213,155,127, 88, 43,181,197,104,241,133, 2,215, 61,187, 87, 37, 95,191,113,175, -193,249, 11,183,123, 14,236,219,151, 10, 4, 78,129, 0,240,249,180, 79,249, 71,142, 29,219,222,173,107,139,244,118,109,155, 38, -143, 28, 53,221,191, 10,199,166, 78,157, 58,117,174, 68, 70, 70,122,138, 68, 34,228,231,231,187,110,222,188,121, 85,219,182,109, - 57,113,113,113,120,250,244, 41, 18, 18, 18,160, 80, 40,208,173, 91, 55,105, 68, 68,196, 70, 0,229, 26, 45, 35,167,243, 18,159, -234,166,117,174, 98, 73, 13,163, 69,233, 65, 77, 25,245,206,159, 60,223,112,223, 46,109,152,167,119, 72,208,123,239, 47,192, 87, -139, 15,243,247,238,249,118,254,197, 11,251, 0, 78,141,242,103, 4,160,104, 61,103,238,108, 40, 85,122,140, 26, 49, 30,163, 71, -140,119,165, 48,120, 83,139, 78, 98,208, 22, 56, 57, 8,158,156,216,176,101,213, 0, 0,213, 74,153,173,139,204,108,149,207, 87, - 60, 94,139,222,223,127,239,222, 96,220, 56,209,131, 69,139, 10,115,175, 93,211,214,238,213,171, 32,236,195, 15,245, 0,160, 74, - 72, 16,196, 44, 88, 96,239,222,190,189,184,213,140, 25,206, 22,131,193,235,107, 66,154,127, 73,233,157,170,106,250, 15, 29,106, -153,191,125,123,179,107,211,167,119, 36, 38, 19,183,103,171, 86,247,151,237,218,149,246, 38,154,111,179,156,233, 87,175,234,243, - 3, 3, 17,214,191,127,158,191,135,135,254,109,110,251,155,148,147,129,146,160, 84, 6,128,146,145,225,139,174, 87,148, 82,156, - 60,121,178, 3,128, 43, 0, 22,133,135,135, 47, 4, 0, 39, 39,167, 44,185, 92,238,113,228,200,145, 74, 77, 22,159,207,135,183, -183, 55,130,130,130,178,179,178,178, 60, 43,184, 56,166, 88,173,214,106,148,210,151,209,151,242,208,235,245,136,141,141, 69,195, -134, 13, 83, 41,165,126, 21, 53,237,216,219,219,199, 61,125,250,212,237,241,227,199,184,119,239, 30, 2, 3, 3,225,236,236, 12, - 62,159, 15,147,201, 4,165, 82,137,224,224, 96,136, 68, 34, 52,105,210, 36,183,176,176, 48,176,162, 38, 32, 66,136, 72, 34,145, -196, 94,189,122,213, 47, 44, 44, 12,119,238,220,129,159,159, 31,188,188,188, 0, 0, 9, 9, 9,184,113,227, 6,122,245,234,133, -200,200, 72, 12, 26, 52, 40,165,176,176, 48,136, 82,170, 47, 79,211,213,213, 53,227,210,165, 75,169,161,161,161,186,194,194, 66, - 78, 86, 86, 22,255,218,181,107,102,149, 74, 37, 85, 40, 20,124,185, 92,206, 87, 42,149,188,194,194, 66, 62,135,195, 17,104,181, - 90,254,197,139, 23,185, 6,131,193,177,162,253, 84,114,156,142, 29, 59,134,208,208, 80, 28, 57,114, 4,159,125,246, 25,126,251, -237, 55,248,249,249,225,224,193,131,152, 49, 99, 6,158, 61,123, 6, 55, 55, 55,212,171, 87,175,194, 99, 4, 0,181,107,215,126, -254,240,225,195, 90, 2,129,160,100, 94,199,146,249,242,144,147,147,131, 23, 47, 94, 32, 45, 45, 13,181,107,215,198,136, 17, 35, - 94,164,166,166,214,174,172,242, 85,171, 86, 45, 39, 58, 58,218,173, 97,195,134,200,202,202,130,147,147, 19,100, 50, 25,156,156, -156, 94,254, 31, 24, 24,136,233,211,167,195,203,203, 43, 91,171,213,122, 86,102,130, 66, 67, 67,207, 94,188,120,209,205,209,209, - 17,153,153,153, 80, 42,149,224,241,120,176,183,183,135,155,155,219, 75, 35, 31, 27, 27,139,240,240,240,220,184,184,184, 30, 85, -136,192,113, 60, 61, 61,159, 70, 69, 69, 5, 81, 74,145,156,156,140,103,207,158,225,163,143, 62,138,213,233,116, 33,255,164, 57, -251, 74,229, 93, 9,198,188, 63, 65, 48,160, 95,107,195,147,232, 19, 68,100,125,134,198, 13, 28, 21, 0,112,255,145, 82,166,231, - 4,163,110,253,222,244,151, 95,127, 23,254,188, 99, 51, 31, 86,120,130,224,217,227, 24,250,117,121,218, 61, 58,251,140,251,244, -211,177, 13, 58,182,237,192, 81, 21, 22,122,108,220,184,186, 73, 92,220, 19, 15, 0, 8, 12,172,155, 61,105,210,180, 8, 7,137, - 36,251,202,141,171,214, 53,107,182, 61, 58,123, 41,125,139, 13,199, 38, 48, 40, 40,232,230,177, 99,199,220, 60, 60, 60, 32,147, -201, 80, 88, 88, 8,163,209,136,199,143, 31,235,246,239,223,111,114,116,116,116,200,204,204,132, 92, 46, 7, 33, 4,199,142, 29, - 75,166,148, 6,188,170, 85,146,163, 5, 0, 31,189, 83,151, 95,175,115,144,179, 64,100, 22,139,249, 49,222, 32, 22, 17,161, 82, -207,211,103,239, 55, 60,125,254,206,200, 1, 3, 63,115,111,215, 97, 0,230,207, 27,108, 74, 79, 79, 14, 51,162,221,211,178,114, -180,234, 6,145,206,253, 7, 13, 24,242,213, 87, 11,177,112,254, 34,156, 56,118, 84, 33,149,112,244,142, 78,124, 89,251,150,109, -116,211, 39,247, 75, 81,171,211,253,190, 90,190,127, 68,120,191,233,213,218,182,235,143, 27,215,143, 98,215,246, 69,247,136,152, -178,102,196, 87, 88, 68,136,179, 83, 96,224,196,169,177,177,130, 7, 11, 23,170,205,233,233, 5, 77,167, 77,203, 45,107,221,212, -243,231, 37, 66, 31, 31, 71,231,190,125, 93,214, 6, 4, 80, 83,118,246,166,178,114,140,202,210,188, 32,149, 58,237, 59,125,186, - 11,229,243, 59,204,252,226, 11,113,239,222,189,161, 84, 42,113,248,240, 97,108,250,241, 71,189,183,183,247, 67,159, 71,143, 34, - 27, 40,149,243,108,213,108, 58,109, 90,174,197, 98, 33, 67,102,204,232, 22,157,144,208, 57, 51, 59,187, 58, 0,120,187,184,164, - 52, 13, 12,188,183,237,196,137,103,235,107,212,176,218, 90,206,159,206,156,241, 60,148,152, 56,206,197,197, 69,156,149,157,205, - 19, 9,133,121, 45,235,213, 59,248,195,220,185, 87,204, 81, 81, 2,187,106,213, 28,101,189,123, 87,121,219,155, 78,155,150,155, -175, 82,241,166, 46, 94,220, 38, 41, 43,171,186, 90,175,175, 45, 87,169,188, 44, 38, 19,199,209,222, 62,175,102,112,112,182,246, -218,181,140,154, 26,205, 39, 63, 81,154,253, 87, 29,235,178,188,200,223, 40,162,245,106,175,195, 63,205,117,120, 37, 60, 60,156, -148,225,204,108,138,102,241,249,252, 63, 52, 83, 85,128,128, 16,130,136,136, 8,184,186,186,194,203,203, 11, 34,209, 31, 39, 31, -204,201,201,193,111,191,253,134, 39, 79,158,160, 81,163, 70, 0,138,158,168,203, 67, 36, 18,125,186,124,249,114, 39,131,193,128, -123,247,238,161,105,211,166, 16,137, 68, 16, 8, 4,127, 48,129,217,217,217,168, 95,191, 62,102,206,156, 41, 91,186,116,233,167, -168, 96,142, 58, 30,143, 55,101,252,248,241, 30, 37, 17,172,148,148, 20, 52,105,210,228,229,231,238,238,238,184,127,255, 62,154, - 54,109,138,106,213,170, 97,240,224,193, 30,187,118,237,154, 2,224,187,242, 52,133, 66, 33, 39, 52, 52,180, 89,113,196, 8, 28, - 14, 39,198,209,209,209,221,211,211, 83,226,232,232,248,167,109,220,190,125,187,156,195,225,152, 42,219,161, 28, 14, 7,153,153, -153,104,208,160, 1, 20, 10, 5, 0,160,176,176, 16,181,107,215,134, 82,169,124,105, 90,125,124,124,160,213, 86,156,250,213,168, - 81,163,133, 33, 33, 33,221, 59,118,236, 40,226,243,249,120,240,224, 1,194,194,194,176,127,255,126,248,251,251,195,222,222, 30, -177,177,177, 8, 13, 13,197,213,171, 87,225,238,238,142,250,245,235,139,154, 52,105,114, 61, 63, 63,255,114, 98, 98,226,194, 10, -202,201,145, 74,165,184,122,245, 42,182,109,219,134,132,132, 4,164,167,167,195,193,193, 1,141, 27, 55, 70,189,122,245,208,186, -117,107,196,198,198,130, 84, 82,153, 8, 33, 94, 65, 65, 65, 39,238,220,185,227, 70, 41,197,174, 93,187,160, 86,171, 97, 48, 24, -192,225,112, 96,103,103, 7,103,103,103,116,238,220, 25,238,238,238, 8, 10, 10,194,129, 3, 7,220,222,121,231,157, 83,197, 17, -169,204,202,246,171,179,179,243, 39, 11, 22, 44,240,243,240,240, 64, 98, 98, 34, 20, 10, 5, 60, 61, 61,209,177, 99, 71,223, 11, - 23, 46,124, 2, 96,245, 63,229, 70, 86,146,248, 78, 8, 33,231,206,110, 29, 24, 84,179, 32,180, 81,176,189,223,145, 19,158,126, -251, 79,100,215, 7,128, 6,117, 61,163, 7,246,182, 79,121, 16,125, 34,229,220,217,163,247,158,196,224,136, 45, 77,219, 10,141, -254,224,249, 11,183,123,134, 53,106, 98, 93,254,237,140,240,201, 31,141, 19,121,120,126,128,172,228,163,184,112, 41,194,127,198, -103,227,221,191, 91,249,211,233,243, 23,110,115, 20, 26,253, 60, 91,202, 91,167,142,255,250, 29, 63,180,118, 83,229, 30,194,243, -167, 66,136, 29, 26, 32, 48,176, 14,148, 74, 37,236,236,236,236, 70,140, 24, 97,153, 61,123,182,198,209,209,209,158, 16,130,203, -151, 47,103, 3,232, 81,153,174,206,195,153, 90,140, 38, 51, 21,114,173,148, 56,104,137, 37, 95,248,232,113, 60,186,119,237,148, -213,182, 69,131,165,179,191, 90, 57, 39,168, 78,152,251,216,113,139,248,139, 23,142,252, 17, 4,237,202,210,121, 18, 75, 47,213, -171, 69,196, 0,194,191,250,122, 33,226,226, 98,157, 39,188, 39, 95,196, 19,137,125, 66, 2,218, 56,252,184,237,114,207,218,181, -107, 84,159, 62,101,240,201, 85,223,175, 10, 47, 29,217,218,177,125,193,175,132,144, 46,244,175, 28,119,231,239, 71,195,209, 39, - 78, 64,157,156,108,202,191,126, 93,215,229,251,239,115,253,122,244, 88,109, 48, 26,221, 74, 46, 21, 28, 66, 64, 74, 82, 39,172, - 86,194,155, 57,147, 67,121, 60,152,156,157,223,155, 5,212,169, 76,243,179,140,140,129, 35,199,141, 11,255,245,204, 25,212,168, - 81,227,229,253,204,201,201, 9, 51,102,204,192,180,105,211, 68,247,239,223,111,126,232,208,161,230,223,173, 88,225, 57, 11, 24, -104, 75, 57,207,221,186,229,252,225, 87, 95,205,109,212,180,169,255,206, 61,123, 68,181,106,213, 2, 0,188,120,241, 34,232,219, -101,203, 2, 26,132,134,102, 45,253,244,211, 29,209,179,103,215, 7,112,189, 34,205,204,107,215, 12,135, 18, 19,199, 93,186,124, -217,169, 65,131, 6, 0,128,103,207,158,121,172, 93,187,118,124,253,193,131, 71,125, 53,105,210,188,222, 58,157,220, 49, 39, 71, -212,123,253,122,222,190, 33, 67, 42,213, 44, 41, 39, 0,116, 28, 59,246,211,118,157, 58,213, 27, 56,110,156,139,191,191, 63,145, - 74,165, 48, 26,141, 72, 79, 79,119,142,142,142,174,117, 66,165, 82,254,114,235,214,174,159,138, 39,139,255,139, 40,211,139,252, -157, 34, 89,101,122,138,226,191, 29, 79,158, 60, 73, 1,116, 12, 15, 15,191, 90,114, 3,183, 88, 44, 54,153, 44, 30,143,135,226, -100, 97, 91, 11,132,220,220, 92,228,230,230,190,108, 58,202,206,206,198,165, 75,151, 16, 27, 27, 11, 62,159, 15,129, 64, 0,163, -177,242, 57,104, 37, 18, 73,215,174, 93,187,242,110,221,186,133,192,192, 64,136,197,226,151,229, 42, 89, 4, 2, 1,188,189,189, -161, 84, 42,209,165, 75, 23,254,186,117,235,186, 86,100,180,100, 50, 89,175,161, 67,135, 10, 75, 94,171,213,106,112,185,220,151, -166, 69,173, 86, 35, 63, 63, 31,114,185, 28, 58,157, 14,173, 90,181, 18,158, 56,113,162, 87, 69, 70,171, 52, 26,141, 70,157,157, -157,237,212,174, 93, 59,231, 29, 59,118, 60,107,213,170, 85,240, 31,106,218,149, 43, 58,157, 78,199,231,112, 56, 54,205,163,183, -123,247,238,151,251, 62, 45, 45, 13, 63,254,248,227,203,207, 98, 99, 99,177,110,221,186,151, 83, 1, 84,116,140, 66, 66, 66,222, -217,181,107, 87,211,157, 59,119, 22,112,185, 92, 60,123,246, 12,123,246,236, 1,165, 20,238,238,238,208,104, 52,200,202,202,194, -229,203,151, 97, 54,155, 33,149, 74,225,235,235,107, 55,101,202,148,182,139, 22, 45,226, 3, 40,215,104, 89, 44, 22, 11,151,203, - 69, 64, 64, 0,230,207,159, 15,157, 78, 7,129,160,200, 95, 42,149, 74,200,229,114, 68, 70, 70, 34, 49, 49, 17,149,221,100,236, -236,236, 6,239,220,185,211, 67, 40, 20, 66,171,213, 66,165, 82, 33, 37, 37, 5, 73, 73, 73,186,236,236,108,179,131,131, 3, 39, - 32, 32,128, 35, 18,137, 68,253,251,247, 39, 37,134,179,119,239,222,174,187,118,237, 26, 86,153, 73, 34,132,184,215,173, 91,119, -206,248,241,227,237, 74,215,217,204,204, 76, 12, 28, 56,208,254,247,223,127,159, 77, 8,217, 67, 41,205,249,135,133,188,169, 92, - 94,239,238,189, 11,207, 66,143,156,240,244, 75, 74,181,180,153,241,249, 74, 30, 0,108,222,244, 77,155, 35, 39,210,126, 11,169, -145,149,114,232,151, 58,119,157,156, 30,211,202, 34,130,157, 59,120,247,241,116,117, 26, 58,176,111, 95,186,113,227,234, 38,147, - 63, 26, 39, 10,168, 51, 3, 0,224,203,247, 64, 23,243,215, 68,163,125, 97,183,113,227,234, 38, 3,251, 14,138, 76, 72, 72,220, -212,165,163,207,129, 75, 87, 51,142, 87, 20, 49,244,112,181,243,181, 23, 21,194, 55,176, 30,130,235, 74,112,255,193, 51, 28, 62, -120, 19,117,235,183,132, 94,175,135,217,108,150,244,233,211, 71,179,127,255,126, 93, 76, 76,140, 74,171,213,118,160,148,198, 84, -182,253,169,169,143,173,193, 94, 45,141, 2,177,200,172, 82, 8, 52,179,230, 29, 26,210,164, 69,247,166,206,222,190,124,119,137, -245,248, 59,221,154,239,217,182,101,254,180,121, 11,246,160, 89,243,238,173,158, 60,187, 94, 15,192,195, 50,205,235, 11,122,162, - 65, 16, 49,199, 61,127, 30,158,148,152,152, 90,199,211,203,240, 66, 78, 77,159,204,250,169, 91,187, 14,131, 27,214,170,219, 94, -248,228,241, 85, 50,127,230,176,189, 95, 45, 95, 53,162,196,108, 93, 60,191,183,195,123,239,221, 20, 2,208, 51,127, 85,252,116, - 46, 18, 85,147, 6,252, 31,123, 87, 29, 94,197,241,118,207,236, 94,191,113,247,132, 32, 73, 32, 4,183,226, 20, 39, 80,164, 88, - 11, 5, 74,209,210, 2,133,226,210, 82,193, 74,129, 22,135,182,184, 59,193, 41, 65,138,123, 18, 32, 16, 36, 16,119,189,190,187, -243,253, 17,249,133, 52,114, 19,168,241,237,121,158,251,220,187,123,119,207,206,236,204,238,156,121,231,157,119,124, 36,207, 54, -110,212, 86,235,209, 35, 29, 0, 12, 70,163,227,179,231,207,109,212,106, 53, 40,165, 48,153, 76,175,248, 16, 23,248, 13, 7, 5, - 4,184,152,195,249,108,246,236,186, 83,166, 76, 65, 66, 66, 2, 56,142,131, 84, 42, 45,254,206, 70,110,110, 46,134, 14, 29,138, -159, 23, 47,110,102, 14, 39,207,243,100,244,188,121, 51,167,206,156, 89,125,212,168, 81, 76,209,119,175,189,189, 61,246,236,221, - 43, 95,185,114,165,231,140,159,127, 30,250,161, 66,241,164, 60,206,148, 26, 53, 96,159,152,168, 42, 16, 89, 0, 16, 16, 16,128, - 53,107,214, 40,134, 15, 31, 46,239,209,163,199,146,219,245,234, 45, 95,218,178,229, 99, 7,127,127,107,185, 66,225,105,238,253, - 4,128,108,157, 46,104,233,242,229,118, 87,175, 94, 69, 98, 98, 34, 18, 18, 18, 10,158,101, 52,110,220,152, 12, 30, 60,216,166, -170,151, 87,147,191,184,184,255,164, 69,254, 67, 22,173,145, 37,188, 83,255,231,163,149,159, 33,146,159, 65, 82,164,113,124, 69, -176,148, 39,180, 42,131,140,140, 12,100,100,100, 96,195,134, 13,144,201,100,133,141, 47, 0, 24, 12, 6,115, 68, 75, 29,119,119, -119,100,102,102,194,223,223,255, 21, 75,150, 76, 38,131, 68, 34,129, 76, 38,131, 66,161,128, 94,175,135,183,183, 55, 52, 26, 77, -157,178, 56,181, 90,109,125,123,123,251,194, 6, 86,175,215, 23,138,172,130,244, 26, 12, 6,164,167,167, 35, 39, 39, 7,217,217, -217,200,205,205,109, 96, 78,126, 5, 65, 64, 88, 88, 88, 84, 64, 64, 64,125,150,101, 97,105,105,105,145,155,155, 91,232, 91,148, -150,150,134, 77,155, 54,229,126,244,209, 71,142,135, 14, 29,210,152, 81,184,248,236,179,207,160, 80, 40,160,209,104,176,122,245, -106,124,254,249,231,144,201,100,200,206,206,198,154, 53,107,240,197, 23, 95, 64, 34,145,192, 96, 48, 96,249,242,229,165, 91, 54, - 34, 34,158, 93,185,114,165, 65,195,134, 13,237,246,239,223,159,220,177, 99, 71,167,206,157, 59, 67,165, 82, 65,171,213,194,100, - 50,161, 89,179,102,168, 89,179, 38,146,146,146,112,236,216,177, 20, 63, 63, 63,199,171, 87,175, 10, 9, 9, 9,209,229, 53,226, - 69, 44,134,224,121, 30,137,137,137,200,200,200, 64,114,114, 50,226,226,226, 16, 19, 19, 3,137, 68,130,242, 58,243, 14, 14, 14, -239, 7, 5, 5,177, 0,160, 82,169, 80,191,126,125,204,156, 57,147,211,106,181,253, 1, 28,203, 63,172,235,250,245,235,247, 95, -188,120, 81,226,238,238,142, 7, 15, 30,192,201,201, 73,162, 84, 42,203, 21, 90,174,174,174,191, 29, 62,124,216,190, 64, 92, 23, -220,103,141, 38,175, 56,250,244,233, 99,191,121,243,230,223, 0,116,123,219, 26, 53, 91, 21,100,245,131,172, 51,119, 30, 73,170, - 61,249,203, 37,146,154, 65,121,157,215,145,163, 32,249, 97,241,164,218,131,122, 90,135,216,170,178,100,229,241,116,237,224,181, -242,189,247, 58, 50, 31, 12,236,254, 72, 38,179,173,182,118,221,215,206,206, 46,195,139,152, 56,173,225,224,104,141,106, 62,114, -178, 39,228,190,243,180,233,223,232,183,110,254,241,201,246, 29, 71,186,200,165,167, 58, 1, 24, 83, 26,119,100, 84,198, 33,141, - 94, 89, 43, 43,245, 46,177,119,105,129,250,245, 2,224,236,148,142,245,191,237,132,111,213,198,208,235,245,176,182,182, 86,243, - 60,111,100, 89,118,171, 57, 34, 11, 0,206,156,201, 16,106,215,206, 48,176,217, 2,247,233,231, 63,244,238,216,245,189,192,119, -223,237, 32,156, 60,117,210,216,162,129, 49,190,107,231,250,137,199, 79,173,124, 20, 31,247,212,175,118,157,150,136, 8, 63,219, - 5, 32, 97, 64,201, 21, 54,236, 17, 61, 94,189, 58, 57,187,115,231, 72, 65, 43,220, 82,125,251,221,189,174,193,193, 67,130, 90, -183,106, 45,156, 58,253,187, 65,142,148,251,214, 45,155,199,126,250, 73,215,253,191,108, 93,222,233,248,177,223,106,100,102, 69, - 31,249,237, 55, 42,138,172,162,157, 52,142,115,145, 40, 20, 76,242,217,179, 92,157,225,195,245, 5,207,163, 90,173,198,193,131, - 7, 33,151,203, 11, 63, 50,153,172,240,183,139,139, 75,193,228, 43,179, 56, 1, 32, 62, 62, 30, 9, 9, 9,176,177,177,129,147, -147, 19, 18, 18, 18,112,233,210, 37, 68, 70, 70, 66, 42,149,162, 75,151, 46, 96, 74,241,109, 46,206,217,111,242,228,142,181,234, -212,241, 46, 46,178, 0,192,104, 52, 34, 45, 45, 13, 61,123,246,100,142, 29, 59,230,122,252,197,139,247,102, 3, 91,203,226,108, - 16, 28,156,154,184,103, 79,137,215,110,216,176, 33,249,227,143, 63, 20, 93, 58,119,158, 56,233,187,239, 86,254,188,121,243, 75, -158,227, 92, 43,146,119,134, 97, 24, 66, 8,188,188,188,144,150,150,134,156,156,188, 17,108, 75, 75, 75,216,217,217,193,100, 50, - 65,160, 84,250, 87,150,117,105, 90,228, 63,210, 81, 93, 87, 32,184,138, 71,134,151,228,143,139, 22,188, 40,218, 22,109, 88, 4, - 65, 48, 75,100, 73,165,210,114,125,174,204,177,114, 21,135, 57, 66,171, 32,173, 74,165,178,240, 65, 43, 42,176, 10,210,201, 48, - 12, 88,150,133, 57, 22,121, 65, 16,216,236,236,108,236,221,187, 23,109,218,180, 41, 28,150,202,204,204, 68, 70, 70, 6, 50, 51, - 51,161,211,233,240,236,217, 51,156, 57,115, 6, 53,106,212, 0,204, 12,254,250,228,201,147, 27,190,190,190,141, 10, 26,241,118, -237,218,121,110,220,184, 49,174, 91,183,110,238,148, 82,204,154, 53, 43,165, 89,179,102,142, 69, 27,249,242,192,178, 44, 46, 93, -186,132, 26, 53,106,128, 82, 10,153, 76,134,135, 15, 31,194,217,217, 25,130, 32, 64, 34,145, 32, 57, 57, 25, 86, 86,101,199, 72, - 12, 11, 11, 27,246,241,199, 31,199,217,216,216,212, 77, 77, 77,141, 87, 40, 20,173,206,159, 63,239,101, 52, 26, 97,109,109, 13, -107,107,107, 28, 61,122, 20,182,182,182,152, 48, 97,194, 11,173, 86,123,201,194,194,194, 69,171,213,222, 77, 72, 72,152, 85,145, -242,230, 56, 14,185,185,185, 72, 79, 79, 71, 90, 90, 26,178,178,178,160,211,233,202, 77, 99, 73,104,213,170, 21,142, 28, 57,194, -206,159, 63,255,151, 39, 79,242, 58,134,213,170, 85,195,132, 9, 19, 88, 15, 15, 15, 60,123,246, 12, 55,110,220,128,209,104, 4, -165,180,204,135, 87, 42,149,182,155, 52,105, 82, 75,111,111,111, 98, 52, 26, 33, 8, 2,244,122, 61, 10,126,191,120,241, 2,181, -106,213, 98,124,124,124,222, 33,132,180, 51,103, 98,133,136, 60, 36,190, 56, 0, 15,169, 51,192, 88,131,106, 15, 32, 53,165,114, -203, 70, 38, 37, 37,125, 55,101,246, 31,195,127, 94,100,116,137,137, 7, 2,130,122,193, 47,176, 61,134, 13,230, 48,127,241, 94, -120,251, 4, 32, 58, 58, 26,237,218,181,147,197,197,197,125, 12, 96,178,185,220,167, 78, 93,225, 79, 30, 61,214,183,223,128, 33, -141, 58,116,232,198,157, 56,113, 20, 97,119, 79,132,127, 60,224,253, 36, 42,228, 16,123, 91,213,173,135, 15,174,251,213,173,223, - 22, 6,142,111, 5,124,181, 8, 64,169, 47,149,168, 40,106,248,250,235,175,153,144, 3,191, 13,254, 96,208,208,122,237,219,119, - 50,157, 56,117, 24, 55, 46,159,186,179,100,209,136,115,243,151,239,106,215,177,203,251,181,157, 92, 46, 29, 13,242,215,127,226, -229, 96, 19, 37,214,148,146, 33, 81, 42, 5,228,191, 23, 25, 66, 64, 41,125, 69,100, 21, 23, 90, 12,195,148,107, 0, 40,202, 89, -180, 45, 42,232, 80,175, 93,187, 22, 10,133, 2,114,185, 28, 82,169,180, 92,247,139,162,156,225,207,158,189,187,105,235, 86, 69, - 73, 34, 43, 53, 53, 21,169,169,169,200,201,201,193,192,129, 3,101, 95, 95,191,222,176, 60, 78,111, 55, 55,189,133, 74,149, 24, - 17, 17,225, 30, 24, 24,248, 74,122,179,178,178,160, 82,169,176,117,219, 54, 89,247,224,224,177,237,143, 30, 93, 2, 32,163,162, -121, 39,132,192,217,217, 25,118,118,118, 32,132,128,227, 56, 36, 36, 36, 32, 60, 60, 28,215,175, 95, 7, 75, 8,247, 87,150,113, - 73, 90,228,191,102,213, 42, 46,178,138, 90,180, 72,105,214, 23,115,133, 22,203,178,149,182,106,149, 6,115,134, 14,213,106,245, -189,184,184,184, 22, 30, 30, 30,224, 56,174, 80,104, 21, 31, 58, 44,176,126,220,190,125, 27,106,181,250, 94,121,156,148,210,119, -154, 52,105,130,125,251,246,225,236,217,179,120,250,244, 41, 52, 26, 13,244,122, 61,180, 90, 45,194,195,195, 33, 8, 2,130,130, -130, 96, 97, 97, 81, 46, 39, 0,228,230,230,198, 75,165,210, 0,149, 74, 85,184,207,205,205, 13,169,169,169,130,201,100,194,166, - 77,155,178, 92, 93, 93, 45, 84, 42,149,217,194,149, 16,130,164,164, 36,120,122,122, 22,250,104,101,103,103,195,217,217,185, 64, - 88, 64,175,215,195,202,202,170,220,161, 67, 74,169, 14,192,164, 34,220,141,251,245,235,183,125,231,206,157, 85, 79,159, 62,141, -171, 87,175,194,201,201, 9,223,127,255,253,211,231,207,159,127, 64, 41,189,254, 23, 84,212,114,143, 73, 77, 77,221,123,239,222, -189,119,154, 52,105, 82,248,150,104,215,174, 29,105,215,174,157, 99, 81, 83,127,114,114, 50,174, 93,187,134,211,167, 79,131, 16, -130, 71,143, 30,241, 90,173,118,123, 25,215,150,249,248,248,108,156, 57,115,166, 37,199,113,133,117, 91,165, 82, 65,169, 84, 66, - 38,147,129,101, 89, 60,127,254, 28, 61,123,246,180, 89,177, 98,197,111,132,144,234,148, 82, 35,222, 18,100,104, 97,188, 29,150, -101, 19, 84,203, 37,124,221,218,249, 45, 70,142, 66,193,208, 33, 23, 84,203, 57,252,118, 88,162, 77, 35,103, 24,109,229,101,243, - 28, 59,253,242, 83,131,233, 88,143, 99,199, 67,251,127, 57,113,130,180, 90,181, 90, 73,167,127,191,233,221,158,251,134, 56, 56, - 90, 35, 53, 37, 11,207, 95, 36,226, 73,180,129, 86,171, 86, 43,233,198,181,123,138,197, 75,151,249,229,106,116,187,126, 63, 23, -127,184,156, 78,153,142, 16,210,107,201, 79,138,115, 67, 62,110, 44, 87,169,220,145,150,114, 15,222,222, 78,232,217,189, 46,126, -221,124, 9, 54, 54,246,112,113,113, 1,195, 48, 22,230,230, 61, 37, 37,133,236,221,113, 97,248, 71, 67, 71, 52,235,220, 41,152, - 59,126, 34, 68,114,246,228,161, 75,191,173,155,177,159,178,185,106, 66,179, 85, 85,124, 93,239, 70, 61,190,253,193,187, 29, 6, - 66, 37,179,170, 1,212, 44,177,194, 22, 78, 48,160,120,193, 48, 80,126, 52,116,100,243,206,157,223,227, 78,156, 56,128, 19, 71, - 55, 95,153, 59,183,202,209,167,177,219,100,151,175,199, 40,123,245, 29,147,126,228,216,125,195,251, 61,124, 35,221, 45,234,107, - 33,226,213,142,164, 68,146,200,233,245, 94,158,157, 59,179,154,232,104,169,165,139, 11, 7, 0, 38,147,169, 92,161, 5, 64, 48, -135,211,220,180,104, 52, 26, 8, 0,103, 14,103, 66, 82, 82,149,252, 78,120, 33, 76, 38, 83,161,200, 74, 77, 77, 69, 70, 70, 6, - 44, 44, 44,144,172,215,187,152,195,217,169,105,211, 77, 95,127,245,213,228, 61,123,247,202,138,138,172,130,143, 84, 42,197,194, - 69,139,100,159,127,249,229,152,177, 18,201,248,138,220,207,130, 78, 59,203,178,144, 72, 36,136,142,142,198,139, 23, 47, 16, 29, - 29,141,232,232,104,168, 84, 42,208, 82,238,231, 27,180,104,145,255,106, 61, 45, 24, 58, 44, 58,132,104, 86,120,135,138, 56,195, -155, 43, 12,120,158,127,163, 66, 43, 55, 55,247,244,153, 51,103,154,246,234,213, 75,114,229,202, 21,184,186,186, 22, 10,173,130, -239,130,225, 40,181, 90,141,253,251,247, 27,115,115,115, 79,151,243, 48,157, 57,122,244,104,163, 57,115,230, 72,135, 13, 27,134, -136,136, 8,140, 26, 53, 10, 25, 25, 25,200,202,202, 66,106,106, 42, 52, 26, 13,154, 54,109, 10,165, 82,137,187,119,239,154, 52, - 26,205,153,114, 26, 7,154,148,148,148,227,228,228,228, 86,252,191,190,125,251,186,172, 90,181, 74,243,224,193, 3, 83,139, 22, - 45,172,205, 21, 28, 5,216,177, 99, 71,161,165, 46, 50, 50, 18,171, 86,173, 42,244,201,186,121,243, 38,126,248,225,135,194,216, -103, 21,180, 50, 94,175, 93,187, 54,103, 50,153, 80,163, 70, 13,120,120,120, 64,167,211, 97,217,178,101,220, 95, 33,178,204,133, - 78,167,219, 51,100,200,144,169,183,110,221,114,147, 72, 36,121, 38,237,252,252, 25,141, 70, 60,126,252, 24,225,225,225,120,240, -224, 1,210,210,210, 10, 59, 2,183,111,223, 78, 55,153, 76,187, 74,227,117,114,114,154,245,235,175,191,186,170,213,234, 87,234, -115,129, 53,180,192, 74,154,156,156, 12, 91, 91, 91,180,111,223,222,249,204,153, 51,179, 0,204,121, 27, 26, 52, 66, 8,121,183, - 13,219,248,243, 79,123,161, 79,119,245,203,125, 71, 98,255,248, 97,241,164,124,103,120,231,240, 62,221, 61, 94,222,121,104,139, -190,189, 15, 52,254,253, 28,137, 41,203,151, 46,223,199,234, 96,211,166,246,103,247, 29, 58,244,219,244, 41, 19,111, 78,158, 52, -194, 73,163,141, 82, 86,243,145, 19, 0,120, 18,109,160,119, 35, 4,221, 15, 75, 38,222,156,191,104, 5,147,152,154, 49,234,234, -213,210,195, 27, 20, 21, 47,181,253,161,172, 86,179, 77,156,159,127, 75,223, 43,151,182,194, 82,173, 69, 64,205,198,232,220,233, - 29,156, 13,189,141,132,100, 29,226,227,227,161,215,235,203, 12,151,240,224,238,254,193,148, 80,111, 66,201, 11,194, 80,229,224, - 33,159,180, 10, 14,126,143, 30, 57,114,136, 59,176,127,235,197, 93, 91,126,218,195,200,164, 18,173,193,198, 64,136, 46, 19, 76, - 88, 68, 78,110, 94,135, 70,170,144,149,110,126,205, 15,236, 26, 88,187,166,235,224, 33,163,108,186,117,237, 73,143, 30, 61, 32, -236,218,185,233,236,174, 13,117,182, 10, 76,150, 44,254,165, 70,145,153,101,202,164, 68,110,155,147, 37,104, 18,159, 84,215,185, - 7,247,125,107, 68,251, 27,235,112,235,245, 49, 57, 47, 95,186,217,183,105,163,120,252,213, 87,106,151,166, 77,117, 36,223,135, -184, 44,161,197,178, 44,192, 48,130, 57,156,230,166, 69,171,213, 66, 0, 76,149,225,228, 56,238, 21,145, 85, 32,180, 10,236, 26, -230,112,174,155, 59,247,138,119,231,206,105,161,161,161, 46,109,219,182, 37,217,217,217,200,206,206,126, 69,108,185,187,187,147, -192,160, 32,245,142,179,103,171,205, 49,243,126,154,147,119,134, 97,254,114,161,245, 95, 70, 73,150,172, 87, 44, 90,165,161,192, -162,101,142,208, 50,211,162,101, 50,153, 76,112,118,118, 70, 74, 74, 74,169, 13, 63,195, 48, 80,169, 84, 5, 99,196,101,206,188, -211,235,245,203, 38, 79,158, 60,174,107,215,174,142, 1, 1, 1, 72, 78, 78,134,139,139, 11,148, 74,101,161,239, 88, 1,223,205, -155, 55,241,235,175,191,102,233,245,250,101,229,112, 46, 93,180,104,209,167,125,250,244,177,119,117,117,133,157,157, 29,238,222, -189, 11, 59, 59, 59,100,101,101,225,225,195,135,176,178,178, 42,244,219, 57,116,232, 80,182, 94,175, 95, 90,142,120,163,231,207, -159, 55, 90, 89, 89,221, 77, 78, 78,102,211,210,210, 36,233,233,233,146,172,172, 44,105,102,102,166,244,248,241,227,142, 54, 54, - 54,154,223,127,255, 61,217,219,219,155,125,250,244, 41,107, 50,153, 24, 51, 26, 71,140, 31, 63, 30, 50,153, 12,122,189, 30,203, -150, 45,195,228,201,147, 11,125,178, 22, 45, 90,132,153, 51,103, 22, 10,231,245,235,215, 87,180,242,192,104, 52,194,100, 50,193, -100, 50,153, 37,126, 95, 7,230, 8,118, 74,105, 2, 33,164,123,147, 38, 77, 78,238,222,189,219, 33, 63, 38, 25, 18, 19, 19,145, -152,152,136,228,228,100,228,228,228,128,227, 56,120,120,120, 32, 49, 49, 17, 7, 14, 28,200,204,206,206,238, 92,214,140, 67,150, -101,135,180,106,213, 74, 82, 60, 13, 5,189,188, 2,241,174, 80, 40, 16, 23, 23,135,118,237,218,201, 67, 67, 67,135,252,215,133, - 86,129,128,169,229, 7, 89,167,206,195,101,181,106, 55, 55,220, 9, 63,242,178,166,111,226,203, 65, 61,173, 67, 0,224,118, 88, -162,205,157,135,182,168, 85,187, 59,237,212,217,174, 81, 98,194,186, 58,129,254,196, 88,214,114, 61, 0, 96,163, 86,244,235,216, -161,105,156,149,133, 5,243,195,146,245,199, 86,175, 94,218,112, 79,200,255,194, 59,252,176, 36, 47,188, 67,199, 14, 77,133, 7, -247, 31,244, 3,176,193, 92,241,210,189,123,143, 91,191,110,252, 21, 15,194,127,119,159, 58,190,174, 60, 45,209, 4,149,165, 23, - 26,213,119,193,186,141,247,112,231,206,157, 4,131,193,208,174,204,186, 68,168,119,120, 68,152,127,157,218,129,174,131,135,140, -180,238,222,189, 39,142, 28, 57,136, 45,155, 54,156,127,127, 96,159, 95, 98,211,179, 88,103,169, 90,166,166,130,156,149,217, 72, -100, 10, 85,146,193,144, 55, 7, 66, 42, 85, 90, 3,253,132, 50, 70, 14, 49,122,228, 32,155,119, 59,244, 68,200,209,131,216,178, -105,221,185,217,181,251,110,240,109, 80,139, 52,109,184,120,140,111, 85, 95,159,220,156,196, 44,134,200,141, 58,157, 96,181,120, -211,243, 31,159,204, 28,242,228, 86, 88,191, 37,226,172,195, 87,112,119, 75,183,110, 77, 62,143,138,146, 57,181,108,169,138, 59, -123, 86,157,191, 18, 73,153, 66, 75, 34,145,128,150, 62,212,245, 10, 39,217,188,153, 1, 80,230, 36, 44,153, 76, 6,141, 70, 3, - 19, 96, 52,135,211,237,196,137,151, 81, 81, 81,126,246,246,246,175,136,172,180,180,180,194,223, 58,157, 14, 26,141, 6, 42,149, - 42,220, 28,206,196,243,231,117, 11,198,143,159,243,193,192,129, 63,157, 62,115, 70,233,224,224,128,204,204,204, 87,132,150,193, - 96,192,187,237,219,203, 22,221,186, 53, 24,192, 92,115,238,167, 75,187,118,229,250, 3,179, 44, 11,225, 47, 30, 58,124, 11, 58, -171, 35, 75, 18, 94, 76,121, 67, 56,230,206, 58, 44,169,129, 36,132,116, 40,182,107,102,163, 70,141,116,145,145,145,240,246,246, - 46, 20, 43, 69,175,105,109,109, 13, 91, 91, 91,220,188,121, 19,223,125,247,157, 22,192,204,178, 56, 41,165,217, 26,141,102, 64, -199,142, 29,181, 18,137, 4, 53,107,214, 44,140,159, 37, 8, 2,228,114, 57, 44, 44, 44,112,235,214, 45,244,232,209, 67,163,209, -104, 6, 20,143,161, 85, 2,103,166, 70,163,249,176, 83,167, 78,154,136,136, 8,180,106,213, 10,119,238,220, 65, 78, 78, 14,114, -114,114,240,236,217, 51, 4, 6, 6, 66,163,209, 96,213,170, 85, 90,141, 70,243, 33,165, 52,179, 44,206,236,236,236, 30,147, 39, - 79,102,183,111,223,238,235,225,225, 81,187,113,227,198, 1,237,219,183,175,222,187,119,111,159,110,221,186,185,249,249,249,233, - 58,119,238,236,212,181,107, 87, 39,141, 70, 35,253,227,143, 63,226, 77, 38, 83,215,114,238,103,161, 56,137,140,140, 44, 28, 42, -148, 72, 36, 72, 73, 73, 41,140,220, 95,240, 82, 42, 73, 8,151,198, 89, 84,108, 23, 8,172, 2,193, 85, 94, 27, 80, 10,103,185, - 13,135, 92, 46, 47,176,120,210,242, 56, 41,165,183,239,223,191,223,177, 77,155, 54,183,135, 15, 31,158,157,144,144, 0, 43, 43, - 43, 84,171, 86, 13,254,254,254,112,116,116,132,209,104,196,254,253,251,115, 15, 28, 56,112, 47, 51, 51,179, 93,241, 24, 90,197, - 57, 25,134,121, 86,210, 75,182,192,154, 85, 32,180,148, 74, 37, 60, 60, 60, 10,238,237,179,138,220,207, 74, 62,188,127, 45,103, -190,128,105,255,110,231,170,221,130,123,217,236, 63,120, 73,254,211,202, 3,247, 26,117,192,122,135, 42, 89,135, 28,170,100, 29, -106,212, 1,235,127, 90,121,224,222,254,131,151,228,221,130,123,217,180,127,183,115,213,136,240, 7, 1,175,172,123, 88, 66, 58, -149, 74,101,243, 86, 45, 27,165,135, 94, 60, 39,204, 95,180,130,121,183,221,251,183, 54,252,178,127,255,134, 95,246,239,127,183, -221,251,183,230, 47, 90,193,132, 94, 60, 39,180,106,217, 40, 93,169, 84, 54, 55, 39,239,163, 71, 14,178, 9,238,214, 19, 71,142, -236,231,246,236, 88,181,104,231,222, 71,109, 62, 25,119, 62, 49, 50,242, 14, 77,138, 57, 1, 41, 19,141,251,247,239,103, 26, 12, -134,118, 37, 57,194,151,196, 57,106,196,160,162, 34,235,130,131,107,171,245,247,239,131, 63,117,234,176,233,204,153, 91,218, 11, -183,147, 50,111, 68,164,164,197, 37,167, 61,205,202, 74, 53, 8, 2, 15,158,231,217,175,191,206,115,216, 45,173,140, 90,180,104, -139,223, 79,111,195,166,141,107, 51, 5, 1,186,190,187,119,243,253,250,125, 69,125,170, 84,241,217,186, 99, 27,233,254, 94, 47, - 27, 10, 8, 61,250,244,180,221,190,115, 59,169, 90,163,106,149,106,213,242, 66,218,252, 39,235,210, 95,192, 57,151,210,244,172, -232,232,115, 55, 87,172,208,187, 12, 24, 96, 47,119,113,177, 6,207,147,130,247,123,105, 31,137, 68,242,138, 5,166, 44, 78, 15, - 71,199,216, 67,135, 14,193,223,223, 31, 30, 30, 30, 40,234, 35, 91, 16,144,219,193,193, 1,123,247,238, 5, 5,110,152,195,217, -192,215,247,230,194, 5, 11, 12,130, 32, 32, 61, 61,253, 79,214,172,244,244,116, 8,130,128,163, 33, 33,134,172,156,156, 77,230, -230,189, 29,203,230,124,208,186,245,252,224,224, 96, 99, 84, 84, 20, 4, 65, 64, 81,203, 86, 82, 82, 18, 44, 45, 45,161,211,235, -189, 8, 33,106,115, 56,147,142, 31,183, 64, 57,239,245,226, 22,173,191,162,220,255,235, 34,171,232,130,210, 69, 69, 87,153, 22, - 45,142,227,224,229,229,245,202,146, 46, 12,195,188,242,169,200,140, 67, 74,233,102, 66,200,137,206,157, 59,207,105,214,172,217, -232, 57,115,230,176, 1, 1, 1,200,204,204,132,157,157, 29,156,157,157,241,240,225, 67, 28, 58,116,136, 79, 73, 73, 89, 3, 96, -158, 57, 83,232, 41,165,103, 9, 33,221,235,214,173,187,115,218,180,105, 54,157, 58,117,146,122,121,121,129, 82,138, 91,183,110, - 97,223,190,125,198, 13, 27, 54,100,229,139,172,179,102,166,245, 36, 33,228,253,174, 93,187,110, 29, 50,100,136, 21,207,243,210, -103,207,158, 65,175,215,195,100, 50,225,197,139, 23,198, 35, 71,142,228,104, 52,154, 65,148,210,147,102,240,221, 36,132, 4,158, - 58,117,106,200, 31,127,252,241,221,240,225,195, 29,218,183,111, 47,227, 56, 14, 23, 47, 94, 76,110,208,160,129,115, 82, 82,146, -113,239,222,189,169, 58,157,110, 38,207,243,102, 45,193, 67, 8, 65, 86, 86, 22, 28, 29, 29,161,215,235, 33, 8, 2, 12, 6, 3, - 44, 45, 45, 11,151, 77,162,148,162, 34,206,245,197,234, 0,107, 52, 26, 49,112,224, 64, 8,130,128,101,203,150,129,227,184, 10, -147,217,216,216,220,184,125,251,118,247,250,245,235, 23,138,151,130, 58,164, 80, 40,224,232,232, 8, 7, 7, 7, 28, 57,114, 4, - 82,169,244,134,153,101,116, 7, 64, 3, 66, 72,243,123,247,238,125, 4,160,190,209,104,244,224,121,158, 48, 12, 19, 79, 41,189, -155,149,149,245,139,185, 75,240, 36, 37, 37,125, 55,116,232,208, 6,219,182,109,179,148, 72,254,247,104, 72, 36, 18, 40, 20, 10, - 20, 4,199,164,148,194, 96, 48, 96,214,172, 89, 89,185,185,185,223,189, 45, 47,138, 70,141,155, 98,221,170,229,150,103,126, 63, -145,124,255, 17,246, 21, 13,225, 96, 43, 7,126, 63, 71, 98, 18, 19,214,213,137,123,249,210,178, 81,227,166,102,113,154, 12,198, -212, 15, 7,125,225,157,191, 4,207,172,103,207,158,175,221,186,249,199, 39, 0,176,120,233, 50,191,196,212,140, 81, 15,238, 63, -232,183,118,237,142,230, 38,131, 49,213, 28,206,255,137,151,173,153,160,208, 81, 74,175, 18, 66,124,123, 12, 56, 62,179, 70, 85, -235,247,146, 82,181,177, 57, 57,154,207, 40,165, 79,204,205,123,203, 22,109,240,251,201,237,216,178,105,107, 22, 21, 88,157,163, -163, 35, 5,128,251,247, 29,233,253,251, 25,244,127,126,197,182,185, 82,122,103,222, 23,159,181,255, 34, 51, 43,109,233,210,149, -101, 7,174,173, 91,175, 25,234,214,107,134,113,159,205,176, 9,172, 93,211, 27, 0,118,239,166,124,144, 31, 57, 60,103,246, 87, -239,205,155,247, 21,178,178,245,152, 55, 47,111,185,158,135, 97, 17, 33, 81, 81,212, 32, 54, 91,175, 98, 14,199, 93,197, 23, 95, -248,105,210,210,156, 90, 78,157,234, 40,249,242, 75,166, 44,103,248,162,207,175, 57,156,215,239,222, 13, 25,245,201, 39,177,115, -231,204,233,188,102,237, 90, 85,157, 58,117,144,144,144,128,154, 53,107,194,195,195, 3,167, 78,157,194,222, 93,187,114, 51,178, -179,103, 2, 88,109, 14,231,230,163, 71, 31, 6,212,174,157,178,118,237, 90,247,224,224, 96,146,155,155,139,204,204, 76,100,102, -102, 66,175,215, 35, 63, 32, 52,141,124,244,232,190,201,100, 90, 99,110,222,249,228,100,229,188,166, 77, 99,100,130,176,240,253, - 62,125, 38,207,251,230, 27, 69,213,170, 85,137, 94,175, 47,180,106, 25,141, 70, 88, 90, 90, 26, 13, 6,131, 3, 0,141, 57,156, -138, 13, 27,184,228,228,100, 56, 57, 57, 21,134,107, 42, 26,151, 48, 59, 59, 27,148, 82, 49,152,110,101, 68, 88,105,109,185,189, -189,253, 13,137, 68,226, 89,212,186, 85,210,218,121, 69,247,153, 76,166,152,228,228,228, 70, 69, 21, 47,165,244,116, 41, 2,161, - 26,128,239,223,125,247,221,247, 39, 77,154, 68, 66, 67, 67,113,224,192, 1,250,228,201,147, 61, 0,102,150,246,146, 44,135,211, - 74,161, 80, 76,176,176,176,232, 80, 16,194, 65,173, 86,223,203,205,205, 61,173,215,235,151,149, 22, 13,190, 28, 78,107,133, 66, - 49,222,194,194,162, 99,118,118,118,125, 0,176,178,178,186,157,155,155,123, 74,175,215, 47, 47,109,161,234,114, 56, 85, 54, 54, - 54,223, 57, 58, 58,126,248,229,151, 95, 58,156, 63,127, 62,254,247,223,127,151,101,100,100,108, 51, 24, 12,165, 46, 42, 93, 18, -167,131,131,195, 13,150,101, 61,255,138, 50, 2,128,122,245,234, 29,233,209,163, 71,240,160, 65,131, 96, 50,153,176,122,245,106, -156, 58,117, 42,228,209,163, 71,221,203,234,141, 22,231, 36,132, 56,122,122,122,134,142, 30, 61,218,103,224,192,129,106, 59, 59, - 59, 72, 36, 18,228,230,230,226,241,227,199,184,117,235, 22, 61,120,240, 96,206,205,155, 55, 99, 52, 26, 77, 91, 74,105,138,185, -247,243,117,122,205,197, 57,165, 82,105, 27, 47, 47,175, 29,115,231,206,181,234,216,177,163,202,193,193, 1, 44,203,194,100, 50, - 33, 62, 62, 30, 97, 97, 97, 56,113,226, 68,238,158, 61,123,114, 83, 83, 83, 7, 82, 74,207,253, 19,233,124,147,156,129,254,100, -118,177,133,162, 75,141,246, 94,214,177,230,164,179,125, 91,247,158,253,222,239,218, 5, 0,118,239, 61,118,252, 76,104,220,193, -202,166,179,188,180,154,195, 89,203,143,157, 27, 30, 17,246, 74, 64,203,218,129, 65,145,181,234,244,249,214, 28,174,130,200,240, -197,243, 94, 36,218,126, 81,155,238, 43,195,172, 5, 11, 79,207,152, 57, 29,223,127, 55, 31, 7,119,239, 15,137,136,162, 71,254, -203,117,233,175,228, 44, 88, 4, 89,237,230,214,122,153, 32, 76,191, 19, 22,102, 89,180,195, 86, 96,121, 46,218,169,116,119,119, - 79,138,139,139,115, 49,135,179,251,207, 63, 27, 53, 22, 22,138,233, 11, 23,182,201,209,233,218,204,155, 55, 79,114,253,250,117, -172, 90,177,130,211,197,196,108, 77, 6,198,151, 52, 26, 82, 22,167,207,248,241,202, 41,171, 86, 13,171, 86,163,134,243, 71, 31, -125, 36,149, 74,165,200,205,205,197,203,151, 47,113,242,196, 9, 67,196,253,251, 17, 89, 89, 89,239, 81, 74,227,204,229,236,254, -243,207, 70,219,106,213,160,118,114,162,103,206,158,181, 25, 53, 97,194,232, 42,190,190, 54,157,187,116,145, 90, 91, 91, 35, 61, - 61, 29,207,158, 61,195,254,253,251,147,114,114,114,220, 41,165,188, 57,156, 91,255,248,163,238,209,115,231,250,126,251,237,183, -242,160,160, 32,216,216,216, 32, 59, 59, 27, 97, 97, 97, 56,119,238,156,126,205,154, 53,153,153,153,153,163, 57,142, 59,244, 87, -149,251,219, 58,116, 72,254, 74, 87, 0,115, 10,130, 16,210, 8,192,236,252,205,111,204, 88, 51,240,173,121,249, 16, 66,188,237, -237,237,215,233,116, 58,170,213,106, 71, 81, 74, 95,252,219,210, 73, 8,145, 52,106,212,104, 85, 82, 82, 82,115, 74, 41,108,108, -108, 46,133,135,135,143,165,148,114, 21,229, 36,132,176, 0,154, 91, 90, 90, 54,181,178,178,106,163,215,235,107,229, 15,191,221, -207,205,205, 61,103, 52, 26,175, 2,184, 68, 41,229,255,201,188,231,167,179,163,187,187,251, 39,130, 32,212, 32,132,216,242, 60, - 15,147,201,148, 33, 8,194,227,204,204,204, 13, 0, 78,253,211,233,124, 83,156,181,107,144,222,148, 65,173,210, 4,193, 43,194, -166,152,128, 32, 2,238,135, 63,166,251, 43, 80,231,153,174, 29,188, 86, 2,121, 51, 19,203, 91,202,232, 21,161,101,134,120,169, -176,200,172, 33, 25, 74, 9,245,126,181,247, 73, 94,212,172,219,123,203,235, 8, 45,115, 81, 59,128,180, 1, 69,115,129,226,234, -253, 71,244,247,183,245, 93,247, 38, 57,231, 19, 98,191,194,206,238, 18, 35,145,184, 2, 96,242,173, 47,130, 64, 8, 79, 9,225, -138, 14,111, 21,237, 88,150,199,105, 4,234, 72, 21, 10, 47,158,227, 92, 18, 0,203,163, 60,223, 80, 71,105,142, 39, 48,251, 22, -165, 15, 43,147, 78, 35, 80,135, 85, 40,188,143, 82,218, 51,217,194,162,110,146, 86,235, 4,128, 90, 90, 88,220,207,202,205,221, -164,211,233, 86,150,176,120,123,185,156, 50,133,194,147,231, 56, 23, 0, 96, 36,146,164,157,122,189, 87,140,181,245, 71, 58,189, -222,199,210,210,210,100, 48, 24,178,116, 58,221, 32,147,201,116,166, 34,121,127,204,113,129,127, 48, 76, 43,163,133,133,131,145, - 16, 11, 3,199, 25, 13, 70,227, 75,157, 78,119, 15,192,143,148,210,168,191,178,220,223, 90, 20,204, 78,251, 43, 62, 0, 58,136, -156, 34,167,200, 41,114,138,156, 34,167,200,249,215,115, 2, 80, 3,240, 6,192,254, 23,243,254, 54,125, 0,140, 44,248, 45, 17, -165,166, 8, 17, 34, 68,136, 16,241, 86, 24, 78, 52, 40,193, 39, 75,196, 63, 11, 2,160, 67, 41, 5,102,182, 73,176, 50,179, 15, -204, 24, 98, 16, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145,243, 45,227, 44,143,251,191, 56, 36, 89,214, 90,135,226,208,161,200, - 41,114,138,156, 34,167,200, 41,114,138,156,226,208,225, 95,244, 97, 32,162, 52,117,234, 66, 8,113,121,211,199,138,120,187,235, - 66, 9,231,122, 16, 66, 60, 42,120,188,155,120,215, 69,136, 16, 33,226,237,192,223, 46,180,204,109,180, 94,179,113,123, 45,225, - 67, 8,153, 79, 8,226,242, 62,100,254,155, 58,214,140,235,186, 59, 57, 57,125, 94,187,118,237,173,174,174,174,227, 8, 33,206, - 21, 60,223,207,194,194, 98,185,165,165,101,168,165,165,101,168,133,133,197,114, 66,136,223, 27, 42, 55, 66, 8, 25,165, 84, 42, -207,186,187,187,199, 42, 20,138,179,132,144,209,164,146, 11, 92, 18, 66, 2, 8, 33,243, 8, 33,223, 16, 66,234, 86,228, 92,151, -160, 94,187,156,131,122,221,117, 14,234, 21,230, 88,231, 61, 63,231,160, 94, 97,206, 65,189,238,186, 4,245,218,245, 23,212,215, - 74,151,111,254,185, 47,242, 62,229,159, 75, 8,249,145, 0, 47, 9, 65,204,235,214, 37, 17, 34, 68,136, 16,241,239, 64,133,156, -225, 61, 60, 60,222,167,148,142, 2, 64, 9, 33,235, 98, 99, 99,247, 86,162,225,153,146,255,123, 17,165,116,250,235, 28,103,198, -185, 75, 41,165,147, 43, 46,210, 48, 69, 16, 40, 3, 0, 12, 67,166,186,184,184,168, 89,150,253,147,131, 33,207,243,106, 66, 48, - 78, 16, 40,201, 63,118, 10, 33,100, 57,165, 52,177, 50,226,112,240,224,193, 75,151, 47, 95,174, 84,171,213,136,142,142,238, 52, -122,244,232, 22,132,144, 47, 40,165,241,229,157,175, 82,169, 62,104,210,180,249, 23, 11, 23, 47,177,116,113,118,182,224,120,193, -248, 44,250,185,122,214,180,201, 77, 85, 42,213,242,178, 22, 83, 46, 46,168, 0,140,148, 72, 36,253,149, 74,101,117,157, 78, 23, -197,113,220, 30,150,101, 59,127,247,221,119, 65,221,186,117, 83,102,101,101,201, 57,142,171,177,101,203,150, 47,126,253,245,215, -174,132,144,158,101, 77,211, 47,176,232, 80, 74, 99,139,236,238, 27, 29, 29,221, 72, 38,147,145,106,213,170, 49, 0,238,150,115, -124, 33, 40,224, 23,126,113,119, 29, 0,168,221,178, 95,100,248,197,221,200,255,253, 23,116, 10, 94,173, 11, 74,165,114,141, 78, -167,123, 81,240,127,126, 58, 19,205, 57,151, 16,242, 83,254,242, 65,141, 0,124,148,127,232,102, 74,233, 13, 66,136,171, 82,161, -152,160,213,233, 8, 0,242, 58,117, 73,132, 8, 17, 34, 68,252,237, 70,164, 6,148,210, 91,249, 35, 18,193, 0, 66, 10,218,238, -138,206, 58,252,244,209,163, 71,150, 0,224,239,239, 63, 22,192,222, 10, 36,226, 79, 13, 79,251,246,237, 27,168, 84,170, 87,162, - 32,107,181, 90, 57, 33,104, 95, 25,241, 82,112, 13,131, 65,207, 72,165,114, 48, 12,249,162,110,221,186, 85, 82, 82, 82,206, 51, - 12,179, 53, 38, 38, 38,189, 18, 55, 15,235,215,175,247,119,115,115,251, 83,180,230,248,248,120,121,207,158,239, 85,136,111, 24, - 33, 10,189, 66,209, 84, 70,136, 27,207,113,182, 0, 32,145, 72,210, 3,108,108, 26,125,255,237,183,106, 66,136,144,154,154, 10, -173, 86,139,137, 19, 39,170, 34, 34, 34,122, 1, 88, 89, 78, 26,253,155,189,211, 98,226,137, 19,199,107,101,165,165,235,214, 47, - 93,123, 83, 43,145,105,124, 3,107,202, 86,173,219,100, 55,114,216,160,207, 8, 33,183, 75, 90,142,164, 24, 15, 3, 96,255,132, - 9, 19,106,119,239,222, 93,158,157,157,173,212,106,181, 85,182,110,221, 58,171, 81,163, 70,150,245,235,215,151,239,216,177,131, -100,102,102,130, 82,170,174, 89,179, 38,237,223,191,191,110,231,206,157,227, 0,252, 84,158,240,101, 89,118, 89, 64, 64,192,220, -252, 60,203,138, 28, 35, 13, 12, 12,180, 0,128,135, 15, 31,126, 77, 8, 38,148, 37,178, 9,240,168,118,203,126, 0, 65,141,240, -139,187,149,181, 91,245,211,129,226, 49, 1, 30,229,119, 8,230, 1, 69,226, 66,189,138,251,177,177,177,149, 90,155, 48, 56,184, - 59, 33,132,236,113,119,119,223,155,148,148,228, 75, 8, 70,152,219, 25, 32,132, 16, 7, 7,135,161, 0,230, 3,248,228,254,253, -251, 13, 0,160, 86,173, 90, 50, 0, 55,172,173,173, 91, 24, 13, 6, 34,190,174, 68,136, 16, 33,226, 63,137, 6, 0,110, 1, 8, - 46,178, 4,207,186,202, 8, 45, 57, 0,156, 63,127, 30, 0, 20,149, 17,125, 69, 5,204,248,241,227,225,230,230, 86, 92,188, 32, - 52,244,236,235,100,246,149,107,124,243,205, 55,150, 25, 25, 25, 29,126,249,229,151,214, 30, 30, 30, 63,196,198,198, 94, 41,235, -100, 74,105, 34, 33,100, 81,190, 5, 2, 10,133, 50,114,244,232,209,183,242,255,174,114,248,240, 97,117,143, 30, 61, 52, 0,158, - 3,128, 66,161,244, 96, 89,198, 63,207,233, 13,139,202, 18,132,253, 8,169, 38,151,203,223, 29,245,243,207, 92,195, 30, 61, 36, - 22, 78, 78, 4, 0,158, 63,120,224,176,104,241,226, 22,233, 79,158,200,181, 14, 14,169,169,185,185,218,200,200, 72, 40, 20, 10, -194,178,108,195,242, 50,108, 97, 97,241,249,183,223, 47,180,200, 74,203,208,234,178,178, 13, 44,103,210, 91,169,212,124, 98, 66, - 82,170,165,202, 66, 51,117,246, 87,242, 79, 71, 12,249, 28,192,216,114,168,198,125,241,197, 23,181,154, 52,105,226,177,107,215, - 46,146,153,153, 9,137, 68, 98, 89,191,126,125, 52,106,212,136,255,253,247,223,137,175,175, 47,130,130,130,112,241,226, 69, 92, -186,116,137, 52,104,208, 64,189,111,223,190,193, 37, 9,173,226,226,154,101,153,137, 53,107,214,172,111, 97, 97, 97,240,247,247, -199,136, 17, 35, 64, 41, 69,135, 14, 29,130, 44, 45, 45,247,230,230,230,202, 31, 62,124,208,186, 60,145,157, 24,118,160, 63, 0, - 56, 7,245,186, 11,160, 14, 40, 30, 39,133, 29,168, 91,228,144, 90, 15, 31, 62,108,150,158,158, 94,232,140, 88,176,128,121,235, -214,173,205,174, 72, 5,117,161, 71,143,238, 83, 1, 66, 58,116,232,144, 49,110,220, 56,230,193,131, 7, 31,246,238,221, 43,232, -209,163,199, 40, 45,157,197,234, 17, 25, 58,116, 88,162,165,165,101, 31,119,119,247,135, 0, 36, 50, 89,161,206,100, 93, 92, 92, -156,234,214,173, 59,198,222,222, 62,137,101, 24,103, 10, 74,203,171, 75, 34, 68,136, 16, 33,226, 95,133,144,124,113, 21, 82,252, - 15, 9, 0,132,132,132,208,255,245,218,131, 73, 89, 13,207,157, 59,119,188, 52, 26, 13,204,105, 4,138, 78,209,164,148, 38,178, - 44,187,138, 97,200, 88, 66, 8,130,130,234, 60, 93,182,108, 89, 73,107,122, 25,130,130,234, 60,101, 89,166, 42,165, 20,132, 48, -171, 5,129, 79, 44,137,179,180,134, 81, 46, 87, 76, 1, 0, 87, 87,183, 39,199,142, 29, 51,244,237,219, 23,139, 23, 47,150, 77, -155, 54,109,178,143,143,207,184,232,232,232,132,210,210,153,191, 61,221,197,197, 69,189,126,253,122,255,209,163, 71,223,138,139, -139,155, 14, 0,238,238,238,243, 1, 4, 2,120, 94,100, 31,214,172,217, 25, 59, 98,196,136,200,196,196,196,233,165,113,190, 79, - 72,117,159,154, 53,223,157,119,254, 60,101,244,122,146,114,225, 66, 86,114, 98,162, 41, 42, 57, 89,189,241,198,141,238,179,230, -207,151,122,121,123, 35,244,208, 33,199, 20,141, 38, 57, 83,175,215, 37, 38, 38, 82,142,227, 46,153,145,247,218,206, 78,206,234, -181, 63,174,190,110, 37,101, 5,103, 79, 15, 34,181,183,151, 48,106,107, 57, 43, 97,244, 85,171,248,201, 1,212, 46,175,140,100, - 50,217,224, 78,157, 58,169,119,238,220, 73,130,130,130, 96,107,107,139, 11, 23, 46,224,246,237,219, 72, 79, 79,103, 76, 38, 19, - 26, 55,110,140,133, 11, 23,194,219,219, 27, 25, 25, 25,120,241,226,133,163, 92, 46,119, 42,227,126,190, 82,159,166, 76,153, 2, - 55, 55, 55,112, 28,135,180,180, 52,112, 28, 7, 75, 75, 75, 0, 64, 76, 76, 12, 14, 29, 58, 88,110, 93, 50, 83, 36,225,157,119, -222,201, 38,132,220, 47,110,209,170, 8,167,135,135,199,142,228,228,148,174,239,190,251, 46,210,211,211, 77, 95,125,245, 21,234, -214,173, 11,127,127,127,115,234,252,116,133, 66,241,139,143,143,207,143,227,199,143,119,179,183,183,135, 94,175,159,149,144,144, -128, 49, 99,198, 0, 0,186,117,235, 86, 87, 42,149, 30, 27, 62,124, 56,124,125,125, 99,211,210,210, 94,220,188,121,115, 68,110, -110,110, 88,101,243,110,230,253, 17, 57, 69, 78,145, 83,228,252, 87,113,154,171, 69,254,141,200, 31, 38, 92, 87,100,123,221, 43, - 66, 43, 56, 56,152,132,132,132, 80, 51, 50,150,234,233,233,233,165, 82,169, 0, 32,181,162, 9,225,121,126,156,163,163, 99,210, -244,233,211, 91,250,251,251, 27,198,141, 27, 23,246,236,217,179,153, 69,143,241,245,245,253,110,197,138, 21,136,140,140,124, 62, -127,254,252,139, 41, 41, 41,223, 84, 48,179,211, 8, 33,203,242,173, 99, 41,135, 14, 29,170,123,254,252,249,177, 75,151, 46,117, -250,244,211, 79,101,159,127,254,249, 32, 0,139,203,227, 97, 89, 86, 83,210,112, 97, 73,112,115,115, 51,148,228,195, 85,128, 30, -132,168,172,229,242,118,243,206,159,167,134,231,207, 53,191, 46, 89, 98,181,246,218,181,185, 38, 74, 93,156,157,157,209,170, 69, -139, 28, 37,203,166, 36, 37, 36, 8,206,213,171,179,207,142, 29,115,212,202,229,113, 59,119,238,204, 76, 77, 77, 61, 80,174, 9, -143,144, 44,129, 82,131,165,167,183,169,111,175,142, 65,215,175,222,126, 96,229,236,200, 52,168, 31, 84,247, 65,228,243,155, 16, - 4, 35, 33, 36,171, 60, 30, 27, 27, 27,255,212,212, 84,100,101,101,193,201,201, 9,203,150, 45,131,171,171, 43, 52, 26, 13,194, -195,195,169,167,167, 39, 57,127,254, 60, 60, 61, 61,145,156,156, 12,131,193,128,236,236,236, 36,189, 94,175, 45, 77,248, 74, 36, -146,223, 24,134, 12, 35,132,160,106,213,106,209, 43, 87,174, 52, 8,130,128, 90,181,106,161,119,239,222,216,183,111, 31,194,195, -195, 11, 44, 79, 6, 31,159, 42,209, 12, 67,124,242,181, 82,165,173, 58, 5, 75,251,196,198,198,246,169,148, 89,148, 16,198,221, -221,125,144,159,159,223,216, 15, 62,248,192, 36,151,203,145,155,155, 91,112, 47, 76, 93,187,118,203,232,209,163,187, 77, 72, 72, - 72,153,233,212,235,245, 79, 92, 92, 92, 62,249,226,139, 47,182,174, 89,179,198,110,230,204,153, 16, 4, 1,148, 82,112, 28, 87, -184,232,183, 32, 8,216,191,127, 63,162,162,162,190, 43, 42,178, 68,136, 16, 33,226,255, 11, 42,160, 69,254,117, 40,226,155,133, -226, 98,235,111,143, 12,207,178,236,218,147, 39, 79,214,111,221,186,181,164,125,251,246, 65,158,158,158, 65, 49, 49, 49, 97, 0, -224,233,233, 25,212,165, 75,151, 32,103,103,103, 44, 95,190, 92,195,178,236,218, 74, 42,203,162,141,222, 45, 55, 55,183, 31,246, -237,219,183,104,212,168, 81,112,117,117, 13,252,187,243,108,173, 80, 52, 24,190,108, 25, 39, 53,153,152,159,127,248,193,122,201, -217,179,139,118,237,222, 45,121,231,157,119, 8,165, 20,247,238,222, 85, 45,252,233, 39,245,192, 94,189,158, 63,124,242,132, 59, -120,226,132, 41, 49, 54, 54, 45, 54, 57,121, 14,165, 52,173, 60,126,147,201,116,249,209,163, 71,238,173,218,188,227,113,238, 90, -216,237,190,189,186,189, 43,149, 48,228,241,243,152, 27,110,174,142, 54,161,103, 79,107, 77, 38,211,229,242,120,114,115,115,159, -113, 28,103, 79, 41,117, 10, 13, 13,133,147,147, 19,210,211,211, 97, 50,153, 96, 48, 24, 12, 26,141, 70,153,154,154, 10,157, 78, - 7,189, 94, 15,107,107,107,220,187,119, 47,145,227,184,223, 75,227,228, 56,110,184, 82,169,252, 70, 42,149,202,101, 50, 89,220, -141, 27, 55,144,149,149, 85,197,214,214,118, 49,199,113,136,139,139,195,249,243,231,191,180,182,182,126, 14, 0, 74,165, 18,114, -185,194, 65,175,215,115,165, 57,195,155,107,209,170, 44,220,220,220,188,171, 86,173, 58,111,234,212, 41,181,234,213,171,143,228, -228,100, 8,130, 0, 11, 11, 11,104, 52, 26, 88, 91, 91,163,121,243,230,207,230,205,155, 23, 79, 41, 70,150, 39, 6, 19, 19, 19, -147, 61, 60, 60,198,141, 26, 53,234, 27,127,127,255,170,148, 82,248,249,249,161, 83,167, 78, 56,118,236, 24, 34, 35, 35,145,155, -155,203, 95,185,114,101,123, 92, 92,220, 97,241,117, 43, 66,132, 8, 17,255, 61,157, 88,224,155, 85,212,154,245,143, 8,173,196, -196,196,100, 79, 79,207,227, 55,111,222,236,222,191,127,127,132,134,134, 14, 5,240, 5, 0, 40, 20,138,161,253,251,247,199,205, -155, 55,241,224,193,131,227,137,137,137,201,111,226,154,114,185, 92,103, 48,228, 25,167,148, 74,165,178,130,167, 87,201, 31, 50, - 4,128, 42,101,236, 43, 21,140, 68,226, 86,167, 75, 23, 73,250,237,219, 89,235,175, 94,253,102,235,214,173,146,150, 45, 91, 18, -147,209, 8, 94, 16, 80,173, 90, 53,210,190, 67, 7,139,223,182,110,181,231,115,115,207,127, 59,117,234,133,117,195,135,231, 68, - 82,250,220,156, 4,234,245,250,159,198,142,249,164,195,217,208, 11, 30,129, 53,171,219, 31, 63,121,246,150,131,131,141,218,191, - 70, 13,139,212,244, 52,126,230,180, 47, 37,122,189,254,231,242,120,180, 90,237,254,211,167, 79,247,242,242,242,114, 10, 11, 11, -131,193, 96, 0,207,243,104,223,190, 61, 40,165, 10, 0,130, 68, 34,193,131, 7, 15, 96, 52, 26,147, 30, 61,122, 20,247,248,241, - 99, 5,128, 5,101,241,234,116,186,232,162,219, 94, 94, 94, 29,131,131,131,193,113, 28,186,116,233,130,131, 7, 15,118,140,136, -136, 88, 82, 84,243,189,110,153,231, 91,200,106,121,120,120,236,203,223,101,150, 19,188,167,167,103,144,159,159,223,154, 5, 11, - 22,200, 60, 61, 61, 65, 41,133,157,157, 45, 52, 26, 13, 82, 82, 82, 17, 24, 24, 8, 47, 47, 47, 44, 88,176, 0, 0,182,155,107, -113,139,141,141,125, 12,160,127, 96, 96,160, 44, 35, 35,163, 81,199,142, 29,151,119,232,208, 1,183,110,221,194,133, 11, 23, 6, - 42, 20,138, 36,163,209,200,185,185,185,141, 36,132, 88, 27,141,198,109, 41, 41, 41,241,226,187, 75,132, 8, 17, 34,254, 19, 40, -240,209, 42,140, 18, 95, 97,139, 86, 96, 96,160, 69,102,102,230, 71, 85,170, 84,145, 3,128, 74,165, 10,172, 94,189,250,228,168, -168,168,236,138,166, 70,163,209,236,218,186,117,107,167, 31,127,252, 81,214,173, 91,183,234,158,158,158, 77, 0,160, 79,159, 62, -213,173,172,172,176,117,235, 86,163, 70,163,121, 99, 49,145, 76, 38, 83,235,198,141, 27, 35, 45, 45, 13,207,159, 63,175,208,176, -204,225,195,135,213,200,243,203, 42,115, 95, 89,224, 12, 6, 59, 91, 15, 15, 38,246,236, 89, 99, 90, 86,150, 91,235, 54,109,136, -201,104, 4,195, 48, 72, 77, 77,197,139, 23, 47, 96, 99,107, 75, 30, 60,122,100,185, 97,202,148,195, 85,234,213,147,243, 6,131, - 67, 5, 68, 69, 46, 33,100,216,103,227, 62,221,191,109,219,118,167,140,172,172, 40,149, 74,173, 87, 40,100,174,227, 63,251,140, - 79, 75, 75, 27, 66, 41,205, 49,131,106,193,182,109,219,186,116,233,210,229,174,183,183,183,115,114,114,178,107, 70, 70, 6,159, -150,150,198, 34,207,215,138, 0,192,217,179,103,145,149,149,197,241, 60,127, 30,192, 60, 74,169,193,220,180, 86,169, 82,197,166, -105,211,166,109,157,156,156,144,153,153, 9, 7, 7, 7,212,175, 95,191,109,149, 42, 85,126,121,254,252,121,230,155,172,245,167, - 78,157,178,162,148, 54,163,148,162, 75,151, 46,102,157,195,243,252,199,193,193,193, 50, 66, 8,180, 90, 13,148, 74, 21, 44, 44, - 44, 97,101,101, 13,127,255, 0,196,197,197,161,115,231,206,134,168,168,168, 85,241,241,241, 21,174,163,153,153,153, 61,155, 55, -111, 62,105,204,152, 49,224, 56, 14, 61,123,246,196,203,151, 47,151, 60,123,246,108,167,187,187,251,160,143, 63,254,216,201,193, -193, 1,147, 38, 77, 82, 1,248, 90,124,119,137, 16, 33, 66,196,191, 31,197,125,180, 74,180,104,149, 53, 38,234,230,230,214,202, -222,222,126,150, 86,171,149, 23, 12,201, 16, 66,228, 78, 78, 78, 7,221,221,221,231,199,197,197, 85,200, 41, 46, 61, 61, 61,203, -205,205,237,224,229,203,151,251,245,233,211, 7,167, 78,157, 26,146, 47,180,112,249,242,101, 60,125,250,244, 96,122,122,122,214, -155,200,188,167,167,103,215,182,109,219,246,105,220,184, 49,142, 28, 57, 2,158,231, 47, 85,228,252,162, 51, 12, 81,194,172,195, -130,125,102,145,177, 44, 8, 33,224, 56, 14, 0,144,146,156,140,200,135, 15,145,150,158, 14,189, 78,135, 92,141,134,247,247,245, -213,102, 26, 12, 82, 2,208, 10, 22,114,180,165,165,229, 11, 77,110,174,179,131,157,189, 86,173, 86, 32, 35, 43, 83,118,227,250, -149, 28, 74,105,148,153, 28, 6, 66, 72,155, 99,199,142,205, 97, 89,182,191,165,165, 37,198,142, 29,203,182,109,219, 22, 50,153, - 12,122,189, 30, 25, 25, 25,216,186,117,107, 50,199,113, 85,243,235,129,165,133,133,197, 38,150,101, 99,178,178,178,102,149,119, - 13,131,193,208,173,123,247,238, 18,131,193,128,111,191,253, 22,115,231,206, 69,151, 46, 93, 36,215,175, 95,239, 6, 96,219,155, -170,244,130, 32,160, 99,199,142, 69,157,225,239,155,115,158, 84, 42, 13,170, 81,163, 6,146,147,147,145,156,156, 12, 39, 39, 39, -184,187,187,195,213,213, 21, 75,150, 44,161,203,151, 47, 63,110, 52, 26, 87, 37, 39, 39, 39, 86,162, 46,142, 28, 58,116,232,200, -126,253,250, 33, 39, 39, 7,151, 47, 95, 70,139, 22, 45,176,104,209, 34,183,243,231,207,127,209,184,113, 99, 72,165, 82,132,134, -134,130,227,184,151,226,171, 75,132, 8, 17,255,223,240, 95,244,207, 42, 15,101, 90,180,188,189,189,109,121,158,255,178, 71,143, - 30, 29,123,245,234,133,206,157, 59,191,242,255,182,109,219,172,246,238,221, 59,223,203,203,171,139,209,104, 92, 80,145,161, 62, - 65, 16,246,111,219,182,173,219, 59,239,188,163,110,215,174, 93, 53, 0, 80, 40, 20,134,109,219,182,105, 4, 65,216, 95,209,140, - 20, 15, 30,233,225,225, 81, 87, 34,145,244,233,222,189,123,221, 97,195,134, 33, 60, 60, 28, 91,183,110,125,236,239,239,127,177, -130,212,207,203,153,117, 56,191, 60,235, 22, 43,151,167,102, 36, 36,216, 90,122,123, 75,237,172,172,226,143, 28, 57,226,213,161, - 67, 7,242,242,229, 75,164,167,167, 67,167,211,225,250,245,235,130, 4,136,150,216,217,145,232,203,151, 9, 43,151, 87,120,178, -129,151,155,157,223,236,105,163,171,232,244,186,218,153,153,153,156, 68, 42,149,122,186,218, 86,168,193,166,148,234, 45, 44, 44, - 26, 1,144, 8,130,160,177,183,183, 87,159, 60,121, 18,114,185, 28,132, 16,212,169, 83, 7, 74,165, 82,102, 97, 97,241, 2, 0, - 92, 93, 93,229,107,215,174,181, 25, 52,104,208,133,242,184, 27, 54,108, 40,245,245,245,125,207,223,223, 31,151, 47, 95, 70, 88, - 88, 88,244,229,203,151,125, 26, 52,104, 0,111,111,239,247, 26, 54,108,184,251,230,205,155,166, 55,212,187,168,148, 51, 60,207, -243, 2, 33, 4, 12,195, 64, 16, 4, 36, 39, 39,163,106,213,170, 88,185,114, 37,150, 45, 91,246,109, 92, 92,220,161,202,164, 39, - 48, 48, 80, 86,191,126,253, 33,253,250,245,195,147, 39, 79, 48,127,254,252,148,248,248,248,179, 39, 78,156,120,127,204,152, 49, -108,139, 22, 45,144,154,154,138,223,126,251,141,187,113,227,198,175, 9, 9, 9,155,197, 87,174, 8, 17, 34, 68,188,197, 66,203, -219,219,187,159, 76, 38,155, 52, 96,192, 0, 54, 32, 32, 0,137,137,137,176,182,182, 54, 17, 66,164, 0, 96,107,107,107, 82,169, - 84, 24, 61,122, 52,234,213,171,215,106,202,148, 41, 45, 60, 60, 60, 86,198,198,198,110, 50,231,194,137,137,137, 26, 55, 55,183, - 61, 99,199,142, 93,112,251,246,173,170, 0,112,237,218,181,167,113,113,113,211, 18, 19, 19, 53, 21, 20, 89, 5, 65, 49,137, 74, -165,186,234,231,231,247,172,107,215,174,214,189,122,245,130,147,147, 19,110,222,188,137,133, 11, 23, 62, 50, 24, 12,115, 66, 67, - 67,185,191,251, 38,115,122,125,194,141, 3, 7,172,218,126,248,161,245,248,224,224, 31, 62, 29, 59,246,199,217,179,103, 75, 2, - 2, 2,136, 70,163,193,213,171, 87,233,222,189,123, 77,191,125,243,205, 50, 88, 88, 72, 47,239,221, 43, 55, 24, 12,209, 21,180, -150,180,233,214,165, 77,192, 15, 63,254, 4,157, 54, 7, 87, 47,133, 32, 61, 61, 25,107,215,237, 11,240,244,244,108, 19, 19, 19, -115,174, 2,247,211,255,212,169, 83,206,148, 82,200,229,114,204,155, 55, 15,238,238,238,176,182,182, 70,118,118, 54,190,248,226, - 11,155, 9, 19, 38,216, 0, 64,120,120,120, 97,120,134,242, 16, 23, 23,215,124,244,232,209, 86, 28,199,225,248,241,227, 6, 66, -200,172,211,167, 79,255, 82,167, 78, 29,121,171, 86,173,172, 54,111,222,220, 2, 64,232,155, 18, 90,149, 60,239,241,201,147, 39, - 27,247,239,223,159, 74,165, 82,146,145,145, 1, 91, 91, 91,172, 92,185, 50, 55, 62, 62, 62,164,210,117,128,227,228,106,181, 90, - 78, 41,197,158, 61,123, 16, 29, 29,253,113, 74, 74, 74,130,139,139,203,190, 47,191,252,114,114, 64, 64,128,239,195,135, 15,163, -179,179,179, 23, 37, 38, 38, 62, 19, 95, 77, 34, 68,136, 16,241,223, 65,129, 19,124,133, 34,195,243, 60, 63,250,196,137, 19,172, - 32, 8, 88,183,110, 29,110,220,184, 65,213,106,245, 44,181, 90,189, 66,165, 82,241, 90,173,118,212,136, 17, 35, 6,205,157, 59, -151,105,213,170, 21, 46, 95,190,204, 84,173, 90,117, 8,128, 77, 69, 46,220,161,172, 88, 27,153,153,153,215, 19, 19, 19,170, 22, - 9, 80, 89, 85,161, 80, 94, 47, 39, 51,175,112,150, 16, 20,179,233,188,121,243,114,221,220,220, 12, 97, 97, 97, 88,179,102,141, -112,227,198,141,179,114,185,124,109, 92, 92,156,222, 28,206, 55,116,211, 11, 57,229, 28,119,115,203,228,201,181, 26,246,236, 41, -124, 50,105, 82,142, 76,165,250,252,135,159,126,154,146,145,157,237, 14, 66,168,131,141, 77,244,186,121,243,230,119,121,239,189, -156,240,115,231,148,183, 79,157,146, 58,153, 76,119, 42,146,206,152,152,152,115,126,213,189,177,113,253,143, 48, 26,245,136,143, -205,211,105, 41,169,153, 40, 75,100,149,196,201,113, 92,230,251,239,191, 47, 3,160, 26, 60,120,176, 60, 41, 41, 9,213,171, 87, - 7, 0,100,101,101, 33, 36, 36, 4, 53,107,214, 4, 0,220,187,119,175,240,119,121,233,180,176,176,120,175, 69,139, 22,136,142, -142, 70,120,120,248,153,184,184,184, 84,119,119,247, 51, 47, 95,190,236,214,184,113, 99,236,223,191,191, 71,105, 66,171,162,101, -100,142,208, 42,137, 83,165, 82, 77,219,183,111,223,199,151, 46, 93,234, 63,121,242,100,105,251,246,237, 1, 0,217,217,217, 26, - 74, 41, 95, 25,206,162,105, 50,153, 76, 16, 4, 1,246,246,246,185,249, 29,142,103, 40, 39,144,236, 95, 93, 63, 69, 78,145, 83, -228, 20, 57,255, 13,156,111, 9,204,143, 12, 79, 41,229, 4, 65, 64,104,104, 40,246,237,219,199, 27,141,198,145,113,113,113,247, -138, 28,242,147,187,187,251,169,247,223,127,127,211,195,135, 15,217,136,136, 8,152,211, 16, 21,133, 78,167, 51, 21, 95,146, 88, -167,211,189,246,208,209,198,141, 27,145,144,144, 96,124,249,242,229,105,142,227,246,191,230,236,197,215,158,117,248, 27,165,250, - 15, 9, 57, 61,183,101,203,142,115, 78,157, 82,124, 50, 99,134,126,232,176, 97, 95,242, 6,131,137,149,201, 4,185,133, 5,195, - 43, 20,210,240,115,231,148,203,199,140,177,215,234,245,199,183, 84,192,193,188,136, 69, 11, 67, 63,153, 8,109, 17,139,214,229, -235,145,168,168, 69, 75,167,211,213,206, 23, 29, 47, 0,184,126,244,209, 71, 16, 4, 1, 90,173, 22,217,217,217,136,139,139,203, - 28, 54,108, 24,159, 47,158, 36,125,250,244,177, 54,135,183, 90,181,106,238, 82,169, 20,199,143, 31,135, 84, 42, 13, 1, 0,169, - 84, 26,114,234,212,169,110, 3, 7, 14,132,135,135, 71, 53, 66, 8,161,229,168, 36,151,160, 94,187, 40,224, 7,130, 26,121, 79, - 60,106, 56, 7,245,186, 75,128, 71,249, 81,227,239, 55,104,208, 0, 48,211, 47,171, 40,242, 39,119, 44,115,116,116,220, 61,101, -202,148,177, 77,155, 54,237, 52,119,238, 92, 2,128,125, 35,214, 77,142,123,173,208, 19, 34, 68,136, 16, 33,226,223,107,213, 42, -105,191,164,140, 19,214,181,105,211,102, 36, 0,150, 16,178, 38, 54, 54,246, 94,241, 99,226,226,226, 34, 61, 60, 60, 22,251,250, -250, 22, 46, 52, 93,145, 68,229, 71,114, 95,200, 48,100, 74,222,118,197, 3, 84, 22, 89,234,100, 10, 0,194, 48,236,166, 91,183, -110,205,120,241,226, 69,114, 69,133, 95, 73,120, 19,179, 14, 1, 96, 27,165,207, 6, 18,114, 98, 82, 80, 80,135, 46, 99,198,160, -110,151, 46,214,238, 62, 62,188,214,104, 20,238, 93,188, 72, 46,237,217, 35,187,125,234,148, 84,171,215, 31,223, 71,233,139,138, -166, 51, 38, 38,230, 92,245,106,158, 39,251,246,233,214,169,154,175, 59, 0,224,201,179, 56,164,164,101,158,172,136,200, 42, 38, -184,122,174, 92,185,242,144, 76, 38,147, 20, 93,202,198,104, 52,166, 21,136, 49, 66,136,251,186,117,235,118, 48, 12, 19, 93, 30, - 95, 68, 68,196,193, 57,115,230,244,121,254,252,249,201, 23, 47, 94, 60, 7,128,232,232,232,231,238,238,238,155,226,227,227,251, - 68, 71, 71,239,165,102,168,144, 98,139, 74, 35,252,226,110, 37,128, 58, 5,139, 74, 87,118, 45,195,162,200, 15,173, 48,203,205, -205,109, 91,167, 78,157, 70, 0,136,125, 29, 62,131,193, 96,210,106,181, 28,207,243, 18,163,209, 72, 13, 6,131, 73,124, 45,137, - 16, 33, 66, 68,133,208, 24, 64,193, 74, 36, 5, 6, 20,167, 98,191, 13,200, 95, 46,176,224,245,155,191,157, 12,224,122, 17,142, -162,251,203, 59, 23, 0, 82, 0,220,205,223, 87,146, 22, 89, 87,218,118,169, 66, 43, 54, 54,118, 47,204, 88, 52,218,220,227,202, - 16, 74,211, 9, 33,203, 11, 68,211,235,114,112, 28,247, 70,214,135, 99, 24,230, 89,143, 30, 61, 42,116,124,121,199,236,160, 52, -250,115, 66, 54, 31,249,249,231,250,199,215,172,241,224, 57,206,129, 0,148,149,203, 83, 13, 6,195,115, 39,147,233, 78, 69, 45, - 89,175, 88, 99,158,196,116, 6, 0, 63, 63, 63,250,248,241, 99, 80, 74, 95,107,246, 6,165,244, 14, 0,175,114,142,137, 3,208, -202, 76, 49,184, 29,192,246, 18, 4,251, 14, 0, 59,204,238, 53, 20, 44, 42, 13, 48, 2, 17,250,214,110,217,111, 15, 0,161, 96, - 81,233, 55,137,248,248,248,135,200,143,243,246, 58,120,254,252,185,222,215,215,119,203,194,133, 11, 7,223,190,125,123,103,108, -108,172, 94,124,103,138, 16, 33, 66, 68,197, 68, 22, 33,228, 72,126,219,211, 61,191,179,127,164,248,239,130, 99, 10,142, 43,122, - 76, 1, 71,241,253,101,157, 11, 0,211,166, 77,155, 49,127,254,124, 53, 0,179, 22, 99, 46, 26,184, 84,242,111,184,123,111, 98, -241,220, 55,189, 0,111, 76, 76,204,250,191, 34,175, 63,229, 9,169, 43,127,229,253,124,244,232, 17,121,155,159,182,130, 69,165, -139, 32,232,191,144,238,103,207,158,173,108,219,182,237,218,216,216, 88, 14, 34, 68,136, 16, 33,162, 34,112, 42, 73, 24,149,162, - 7,186,151,245,127, 49, 65,244,167,227, 74,218, 38,132, 28,153, 63,127,126,119,115, 19, 91,212,162,197,136,101, 39, 66,196,223, -135,127, 98,214,171, 8, 17, 34, 68,136, 40, 85, 16,189, 98,197, 42, 16, 95,197,183,167, 77,155, 54, 3,165, 12, 27,230, 31,227, - 70, 8, 25,153, 63,235,240, 21,127, 45, 2,160, 67, 41, 23, 55,123, 54, 1, 33,164, 67, 37, 50,119, 90,228, 20, 57, 69, 78,145, - 83,228, 20, 57, 69,206,255, 95,156,229,113,151,114,126,112,105, 67,125,101, 13, 35, 22,255, 93,222,185,102, 28, 27, 82, 74, 94, - 70, 22, 93,235,240,149, 53, 15, 11,156,156,255,138, 15,128, 14, 34,167,200, 41,114,138,156, 34,167,200, 41,114,138,156,175,249, -105, 76, 41, 13, 70,222,170, 41,148, 82, 26, 76, 41,237, 50,109,218,180,233, 5,251,166, 77,155, 54,157, 82,218,190,224,184,252, - 99, 10,207, 41,216, 87,252,187,248,190,114,142, 45,237,126,140, 44,250,187,232,246,191,194, 71, 75,132, 8, 17, 34, 68,136, 16, - 33,162, 12, 92, 7,208,184,136,181, 41, 25,192,189,249,243,231,167, 23,241,157, 74, 6,112, 7, 64,189,252,227,146,243, 13, 74, - 69,125,171, 12,249,219,134, 18,142, 49,152,115,108, 41, 86,184,117, 37,253, 6, 32, 10,173,210, 80,223,141,253,198,219,211,185, - 81,161,213, 79, 16, 0, 0, 66,126,244,129,194, 48, 4,130, 0, 74, 41,226,146, 50,110,222, 77,164,179, 43,123,189, 0, 15, 98, -239,172, 84, 46, 19, 40,109,153,191,235, 92,102,170,126, 98, 88, 38,205, 48,151,163,150, 43,169,165,100,240,165, 64, 81, 23, 0, - 24,130,187, 58, 1,139,239, 39,208,251,175,123, 63, 8, 33,164,182, 19, 70,202, 85,234, 1, 54,182,118, 53,210,211, 83, 30, 25, -117,250,221, 17,201, 88, 75, 43, 17, 24,170,186, 61,105, 38, 80,204, 0,192, 72, 25, 44,137, 76,165,103,197, 90, 39, 66,132,136, -191, 9,175, 27, 23,175,164,208, 65,175, 59, 9, 73, 12,176,103,158,216, 42,142,107,102, 30,247,143,161, 66, 66,171,182, 51, 25, - 3,130,175, 0, 80, 80,124, 29,158, 68, 87, 87,232,124,119,210, 65,201,178, 27, 0,176, 58, 35, 63,137, 10, 56, 95, 98,163,206, -160,181, 82,198, 46, 1, 32,232,120,126,120,120,156,249,254, 98, 65,158,164,139, 68, 96,182, 8,148, 74,121,129,110, 2,197, 17, - 75, 25,254,184, 28, 67,117, 21, 73,171,183,167,115,163, 3,215,226, 59,157, 93, 61, 30, 77,235, 86, 7,229, 57, 64, 48, 65,221, -234, 75,156, 89,250, 17,154,214,242, 6, 21, 76,128,192,193,178,235, 15,232, 26,100, 83,233,135, 36,192,131,216,251, 56, 58,135, -173, 95,191,193,213,189, 90, 32, 17, 56, 35, 30, 94, 59, 57,104,194,148, 57,239, 6,217,144, 32,115,196, 86, 61,119,242, 73,245, -170, 1, 95, 78,252,234, 71,214,205,221,203, 66, 48,233,185,132,103,247, 27,252,180,104,206,222,122,238,100,201,157, 56,186,193, - 92, 65, 21,232,132, 81, 18,133,188,159, 74,105, 81, 67,163,201,126,204, 27, 77,187,131,220, 37, 93, 22,255,176,172,126,219,142, -221, 44,249,236, 4,198, 36, 32,112,215,206, 29, 62, 63,175, 92,213,141, 16,242, 30,165, 84,168, 72,158, 5,138, 41,145,155, 71, -118,147, 74, 88, 82,235,227,245, 44,204,156, 50, 91, 28,129, 46,228, 3, 66,203, 15, 47, 65, 9, 46, 68, 36,210,237,149,185, 70, - 45, 23,242, 11,161,240, 7,193, 30, 66,177, 35, 60,137, 38,137,239, 59, 17, 34,222, 46, 48, 12,115, 86, 16,132,118,111,146,147, - 16,210,140, 82,122, 69,188,187,255,191, 81, 49,139, 22,193,183,225, 81, 47,237,192, 27, 81,219,191,218, 55, 0, 42, 36,180,148, - 44,187,233,250,163, 68, 87,112, 70,172,255,110,236, 78,131, 9,224, 76, 70,240,156, 9, 60,103, 2,199, 25,193,155, 76,160, 38, - 61,230,252,122, 22, 48,100,163, 81,144,223, 38, 0,110,230, 94, 67, 74,153, 45, 55, 47,158,180, 39,134, 76,108, 95, 61,255,179, -151,201, 57,159,157,190, 27,151, 82,219,133, 76,143, 72,194,111, 21, 17, 4,103,215,140,199,214,253, 33, 49,203,127,201,125, 32, - 80, 10,123,107, 85,192,160,238,225, 94,155, 15,158,125,185,108,147,238, 1, 0,216, 88,200, 3,134,220,125,228,253, 58,133,224, -172, 84, 46, 91,187,234,103, 87, 55, 7, 21,225, 46, 45, 0,199,243,240,242, 9,102,167,143, 27,228,246,237,210, 13, 75, 1, 12, - 45,235,252,154, 46, 36,208,191,122,173, 73,155, 66, 46,121,231,102, 37, 25, 78,110,155, 17, 5, 61, 76,174, 30,181,164,223,204, -255,145,157, 57,117,252, 23, 53, 93,200,213, 7,137, 52,162,156,151, 2, 83,203, 25, 7,231, 47,248,161,238,187, 93,187, 91, 10, - 57,201,172, 46, 55,199,127,253,175, 27,190,170, 89,183,137,186, 85,144,167, 44,105,247,104,162,205, 78,131,145, 81, 42,222,173, -221,193, 90, 59,120,160,105,253,198,173,227, 0,252, 84,161,238, 96,145, 97,107, 65,168,124,239,146, 80,180,186,125,229,236, 40, - 62,238, 58, 40,111, 2,120, 99,225, 55,120, 19,168,144,247,221,116,244,175, 64, 9, 49,188,204,122, 1, 83,116, 58,125,241,186, - 91, 98, 66,124,227,165, 63,124, 63, 61,208,153, 28, 3,143, 45,247,211,112,174,162, 2, 83,132, 8, 17,255, 94, 16, 66, 56, 74, -169,228, 13,115,118,163,148, 30,125, 77,142, 47, 1,124,146,191,185,129, 82,186,248, 13,164,203, 19,128,107,254,102, 2,165, 52, - 70,172, 1,175,117, 63, 71, 22, 29, 50,124,157, 56, 90, 74, 80, 1,216,211, 11, 0, 84, 21, 77, 8, 5,148, 32, 44, 96,202, 69, -207,174, 29,225,232,236, 10,152, 52,128, 81, 3,152,180,128, 41, 23, 48,105,145, 18, 31, 13, 24,115,129, 39,199,192, 81,170,168, -112,142,245,153, 64,228,110,180,111,224, 13, 39, 27, 37,198,247, 12,116, 92,119, 60,114,195,134,147, 15, 59, 0, 24, 96, 86, 90, - 41, 69,211, 58, 53,176,124, 67,238,131, 67, 55,147, 58, 3, 64,112,125,199,227, 77, 3,125,188,150,109,210, 61, 8,185,155,214, - 5, 0,186, 6,217, 28,107, 18,224,230, 45,188,134,213, 87,160,180,149,123,149, 26,132,191,189, 22, 66, 86, 12,178,178,180,136, -121,182, 25,118, 30, 13, 25, 94, 64,155,242,206, 87,177,152,246,249,204,133, 82, 77, 86,162, 65, 48, 38,243, 78,108, 58, 43,145, - 11, 4,177,231,244, 57, 66, 6, 63,113,228, 71,220,164,217,223, 77, 3, 48,168, 76,235,144, 51,198, 45, 89,178,172, 78,139, 70, - 53,157, 19,246,142, 39, 57,233,137,224, 88,181,162,231, 59, 45, 96,235, 23, 40, 36,134, 46, 33,242,106, 29, 96,235, 80, 13,177, -151,182,225,249,149,125,164,101,131, 62,138,223,182,203, 6,151, 38,180,252,156, 72,203,206,173,155,236,172,230,237,238, 70,169, - 0, 65,160,160, 2,143,143,251,118,194,244, 93, 79,192,243, 60,222,239,220,178,253,194, 81,239, 82, 65, 16, 64,169,128,151, 9, -169,154,223,175, 62,104, 31,149, 70,175,154, 99,169,170,215,172, 93,203,187, 55,175,212, 52, 69, 30, 70,163, 65,243, 31, 16,224, - 98,145, 58,215,242,214,137,223,106, 2,191, 86,246,225, 33,181,156,193, 63, 63,190, 0,222,173, 71,178,107,183, 31,119,202, 76, -142, 29,178,119,243,170,190,171,215,174,221, 10, 96,180,248,138, 17, 33,226,237, 0,165,244,141,139,173,232,232,232,184,215, 17, - 91,158,158,158,173, 1, 44, 42,240,208, 32,132, 44,242,245,245,157,243,191,142,234, 43,125,189, 76,158,231, 7,197,196,196,156, - 47,139,179,123,247,238,238, 0,124,139,112,250, 18, 66,124, 75, 58,214,214,214,150,111,222,188,249,243, 35, 71,142,196,137, 53, -164,226,130,171, 50, 66,235,193,139,221,227, 27,232,227,115, 0,224,129, 25,149,246,149, 33, 63,157,137, 95,176,241,171,143, 22, -212,174, 98,143,236, 92, 3, 78,222,120, 14,158, 55,129,231,184,124,203, 22, 7,158, 51,161,115, 61, 71, 52,215,141,198, 79, 71, - 30,130,227,133,249,101,113, 22,135,145, 10, 31,212,239,208,127,151, 32, 80,185, 66,202,100,250,123, 57, 56, 79,122,191, 30, 51, -190,103,109,104,141, 92,255, 64, 23,242,123, 68, 34, 93,111, 22,167,240,231,144, 71,180,164,125, 60, 87,110,222,203,176, 70, 53, - 29,216,189,163, 53,213,103,194,148,242, 4,217, 26, 19,158,164,154,144,160,203,128,130,196,155,197, 41, 80,212,245,244,112, 83, -255,177,115,234, 51, 7, 54, 75,226,204,114, 50, 57,195,129, 23, 40, 75, 51, 34,244,246, 53, 59, 74, 11,252,182,202, 74,167, 74, -109,245, 81,235, 78,193, 54, 47,182,141, 36, 42,255,206,112,110,224,133,103,231, 55, 34,233,198, 17,164,198, 61, 39,214,186, 12, -184, 56, 84, 71,215, 65, 3,176,120, 64, 99,100,103,101,131,141,143,178,145, 75, 21,182,165,113, 82, 30,131,150, 44,252,206, 77, -194, 50,121,247,179,224,195,155,160,213,235, 1,158,131, 82, 34,128,208,130,255, 76,224, 77, 70,117,221, 62, 83,199, 2,184, 90, - 94,222, 35, 18,233,246,218,206,164, 21, 4, 83, 77,106,210,130, 0, 23,195,147,104,161,248, 9,116, 33, 31, 52,236, 60,172, 21, - 37,184, 80,153, 50, 10,114, 64,247, 70,190,150, 22, 22, 89, 15, 16,179,231, 51, 68, 65, 73, 93, 90,124,130, 15, 62, 30,167, 94, -183,110, 93, 15, 66,200,152,162, 62,106,127,197, 34,171, 34,167,200,249, 95,229,180,177,177,169, 90,165, 74,149, 57, 38,147,169, -181, 76, 38,115, 49, 26,141, 16, 4, 33, 65, 46,151, 95,120,254,252,249,188,204,204,204,167,255,182,188,223,189,123,215,108,177, -101, 14,167, 84, 42,197,195,135, 15, 31,155, 43,182,138,115, 74,165,210, 45, 23, 47, 94,196,174, 93,187, 0, 0,145,145,145,240, -243,243,179, 40,233,220,103,207,158, 89,180,109,219,118, 11,138,173,232, 81,156,243,222,189,123, 85, 15, 31, 62,140, 61,123,246, - 0, 0, 30, 62,124, 8,127,127,255, 18,211,115,241,226, 69,246,195, 15, 63,172, 10, 32,238,175, 46,163,183, 65,100, 21,253,126, - 69,104,133,132,132,208,224,224, 96, 82,252,119, 9,120,226,109, 39,111, 0, 29, 15, 0, 79, 42,154,136,136, 4,186,176,158,155, -180,203,153, 61, 43, 91, 43,101, 12,230,174,159,244, 50, 57, 45,187,153,132, 64, 0, 0,142,130,177,179,148, 95,158, 63,164,158, -119,122,142, 14,135,174,197,158, 15, 79,172,152,137, 52, 60,142,158, 2, 96,251,191,134,146,248, 15, 89,124,106,199,142,105, 93, -234, 78,236, 89, 23, 7, 47, 61,159, 8,160,220,168,239, 84, 16, 64, 5,174,208,249, 61,191,235, 0, 8,175, 46, 10, 44,128,230, -237, 19, 42,102,209,106, 75,136, 36,221, 25, 93,237,213,242, 21,163, 70,141,176, 54, 37, 63, 66,154, 65,134,151,233, 58, 36,104, -165,200,145, 56, 35,246,193, 61,158, 33, 56, 85,126,225, 34,139,114, 58, 91, 59,185, 37, 19,212,113,172, 71,214,241, 25,233,114, -194,177,214,189,191,181, 77, 57,243,227,115, 46, 55, 57,151, 16,148,187,182,158,141,141,173,159, 46,245, 57,155,153,158, 2, 91, -215,218,232,210,191, 59,190, 14, 14, 68,118, 86, 46,146,211, 46,211, 26,110,214, 36,250,194, 86,204,236, 90, 11,169,137,241,208, -155, 0,146,171, 79,211, 25,116, 57,165,222, 71, 6,107, 39, 76,158,242,129,143,155,147, 69,193,164, 2, 42,240,168, 87,171, 26, - 58,182,110,138, 83, 23,255,192,245,123,145, 16,242, 39, 21, 80, 65, 64, 76, 82,122,162,206,200,111,172,208, 13,229, 57, 80,147, -174, 68, 33,134, 74, 12, 25,214,113, 33,106, 30,152,221,172,134,213,240,105,221,125,172, 44, 20, 4, 58, 19, 15,157,193,132,236, - 63, 86,192,161, 74, 29,168,149, 74,210, 0, 90, 9, 0,113,221, 66, 17, 34,138,160, 95,191,126,202,196,196,196,208,224,224,224, -192,142, 29, 59,170, 91,181,106,133,220,220, 92,156, 60,121, 18,185,185,185, 62, 94, 94, 94, 62, 39, 79,158,236,211,172, 89,179, - 8, 79, 79,207,182,187,119,239,174,136, 15,173, 4,255,115,102, 23, 0,112,132, 16,228,239, 35, 0,132,215, 89,231, 86, 46,151, - 35, 58, 58,250,141, 91,182, 98, 99, 99, 31, 87,198,178,149,147,147, 35,243,240,240,128,147,147, 19,120,158, 71,110,110, 46, 14, - 28, 56,128,204,204, 76, 8,130, 0,149, 74,133,111,151,172,199,131, 91,161,184,122,245, 42, 50, 51, 51,101,229,113,198,196,196, -144,122,245,234, 65,175,215,131,227, 56,232,116, 58,156, 62,125,186,112, 91, 34,145, 96,202, 55, 75, 17,121, 35, 20,183,111,223, - 70, 76, 76,204,223,178,218, 72, 5,180,200,191,209, 26,186,174,172, 10,251,183,130,231,185,233,235, 54,237,184, 60,125,244, 0, -140, 27,216,193,107,222,202,125, 29, 34,146,233, 38, 0, 8,116, 34, 67, 6,183,171,225,109,171,150,226,235,109, 55, 0, 74,167, -191,238,245,194, 82,105,100,109, 87, 50,113,255,213,232,208, 25, 3, 26,160,154,155,181, 95,245,234, 68, 30, 21,101,198,154,130, - 2, 7, 59, 75, 69, 64,112,125,199,227, 16, 4,216, 90, 41,106,130,231, 96,107,169, 8,232, 26,100,115, 12, 0,108,213,178,154, - 37, 89,190, 74, 67, 99,111,217, 72,181, 66, 50,210,162,161,155,247,208, 30, 29, 85,221,122,244, 81, 89, 74, 57,164, 94, 61,137, - 44,169, 39, 76,246, 62,208,155,210, 16,243, 52,138, 63,115,229,126,108, 74,182,126, 82,185,201,164, 56, 31,251,244,161, 83,213, -186, 29,237, 82,142,204, 76,170, 58,108,155, 47, 3,129,201,222,218, 59,209,194,185,137,234,218,147,167, 57, 2,253,179, 69,167, - 56,178, 50, 51,159,155,120,184,105,121,137, 85,212,217,223, 48,173,107, 29,164,167, 37, 65,103,228,144,169,229,140,174,182, 74, -133,254,105, 24,244, 70, 14, 6,147, 0,169,173, 7, 78, 94,190,151, 34,152, 76,199, 74,227,140, 74,161,183, 1, 88, 22,221, 87, -221,137,212,155,106,173,186, 13,147, 22,209, 49,113,216, 20,114,185, 65,254,113,149,175,228, 2,151, 55,252, 92,196,146, 69, 40, - 90, 85,198, 9,190,150, 11,105,162, 82,202,126, 94, 52,241,195,192,119,252,237, 21, 66,204,101, 16,193, 8, 11, 94, 2,173,156, -135,141, 87, 53, 8,134,108,170,209,233, 50,194, 1, 49,210,187, 8, 17, 69, 80,179,102, 77, 87, 27, 27,155,240,201,147, 39,219, -247,238,221, 27,251,247,239, 71, 86, 86, 22, 54,110,220,136,101,203,150,225,171,175,190,130,201,100,194,186,117,235,212,123,247, -238,109,178,106,213,170, 24, 31, 31,159,218,209,209,209, 9,229,245, 41, 1, 40, 0, 72,243,219, 46, 2, 64, 56,122,244, 40,186, -117,235,134,163, 71,143, 10,249,251,120, 66,136,137, 82, 90,169,245, 68,229,114, 57,228,114, 57, 50, 51, 51,223,136,216,146, 74, -165,176,180,180,132, 92, 46, 71,118,118,118,133,197, 22,199,113,108, 76, 76, 12, 50, 51, 51,209,177, 71, 15, 44,157, 63, 31,237, -218,181, 67,199,142, 29, 65, 41,197,233,211,167,209,161, 69, 16, 6,188,215, 22,247,239,223, 7,199,113,102,165, 55, 33, 33, 1, -137,137,137,232,210,163, 7,214,175, 90,133,166, 77,155, 34, 32, 32, 0, 28,199, 33, 52, 52, 20,125, 59,183,128,178, 87, 7, 68, - 70, 70,138,149,218, 76,107,214,155,242,209,122,109,132, 37,209, 43,129, 78,228,200,192,206, 77,186,247,104, 25,136,245, 59,207, -124, 23, 24, 72,118, 0,128,131,149,226,219,143,218, 85, 67,196,139,116,156,185, 29,119, 36, 34,249,205,204,214, 16,120, 56, 58, - 88,171, 1, 86, 14,173, 81,224,172,159,160, 92, 7,102,129, 82,168, 91, 79,197,224, 30, 17, 94, 77, 3,189,188, 10,102, 29, 90, -118,251, 17, 67,238, 61,246,110, 28,224,234, 13,222, 4,240, 38, 88, 15,216, 6,124, 99, 81,110, 58, 90, 86, 85,156,154, 58,105, - 98,243,174,189,250,171,228,106, 27,240, 89, 47, 97, 74,184,135,212, 71,231,145,171,246, 67, 66,244, 19,236, 58,113, 53,243, 81, - 76,106, 22,195,224,100, 98,166,254,203,168, 52,154, 83, 30,175,206,132,249,115,102, 78, 10,222,181, 99,167,149,162, 90, 75, 18, -181,162, 91,166, 92,194, 41,156,124, 27, 50, 26,165, 35,253,126,227, 78,235, 92, 3, 22,148,199,163,201,205,218,119,250,228,241, - 1, 53,170,182,180,122,118, 61, 4, 90,157, 30,122, 19, 80,187, 73, 91,240, 60,149, 19,134, 8,214, 44, 75,146, 82,211, 65, 76, -124,226,133, 59,207,226, 47,222,121,194,234,173,202,231,126, 69,221, 19,246,243, 30,109,235, 3, 38, 45,222,107, 93, 7, 75,183, -158,249, 12,192,176,215, 43,228, 60,139, 22, 5, 90,214,118, 38,107, 0,180,188,113, 96, 89,205, 70,189, 38,160, 34, 22,173, 32, - 39,210, 53,168,186,251,111, 75,191,157,106,239,224,233,199, 18,193, 4,234, 90, 23,200,138,161, 36,230, 50,108, 60,154,130,119, -111,129,117, 63,253,144, 35, 8,116, 71,101, 66, 91,136, 16,241, 54, 67,167,211,237, 91,184,112,161,125,247,238,221, 11, 44, 50, -184,124,249, 50, 54,108,216, 0, 11,139, 87,223,147,221,186,117, 3,165,212,126,238,220,185,251, 0,188, 83, 26,103,139, 22, 45, -122,252,244,211, 79,113,245,235,215,127,146, 47,182,100, 0,152,176,176, 48,230,229,203,151,196,206,206,142,186,187,187,155,226, -226,226, 4, 0,252,199, 31,127,204, 90, 90, 90,214,200,201,201, 57, 87, 89,161, 37,151,203,223,136,207,150, 84, 42, 5, 33, 4, -114,185, 28, 50,153, 12,148,210, 10,137, 45,158,231, 37, 71,143, 30,197,141, 27, 55,240, 85,253,250,152,232,225, 1,123,123,123, -132,134,134,130, 82, 10, 11, 11, 11,164,165,165, 97,199,142, 29,120,247,221,119,193,113,156,204, 28,222, 61,123,246,224,230,205, -155,248,166, 81, 35, 76,180,177,129,165,165, 37, 78,159,206, 27, 13, 84, 40, 20,136,142,142,198,233,211,167,209,182,109, 91,177, - 82,191, 38,204,174, 60,109, 9,145, 16, 23,184, 26, 13, 90, 80,142, 2, 4,238,129,129, 68, 22, 17, 65,141, 21,189, 40,195, 96, -230, 79,155,142, 4,255, 56,161, 7, 25,217,179,129,251,188,223,206,142, 1,128,225,239,251,123,168, 21, 18, 44, 63, 24, 65, 25, - 6, 51,223, 68, 6, 3, 3,137,140, 97, 48,166, 99,211, 0,196,101, 24, 16, 21,151,241,123, 4,165,102, 13,245,156,249,113, 48, - 54, 31, 10,125,185,108,179,238, 1,165, 20,182,150,138,128, 33,119,163,188,127, 59,122,243,197,146, 93,186, 7, 84,160,176, 85, - 75,107, 14,187,223,162,220, 89,135,141,189,101, 35,167, 79,253,178, 69,207, 97,147,149,220,131,221, 48, 68,157,128, 96,212, 34, -203, 40, 67, 6,235,138,152, 23, 47,240,253,186, 35, 47,179,114, 13, 3,194,146, 42, 38, 48, 35, 83,104, 78,160, 19,233,253,253, -215, 51, 78,205,255,118,174,165,246, 73,104, 14, 75, 56, 45, 91,165,141,228,219,175,126, 36,217,122, 67,255,168, 52,154, 93, 30, -143,222, 10, 11, 22, 46,249, 41,120,196,160, 62, 15,252,253,218, 56,240,113, 79, 29,116, 89, 89, 73,219,142,223,116,205,239, 41, - 18, 0,136,138, 73, 69,114,102, 46,199,115,166,115, 86, 82,204, 11, 55,199, 58,152,143,106, 46,196,169,119,171,186, 31, 58, 89, -201,160,205,201,128,179,149, 20,157,155, 86,255,176,154, 11,153,250, 36,145, 38, 87, 94,104,153, 64, 77, 90, 92, 89,240,110, 77, -202,155,106,130, 55,193,120,119, 75,197, 45, 99, 4, 19,199,181,182,180,182, 51, 60, 99,144,107, 1,168, 28, 65,172,125, 0, 27, - 95, 34,173,213, 31,113, 79,194,185,207, 62, 28,148,250,244,121,204, 47,142, 42, 44, 22, 95, 33, 34, 68,188,138,232,232,232,143, -166, 79,159,126,177,105,211,166, 46,142,142,142,168, 83,167, 14, 14, 29, 58,132,201,147, 39, 23, 30, 83,191,126,125, 80, 74,145, -150,150,134,133, 11, 23, 38,196,197,197,125, 84, 22,103,120,120,248,131,205,155, 55,183, 14, 12, 12, 52,202,100,178, 12, 0,138, -140,140, 12,101, 90, 90, 26,209,233,116, 16, 4, 65,176,177,177,225,227,226,226, 76, 3, 6, 12,208, 95,186,116,169,122,110,110, -110,244,235, 88,180,188,188,188,194, 82, 83, 83, 51, 9, 33,175, 29,250,161, 64,100, 57, 58, 58, 58,229,228,228, 8, 0,210, 43, - 19,250,129,227, 56, 52,106,212, 8, 39,206,223,194,209, 51,151,144, 21,247, 16, 99, 70,124,132, 58,117,234,224,196,137, 19,149, - 46,179,122,245,234,225,248,233,139,184,120,227, 14,162, 35,239,226,179, 49, 35, 80,187,118,109, 28, 63,126, 92,172,208,230, 35, -164,152,111, 86, 72,113,161,213, 54, 36, 36,164,160,103,254, 39,249, 90,203,137,212,115,175, 33,223, 50,183,107,245, 90,210,142, -115, 65,164, 42,236,246, 59,222, 98,230,247, 43, 30,212,113, 33,131,238, 37,150, 63, 59,236, 21,171, 86, 34, 13,175,237, 76,182, -223,185, 95,243,195,247,154,122, 97,253, 33,245,108, 0,232,223,170, 42,174, 61, 74,198,213,200,164,237,225, 73, 52,252,117,115, - 93,199,133,168, 65,177,125,225,231, 61,219,250,120,186, 98,195,254,139, 32, 4,251,204,106,112, 41,165, 77, 3,125,176,108,115, -241, 25,134,174,222, 75,118,233, 30,156, 8,203,234, 10, 0,157,106, 89, 28,107, 92,221,206,187, 60,203,134, 74, 46, 25,213,181, -207, 96, 37, 23,121, 8,120,126, 26,132,211, 67,107, 20, 16,159,146, 13,141,141, 23, 66, 47,223,209,102,234, 12, 19,194,147, 42, -103,197,139, 72,166, 79,234,187,145, 23, 57,185, 90, 55,181, 83,117, 29,203, 8, 66,142,158,226, 90,196,243,172,240,120,250,208, - 28,142,168, 40,106,120,199,147,180, 90,179,105,215, 28,169, 76,222,159, 37, 32,206,182, 22, 78,107,126,252, 6, 86, 86,150, 16, - 12, 57, 64,110, 50,122,127,250,125,242,189, 88, 99, 85, 0,240,119, 36,150,173,171,201, 54, 73, 24, 18,243,251, 99,195,172,114, -205,171, 38,140, 30,212,185,190, 84, 48,228,226,243,133, 59,177,118,106, 79, 12,110, 95, 75, 26,242, 71,228,104, 0,243, 42, 91, -214,148,231, 64, 77, 90,188, 51,227,252, 3, 2, 92,164, 64,203, 27,187,190,173, 9,220, 50,155,163, 33, 33, 82,137, 27,169, 85, -215,219, 66, 38,196,252, 1, 33,230, 15,202,122,181, 0,241,110, 77,136,107, 35,250,243,162,175,114,215,175,223,112, 82, 96,240, -117,121,161, 50, 68,136,248,255, 10, 74,233, 19, 91, 91,219, 46,221,186,117, 59,115,226,196, 9,251,160,160, 32, 0,192,141, 27, - 55, 0, 0,141, 26, 53,130,191,191, 63, 18, 19, 19, 49,112,224,192,148,248,248,248, 46,148,210, 50,125,126,179,179,179,159,238, -217,179,199, 37, 55, 55,183,254,172, 89,179,146,124,124,124,178,116, 58, 29,201,200,200, 16, 56,142,131,157,157,157,188,126,253, -250,104,222,188,121,206,229,203,151,171,188,124,249, 50, 27,192,243,202,164,191,103,207,158, 56,127, 62,111,210,222,155,136,171, - 37,147,201, 16, 20, 20,228,241,228,201,147,216,252,251,115,165, 18,247,180,240,247,157, 59,119,112,238, 86, 12, 36, 6, 45,228, -201,113,184,178,127, 15,122,140, 26, 11,142,171,188, 23,195,157, 59,119,112,224,244, 21, 88, 40, 36,120,248, 48, 28,123,246,236, -193,152, 49, 99, 94,139,179,146, 40, 83,139,252,203,235,125, 60,128,117,165, 90,180,130,131,131,207,161,132,168,182,213,171, 19, -185, 34, 7,115, 59, 55,242,152,210,191,101,117,214,148, 21, 7,129, 23,192, 74, 1,103, 71,107,108,217,178,189,234,246,157, 59, - 47,215,243,144,254, 36,112,220,204,123,137, 84, 83,129,116,205,253,113,231,197,254, 91, 38,181,149,140,233, 90,211, 30, 0,100, - 18, 6,203, 15,133,115, 0,230,190, 78,134,223,241, 36,202, 28, 19, 70,186, 58,216,204,158,254, 73,176,125,219, 70,254, 56,119, - 53, 12, 63,237,185,124, 94,158,132,205,102,223, 56,193,132,226,250,169,164, 89,135, 16,202,247,187,228,121,234, 42,179,176,131, -241,249, 89,192,168,131, 78,111,196,203, 84, 30, 47,211,116,144,168,101,184, 17, 25,163,117, 72,192,145,202,230,153, 16, 66, 90, - 86, 83,186,207,249,110,137,167, 78,155,195,101,165,167,112, 50,249, 21,169, 90,165,136,175, 8,207,229, 24,170,107, 83, 85,214, - 16, 16, 88,185,146,106,102,124, 49,212, 34, 54,226, 4,106, 48,113, 32,148, 66, 85, 43, 24, 86, 42, 86,214,202, 87,246, 2, 0, -124, 93,109,228, 11,191,158,108, 51, 97,234,215,229,250,128, 5, 18, 34,171,211,216,117, 66,144,143, 29,206,223,124,128,243,247, -162,195,207,223,120, 88,187, 93, 29,119,248,123,218,142, 15, 36,100, 65, 4,173,184,133, 52,175, 96, 56,192,164, 43,156,117, 24, -232, 66, 62,104,220,127, 86,137,179, 13, 75,131, 47, 32, 68,242, 20,132,101, 1,194,228,205,128,124,249, 7, 36,182,213,232,246, - 93, 7, 52, 27, 54,108,254, 38, 34,153,138, 86, 44, 17, 34,202, 65, 70, 70,198, 93,181, 90,221,185,110,221,186, 27, 63,255,252, -115,171, 65,131, 6,185,143, 24, 49,130, 1,128,196,196, 68, 97,217,178,101,113, 63,255,252,115,102, 74, 74,202, 48,163,209,120, -207,156,142, 47, 33,228,210, 47,191,252,146,124,225,194,133,218, 77,154, 52, 81, 52,108,216, 80,176,179,179,147, 40, 20, 10,222, - 96, 48,232, 34, 35, 35,249, 39, 79,158,184,101,100,100, 60, 6, 16, 85,153, 97,253,124,235,213, 60,150,101,231, 80, 74,131,222, -132,143,150, 90,173,118, 7,240,152, 16, 82,163,162,195,134,127,106,176, 37, 18,164,167,167, 67,147, 16, 14,101,204, 35,212,181, - 96, 16,104,103, 9,107,107,235,215, 18, 69,153,153,153, 64,110, 44, 46, 94,188, 3,112, 28,108,108,108, 96, 99, 99,243,183, 11, -173,210,180,200,127, 1,197,103, 26,230,215,219,178,125,180,106, 59,147, 49,118,114, 44, 27, 21, 92, 93,230,235,237, 9,125,204, - 13,220,121,153,131,153,205,154, 68,176, 10, 43,221,168,143,122, 54,234,211,183, 10,218, 54,111, 76,124,221,108,198, 47,248,113, -245,167,181, 93,200,228,240, 68,186,220,156, 68,133, 39,209,167,181,156,201,134,179,119, 99, 70,123,170,181, 16, 4,138,179,247, -226,113,239,121,250,134,251, 73,244,105, 69, 50, 88,219,157,116,144,128,217, 73, 41, 85,218, 88, 88,100,215,175, 87,211,177,195, - 59,245,152, 46,109, 26, 65,198, 2, 23,175,221,193,196, 31,247, 93, 17, 4, 26,124,211,204, 97,195,188, 25,134,175, 10,168,188, - 25,134,166, 87,102, 24, 82, 74,105,222,172,195,178,221,190, 88,150, 36,104,162,175,187, 74, 29,252,160,141, 58,139,231,233, 2, -162,147,178,145, 37,113,133, 62, 54, 22,160,194,139, 80, 74, 43, 93,171, 29, 29, 29,157,171, 6,250, 87, 95,177,105, 15,140,154, - 76, 60, 13,221,136,156,244,120,124,187,230, 80,117, 79, 79,207, 54, 49, 49, 49,231, 42, 80, 97,252,207, 28,217,238, 12, 10,176, - 82, 5, 66, 86,237, 66,138,131, 10,142,106, 25, 4,109, 50, 70, 77, 24,100,211,181,227, 32, 27, 0,136,126,120, 27, 62,106,173, - 89,188, 70, 7,244,233,223, 46,192, 22, 38, 45, 54, 29,191,173, 99,128, 46,155, 79,134, 71,181,171,105,171,236,223,210,199,110, - 94, 92,198,251,168,100, 80,209, 2,139, 86,161,133,175, 18,179, 13,119, 83,202,215,114, 34, 81, 59, 47, 37, 89,244,237,216, 80, - 45,147, 16, 66,115, 98, 65, 85,142, 88,189,105,119,142,220,132,117, 98, 19, 42, 66,132,121,208,104, 52, 55, 9, 33,117,190,252, -242,203, 15,102,204,152,209,218,194,194,162, 42, 0,228,230,230, 62, 53,153, 76,231, 1,108,175,200,236,192,124,225,244,152, 16, -242, 52, 42, 42,202,101,235,214,173,182, 0,148,249,127,235, 0,100, 0, 72,124,157, 25,135, 5,162,138, 16, 50,231, 13, 90, 58, -142,230,115,214,168,204,249, 12,195,240,132, 16, 16, 66,160, 80, 40,112,225,194, 5,244, 11,238,136,251, 33, 25, 8,178,181, 68, -147, 97,163,176,243,212, 41,176, 44, 11, 66, 8, 88,150,173, 80, 59, 34,145, 72,112,241,226, 69, 12, 30,216, 23, 10, 9, 96, 99, - 99,131, 47,191,252, 18, 7, 15, 30,132, 68, 34,174,210, 87,129,114, 94, 87, 32,184,204,143,163, 69, 48,239,212,198,239,101,224, - 77, 56,188,241, 7, 28, 9,203, 49, 60, 76,198,204,128,100, 44,219,131,108, 33,249,199,205,163, 79, 93, 12, 91,252,241,128,238, -234,119,219,117,196,187,109,219, 73,106, 55,110, 51, 27,192,242, 34, 13,118,135,178, 98,109,240, 2,190, 89,119,252,193,168,157, -161,145, 4,198,108, 12,232,212,152,242, 2,190, 41, 71, 4,252,137,211, 70,101,185,243,226,229,203,118, 48,230,224,249,237,223, -149, 85,170, 86, 7,120, 35, 30, 63,126,132,159, 55,237, 23, 66,175, 61,220, 98,224,240,121, 84, 26,205, 53,151, 51, 79, 89,113, -176,177,144, 7,116, 13,178, 57, 38,128,194, 86, 45,171, 73, 5, 30,182,106,105,205, 78,181, 44,142, 81, 74,169,149, 74, 90,147, -242,166,114, 57,181, 6,110,237,166, 95, 55, 44, 25, 62,124,184, 69, 74, 76, 2,226,178,194,144, 35,247,128, 73,237,133,168,219, -231,181, 26, 61, 87,110, 35, 94,214,253, 76, 73, 73, 73,186,121, 53, 13, 59,215,204,135,201,160, 71, 82, 76,158, 86,141, 75,201, -130,181,163,199,229,138,112, 26, 57, 33,179,207,160,145, 50,149, 21, 84,131,251,116,151, 71,165,234,209,192,221, 42,175, 50,229, - 36,227,254,233,139,104,155,155,167,219,158,188,100,224, 83,207,221,172,116, 90, 41,101,159,119,109,232,129,167, 47,226,113, 33, - 60,118,211,147, 84, 26, 87,205,129,108,138,138,203, 24,221,179,153, 55,150, 30,140,248,172, 52,113, 84, 26,103,160, 11,249, 0, - 64,203, 60,103,120, 45, 40,208, 50,208,133,124, 96,206, 76,195,146, 56, 37, 50,124,184,228, 88,244,172,221,215, 83,122, 78,249, -176,149,117,243,230,221,228,224, 12,200,214,234, 77, 17,233, 52,235,117,202,232, 53,122, 74, 34,167,200,249,159,228,204, 23, 61, - 91,242, 63,111,146, 51, 14,197,226, 58,189,110,222,139, 14, 19, 82, 74, 37,249,214,172, 50,157,225,203,227, 44, 58, 76, 72, 41, - 61,154,111,205, 42,211,170, 85,156, 83, 16,132,184, 70,141, 26,217,247,232,209, 3, 60,207,227,209,163, 71,136,126,249, 18, 29, - 70,127, 6, 91, 91, 91,156,191,123, 23, 15, 31, 62,196,156, 57,115, 96, 50,153,112,224,192,129,152,242, 56, 37, 18,137,177,122, -245,234,178, 94,189,122,129,227, 56, 60,121,242, 4,177,177,177,152, 56,113, 34,108,108,108,112,243,230,205, 66,206,148,148, 20, - 72, 36, 18,227,223, 81,151,254,235, 40, 73,100,149, 45,180, 0, 30,188, 9,153,167,230, 98,249, 5, 24,141, 38,212, 12, 79,162, -207,138,252,191,186,174, 3, 57,124, 55,236,193,211,155,127,188, 43, 71,210,189,188,115, 42,128,200, 20, 26,223,216, 75,146, 13, - 99,182, 53,158, 28,195,179,196,236,156,200, 20, 26, 95,209,204, 81,129, 39, 48,106,128,248, 27,184,116,254, 28, 66,175,220,193, -245,123, 15,248, 75, 55, 35,119, 50, 2,190,137, 72,161,143, 42,161, 78, 97, 25,188, 20, 67,239, 61,246,110,236,239,226, 13,158, - 3, 21, 76,176, 25,176, 29,195, 34,154,123, 55,174,102,235,157,103,201, 50,193,238,147,223,129, 37,202, 50,249,174,191, 48,174, -107, 89, 85,241,126,118, 70,106,179,246,109,222,177,176,169,213, 21, 41,143, 35,241,232,206, 69,237,205,176,168, 75,215, 95, 24, - 95,203, 90,226,225,225,209,186,125,155, 0, 12, 24, 53, 29, 70, 77, 38,158,132,254,138,156,180, 4, 92,184,108,137, 7, 89, 89, -239, 0, 48,219,162,117, 41,218, 84, 27, 0, 90,250,202, 94, 88, 65,239,250, 81,247, 30, 80, 16, 29, 4,125, 22,136, 38, 5, 81, -177,134,204,247,215,188,228, 1, 64,173, 32, 18, 11,154,105,109, 14,111,160,143,131,159,154, 53, 97,243,169,112, 8, 66,222,242, - 77,130,128,213,155,127,143, 26,253,205,224, 6, 8,244,182,171, 71, 8, 33, 21, 49,249, 19,138, 86,215,119,126, 93, 83,119,102, - 54, 32, 24,113,113,188,125,205, 86,203,211, 90, 85,214, 50,118, 47,150,198, 2, 24, 93,203,157,172, 29,191,252,248,236, 70,167, - 34, 90, 78,250,164,167, 53,168,184, 0,187, 8, 17, 34,254,126,228,228,228,140, 26, 54,108,216, 90,169, 84,234, 4,128, 8,130, - 0, 65, 16, 36,139, 23, 47,150,242, 60,207, 48, 12,195,179, 44,203, 29, 61,122,212,196,243,124,178, 78,167, 27, 85, 30, 39,199, -113, 81, 99,199,142,173, 94,222, 12,197, 29, 59,118, 64, 34,145, 24, 57,142,139, 18, 75,162,124,145, 85,244,187,168,149,171,244, -198,131,226,235, 22,131,231,206, 5, 64, 64,241, 85, 49,145, 5, 0,184,155, 74,227,106, 59,147,137,181, 27,183,153, 91,112, 78, - 69, 19,167,227,249,190,141,235,248,239, 0, 0, 61,229, 7, 87, 38,131, 89,122,109,255,250,141,223,217, 41, 80, 42,225, 40,221, -192, 8,216,171,227,112,223,156,153,118,165, 33, 46, 41,227,102,193, 66,209, 2,232,255,134, 11,243,195, 56, 80, 74,105,225,112, -225, 15, 74,164,100,234,203,141, 3,117,241,169,190, 99, 99,111,217,200,147,127,220, 30,197,243,212,149,101, 73,130,214,192,173, -125, 93,145, 5, 0, 49, 49, 49,231, 2,157,201,201,187,245, 92, 58, 57,170,243,173, 92, 26, 32, 69,131,147, 49, 73,217,231, 42, -195,153,158,107,234, 57, 99,217,193, 67,114, 41, 43, 1,165,121, 1, 69, 41,133,206,200,167, 21,136,177,186, 14,196,253,203, 3, -220, 14,150, 37,209,229,241, 93,125, 24,191,116,192,130,211,147,195,159,167,111,120,150, 78,195, 0,224, 89, 58, 13,171,225, 64, -102, 71, 37,100, 79, 14,139, 78,255,161,162,126, 21,148,224, 66,227, 1,115,255,180,239,117,239,231,253, 56,122, 7, 64,239,218, -206,164,227,128, 73, 63, 79, 34, 4,226,242, 19, 34, 68,252, 63, 66,129, 85,139, 97,152,121,111,144,243, 40, 33,164, 27,128,199, - 21, 56,231, 42,128, 58,111, 56,111,169, 0, 82,197, 82,126,163,247,180,226, 1, 75,195,147,232,106,152,177,104,180,185,199,149, -122,126, 28, 61, 13,192,225,117, 50,152,207, 97,255, 38,111,218,221, 68, 58,251,175, 40,140,124, 81,245,151,248,250, 68, 36,209, -206, 0,224,231,231, 71, 31, 63,126, 12, 74,233,107, 57, 21,222, 79,166,119, 80,108, 41,135,146,196, 54,128, 86,230,240, 69,166, -208,111,128, 63, 15, 13, 63, 78,165,223, 2,248,182, 82,121,174,100,228,119,179,235, 86, 18, 61, 5,148, 31,157, 95,132, 8, 17, -111,167,216,250, 11, 56,143,138,119,246,237, 67, 89, 1, 75, 25,241,246,188,125,120,244,232, 17,121, 93,145, 37, 66,132, 8, 17, -111, 49,248,215,252,148,168,161, 94,243, 35,226, 45, 17, 92,197,247,137, 66, 75,132, 8, 17, 34, 68,136, 16, 33,226, 13,137,172, -226, 98,139, 0,232, 80,162, 52,175,192,108, 2, 66, 72,135,138, 38,168, 60,126,145, 83,228, 20, 57, 69, 78,145, 83,228, 20, 57, -223, 62,206,242,184,223,186,217,140,180,136,147,243,155,254, 0,232, 32,114,138,156, 34,167,200, 41,114,138,156, 34,167,200,249, - 54,127, 0,140, 44,109, 91, 28, 58, 20, 33, 66,132, 8, 17, 34, 68,136,248,139, 32,198, 6, 18, 33, 66,132, 8, 17, 34, 68,136, -120, 61,148,187,168,180, 8, 17, 34, 68,136, 16, 33, 66,132,136, 74,160,220, 69,165, 69,136, 16, 33, 66,132, 8, 17, 34, 68, 84, - 14,149, 90, 84, 90,132, 8, 17, 34, 68,136, 16, 33, 66, 68,249, 40, 43, 50, 60,169,224,138, 39, 34, 68,136, 16, 33, 66,132, 8, - 17, 34,202,192,159, 34,195,135,132,132,208,162,223, 34, 68,136, 16, 33, 66,132, 8, 17,127, 39,222, 86, 45, 34, 14, 29,138, 16, - 33, 66,132, 8, 17, 34, 68,188, 6, 74,242,209, 18,133,150, 8, 17, 34, 68,136, 16, 33, 66,196, 27, 64, 89, 62, 90, 5, 1, 75, -219,230,155,234,218,138,183, 75,132, 8, 17, 34, 68,136, 16,241, 15,224,173,212, 34,133,206,240, 33, 33, 33, 52, 56, 56,152,136, -229, 44, 66,132, 8, 17, 34, 68,136,248, 39,240, 54,106, 17,113,214,161, 8, 17, 34, 68,136, 16, 33, 66,196,235,136,169, 34,179, - 12,139,111,139,107, 29,138, 16, 33, 66,132, 8, 17, 34, 68,188, 33,193, 85,124, 31,243, 23, 95,176,131,200, 41,114,138,156, 34, -167,200, 41,114,138,156, 34,231,255, 23,145, 85, 92,108,137,179, 14, 69,136, 16, 33, 66,132, 8, 17, 34, 94, 3,230,204, 58, 20, - 33, 66,132, 8, 17, 34, 68,136, 16, 81, 9, 16, 66, 70, 18, 66,186,231,255,238, 94,212,170, 37, 90,180, 68,136, 16, 33, 66,132, - 8, 17, 34, 94, 3,148,210,117,132, 16,183,124,129, 21, 66, 41,141, 23,133,150, 8, 17, 34, 68,136, 16, 33, 66,196, 27, 64, 49, -191,172, 96, 66, 72,225,112,162, 40,180, 68,136, 16, 33, 66,132, 8, 17, 34, 94, 3,101,249,104, 17, 0, 29, 74, 57,233,116, 5, -148, 92,135, 74, 36,234,180,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,191, 56,203,227,174,136,254,248,183,160,164,176, - 14,133,226,139, 82,250,151,125, 0,116, 16, 57, 69, 78,145, 83,228, 20, 57, 69, 78,145, 83,228,252,255,250,121,227,179, 14, 27, - 18,162, 18,141,136,111, 31, 8, 33, 46,132, 16, 23,241, 78,136, 16, 33, 66,132, 8, 17,230, 91,184,222,168,143, 86, 32, 33,159, -124, 18,228,180,166, 14, 33,214,247, 40,213,148,117,172,179,179,243, 90,181, 90, 61, 72,163,209,228, 18, 66,132, 34,166, 54, 0, - 40,186, 46,208,147,164,164,164, 86,229, 93, 91,161, 80, 44,115,113,113,249, 36, 39, 39, 71, 67, 8,161,132, 16, 16, 66, 10, 50, -252,202, 55,207,243, 49, 41, 41, 41,141,254,211,133, 8,176,142, 46, 46,215,164, 44,235, 81,209,115,121, 65,120,150,152,144,240, - 78, 5, 42,204,124, 66, 48, 37,255,247, 34, 74,233,244,183,240,169, 96,205, 57, 44, 8,176,138, 4, 6,240, 12,243,153, 20, 88, -169, 23,132, 53,249, 21,151,175,236,165, 13,215, 72,117, 66, 81,143, 16,216, 80,138, 76, 74,112, 71,222,132, 70,253, 67, 47,135, - 62, 82,169,180,167,181,181,181,101,106,106,234, 57, 0, 59, 0, 12,116,112,112,104,147,149,149,149, 99, 50,153, 14, 82, 74,247, - 85,134,187,117,125, 50, 85, 46,147,126,172, 51,154, 22, 94,188, 77,127,109,219,144, 56,112, 2, 22, 40,101,146, 86,122, 3,183, -232,194, 29,186,161,130,105, 37,121,143, 66,193,171,163,226,235,137,237, 49,179,220, 1,224,128,157,157,191,194,201,250,140, 84, -206, 62,203, 72,204, 25,212, 55, 41,233,101,223,215, 40,247,127, 35,156,156,156,134, 50, 12,243, 29,165, 20, 60,207,207, 76, 77, - 77,221,248,134,234,213, 76, 0,182,249,155, 25,148,210,239, 94,147, 47, 26,128,119,254,230, 11, 74,169,143,216,180, 87,250, 94, -174,222,191,127,255,232,118,237,218, 97,233,210,165, 88,189,122,245,243,228,228,228, 5, 0, 54, 81, 74, 13,127, 55,207,219,136, - 55, 38,180,106, 19,210,109,104,231,166,107,199,245,239, 70, 38, 12,157,165, 41,231, 97,254,165, 75,151, 46,131, 55,109,218, 36, -141,140,140, 84,249,250,250,130, 97,152, 66, 33, 84,244,125, 89,165, 74, 21,161,188,107,179, 44,187,188,119,239,222,195,246,236, -217,163,190,121,243,166,186, 86,173, 90,133,124,130, 32,160,248,251,215,215,215,183, 76, 62, 27, 27,155, 27, 44,203,122,150, 36, -210, 74,251,205,243,124, 76,106,106,106, 35, 51, 42, 99,103, 0,211,204,184,165, 11, 40,165, 39,202, 58, 64,202,178, 30,113,113, -113,206, 21, 45, 43, 47, 47, 47, 99, 5, 30, 30, 23, 66, 48, 69, 16, 40, 3, 0, 12, 67,166, 42,149,202, 53, 58,157,238, 69,193, -255,249,101,150, 88,145, 52,120,120,120,188, 79, 41, 29, 5,128, 18, 66,214,197,198,198,238,173,200,249,214,214,214, 55,228,114, -185,167, 68, 34, 33, 37,149, 75,241,109,158,231,169,209,104,140, 73, 75, 75,171,176,192, 62, 7,144, 46, 64,107,142,101, 39, 56, - 56, 58,182,186,121,242,164, 69, 80, 80, 16,195,178,236,116, 0,107, 94,231,185, 49, 92, 35,213,121, 19,250,105, 77,138,238, 10, -159,175,252,245,209, 95, 69,170,164,250, 35,134,107,100,247,223, 45,182, 8, 33, 67,134, 12, 25, 50, 97,225,194,133,142,114,185, -156,217,181,107,151,255,196,137, 19,251, 44, 93,186,212,177,127,255,254, 86, 6,131, 65,152, 58,117,106, 32, 33,196,153, 82,186, -170, 34,220,205,235,147,102, 1,190,110,115,198, 13,122, 23,147,231,239, 24,215,178, 14, 73, 81, 89,200, 86,191,223,170,186,109, -237,170,118,248,122,237,165,207, 1,108,168, 64, 90,137, 68, 34,121,199,221,221,221, 79,167,211,113,249,157, 55, 90,228,157,144, -119,127, 13, 6, 67, 90, 90,218,238,215,189, 55,147,149,202,166, 77,109, 45, 79,205,253, 96,136, 42, 43, 61,205,101,121,200,161, -187,123,224, 92,183, 47,240,252,109,106, 16, 24,134,249, 46, 54, 54,214,141, 82, 10, 55, 55,183,239, 0,108,124, 67,212,182, 5, -239, 97, 66,136,237, 27,224,243, 46,194,231,253, 6,234,190, 82,194, 48, 99,229, 82,105, 39,158,231,235,228,215,161,123, 6,147, -233, 20, 39, 8, 43, 41,165,186,183, 88, 7, 76, 25, 61,122,116,199, 25, 51,102,248, 78,153, 50, 5, 83,166, 76,169,178,126,253, -250,181,223,127,255,253, 84, 66, 72, 93, 74,105,206,223,204,243,159,183, 96,253, 37, 66, 43,144,144, 70,237,235,213,216, 59,126, -232, 0, 8,123,150, 17, 12,157, 85,166,200,122,167, 81,163,143, 55,109,218, 4, 0, 24,212,179, 39, 58, 53,105, 2, 43, 75, 11, -200,229,121,201, 33,148, 64, 38,149,161,215,196, 47,204,201,220,162, 62,125,250,124,184,103,207, 30, 75, 0, 88,189,122, 53,250, -244,233, 3,123,123,123,168,213,106,200,100, 50, 72,165,210, 87,190,205, 16,110,158,177,177,177,206, 74,165,178, 80,248, 9,130, -240,202,167,200, 56, 53, 56,142,131,159,159,159,185,183,107, 90,102,102,102,235,220,220,220, 50,199,116,171, 86,173, 10, 0, 39, -204, 33,252,238,219,111, 32,112,185,144, 72, 0,142, 3,244, 70, 6, 66, 9,125,123,119,119,119,140, 29, 59, 22,175,179,144,120, -112,112,119, 66, 8,217,227,238,238,190, 55, 41, 41,201,151, 16,140,168,164,165,235,211, 71,143, 30, 89, 2,128,191,191,255, 88, - 0, 21, 18, 90, 18,137,196,243,238,221,187,206, 10,133,162, 84,203,101, 17, 17, 12,163,209,136, 6, 13, 26,112, 21,185,134, 11, -224,157,198, 48, 35,234, 55,108, 56,114,110,175, 94,202,107,215,174, 41, 25,134, 1,199,113, 88,188,120, 49, 71, 41,181, 13, 4, -172, 35,128,172, 50,234,231, 12, 0, 67,243,173,180, 27, 40,165,139, 95,249,159,162,158,214,164,232,254, 36,167, 87,147,166, 85, -166, 34, 34,252, 94,147,106,150, 7, 96, 37,209, 71, 1,248, 91,133,150,181,181,117,207,165, 75,151, 58,109,216,176, 33,235,225, -195,135,198, 53,107,214, 56,141, 26, 53,202,202,104, 52, 98,244,232,209,201, 1, 1, 1,178,165, 75,151, 58,237,219,183,239, 93, - 0, 21, 18, 90, 18,130,111, 6,246,236, 4,157,137,129,201,196, 57,185, 57, 89,109, 25, 63,164,173,148, 82, 3, 54, 31,188, 9, - 19, 39,252, 90, 65, 75,214, 59,125,251,246,173,182,125,251,118,201,131, 7, 15, 36, 53,107,214,132, 32, 8,224,121, 30, 38,147, - 9, 0, 32, 8, 2,106,212,168,241,218,247,229, 99,192,223,209,197,254,212, 59,221,186,170,220,148, 10,216,167, 39, 99,184, 76, - 98,181, 81,173,223, 10,160,249,219,212, 88, 80, 74, 33,145, 72,240,242,229, 75, 56, 59, 59,171,236,237,237,227, 1,124,149,150, -150,182,238, 45,110, 32,155,200, 37,146,189,155,127, 93,238,218,180,121,115,214,197,205, 25,145,143, 94, 64, 66,248, 14,119,175, -223,108,251,241,152, 73,227, 9, 33,239, 83, 74,175,189,109,121,119,107,241,105,111,183,150,159,173, 38, 84,192,215, 43, 14,101, -207, 95,180, 76, 61,122,196, 16,118,226,196,137,240,242,242,242,237,221,187,247, 34, 0, 99,202,229,105,246,105,111,215,230,227, - 86,131, 82,204,253,249, 80,246,247,139,150,169,199, 84,130,231, 63,254,236,172,251,203,132, 86, 32, 33,213,106,123, 57,159,156, - 63,101,140,148, 30,251,141,209,164, 38,161, 52, 41,227,236,236,188,182,107,215,174,131, 54,110,252, 95, 39,233,157,160, 32,244, -126,183, 37,156, 29,108,160,182,144,231, 53, 71, 2,193,157,135,207,204, 18, 4, 94, 94, 94,163,247,238,221,107, 89, 84, 76,200, -100,178,194, 79, 81,145, 85,240, 41,110,249, 40, 9, 74,165, 18,167, 79,159,134, 68, 34, 1,203,178,144, 72, 36,133,159,162,219, - 44,203,194,197,165, 66,174, 75, 11,108,108,108,234,102,103,103, 91,103,100,100,192,219,219, 59, 11,192,221, 34,255,215, 77, 78, - 78,182,174, 8,161,192,229, 98,226,240, 90,144, 26,174,192, 32,109, 2,173,164, 5, 46, 93,191,143, 35, 39,206, 33, 54, 46, 1, - 45,155,213,199, 71, 31,244,197,169, 83,167,192,243,124, 69, 43, 79, 34, 33,100, 81,143, 30,221,167, 2,132,116,232,208, 33, 99, -220,184,113,204,131, 7, 15, 62,236,221,187, 87,208,163, 71,143,243,123,194,100, 10, 33,100,121, 5, 44, 91,114, 0, 56,127,254, - 60, 0, 40, 42, 83,247, 20, 10, 5, 46, 95,190,140,130, 97, 98,134, 97,192, 48, 12, 88,150,197,225,199,142,200, 53, 48,208, 36, -134,225,179,238,222,168, 90,181, 42, 24,166,124,151,196,182,128,242, 18,208,155, 72,165, 19,221,220,221,125,219, 84,171,166, 62, -125,250, 52, 11, 0, 62, 62, 62, 52, 62, 62, 62,227,224,193,131,217, 18, 96,181, 15,165,155,202, 18, 89,222,222,222, 45, 24,134, -249,174,224,158, 19, 66, 22,249,250,250,206, 41, 44, 55, 65,192, 7, 29,237,165,227,199, 79,144, 53,109,155,215, 57,105,218, 99, - 59,178,158,204,175, 69,210,102,216,252,221, 47,138,172,172,172,157, 53,106,212, 96, 83, 83, 83, 47, 1,136, 54,153, 76,211,182, -108,217,226, 60,124,248,240,164,173, 91,183, 46, 0,224,190,112,225,194,182,185,185,185,187, 42,194,219,170, 30,233,214,168,126, - 80, 51,111, 47, 47,156,187,116, 13, 50,185,212,118,236,208,238,176,180,148,224,135, 13, 33, 66,116, 76,218,184, 11,119,232,166, - 10,136,172, 38,125,251,246,245,221,190,125,187, 28, 0,238,222,189,139,132,132, 4, 56, 57, 57, 65,165, 82, 65, 42,149,130,101, - 89, 72,165,210, 55, 34,178,108,188, 28,174, 30, 56,112, 80,101,111,111,139, 21, 95,140,199, 71, 73,137,176,181,178,132, 41, 39, -215,247, 45, 19, 28,254,239,191,255,190,146,231,121,228,230,230, 34, 52, 52,212, 70,165, 82,217,120,122,122,206, 5, 96,182,208, - 82,169, 84,137, 58,157,206, 57,255, 61,154,164,213,106, 93, 0,100, 41, 20,138,130,247,116, 78,254,245,204, 26, 78, 44,101,152, -240, 69, 17, 75,214,139,215,200,115,227, 38,141,235,158,222,183,103,155,101,102,118, 2,108,237,146,192, 32, 19,235,214,173,132, - 74,101,141,185,115,103, 72,158,117,120,215,163,115,183,247, 79, 19, 66, 58,188,117, 98,139,146,117, 29,122, 12,178, 87,169,173, -242,219, 18, 19, 54,174, 31, 15,134, 97, 48,103,206, 28,212,174, 93,123, 36, 33,100, 22,165, 52,173,108, 26,172,171,211,186,191, -189, 92,153, 87,196, 2,111,194,154, 29,147,243,120,166,143,194,192, 30, 85, 71,222,217, 74,142,215,174,134,236,188,118, 5, 90, - 41,131, 23,104, 66,147, 10, 56, 66, 66, 66,218, 4, 7, 7,159, 43,109,251, 63,240,252,184, 1, 8, 46, 73,124, 73, 66, 66, 66, -104,112,112, 48, 41,146,185, 87,182,203, 66,125, 66, 28, 93,108,212,167, 87,127, 53,222, 82,114, 37,132,213,190,120,140, 56, 29, - 95,248,228, 20,159,162,169, 86,171, 7,109,220,184,241, 21, 29,230,237,226, 12,153, 76, 10,169,140,192,182, 85,247,188, 39,238, -194, 17, 16, 66, 75,107,248, 95,225,204,205,205,213,221,190,125,219,114,195,134, 13,112,118,118,134,175,175, 47,212,106, 53,148, - 74,229, 43,226,170,168,224, 42, 46,180,138,115, 22,252, 47,145, 72,192, 48, 12, 78,157, 58, 5,142,227,208,183,111,223, 63,137, - 44,137, 68, 82,162,112, 43,109,122, 42,165,244, 4, 33,228, 46,165,180,117,126, 3,124,151, 82,218,166,200,181, 59, 59, 57, 57, - 77, 3,176,192, 92, 78,150,165, 96,117,151, 32,120, 46,131,228,229,120, 24,164,245,112,246,226, 77,108, 92,187, 20, 0,224, 91, -179, 49,250,245,238, 94,104,141, 51,135,179, 40, 60, 60, 60,118, 36, 39,167,116,125,247,221,119,145,158,158,110,250,234,171,175, - 80,183,110, 93,248,251,251,155, 85, 70,165, 9,184,187,119,239,122,105,181, 90,179,134, 29, 75,226, 36,132, 96,203,150, 45,208, -233,254,108,213,183,107,243, 61, 38,247,241,193,176,207, 54, 97,209,195, 93, 88,181,106, 85,153,121, 87, 3,117,117, 54, 53,150, -203, 89,174,238,130, 25,159, 42, 62,250,232, 35,118,216,176, 97,120,241,226, 5,134, 15, 31,174, 59,117,234,148, 33, 33, 62,254, -160, 92, 16, 86, 24, 95, 21,198,165,114, 42, 20,138,205, 39, 78,156,192,174, 93,121,186, 36, 50, 50, 18,126,126,126, 22,175,136, -228,180,221,200,142, 94,129,171,135, 31,160,105,143,237,184,122,248, 3,240, 25, 33,210, 70,126,200,172,200,253,172, 68,239,235, -116, 9,251,118, 1,216, 85,228,254,170,182,110,221,218, 11,192,161,252,255, 0,224,199,138,112,230, 17, 97, 88,255, 62,189, 32, -145, 89,225,193,227, 24,180,121,167, 1, 92,156,157,113,247,126, 20,162, 99,211, 18, 9,193,208, 46, 45, 20, 11,180, 90,195,172, -243,183,233, 47,229,112, 18, 79, 79, 79,255,221,187,119,203,138, 88,160, 11,159,113,150,101, 11,183, 11,132,119,101,234,103,129, -200,178,242,180,188,250,205,202, 22, 22, 87,239,109,133,159, 79, 55,216,117,235,142, 95, 78,158,196,163,240, 8,157, 65,195,181, -255,187,203,232,175,226, 36,132,248,247,233,211,231,210,182,109,219,108, 95,190,124,137,243,231,207,195,215,215, 23, 26,141,166, -220, 14,111,113, 78,157, 78,231, 92,100, 88,175,192,181,225, 59,131,193, 80, 80, 24, 5, 15, 98,169,195,137,197, 56,255, 52, 76, - 88, 25,159,172, 18,222,243,114,165, 76,182,251,192,190, 29,150, 17, 15,206,163,126,189,102,176,180, 9,132,192, 39, 32, 53, 45, - 7,233,143,227,240,237,183,139, 48,247,171,153, 56,180,127,143,101, 64,173,122,123, 9, 33, 53,138, 14, 35,254,215,203, 29,132, -142, 60,125,120,235,106, 66, 5,104, 19, 31, 40,164,185, 79,213,131, 62,120,159, 29, 48, 96, 0, 14, 29, 58,132,240,240,240,213, -165,137,172,162,156,132, 98,100,216,249, 93,171, 65, 41,180, 73, 15, 20, 50,237, 83,245,144, 15,251,177, 31, 13,236,132, 43,191, - 47, 71,167,250, 79,195,220,157,209, 59, 61,127,240, 80,194, 34, 85,161,196, 31,170,107,228, 74, 17,177, 21, 10,128, 20, 17, 88, -161,248,159, 15,230,127, 1,193,249,209,225, 71, 22,183,110, 73, 42, 35,176, 0,192,159, 16, 75,181, 92,118,117,227,220, 79,221, -213, 47,194, 37,250,176,203,136,211, 11,116,205,115, 78,184, 74,136,234, 38,165,218,226,231,104, 52,154,220,168,168, 40,213,208, -222,189,209, 60, 40, 8,110, 14, 14,168,225,233, 9,149, 66, 14,185, 76, 90,228,189, 92, 33, 21, 73, 3, 2, 2,208,163, 71, 15, - 72,165, 82,168,213,106, 88, 90, 90, 66, 46,151,151,104,205, 50,183,151, 75, 41, 5,203,178, 8, 11, 11, 67,116,116, 52,108,109, -109,241,199, 31,127,160,125,251,246,127,178,106, 21, 21,103, 21, 49,209, 23,111,248, 11,132, 24,204, 28, 50, 44, 0,207, 19,228, -208,122, 80, 62, 31, 7, 13,105, 0,189,158,131, 94,175,199, 47, 23,141,184, 22,149, 11,163,209, 0,189, 94, 95,234, 53,203,184, -183,140,187,187,251, 32, 63, 63,191,177, 31,124,240,129, 73, 46,151, 35, 55, 55, 23, 26,141, 6,225,225,225,166,174, 93,187,101, -244,232,209,221, 38, 36, 36,132, 82,138, 69, 21,244,211, 74,245,240,240,240,202, 31,158, 77,173,100, 15,162, 80,196, 20,199,208, - 31, 35, 32, 97,243,202,100,245,234,213,224,121, 30,148,210, 82, 11, 73, 71,200,153,175,190, 95, 98,179,112,217,175,176,177,119, -193,185,115,231,248,227,199,143,103, 19, 32,242, 81,120,248,143,239, 1, 71,119, 3,198,138,164, 47, 61, 61, 93,229,235,235, 11, - 79, 79, 79, 8,130, 0,147,201, 84,104,125, 73, 77, 77,133, 86,171,133,189, 69, 6,170, 59,120,130,203, 14, 69,124,216,215,112, -179,124,128, 77, 39, 12,166,134,254,184,243, 47, 48,133,255, 6,224,183,215, 39,130,135,179,171, 23, 24,106, 66, 92, 82, 42,122, - 5,119, 2, 43,179,196,179,151, 41,168, 23, 88,205,237,195,247, 90,184,177,132,195,148, 5,219,199, 2,248,165, 60,186,156,156, - 28,254,193,131, 7,184,123, 55, 79,239, 90, 91, 91,195,194,194,226,149,103,156, 97,152,215,178,104, 21,136,172,239, 87,183,183, - 96,164,185,200,226, 79, 99,195,150,155,168, 23,208, 29,107,174, 94,215,241,137,105, 29,126,208,233, 34,255,211,195, 70,110,110, -163, 4, 65,152, 75, 41,205,232,211,167,143,203,246,237,219,237, 98, 99, 99,113,243,230, 77,204,153, 51, 39,153,231,121,142, 82, - 74, 40,165, 95,191,129,186, 36, 20, 17, 88,111,210,138, 32, 85, 43,241,153,163, 53,233, 41, 97,172,125,185,172,156,103, 41, 6, -122, 80,195, 9, 63, 83, 74, 77,101,157,203, 48,204, 39,123,118,174,118,119,116, 18,208,214,233, 93,196, 39, 26,241,253, 23, 67, -144,154,154,141, 95,214,207, 7, 32,135,145, 99,209,186,237,251,112,118,246,192,200, 17, 35, 93, 87,175, 93,243, 41,128, 31,222, - 22,131, 86,252, 31, 43,247, 19, 66, 78, 59, 57, 57,133,127, 58,114,164,147,175,239, 96, 40,149, 74,236,216,177, 3,219, 87,172, -224,151, 1,253,214, 18,114,118, 20,165,251,203,228,185,242, 63,158,241,163, 71, 59,213,170, 53, 26, 10,133, 2,191, 31,255, 13, -186,132, 45,217,193,205, 97,212,232, 16, 92,165, 7,181,127,126,152,164, 73,165,120, 12, 0, 82, 37,226,165, 64, 82, 49,186,255, -154,192, 42,148, 81, 5,126, 90, 5,223,175, 29, 25,158, 74,229,247,214, 79, 24,232,227, 2, 61, 49, 92, 60,140, 88,189,192, 47, -124,100,100,111,101,210,201, 17, 37,136,172,252,138, 45,120,123,123,227,221, 70,141,208,187, 85, 43, 72, 36, 18, 40,229, 50, 88, - 41, 85,160,124,158, 37,171, 96,232,176,140, 54, 17, 37, 89,159, 28, 28, 28, 32,147,201, 10, 5,150,185,214,172,210, 56, 5, 65, -128, 68, 34,193,221,187,119,209,178,101, 75,120,121,121, 97,215,174, 93,232,220,185,243,159,134, 18, 43, 42,178, 10,132, 86,209, - 97,188, 34, 78,242,229, 58,193,255, 73, 36, 24, 8, 82, 12,245, 64, 72, 16, 56, 14,224, 41,160,215,233, 64, 41, 64, 41, 96, 50, - 26,160,211,233, 10,175,105,206,144,172,155,155,155,119,213,170, 85,231, 77,157, 58,165, 86,189,122,245,145,156,156, 12, 65, 16, - 96, 97, 97, 1,141, 70, 3,107,107,107, 52,111,222,252,217,188,121,243,226, 41,197,200,138, 58,195,191,129, 23, 44, 0,224,228, -201,147,175, 12, 27, 22,124,114,227, 99, 48,236,243,173,144, 75,242,134,150, 10,124,120,202,122,239,182,107,221, 2,151,110, 69, -114,159, 76, 89,174,151,166,222, 92,224, 42, 8, 27, 99,128,196,215,104, 92,144,146,146,130,196,196, 68,244,236,213, 11,219,183, -109,195,243,231,207, 17, 24, 24,136,118,237,218,193,217,217, 25,207,159, 63,199,181, 11,122,232,211,211,144,102,184, 9,181, 85, - 83, 28, 56, 23,165,159,189,202, 16,245, 79,189, 45, 8, 33, 61, 1, 12,177,182,182,174,170,209,104,226, 57,142,219, 13, 96, 55, -128,126, 18,137,164,159, 90,173,118,203,202,202,122,138,188,217, 68, 7,203, 29, 74, 82, 42, 29, 20, 74,107, 8,156, 30, 18,137, - 4, 94, 94,190,160,188, 1,233, 89, 90, 12, 29,208, 3,183,238,222,199,241,179, 87, 56,147, 73,248,201,156,219,202,178, 44,245, -247,247, 71, 82, 82, 18,164, 82, 41, 84, 42, 21, 44, 45, 45, 49,125,250,116,172, 88,177,162, 80,100, 85, 86,104,125, 12,248, 91, -123, 91, 94,249,110,101,158,200, 74,136,139, 71, 98,140, 20, 78, 14, 46,248,105,197,178,220,244,231, 9, 77,127, 5,254,211, 34, - 11, 0, 4, 65,248, 58, 54, 54,214, 89, 34,145,184,114, 28,135,151, 47, 95,226,198,141, 27, 24, 55,110, 92, 98,106,106,106, 91, - 74,105,165,242,168, 84, 42,147, 10, 44, 89, 74,165, 50, 9, 40,117, 56, 49,163,136, 37, 43,163, 12,202, 18,135, 9, 9, 33,213, -124, 61,173, 78,173, 95, 58,209,187,113,211,230,140, 90, 98,157,158,243, 56,161,229,197,243,231,154,143, 91,250,203,167,132,144, - 78,148,210, 39,165,145, 42,164,210,174,205, 90,180,144,128, 38, 66, 34,111,137, 69, 11, 7, 32, 57, 37, 11,233,105,217,144,201, - 44, 96, 48,177,224, 5,130,230, 45, 91,225,183, 77, 59, 81,123,196,112, 86, 46,149,118,124,155,132, 86, 62,230,255,252,243,207, -222, 1, 1, 1,216,184,113, 35,206,110,222,140,143, 50, 51,113,142, 97, 88,147, 84,234,120,212,100, 90, 7, 96,191,185, 60,181, -107,215,198,175,191,254,138, 45, 91,182,188, 24,212, 62,105,239,196, 65,112, 54, 26,209,229,230, 67,216, 87,233, 1,220,124, 8, -251,134, 1,168,193, 73,240,152, 16,188, 18, 14, 42, 36, 36,164, 77,209,239,255, 18,242,215, 54, 44,113,136, 93, 2,160,109, 72, - 72, 8, 45,250, 93, 30,161,218,217,127,244,150, 1,239,250, 4, 85,247, 38,166, 93,203,241, 50,151, 51,204,122,104,148, 63,202, -161, 19, 35, 40, 93, 86, 70, 15,130,178, 44, 11, 43,149, 10, 78,182,182,121,102,126,134, 1, 4, 64, 48, 1,132,207, 19, 0, 84, - 32,168,200,164,105, 65, 16, 32,151,203, 75,116,124,175,168,111, 86, 81,206,236,236,108, 60,123,246, 12, 35, 71,142,132, 90,173, - 6, 0, 36, 36, 36,192,199,199, 7, 18,137, 4,177,177,177,248,253,247,223, 81,181,106, 85, 40, 20, 10, 82,193, 66, 41,104,248, -235, 18, 66,206, 1,168, 27, 31, 31,111,237,230,230,134, 10, 91,180, 4, 10,141,158,192, 96,224,241,232,209, 35,196,197,197,225, -217,211,199,104,156,155, 5, 10, 22,148,210, 10, 89,180, 60, 61, 61,131,252,252,252,214, 44, 88,176, 64,230,233,233, 9, 74, 41, -236,236,108,161,209,104,144,146,146,138,192,192, 64,120,121,121, 97,209,162, 69, 0,176,253,239, 22, 89,197,234, 84,161,208, 42, - 42,184, 62,127,207, 27,105,105,150, 96,217,255,205, 62, 45,199, 71, 75, 6, 0,109, 59,245,145,156, 58,126,212,130, 3,230, 37, -176,236, 60, 73,249,229,104,226, 5, 65, 93,218,255, 47, 95,190,132, 84, 42,197,158,221,187,145,150,152,136,122,245,234,161, 73, -147, 38,120,252,248, 49,110,221,186, 5, 7, 7, 7, 56,121,190,131,115, 79,141,136,136,211,194,198,198, 6, 81, 49,204, 63, 22, - 50,128, 16, 50,162, 67,135, 14,115,126,252,241, 71,103, 87, 87, 87,105,114,114,114,192,202,149, 43,235,173, 92,185,114,252,167, -159,126,234,242,233,167,159,218, 57, 57, 57, 73, 18, 18, 18,252,191,248,226,139,134,132,144,170,148,210, 37,101,113, 90, 88, 88, -217,179, 50, 11, 16, 34,129,173,141, 29, 36,114, 11, 8,156, 4,188, 0, 88,219, 56,225,210,173, 61,248,227, 94,246,168,164, 84, -236, 54,227,185,161, 14, 14, 14, 96, 24, 6, 14, 14, 14,127,178, 84,143, 27, 55, 14,235,215,175, 47, 28, 70,172,172,200,250,126, -101,123, 75,146, 47,178, 18, 94, 74, 64,244, 85,113,120,255,229,140,244,231, 9, 45,223, 6,145, 85,240,142,163,148,226,233,211, -167,208,104, 52,184,112,225, 2,190,254,250,235,228,226, 34,203,197,197,101,132,181,181,245, 87, 57, 57, 57,139,226,227,227,151, -151,199,155, 47,162, 94,237, 12,150, 48,156,104,110,136,135,146,134, 9, 9, 33, 82, 47, 55,229,137, 91, 23,182,250,216,208, 59, - 4,209, 35,129, 71, 89,225, 86, 87,157, 91,119,107, 28,204, 52, 88,245, 77,149, 38,163,166,159, 32,132, 4,148,102,217, 18,120, -190,129,133,165, 21,128, 36,220,188, 17, 90, 40,178, 82,211, 50,161, 55,178,208, 27, 8,116, 70, 6,239,118,232,130, 21,107,182, - 32, 54, 41, 13, 5, 51, 18,223, 22, 16, 66,236,131,130,130, 70,247,235,215, 15,243,230,205,195,233, 31,127, 52,140, 33, 36, 75, - 2,208, 16,158,135, 64, 41, 97,204,112, 98, 47,206,243,195, 15, 63,236, 7, 48,112,193, 56,188,147,158,131,161,238, 61,168,125, -149, 30,121,199,246,157, 74, 1,192, 62,249,244,171, 77,102,112,112, 48, 41, 24, 89,171,232, 8,219,191, 29,146,224,224,224,115, - 33, 33, 33, 40,250, 93,214, 9,214,174, 53,187, 77,255,114,220,194,198,157, 91,145,248, 73, 29,145,150,165,227,102, 68, 24,229, - 49,218,178, 69, 86, 81,124,185,114, 37,110, 69,230, 61,199,158,206,206,152,242,225,135,160, 28,240, 71,120, 4,118,158, 62,141, - 1, 29, 58,192, 34,127,198,159,185,214,167,146,172, 88, 69,173, 89, 21,181, 58,101,100,100, 96,247,238,221,104,210,164, 9,212, -106, 53, 36, 18, 9,234,214,173,139,251,247,239,163, 90,181,106, 32,132,224,192,129, 3,232,221,187, 55,158, 60,121,130,119,222, -121,199,178, 50, 66, 43, 34, 34,194,154, 82,218,186,192,250, 81, 89,232,245,122, 60,120,240, 0, 61,122,244,128,157,157, 29, 60, - 60,182,227,244,137,173, 80, 7,125, 4, 66, 80, 33,161,197,243,252,199,193,193,193, 50, 66, 8,180, 90, 13,148, 74, 21, 44, 44, - 44, 97,101,101, 13,127,255, 0,196,197,197,161,115,231,206,134,168,168,168, 85,241,241,241,187, 42,154,214,192,192, 64,139,204, -204,204,143,170, 84,169, 34,207,239,237, 6, 86,175, 94,125,114, 84, 84, 84,118, 69,173, 90, 5, 2,139, 16, 2,150,101, 11,133, -150,132, 97,224,230,234, 92,184,157,239,159, 70,202,224,202,138, 77,213, 43, 0,192,219,219, 27, 43,214, 30, 98,130,131,131, 49, -126,252,120,152, 76, 38,172, 90,149, 55,201,238,131, 15, 62,128,209,104,196,222,189,121,147, 36, 37, 18, 73,153,102,147, 27, 55, -110,224,230,205,155, 48,153, 76,200,204,204,196,177, 99,199,112,238,252,121,236, 56,112, 6,207,159, 62, 70,221, 0, 31, 12, 31, -254, 49,164, 82, 41, 54,109,218,132,150, 45, 91,254,163, 47, 4,169, 84, 58,104,253,250,245,110, 27, 55,110,204, 56,112,224, 64, -110,179,102,205, 20,203,150, 45,115, 94,177, 98,133,147,193, 96,192,132, 9, 19,146,174, 92,185,162,239,213,171,151,197,186,117, -235,220,170, 87,175,222, 17,192,146, 18,238,167, 5,128, 1, 0, 6,183,109, 98, 35,201,200,214, 66,224, 12,120,250,252, 25, 50, -115, 12, 16,120, 35, 94,196,196, 33, 71,199, 35, 53, 45, 27,117, 27,116,250, 57, 52, 52,116, 38, 33,100, 6,165,244, 72,121,233, - 12, 15, 15,199,149, 43, 87,240,252,249,115, 60,125,250,244,149,255, 70,140, 24,129, 45, 91,182, 84,216,162, 85,178,200, 98, 65, -244,213,112,228,192,213,140,164,199,241,111,141,200,202,127, 7,205,117,115,115,155,235,230,230,166, 60,121,242,164, 77,149, 42, - 85,192,113,156,161,184, 37,171,109,219,182,179,214,175, 95,239, 86,173, 90,181,113, 0,150,255, 27,210,206, 48, 24,177,104,245, -104, 71, 43,249,139, 56, 60, 90,146, 31, 75,144, 5, 52, 89, 64,232, 54, 72, 90,204,126, 54,174,215, 84,187,105, 27,231,141, 64, - 25, 51,100,163,158,188,196,234,213, 43, 48,113,194, 80,252,246,203, 34, 8,130, 4,122, 19, 11,111,223,102,208, 27, 5, 16, 70, -130,122, 13, 26,225,108,232, 5, 72, 25, 96,247,198,213,111,149, 41,139, 82,154, 70, 8, 89,117,224,192,129,207,198,143, 31, 15, - 65, 16,228, 95,173, 94,173, 77, 78, 78,158,143, 10,196,191, 42,129,167,247,234,213,171, 35,167,173, 72,222, 63,113, 16,216,231, -135, 73,218,205,135,176,239, 59,149, 98,207, 66,130,134, 1, 72, 83,151,220,196,159, 47,246,253,118, 8,173, 2, 37, 89,244,187, - 36, 52,244,175,246,141,141,189,221,199, 77,234,250, 59, 78, 25, 63, 70,242, 36, 65,135,189, 85, 62,204,249,125,243, 79, 22, 9, -156,226,231,199, 84,187,172, 34, 23,222,249,251,239,133,191, 23,111,223, 94,226,127,241,125,251,154,221, 51, 43,205,138, 85, 81, - 75, 22, 0,168,213,106,219,142, 29, 59,162,125,251,246,120,255,253,247, 11,125,178,234,215,175,143, 29, 59,118,160, 79,159, 62, -184,125,251, 54,220,220,220, 80,179,102, 77,212,172, 89, 19, 71,143, 30,173,104, 5, 7,207,243, 8, 10, 10, 42,152,117, 88, 55, - 38, 38,198,186,178, 5,169,215,235,145,154,154, 10,123,123,123,200,229,114, 52,109,218, 4,159,125,222, 20,142,110,191, 34,168, - 86, 0,114,115,115, 11,167,191,155,209,216, 6,213,168, 81, 3,201,201,201, 72, 78, 78,134,147,147, 19,220,221,221,225,234,234, -138, 37, 75,150,208,229,203,151, 31, 55, 26,141,171,146,147,147, 43,108,201,114,115,115,107,101,111,111, 63, 75,171,213,202,139, -244,112,229, 78, 78, 78, 7,221,221,221,231,199,197,197, 85,100,141, 77, 24,141, 70, 16, 66, 16,242,212, 29,185, 6,130,172,152, -155, 24,255,158,207, 43,194, 75, 42,149,154,227,208,155, 59,112,224, 64,103, 47, 47, 79,188,140, 10,199,158, 61, 20, 63,254,248, - 99,193,172, 72, 68,230,119, 12, 10,182,219,181,107, 7, 95, 95, 95, 84, 36, 72,166, 32, 8,184,123,247, 46,182, 31, 60, 7, 55, -159, 90,120,241,232, 1,110, 29, 61,140, 42, 78,246,168,221,160, 17, 76, 38,211,107,133,222,120, 19, 48,153, 76, 27,252,252,252, -168,193, 96, 56, 7, 96,197,189,123,247,134,198,199,199, 79, 56,116,232,144,123,191,126,253,226, 14, 31, 62,188, 12,192,198,123, -247,238,141,254,246,219,111,219,115, 28, 87,226,108, 65,150,101,127,251,226,139, 47,218,246,235,215,143,200, 24,147,225,228,137, - 77, 18,142, 51,145, 47,103,108,224, 67, 47,158, 99, 56,206, 68,222, 31,248,133,112,244,247,123,204,168,207, 23,243,245,155, 5, - 35, 44, 44,204,181,123,247,238,223, 2, 40, 83,104, 21, 88,170, 74,179, 80,178, 44,139,161, 67,135, 98,199,142, 29,102,231,123, - 56, 80,205,218,199,242,202,247, 43, 59, 88, 18, 73, 78, 17,145, 85, 29, 71, 14, 92,205, 72,124, 20,247, 86,137, 44, 0, 72, 73, - 73, 89, 11, 96,173,189,189,125,162,133,133, 5,178,179,179,255, 84,255, 8, 33,202,128,128, 0,165, 92, 46, 71,167, 78,157,236, -221,220,220, 34, 25,134, 89, 30, 27, 27, 91,170,226, 40,105,152,176,164,225,196,215,153,117,104,231,132,238, 77, 91, 53,176,122, -104, 51,207, 74, 41,209,221,174, 18,169,180, 38, 0, 50,245, 46, 79, 47, 69, 15,200, 34, 73,138,250,141,218, 53,132,181,196,162, -123,105, 66,139, 97,217, 91,153,233, 25, 93,179,178, 13,184,248, 71, 24, 6, 14,168, 1,189,145, 64, 16, 24,228,228,234, 1, 86, - 10, 6,192, 7, 31, 14, 1, 37, 18,164, 37,198,129,101,217,123,120,251, 48,125,244,232,209, 93,103,204,152, 81, 53, 63,254,149, - 79,126,252,171, 41,132,144, 58,180,156,224,227,101,240, 84, 57,188, 99,246,164,131, 23,214,100, 6, 55,215, 62,106, 24, 0, 0, -176,111, 24,128, 52,169, 20,143, 37, 44, 82, 41,133,182,152, 85,171, 77,209,239,255,152,117,240, 21, 39,248,162,219,102,249,104, -249, 85,243,236,210,166,113,163,207,103,206,152,105,117,255, 82, 40,166,125,179,130,250, 53,234,152,189,246,194, 45, 67,142,133, -111,215,236,228, 71,127,152,171, 47, 0,160,203,187,125, 80, 55,176,201,159,254,108,217, 46, 47,150,228,197,179, 55,144,152, 28, -107,118, 99,155, 47, 14, 74,244,201, 50,103, 74,127, 9,166,239,140,176,176, 48,231,152,152,152, 87, 28,223,125,125,125, 65, 8, -193,213,171, 87,113,229,202, 21, 12, 28, 56, 16, 18,137, 4, 82,169, 20,231,206,157,171,144, 53,166,136,117,233, 46,165,180, 13, - 33,164,179,167,167,103,137,179, 13,205,225,210,106,181,200,204,204,196,137, 19, 39, 80,163, 70, 13,124,255,253,247,112,119,115, -193,204,153,147, 32, 8, 2,178,178,178,192,243,188,185, 22, 45,161,192, 90, 36, 8, 2,146,147,147, 81,181,106, 85,172, 92,185, - 18,203,150, 45,251, 54, 46, 46,238, 80, 69,211,232,237,237,109,203,243,252,151, 61,122,244,232,216,171, 87, 47,116,238,220,249, -149,255,183,109,219,102,181,119,239,222,249, 94, 94, 94, 93,140, 70,227,130,196,196,196,100,115,120,127,253, 53, 47,252,146,186, -217, 92, 76,235, 87, 5,131,199,110,194,146, 37,251,160, 80, 40, 94,105,120,231,205,155, 87,166,136, 17, 40,245,147,165, 92,138, -155, 52,245, 7,231,249,243, 79,227,244,233, 36, 48, 12, 3, 55, 55, 55, 48, 12,131,103,207,158,129, 97, 24,248,248,248,128, 97, - 24,196,198,198, 22,248, 4,166, 67,103, 94, 44, 67,134, 97,160,211,233,240,242,197,115,196, 68, 69,194, 50, 43, 1, 78,214,106, -164,135,223, 69,221,225, 35, 10,227, 63,253,195, 61,220, 45, 0,182, 20,217,245, 3, 33,196, 64, 8,121, 31,192,126, 74,105,129, - 69,227,219,252, 79,137,104,214,172, 89,253, 25, 51,102, 72, 11,194,109,184,123,127,199, 25,141, 70, 1, 0, 2,234,182,126, 69, -237, 63,126,252, 24, 75,150, 44, 65,110,110, 46,100,230, 4,186,203, 23,173, 5, 51, 12, 75, 18, 97, 21, 17, 89, 0,224,224,227, -249,243,213,155,231,248, 59, 81,107,180,247, 30, 30, 83,197,191, 96,192, 24,222, 94,145, 85,220,178,229,233,233, 57, 87, 16, 4, - 74, 41,157, 93,228,221,170,240,246,246,190,112,242,228, 73, 7,142,227,240,211, 79, 63,217, 38, 36, 36,216,182,110,221,122, 26, -128, 82,133, 86, 73,195,132, 37, 13, 39,162,200,172, 67,133, 66, 97, 95,214,235,163,248,172, 67,158,135,191,181,149, 45,210, 17, - 3,189,163,169,126,134, 3,151,118, 42,126,196,109,247,232, 6,129, 22,188,169, 42,147,101,128,135,218, 22, 2,165,254,165,118, - 78, 77,166, 99,183,111,222,234,228,237, 85,131, 61,116,228, 60,122,246,238, 7,189,158,129,206, 68, 64, 88, 41, 8, 43, 67,157, -186, 13, 80,179,118, 93, 80, 0, 55,174, 93,226, 12, 38,211,169,183,169,236,221, 91,126, 62,208,189,229,103,203, 65, 5, 90, 66, - 28,173,170,189,123,247,158, 15,224,243,242,120, 92,222,249,124,160,107,243, 60,158,162,113,180,190,248,108, 52,194,175, 73,109, -206,223, 92, 40,235,220, 12, 33,201,167, 9,212,202,255,205, 58,148, 50,149, 15,205,241, 95, 17, 92,102, 9, 45,111,111,111, 91, -103, 75,245,175,159, 14,255,216, 42,250,206,101, 36, 68, 92,197, 31,231, 35,211,119,238,221,151,150,155,154, 52,188, 2, 34,171, -112,152,207,193,181, 10,124,107,253, 89,104, 41, 45,157, 0, 0,190,181,154,128,181,176,169,232,144,199,159,172, 89,149, 17, 89, - 69, 95,216, 37,197,208, 26, 53,106, 20,214,175, 95,143, 22, 45, 90,192,207,207,175,240,101, 95, 81,171, 89,113,235, 82,101,102, - 27, 22, 69,118,118, 54,124,124,124,176,110,221, 58,220,187,119, 15, 86, 86, 86, 24, 56,112, 32,178,179,179, 11, 5,150,185,206, -240,148,210,199, 39, 79,158,108,220,191,127,127, 42,149, 74, 73, 70, 70, 6,108,109,109,177,114,229,202,220,248,248,248,144, 74, -136,172,126, 50,153,108,210,128, 1, 3,216,128,128, 0, 36, 38, 38,194,218,218,218, 68, 8,145, 2,128,173,173,173, 73,165, 82, - 97,244,232,209,168, 87,175, 94,171, 41, 83,166,180,240,240,240, 88, 25, 27, 27,187,169,172,186, 68, 8, 41,108, 80,135, 47,127, - 0,131, 33, 79,168,172, 90,181, 10,249,190,110,255, 27, 34,136,138, 2,204,152,201, 98,105,105, 9, 63, 63,191, 18,203,190, 85, -171, 86,184,113,227, 70,222,208,164, 68, 2,103,103,103,252,241,199, 31,102,205,164, 42, 8, 4, 25, 22, 22,134, 90,190,142,184, -119,250, 36, 28,213, 82,212,115,119,133,103,171, 54,136,140,140,252,199,172, 89,249,177,169,198, 0,232,144, 95, 7, 55, 0, 24, - 85,100,123, 37,165,244,231,138,112,114, 28, 71, 25,134, 33, 47, 95,190, 52,170,213,106, 98,111,111, 47, 81, 40, 20,208,235,245, -133,130,235,241,227,199, 56,114,228, 8, 98, 98, 98, 96,111,111,207,216,216,216,192,104, 52,166,155,195,239,239,239, 15, 87, 87, -215, 87, 28,223,135, 15, 31, 94, 41,145, 53, 20, 8, 90,255,221,130, 42, 10,134,181,169,229,216, 5, 79, 31, 60,211, 49, 6, 40, -255, 63,136, 44, 0, 72, 79, 79, 95, 11, 96,109,193,182,147,147,211, 48,150,101,103,218,216,216,216,156, 59,119,206,214,201,201, -137,108,218,180,201, 52,123,246,236, 12,150,101,211, 9, 33, 75,255,121,113,136,136,148,204, 40, 31,169,157,187,112, 71, 71, 47, - 77,120, 57,173,102,186,180,134, 19,169, 29,132,222, 73,247, 47, 14,227,162,154, 39,198, 39, 48, 20, 66, 68, 25,239,224, 13,211, -102,204,251, 50,242,193, 45,111,165,181, 18,163, 70,207, 64,200,241,179, 32,140, 20, 23, 46, 93,133,193,200, 35, 37, 45, 19, 3, - 62, 24, 4, 79, 55, 71, 68, 92, 57,145,204, 9,194,202,183, 75,100, 11, 43, 58,245, 28,102,167, 80,169,243,239, 9,143, 45,191, - 76, 2,195, 44,199,156, 57,115, 16, 20, 20, 52,150, 16,242,117,121,113,180, 8, 17, 86,212,105,243,129,157, 76,145,199, 67, 5, - 30,235,118, 79,203,143,163, 53, 17, 43,215,238,173, 83,219,247,233, 87,101,197,209,122, 91, 68, 86,209,239,114,133, 86,149, 42, - 85, 20, 22, 82,140,180, 87,201,166,124,250, 97, 47,167,164,168,112,196,220,191,149, 55,188, 96,212, 26,227, 35, 35,252,204,184, -104,135, 98,241, 59,104, 89, 67, 87, 58,157, 9, 21,229, 44,104,112,139, 91,179, 42, 34,178, 74,226, 44, 42,182,138,198,205,242, -242,242,194,252,249,243,203,141,163, 85, 66,222, 11,246,119, 6, 80,183, 64,108, 33,207, 25,190,179, 57, 51, 13, 75,227,116,114, -114, 66,106,106, 94,132,132,182,109,219,162,109,219,255,205,103, 48, 26,141,133, 86, 44, 43, 43,171, 63, 89,180, 74,226, 84,169, - 84,211,246,237,219,247,241,165, 75,151,250, 79,158, 60, 89,218,190,125,251, 2, 49,167,161,102,172,237, 86,156,147,231,249,209, - 39, 78,156, 96, 5, 65,192,186,117,235,112,227,198, 13,170, 86,171,103,169,213,234, 21, 42,149,138,215,106,181,163, 70,140, 24, - 49,232,171,175,190, 98, 90,181,106,133,203,151, 47, 51, 85,171, 86, 29, 2, 96, 83,121,121,191,122,245, 42, 24,134, 1,151,246, - 2, 99,167,237,132,133, 74,130, 7, 15, 30, 32, 45, 45,237, 79, 65, 76,205,185,159, 69, 45, 37, 5,159, 86,173, 90, 21, 14, 67, - 54,109,218, 20, 44,203,226,246,237,219, 37, 14,195, 22,227,164, 14, 14, 14,133,245, 67, 38,147,225,236,217,179,248,230,155,111, -224,109,111,139,244,251,247,224,218,246, 93,116,252,120, 4, 6, 14, 28, 8,150,101, 97,111,111, 95,104,249, 45, 47,239,175,249, - 66, 40,202,249,113,173, 90,181,134, 68, 68, 68,120,214,169, 83,199, 45, 44, 44,172, 93, 80, 80,144,207,189,123,247, 10,182, 21, - 48,195, 55,167, 40,231,245,235,215,247,172, 88,177, 98,244,208,161, 67,101,130, 32,240,209,209,209, 38, 0,196,213,213,149,189, -126,253,186,112,232,208, 33,104,181, 90,120,122,122, 50, 30, 30, 30,228,212,169, 83,194,253,251,247,175, 82, 74,103,152,147,119, -158,231, 95, 9,227, 80,240,123,219,182,109, 21,126,222,171,212,244,255,190,125,235, 0,175,148,184,219,136,143,141, 2,159,233, -100, 60,114,224,176,190, 34, 34,235,111, 40,163,191,147,115,222,163, 71,143, 60,244,122, 61,228,114, 57, 86,173, 90,101,156, 63, -127,126, 68, 74, 74, 74, 75, 90,194,140,242,226,156,149,156,117,152, 86, 6,231,159,102, 29,102,166, 34,228,192,193,235,141, 45, -123,111,192,216,184,228, 66,199, 70, 74,136,253, 62,151,192,150,234, 38,117, 98,153,163,115,153,108, 94, 19, 82, 90, 58, 41,165, - 6, 66, 72,191,222,125, 62, 56,179, 99,199,118,203,217,115,231,226,143,171,247,144,154,145, 3,129,178, 16, 8,193,204,153,179, -225,234,104,143,172,184, 71, 26,189,209,216,187,248, 82, 60,255,245,114, 39,132, 25,119,234,208,166,229, 12,129,144,155,248, 80, -193,102, 71,169, 7, 15,236, 45,233,215,175, 31,246,237,219,135,176,176,176, 53,165,137,172,162,156,148, 50,227,238,157,219,185, -156, 0,130, 54,249,161, 66,146,243, 84, 61,228,195,222,146,129, 3, 7, 98,255,145, 75,216,113,248,233,234,237,135,232,225,183, -185,195, 82,169,200,240, 86, 18,132,181, 12,172,230,209,170, 65,109,165,132,215, 34,230,126, 20,210,114,117, 56, 21, 30,157,193, - 80,166,210,177,117,242, 94,144, 50,188,120,241,232, 79,255,101,100, 40,243, 27,244,138, 45, 43,197, 48,204, 43,214,172,215,177, -100, 21, 77,167,139,139,203, 43,203,185, 20,109,184, 11,124,128, 42, 17,218, 97,218,139, 23, 47,172, 95,188,120, 1, 74, 41,174, - 94,189,106,221,180,105,211,105,175, 99,205,154, 52,105, 82,161,213,170,248,119, 73,251,202, 67,190, 83,250, 50, 71, 71,199,221, - 83,166, 76, 25,219,180,105,211, 78,115,231,206, 37, 0,216, 74, 86, 64, 78, 16, 4,132,134,134, 98,223,190,125,188,209,104, 28, - 25, 23, 23, 87,212,215,225, 39,119,119,247, 83,125,250,244,217,244,240,225, 67, 54, 34, 34, 2,230, 8, 58,173, 86, 11, 63, 63, - 63,112, 28,135,133, 99,189,144,157, 93, 7, 28,199,129,231,121, 88, 88, 88,188,178,206,165, 57,229,196, 48, 12,120,158,255,147, -208,186,122,245, 42, 88,150, 69,203,150, 45,113,235,214,173, 66,139, 86,121, 22, 40,163,209,248,194,197,197,197,101,222,188,121, -133,233, 74, 78, 78,198,201,147, 39,209,236,157,230, 8, 28, 57, 10,113,113,113, 88,186,116, 41,220,221,221,241,253,247,223, 35, - 45, 45, 13, 28,199,253,221,230,244,174, 17, 17, 17,158, 31,126,248, 97,210,189,123,247, 60,143, 28, 57, 98,219,189,123,119,139, - 15, 62,248, 32,233,222,189,123,158,132,144,230,168,160, 19, 52,207,243,211, 9, 33,199,191,255,254,251,105,159,127,254,121,211, -161, 67,135, 74,165, 82,169, 16, 27, 27,203,109,223,190,157,248,249,249, 49, 50,153,140,156, 56,113, 66,184,118,237,218, 21,142, -227, 22, 82, 74, 47, 84,196,226, 92, 84,100,177, 44,107,150,200, 42,142, 9,206,138, 33, 86, 76,114,203, 21,171,230, 51, 1,190, -158,198,205,219, 79,190,188,112,249,209, 19, 86,207, 77,248, 21,120,130,255,135, 96, 89,118, 87,173, 90,181,134,141, 27, 55, 78, -213,185,115,103,197, 87, 95,125,149,153,157,157, 93,162,200, 42,229,185,252,203,103, 29, 2,248,101,250,228, 35, 19,190,168, 51, -172,218, 39,174, 85,112, 58, 55, 9,233, 18,150,177,182,101,208,192,135, 69,118,202, 99,167,195,103, 54, 62, 67, 57,113,217, 40, -165,215, 9, 33, 29,106,215,169,191,119,225,247, 11,157,103, 77,157, 34,221,123,228, 24, 40,103,196,213,115,231, 96, 41,227,233, -253,155,167, 19,245, 70, 67,175,183,113, 9,158,184,139, 63,237, 32,132, 28,180,183,183,191,243,241,208,161,126,181,106,125, 0, -181, 90,141, 61,123,246, 96,203, 79, 63,241,203,128,254,107, 9,185, 53, 42, 47,166, 94,169, 72,188, 92,200,115,123,196,199, 31, -251, 55,104,240, 9,212,106, 53,118,239,222,141, 77,203,150,153,205,243, 31,183,102, 21, 68,134, 15,201,255, 54, 35,142, 22, 67, -178,175, 60,138,206,185,250, 40, 58, 7, 2,165, 2,165,122,134,193,203, 92,163,241,251,200, 39, 49, 39, 42,153, 16, 8,130,128, -111,191, 27,247, 38, 51, 87, 40,126, 42, 59,165,187,132, 70, 34,166,232, 26,105,229, 45, 40, 13, 0, 38,147, 41,198, 76,250, 5, -222,222,127, 90, 3,117, 65,101,211, 90, 48, 28,104,174,200, 50, 55,142, 22, 0,164,164,164,196, 3,152,229,230,230,182,173, 83, -167, 78, 35, 0,196, 86,178,140,214,181,105,211,102, 36, 0,150, 16,178, 38, 54, 54,246, 79, 14,165,113,113,113,145, 30, 30, 30, -139,125,125,125, 11, 23,154, 46,139, 83, 16,132,167,117,234,212, 49,150, 84, 22,165,109, 11,130, 80,110, 25,101,100,100,160, 73, -147, 38,127, 90,211,146, 82,138,232,232,232, 2,139, 83,225,189, 47, 75,192,229,228,228,140,250,236,179,207,214, 74,165, 82,111, - 0,164, 64,228,242, 60,207,254,252,243,207, 74,158,231, 89, 0,132, 97, 24, 78, 42,149,234,246,237,219,199,113, 28,247, 66,175, -215,143,250,155,223, 17,187, 73,222, 82, 12,185, 17, 17, 17, 1,249,150,172,152,176,176,176,219, 59,118,236,112, 2,176,179,146, -117,243, 2,128, 11,132,144, 86,171, 86,173,154, 62,106,212,168, 38, 3, 7, 14,148,180,109,219, 22, 33, 33, 33,124,104,104,232, - 85,173, 86,187,160, 34, 2, 43,191, 44, 51,189,188,188, 10, 5, 87, 57,207,114,153,142,188, 14, 62,138, 21,131,198,184, 43,215, - 45, 56,153,147, 18,103,184,100,202, 49,204,216, 8,132,225,255, 49, 18, 18, 18, 38, 19, 66,102, 47, 93,186, 52,174, 94,189,122, - 10,153, 76,102, 48, 87,100,253,141,214, 3,142, 16,210,237,199,142,125, 15,182,153,249,153,111,199,118, 45,213, 94, 85,156, 61, -238, 71, 37,226,241,229,144,220, 59,135,191,123, 78,245,233, 61, 41,165,156, 25, 92,215, 8, 33, 53, 38, 77,153, 84,176,168,116, -221,246,167, 14,208,255, 71,139, 74,127,187,120,241, 98,191, 90,181,106, 97,207,158, 61, 56,181,117, 43, 6,164,164,224, 44,203, -178,140, 76,230,112,216,104,252, 1,230, 5, 46,254,118,201,146, 37,254, 65, 65, 65,216,181,107, 23, 78,108,218,132,254,149,227, - 41, 13,141, 1, 56, 21, 52, 79, 0, 30, 2,104, 8, 64, 5, 64,143,188,165,157, 28,139, 28,159,154,255, 95,193,255,231, 1,252, -149,142,176,229, 71,134, 47,142,123,143,158, 53,124,211,169,208,106,181,105,126,126,126, 21,154,115,109, 50,153,202, 28,195,229, - 56, 46,166, 90,181,106,102, 91, 45,204, 17, 69,169,169,169,141,254,194, 23,196,107,249, 98,189,210,136, 8,194,115, 55, 55, 55, -161,160,209, 47, 73,132,149,180,143, 2,207, 42,114,157,248,248,248,135, 0,190,168,108, 58, 99, 99, 99,247,194,140, 69,163,205, - 61, 14, 0,210,210,210,222,248, 98,190,132,210,216,175,190,250,170, 66, 2, 27,148,198,150, 81,214,247, 0, 52,253,183,191,101, - 11,150,222, 33,132, 48, 97, 97, 97, 35,242,135,183, 79, 3, 88,147, 31,209,251,117,249, 11, 5,215,186,117,235, 38, 80, 74,145, -149,149,181,172,162, 2,171,176,247,156,152, 24,242,166,242,158,150,104,248,125,251,154,152,119,181, 25,198, 9,235,115, 12,155, - 32,162,160,204,116,206,206,206,191, 13, 30, 60,184, 25,128,141,175,203, 87,210,112,226, 27, 72,227, 51, 66, 72,189,179,147,190, -249,248,172,173, 85, 48,120, 73, 0, 12,204, 97, 24, 82, 67, 0,252,106,142, 85,188,104,126,145, 23,166,100,201,255,167,114,206, -143,127, 53, 97,216,176, 97,152, 61,123, 54, 78,252,240,131,113, 12, 33,153, 82,128, 30,207,235,104, 50, 4,152,106, 46,207,144, - 33, 67, 48,123,246,108, 28, 93,184,176, 82, 60,229,192,137, 16,114, 4, 0,166, 77,155, 54, 99,254,252,249,118,211,167, 79,175, -187, 96,193,130,239,243,183,195, 11,254,207, 47,211,238,211,167, 79,175, 93,228,255,108, 0,215,255,226,251, 89, 98,100,248, 87, -122,236,111,250, 3,160,131,200, 41,114,138,156, 34,167,200, 41,114,138,156, 34,231,107,126,130,243, 36, 75,233,223,165,253, 46, -178, 15,255,196, 71, 34,246,221, 68,136, 16, 33, 66,132, 8, 17,255, 81,171,220,145,215,249,255, 13,166,163,192, 71,171,168,165, -116, 29,144, 55,221,189, 67, 41,166,212,138, 4,142,236, 80, 9,179,239,105,145, 83,228, 20, 57, 69, 78,145, 83,228, 20, 57,255, -127,113,150,199, 93,202,249,193,132,144, 35,148,210,238,165,125, 23, 8,171,226,191,139,236,123, 99,110, 7, 37,228,101,100,105, - 62, 90,226,208,161,200, 41,114,138,156, 34,167,200, 41,114,138,156,255,137,161, 67, 0,116,218,180,105,211,255,109, 67,135, 0, -220, 0,140, 44,250, 49, 99,232,112, 15, 27, 27, 11,107,185, 92, 45, 3, 0,131, 65, 99,244,240, 64, 22,208,247, 31, 91,240, 86, -196,127,214,180,235,146, 47,234, 19,223,228,177, 34, 68,136, 16, 33,226,255, 13,146, 11, 44, 85, 0,146, 1,144,252,109, 67,254, -119,114,126,219, 81,252,247, 43,255,255, 85,160,148,198, 3, 40,113,182,188,164, 52,145,149,146,162,118,148, 72,210,253,121, 94, - 87, 19, 0, 36, 18,230, 65, 74,138, 93,164,163,227,158,148,202,136, 45, 39, 23,151,155, 82,150,245, 48,231, 88, 19,207,199,166, - 36, 38,190, 18, 58,158, 2,255,121,129,103,174,136,120, 29,177,241,119, 8, 21, 39, 39, 39, 23, 23, 23,151,247,172,173,173,223, -201,200,200,184,150,156,156,188,191,180,117, 15, 9, 33,243, 9,193,148,252,223,139, 40,165,211,203, 72,187,217,199,150,112,174, -159, 90,173, 30, 75, 8, 9,202,207,127,152, 70,163, 89, 69, 41,125,244,255, 80,216,170, 0,244,146, 72, 36, 67, 28, 29, 29,155, - 36, 36, 36,124, 69, 41, 93, 90, 73, 46, 9,128, 73,182,182,182, 3,109,109,109,171,166,165,165, 61,201,202,202,218, 5, 96, 9, -165,180,220,169,210, 95,143,119,127,167,109,231,182,179, 66, 79,132,126, 59,119,121,220,229, 63,253, 63,217,221,161, 83,199, 22, -179, 67, 15, 95,154, 55,125, 69,108, 90, 5,211,198, 0, 40, 8,154, 39,228,247, 90,233, 27,190,151, 82, 0, 61, 0,180, 5, 16, - 10,224,176, 57,249, 46,133,171, 25,128, 25,249,105, 94, 66, 41, 61,251, 47,175, 71, 22, 46, 46, 46, 11, 1,244,144, 72, 36, 17, -177,177,177, 35, 41,165, 49,255,112,154, 36,200,155,230, 31,132,188, 48, 28,215,205, 9,225, 96, 14, 28, 29, 29,187, 75, 36,146, -177,249,161, 93, 86,165,164,164, 28,249,183,150,141, 66,161, 88,230,234,234,250,137, 86,171,213, 16, 66,104,209,120,143, 28,199, -197, 36, 39, 39, 55,122, 11, 95,109,215,255,229,207,203,200, 18,196, 87,233,113,180, 98, 99, 97, 45,145,164,251, 39, 37,220, 27, - 16, 23,127,183, 63, 0,184,187,213,221,229,236, 90,103,103,108,172,220,216,184, 99, 31, 75,169, 90,178,138,101,165,245,117, 6, -189,163, 84, 34, 77, 49,114,166,219,140,129,142,141,127,176,175,196, 96,139, 82,150,245,120, 30,121,214,153, 51,166, 65,170,116, -135, 84,229, 93,106,130,221,221,221, 43,149, 81,123,251,234, 86, 70,133,114,130, 84,202,118, 20, 40, 23, 68, 5,128, 33,210, 48, -142, 55,157,145,233,245, 63,166,165, 69,101, 87,246, 38,214,116, 36,174, 20, 24, 8,130,142,160, 56, 69,128, 29, 15, 82,104, 66, - 5, 10,193, 44, 17,241,154, 98,163,232,185, 75, 41,165,147,223,116,101,242,244,244,180,123,255,253,247,151,125,243,205, 55, 42, - 75, 75, 75,242,226,197,139,206, 83,167, 78,109,237,233,233,249, 69, 76, 76, 76, 92,113,209, 71, 8,166, 8, 2,101, 0,128, 97, -200, 84, 23, 23, 23, 53,203,178,127,138,109,196,243,188,154, 16,140, 19, 4, 74,242,143,157, 66, 8, 89,110,142, 96, 84,169, 84, - 31, 52,105,218,252,139,133,139,151, 88,186, 56, 59, 91,112,188, 96,124, 22,253, 92, 61,107,218,228,166, 42,149,106,185, 86,171, -221, 94,137,135,134,176, 44, 59, 64,161, 80,116, 7, 80, 43,127,247,125,189, 94,127,132,231,249,157,230, 54,232,174,174,174,231, - 89,150,173, 82,145,107,243, 60,255, 34, 33, 33,161,101, 37, 31,246,126,222,222,222,191,182,105,211, 70,221,164, 73, 19,200,229, -114,204,158, 61,123, 18,128,165,230, 8, 42,181, 90, 61,192,194,194,162, 90, 78, 78, 78,148, 86,171,221, 43,151,203, 59, 44, 95, -190,220,171, 69,139, 22, 86,137,137,137,132,101, 89,151, 35, 71,142,124,244,211, 79, 63,117, 38,132,180, 47,175,145,203,140,162, -179, 20, 61,106,181,202,140, 58, 59, 11, 64,215,226,255,115, 58,229, 16,202,122,117,215,210, 91, 47, 81,129,169,245,132, 16, 70, - 42,149, 46,119,117,117, 29,166,211,233,116,200,139,189, 70, 93, 92, 92, 10, 27, 28, 0, 48, 24, 12,233,233,233,233, 1,149,184, -143, 1, 0,134,219,218,218, 14,251,242,203, 47,237,186,118,237,138,173, 91,183,126,186,126,253,250,116, 66,200,111, 0,126,161, -148, 62,172, 32,237,148,132,132,132,110, 82,169,148,120,121,121,177, 0,206, 86, 32, 61,254, 0,102,230, 55, 54,171, 40,165, 60, - 33,164, 29,144,247,188, 3, 88, 84, 32,220, 88,150, 93, 21, 16, 16,240,222,253,251,247, 87, 83, 74,191,173,236,179,238,234,234, -186,118,229,202,149,253,123,246,236,201, 38, 39, 39,123,212,171, 87,111, 27,128, 86,111,160, 65,250, 88,161, 80, 76,172, 91,183, -110,224,195,135, 15, 35,179,178,178,150,228,223, 79, 90,198, 57,158, 0, 58,216,218,218,182,159, 57,115,166,101,247,238,221,177, -110,221,186,110,235,215,175,207, 33,132,156, 1,112,250,117, 69,160, 68, 34, 25, 27, 19, 19,227, 72, 41,133,155,155,219, 88,148, -179,184,249, 63, 5,150,101,151, 15, 24, 48, 96,216,182,109,219,212,207,159, 63, 87,123,120,120, 20, 6,207, 38,132, 84,186,253, - 20,241,218, 22,173,117, 5,130,203,172, 56, 90,114,185, 90,198,243,186,154,113,241,119,251,183,110,243,179, 13, 0,156, 63,247, - 89,127,103,215,218, 97,114,185, 58, 82, 97,173,220,215,167, 71,135,250,125,187,183, 33,158,110,206,136,137, 79,114,249,101,199, -137, 46, 71, 78,156,221,135,188, 0, 98, 37,130, 51,166, 65,101, 60,141,135, 23,127,130, 99,219, 56,172, 56, 26,131,203,119,158, - 65,147,153,130, 42,174, 42, 44,158,208, 9,174,118,234, 74,101,210,210,197,191, 29,163, 84,239,252,240,131,193, 54,239,245,170, - 37,245,113,117, 5,165, 10, 68, 70,229, 52, 63,118,242,108,227,189,187,183,143,181,116,241, 31,144,147, 24,105,246,203,173,161, - 59, 81,229, 26,209, 75,194,146,143, 90, 53,173,221,254,131,110,173,152,192, 90, 53, 16, 17,126,191,211,193,223,175, 46, 14,116, - 97,206,112, 60,221,108, 33,195,129,155,113,165, 7,244, 43, 73,112,116,236,216,177,149, 66,161, 48, 22, 61, 78,175,215,203, 8, - 65,179,202,136,141,130,107, 24, 12,122, 70, 42,149,131, 97,200, 23,117,235,214,173,149,146,146,114,150, 16,242,107,108,108,197, -172, 5,159, 19, 34, 79,151, 72, 26, 50, 10,133, 27,111, 48, 56, 0, 0,145,203,211, 61,237,236,234,204,156, 49,195,146,101, 89, - 33, 53, 53, 21, 26,141,134,140, 24, 49, 66, 25, 21, 21,213, 7,192, 79,229,164, 17,235,215,175,247,119,115,115, 51, 20,255, 47, - 62, 62, 94,222,179,231,123,149,121,105,251, 55,123,167,197,196, 19, 39,142,215,202, 74, 75,215,173, 95,186,246,166, 73,169,214, - 87,173, 21, 32, 93,181,110,147,205,200, 97,131, 62, 35,132,220,166,148, 70, 86,128,211, 91,165, 82,237,251,225,135, 31,130,218, -181,107, 39,117,118,118, 70, 98, 98, 34,238,223,191, 31,244,251,239,191,247,218,180,105,211, 36, 66, 72, 31, 74,169, 57, 17,220, -253,206,108,254,213,217,194,222, 1,188,201, 4,247,186, 13, 10,227,155, 61,254,253, 36, 56,163, 17,130,201,132, 90,221,123,229, -153,101, 4, 1,129,129,129,149,138,186, 75, 8,113,175, 93,187,246,150,239,191,255, 94,166,215,235,113,245,234, 85,156, 61,123, - 86,136,143,143, 95, 80,158,200, 34,132,156,156, 59,119,174,103,203,150, 45,173, 82, 82, 82,192,243,188,227,129, 3, 7,198, 54, -104,208,192,218,203,203, 75,190,121,243,102,228,228,228,128,227, 56,251,106,213,170,217,127,240,193, 7,134,205,155, 55, 79, 2, -176,176, 52, 75, 86, 86, 20,157,149, 64,170,117, 9,104, 56, 4, 9,228,120,151, 47,186,186, 29,179,174, 78, 10, 45, 91, 93,171, - 87,183,170, 86,211, 98,170,165,117, 29,251,172,216,211, 83,187, 86,175,190,254, 88, 84,249,157, 33, 66, 8,195, 48,204,242, 62, -125,250,124,184, 99,199, 14,245,253,251,247,213,181,106,213,130, 32, 8,133, 17,248, 11, 2,206,250,249,249, 85,230, 62, 46, 24, - 61,122,244,212,254,253,251,163,110,221,186,133, 65, 81,231,204,153,131,169, 83,167,218,157, 63,127,126,210,246,237,219, 39, 17, - 66, 22, 82, 74,167, 85,164, 45, 47,218, 94, 86, 48, 89, 95, 63,125,250,180,223,190,125,251, 6, 77,153, 50,197, 15,192, 56, 0, -179, 83, 83, 83,219, 0,128,131,131,131, 28,192, 89, 66,200,199, 95,126,249,229,152,105,211,166,161, 91,183,110,179, 9, 33,223, - 85,198,202, 71, 8, 97, 29, 29, 29,187,245,236,217,147, 53,153, 76,176,176,176,128,201,100,170,254,154, 2,139, 0, 88, 57,106, -212,168, 49,163, 71,143,134,157,157, 29, 76, 38,147,255,142, 29, 59,214,207,158, 61,251, 29, 66,200,240,146,210, 74, 8, 25, 50, -102,204,152,247, 7, 15, 30,140, 70,141, 26, 65, 34,201,187,141, 63,252,240, 3,230,205,155,103,121,242,228,201, 94,155, 55,111, -238, 69, 8,217, 75, 41,173,116, 44, 52, 65, 16, 32,145, 72,240,242,229, 75, 56, 59, 59, 43,236,237,237, 79, 16, 66,214,165,166, -166,238,255, 23, 89, 77, 22, 13, 24, 48,224,195,109,219,182, 89, 2,192,226,197,139, 49,113,226, 68,184,184,184,192,210,210, 82, - 84, 59,255, 18,139, 86,241, 56, 90,149, 10,239,160,209,104, 26, 76,255,252, 35, 48, 76, 94,175,177, 70, 85,111,204,159, 49,146, - 28, 60,114,162, 65, 89,231, 73,149,238,120,120,241, 39, 40,188, 38, 64,111,226,112,229,206, 83,156, 90,220, 25, 0,224,223,117, - 38,244,198,246, 5,202,208, 94,174, 82, 45, 50,240,252, 31,112,117,189,138,232,232,228,242, 68,150,147,171,203,145, 53,107, 22, -170,130,170, 7,192,200,153, 16,155, 20, 11, 66, 20,240,244,176,194,199, 67,186, 74,219,180,113,119,252,250,235,181, 33, 22, 78, -254,189,115,147, 35,203, 13, 24, 26,224, 68, 54,182,106,224,215,255,131,224,150,138, 58, 65,181, 33, 83,168,254, 39,192, 26, 53, - 66,195, 70,141,152,105, 57,217, 29,175, 93,191,217,113,207,201, 43,250, 0, 39,178,235, 97, 50, 29, 90, 86, 57, 20, 21, 28,227, -199,143, 71, 65,239,187, 0,137,137,137,248,253,247, 51, 37,158, 99,110, 89, 23,189,198,119,223,125,103,149,158,158,222,117,195, -134, 13,239,186,185,185,125, 23, 31, 31,127,209, 28,146,143, 8,169, 2,133,162,253,176, 37, 75,132,250,239,189,199,218,186,186, - 50, 2,207,147,184, 39, 79, 28,150,254,244, 83,219,180,199,143, 85,185,246,246,105,233, 90,173, 38, 50, 50, 18, 74,165,146, 72, - 36,146,198, 37, 40,252, 68, 66,200, 34,134, 33, 83, 9, 33, 80, 40,148,145,163, 71,143,190,149,255,119,149,195,135, 15,171,123, -244,232,161, 1,240, 60,207, 28,174,244, 96, 89,198, 63,207,129, 16,139,204, 17,152, 22, 22, 22,159,127,251,253, 66,139,172,180, - 12,173, 49, 55,215,228,100,109, 73,136,165, 21,155,149,153,157, 29, 27,159,172,159,249,213, 60,118,212,199,131, 63, 7, 48,214, - 92,145, 85,175, 94,189,107,251,246,237,115,118,112,112, 64, 70, 70, 6, 82, 83, 83,113,237,218, 53, 8,130,128, 62,125,250, 40, -154, 55,109,210, 96,198,204, 89,151, 9, 33,239,152, 35,182, 44,236, 29,177,184,101,253,188,198,250,121,106, 97,249,172,235,215, -189,240,152,121, 49,153, 0, 0,165, 82,249, 58, 75, 72,189,211,190,125,123, 25, 0, 12, 31, 62, 60, 43, 59, 59,123, 62,128,109, -180,140,160,170,249,152, 52,107,214, 44,143,170, 85,171,250,108,219,182, 13, 57, 57, 57, 0,224, 92,181,106, 85, 4, 4, 4,240, -161,161,161,240,247,247,135,149,149, 21,206,159, 63,143, 43, 87,174,160, 97,195,134, 86, 50,153,172,127,105, 66,171,109,231,182, -179, 20, 61,106,181, 10,104, 56, 4,150,214,110, 88,191,125, 39, 30,222,220,212, 74,111,188, 63,107,254, 56,143,193, 90,170, 24, -234,233,103, 53,173, 74,163, 54, 14, 53,106,191, 7,159,134,183, 28,117,252,133,167,179, 63,173,182, 64,162,212,109,154,251, 67, - 92,106,105, 34, 11,192,226, 62,125,250,244,219,177, 99,135, 45, 0,220,187,119, 15,137,137,137,112,114,114,130, 82,169,132, 84, - 42, 45, 92,159,180,146, 24,186,106,213,170, 66,209,198,113, 92,225, 42, 0,106,181, 26,173, 91,183, 70,253,250,245,177,127,255, -254,161, 0,166,149,144,198,150, 77,155, 54,221,234,227,227,227, 85,116,127,112,112, 48, 6, 14, 28, 8, 0,104,211,166, 77,251, -190,125,251,210, 2, 65, 24, 31, 31,159,115,253,250,245,142,148,210,171, 37, 37,136, 97, 24,109,108,108, 44,190,252,242, 75, 60, -123,246,236, 83, 66, 72, 52, 0,165, 92, 46, 47,236, 31, 19, 66,252,107,215,174,189,124,226,196,137,136,138,138, 66, 68, 68,196, -181,202, 14,165, 82, 74,121, 95, 95,223,199, 38,147,169, 17,199,113,208,106,181,232,221,187,183,210,222,222, 62,145,101,217, 7, - 41, 41, 41,131,242,125, 82,204,109,132,148, 0,150,140, 30, 61,122,204,148, 41, 83,112,230,204, 25, 28, 60,120, 16,131, 7, 15, -198,132, 9, 19, 96,105,105, 57,108,194,132, 9,151,145,183,160,121,113,180, 95,181,106, 21,120,158,255,211,179,161, 84, 42,209, -178,101, 75, 4, 6, 6,226,224,193,131,237, 81,100,125,212, 10, 54,146, 62,125,250,244,145, 11,130,128,220,220, 92,132,134,134, - 90,170, 84, 42, 75, 79, 79,207, 17, 0,254, 53, 66,203,199,199,103,244,142, 29, 59, 44,139,142,254, 40, 20, 10, 20,169, 7, 34, -254, 97,139, 86,121, 61,172, 66, 24, 12, 26,163, 68,194, 60,112,119,171,187,235,252,185,207, 10,135, 14, 1,230,129,193,160, 49, - 2, 0, 47, 80,100,105, 56,168, 20, 12,158, 39,100, 35,252, 73, 74, 73, 23,126,101,138,166, 84,229, 13, 69,147,231,160,148,194, - 96,228,161,207, 76,192,252, 16, 13,238,199,232, 96,200, 77,135,193,152,231,134,229,232,232, 40, 57,113,226,216,196,211,167,127, - 31,243,219,111,191,177, 49, 54, 54, 17,200,204,108, 80, 18,167,189,125,117, 43,137,133,106,215,234, 53,179, 85,148,125,130,200, - 23,185,168,225,217, 4,142,182, 94, 72, 72,201,197, 31, 17, 71,241,224,209, 17, 84,117,243,193,132,207,187, 40,191,253,126,219, - 78, 59,187,170,222,233,233, 79,179, 74, 75,103, 62,134,172, 61, 30, 9, 46,237, 9,248,212, 40,240,217,113,127, 22,120, 78,222, -104,216,206, 3, 78, 94,213, 21, 67, 39,204, 27, 2, 96,104, 73,156,148,210, 68,150,101, 87, 51, 12, 25, 67, 8, 65,221,186,245, - 98,150, 44, 89, 98, 44,225,154,198,186,117,235,197,176, 44,227,153,247, 98,103, 86, 9, 2,159, 88, 78, 58, 95, 17, 53,114,185, - 98, 74,158,217,223,237,101, 72, 72,136,177, 95,191,126,248,225,135, 31,228, 83,167, 78,157,233,233,233, 57,188,248,240, 94,113, -206, 62,132,120,123, 84,175,222,233,187, 63,254,160, 82,147,137,164, 93,187,150,149, 17, 31,207, 37,100,103,203,119, 63,120,208, -237,147,201,147,229, 94, 94, 94,184,120,228,136, 67,114,110, 46,205,208,235,181, 25, 25, 25,148,227,184,107,165,228,125,186,139, -139,139,122,253,250,245,254,163, 71,143,190, 21, 23, 23, 55, 61,255, 5, 49, 31, 64, 32,128,231, 69,246, 97,205,154,157,177, 35, - 70,140,136, 76, 76, 76,156, 94, 86, 58,139,160,182,179,147,179,122,251,218,205,119,237,173, 84,140,147,167, 59, 35,181,181,149, -112,114,149, 76, 0,180, 85,189,170, 91, 0,168, 93,202, 61, 59, 93,188,199,173, 82,169,246, 29, 58,116,200, 89, 42,149,130,231, -121, 56, 57, 57,225,217,179,103,200,200,200, 64,118,118, 54,158, 62,184, 15, 95, 47, 47,124, 61,109,170,219,184,169,211,246, 17, - 66, 26, 21,109,204, 74, 92, 0,217,100,252,147,101,175,148,133,200, 95,249, 54,167,220,139,225,217,139, 23, 47, 96,105,105,137, -160,160, 32,203, 63,254,248,227, 66,105, 34,171,216, 34,192,253, 91,180,104, 97,181,125,251,118, 52,108,216, 16, 54, 54, 54, 8, - 13, 13,197,189,123,247, 96, 52, 26,153,156,156, 28, 88, 89, 89, 97,193,130, 5,240,241,241, 65, 86, 86, 22, 94,188,120,225, 32, -149, 74, 29, 75,227, 12, 61, 17,250,109,102,212,217, 89, 9,228,120,151,245,219,119, 98,196, 7, 3,240,127,236, 93,117,120, 84, -199,219, 61,179,190,155,221,184, 11, 9, 26, 32,193,221, 67,144, 34, 1,138,123,209, 66,113,135, 96,197, 9, 45, 14,133, 98,197, -189, 88,113, 39, 72,112,136, 64, 32, 64, 72,136, 18,247,245,123,239,124,127, 68, 26, 66,100, 3,244,251,217,158,231,217,103,247, -238,189,251,238,220,153,185, 51,103,206,204,188,175, 3, 13,191, 99, 94,149, 44,255,174,123,203,159, 41,191, 66, 55,185,105, 93, - 75,247,218,221, 33, 18, 43, 48,113,246, 82,132,133,156,181, 84,102, 5, 77, 32,108,116, 5, 0, 83,138,218,204, 83, 68,120, 21, - 42, 84, 24,125,252,248,113,211, 66, 83, 41, 5, 49, 15, 11, 7,129, 47, 41,224,187, 33,249, 73, 8, 65, 68, 68, 4,236,236,236, -160, 80, 40, 10, 2,136,135,134,134,226,193,131, 7,200,143, 70, 81,130,205, 33,215,174, 93,171, 32,151,203,139, 94,131,228,228, -100, 48, 12, 3, 19, 19, 19,176, 44, 11,157, 78, 7,189, 94, 15,181, 90,173,240,244,244, 28, 15,224, 97,113, 54, 57,142,155,222, -191,127,255,150, 15, 31, 62,172,178,105,211, 38,104,181,218,213, 31, 63,126, 68,159, 62,125,192,113, 28,218,183,111,223,140, 82, -250,122,254,252,249, 0,128,105,211,166,233,115,114,114,126,250,146,123,207,187,127,207,190,125,251, 86,185,126,253, 58, 90,183, -110, 13,141, 70,131, 53,107,214,152,109,219,182,205,108,255,254,253,182,179,103,207,222, 13,160, 83,105, 54,243,202,107,181,131, -131,195,184, 65,131, 6,201,242, 98,152, 98,223,190,125, 88,178,100,201, 17, 0,243, 47, 94,188,184,232,204,153, 51,195, 70,143, - 30,141, 37, 75,150, 76,205, 39, 90,197,217,124,255,254, 61,108,109,109, 97,102,102,150,219, 88,234,116,120,254,252, 57,174, 94, -189,138,154, 53,107, 26,210, 17, 94, 43,133,100,237, 62,124,248,176,105,116,116, 52,110,223,190,141, 74,149, 42, 65,169, 84,150, - 25, 27,246, 91, 7,127, 46,203,166, 74,165, 82, 71, 69, 69, 41,126,249,229, 23, 56, 58, 58,194,205,205, 13, 82,169, 20,132, 16, -232,245,250, 18,195,171, 25,146,206,182,109,137, 32, 57,214,242,123,115, 11,203, 9,148, 82, 65, 70, 70,218,118, 29,210,255,124, -247,142,106,255,191,238,253, 63, 92,209,106, 64, 41,125, 86, 56,230, 97,254, 96, 68, 0, 0,231,207,159,167, 62, 62, 62, 36,255, -221,217, 25,153,201,201,150, 97,118, 14,117,142,218, 57,212,202,139,251,197,123,197,231, 91,134,217,219, 43, 51, 1, 64,199, 80, - 4,188, 74, 71,208,219,143, 8,126,251, 17,114,137, 97,226,139, 70,199,228,238,207,164, 20,234,236,191, 7,173, 58,101, 26, 52, -186,220,229, 30, 90,141, 18, 25, 73, 47, 73,191, 94, 29,165,227,198,141,133,163,163,179,109, 73,246,116, 18,233,212,137,211,186, - 90, 88, 89, 8,113,238,222, 37, 52,171,217, 11, 82,137, 16, 41, 25,106,128, 0,111,194,175, 2,156, 41, 66,194,162,208,180,150, - 9, 58,125,231,161, 56,245,231,235,153, 0, 22, 26,146, 94, 38,230, 17, 68,238, 93, 32,100,245,208, 39,191, 6,151,254, 1,144, - 59, 64, 69, 20, 72,137,255,128, 87,119, 78,228,110, 56, 45, 3, 44,203, 78,176,181,181, 77,159, 63,127,126,219,106,213,170,233, -198,143, 31, 31, 24, 25, 25,249, 73, 88,155,138, 21, 43,174,219,186,117, 43,222,190,125, 27,187, 98,197,138, 91, 73, 73, 73, 11, -202,249,128,250, 18, 66, 54,228, 77,197, 37,159, 62,125,186,161,191,191,255,212, 13, 27, 54,216, 79,154, 52, 73, 60,105,210,164, -145, 0,150,149, 54, 93, 40,151, 72, 58,172,184,125,155, 50, 49, 49,154, 3,155, 55,139,183, 4, 4,204,215,113,156,147,141,157, - 29,105,209,180,105,142, 9,143,151,156,146,144,192,216, 86,169,194,143,184,122,213,154,202,100,113, 23, 47, 94,204,204,206,206, - 46, 49,116, 14,159,207, 87, 22, 55, 93, 88, 28, 28, 29, 29,181,197,173,225, 42,165,114,103,114,148,234, 44, 42, 87,166,223,181, -111, 94,237,237,235,240,112,169,133, 5,223,189, 90,165, 26, 47, 94, 69, 60,162, 44,171, 38,132,100, 26, 98,139,207,231, 15,216, -176, 97, 67, 29, 51, 51, 51,112, 28, 7,115,115,115, 36, 37, 37, 65,171,213, 34, 51, 51, 19,218,172, 12,104, 51, 50, 16,252, 33, - 2, 45,219,182, 69,191,206,223,121,236, 63,253,215, 0, 0, 71, 74,179,235, 84,183, 65,129,146,181,180,162,245,223,115, 65,209, -233, 5,164,235,151, 6,238, 16, 41, 20,232, 56,221,247,107, 26,232,103, 98,177,248, 66,239,222,189,187,206,156, 57,147, 23, 31, - 31,127,137, 16,210,146, 82,250,178, 84, 69, 88,161,168,154,156,156,140,172,172, 44,152,155,155, 99,195,134, 13,176,183,183,135, - 82,169,196,227,199,143,169,139,139, 11,185,121,243, 38, 92, 92, 92,144,156,156, 12,157, 78,135,156,156,156,143, 90,173,182,196, -233,242,188,233,193, 46,211,187, 56, 94,124,253,116, 95,107,103,242,254,113,255, 25, 94,111, 95, 7,191,138,186,114,245,222, 50, - 70, 45,141, 78,143,185, 54,167,114,227,103, 54, 19,102, 45,193,111,171, 23,225,245,195,219,169,246,174,153, 91,100, 68,179,183, -105,199,146,211,155,147,147,163,126,245,234,149,105, 96, 96, 32, 8, 33, 48, 55, 55,135,137,137, 73,177,100,235, 11, 26, 75, 94, -161,255, 65, 78, 78, 14, 68, 34, 17,172,173,173,177,107,215,174,130,142,183, 82,165, 74,165,153,217,222,177, 99,199, 1,174,174, -174,166,133,191,108,220,184, 49,198,142, 29,139,223,127,255, 29, 1, 1, 1,159,196,211,252,248,241, 99,188, 94,175,223, 91, 74, -217,166, 19, 66, 58,247,234,213,235,233,157, 59,119,204,118,237,218, 5,134, 97,138,125,237,220,185, 19, 15, 30, 60, 88, 72, 41, -125,245,133, 29, 70,205, 62,125,250,220, 62,120,240,160, 69, 82, 82, 18,146,147,147,145,157,157,141,156,156, 28,176, 44,139, 26, - 53,106, 16,134, 97,106,148,149,143,124, 62,255,244,230,205,155,187,255,248,227,143, 16, 8, 4,208,106,181,216,188,121, 51,230, -204,153,147, 0, 96, 56,165, 84, 71, 8,153,191,119,239,222, 97, 61,122,244, 64,189,122,245, 60, 74,179,153,157,157,141,236,236, -108, 8,133, 66, 56, 56, 56, 96,249,242,229,208,106,115,155,149,234,213,171, 23, 76,121, 2,216, 94,189,122,245,238, 97, 97, 97, -107, 40,165,191,150,208,206,244,162,148,142, 97, 89, 54,171,119,239,222,214,135, 15, 31, 54,141,141,141,197,211,167, 79,177,112, -225,194, 52,142,227, 88,142,227,136, 74,165,122,111,111,111,255, 84, 34,145,200,148, 74,101,106, 74, 74,202, 74, 74,233,165,127, - 97,103, 78,132, 66, 33, 70,141, 26, 5,129, 64, 0,153, 76, 6,181, 90, 13,189, 94, 95, 64,230, 81,206,105,105,119,119, 83,107, - 1, 68, 63, 86,175,222,102,106,191, 41,221,108, 29,157,156, 97, 97, 38, 65,104,232,203,150, 55,174, 95,221,236, 89,195,118, 27, -167,213,111,123, 21,145,254,143, 7,187, 47,202, 69,254,195,184, 86, 3, 0,207, 80, 40,230, 33,242,118, 33,150,208, 18,245,101, -109,108,254, 76,142,141, 21,235,196, 98,147,176,124,149, 43,151,100,245,101,129,195, 96,116,250,188,134,130,230,189, 12, 36, 90, -122, 22,111, 95,135,224,206,149,191, 96,163,140, 69,242,251,250,128,168, 14,180,170, 12,168,181,186,188,209, 27,139,192,167,215, -145,153,145,138,218,141,186, 1, 60,222,131,146,236,153, 91,147,110, 45, 26,214,229,191,141, 10, 65,227,234,125, 81,197,165, 53, - 62,196,103, 34, 61, 91,131,180, 76, 53,234,215,246, 69, 82,154, 10,153, 74, 53, 94,190,221, 15,103,167, 42, 60, 34, 8,111,111, - 40,209,210,188, 60, 9,205,171, 51, 16,185,181,132,184, 70, 15,240,221, 90, 33, 42,232, 38, 2, 47,174, 71,204,139,187,160, 28, - 11,199,234, 77, 12,125, 72, 54, 95,186,116,169, 73,203,150, 45, 5, 29, 58,116,168,231,228,228, 84, 47, 46, 46, 46, 48, 79,205, -169,215,181,107,215,122,182,182,182,216,184,113,163,138, 16,178,249, 11, 59,219,194,211,109,143,236,237,237, 87,156, 60,121,114, -243,216,177, 99, 97,103,103, 87,167,180,223, 38, 9,133,245,134,175, 92, 73,133,124, 62, 61,242,219,111,162, 37,151, 46,173,221, -179,119,175,168,157,183, 55,161,148,226,249,243,231, 38,191,252,246,155,201,224,239,191,143,252,144,152,200,248, 7, 4,232,226, - 99, 98,178, 18,115,114,150,196,197,197,125,252, 87,212,108,189, 94,127,255,125,196,123,231, 70, 77,235,219, 62, 11,125,255,162, - 83,187, 22, 45,120, 60, 30,239,117,248,135, 0, 91, 91, 51,147,171, 87,174,234,244,122,253,125, 67,108, 73, 36,146,110,237,218, -181, 19,164,165,165,193,201,201, 9, 73, 73, 73,136,141,141,205, 85, 28, 50,210,160,203,200,128, 62, 51, 29,108, 78, 54,222, 63, -126,132,250, 85, 42, 75,142,231, 46,150, 63, 82, 70,153, 20,171, 84, 21, 86,182,196,166,166, 16, 43, 20, 32,229,156, 54, 36,132, -124,111, 97, 97, 49, 39, 61, 61,253, 2,165,116,185, 78,167,155, 56,103,206,156,198,155, 54,109,178, 89,177, 98,133,217,152, 49, - 99,142, 19, 66,234, 83, 74, 53,165,116, 96,239, 24,134,177, 1, 96,119,253,250,117,216,217,217, 33, 35, 35, 35, 95,105,209, 42, -149, 74,105, 74, 74, 10, 52, 26, 13,180, 90, 45,204,204,204,240,228,201,147, 52,134, 97,254, 42, 43,125,102, 85,201,114,141, 46, -116,129,181,135, 60, 78,199, 88,122, 37,166,114,105,139,214,196, 45, 5,176,182, 75,213,170, 59,117,220,237,247,111, 66,206, 90, - 70, 60,190,149, 26,247, 38,167,202,206,243,225, 89,165,228, 35, 37,132,112,132, 16, 90,189,122,117, 36, 37, 37,129,207,231,195, -196,196, 4, 10,133, 2,115,231,206,197,230,205,155,203, 77,180, 8, 33, 82,185, 92,190,146,199,227, 13, 48, 55, 55,183,101, 89, - 22,190,190,190,232,222,189, 59,196, 98, 49,116, 58, 93,129,162,153,175, 82,149,166,116, 80, 74,159, 3, 48, 43,242, 31,222, 54, - 54, 54, 55, 52, 26, 13,194,195,195,113,250,244,233,182,148, 82,255,114, 62,219,225,132,144,206,173, 90,181,218,215,176, 97,195, -170,148, 82,212,169, 83, 7, 3, 7, 14,196,254,253,251, 17, 24, 24,136,140,140, 12,238,234,213,171,123, 0,172, 41,111, 7,158, -151,191, 53,250,244,233,115,247,208,161, 67,150, 41, 41, 41, 80,169, 84,200,201,201,193,241,227,199,209,178,101, 75,216,216,216, -224,224,193,131, 12,165,244,108,105, 36,139,199,227,237,218,182,109, 91,247,209,163, 71, 99,203,150, 45, 56,114,228, 8,122,244, -232,129, 1, 3, 6, 32, 41, 41,201,126,245,234,213,195, 8, 33,187, 0, 44, 26, 56,112, 32,178,179,179,241,248,241,227, 80, 3, -159,121,164,167,167, 35, 61, 61, 29, 50,153,172,240, 51, 70, 0,236, 95,191,126,253,160,169, 83,167,162, 74,149, 42,139,242, 54, - 5,125,182, 75,148,227,184,159, 98, 99, 99, 45, 5, 2,129, 53,195, 48,136,142,142,198,147, 39, 79, 48, 97,194,132,212,212,212, -212,177,148,210, 15,132,144,249,163, 70,141, 90, 62,125,250,244,130,186, 52,125,250,244,115,132,144,206,255,223,106, 78,141, 26, -150,181,196,124,201, 20,145, 72,104,157,150,150, 86,208,118,104,181, 90,104, 52,154, 79,148, 44,145, 72,104,221,164,129,219,121, -149, 50,107,222,139,176,180, 18, 3,164,123, 86,179,168,107, 34, 55,159,234,211,185,223,144,239, 58,247,228, 51,122, 61, 46, 95, - 62,139, 63,254,216, 10,239, 86,213, 81,165, 90, 29, 76,154, 60,197, 92,163,101,124,175, 94,189, 52,167, 69,147,202,151,178, 50, -211,231,150,102,243,127, 28,231,243,200,213,249, 98,167, 14,139,103,144,125, 89,103,103,164,229, 61, 56, 54,150,150,150,191,177, - 44,235, 13,252, 8,161,194, 1, 47,159, 60, 68,106,154, 16, 26, 21, 11,142,230,146, 45,131,136,139, 70,139,219,151,207, 96,195, -250,181, 72, 73, 73, 65,171, 54,109,145, 45,168, 0,215, 10,174, 80,171,148,121, 15, 13,160,211,234, 97,107,239,134,103,207, 2, -245,153, 57, 57, 37, 54, 72, 34,169,206,195,213,190, 58, 52,186,230,144,138,197,200,200,210, 34, 45,143,100, 29,252,179, 63, 52, - 74, 21, 24,173, 14,140, 86, 15, 91,215, 62,168,105,223, 14, 28,123,182, 86,185,178,143, 99,161,139,184, 13, 93,196,109,200,154, - 79,198, 95,126,131,138, 52,128,134,197,221, 77, 76, 76, 76,116,114,114, 58,251,252,249,243, 94,253,251,247,199,205,155, 55,199, - 0, 24,151, 55,125, 51,166,127,255,254,120,254,252, 57, 94,188,120,113, 54, 49, 49,241,155, 4, 94, 21,139,197, 42,141, 38,183, -143, 53, 49, 49,145,150,113,173,115,227,222,189,121, 25,207,158,101,174,191,119,111,209,206, 93,187, 68, 29,218,183, 39,122,134, - 1,199,178,168,230,238, 78,190,251,238, 59,249,254, 99,199,172,249,122,253,131, 89, 19, 39, 94,255,125,232,208,172,135,217,217, -134, 46, 52,175,152, 55,101, 8, 0, 21, 75,249,206, 96,104, 52,154, 77, 63,253, 56,162,131,255,237,187, 21, 92, 43, 56,155, 93, -190,234, 31, 40,145,137,121, 85, 42, 85,229,167,101,164, 10,150, 46,154, 39,211,104, 52,134,146, 86, 15, 27, 27, 27,124,252,248, - 17,111,223,190,133, 70,163,129, 94,175, 7,167,204,129, 54, 45, 29,218,140, 84, 16,181, 10, 18,150,133, 58, 57, 1, 21,171, 84, - 6,254,222,145, 88,230, 84, 84,113, 68, 43,255, 93,106,102, 6,145, 92, 1,158, 80,104,112,112,116, 66, 72,195, 38, 77,154, 28, - 59,113,226,132,104,228,200,145, 77, 9, 33,191,229,117, 16,237, 23, 46, 92,248,232,183,223,126,147,140, 29, 59,182,198,154, 53, -107,134, 1,216, 94,146, 29,181, 90,125,236,252,249,243,131,221,220,220,236,130,131,131,161, 86,171,193,113, 28,186,116,233, 2, - 0, 5,117,230,245,235,215, 42,181, 90,157, 24, 18, 18,146,249,225,195, 7, 45, 12,216, 37,184,104, 99,220,253,233,253, 92,122, -219, 59, 56, 63,144,202, 42, 86,162,217,207,122, 77,239,231,178,122,221,241, 24,245,197,119,239,178, 22, 78,168,178, 42, 39, 43, -104,130,133, 75,246,150,139,103,195, 13,217, 21, 76,243,183,179, 91, 91, 91, 67, 32, 16, 64, 40, 20, 66, 36, 18,129, 16,130,201, -147, 39, 99,199,142, 29,165, 78, 29, 22, 37, 89,166,166,166, 47,150, 44, 89,226, 50,118,236, 88,145, 84, 42, 69, 90, 90, 26, 14, - 30, 60,136, 81,163, 70,225,143, 63,254, 40,118,253, 75, 89, 83, 74,197,168,165, 83,135, 14, 29, 10,173, 86,139,129, 3, 7, 98, -231,206,157, 83, 1,248,151,183,190, 83, 74, 31, 16, 66,220, 3, 3, 3,205, 0,244, 24, 48, 96,192,222, 62,125,250,192,223,223, - 31,103,207,158,109, 11, 32, 12,128, 10,128, 95, 94, 16,103,191,210, 54,130,228,185,112,216,106,107,107,219,163, 86,173, 90,129, -125,250,244,169,125,232,208, 33,139,196,196,196,252,205, 15,136,136,136,192,238,221,187,227,119,237,218,149,201,178,172, 53,143, -199, 59,159,158,158, 62,183,148,233,194, 93,235,215,175, 31,145, 55, 29,136, 19, 39, 78,208,181,107,215,146,133, 11, 23, 34, 45, - 45, 13,222,222,222,216,182,109,219,148,236,236,236,122,107,215,174,253,177, 95,191,126, 88,186,116, 41,114,114,114,214,151, 53, - 88, 41,133,124, 17, 0, 45,214,175, 95,239, 54,117,234, 84,156, 56,113, 2, 13, 27, 54,148,189,127,255,254,119, 0,163,139, 43, - 63, 74, 41,222,191,127, 15,165, 82,137,187,119,239, 98,209,162, 69,105,133, 72,214,148,113,227,198, 45,159, 50,101, 10, 86,174, - 92, 73,131,131,131, 19,251,244,233, 99,191, 99,199, 14,126,181,106,213,166, 32, 55,232,250,255, 11,106,186, 91,175,106,210,216, -107,142,163,115, 53, 28, 60,116, 24,169,169,169, 5,121,146,159, 47,148, 82,100,101,101,225,227,199,143, 48, 55, 51,197,234, 53, -203,187,142, 31, 51,162, 2,114,221, 96,124,222,208, 85,181, 90,211,119,224,232, 25, 3, 7,143, 64,112,224, 83,236,223,187, 29, - 33,193,207, 11,236, 49,122, 29,194, 66,159, 32, 44,244, 9,236, 29,220,240, 93,135,182,100,208,160, 65, 93,134, 14, 30, 96, 11, -224, 31,115, 29,241, 31,172,102,125,230, 71,171,240,154, 45, 65, 89,114, 93, 30,201,122,113,244,232, 81,235, 86,173, 90,241, 25, -134,193,165,203,151, 49, 97,220, 15, 24, 54,212, 23, 58, 88,130,209,138,192,137,164, 6, 37, 70,165, 82,130,130, 34, 39, 39, 7, - 1, 1, 1,160, 28,131,253, 59,214,130, 82,174,128,104, 1, 20, 90,157, 14,206,174, 53,176,117,231, 10, 6, 66,225,163,146,236, -101,166,240, 89, 61, 67, 17,155, 24,133,168,248, 16,152,155,186, 66, 32,116, 69, 74,186, 18, 2,158, 3,244,234,215, 96,243,100, - 85,101, 78, 12, 84,186,175, 43, 63, 54,227,115,245,148,150,163,209, 85,169, 84, 7, 14, 28, 56,208,117,221,186,117, 98, 31, 31, -159,234, 78, 78, 78, 45, 0,160,111,223,190,213,205,204,204,112,224,192, 1,173, 74,165, 58,240, 13, 21,159,118, 77,154, 52, 65, - 90, 90, 26, 34, 34, 34, 2, 75,189, 55,173,214, 90, 97,103,199, 79,188,121, 83,159,148,150, 86,161, 93,187,118, 68,207, 48,224, - 17,130,212,140, 12,124,136,140,132,133,133, 5,121,241,250,181, 98,243,164, 73,167,170,215,174, 45,200,223,145,104, 8,206,158, - 61,107,130,220,117, 89,165,126, 87,206,202,157, 67, 8, 25, 49,113,226,196, 83, 7, 14, 28, 52, 79, 72, 76, 8,147,136,197,140, - 66, 33,117, 26, 58,100,188, 32, 61, 61,125, 48,165, 52,219, 80,123,105,105,105,120,255,254, 61,100, 50, 25, 68, 66, 33, 56,149, - 18,108, 78, 54,212,169, 73,224,235,180, 16,179, 44,172, 76, 36,168, 96,111, 15, 87, 91, 27,131,108,190,189,113,165, 96,225,123, -225,233,194,213, 77, 60, 32,150, 43, 32, 54, 85, 96,252,185, 91,121,163, 81, 17,176,112,153, 33, 36,203,198,217,217,249,175, 67, -135, 14,137,146,146,146,240,252,249,243, 64, 74,105, 6, 33,196, 20, 0, 23, 26, 26,122, 45, 36, 36,164, 91,222,174,187,178,118, -139,173, 61,121,242,100,199, 86,173, 90, 49,149, 42, 85,146, 39, 36, 36,184,166,164,164,144,248,248, 79,215, 58, 95,184,112, 65, -170, 82,169,114, 56,142, 59,133, 92, 63, 80,101,250, 47,154,222,207, 69, 26,240, 12,147,189, 58, 85,172, 99,102, 83, 23,169,204, -179, 58, 15, 2,227, 39, 79,239,231,178,105,221,241, 24,181,140,104,246, 18, 54,186,130, 64,170,222,103, 96,121, 83, 27, 27, 27, -132,134,134, 34, 32, 32, 0, 31, 62,124,192,251,247,239, 63, 33, 84, 99,198,140,193,254,253,251, 13, 82,180,228,114,249,202,197, -139, 23,187, 76,157, 58, 85, 84,136, 20, 97,226,196,137,200,200,200,192,206,157, 59, 49,113,226,196,114,119,252, 69,202,170,114, -199,142, 29,125, 28, 29, 29,145,146,146, 2, 7, 7, 7,180,106,213,170, 59, 33,164, 18,165, 52,226, 11,171,254,248, 78,157, 58, - 45, 95,178,100, 9,244,122, 61, 70,141, 26,133, 55,111,222, 28,123,243,230,205, 6, 87, 87,215,201,179,103,207,182,183,183,183, - 71,255,254,253,229, 0,122,151,100,196,202,202,202,111,251,246,237,131,125,124,124,120, 58,157,174,205,141, 27, 55, 16, 25, 25, - 9,173, 86, 11,134, 97,240,238,221, 59, 76,156, 56, 49, 62, 37, 37,197,139, 82,250,206,128,116,141,156, 63,127,254,136,201,147, - 39,227,151, 95,126,193,226,197,139,247,152,155,155,215,174, 95,191,126,131,197,139, 23, 99,214,172, 89,112,115,115,131,181,181, -117,205,133, 11, 23,122, 76,159, 62, 29,155, 54,109,194,162, 69,139,246, 0,216,253, 37, 25,193,113, 28, 89,181,106, 85,189,245, -235,215, 59,230,147, 44, 30,143,135,163, 71,143,226,217,179,103,221, 75,248,205, 54, 7, 7,135, 49,142,142,142,226,171, 87,175, - 42,220,220,220,192, 48,140, 62,143,100,109,118,117,117,157,240,238,221, 59,248,248,248, 32, 60, 60,252, 0,165,116,152,151,151, - 87,206,244,233,211, 77,100, 50,153,249,255,103, 7,206,231,145,225, 43,151,206,194,227,103,175,113,242,164, 8,143, 31, 63,134, -189,189, 61, 36, 18, 9, 40,165,208,104, 52, 72, 74, 74,130, 94,167, 65,157, 90,149,177,111,215, 42, 36, 38, 38, 1, 60, 82,226, -146, 27,194, 35, 67, 70,252,208, 11,119,238, 94,198,239,191,111, 71,118,118, 78, 9,131,111, 41,170, 85,247,128,179,147, 29,162, - 99,162, 65,120,176,249, 39,239,245, 63,124,234, 48,255,121, 55,204,189, 67, 97, 88, 88, 88,108, 56,114,228,136,181,183,183, 55, - 63, 39, 39, 7, 28,199,161,117,171, 86,152, 60,117, 42,206, 30, 58, 4,247,166, 3, 65,180, 10, 48, 38,134,237,122, 80,171,148, -240,108,208, 2,253,250, 15, 64,212,135, 15,232,212,173, 15,212,106,101,193, 8, 35, 95,209,210,106,117,176,177,171,128, 43, 87, -174,240, 49,106, 84,137,107, 76, 88,157, 56, 40,236,157,186,101,186,234, 25, 2, 30,239,135, 78,163, 67,157, 58, 11,161,227,172, - 97,231, 50, 6,122,253,105,100, 38,221,200,157,198,176,246, 70, 76, 84, 20,120,124,209,139, 47,205, 68, 46, 39,233,171, 26,221, -244,244,244, 12, 39, 39,167, 63, 3, 2, 2,134,244,238,221, 27, 87,174, 92,249, 17, 0,122,247,238,141,128,128, 0,188,127,255, -254,207,244,244,244,140,111, 81,224, 78, 78, 78, 61,188,189,189, 7, 54,110,220, 24,231,206,157, 3,165,244,142, 65, 15,182, 80, - 72,121, 60, 30, 56,142, 3, 1,144,146,158,142, 55,111,222, 32, 37, 57, 25,122,189, 30, 57,217,217,156, 71,245,234,217,148,227, - 76,203,147,158,194, 59, 12, 81,204,174,195,252,239,190,128,108,125, 80, 40, 20, 81, 89,217,217,182,150, 22,150, 89, 98,177,152, - 77, 75, 79,207,120,249, 34, 88,107, 96,231,144,143,208,144,144,144,218,113,113,113,136,138,138, 2,147,147, 5,190, 70, 11,158, - 70,137,246, 45,154, 67, 6, 10, 41, 56, 8, 57, 61,132,124, 33,178,114,119,231,149, 57,221,145, 79,244, 11, 43, 91,132,144,220, -233, 66,185, 28, 98,133,233, 39, 10,151, 33,245, 73, 34,145, 28, 58,126,252,184,163,179,179, 51,150, 46, 93, 10, 23, 23,151,154, -117,234,212, 81,182,110,221, 90,102,111,111, 15, 79, 79, 79,180,104,209, 2, 23, 47, 94, 4,128,119,101,228, 31, 67, 8,249,238, -206,157, 59, 51,238,221,187,215,143, 16, 66,124,125,125,209,185,115,103, 72,165, 82, 40,149, 74,164,165,165, 97,199,142, 29,132, - 82,218, 32, 47,173,110, 82,169,244, 48, 33, 36, 70,165, 82,245, 47,106,115,255,250,186, 78,137,169,220, 40,123, 7,231, 94, 94, -157, 42,214,105,215,169, 3, 42,187,183, 67,187, 78, 81, 0,176,202, 74, 16, 57,112,245,130,218,167,108, 42, 88,237,190,114,233, -234,162, 86, 94,237,230,251,142,181, 92,190,106,123, 90,166, 1, 13, 25, 56,142,251,196,119, 80,209,243,195,134, 13,195,209,163, - 71,203,204, 71, 30,143, 55, 96,236,216,177,162,194,223,229, 79, 25,119,235,214, 13,189,123,247,254,132,104,217,216,216,192,193, -193, 1,145,145,145, 0,144, 98, 96,189,154, 60,114,228, 72,162, 82,169, 48,122,244,104,236,220,185, 19, 3, 7, 14, 36,254,254, -254,147, 1, 76, 45,111,125,231,241,120,171,103,207,158, 61, 99,226,196,137, 72, 77, 77,197,133, 11, 23,208,165, 75, 23, 28, 61, -122,212,246,194,133, 11, 43,189,189,189,193,231,243,113,238,220, 57, 48, 12, 83,170,175, 47,145, 72,212,195,199,199,135, 23, 29, - 29, 13,145, 72,132, 70,141, 26, 33, 38, 38, 6, 74,165, 18,177,177,177,152, 50,101,202,199,148,148,148,182,134, 62, 71, 34,145, -104,234,228,201,147,113,228,200, 17,248,250,250,238, 5, 48, 58, 35, 35,163,223,189,123,247,142,124,255,253,247,136,141,141,197, -169, 83,167,176,104,209, 34, 50,108,216, 48,108,217,178, 5, 83,166, 76,217, 3, 96,116, 41, 59, 36,179, 18, 19, 19,205,171, 86, -173,138,132,132, 4,100,103,103,227,212,169, 83,118, 23, 47, 94,172,228,236,236,108,246,254,253,123,118,217,178,101,226,169, 83, -167, 98,195,134, 13,120,254,252, 57,246,239,223,143,118,237,218, 49,225,225,225,197,170,100,121, 46, 27, 78, 89, 89, 89, 93,149, -203,229,200,202,202,202,223, 89, 58,211,215,215,119,162,159, 95,174,200, 30, 23, 23,135,225,195,135, 15, 37,132,112, 75,150, 44, - 49, 17,137, 68, 80,171,213, 57,255,159, 29, 55,199,114, 0, 56, 84,170,160,192,229,179,187,240, 52, 48, 28, 79, 3, 67, 32,150, -228, 46,130, 87,169,148,104, 80,167, 26,154, 54,106,130,184,248, 88, 28,216,191, 11, 86, 54,206,165,182, 35,148, 82,136, 4, 44, - 60,170, 59,224,208,254,237, 56,119,225, 58,246, 31, 56, 92,176,230, 77, 32, 16,162,126,131,166,104,212,168, 21,194,223,191,195, -174, 93,191,195,214,174,130,113,114,240, 11, 81, 48,117, 88,248,189, 8,243,111,215,170, 85, 43,126,118,118, 54,212,106, 53, 62, -126,252,136,200,200, 72, 88, 88, 90, 32, 60, 46, 2,109, 77,116,248,200,101, 34, 52,240, 5, 75,248,194,231,101, 74,131, 94,245, - 1,175,250,152, 48,114, 96,201,149, 0, 20,114, 51,155,220,169, 27,134,121,139, 77,155, 74, 28, 57, 51,172,254,218,229,171, 55, -154,140, 28,214, 67,120,229,198, 78,232,181, 28, 84,122,115,228,168,181,200,209, 9,193, 51,239, 2, 36,251,131, 47,144,160, 89, -189,106, 56,117,242,162,142, 50,250,235, 6,103,144,125,109, 48, 9, 33,133,136,214,167, 51,122, 82, 83, 43,131,167, 14, 11, 58, - 94,150, 61,122,240,224,193,158,205,155, 55, 55,241,246,246,174,154,215,113,234, 14, 30, 60,168,100, 89,246,104,121, 11,177,168, - 55,120, 71, 71,199, 6, 34,145,104, 96,143, 30, 61, 26,140, 24, 49, 2, 47, 95,190,196,129, 3, 7,194,170, 85,171, 86,170, 15, - 49,190, 88,156,146,157,152,104,161,168, 84, 73, 96,105,106, 26,119,241,194, 5,183, 14, 29, 59,146,168,168, 40,164,164,164, 64, -173, 86,227,121, 96, 32, 21,242,249, 49,196,204,140,247,250,217, 51, 30, 95, 44, 78, 41, 71, 82, 35,203,216,117,232,247,165,234, - 86, 5, 71,203,170,139,124,127,170,172,214,168,107,103,102,102, 50, 2,161, 80,232,226, 96,241,161,156,211,144,231,174, 93,187, -214,179, 67,135, 14,146,176,160,231, 96, 50, 50,160,205, 72,131,136, 99, 97,213,160, 30,248, 58, 13,160,213,195,217,131, 66,157, -110, 2,255,135,175,245, 26,141,166, 76,167,134,249, 68,139, 87,132, 24,136, 21, 10, 72, 76,205, 32, 81, 40,138, 18, 6, 82, 70, -121,155,244,232,209,163,125,179,102,205, 64, 41,197,142, 29, 59,160,211,233,196, 58,157, 14, 90,173, 22, 58,157, 14,153,153,153, -216,191,127, 63,182,110,221,122, 15,192, 30, 3,200, 42, 35, 20, 10, 39, 50, 12, 99, 39,145, 72,116,182,182,182,162, 99,199,142, - 21,184,155,168, 95,191, 62,228,114,185,134, 16,162, 3, 0, 7, 7, 7,253,222,189,123, 5,223,127,255,189,168, 56,123, 53,234, -212,156, 85,153,177,244,146,202, 42, 86, 50,179,169,139,202,238,237, 0, 0, 29,187,141, 68,229,106,174,200, 76, 14,170,164, 86, - 69,246, 18, 9,210, 44, 95,108,138,125, 41,243,169, 61, 34, 39,241,214, 27, 20,191,189,191,216,142,130,199,227,149, 56, 29,107, - 8,201, 34,132,240,204,205,205,109,243,215,249,228,117,192,136,143,143, 71,104,104, 40,106,212,168,129,212,212, 84, 56, 59, 59, - 67,171,213,162,113,227,198, 80,169, 84, 88,191,126, 61,238,222,189,123, 15,121, 59, 35,203,248, 15,153,187,187,251,240, 6, 13, - 26,224,194,133, 11,120,252,248,113,236,229,203,151,157, 91,181,106,133, 74,149, 42,141, 32,132,204,163,180,100, 31,124,197, 77, -245,181,105,211,102,210,196,137, 19, 17, 18, 18,130,159,126,250, 41, 37, 58, 58,250,212,177, 99,199, 70, 47, 90,180,136,215,169, - 83, 39,196,199,199, 99,245,234,213,236,221,187,119,215, 0, 88, 90, 70, 62,190,138,142,142,118, 81,171,213, 72, 77, 77, 5,195, - 48, 80, 42,149,184,120,241, 34,246,239,223,159,144, 71,178,222, 26,154,190,122,245,234,121,242,120, 60, 28, 57,114, 4, 0, 22, - 80, 74, 57, 66,200,169, 94,189,122,197, 46, 91,182,204,121,238,220,185,248,241,199, 31,161,211,233,240,203, 47,191, 96,238,220, -185,231,243, 72, 86,105,141,232, 58, 7, 7,135, 49, 63,253,244, 83,205,233,211,167, 35, 32, 32,192,238,201,147, 39,141,158, 63, -127,142, 10, 21, 42, 32, 37, 37, 69, 96,109,109,141, 13, 27, 54, 96,218,180,105, 39, 0, 36,223,191,127,127,192,251,247,239,253, - 40,165,171,203,200,207,109,206,206,206, 99, 40,165, 84,169, 84, 70,250,250,250,174, 94,177, 98, 5,166, 77,155,134, 23, 47, 94, - 32, 35, 35, 3,166,166,166,100,246,236,217,195, 23, 44, 88,128, 81,163, 70,209,156,156,156,173,255,255,211, 82, 44,148,105, 33, - 96, 53,150,168, 95,167, 6,234,215,174,136,203, 55,158, 2, 0,218,247,105, 5,101, 78, 22,246,238,221,129,183,111,223, 64, 32, - 20,194,194,202,193, 16, 37, 16,218,204, 87, 72,215,197,163,131,119, 35,116,233,212, 22,123,246, 29, 5,163,215, 97,244,200,193, - 72, 75, 79,199,190,125,187, 16,254,254, 29, 4, 66, 33,172,109,254,121, 71,168,165,113,145,255,120,162,101,192,244, 19, 56,142, - 67,108,108, 44,158, 60,121,130,136,136, 8,152,152,152, 64,197,176,220,239,215,238,114,132,136, 98, 56, 74,239, 81,166,192, 75, -241,231, 54, 88, 54,182,144,199, 90,115, 75, 75, 75,177, 70,163, 2,195,232, 11,245, 42, 4, 32,128, 72, 0, 56, 58, 85, 70,116, - 84, 52, 85,171,213,183, 74, 29, 65,105,212, 27,206,156, 58, 62,177, 69,203, 86, 54, 93,218, 47,193,169,211, 11,145,150,153, 9, -181, 78,136, 28,181, 14, 74, 53, 96, 97, 85, 29,141,235,212, 69, 92, 92, 10,130, 30,251,103, 11, 52, 74, 67, 22,138,190,217, 60, -127,164,251,200, 9,179, 32,115,107, 9, 77,232, 41,112,217, 9, 5,138,150, 84, 97, 9, 43, 87, 15,164,231,104,112,252,250, 83, - 0, 48, 56,212, 75, 66, 66,130,210,201,201,233,224,196,137, 19,127,121,250,244,137, 11, 0, 60,125,250, 52, 38, 62, 62,126, 78, - 66, 66,130,178, 60, 5, 88,200, 27, 60, 49, 49, 49,121, 90,173, 90,181, 56, 31, 31, 31,243, 94,189,122,193,198,198, 6,207,159, - 63,135,159,159,223, 43,157, 78, 55,235,214,173, 91,165, 78,245,104,181,218,216,167,167, 79,155,181,253,225, 7,139, 89,221,187, -175,158, 56,113,226,134,165, 75,151, 10,221,221,221,137, 94,167, 67,112,112, 48, 61,116,240,160,126,235,220,185,235,197,114,185, -224,209,153, 51, 66, 70,163,137,253, 87, 87, 98, 23, 23, 23,175,174,157,189, 60,214,172,219, 4,181, 42, 27, 15, 3,206, 35, 45, - 45, 9,219,119,156,244,112,113,113,241,138,137,137,241, 55,148, 0,239,222,189,123, 70,211, 6, 13, 26, 84,169, 80, 1,193, 31, - 34, 32,230, 88,136, 24, 6,124,157, 6, 60, 70,141, 10,181, 41, 8,207, 20,241, 31, 51,177,226,200,159, 33,134, 16,227,154, 93, -123, 96,105, 76, 6, 8, 33, 88,219,188, 54,196,166, 10,136,228, 10,140,255,235, 70, 1, 49, 56,183,116, 46,196, 10, 5,170, 54, -109,101, 64,163, 75,149,166,166,166, 79,130,131,131, 27,215,174, 93, 27, 51,102,204, 64,100,100, 36, 56,142, 67, 66, 66,130, 58, - 62, 62, 62, 54, 41, 41, 41, 18,185,254,127,118, 82, 3, 71, 2, 12,195,216, 61,125,250, 20, 0, 68, 0,112,253,250,117, 56, 57, - 57,193,220,220, 28,153,153,153,152, 53,107,150,228,231,159,127, 6, 0, 60,121,242, 68, 88,152,160, 20, 69,240,211,208, 53,233, - 89, 52,141,102, 63,235,149,202, 60,171,211,174, 83, 52, 58,118, 27,129,171,231,246,224,198,229,107,176, 18, 68, 70, 64,158,117, - 49, 57, 34, 57, 51, 38,199,125,155, 71,195,209,252,248,156,203,219, 38,127,111,201,119,116,228,142,251,110,205, 72, 47, 45,173, -238,238,238,176,183,183, 47, 88,163, 37, 16, 8, 48,106,212, 40, 80, 74, 13, 34, 89,121,249,200,153,153,153, 37,169,213,106,123, -169, 84,138,143, 31, 63,226,221,187,119, 8, 15, 15, 47,112, 29,192,113,156,126,230,204,153,194, 73,147, 38,225,247,223,127,199, -173, 91,183,238, 1, 88, 66, 41, 53,116,176, 54,184,127,255,254,166, 90,173, 22,135, 15, 31,102, 0,116, 59,126,252,248,147,198, -141, 27, 11, 58,119,238,108,186,101,203,150,193, 0,118,150,163,186,203,205,204,204, 68, 58,157, 14, 91,182,108, 65,116,116,180, - 23,165, 52,148, 16,178,173,127,255,254, 91,107,215,174, 93, 45, 36, 36,228, 77,118,118,246,120, 74,105,144, 1,109,209,200, 70, -141, 26, 29,231, 56,206,173, 67,135, 14,242,117,235,214,153,189,126,253, 26, 46, 46, 46,224, 56, 46,184,188, 33,172,222,188,121, - 19, 26, 31, 31,239,209,182,109, 91, 92,188,120,113, 21, 33,100, 37,128, 95,198,141, 27,231,252,225,195, 7, 52,104,208, 0, 86, - 86, 86,120,253,250,117, 86,124,124,252, 86, 0,243,202,242,245, 69, 41,125, 15, 96, 14, 33,164,238,182,109,219, 6, 90, 89, 89, - 53,123,254,252, 57,238,220,185,131, 53,107,214,224,231,159,127, 70,235,214,173, 49, 99,198,140,100, 0, 3,243,166,180, 13,242, -155,151,175,108, 1, 64,163, 70,141,226,252,252,252, 48,122,244,104,250,199, 31,127,108, 60,120,240,224,212,193,131, 7, 23,244, -129,195,135, 15,167, 7, 14, 28, 24, 94,218, 70,128,127, 8,122,157, 78, 11, 51,171,202,200, 78,143, 66, 82,116, 0, 76, 76, 29, -208,169, 93, 61, 40, 85, 90,156, 61,115, 2, 65,193,129,224,241,120,176,119,168, 0, 11, 75, 27,132,133,189, 1,128,151,165,219, -212,193,212,178, 34,178, 51,162,161, 77,124, 10,153,194, 14, 35,126,232, 5,165, 74,135,147,167, 78, 32, 36, 36, 8,124, 62, 31, - 14,142, 21, 96,110,145,107,147,208, 82,109, 26,129,226,253,105,149, 73,180,248,124,254,205, 75,151, 46,245,109,218,180,169,224, -237,219,183,120,251, 54,119,112,147,150,150,198, 16,176,127, 38, 4,157, 30, 84, 10, 9,232,144,191, 59,163,112,236, 66,133,169, -105,236,235, 87,161,246,105,169, 9, 8,124,118, 23,111,195,130, 17, 17, 30, 10,157, 78, 13, 62,143, 7, 30,159,135,138,149,107, -225,238,189, 0,173,154, 97, 2, 74,178, 9, 0,169,169,239,178, 20,246,213, 7, 44, 95, 58,239,220,180, 89,139,101,253,250,254, -142,160,215, 47,145,205, 56,128, 82,192,193, 90,142,250, 85,102, 35, 54, 46, 9, 71,246,108, 81,114, 58,221,144,194, 62,180,138, -179, 9, 0,246,201,240,220,186, 99,207,168,157,251, 15, 45,158, 53,105,172,253,247,189,135, 64,156,250, 18,250,184,167,168,220, -184, 11,136,196, 2, 23,174,220,128,255,147,151, 9, 28, 75, 23,219,167,224,143,178,108, 22,153, 66,188,255,241, 99,188, 75, 33, - 47,240, 46, 18,137,244,126, 25,164,170, 67, 17,191, 66,159,120,156,231,243,121, 13,151, 47, 95,174,183,183,183,215,133,132,132, -224,247,223,127,231,158, 62,125,122,133,199,227,109,142,139,139, 83,151,101,211, 86,175, 15, 60,228,235,235,217,164,119,111, 58, -104,210, 36, 37, 36,146,201,171,215,174,245, 77, 74, 75,115,162, 28, 7, 91, 43,171,152,213,115,231,250,245,237,223, 63,237,197, -221,187,178,128,211,167,101, 98,134,121, 90, 86, 58,191,209,188,119,137, 54, 99, 98, 98,252,221,171,186, 98,239,206,117,208,233, - 52,136,143,205, 21,178,146, 83, 50, 80, 26,201, 42,106, 51,111,215, 85,239, 5, 63,255,252, 96,193,180,169, 14,109,218,119, 64, - 84,224,115,232, 82,147, 64,244, 12,132, 68,128,156, 68, 19, 36, 38,100, 99,206,129, 99,137,217, 74,101,239,162,157, 68, 73,233, -204, 87,172, 36,102,166, 16,201, 21, 16, 43, 76, 63, 81,177,164,102,102, 16,203, 21, 16,136,197,197,169, 52,159,217,204,206,206, -238,211,183,111,223,160, 71,143, 30, 89,142, 30, 61, 26, 45, 90,180,120,166, 82,169,188, 41,165, 89, 95,154,159, 2,129, 32,177, - 97,195,134,118, 66,161,144, 25, 53,106,148, 32, 57, 57,185,192,179,122,118,118, 54, 46, 94,188,136, 26, 53,114,119,245,191,120, -241, 2,181,106,213, 42,209,230,232,217,193,177, 0,150, 78,239,231,178,250, 65, 96,252,100, 0,171, 42, 87,171,128, 27,151,175, -225,206,141, 0,223,102,181,185, 77, 93,135, 52, 94,102,226,221,127,150, 71,195,209,124,133,153, 35,246,157, 60,193, 15,125,186, -107,133, 82, 25, 92, 21,192,204,146,210, 73, 8, 1,165,244, 51, 87, 14,124, 62, 31, 7, 15, 30, 44,239,189, 31,219,185,115,231, -184,159,126,250, 73, 20, 31, 31,143, 87,175, 94, 33, 39, 39, 7, 82,169, 20,151, 47, 95,102, 0,108, 57,120,240,224,229,131, 7, - 15,118, 70,174, 95,156,235,229,169,159,114,185,124, 98,167, 78,157,240,234,213, 43, 60,126,252,248, 4,165, 52,136, 16,114,226, -237,219,183, 3, 90,183,110,141, 61,123,246, 76, 44,137,104,149,100,147,227,184,194, 62,147, 82,243,234,110, 32,128,102,229, 45, -247,188, 5,188, 45, 1,192,218,218, 58,218,222,222,222, 44, 48, 48, 16,174,174,174,208,233,116, 77,203, 91,151, 50, 50, 50,214, -109,222,188,249,143,145, 35, 71, 98,217,178,101, 67,142, 29, 59, 54,164,107,215,174,240,241,241,193,238,221,187, 17, 20, 20,180, -202,144,176, 98,197,221,123, 30,113, 12,242,244,244,156, 80,161, 66, 5,172, 89,179, 6,193,193,193,126, 75,151, 46,157, 27, 20, - 20,132, 26, 53,106, 72, 94,190,124,201,124, 73, 27, 2, 0,102,102,102,102,122,189, 30,167, 79,159,126, 72, 41,157, 70, 8,177, -219,176, 97,195, 64,133, 66,129,212,212, 84, 85, 72, 72,200, 96, 74,233,153,255,239,182,142, 18, 50,127,244,143,147,183,253, 56, -122,176,180, 81,195,250, 80,102,198, 64,149,157, 0,101,214, 71,108,222,121, 5,132,240, 96,107,235, 8, 59, 7, 23,124,248, 16, -133,123,231, 47,104,115,148,170, 13, 98, 61,183,170,116,155,147,114,109, 54,200,181,169,204, 73,132, 42, 59,177,192,166,157,157, - 83,158,205, 15,184, 27,112, 65,173,202,201, 89,167,165,228,215,127,242,222,255,147, 81,238, 88,135,133,145,150,150, 54,101,236, -216,177,222,115,230,204,177,102, 24,134,111,101,101,133, 15, 31, 62, 48,127,254,249,103,106,118,118,246,148, 47, 73,144, 64, 40, - 12,114,175, 94,195,251,251,239,191,103,122,244,232, 46, 26, 58,178,179,192,214,206, 14, 25,233, 41, 8,123,245, 28,175, 95, 62, -133,123,141,122, 88,180,116, 61, 96, 97, 81,102, 32,201,236,132,176,155, 10,251,234,221,150, 44,152,121,180,165,215,119,102, 53, -106,213, 19,213,175,106, 14,157,158, 65, 76, 76, 12,206,156, 14,212,133, 60,185,147,201, 49,218, 1, 57, 73,134,133,224,185,149, - 59, 42,218, 94,199,158, 28, 92,185,122,243,140, 45,219,247,206,154, 51,121,180,188,117,171,142, 8,190,182, 7, 39,206, 29,205, - 81,107,180,171, 69,124,172, 13, 78,166,202,242,230,129, 90,173,214, 21,221, 16,165, 86,171,117, 95, 91,216,187,119,239, 70, 66, - 66,130, 54, 50, 50,242, 18,195, 48,199, 74, 10,246, 92, 28, 54, 81,170,237, 77,200,181, 5,173, 90,117, 94,112,249,178,116,248, -236,217,218, 33, 67,135,206,132, 70,163,131, 88, 76, 5,114, 57, 15, 18,137,240,197,221,187,178,141,227,198, 89, 17,173,246,234, -158, 82,220, 6, 20,131,111,190,235,176,144,162,133,225,163,167, 65, 85, 72,209,186,255, 56, 12,229, 81,180,242, 30,140, 40, 66, - 72,179,201,243, 23,156, 28,208,169,189, 71,109,183,138, 18,219, 74, 21,161,112,112, 64, 74, 82, 18,238, 62,126,173, 95,122,244, -100, 72, 30,201, 50,200,175, 12,199,113,185,139,220, 1,180,159, 50, 7,132,207, 7,242,220, 56,228,239, 28,170,212,184, 5,136, - 64, 0,150,114,208,104, 52,212,128,116,198, 16, 66,250, 12, 25, 50,228,250,185,115,231,120,157, 58,117,170,127,234,212, 41,238, -107,234,142, 94,175,119,201, 35, 92,153, 38, 38, 38,130, 17, 35, 70, 64,175,215, 67,169, 84, 34, 35, 35, 3,161,161,161,154,126, -253,250, 73,242, 8,132,126,192,128, 1,101,182, 31,235,142,199,168,167,247,115,217,100, 37,136, 28,152,153, 28, 84,201, 74, 16, - 25,209,172, 54,183,105,221,241, 24,245,146,105, 22,203,147, 35,253,195,226,115, 46,111,219,119,242, 4,127, 88,175, 62,172,139, -226,141,175,212,142,254,217,174,123,153,141,218,103,206, 73, 13, 33, 89, 69,145,149,149, 53,119,225,194,133, 62,105,105,105, 46, -157, 59,119, 22,121,120,120,224,193,131, 7, 56,119,238, 28,115,255,254,253,232,156,156,156,121,148, 82, 53,128, 43, 95,146,167, -213,171, 87,175, 36, 16, 8,242,167,210,126,203,251,250,183, 83,167, 78, 13, 24, 61,122, 52, 42, 86,172,232, 73, 8,145,208,114, - 60, 71,148,210,130, 89,134,111,220, 81,132,111,220,184,209,217,193,193,129, 92,188,120,145,225,243,249,229, 86,110, 40,165,187, - 9, 33, 77,245,122,253,143, 99,198,140,129,151,151, 23, 24,134,193,129, 3, 7,176,107,215,174, 85,229,137,221, 90, 18,194,194, -194,158, 70, 71, 71,183,153, 57,115, 38,214,172, 89, 51,119,230,204,153,136,142,142, 70, 88, 88,216,243,175,177,155,153,153,169, -138,138,138, 50,105,222,188,121, 35, 87, 87,215,144,225,195,135,215, 26, 61,122, 52, 86,173, 90, 69,111,221,186,213,151, 82,122, -241, 95,209,129,191,122,147,178,191, 78, 21,251,203, 75,151,175,251,185,106,149, 74, 63,141, 26,209,159, 95,221,189, 22,114, 50, - 98, 96,109, 99, 15,151, 10,149,145,148,152,140, 75,151, 46,178,201,201,233,187, 89, 30, 89,242,230, 77, 74,220,215,216,116,118, -169,140,196,196, 68, 92,184,112,129, 77, 79,203,220, 1, 61,111,233,203,200,180, 4, 24, 81,166,146, 85,220, 98,120, 98,200,194, -219,188,157,135, 27,115,221, 59,228,170, 92,105,105,105, 83, 40,165,201,134, 50,115, 82,212,137, 90,191,126, 34,156, 63, 95, 23, -122,125, 51, 11, 83,211,246,148,227, 26,215,171, 87, 79,209,191,127,127,174, 85,171, 22, 98, 51, 51, 51,226,233, 89, 59, 51, 35, - 61,221, 10, 0, 40,192,150,197,162,243,131, 74, 11,248,194, 14, 44,171,171,147,155,214,178,131, 74, 27,194,204,171,216, 19, 91, - 1,135, 69, 60, 66, 70,112,148,238, 97,120, 88, 18,158, 64,147,190,116,244, 84,100,218, 47, 63,228,204,220,242,142,242, 10, 79, - 29,242,120,252,253,142,142,142,243, 98, 98, 98, 18, 41,165,236,151, 42, 27,249, 33,120,186, 77,157,170,111,248,221,119,140, 85, -133, 10, 28,165,148,141,120,250,148,220, 63,115, 70,120,255,204, 25,169, 94,163,185,121,156,210,112, 67,108, 58, 57, 57,249,157, - 61,123,214,224,181, 87,221,187,119,127,153,191,110,203,208,252,172, 90,197,229,114,149, 74,206,223, 85,169,148, 59, 61, 29, 30, - 17,135,240,136,216, 43,239,194, 99, 58,125, 73, 25, 21, 14, 42, 77,242, 92, 56, 80, 3,130, 74, 23,181,105, 99, 99,243, 68, 32, - 16,184,148,231,129,101, 89, 54, 46, 41, 41,169,129,129,233, 28, 84,169, 82,165, 85, 31, 62,124, 56,201,178,236,180,111,161, 16, - 18, 66, 90,240,249,252, 11, 44,203,202,138, 42, 94,249,100,140, 16,226, 38,145, 72, 62, 89, 12, 95,154,205,213, 11,106,255,220, -188,117,235, 94,247,239,220, 57, 53,107,121,200, 39,235,134, 38,247,178, 26, 57,104,194,148, 95, 15,111,217, 56,123,211,169,212, -221,101,170,205,246,246,183, 0,184,231, 19, 46, 3,242,178, 81, 25,202,176,212,212,212,212, 15,192, 0,142,227,108, 8, 33,201, -148,210, 35,133, 72,214, 23,231, 39,159,207, 95, 85,179,102,205, 41,175, 95,191, 62,204, 48,204,168, 66,215,175,169, 90,181,234, -132,200,200,200,223,244,122,253,172,114, 60,239,102,173, 91,183, 78,219,184,113, 35,111,218,180,105,240,247,247,183,162,148,166, -125,163,114,119,176,180,180,252,131,101, 89, 15, 74,233,217,172,172,172,185,148,210,156,242,218,204,115,241, 48,192,217,217,121, -150,187,187,187,251,155, 55,111,130, 98, 99, 99, 87, 23, 85,131,190, 34,157, 62, 61,123,246, 60,187, 97,195, 6, 82,161, 66, 5, - 68, 71, 71, 99,234,212,169,244,244,233,211,221, 41,165,231,191,180, 77, 38,132,204, 31, 55,110,220,242,161, 67,135, 22, 16, 90, - 63, 63, 63,122,254,252,249,225,148,210,253, 95,218,206,127, 75,245,222,179,138,109, 21,202,103, 87,212,171,237,209,247,135, 33, -189,200,253,199,111,240,224,126, 0, 98,226,226, 78,113, 60,222,188,176,176,228, 55, 95,107, 51,224,113, 24, 30, 4, 4,208,248, -184,248,227,160,252, 5, 47,195,147,194,255,191,238,253,191, 65,213, 42,110,234,144,124, 97, 40,172,114, 87, 24, 98,136,183, 90, - 39, 39, 39,164,164, 52,149, 10, 4,173, 36, 18,137, 55,143,207,191,153,154,148, 52,213, 80,162,245, 79, 84,236,207, 58,244,170, - 68, 92, 82, 72,130, 47,177, 89,116, 33,251,151,216, 44,143, 13, 67,109,150, 20, 84,154,211,104,226,172, 25,230,201, 38, 90,114, - 30, 20,181,233,226,226,242, 35,199,113,149, 12, 77, 19,143,199,139,136,137,137,217,249, 37,249,233,238,238, 78,223,190,125, 11, - 74, 41,249,150,229,254, 79,212,165,255, 37,155,251,215,215,117,170, 81,167,230,172,224,167,161,107,242,166, 21, 11,176,100,178, -149,105,171,118,109, 23,222,189,113,107,217,162, 77,169, 89,255,202,116, 18, 66,120,180,188,187, 91,190,208,102,190,147,208,242, -218, 20,137, 68,219,154, 52,105,242,227,131, 7, 15,254, 96, 24,102,204,255, 98,253, 36,132,248,240,249,252,153,213,171, 87,175, - 31, 22, 22,246,156,101,217, 53,165,145,172,114, 12,126,231, 85,170, 84,105,188, 72, 36,146,100,103,103,167,197,197,197, 45,164, -148, 30,251,119,203, 79, 79,119,235, 70,148, 22, 56,221, 94, 17,250, 54,229,209, 55,179, 73, 57,150,163,252,229,175,195,147,159, -253,127,151,251,127, 58,201, 42, 73,229, 18,252,127, 37, 34,159, 40,149,138,184,184,104, 0,209, 0,142,255,187,102,166, 33, 36, -171,156,114, 99,194,191,131,141,162,200, 35, 82, 1,223,194, 86, 81,210,244, 79,226,205,155, 55,196,248,200,255,251,225,135,105, - 65,113, 0,166, 54,242,254,252, 92, 30,185,154,229,221,227, 95,159,206, 47, 33, 89, 95,106,243, 75, 3, 62,235,116,186,159, 8, - 33,211,203,179, 91,241,191, 13,121,164,234,252, 63, 96,119, 37,128,149,255,238,247,255,242, 77,202, 19, 0,221,255,221,109,254, -143,213,201,242, 5,149, 54,194, 8, 35,140, 48,226,223,186, 81, 87, 25,115,193, 8, 35,254,189, 80, 88,213, 42, 76,188, 8,128, - 14, 37, 60,200,215,202, 97,188,195, 23, 52, 20,215,140, 54,141, 54,141, 54,141, 54,141, 54,141, 54,141, 54,255,183,108,254,183, -146,172, 79,200, 85,225,227,252, 93, 79,255,196, 11, 64, 7,163, 77,163, 77,163, 77,163, 77,163, 77,163, 77,163, 77,163,205,255, -230, 23,128, 49, 37, 29, 27,167, 14,141,248,199,177,185, 55,113, 6,128, 73, 39,105,236, 63,113,189, 17, 70, 24, 97,132, 17, 70, -252, 43, 65, 41,221, 81,210,212,225,191,156,104, 17, 66,156,144,235,104,175, 42,128,215, 0,238,148,103,187,114, 49,246,108, 0, -244, 39,132,244,203,187,217,227, 0,142,149,229,138, 34, 31, 50,153, 44, 65,173, 86,219, 1,128, 84, 42, 77, 84,171,213,133, 99, - 25, 16,124, 30, 30,133,230,254, 77,201, 11, 91, 43, 87,174,156,160,209,104,236, 12,248,251, 12, 74,105, 16,143,199, 11, 86, 40, - 20, 55, 94,191,126,125,174, 60,247,222,174, 93,187,225,124, 62,127, 5, 0,176, 44, 59,255,198,141, 27,123,255,193,114,107, 90, -193,201, 97,143, 78,175, 99, 18,146, 82, 23,150,180,117,123,107,119,226, 39, 32,152,149,247,121,245,248,179,165,187,176, 40,239, -245,165,164,175,145, 80, 40,156,104,111,111,223, 37, 38, 38,230, 9,128,217,148,210, 50,189, 26,187,186,186,254, 32, 16, 8,134, -176, 44, 91,133,207,231,135, 51, 12,115, 48, 42, 42,106,191,177, 25, 49,194, 8, 35,140, 48,162, 44,178, 85,220,247,229, 34, 90, - 53,109,136, 3, 5, 6,130,160, 35, 40,174, 18,224,200,171,100,250,209,208,223,251,212, 36,122, 61,147,251,159, 34, 30,216,139, -239,120, 59,124,124,124, 92, 38, 77,154,132, 22, 45, 90,224,193,131, 7,205,119,239,222, 61,146,207,231, 7,113, 28,119, 19,192, - 3, 74, 13,114,165, 32, 7,240, 61,128,193, 93,186,116,233,176, 98,197, 10,126,173, 90,181,160, 82,169,112,235,214,173, 86,171, - 87,175,222, 64, 8,185, 6,224, 16,128, 51,165,249,134, 81,171,213,118,249,156,137, 16, 98,215,183,111,223, 71,133,201, 85, 94, -124, 53, 66, 41,189, 79, 8, 9, 96, 89,246,193,241,227,199,163,107, 18,210,116,108, 37,209,159, 83,222,107, 63,243,153,164,209, -104,236, 78,255,186, 18, 2,137, 4,154,172, 76, 52, 31,241,247, 46,208,171, 63,207, 2,225, 24,240, 65,211,188,151,111, 8, 2, - 16, 28, 23, 23, 23,228,229,229, 21, 81,222, 66,230,243,249, 43, 46, 93,186,228, 72, 41, 69,167, 78,157, 86, 0,248, 71,136, 22, - 33, 68,210,172, 81,189,155,103, 79, 28,150,102,167, 38,160,243,247, 3, 14, 18, 66,134, 83, 74, 79,124, 66,154,186, 18,123, 34, -192,172,113, 43, 15,241, 1, 96,235,188,193,179, 55,116, 34,155,166, 94,166, 31, 9, 33,222, 64, 65,200,166, 95, 41,165, 55,183, -118, 37,246,224, 99,206,184,149,135, 8, 0,252, 62,111,240,172,173, 93,201,198,241, 23,202,183,171,146, 16, 50,126,248,240,225, -155, 86,172, 88,193,119,116,116, 68,108,108,108,103, 79, 79,207,234,132, 16,207,210, 22, 17, 87,170, 84,233,104,219,142, 61, 43, -247,238, 55,208,196,214,198, 18,113,241,201,102, 71, 15,255, 49,182, 82,165, 74, 93, 34, 34, 34, 6, 24,155, 17, 35,140, 48,194, - 8, 35, 74,232,119,190,220,189, 67, 67, 39, 34,203,209,161,167,128, 79,126,104,221,180, 86,251, 65, 93, 91,243, 60, 61,170,225, -229,139,208,239,206,220,120,184,218,211,158,119,157, 97,233,126,185, 8,167,159,198,149,190, 19, 70,207, 64,112,229,244, 33, 0, -192,248,145,131,249,143, 30, 61,170,214,176, 97,195, 2,135,128,237,219,183, 71,251,246,237,201,214,173, 91,235, 93,185,114,165, -222,174, 93,187,116,132,144, 61,101, 56,161,155, 88,181,106,213,213,155, 54,109,146,120,121,121, 65, 34,145, 20,156, 83, 40, 20, -232,222,189, 59,186,119,239,206,143,139,139,235,116,246,236,217, 78,191,254,250,171,150, 16, 50,147, 82,250,155, 33,153,183,112, -225,194, 70,197,124,125,137, 16,242,142, 97,152,231,117,235,214,141,174, 65, 72,181,159,186,182,184, 58,190,165,187,188, 36, 59, - 2,177, 24,251,134,231,246,213,133,137, 86,196,141,139, 80,152,153,166,152,152,154, 6, 1, 8, 6, 16, 68, 41, 13,126,247,238, - 93,168, 7, 33,245,154, 89,242,246,236, 74,101,235,150,131,108, 33, 58, 58, 26,230,230,230,178,182,109,219,198, 19, 66, 22,223, -188,121,115,199, 55,174, 83, 77, 23,207, 26, 47, 74,139, 12,194,199, 87,247, 49,189, 95, 43,147,169,155,255, 90, 6,224, 68,233, - 21,145,199,251, 53,128,243,157,154, 27,140,119, 97, 74, 74,138, 23, 0, 88, 91, 91,139, 1,220, 92,255, 16, 93,167,181, 36,228, - 43, 42,186,136,207,231,111,217,183,111,223,232, 31,126,248, 33, 55,116,196,221,187, 80, 40, 20, 88,186,116,105,197, 25, 51,102, -248,161,132, 64,192,174,174,174, 63,180,237,216,179,242,198, 53,203, 60,179, 82, 51, 52,219,183, 28,123,236, 84,187, 6,111,220, -196, 25,166, 27,117, 26, 7, 87, 87,215, 31,140,202,150, 17, 70, 24, 97,132, 17,229, 81,179,202, 36, 90, 53,108,201,222,214, 13, -220,251, 15,242,105, 37,169, 83,187, 22, 68,146,191, 29, 69, 55,108,212, 8, 13, 27, 53,226,249,102,103,117,124,244,248,105,199, - 63,175, 60,208,212,176, 37,199, 94, 39,209,225,134, 38, 44, 63, 40,237,138,239,237,219,229,164, 39, 74, 1, 64,110, 97,167,158, -119,250,227,141,150, 45, 91,194,197,197, 69,116,253,250,245, 81, 40,221, 95,202,188,215,175, 95, 75,248,252,210,253,161, 58, 57, - 57,161,111,223,190,168, 81,163,134,184,109,219,182,243,240,119, 56,140, 79, 32,149, 74, 19, 9, 33,118, 0, 96,101,101,197, 46, - 94,188,248, 57,165, 5, 51,131,148, 82,122,159,199,227, 61,224, 56,238,225,153, 51,103, 98,106, 17, 98,215,173, 97,141, 59,227, -135,246, 53,161,127,110, 40,145, 36,168, 51, 51,139,253,222, 68, 33, 79,146,201,229, 65, 18, 19,105, 48,128, 32, 0,193,206,206, -206,161,181, 8,113,105, 86,163,210,149,173,211, 6,155, 26,146,151, 13, 27, 54,172,238,237,237, 45,101, 89, 22, 57, 57, 57,248, -253,247,223,205,101, 50,153,121,151, 46, 93, 22, 1, 40,168, 0,158,132,212,233,227,196, 31,179, 56,150,153,240, 5, 68,198,162, -117,243, 70,145,155, 87, 45, 50,107,212,172, 53,222,220, 60,128,212,212, 44,100,164,103,131,227,184,207, 34, 12,143,191, 64, 19, -182,118, 39,171,183,206, 29, 60,135,240,120,164, 94,175,217,232,225,144, 49,153, 16,242, 2,128, 80, 44, 22, 23,212, 67, 66,136, - 83,237,218,181, 87, 87,251,174, 53,126,159, 63, 20,148,227, 40,128,213,134,170, 89,132, 16, 59, 83, 83,211, 51, 87,174, 92,105, -218,184,113, 99, 60,120,240, 0,239,223,191,199,248,241,227,181, 19, 38, 76, 16, 13, 27, 54,140, 76,159, 62,125, 18, 33,228, 79, - 74,233,189,207, 30, 4,129, 96,200,247,189, 7,136,179,211, 51,213, 90,141, 78,107,101, 99,193,105,114,212,202,228,180, 76,245, -128,193, 63,106, 95, 60,123, 56, 4,192,103, 68,235,107,242,211, 8, 35,140, 48,194, 8,131,209, 24,128, 45,128, 36, 0,143,139, - 28, 35,239, 51,138, 57, 78, 70,238,172,148,117, 33, 91,201,200, 93,246, 99,139, 92, 31,159,143, 0,164,125, 77,226, 74,242, 10, - 15,228,121,134,207,115, 80,156,239,168,152, 20, 34, 90,244,117, 18, 5,147, 26, 14, 54,229, 29,216,172,207,195, 39, 17,169, 5, - 50, 84, 44,162,195, 67, 49,124,234, 82,188, 78, 42,217, 35,183, 79, 77,162, 55, 23, 67, 96, 42, 2, 68, 38, 22,154, 65,171, 46, - 7, 52,106,212, 72, 61,207,139,231,227,183, 53, 87,233,154, 62,102, 48,154, 79,251,243,114,120,120, 56,227,228,228,132, 31,126, -248, 1,148,210,110,165,220, 92, 66,214,227, 0,187, 87,221, 90,160, 73, 66,241,203,164,194,194,194,112,251,246,109, 68, 69, 69, -161, 74,149, 42, 24, 53,106, 84, 34,165,212,190, 36,155,157, 59,119,190,245,235,175,191,122,173, 93,187, 54,112,223,190,125, 45, - 75,154,110,242, 36, 68, 94,175,162,195,227, 93,126,115,170,144,139,123,132,202,168,183,176,240, 87,145, 98, 72, 30,141,139,251, - 59,239,126,169,238, 8,185,185, 41,228,102,138,132, 97, 87,158, 20, 40, 89,121,239,175, 27, 18, 98,230,226,104,253,228,200,250, -133,206,188, 27, 71,165,162,237,247, 73, 89, 36,171,109,219,182, 1, 43, 86,172,176,140,139,139,195,181,107,215, 80,177, 98, 69, - 40,149, 74,172, 91,183, 46,254,206,157, 59, 78,121,233,181,111, 82,195, 45,232,247, 25, 35,204, 69,163,126,150,148,183, 34,137, - 4,130,223, 2, 46, 29,157, 96, 46,161, 72,143,123,143,119,161, 47,240,232,101,132,126,255,213, 32, 54, 83,165,241,161,148,222, - 40,238,119, 19, 91,145,106, 55,227,108,207, 94,186,245,216,221,209,209, 17, 99,199,142,197,199,143, 31, 65, 41, 5,199,113, 5, -187, 52,230,205,155,135,234,213,171, 99,248,192, 30, 74, 73,234,211,182,103, 95,210, 39, 6, 86,240,218,110,110,110, 87,110,222, -188,105,239,236,236,140, 59,119,238,224,227,199,143,112,112,112,192,245,235,215,177,106,213,170,125,227,198,141,235,183, 98,197, - 10,233,160, 65,131, 98, 47, 95,190, 92,161,232,154,186,138, 21, 43,134,158,189,124, 71,113,227,212,149,119,150,166, 38,144,219, - 89,131,175, 48, 83, 83, 16,165,131,157,165,104, 64,207,246,213, 34, 35, 35, 61,138,148,255, 87,229,167, 17, 70, 24, 97,132, 17, -127,227,252,249,243,212,199,199,135,228,191, 23,165, 16,132,144,115,121,124, 64, 11, 64, 92,232, 24,132,144,115,121,106,200, 39, -199,190,190,190,243,252,252,252, 94,228, 31,231, 95, 51,119,238,220, 90,171, 86,173, 90,217,188,121,243, 35, 1, 1, 1,139, 1, -188,253, 90,162, 85,146,202,101,208, 26, 45, 38,230, 17, 68,238, 93, 32,100,245,208, 39,191, 6,151,254, 1,144, 59, 64, 69, 20, - 72,137,255,128, 87,119, 78,228,114,195,178, 50,241, 21, 21, 18, 66,174,135,134,134,226,213,171, 87,136,142,142,134,137,137,201, -103,215,221,189,123, 23, 50,153, 12,142,142,142,134, 73,118,218, 79,227,177, 6, 53,116,131,162,185, 23,146, 7,253,132,235,215, -175, 35, 49, 49, 17, 34,145, 8, 98,177, 24, 12,195,148,105,143,199,203,141,248,155,175, 98, 21,119, 77, 91, 66, 4, 46, 86,138, -179, 91, 23, 77,169,196,187,127, 78,168,138,122,139, 56, 53, 11, 11, 67,148, 60,133, 28, 38,114,147,120,153,204,164, 40,201,122, -211,144, 16,161, 92, 33, 61,187,103,249,116, 7,254,179,235, 82,213,219, 32,136,138,177,209,177, 99,199,177, 0, 22, 81, 74,211, -219,182,109,107,191, 98,197, 10,203,216,216, 88,188,124,249, 18,199,142, 29, 75, 98,114,111,148, 80, 74,151, 0, 64,115, 66,164, -174,182, 22,151,127,251,121,138, 41,110, 30, 21, 99,212,207,229,174, 72,230, 30,221,207,247, 25, 54,110,194,166, 41,221,145,147, -165,194,161,171,207,112,233,233,187, 30, 0,238,150,182,238,237,183,187,244, 45, 33,164,125,239,222,189,159,223,190,125,219,102, -215,174, 93, 96, 24,166,216,215,174, 93,187,112,237,206,211,201,148, 26, 76,178,156, 42, 85,170,116,237,225,195,135,182, 38, 38, - 38,184,122,245, 42,210,211,211, 11,148,172,225,195,135,147,244,244,244,129,191,255,254,123,159,200,200,200, 53,119,238,220, 73, - 65,110, 56,168, 79, 42, 2,159,207,127,199, 48,186,154,142, 30,213, 4,253,186,183,110,157,157, 18, 4,133,117, 93,220, 15,124, -119, 54, 61, 45, 69,197,231,243,223, 21,190,254, 91,228,167, 17, 70, 24, 97,132, 17,229, 38, 52,231, 40,165,221, 10, 19,167,162, -132, 43,255,115,254,117,126,126,126,221, 10,147, 48, 0, 88,181,106,213,202, 66,199,202,111,145,182,178, 22,195,183, 37,132, 80, - 0,109,139,187, 72,243,242, 36, 52,175,206, 64,228,214, 18,226, 26, 61,192,119,107,133,168,160,155, 8,188,184, 30, 49, 47,238, -130,114, 44, 28,171, 55, 49, 52, 45,234,154, 53,107, 66,173,206, 93,154,165,209,104, 32,146, 91,170,167,143, 25, 44, 5, 0, 78, - 32,213, 20, 74,180, 65, 6, 77, 91,122,163, 73, 2,197, 35,251, 92, 2,156,175,108, 45, 31, 49, 2, 34,145, 8, 34,145,168, 32, -248,172, 33, 68, 43, 47, 40, 42,184,220,233, 43, 90,220,249, 70, 18,225,161, 35,139, 38, 54,145, 68, 6,139, 53, 33,247, 17,167, -225,232,217, 4,246,188, 33,145,147, 77,228, 38,177, 50, 19,147, 96,153, 66, 94,152,104,189, 3, 0, 42, 20,238, 63,176,100, 98, - 93,121, 66,184, 92,253,248, 58,226,213,156,206,172,120, 51, 75, 46, 94,188,104, 39, 16, 8, 28, 88,150, 69, 84, 84, 20, 94,188, -120,129,141, 27, 55, 38,100,101,101,181,125,250,244,105, 88,161,244,242, 26,203,196,199,246, 47,157, 82, 89, 16,228, 47,213,188, - 11, 41,150,188,149, 6,219, 58,189, 58,245,104, 91,239,252,216,161,243,209,179,235,119, 24,214,214,147, 70,196,165,170, 1, 92, - 53, 36,128, 53,165, 52,150, 16,210,177, 77,155, 54, 7,235,215,175,239, 65, 41, 69,157, 58,117, 48,112,224, 64,236,223,191, 31, -129,129,129,200,204,204,212, 93,185,114,101, 3,165,116,183,129, 15,156,137,165,165,229,165, 27, 55,110,216,154,152,152,224,202, -149, 43, 80,169, 84,112,116,116,196,132, 9, 19,196,171, 86,173,218,151,153,153,217,207,207,207, 79, 26, 17, 17,241,219,229,203, -151, 43, 2,224, 81, 74, 63,171, 4, 90,173,118,199,161,253,123, 55, 77,152, 56,201,249,198,131,151,215, 53,217, 89,230,110,110, -209,153,182,150, 10,211, 13,191, 44,113,213,106,181, 99,139,207,207, 91, 95,148,159, 70, 24, 97,132, 17, 70,124,174, 97,156, 63, -127,190, 68, 46, 82,152, 60, 21, 37, 91,229, 33,105, 0, 84,190,190,190,243, 8, 33,231,242, 20, 47, 21,128,184,127,130,100, 21, - 16, 45, 74,169, 63, 33, 4,148, 82,255, 18,173,112, 44,116, 17,183,161,139,184, 13, 89,243,201,248,203,111, 80,145, 63,249,242, - 16, 97,221,151, 94,189,161,209,104, 4,123,247,238, 45, 88,183, 5, 0, 44,203,126,243, 82, 44, 15,209,202, 35,122,159, 37,162, -146, 68,225,191, 99, 90,191,102,214,172, 82,168,189,123, 22,177, 26,142, 89,243, 86,167,124,156, 78,127,157, 87,130,205,211, 83, -199, 34,250,206, 53,152, 40, 20,209,163,111, 7, 23, 86,177,130, 0,188, 7,128, 74, 82,179,235,199,166, 15,106,229, 32,130, 72, -123,254, 56,226, 52,156,102, 91,164,126,247,198,226, 11, 21,148, 82,188,127,255, 30, 74,165, 18, 1, 1, 1, 56,113,226, 68, 82, - 81,146,149,151,222, 91,127,204, 30,210,212, 44,235,163, 72,251,248, 26,226, 52,156,166,186, 33,228,170,110,175,150, 34, 30,185, - 66,120,124, 89,215,214,158,152,250, 99, 47,172,255,227, 47, 70,107,215,186,219,166, 51, 23,250,103,107,116,243, 12, 33, 89,133, -210, 28, 4,192,147, 16, 34, 1,224, 61,112,224,192, 11,125,250,244,129,191,191, 63,206,158, 61,235, 14, 32, 62, 47,255,151, 2, -176, 71,238,110,196,146, 34,199,243, 68, 34,209,145,107,215,174,213,114,114,114,194,181,107,215,160, 82,169, 48,110,220, 56,237, -196,137, 19, 69,195,135, 15, 39, 25, 25, 25, 5, 74, 86, 64, 64, 64, 74, 73, 36, 11, 0, 98, 98, 98, 46,186,185,185,181,104,211, -166, 77,175,202,238, 53,204,194,179, 50, 19, 77, 76,164,178, 59,254, 55, 69,143, 31,222,251, 45, 38, 38,230, 81,241,249,121,221, -224,252, 52,194, 8, 35,140, 48,162,100,248,248,248,248,159, 63,127, 30, 62, 62, 62,254,101,244, 37,221,190,144, 12,229,255, 78, -232,231,231,247,194,207,207,239, 19,197,235, 43,149,182,162, 83,135,231, 41,165,241,133, 21,173,114,129,205,136,250,252, 6, 56, -174, 60, 55,251,217,119,150,150,150,140, 76, 38,251,132,104,113, 6,218, 76, 61,117, 24,225,227, 7, 23, 40, 89,249,202, 22, 58, - 15,255, 42,162,197,113, 92, 0,128, 79, 18, 33,183,175, 49,232,200,208,142, 45, 61, 43, 59,243,244,199, 54, 34, 70,201,168, 23, -189,214,169, 95,101,209, 30, 47,139, 89,100, 93, 96,147,209, 67, 42,151,125,144, 41,228, 69, 73, 86, 36, 0, 40, 28,170,247,217, - 55,200,187,109,189, 26, 85,121,204,209,117,136, 85,234,179,125, 67,117,186,240, 28,122,178,132, 60, 92,244,221,119,223, 45,178, -182,182,150,110,218,180,201,220,205,205, 13, 12,195,104,139,146, 44,185,125,141, 65, 71,135,119,110, 89,221,193,146,167,255,115, - 51,162, 85,172,114, 99,184,126,223, 54, 3, 72,150,141,185,226,242,182,149,227,101, 38, 18, 33,212,106, 53, 86,109,253, 19, 87, -238,133,116, 75, 10, 62,117, 25,192,229,175,168,147,163,187,117,235,182,126,233,210,165,208,235,245, 24, 53,106, 20,222,189,123, -119,229,245,235,215, 27, 93, 93, 93,103,206,158, 61,219,201,193,193, 1,253,251,247, 23, 1, 24, 94,130,141, 95, 14, 29, 58,212, -173, 94,189,122,240,247,247, 71,122,122, 58, 28, 29, 29, 49,113,226, 68,177,159,159,223,190,204,204,204,126, 43, 87,174,148,190, -127,255,190, 84, 37,235,147,122,205,178,203,183,175, 31, 63,179,113,179, 86,188,183,111,195,152,168, 38, 94,188,155,215,206,222, -182,182,182,222,247, 73,126,142,232, 82,238,252, 52,194, 8, 35,140, 48,226,155,225, 60, 0,159,162, 42, 87, 81, 18,150,175, 88, - 21, 62, 46,122,125,222,121,205,215, 38,168,168,162,149, 71,188, 62, 93,163, 85,120, 17,124, 89,224,114,146, 12, 34, 79,159,177, -213,154, 68, 63,182, 49, 4,243,188,120, 16,201, 45,213,221,151, 94,189, 81,210,181,114,185,220, 96, 69,139,211,168,203, 34, 78, -229, 34, 90,121,107,180, 46, 81, 74, 63, 33, 90, 22, 14, 53,188, 22,204,153,178,161, 85,159,206,188,132, 31,155, 35, 61, 91,163, -153,253,146,225, 98,148,165,147,172,220, 94, 92, 31, 97, 34, 87, 4, 75,229,159,172,203,138, 2, 0,153,125,181, 38,190,211, 38, -109,109, 55,168, 59, 73, 26,215, 10,105,233, 42,205,204, 23, 12,137, 85,209,126, 47, 41,189, 89,156,185,235,215,175,111, 7,176, -189,109,219,182, 9,114,185, 28,217,217,217,159,149, 65,126,122, 91,246,233,204, 75, 24,221, 20,169, 57, 58,205,236, 23, 12,226, - 84,220,145,178, 72,150,173,133,233,229,109, 43,198,155,196,197, 68, 66, 36, 18, 65,161, 80,224,234,221, 96, 36,133,156,254, 26, -130, 5, 62,159,191,120,222,188,121,139, 38, 76,152,128,148,148, 20,156, 61,123, 22, 93,187,118,197,225,195,135,221, 46, 92,184, -176,222,219,219, 27,124, 62, 31,231,206,157,131, 94,175,127, 83, 66,121,246, 26, 51,102,204,204, 62,125,250,224,209,163, 71,136, -143,143,255, 68,201, 74, 79, 79, 31,184,117,235,214, 62, 17, 17, 17,101, 42, 89, 69,208,164, 82,213, 6,162,185, 11,215, 66,163, - 76, 20, 36,197, 62,240,191,126,149,119, 63, 53, 53,213, 4, 64,198,151,230,167, 17, 70, 24, 97,132, 17, 6,171, 90, 37,113,145, -164, 60, 18,149, 84,220,113, 33,130, 85,220, 49, 41,162,130,105,139,156, 15,252, 39,239,201, 32, 69, 75, 96, 95, 27, 76, 66, 72, - 33,162,149,248,201,121,169,169,149, 65, 83,135,122, 6,130,109,187, 11,252,104, 73, 83, 82, 82,164, 54, 54, 54,234,194, 4,193, -196,196, 4, 78, 78, 78, 72, 75, 75,195,142, 29, 59, 0,160,172, 69,209,140, 89,159,161,104, 50,104, 20, 30,187,136, 65,245,186, - 2,101,107,219,136, 17,159,144, 45,145, 72,148,191, 54,172,172, 78,247, 33, 33, 36, 18,192,125, 74, 41,109, 88,189,202, 50,169, - 92, 62,162, 81,221,170, 54, 83,199,143, 22, 70, 36,106,112,163,213,220,244, 63,127,153,163,136,166,138, 9, 31,104,250,189, 50, -236,133,127,255,251,129,162, 74, 86, 76,131,234, 85,230, 75, 77,164, 63, 54,171, 93,221,193,119,250,120, 97, 68,130,134,220,104, - 50, 59,243,196,175,179, 77,222,195,116,102, 52, 77,187,105, 64,241, 44,234,218,181,235, 34, 74, 41,229, 56,110, 33, 0, 20, 78, -239,244,137, 63, 10,195, 63,170,113,189,213,252,180, 19,191,204, 49,141, 70,233,233,181,173,219,171,165,189,165,217,229,109, 43, - 39,152,196,199,126,128, 68, 34,129,169,169, 41,162, 19, 50, 32, 20,240, 85, 95, 83,217, 8, 33, 18, 47, 47,175, 57,227,199,143, - 71,112,112, 48,198,141, 27, 23, 31, 21, 21,117,242,232,209,163,227,126,254,249,103, 65,167, 78,157, 16, 31, 31,143,213,171, 87, -235,239,222,189,187, 18,192,234, 98,235,163, 64, 48,122,217,178,101, 52, 46, 46,142,188,127,255, 30,142,142,142,152, 52,105,146, -120,229,202,149, 5,107,178,202,163,100,229, 35, 38, 38,198,223,189,170, 43,122, 92,220, 0, 70,175,241, 79, 79,137,186,253, 42, - 60,205,223, 74, 44,158,209,170, 97,221, 47,202, 79, 35,140, 48,194, 8, 35,190, 9, 30,151,113,252, 47, 69,113, 83,135,134, 18, -173, 55,155,231,143,116, 31, 57, 97, 22,100,110, 45,161, 9, 61, 5, 46, 59,161, 64,209,146, 42, 44, 97,229,234,129,244, 28, 13, -142, 95,127, 10, 0,111,202,147,176,172,172, 44, 52,108,216, 16, 91,134, 87,111,167,206, 74,145,202, 0,104, 36,102,234,211,226, -214, 55, 46, 92,184,160,228, 56,238, 8,128, 11,101,152, 89, 92,171, 86,173,223,214,174, 93, 43,246, 24, 52, 18,217, 15,238, 20, - 85,167, 32,147,201, 32,145, 72, 16, 20, 20,132, 27, 55,110,104, 1, 44, 46, 35,195, 30, 50, 12, 19,120,228,200,145, 24,247, 42, - 46,157,219, 54,110, 50,121,222, 92, 95,211,151,119,174, 96,225,202,223,184,106,141, 58,101,172, 58,124, 58, 43, 67,225,218, 94, - 25,247,234,185, 1,183, 26, 88,132,100,197,121, 84,118,109,215,188, 65,253, 89, 11, 23,206, 55,123,113,231, 42,126,254,117, 27, -117,175,215, 33,227,215, 19,103, 50,147, 77, 42,126,167, 74, 8,125,100, 72, 30,222,186,117,107, 59,128,237,249,199, 69,211,235, -187,116, 35, 87,189,113,231,180, 85,135, 79,228,100,154,186,118, 40, 45,189,118,158,189, 91, 84,112,180,186,188,121,249, 79, 38, - 31, 99,163, 32,145, 72,160, 80, 40, 16, 21,159,142, 69, 27,142,229,232, 56,174,243, 87,214, 69,137,169,169,169, 68,167,211, 97, -203,150, 45,136,138,138,106, 78, 41,141, 34,132,108, 27, 48, 96,192,166, 58,117,234,212,124,241,226,197,155,236,236,236, 9,148, -210, 87, 37, 25,177,176,176,104,110,107,107, 75,238,223,191,143,159,126,250, 73, 59,105,210, 36,209,176, 97,195, 72, 90, 90,218, -151, 42, 89, 0, 0, 23, 23, 23,175,239,125, 90,160,101,199,113,254, 90,117,250,237,136, 87,251,252,121,244,158,180, 97,253,186, - 95,148,159, 70, 24, 97,132, 17, 70,252,111,160,180,197,240,165, 70,163,246, 2, 4,213,173, 49,182,150,179,232,227,254, 95, 38, -209,172,240, 0,170,122,180,157,102,158,250,145,158, 95, 61,140, 94,216, 60,149,142,243,169, 69,107,218,145,143,213,173, 49,214, - 11, 16,148, 22,221,187,107, 13,232, 59, 86, 5,237, 88, 21,212,167, 58,244, 0,230, 53,104,208,224,244,196, 38,160,244,229, 33, - 74, 95, 30,162, 19,155,128, 2,248, 9,128,194,208,136,225, 0, 28, 1,236,104,216,176, 33,115,243,230, 77,250,186, 95, 7,250, -172,166, 13,157, 48, 97, 2,253,249,231,159,233,224,193,131,169,173,173, 45,131,220,249, 82,199,178,108,246,232,209,195,133, 82, -138, 10, 21, 42, 88, 52,242,168,246, 49,232,250, 89,122,123,255, 38,250,199,196,222,180,105, 29,143,100,135,154,109, 2,101,142, - 53,234, 27, 26,217,220,193,193, 97, 46,165,180, 51,165,212,145, 82, 10,119,119,107, 69,131,154,213,226, 2,175,157,165,119, 14, -252, 70,255,152,216,155, 54,171,235,153,226,226,225,253, 74,106, 87,179,201,151, 70, 75, 47, 54,189,181,107, 38,219, 87,107,241, -188,164,244, 22,182, 89,185, 73,255, 51, 49,113, 9,244,225,195,135,244,194,133, 11,244,206,157, 59,116,255,209, 51,212,181,113, -191,108,155, 58, 61, 91,126,109, 84,119, 0,230, 62, 62, 62,244,205,155, 55,180, 75,151, 46, 20,128,249,151,216, 4,112, 58, 34, - 34,130,134,132,132,208,121,243,230, 81, 0,123,199,143, 31,175,202,200,200,160, 29, 58,116,136, 2,192, 67,145,186,104,104, 58, -171, 84,114, 94,213,171,123,235,197, 19,127,234,227,245,181,249,249, 13,163,194, 27,109, 26,109, 26,109, 26,109,254,215,219,252, - 79,126,229,241,144, 49,133,222, 27,228,159, 43, 85,209,186,149,171, 6,108,175, 99, 79, 14,174, 92,189,121,198,150,237,123,103, -205,153, 60, 90,222,186, 85, 71, 4, 95,219,131, 19,231,142,230,168, 53,218,213, 34, 62,214, 6, 39,211, 50,253, 80,156,127, 69, -133,197,168, 71, 38, 86, 85, 81,224,131,233,109, 26, 64, 41,221, 86, 78, 38, 25, 15, 96, 12, 33,100,173,183,183,247,138, 31, 91, - 54,233, 61,177, 69, 59,232,245,122,236,223,191, 31, 31, 62,124, 56, 9, 96, 62,165,212, 32,197, 45, 56, 56, 56,185, 86,181,138, - 83,172,100,162, 89, 19, 6,247,178, 77,122,247, 18, 49,161,207, 0, 0, 26,141, 74, 31, 31,230, 95,175, 60,233,147,201,100, 15, -109,109,109, 95,219,218,218,166,177,154,236, 49, 82,129,217,194,113, 3,191,183, 75,137,120,133,232, 23,185, 51,163, 26,181, 82, - 23, 29,118,163,230,151, 48,233,138, 21, 43, 74,228, 66,140, 45, 54,189, 90,181,254,227,155,208,250,134,216, 81,106,180, 43,151, -172,223,255,221,242, 89, 35, 36,102,102,102,120, 26,242, 22, 11,215, 29,206, 81,105,245,157,147,130, 78,221,251, 70,172, 31,122, -189,222,224,141, 14, 37, 96, 78,189,122,245,106,172, 88,177,194,125,248,240,225,248, 90, 37,171, 48,222,189,143,241,109,219,182, -173,231,219,215, 79,189,173,100,162,131, 95,147,159, 70, 24, 97,132, 17, 70,252,207,192,135, 82,186, 35,223, 67,124,222, 84,226, - 51, 67,166, 14,115,137, 71, 2, 85, 2, 88, 90,197,158,108,155,187, 98,253, 34, 30,217, 48,130,163,116, 15,195,195,146,240,100, -154,244,149, 29,175,210,167, 38, 97,190,235, 57, 88, 0, 0, 66, 1,152,175,176,245, 6, 64, 31, 66, 72,227,157,247, 30, 45,200, -251,122, 57,165,180, 92,115,185,166, 2,132,180,242,172,226,220,186, 65, 45, 41,159, 85, 33, 38,244, 29, 82,115,212,184,250,226, - 67, 58,143,242,246,148, 55, 93,225,225,225,183, 0,160,118,181,138,161,173, 61,171,186,182,105, 88,203, 68, 72,180,136,121,249, - 20, 25, 42, 45,174,188,248,144, 1, 66,190,120, 65,245,183, 74,239,199,160,211,143,109,235,246,234, 64, 8,185, 54,111,226, 32, -201,162,117, 71,190, 41,201, 2,160,140,141,141, 77, 81, 42,149,214,113,113,113, 90,124,161,147, 56, 74,233, 91, 66, 72,157,169, - 83,167, 46,157, 57,115,230,172, 95,126,249, 69,244, 37,107,178, 74, 66, 90,236,135, 83,109,106,125,187,242, 55,194, 8, 35,140, - 48,226,191, 31,249,235,180,138,174,215, 42,151,123,135,240, 4,154, 4, 96, 66,213,170,100,250,187,119, 84,251,173, 18, 87,156, -210,245,149,228,237, 49,128,238, 95,108,128, 71,178, 30,188,249,144,253,240,205,135,108,112,148,114,148,106,120, 60, 68,231,232, -116, 43,195,194, 99, 46,127, 69, 41,176,143,223, 70,169,158,188,139, 86, 83,142,163, 28,165, 90, 66,240, 81,175,231, 86,134,132, - 71,158,249,119, 72,111, 82,208,169,123, 14,158,189, 91,223,123, 24, 50, 61, 39, 71,247, 91,210,203, 83, 1,223,176, 92,244,132, -144, 33,205,155, 55, 31,201,178,236, 54, 74,169,254, 43,108,105, 1,204, 33,132,156, 12, 14, 14, 62, 22, 16, 16, 16,255, 45, 72, -214, 63, 90,254, 70, 24, 97,132, 17, 70,252, 87,226,139,131, 74,151,132,111, 73,178,254, 29, 17,252, 38,162,225, 63, 97, 55,228, - 77, 68,237,255,132,244,126,124,121,242, 9,128,129,255, 80,101,188, 2,224,202,183, 36,213,132,144, 74, 0,248,223,132,100,253, -131,229,111,132, 17, 70, 24, 97,196,127, 39,190, 58,214,161, 17, 70,252,155,143, 36, 40, 0,198,152, 19, 70, 24, 97,132, 17, 70, -252,139,250,161, 18, 21, 45, 2,160, 67, 9, 63,186, 86, 14, 38,215,225, 11, 18,117,205,104,211,104,211,104,211,104,211,104,211, -104,211,104,243,127,203,230,127, 35, 8, 33,142,200,245, 86, 95,224,181,190,128,124,253,195,219, 29,141, 91, 95,141, 54,141, 54, -141, 54,141, 54,141, 54,141, 54,141, 54,255,219,221, 59,140, 41,252, 94,248,197, 51, 10,126, 70, 24, 97,132, 17, 70,252,131, 35, -125, 73, 94, 32,249, 47, 58,111,132, 17,255, 65,117,189, 96,215, 97,225, 53, 91,130, 47, 48, 84, 45, 79, 9,123,251, 15, 38,118, -162,163,163,227,152,186,117,235,122,136, 68, 34, 94, 86, 86,214,146, 27, 55,110, 44, 46,122, 93,155, 90,194, 39,124, 30, 92, 10, -253, 18, 32,124,128,199, 3, 75, 17,115, 59, 80,217,200, 88,244,255,214,149,210, 77,102,102,251, 23,225,241,197, 44,163, 3,171, -215, 1,248, 59, 28, 19,199, 49, 31, 24,173,186, 83, 73,191,119,172,223,219,149, 97,233, 42,128,219, 74,192, 27, 71,193,253, 78, - 40,111, 28,229, 97, 43,225,240, 19, 4,250,213, 96,132, 51, 5, 34,193,252,184,167,199,163,255, 27,242,236,207, 63,255,228,127, -205,239,251,246,237, 91,108, 0, 81,103,103,231,115, 38, 38, 38, 85, 75,250, 93, 78, 78, 78,124, 92, 92,156,247,127,121,125,108, - 3, 96, 51,128, 90, 69, 78,189, 2, 48,133, 82,122,253,107,255,163, 45, 33, 2,123, 96,172, 8,152, 13, 0, 58,224,215, 4, 96, -251,173,111,180,145,227, 91,192,206,206,238,182, 64, 32,112,207,201,201,201,201,204,204,172, 98,102,102, 22, 46,151,203,229, 12, -195,188, 73, 76, 76,108, 83,206, 60, 29,143,188, 80, 90,132,144, 89,148,210,173,229, 57,111,132, 17,255, 41,248,170, 93,135,132, -144,234, 0,188,242, 94,109, 26, 55,110,108,159,147,147, 3, 66, 72, 2,128,219, 0,252, 1,248, 83, 74,195,190, 69, 98,249,124, -254,154,141, 27, 55,206,152, 52,105, 82, 65, 48,232,160,160,160,226,175,229,193,229,230,217,107,118,143,131,195,208,184, 67,223, - 60,162,197, 3,114,226,225,221,177,201,151, 54,182,166,150,150,150, 75, 8, 33,253,120, 60, 94,153,157, 26,199,113, 44,165,244, -120, 90, 90,218, 34, 74,105, 86,121,254, 75, 33,151,234, 25,150, 45,246, 63, 4,124, 62,155,157,163, 46,209,237,133,181,181,117, - 0,143,199,171, 92, 56, 96,118, 94,250,139,253, 92,248,152, 97,152,152,164,164,164, 70, 6,228,133,148, 39, 16, 77, 33, 68,212, - 17, 60,174, 58, 64, 64,192, 11,227, 88,237, 85,142,209,109,164,148,170,191,134,100, 57, 86,168,114,103,218,252, 85, 46, 33,161, -175, 48,111,226, 96,252,178,121, 47,230, 78, 25,137,141, 59, 14, 99,202,152, 65,240,244,172, 85,170, 13,150,146, 37, 11,167, 12, -241, 94,177,241, 80,227,249, 83, 6,203, 87,108, 60,212,120,254,212,193,138, 21,155, 14, 53,154, 63,117,136, 98,249,166,131,141, - 22, 76, 29, 98,182, 98,211, 33, 29,128, 81, 95,146,206,193,213,157,115, 8,195, 20, 59,218,166, 2,129,230, 80, 88,172,252, 95, -241, 80, 15, 31, 62,188,174, 74,165,122, 58,184, 99,131, 85,245,171, 59,199, 22,119, 77,202,199, 88,231,240,215,207,124,133, 34, - 89,195,239,125,247, 6,149,102, 79, 34,145, 84,126,245,234,149, 59,199,113, 96, 89, 22, 12,195, 20,188,107,181, 90,180,105,211, -230,155,108,156, 33,132,116, 7,176, 36,247, 97,133, 31,165,244,216, 87,216, 82, 8, 4,130,105, 98,177,216,139, 97, 24, 15, 0, - 16, 10,133,161, 26,141,198,159, 97,152,245,148,210,236,114,154,220, 16, 27, 27,235,169, 80, 40,160,211,233, 10, 2,208,243,249, -252,154,174,174,174, 91, 0,184,127,237,253,219, 3, 99, 91,180,106,181,113,216,140, 25,124,213,237,219,216,184,123,247, 6,100, -102, 2,192,150,178,126, 43,145, 72, 46,243,120, 60,183,242,252, 31,199,113, 31, 52, 26, 77,167,242,252, 70, 32, 16,184,199,197, -197,217, 57, 57, 57, 1, 0,228,114,185,188,240,113,121,148, 44, 0,171, 41,165, 50, 0,224,241,120, 27, 91,180,104,209,156, 16, -194, 0,160, 28,199,241, 8, 33,131, 56,142, 19,228, 93,191,154, 16,178,155, 82,170, 49,118,219, 70,252, 39,170, 89, 37,145, 45, - 65, 41, 63,186, 0,192,171,113,227,198,178,129, 3, 7,194,203,203, 11,238,238,238,144, 74,165,185,141,120, 74,138,253,243,231, -207,251,223,190,125,187,255,217,179,103, 65, 8, 81, 1,184, 75, 41, 45,246,161,238,208,189,245, 36,169, 66,178, 9, 0,146, 98, - 82,226, 99,222, 39,110,138,143,143, 95, 77, 11, 69,163, 38,132, 84, 25, 54,108,216,244,201,147, 39,227,220,185,115, 56,124,248, - 48, 52, 26, 13,178,178,178,112,227,198,141,226, 19,170, 76, 68,218,141, 85,128, 60, 2,136,242, 7, 76,236, 0,185,253, 23,103, -150,165,165,229,146, 41, 83,166, 76,245,244,244, 44,240, 98,174,215,235,193, 48, 12,244,122, 61,210,210,210, 48,125,250,244,124, - 6, 11,142,227,112,241,226,197, 73, 99,198,140, 1,128,105,197,217,108,222,200,245, 9,143,240, 92,242,181, 26,202,178, 49,247, -159, 69, 55, 98, 88,150,175, 86,235,138,141, 84, 46,149,138, 74, 37,121, 66,161,208,229,229, 95,127,217,241,196, 98, 80,150, 5, - 56, 14,148,227, 0, 20,122,209,220,239, 40,203,129,234, 89,112, 12, 7, 70,165, 65,147,241,227, 13,169, 52, 45,132, 98,217,225, - 33, 63,206,112,104,218,172,153,176, 98, 5, 39, 48, 44,135,119, 17, 49, 14, 79,159, 60,104,121,124,223,150,113,132,144, 65,148, -210, 47,242,179, 37, 54, 49,187,242,219,239, 59, 93, 30, 63, 15,193,245,155,183,113,237,134, 63, 0,224,242,205, 92,115, 60, 30, -175,172,244, 89, 90,187,123,215,157, 52,178,167,124,249,218, 93,146, 73, 35,123, 10,254,126,223, 41,153, 52,242,123,193,138,245, - 59, 37,147, 70,126, 47, 92,246,235,111,245, 9, 33,150,148,210,180,146,236,149, 84, 70,132, 97, 36, 7,195, 19,248, 0,144,180, -109, 27,244,137,137,112, 90,180, 8, 0, 48,164,138,189,193,211, 29,182,182,182, 79,132, 66,161, 75, 89,215,233,245,250, 50, 73, -240,240,225,195,235,169, 84,170, 39, 12,195, 80,129, 64,224, 59,184,215,119,167, 59,183,174,151, 82,248,154,160,160, 64,235,149, - 43,255,234,121,236,105, 22,237,223,208,244,233,185, 53,195, 27,117,155,185, 55,176,148, 14,153,167,209,104,240,230,205, 27, 20, - 14,242, 94,152,215,126, 97,227,195, 3,176,209,218,218,186,105, 74, 74,202, 16, 0,243, 50, 51, 51,235,242,249,124, 88, 89, 89, -205, 35,132,188, 51, 55, 55,223,149,145,145, 17,144,167, 26,113, 6,218,109, 99,102,102,182,255,212,169, 83,150, 13, 26, 52,224, - 37, 39, 39,163, 82,165, 74, 72, 77, 77,109,114,251,246,237,134,163, 70,141, 26, 69, 8,249,129, 82,122,187, 28,201,173, 97, 98, - 98, 66,135, 13, 27, 70, 88,246,239,219,253,227,143, 63,208,169, 54, 83,245,167,206,114,165, 90, 75, 51,174,191, 49,255, 73, 36, - 18,221,141,140,140,204, 40,111,126,136,128,217,195,102,204,224, 43, 34, 35,161, 8, 12,196,144,204, 76,193, 47,185,234, 86,153, - 68,139,199,227,185,237, 63,188,199, 93, 44, 22,131, 97,152, 2, 50,152,223, 70,233,245,122,232,116, 58,232,245,122,176, 44, 11, -189, 78, 15,191,229,191,126,113, 91,104, 98, 98, 98,226,228,228,148, 96, 98, 98, 98,242, 45, 58, 34,137, 68, 34,216,183,111,223, - 32,177, 88, 12, 0,208,106,181,168, 93,187, 54, 49,118,209, 70,252, 55,145,173,226, 84,174,210, 70,169, 93, 50, 51, 51,193,178, - 44, 76, 77, 77,193,231,243,139, 42, 42,232,216,177, 35,218,180,105,131,129, 3, 7,226,229,203,151,178,129, 3, 7,118, 44, 81, - 25,152,209, 13, 21,220,237,243, 58, 19,206,241,222,249,231,171,254, 88,246,167, 45,128, 25,133, 46, 27, 53,118,236, 88,146,146, -146,130,126,253,250,221,214,104, 52, 61, 40,165,153, 37, 42, 26, 28, 98,188, 7, 14, 1, 71,137,108,253,195,157, 68,171, 86, 81, - 30,143,167,202,159, 58,252,194,140,234,231,228,228,132, 35, 71,142, 64,171,253,220, 93,152,153,153, 25, 94,188,120, 81, 88,129, - 67,179,102,205,248,132,144,126, 37, 17, 45, 66,120, 46,247, 30, 71,218,229, 31,119,235, 88, 75,212,188,145, 91,130,173,181, 41, - 5, 64,230,207,159, 95, 64,220, 0, 96,201,146, 37,134,164, 19, 60,161, 16, 73,254,254,127, 55,196, 2, 30,120, 34, 2, 34, 4, -120,130,220, 89, 84, 80,128,178, 0,199, 0,156, 30,144, 58, 86, 48,196,118, 19,103, 87,247,115, 43,215,109,181,208,232, 41,142, -156,185,142,136,136,247,224,243,120,168, 82,213, 29,223,181,109, 45,108,216,184,121,133, 95, 23,207, 56, 75, 8,233, 66, 41,125, - 84,238,140,230,168,180,170,171, 13,118,253,241, 20,182,150, 10,244,235,217, 21, 50,169, 4,191,108,222,131,229,115, 39,194,189, -138, 27,182,111, 88, 81,226,207,205,205,205,151, 54,168, 83,179,202,158, 99,151,224,213,166,133, 96,239,177,203,104,219,166,165, - 96,207,177, 75,104,235,213, 90,176,247,216, 37,180,109,211, 74,184,247,216, 37, 52,107, 84,167,106, 64, 74,208, 82, 0, 19, 75, -190,231, 34,101,244, 93,110, 25,185, 11, 68, 5, 29, 65,228,184,113, 0, 80, 64,180,202, 3,161, 80,232, 18, 23, 23,103, 87,214, -117,101,169, 6,121, 74,214, 19,134, 97,144,152,152, 72,210,211,211,169,133,133, 69,207, 75,219,231,157,234,212,170, 94, 42, 0, - 4, 6, 6, 90,249,249,173,236,121,244, 73, 38, 84, 15,126, 35, 7,255,242,231,134,244,240,122,114,102,213,240,134,125,251,246, -125, 86,156, 93,141, 70, 19, 81,191,126,125,154,247,217, 89, 34,145,136,138,212, 9, 39,119,119,247,207, 84,107, 3,166, 20, 55, -222,191,127,127,162,167,167, 39,106,214,172, 25,208,180,105, 83, 51,185, 92,142, 75,151, 46,193,195,195,163,150,153,153,217,195, -227,199,143, 11,231,204,153, 83,111,247,238,221, 0, 48,201,128,250,217,193,219,219,251,200,185,115,231,164, 34,145, 8, 42,149, - 10, 47, 94,188,128,185,185, 57,196, 98, 49,190,255,254,123,126,203,150, 45,173,219,182,109,123, 34,111, 48, 96,240, 14, 40,181, - 90, 77,231,205,155, 7, 19, 19, 19,152,152,152, 64, 46,151, 67, 46,151, 67, 33, 5,217, 54,197, 85, 54,121, 71,186,108,218,162, -109,171,246,111, 93,124,211,213,213,245,231,168,168,168,244,242,214, 5,213,237,219, 80, 4, 6, 2,133,158, 93, 67, 97, 46,183, -130,175,175,111, 89,138, 20, 68, 34, 17, 90,180,104, 81,166, 61,107,107,235,147, 2,129,192,190, 72,231, 32,245,245,245,101,195, -194,194,228, 60, 30, 79,206,113, 28,124,125,125, 89,134, 97,164,246,246,246, 1, 28,199, 37, 36, 37, 37,245, 46,203, 54,165, 84, - 67, 8,153,197,227,241, 54, 74, 36, 18, 65,197,138, 21, 63, 44, 92,184,240,126,158,154, 9, 74, 41,175, 98,197,138, 77,100, 50, -153,155, 70,163, 97, 0,204, 50,170, 89, 70,148,130,134,185,162,112, 1,180, 0,196,249, 2,126,110,111, 7,155, 34,223, 3, 64, -114,222, 64,209,190,132,227, 20, 0, 47, 1,212, 0, 96,151,119,238, 49,128,212,242, 38,176, 84, 69,139, 16, 66, 11, 93, 88,208, -177,152,154,154,226,241,227,199, 32,132,192,212,212, 20,102,102,102, 48, 55, 55, 71,102,102, 38, 94,190,124,137, 87,175, 94, 33, - 50, 50, 18,132, 16, 84,169, 82, 5,249, 15, 80, 33, 91, 5, 13,220,161,181,231, 32, 85, 72, 64, 8,208,160, 93, 93,212,109, 83, - 27,141, 31,133, 79,113,114,114,218, 17, 23, 23,247,134, 16, 34,168, 93,187,246,168,102,205,154, 97,221,186,117,208,104, 52,235, -138, 35, 89,133,109,222,126,161,111,148,215, 57,205, 60,112,233,157,201,208,206, 85,149,113,113,113,107,190, 32,115, 62,105,136, -147,147,147, 13,142,197,199,113, 28,210,210,210, 74,181, 89, 84, 33, 88,191,241, 55,139,172,140, 4, 44,251,229, 0,244,122, 61, -102,204,152, 1,142,227, 10, 94,233,233,233, 6,165,147,178, 69, 68, 6, 94,238,139,240, 0, 34, 0, 92, 7,228,242,138,168, 35, -191,129, 80,128,176, 0,138,220, 87, 81,155,132, 16, 41, 95, 36, 59,186,248,151, 77, 22,207, 94,197,224,204,245,103,208,101,198, - 34, 62,240, 20, 0,160, 74,139, 65, 56,166,225,163,105,221,170,152, 58,255, 87,203, 5, 83,127, 56, 74, 8,169, 89,120, 26,209, -144,142,141, 82, 22,203,150, 46,197,142, 77,235,240,235,186, 77,200,204, 72,135, 80,104, 3, 0, 96, 24, 22,108,145,123,251,236, -222, 41,237,188, 96,230, 88,178,113,231, 9,212,174,230,128,179, 87, 3,208,168,150, 27, 46,222,120,132,102,117, 42,225,178,255, - 83, 52,171, 91, 25,254, 15, 94, 96,198,132, 97,228,222,197,189,157,203, 83, 70, 27, 54,252,102,145,149,153,128,115, 43,246, 33, -113,203, 22,124,152, 56, 17, 77,242,174,121, 68, 8, 68, 46, 46,128,168,236, 50, 42,138,208,208, 80,104, 52,154,226, 70,251,240, -240,240, 40,179,220, 85, 42,213, 83,134, 97,104, 66, 66, 2, 73, 72, 72,128, 92, 46, 39, 47, 94,132,176,181,106,213,238, 69, 95, -253,185, 19, 0,252,252, 86,246, 58,246, 52, 19,202,128, 77, 80,221,223, 12, 81,165, 32,222,142, 37, 99,117, 99, 22,109,127, 90, -168,147,251, 36,157,241,241,241, 93,242, 63, 87,169, 82,229, 85, 88, 88, 88,141,252,169,230,188, 41, 68, 17,195, 48,238,249,211, -137, 12,195, 64,163,209,160, 67,135, 14,252,210,238,221,210,210,178,153,135,135, 7,158, 61,123,134, 77,155, 54, 89,121,123,123, -227,237,219,183, 32,132, 96,229,202,149,196,211,211, 83,152,156,156,140, 78,157, 58,225,228,201,147, 45,202,202, 79, 66,136,169, - 92, 46,223,125,246,236, 89, 41,143,199, 67, 86, 86, 22, 56,142, 67,203,150, 45,193,227,241, 16, 18, 18,130,249,243,231,227,228, -201,147, 56,125,250,180,172, 97,195,134,187, 9, 33, 30,133,167,245, 75, 41, 35,170, 86,171,169, 68, 34,129, 68, 34,129, 84, 42, -133, 84, 42,133, 88, 44, 70,182, 26, 24,179,254,131,134, 47,181,225,106,213,111, 85,117,196,228,149,188, 53, 11, 71,222, 0,112, -198,208, 58, 15,228,174,201,218,184,103,207,166, 33, 25, 25, 60, 0,216, 69, 8,167,163,244, 87, 67,158,119, 0,200, 86,103,192, -173,138, 11, 78, 28, 61,141, 62, 3,122, 22, 75,178,132, 66, 17, 68, 66, 33,204,172,228,101,218, 20,137, 68,246,175, 94,189,178, - 22, 10,133,160,148,130,101, 89,232,116,186,132, 5, 11, 22,216,250,248,248,152, 94,188,120,145,231,227,227,195, 89, 90, 90,230, - 60,122,244, 40,145, 97, 24,235,214,173, 91, 27, 92,231, 41,165, 91,235,215,175,223,224,212,169, 83, 35,125,125,125,159,204,156, - 57,115, 89,225,243,171, 87,175, 94,122,225,194, 5,183, 94,189,122,237,127,254,252,249,214,242,180, 33, 95,219,206, 27,109,254, -251,217, 60,127,254,124, 65, 67,236,227,227, 83, 84,237,180, 39,132,156, 43,244,255,221,242,143,125,125,125,231,249,249,249,189, - 32,132,156, 43,252,125,254,117,121,109,199,185,226,142,243,126,107, 53,119,238,220,218,171, 86,173, 90,217,188,121,243, 35, 1, - 1, 1,239,203, 75,180,202, 92,163,149, 79,174, 10, 19,174, 34, 6,144,153,153,137,204,204, 76, 68, 71, 71, 99,219,182,109,121, - 15,180, 16, 2,129, 0, 2,129,160, 96, 61, 67, 73,184,118,246,206,102, 0,155, 27, 54,108, 40, 12,190,127,252,226,236, 29,147, -219, 55,234,208,128,255,244,122,112, 95, 0,203, 1,116, 25, 54,108,152, 13, 0,236,219,183, 47, 25,192,197,127, 5,101,166,148, - 30,127,243,230,205, 84, 71, 71,199,130, 53, 42,133,167, 15, 25,134,129, 84, 42, 69,254, 90, 22,181, 90,141,109,219,182, 49,148, -210,227,165,216, 68,216,139, 27,120,243,226,102,238,239, 56, 14, 28,251,247,239, 23, 47, 94, 92,120,139, 40,198,229, 41, 39,101, -146,188,226,242,156, 22,121, 47,242,253,103,228,236,179,233, 9,209,228,190, 63, 76,116,228,136, 0,127,221,120, 14,161, 80, 8, -174,144,154, 41,228,231,142,150, 95,188,141,131,147,125, 45,244, 24, 52,214,225,212,254,223, 38, 3,248,165,188,121, 93,179,110, -115, 76,153, 58, 21, 59,119,236,192,252, 69, 75, 11, 88, 58,195,178, 96,202, 76, 39,143,215,178,145, 39,178, 83, 98,192,231,243, -209,162,126, 85,240,249,124,180,110, 84, 29,124, 62, 31,173, 26,215,128, 64, 32, 64,219,102,158,168, 86,173, 26, 4, 2, 1,175, -140,114, 71,216,139,235,120,243,226, 86, 33,210, 75, 65, 1,232,226,227, 63,187, 94, 31, 31, 15,234,106, 93,222,186,133, 81,163, - 70,165, 71, 71, 71,235,138,158,171, 80,161,130,232,246,237,219, 22, 37, 76,219, 21, 64, 38,147, 53, 20, 8, 4, 79, 83, 83, 83, - 57, 19, 19, 19, 30,199,177, 92,173, 90,181,249,151,182,207, 59,149,127,205,220,185,243, 78,245,111,104,214,235,192,241,115, 84, - 84,177, 21, 33, 66, 9,243,227,162,237, 34,161, 72,102,144,199,251,252,105,196,215,175, 95,163,172,244, 20, 30,152, 21,135,180, -180,180, 97, 30, 30, 30,183, 55,111,222,108, 69, 8,193,157, 59,119,192,231,243, 11, 94,225,225,225,224,241,120,152, 61,123,182, - 46, 51, 51,115,116, 89,105, 19, 8, 4, 83, 79,156, 56, 97, 46, 22,139,145,149,149, 85,240,220,240,249,124,188,122,245, 10,107, -214,172,193,176, 97,195, 16, 21, 21, 5, 39, 39, 39,204,152, 49, 67,177,106,213,170,169, 0,150, 26,112,235, 65, 90,173,182,145, -137,137, 9,164, 82, 41,242, 9, 23, 0, 92,121, 33, 12, 81, 42,149,117,108,108,108, 28,108,253,207,253,213,194,187, 71, 61,107, - 91,199,230,249, 68,203, 80,188, 3,118, 68,176,236,130, 46,167, 78,217,221, 59,117,138,123,112,246,108,140, 36, 43,107,187,193, -117, 72,207,195,135,240, 24, 52,108,216, 16, 79,159, 62, 69,195,134, 13, 11,147, 38,136,197, 98,136, 68, 34,136, 68, 34,216, 88, - 26,180,132,130,242,120, 60,220,187,119, 15, 44,203, 66,171,213, 66,171,213,194,211,211, 51,245,230,205,155, 10, 0, 8, 15, 15, -167, 67,135, 14, 77,127,248,240, 33,234,215, 47, 61,158,186,131,131,195,109, 62,159, 95,177,200,179,106,217,187,119,111,164,165, -165,117,237,221,187,119,171,188,239, 98,255,252,243,207,161, 0, 32, 22,139,193,227,241, 88, 24,241, 63,143,124,114, 85,152,112, - 21,211,230,116, 43,122, 76, 8, 57,231,231,231,215,173,232,119,133, 73, 85,113,159, 11,255,118,213,170, 85, 43, 11,217, 86,125, -193,108, 88,217,107,180, 8, 33,180,172, 70,179, 52,148, 69,180,242,241,244,233, 83,189,179,179,243,206, 55,207, 35,219, 87,173, - 91, 5, 50,185,228, 59, 66,200,102,137, 68, 50,253,135, 31,126,192,131, 7, 15, 16, 18, 18,242,199,215,134, 83,169, 83,167,206, -101,137, 68,226, 86,194, 52,201,135,224,224,224, 78, 37,116, 12,139,242,214,156,149,184, 24,190,240,122,177,194,139,225, 75,172, - 24, 28,133, 94,167, 71,142, 82,245,119, 39,158, 71,180,114,114,114, 48, 96,192,128, 79, 20,173,196,196, 68, 67, 10, 21,107,206, -156,193,213,227,199,209,181, 94, 61,156,124,244, 8,171,126, 24,140,154,110,206,160, 44, 1, 37, 64,212,225,223,144,146,153,141, - 67,215,239, 33, 53, 75,137, 33,173, 91,195,221,204,166,116,187, 66, 81,199, 38,205,154,139,174, 5,188,132, 80, 40, 0, 15, 28, -168, 94, 9, 39,143,182,224,243,120, 48,183,175, 4,145, 80, 8,161, 80,128,240,232,100,120,212,110, 44, 62, 39,150,118,252, 18, -162, 85,193,173, 18, 88,150,197,176, 97,195,112,228,200, 17, 88, 59,184,193,188, 66,109, 44, 95,183, 3, 93, 59,180, 46,243,254, -243, 71,240, 2,129, 0,124, 62,255,179,247,252,207,134,168,147,148,163,208, 21, 45, 35,142, 2,148,194,101,197, 10,184,172, 88, -129, 71,121,255,233,153,147, 3,149, 74, 5, 52,173, 85, 46,146,165,213,106, 17, 29, 29,173,139,143,143,183, 47,166,131, 74,208, -106,181,101, 18,155,189,123,247, 6, 13, 31, 62,188,145,149,149,213,147,160,192, 64,125,221,122,245,132, 23,183,205, 59,157, 63, -109, 8, 0,245,234,213, 75,157, 55,111,222,233,161,253,186,245,220,234, 59,144, 29,191,116,191, 64, 34,147, 53,234, 54,179,244, - 5,241,133,158,143,136,186,117,235, 82, 67,174, 85, 42,149, 31, 75, 41,163,238, 0,150, 52,104,208,192,204,219,219, 27,183,111, -223, 70,159, 62,125, 52, 58,157,238, 77, 94,163, 90,253,208,161, 67,226,151, 47, 95,194,214,214, 86,248,225,195,135,221,132,144, - 82, 23,200,139,197,226,182,141, 27, 55,230,105, 52,154,207, 72,214,170, 85,171, 48,104,208, 32, 84,175, 94, 29, 28,199, 33, 59, - 59, 27,222,222,222,194, 77,155, 54,181, 53,144,104, 77,169, 89,179,230, 26,228,238, 58, 44,220, 22,134, 2,152,149,167,118,127, -236,214,103,216,139,214, 29,122, 55,170, 88,173,182, 99, 89, 6,237,237,237,231,242,120,188,254, 28,199,241, 51, 51, 51,163,181, -132, 84,243,116,115,179,111,217,179, 39, 50,132, 66,254,198,235,215,121, 9, 89, 89, 10, 0, 6, 77, 65,170,245, 57,112,171,146, -187,212,175,207,128,158,120,250,244, 41,250, 14,236, 5,145, 72, 4,129, 64,152,251,108,138,114, 21, 45, 11, 27, 51,131,234,166, - 94,175, 47,104,195,243,215,121,233,116, 58,228, 47,205, 50, 49, 49, 41, 56,167,209,104, 74, 28,144,231,193,253,216,210,133,118, - 50, 51,115,176,122, 61,106,245,236, 91, 80,167, 31,238,218, 42, 3,199,201,210, 63, 68, 96,210,241,179, 66, 24, 97, 68, 9,170, - 86, 49,106, 86,225,118,229, 92, 81,178,245,165, 32,132,156,243,245,245,157, 7,128,250,250,250,206,203, 63,246,243,243, 83, 1, -136,253, 18,178, 85,156,202, 37,248, 22, 36, 43,127,122,161, 52,180,107,215,110,146,169,169,233, 38, 0,104,212,168, 17,162, 31, -196, 34,250, 65, 44, 60,106,212,106,217,160, 94,163,140, 65,131, 6,193,218,218, 26, 51,103,206,164, 0,254, 40,239,255,135,135, -189, 80, 0,160, 78, 78, 78, 51, 1,192,201,201,169,222,163, 71,143,108, 31, 63,126,140,198,141, 27,255, 45,221,235,116,104,213, -170, 85,105, 29, 98, 22,114,215, 90, 77,251,118, 42, 25, 7,157, 78, 7,165, 82, 5,173, 86, 7, 70,207,129, 97, 24, 52,172,101, -138,253, 59,124,115,191, 99,242,213,179, 92,213,204,197,193, 20, 13,235, 56,232,121, 60,162,122, 28, 24, 95,108,139,169,213,106, - 17,244,225, 3, 2, 35, 35, 1, 0, 61,252, 74, 95,248,186,255,250,109,120,122,122,150,149,218,170, 46, 78, 14,136,187, 26,148, -219,120,171,162,241,248,238, 49,152,154, 42, 0, 0,181,188,134, 64, 36,202, 37, 90, 57, 42, 29,108,106, 84, 0,161,180, 68,183, - 0,114, 43,199,203, 2,145,212,141,178, 28, 40,229, 64, 57, 22,148,114,144,152, 90,155, 76, 26, 55, 18, 28,199,162, 73,147, 38, - 32,124, 62, 88,189, 6,253,186,119, 68, 90, 70, 22,172, 45, 12,235, 36, 68, 34, 17,188,188,188,100, 37,157,127,251,246,173,170, - 48, 49, 43,189,140,244,200,201, 81, 65,163,209, 64,167,101,160,211, 51, 96, 43,139,176,108,193, 96, 48, 58, 6,202,129,205,161, -211, 51,224,166,246,130, 78,171, 71,148, 9,143, 87,207,211, 86,207, 3, 81, 61,123,153,104, 86, 22,209,202, 39, 7, 37,161,184, - 53,129, 37,144,173,192,225,195,135, 55,172, 91,175,222,211,254, 29,234,173, 13, 14,121, 17, 23, 28,242,226,179,235,220,170,215, -139, 24,191,234,200, 12,161, 72,214,208, 80,146, 5,124, 58,141,248,149,152,151,149,149, 85, 87,161, 80, 32, 44, 44, 12,124, 62, - 31,132,144,183,148,210,186, 0, 48,118,236,216,119, 2,129,160, 10,159,207,199,150, 45, 91,136, 64, 32,168,211,188,121,243,121, - 0,142,149, 50,160,243, 48, 53, 53,253, 68,205, 18,137, 68,240,245,245,197,208,161, 67, 11, 72,150, 72, 36,194,222,189,123,209, -168, 81, 35,104,181, 90, 15, 3,201,240, 99, 0,173, 13, 80,252, 72, 30, 57, 47,147,140, 50, 12, 51, 60,165,127,255,106,240,247, - 71,203, 42, 85, 60, 27, 54,108, 8,157,238,111, 65,179, 74,149, 42, 21,178,178,178, 62, 18, 66, 14, 2,216, 74, 41,125, 94, 42, - 41, 82,115,248, 16, 30,147, 63,104, 69,147, 38, 77, 10, 20,172,194,106,150, 72, 36,130, 76,172, 40, 23,209,226,184,220,118, 41, - 43, 43,139,231,239,239,111, 83,179,102, 77, 2, 0, 53,107,214, 36,207,159, 63,183, 50, 49, 49, 73,174, 90,181,106,153, 3, 96, -153,153, 57,246, 14, 31, 0, 0,248,185, 67,231,130,129,209,165, 37,243, 32, 20, 10,209,126,230,188,207,234, 61,199,113,124, 24, - 97, 36, 89,101,144,172,226, 20,173,175,235,155,255, 86,180,252,252,252, 94,248,249,249,125,166,142,149,211, 94,217,138,150, 33, - 83, 1,101, 61,172, 37, 97,221,186,117,168, 83,167, 78,169, 29,209,166, 77,155,112,224,192,129,117,148,210,240,242,254,127,183, -246, 13,106, 97,253,169, 23, 85,170,215, 34, 0,176,116,106,119, 94, 78, 78, 14,238,221,187, 7,115,115,115,188,125,107,152,219, - 47, 66,136,169,185,185,249, 18, 30,143,215,143, 95,116, 7, 64,241, 4,147,229, 56,238,120, 70, 70, 70,137,238, 29, 40, 5,116, -122, 6, 57, 74, 53,180, 90, 45,166,206,254,173,204,116,248, 1, 68,167,205, 18,120,181,105, 46, 43, 73,209,105, 82,167, 45, 38, -252,160,248,172,243,230,243, 0, 30, 15,168,223, 36, 87,113,121,254,232, 5, 56, 14, 96, 57,192,198,206, 18,127, 28, 94, 91,106, - 22, 48, 44,151, 55, 58,102,145,173, 97,225,209,172, 27, 98, 66,253, 11, 20, 36,177, 40,119,202, 88, 36, 20,130,163, 36,215,235, - 67, 73, 68, 72, 44,115, 75,139, 15,119,223,113, 46, 24, 99,186,213,193,159,215,130,208,183, 67, 93,220,124,248, 18,222, 77, 61, -241,226, 77, 36,106,185, 87,196,150,221,199, 65, 41,178,126, 95,191,252,227,223, 29, 26,243,193, 16, 69,235,193,131, 7,170,162, - 42, 86,225,119, 90,118,127, 8, 74,255, 86,180, 84,106, 13,102,206, 53,200,157, 79,110, 25,181,110, 38, 51,228,226,210, 20, 43, - 67,136, 88, 81,101, 11,101,184,103,169, 12,160, 17, 48,231, 95,217,112,178, 44,139,243,231,207, 23,148, 71,113,229, 88,184,236, - 12, 32, 57,248,240,225, 3, 94,188,120,129,102,205,154, 33, 35, 35, 3, 66, 30, 15, 51,130,131,225,249,195, 15,208,138, 68,224, - 56, 14, 98,177, 24, 99,199,142, 53, 56, 63,203,217,154,230,173,115, 99,105, 25,109,201,218,110,221,186, 85, 11,203,201,193,139, - 87,175,208, 97,241, 98, 0,192,133, 11, 23, 62,169, 19,211,167, 79, 23,191,124,249,114,212,147, 39, 79, 70, 17, 66,214, 81, 74, -103,148,216,206, 82, 77,193, 26,173,254,131,251,160, 90,205,202, 56,176,231,112,193,249,233,179,166, 64, 40, 20, 65, 40, 18,194, -194,220,194,160,187,209,235,245, 5,164, 85,169, 84,242, 46, 92,184,224,210,177, 99, 71,209,148, 41, 83, 8, 0, 28, 56,112,128, -183,121,243,102,249,213,171, 87, 69,206,206,206,241,101,146, 75,157,238,179, 50, 38,132, 64, 40, 20, 66, 36, 22, 1, 28, 7, 66, -136,124,245,234,213, 75, 95,188,120,209,184,102,205,154,208,104, 52, 63, 16, 66,158, 25,253,104, 25,145, 63,109, 88, 18,225, 42, -110,173, 85,158, 42, 85, 18,146, 10,175,219, 42,137,168, 21, 94,179, 5, 64, 83,254,102,193,192, 53, 90,197,129,207,231,151,169, - 86,241,120,188, 50,167, 14,167, 79,159, 14, 83, 83,211,146, 58, 32, 26, 28, 28,252, 50, 62, 62,126, 7,165,244,183, 47, 41,156, -115,215,159,189, 88, 50,173, 87, 22,242,230, 86, 45, 44, 44,146,219,181,107,151, 13, 64,119,236,216,167, 3,100,141, 70, 83, 98, - 7,110,110,110,190,100,215,174, 93,147,123,246,236,201, 43,234, 98,160,240,244, 94,254, 75,175,215,227,216,177, 99,147,231,204, -153,131,146, 84,176,252, 78, 92,153,163,130, 42,111, 33,244,187,144, 63, 13, 45,189, 18, 79, 41, 44, 28,225, 82,185,110,137,157, - 9, 79,148,187,134,200,222,245,239, 14,204,212, 84, 10,182, 20,155,132,240,194, 35,163,226,156, 43, 56, 88,225, 93,116, 18,236, - 43,214, 65, 90,236,223,249, 32, 16,240, 33,204,155, 58,180, 48,147, 35, 41, 49, 17, 60, 30,191, 84, 98,188,252,208, 51, 60, 12, -137,196,137,107,207,161, 83,231, 96,253,190, 75,208,105,178,161, 83,231, 64,167,206,125, 95, 57,231, 71, 16,130,143, 58,117,118, -245,242,148,187, 64, 32, 64,211,166, 77, 75, 36, 58,177,177,177, 6, 42, 90,180, 64,209, 82,169,203, 89, 70,134, 61,132,165, 42, - 86,249,231,191,148, 24,228,187,124,144,201,100,141,246,238, 45,217,141, 67,113,112,116,116,188,168, 80, 40, 42, 25,122,125, 57, -156,151,174,180,176,176, 88, 82,179,102, 77,143,245,235,215, 11,249,124, 62,218,183,111, 95,253,199, 31,127,252, 0, 0,117,234, -212,113,202,111, 99,198,143, 31, 79, 31, 60,120, 16,146, 59,198, 40, 25, 98,177,248,149,185,185,121, 35,111,111,111,100,100,100, - 32, 58, 58, 26,114,185, 28,158,107,215, 34,120,252,120,212,219,182, 13,188,118,237, 64, 8,129, 88, 44, 70,112,112, 48,100, 50, -217,171, 82,200, 80, 83, 0,191, 2,104,137,191,167, 11, 41,128,123, 0,102, 83, 74, 31, 22,211,222,241, 0,128,229,184,178, 10, -107,240,204,153, 51,145, 46, 20, 2, 62, 62, 16,133,135, 67,167,211,161, 89,179,102, 5, 42,123,179,102,205, 32, 16, 8, 80,183, -110, 93, 56, 57, 57, 97,203,150, 45,131,241,233, 78,236, 79,160,206,214,225, 67,120, 12,154, 55,111, 94,160, 92,249,248,248, 20, - 40, 90, 66,161,176, 64,217, 34,108,217,196,149, 16, 66, 11, 15,146, 89,150, 37, 2,129, 64, 48,109,218, 52,210,167, 79, 31,170, -213,106, 57,177, 88,204, 59,113,226, 4,185,121,243,166, 32, 39, 39,167,204,129,120,237, 94,253,240,115,199, 92, 81,116,121, 37, - 91, 8, 69, 66,136, 69, 34,204,124, 21, 83, 80, 46,102,123,143,136, 87,173, 90,213,183,102,205,154,185,211,240,128,192,232, 71, -203,136, 50,212,172,164, 34, 36, 73, 91,232, 56, 9, 0,201, 59, 78, 42, 68,168,146,144,187,131,176,113,145,107,243,207,107,139, -188,231,159, 15, 44,111,218, 11,197, 58,252,140,124,149, 54, 34,126,115,255,254,125,247,134, 13, 27, 34, 42, 42,234,179,157,112, -249, 29,151, 92, 46,135, 76, 38, 67, 64, 64, 0, 0,188, 41,201,216,141, 27, 55, 54, 35,215,235, 50, 0,192,201,201,169,185,119, -255,182, 1, 77, 58, 55,198, 33,191,195, 25,241,241,241,117,243,125,232, 16, 66,136,147,147,211, 80,161, 88, 48,160, 74,109, 87, - 47,112,220,175,215,254,186,187,184,180,155,172, 82,189, 86, 54, 0, 85,161, 93,135,107,190,164,160,121, 60, 94,191,158, 61,123, -242, 94,190,124,137, 1, 3, 6,224,192,129, 3, 37, 94, 59,116,232, 80, 28, 57,114, 4, 61,123,246,228,205,157, 59,183, 95, 89, - 68, 43, 87, 45,209,126,179, 74, 25,246, 54, 16,251,143,236, 42,113, 13,146,157, 93,238,122,172,196,196,228,130,239, 26, 55, 44, -125,102,132, 99,180, 87,159, 61,121,212,188, 69,155,246,162,232,132,116,112,140, 6,234,172,191,127,175, 76, 79, 0,101,212, 16, -153, 88,193,193,198, 28, 79,239, 95,209,234,180,234,171,165,217,156,220,179, 22,198,119,247, 0, 40,135, 94, 51,254,192,185,223, - 38, 21,140,160, 91,245,153,130,235,199, 54, 26,188,198,175, 40,132, 66, 33,130,131,131, 85, 37,169, 89,124, 62,191, 76,159, 92, -127,171,142,122, 40,149, 42, 40, 85,234,111, 86, 70,132, 16, 91,123,123,251,223,173,172,172,164,197, 17, 41, 66,136,173,173,173, -237,239,214,214,214, 82, 67,167, 14, 75, 34, 89,121,126,181,158, 12, 31, 62,188, 92,100, 75, 34,145, 84,122,243,230, 77,129,179, -210,210,222,181, 90, 45,188,189,189, 13,114, 94, 74, 41, 61, 75, 8,121,239,232,232,120,207,211,211,211,252,221,187,119, 56,124, -248,176, 72, 40, 20,186,230,183, 31, 89, 89, 89,224,243,249, 72, 76, 76,212, 3, 24, 89,214,212,153, 70,163,241,247,247,247,175, -223,189,123,119,254,171, 87,175,192,231,243,115,211,213,188, 57,234,109,219,134,144,105,211,224, 21, 25, 9,181, 78, 7,169, 84, -138,203,151, 47,235,148, 74,165,127, 73,246,100, 50,217,142,136,136,136, 90, 82,169, 20, 58,157, 14, 28,199,129,199,227, 17,129, - 64,208,202,194,194, 98, 19,128,198,159, 62, 83,118,118, 99,167,255, 82,131,101, 24, 54, 62,234, 93, 82, 89,121,144,146,146,130, -179,103,207,162, 89,179,102,240,242,242, 66,108,108, 44,194,195,195,209,181,107,215,130,107, 2, 3, 3,241,236,217, 51, 84,173, - 90,181,108, 69,143,167, 71,213, 26,149, 32, 18,137,114, 21, 34,161, 40,111,224, 35, 44, 80,178, 68, 66, 17,132, 2, 33,164, 50, -169,193,138, 22, 33, 4, 60, 30, 15,132, 16,200,100,178,252, 65, 54,231,226,226, 18,159,154,154,234, 8,128, 47,147,201,192,178, -172, 65,131,150,252, 62, 34,159,100,137,196,162, 2,101, 11, 0,210,211,211,213, 61,123,246, 60,168,209,104, 70,224, 11, 34,148, - 24,241, 63,137,199,255,162,223, 26,204, 19, 41,165, 59,138, 91, 20, 95, 90, 5,239,218,162, 69,139,109,131, 6, 13,106,191, 97, -195, 6, 40, 20, 10,196,199,199, 23,116,136, 98,177, 24, 21, 42, 84, 64,106,106, 42,182,111,223,142,152,152,152, 27, 0,198, 26, -154,162,248,248,248, 7,111,159,191, 73,241,238,219,194,186, 86,139, 26, 22,209,111, 98,154, 1, 8,200, 35, 89,127, 12,154,222, -117,132,119,239, 38, 16,137,133,136,126,251,241,255,173, 36,249,124, 62,159, 16,130, 1, 3, 6, 24,116,253,192,129, 3,225,239, -239,143,210,166, 25,185,124, 69, 75,169, 70,142,234,219, 13,214, 38, 76, 26,138, 9,147,134, 22,144, 9, 67,166, 94,114, 73,238, -209, 82,136,150,110,195,185,163,219,199, 52,104,210,220,173, 81,173, 74,120,248,228, 57, 14,109,251, 91,100,216,189,121, 41,126, -217,125, 3, 21,236, 45,161,211,228,224,226,159, 59, 63,234, 52,202, 13, 95, 40,202,229,146, 91, 66, 96,160,159,202, 79, 84,212, -124,162, 85,187,118,237, 18, 21,173,212,212, 84, 85, 89, 29, 67, 65, 25,105,245,200,206, 81, 65,165,252, 54, 68,139, 16, 82,175, - 85,171, 86, 87,143, 31, 63,110,109,103,103,135,184,184,184, 79,136, 22, 33,164, 94,203,150, 45,175, 30, 63,126,220,218,222,222, - 30,209,209,209, 6,187, 21, 41,134,100, 33, 41, 41,137,164,165,165,113,150,150,150,229, 34, 91, 60, 30, 15, 26,141, 6,161,161, -161,134,254,173,193, 59,196,204,205,205,247, 30, 57,114,196, 60, 57, 57, 25,124, 62, 31,161,161,161,159,236, 58,204,127,253,241, -199, 31,162, 94,189,122,237, 2, 80,234,182, 54,134, 97,214, 13, 29, 58,116, 84,108,108,172,165,157,157, 29,226,227,227, 33, 22, -139, 65, 41, 5,241,246, 70,235,247,239,161, 99, 89,200,100, 50,132,133,133, 97,199,142, 29, 57, 26,141,102, 93, 9,229, 35, 54, - 49, 49,113, 23,137, 68, 24, 50,100,200, 39,231,246,237,219,135, 30,141,248,141,198,116,148,100, 51,144,106, 18,100, 93, 46,242, -249,124, 50,118,230,175,213,155,182,241,169,253, 58,228,225,187,164,132,152,123,101,220,190, 94,171,213,162,102,205,154,120,252, -248, 49,174, 93,187,134,118,237,218,193,203,203, 11, 65, 65, 65,184,114,229, 10,158, 61,123, 6, 66, 8,172,173,173,243,151, 95, -148,186, 6, 67,171,100,144, 24,151,242,153,122, 85,244, 88, 36, 18, 65,163,210, 25, 84, 70,175, 94,189,194,227,199,143, 11, 92, -203,240,249,124,230,135, 31,126, 0,165,148, 70, 68, 68,192,212,212,148, 14, 31, 62,156, 21, 8, 4, 76,108,108,172,161,117, 63, - 87,189,202, 35, 89, 2,145,240, 19,130,198,113, 92, 86, 96, 96,224, 24, 66, 72, 16, 33,100,117,222,215, 70, 63, 90, 70,252, 39, -227,124,225, 88,135, 6, 41, 90,148,210,247, 0, 58, 16, 66, 6,159, 62,125,122,221,166, 77,155,108,187,117,235,134,180,180, 52, -184,185,185,193,209,209, 17,231,206,157,195,133, 11, 23,146, 89,150,157, 65, 41, 61, 80,204,195,214,161, 36, 95, 27,148, 82,234, -228,228,116, 92,147,157, 61,190,161,151, 7,110, 28,187,227,231,232,232, 56,214,217,217,121,234,240,121,223,143,104,219,179, 49, -194,158, 69,224,193,149, 96, 36, 68, 37, 99,120,235,217,165,218, 44,186, 24,222,194,194, 98,148,137,137,137, 24,128,174,152, 81, -241, 39,187, 14, 11,219,100, 89,150,213,106,181, 56,122,244,168, 65,100,235,240,225,195, 80,171,213, 96,139,204,175, 22,182, 73, - 57, 74, 4, 66, 9,156, 42,212,132, 78,151, 3,142,251, 50,245,166,176,205,252, 17,232, 59,177, 24,118,201,201,120,248,240,161, -161,210,108,169,101, 68, 41, 85, 19, 66,134,108, 92, 49,243,220, 68,223, 95, 45,218,181,168,143,159,215,238,131, 78,183, 27, 60, - 62, 15, 50,137, 8, 13,155,180, 4, 31, 26,252,190,106, 86,186, 50, 51,109, 72,209, 80, 60,159,217, 44,109,134,133, 2, 44,199, -225,218,237, 71, 6,223,123, 65,111,207,178, 16, 8, 4,120,251,246,173,170,184,221,134,124,126,238, 52,103,254, 72,189, 52,155, -148,227,136, 80, 36, 69, 5, 55, 79,104, 53,217,223,164,140,236,236,236,102,157, 58,117,202, 58,223, 85, 66, 80, 80, 16, 8, 33, -161,133,212,145, 89,167, 78,157,178, 86,169, 84, 8, 9, 9,201, 15, 53, 21, 90,158,231, 40, 95,201, 74, 74, 74, 34,241,241,241, - 48, 49, 49,225, 5, 5, 5,105,234,214,173,251, 4,165, 71,126, 40,176,169, 86,171, 35, 75, 90, 63,169, 86,171,157,165, 82,169, -176,200,111,157,220,221,221,195,138, 78, 33, 22,151,206,140,140,140,135,115,230,204,105,216,185,115,103,204,154, 53, 43,213,210, -210,210,244,247,223,127, 23,240,249,124, 50,113,226, 68, 54, 49, 49, 49,123,231,206,157,230,167, 79,159, 70,122,122,122, 64, 89, -247, 78, 41,205, 34,132,140,105,209,162,197,190, 75,151, 46,153,184,187,187, 35, 51, 51, 19,148, 82,236,221,187, 23, 19, 39, 78, -132, 84, 42, 69, 88, 88, 24,122,244,232,161, 84, 42,149, 99,138,174,157, 44,100,147, 16, 66, 40,199,113, 88,184,112, 97,129,115, -210,124,103,165,166, 50,130, 29,211, 43,203,167,236,204,144, 15,254,121,231, 15, 0,192, 50, 12,251, 58,228,225,187,189,191,253, -124, 83, 36, 18,221, 46,163,140,230, 79,153, 50,229,119, 31, 31, 31,153, 66,161, 64,106,106, 42,238,221,187,135,251,247,239,227, -193,131, 7,208,106,181,176,182,182,134,165,165, 37,226,227,227,241,234,213, 43, 21,128,249,165,217, 20,155, 8, 81,165,122,254, -206,223, 92, 5, 75, 88,104,183, 97, 97,117, 75, 36, 20, 26,244, 28,181,105,211, 6, 77,155, 54,205, 39, 64,236,135, 15, 31,226, - 53, 26, 13, 41, 68,250, 99,243, 9,185,171,171, 43,115,224,192, 1, 90,154,205, 7, 59,182,224,210,178,249, 16,139, 68,152, 17, - 26, 93, 64,186,246,181,107, 0,161, 88, 4,143,238,125, 10,247, 3, 91, 9, 33,187,243, 62,107, 12,169,243, 95, 49,240, 49,218, -252, 55,183,249,159, 12, 74,105, 60,128,242,133,224, 41,244,227, 67,132,144,139, 63,254,248,227,170,122,245,234,253,184,126,253, -122, 34, 18,137,176,120,241, 98, 26, 23, 23,183, 39,111, 20,146,246,133, 9,219,115,235,100,192,184, 97,190, 61,201,244, 13,195, - 91, 61,185, 30,242,170, 78, 11,119,212,105,225,142, 39, 55, 94,226,183,121,135, 15,176,122,118, 97,124,124,124, 84, 25,166, 52, - 29, 90,214, 40,186, 24,222,218,255,230,117,235,242,238, 58,228, 56,238,248,225,195,135, 39,247,238,221,155,247,232,209,163,207, -214,100,229,135,221,225, 56, 14, 87,175, 94,133, 78,167,195,158, 61,123, 56,142,227, 74,246,163, 5,122,102,227,134, 85,195,246, -236, 63, 35, 22,139, 8,238,223, 62,129,140,180,210, 85, 58,145, 72,136, 63,246,158,212,137, 68,194,215,197,157,215,233,116,209, -215,175, 95,183,239,196,178, 66, 30,143,247, 25,129, 42, 9,199,143, 31,215,115, 28,247,161,140,114, 9, 32, 68,216,125,249,172, -145,135,125,250,255,104,223,162, 69, 43,161,141,157, 61, 8, 33, 72, 76, 72, 68, 88,200, 35,253,197, 19,187, 18,114,148, 89, 6, -133,224, 25,185,230, 86,193,154, 44, 0,232, 54,113, 83,193,250, 44, 0,232, 62,124, 14,188,155,213, 2, 49, 68,122,250,155,100, -113, 12,195, 64, 46,151,131, 97,152, 98, 93, 60,152,155,155,203,212,106,181, 42,207, 17, 99,169, 82, 17, 5,190,121, 25,177, 44, -235,145,150,150,134,156,156, 28,220,191,127,159,174, 88,177, 34, 41, 41, 41,169, 96,209,166, 94,175,247, 72, 77, 77, 69,118,118, - 54, 2, 2, 2,232,170, 85,171,146, 82, 82, 82,230,149,231, 25,146,201,100,141, 4, 2,193,147,180,180, 52,206,196,196,132,167, -215,235,245,117,235,214,149,200,100, 50,131, 3,170,199,197,197,117, 46,233, 92,213,170, 85,223,188,121,243,166, 26,203,178,133, - 99, 32,138,212,106,181,123,139, 22, 45, 12,153,242,153,178,123,247,110,156, 60,121,178, 73,102,102,230,208, 15, 31, 62,236, 3, -208, 68, 32, 16,224,249,243,231,161,106,181,122, 80,239,222,189,247,166,165,165, 61, 4, 48,197,192,118,227, 18, 33,100,136,135, -135,199,238, 37, 75,150, 40,188,188,188, 4, 78, 78, 78,104,220,184, 49,194,194,194,112,254,252,121,253,214,173, 91,115,148, 74, -229, 72, 74,233,213,210,139, 29,132, 97, 24,136,197,226,130,151, 68, 34,129, 72, 36, 66,150,138, 98,244,218,112, 21, 3,153,106, -221,226, 49,231, 41, 64, 62, 70,135, 39, 39,126,140,126, 72, 8,185, 29, 23, 23,151, 81, 66,158,137,213,106,117,125, 71, 71, 71, - 62, 33,100,131, 78,167, 27, 62,105,210, 36,199,149, 43, 87,162, 70,141, 26, 72, 78, 78,134, 92, 46,135,187,187, 59,146,146,146, -240,232,209, 35, 86,169, 84,110, 3,176,148, 82, 90,234,116,100,122,114, 38, 92, 28, 92, 63, 81, 62, 41,165,160, 44,160,215,176, - 96,117, 20, 90,162,135, 80,168,135, 72, 36, 50,164,179,164, 28,199, 33,205,209, 17, 92, 72, 8, 30, 60,120, 0, 74,105,137,170, - 90,205,154, 53, 13, 40, 32, 14, 98,137,248,147,233, 66, 66, 8, 68, 98, 49,132, 98,209,103, 59,103,140, 42,150, 17,255,237, 48, -116,173, 69, 58,128,177,132,144,125,109,219,182, 61, 71, 41, 21, 34,119, 62,242,206,215,252,121,124,124,252, 83, 39, 39,167,185, -246, 46,150,171,186, 12,109,133, 26,245,221,192, 50, 44,238, 93,120,142, 61, 43, 79, 31,137,141,142, 29,110, 72,236, 51,142,227, -110,182,108, 84,131,135, 66,190,186,157,156,156,184, 47,217,117,152,145,145,177,104,198,140, 25,152, 53,107, 86,185,119, 29,150, -116, 77, 80,104,226,216,122, 30,182, 46,221,187,180,238, 4,194,163, 90,173,166,148,134, 15, 5,158, 75, 69, 34,225,235, 71,129, -113,117,139,187, 46, 41, 41,169,211,136, 17, 35,174, 10, 4,130, 74,229,201,115,142,227, 62, 36, 36, 36,180, 47,187,204,245,247, - 8, 33,238,103,143,108,159,118,233,228,238, 78, 28,199, 86, 37, 0,248, 2,209, 59,189, 78,119, 89,163,202, 92,111,104, 80,233, -213, 99,155, 99,202,198, 43,216, 50,171, 59, 38,173, 58,134, 93, 11, 71, 99,238,218,195,248,117,214, 20,172,216,116, 16, 63, 79, - 25,130,190,131, 71,112,148,240,238, 26,122, 31,124, 62,255,210,246,237,219,135,141, 30, 61,186, 96,211, 2,165,244,147,134, 93, -175,215,171, 56,142,195,182,109,219, 56, 0,151, 74,179,247,105, 25, 17, 90,218,122, 41, 67,203, 40, 51, 51,115,100,243,230,205, -247, 2,144, 80, 74,223,166,165,165,253, 68, 41, 45, 8, 13,149,157,157, 61,178, 69,139, 22,123, 41,165, 18, 66,200,103,231, 13, - 65,158,171,135, 70,150,150,150, 79,242,148, 44,201,151, 44,136, 47, 45,171, 75,153, 86,100, 13,104, 59, 56, 20, 10,171, 67, 8, - 89,217,164, 73,147,194, 65,165, 67, 1, 52, 42,111,162, 40,165, 87, 9, 33,181, 22, 46, 92, 56, 77, 42,149,122, 43,149,202,234, - 0, 32,151,203,195, 52, 26,205, 77,149, 74,181, 62,175,221, 42,205,134,214,196,196, 36,140, 97,152,218,182,182,182,185, 59,106, -243,200, 22, 0,252,245,132,125, 66, 41,211,184,188,105,187,112,225, 66, 69, 75, 75,203,239, 8, 33,125, 41,165, 53,179,178,178, - 52, 11, 23, 46, 12, 56,126,252,120, 70,165, 74,149,186,248,248,248, 16, 43, 43, 43, 60,126,252,152,166,164,164,156, 0, 48,207, -144,157,214, 28,199,125, 88,189,122, 53,202,251,188,151,118, 94,167,211,125,188,112,225,130, 77,231,196, 68, 1,199,113,232,222, -189,251, 39, 4,174, 40, 94,191,126, 13,141, 70, 83,170, 51, 71, 77, 70, 26,218, 77,155, 3,228,237,254,204, 71,174,146, 69, 65, -181, 70, 94,101,196,255, 22,200, 63,178,253,185,156,210,162,147,147,211, 0,169, 92, 50,193,173,186, 99,221,184,240,196,151, 89, - 25,202, 3,241,241,241,219, 41,165,236,151,218, 44,143,195, 82,163,252,251,207,217,252,219,143, 22, 11, 74, 89, 80,142,130, 82, - 14, 28,199,230, 6,188,166, 28, 40,203, 18, 66,112, 87,163,204, 24,109,104, 58, 9, 33,150, 54, 54, 54, 75, 41,165,157,249,124, - 62,175,176, 24, 86,248,115,158,146,117, 41, 41, 41,233,231,162,202,235,127, 98,126,254,249,231,159,197,146,127, 67,119, 29,246, -237,219,151, 45,231,179,121, 83, 46,151, 23,235,152, 51, 39, 39, 39, 42, 46, 46,238,187,127,135,252,204, 87, 67,169, 1, 13, 90, -145, 41,248,114,239, 58, 44,203,102,197,138, 21, 37, 58,157,174, 1, 0,119, 66,136, 5,128, 84,157, 78,119, 57, 41, 41, 41,129, - 16,210, 8,192,194,188,159, 45,163,148, 62,249, 87, 62,239,132, 16,153,141,141,205,110, 30,143,231, 98,200,239, 25,134,209,166, -166,166, 14, 43, 60, 32, 40,108,211,198,198,230,137, 64, 32,112, 49,192, 78, 76,114,114,114, 35, 99,251,105,180,249, 95, 67,166, -138, 44,130, 47,124,252,111,177,219, 35, 46, 46,238, 40,128,163,223,210,102, 73,158,223,141,248,255, 69, 78,106,252, 63, 82, 14, -121,164,105,226,255, 90,126,230, 19,165, 98,190,127, 10,128,252, 3,207,166,247,127, 66,190,208, 47, 28, 49,230, 17,169,214,223, - 50, 45,145,145,145, 26, 0, 1,121,175,162,255,247, 4, 64,247,127,163,124, 83, 1, 24,240,173,236,149, 70,158,140, 48,226,127, - 21,198,109,181, 70, 24, 97,132, 17, 70, 24, 97,132, 17, 95,135,243, 69, 66,240,156,207,255, 64, 0,116, 40, 97,164, 99,176, 36, - 72, 8,233,240, 5, 35,169,107, 70,155, 70,155, 70,155, 70,155, 70,155, 70,155, 70,155,255, 91, 54,255,231,144,239, 56,242,159, -120, 1,232, 96,180,105,180,105,180,105,180,105,180,105,180,105,180,105,180,249,223,252, 2, 48,166,164, 99,158,145,106, 26, 97, -132, 17, 70, 24, 97,132, 17, 70,252, 51, 48,152,104, 41, 28, 60, 60,108, 43,214,219,107, 85,161,110,144, 85,133,186, 65,182, 21, -235,237, 85, 56,120,120,252, 47,102, 26, 33, 68, 70, 8, 25, 44, 20, 10,175, 58, 58, 58,102, 18, 66,166,253,151,222,167, 25, 33, -164, 47, 33,100, 41, 33,164, 23, 33,196,228, 91,218,111, 75,136, 96, 32, 33, 19,134, 17, 18, 53,140,144,168,129,132, 76,104, 75, -200,127,221,186,193, 37, 83,156,154,223,185, 52,228,226,146, 41, 78,205,139, 61, 63,211,201,250,225,213,254, 27,253, 38, 58, 91, -125,163,114, 51,181,183,183,223,225,224,224, 16,105,111,111,255,193,222,222,126, 55, 33,196,220,216,220, 25, 97,132, 17, 70,252, - 99, 56, 79, 8, 25,147,255, 66,161, 53, 90, 2, 0, 56,127,254,188, 23,128, 91, 0,218,250,248,248,248, 23,253,181,149, 91,157, -209, 30, 53,107,204, 90,190,120, 30,113,176,179, 49, 97, 88, 78, 23, 17, 25,237,185,104,249,170, 63,173,220,234,172, 75,253, 16, -188,235, 11, 58, 3,194,231,243, 7, 72, 36,146,110, 0,242, 9, 91,168, 70,163, 57,199,178,236, 81, 67,119, 17, 57, 56, 56,220, -230,243,249, 21,203,243,223, 44,203, 70,125,252,248,177,213, 23,118, 98,253, 92, 93, 93,119,123,121,121,153, 52,105,210, 4, 98, -177, 24, 11, 23, 46,156, 1, 96,189,161, 54,172,172,170,154,234, 36,210,169, 2,177,184, 35,213,107,107, 83, 80,128, 39, 9,225, - 24,205,117,145, 70,179, 46, 53,245, 93,150,129,105,153, 7, 96, 56,114,183,163,239,162,148,174,254,154, 90, 50,188, 1,209,235, -217,220, 58, 33, 18,128, 53, 55, 55,191, 53,127,254,124, 65,183,110,221,176,107,215,174, 86, 59,118,236, 24, 67, 8,185, 14,224, - 47, 74,233,187,175,173,149,246,192,216, 22,173, 90,109, 28, 54, 99, 6, 95,117,251, 54, 54,238,222,189, 1,153,153, 0,176,165, -188,117, 73, 36, 66, 95, 27, 27, 97, 55, 74,209,128, 0,132, 0,207,147, 82,184, 11, 58, 29,123,148,150, 55,190,207,167,182, 7, -227,211,237,248,135,202,107, 35,227, 29, 93, 32,233,238,209, 58,227,221,205, 5, 0,186, 20, 61,207,168,165,195, 40,191, 66, 55, - 21,125, 22, 13, 96,237, 87,146, 44, 19, 91, 91,219,160, 51,103,206,184, 52,105,210, 68, 0, 0, 79,158, 60,249,161, 91,183,110, -237, 8, 33,181, 41,165,153,255, 34,210, 46, 21,240,120, 19,196, 66, 97, 71,150,101,235, 0, 0,159,207, 15,214,234,245, 87, 25, -142,219, 98,168, 79, 54, 35,140, 48,226,191,152,169,148,193, 69,254,157, 97,136,103,248, 91, 62, 62, 62,228,252,249,243, 20, 69, -182,136, 43,236,107,122,214,170,229, 49,227,210,169,125, 21,210, 83,211,213,155,215,236,123,154, 35, 16, 43,221, 61,221, 69,155, -215,175,182,156, 48,101,250, 84,133,125,205,135,217, 9,175, 94,150,163,209,117,149,201,100, 39,215,172, 89, 83,219,219,219, 91, -104,103,103,135,132,132, 4,132,134,134,214,190,113,227, 70,207,125,251,246,205, 32,132,244,166,148, 70, 25, 96,206,253,250,254, -221,118,114, 43,107,176,122, 61,156,234, 54, 40,112,180,247,246,198, 21, 48, 58, 29, 56,189, 30, 30,221,122, 2, 0, 56,142,131, -167,167, 39,255, 75, 50,146, 16,226, 84,171, 86,173, 3, 43, 87,174, 20,105, 52, 26, 60,124,248, 16, 55,111,222,228,226,227,227, - 87, 25,106, 67, 97, 95,221,155, 39,147, 31, 29, 48,228, 71,243,239,187, 85, 22,186,218,219, 2, 48,193,235, 8,166,197,197, 43, - 55, 26,159, 58,186,103,188,194,190,250,128,236,132,176,155,165,147, 53,171,102,132,144, 21,249, 30,162, 9, 33,191, 86,170, 84, -233,231,194,215, 20,141,155, 71, 41,133, 64, 32, 72,200,202,202, 26,144,156,156,252,172,168, 77, 61, 11,193,161, 67,185, 60, 98, -193,132,193,252,187,119,239,202, 61, 61, 61, 53, 0,176,122,245,106, 44, 93,186, 84,124,249,242,229,174,251,247,239,239, 74, 8, -217, 64, 41,253,235,107, 42,166, 8,152, 61,108,198, 12,190, 34, 50, 18,138,192, 64, 12,201,204, 20,252, 2,204, 46, 15,209, 34, -132, 84,118,112, 16,254, 57, 99,250, 8,143, 42, 85,155,137, 68, 34,155,220, 32,222,218,228,234, 81, 81,207,250,174,250,101,135, - 47, 33,164, 15,165,244,173,129,246, 4, 0,150, 0,144, 2, 88, 0, 96, 97, 82, 82,146, 59,203,178,112,112,112, 88, 72, 8, 57, - 13, 96,185,173,173, 45, 77, 74, 74,154, 67, 41,101, 74, 83,178, 50,223,209, 5, 31, 73,149,206, 53, 26, 14,195, 71,114,169,243, -244, 46,142, 23,205,170,146,229,139, 54,198,221, 7,128, 46, 85,171,154, 86,169, 41,159,163, 48,171, 99,149, 25,123,109, 78,151, -170, 85,119, 94,124,103, 24,209, 46, 74, 54, 1,192,201,201,105,245,254,253,251, 43, 52,109,218,180,160,142,215,175, 95,159,191, -122,245,106,231,105,211,166,109, 0, 48,194, 64,123,213,109,109,109, 47,179, 44,171, 73, 73, 73,169,158,255,189, 93,189,222, 45, -172, 77,229,237,147,210,178,110, 39,191, 56,237,111,160,173, 38, 82,145,232,196, 95, 7, 54, 58,214,111,218,156,167,176,177,131, - 58, 54, 14,217,122, 93,135,155,247, 30,180, 29, 51, 97,246,148,188, 50,122,100,236,106,140, 48,226,127, 26, 37,114,145,255,100, - 8, 10, 49,201, 98, 21, 36,137, 68,236,187,104,254, 28,146,158,146,174, 82,103,102,105,245,106,181,154, 39,162,234,224,151,239, - 19,121, 2,126,250,180, 41,147, 77,125,231,206,247, 5, 48,196, 80,146, 85,175, 94,189, 71, 39, 79,158,180,179,178,178, 66, 70, - 70, 6, 82, 82, 82,240,232,209, 35, 80, 74,209,187,119,111, 73,211,198,141, 27, 44, 88,184,240, 62, 33,164,185, 33,100, 75,110, -101,131,213,173,114, 99,209,254, 28,153,146,255, 63,216,209,175, 91,193, 53, 75, 99, 50, 0, 0, 82,169,180, 32, 32,241, 23,160, -121,251,246,237, 69, 0, 48,106,212,168,204,172,172, 44, 63, 0,135, 40,165, 6, 69, 90, 85,216, 87,247,182,113,116, 58,247,251, -182,213,178, 58, 85,221,161,211, 51,248,240, 49, 14, 2,161, 5, 92, 92, 68, 24, 49,164,163,176, 77, 11, 43,155, 21,203,118,156, -151,219, 86,239,149,147, 20,118,185, 36, 91, 22, 22, 22,251,142, 30, 61,138, 99,199,142, 1, 0,194,194,194,224,238,238, 46, 47, - 43, 13, 33, 33, 33, 85,122,244,232,113, 4, 64,181,178,174, 45,234, 24, 95, 34,145,160, 85,171, 86,240,244,244,196,153, 51,103, -218, 2,248,235,107, 43,160,234,246,109, 40, 2, 3, 1,255,242, 15, 94, 8, 33,149, 27, 54,116,123,112,225,252, 1,155,243, 23, - 66,177,118,237,110,188,123,151, 43,180, 85,169, 82, 5,131, 7,245, 19, 6, 7, 7,212,234,219,119,112, 0, 33,164, 21,165, 52, -204, 0,179, 75,118,238,220, 57,175, 82,165, 74,232,219,183,111,191, 90,181,106, 57,152,153,153, 97,251,246,237,112,116,116,172, -162,213,106,223,158, 57,115,198,233,227,199,143,152, 60,121, 50, 0,204, 40,201, 80,219, 78,109, 23, 72,186,123,180,174,209,112, - 24, 20,102,142,216,121,248, 40, 94, 63,221,215, 90,163, 11, 93,224, 55,209,121,168,138, 74,134,187,184,155,250, 86,108,228,101, - 93,173, 86, 15,184, 53,124,102,163,102,239,188, 95, 56,161,202, 42,129, 84,189,111,209,154,184,148,207,238,185,223,159,252,218, -153,175,172, 66,174, 34,133,210, 69, 92, 30,193, 42,104,144, 88,138, 30,109,218,180, 41, 40,184,200,200, 72,104, 52, 26,120,120, -120,240,180, 90,173,183,129,249, 90,253,187,239,190,187,123,225,194, 5,235,234,213,171,127, 18, 18,198,193,218,162,147,255,201, - 13,147, 87,108, 60, 88,211,206,179, 87,122,226,203, 83,193,101,145,172,150,205, 26, 94,187,120,242,128,130,100, 71, 67,108,145, - 12,112, 41, 8, 63,242, 7,136,137, 21, 6,140,155, 46,240,110,223,206,185, 99,151, 62,215, 8, 33,237, 41,165,143,141,125,141, - 17, 70,252, 79,171, 90,244,191,237,158, 10,136, 86, 33, 22,249, 9, 56,202,213,181,183,179,150,109, 88,179,247, 49, 95,167,213, -202, 45,204,181, 66,115, 51,142,152,154,243,117, 90,125,182, 91, 21, 55, 49, 71,185,186, 37, 72,105,215,138,142,186,101, 50,217, -201,191,254,250,203, 78, 40, 20,130,227, 56,216,218,218, 34, 34, 34, 2,233,233,233,200,202,202,194,187,208, 80, 84,114,173,128, -197,190,115, 28, 39,207,241, 61, 73, 8,105, 84,120, 26,177,184,109,163,172, 94, 87,180,113, 47, 41,136,240, 39,239,165,217, 44, - 1, 17, 81, 81, 81, 80, 40, 20,168, 93,187,182,226,222,189,123,119, 74, 34, 89, 69,109, 90, 89, 85, 53, 21, 40,100,199,182,254, -190, 80,166,211,135,224,101,120, 42,106, 84,106, 13,123,107, 87,196,165,106,241,224,209, 95, 8, 9, 58,132,170,206,174,152, 56, -174,157,116,213,234, 63,143, 90, 90, 86,118, 77, 75,123,159, 89,156,205,204,204, 76, 69,229,202,149,225,234,154, 27,247,140,101, - 89,188,124,249, 18, 44,203, 22, 28, 23,126,223,123,226, 6,152,204, 15, 24,246,195, 15, 72, 73, 73, 81, 20,103, 83,200, 7, 51, -125,204, 96,129, 76, 8,136,229, 86,218,236,236,236, 2,117, 80,167,211,225,249,243,231,104,222,188,185,215,241,227,199,253,203, -144, 80, 13,202, 79, 29,240,235,198, 61,123, 54, 13,201,200,224, 1,192, 46, 66, 56, 29,165,191, 26, 90,151,236,236,132, 39, 46, - 93,220,111,195,231,189,130,149,249, 47,120,244,232, 3,116,186,220,244,166,164, 36, 98,210,132, 76,136,132,166, 56,115,230,160, -181,135, 71,171, 19,121, 83,103, 92, 25,233,148, 94,188,120, 17,147, 38, 77,194,203,151, 47,157,248,124, 62, 30, 62,124, 8,153, - 76,134, 53,107,214,240, 61, 60, 60,156,228,114, 57, 46, 93,186,132,132,132, 4, 82, 90, 58,111, 93,190,181, 60,227,221,205, 5, - 31,201,165,206, 59, 15, 31,197,143,131, 6,192,129,134,223, 49,175, 74,150,127,215,189,229,207,148, 95,161,155,220,180,174,165, -123,237,238, 16,137, 21,152, 56,123, 41,194, 66,206, 90, 42,179,130, 38, 16, 54,186, 2,242, 98,255,125, 18, 84,249,120, 95,118, -211,225,128,134, 87, 93, 31,187, 57, 53, 28,251, 16, 64,208,223, 68,171,138,128,240, 88,243,124,245,242,237,219,183,120,247,238, - 29, 4, 2, 1, 84, 42, 21, 24,134, 41, 54,157,206,206,206, 99, 25,134,249, 57,175,156,247, 58, 58, 58,142, 60,112,224,128,117, - 97,162,157,175,100,165,166,103,166, 5, 60,126,241,122,250,216,190,109,111, 63, 8,137,182,168,215, 51, 42, 61,240,116, 70, 9, -101, 36,149,137,197, 39, 46,157, 58,168,208,191,191, 1,185, 71, 91, 8, 21,238, 96,245,177, 80,166,229, 32,235, 93, 60, 52,191, -255,134,250, 19,166,225,236,233, 63, 21,181,234, 52, 58, 78, 8,113,167,148,106,191,224,217, 44,143,196,111,180,105,180,105,180, -249,111,104,179, 52, 46, 2,160, 33, 0,251,188,207, 41,200, 93, 50, 99, 3, 32, 25,185,225,192,236, 1,104, 1,136, 11,253,166, -232,113,225,107,139, 30, 23,254,156,146,247,217, 46,239,253, 49,128,212, 50, 6,149,142, 0,124,144,187, 54,203, 39, 47,143, 12, -243, 12, 79, 8, 47,147,101, 57,137,200,214, 78, 61,170,127,251, 58, 87,174, 61,121,110, 98, 99, 38,232,212,182,129,215,163,224, -247,247, 9,143,232, 9,225, 25,180,238,131,207,231, 15,216,176, 97, 67, 29, 51, 51, 51,112, 28, 7,115,115,115, 36, 37, 37, 65, -171,213, 34, 35, 35, 3,154,172, 76,232,178, 50, 17, 24, 29,137,150, 94,109,209,167,243,119, 30, 7, 79,255, 53, 0,192,145,210, -236, 58,213,109, 80,160,100, 45,173,104,253,183, 52, 17,157, 94, 64,186,126,105,224, 14,145, 66,129,142,211,125,191,166, 98, 61, - 19,139,197, 23,123,247,238,221,101,230,204,153,188,248,248,248, 75,132,144,150,148,210, 50,167, 77,117, 18,233,212,241, 83,187, - 89, 90, 42, 40,142, 95,253, 11,109, 26, 12,130,137,152,143,148, 76, 29, 8, 1, 66, 95,156, 4, 33, 86, 8, 10,139, 71,235,250, -102,248,174,147,135,226,244,159,161, 51,241,247,250,160,207,138, 38, 45, 45, 13,137,137,137,208,235,245,208,235,245,232,219,175, - 31,246,239,219,135,156,156, 28,168, 84, 42,104,181, 90,176, 44, 11, 30,143,135,171,231,142, 35,250,125, 40, 90, 52,111,142,146, - 36,217,189,207,168,144, 16,242,224,245,235,215, 8, 13, 13, 69, 76, 76, 12,164, 82, 41, 28, 28, 28,176,116,233, 82,104, 52,185, - 49,202,250,245,235,231, 5, 32,248,107, 31,168,119,192,142, 8,150, 93,208,229,212, 41,187,123,167, 78,113, 15,206,158,141,145, -100,101,109, 55,228,183, 34, 17,250,174,254,117, 92, 13,185, 92,142,152,168, 13,168, 89, 83,132, 25,211,172,225,247, 75, 50, 0, - 96,242, 36, 23, 52,110,100,131,204,244, 63, 97, 99, 55, 15,155, 54, 77,169, 58,124,248,186, 31, 0,236, 45,195,244,130,191,254, -250,171,143,187,187,187,243,179,103,207,136, 88, 44,134, 76, 38,131, 76, 38,131, 84, 42, 69, 98, 98, 34, 34, 34, 34,232,234,213, -171, 99,145, 59,181, 88, 34,242,166, 7,187, 76,239,226,120,241,245,211,125,173,157,249,239, 3,251, 76,108, 21, 25,244,224, 89, -214,149,171,247,150, 49,106,105,116,122,204,181, 57,149, 27, 63,179,153, 48,107, 9,126, 91,189, 8,175, 31,222, 78,181,119,205, -220, 34, 35,154,189, 77, 59, 22,163,146,181, 93, 34,152,176,176, 63, 51,118,120, 31,139,179,246, 1, 99, 47, 8, 72,210,199,228, -167,107, 16,241, 76, 37,169,214, 96,104,245, 42, 60,237,141, 27, 55,100,109,218,180,129, 90,173, 46, 80, 38, 15, 28, 56,192, 49, - 12, 83,236,116,180, 78,167,251, 57, 54, 54,214, 81,165, 82,161,115,231,206,147,215,172, 89, 35,207,143, 81,199,178,236, 39, 74, -214,242,245,251, 47, 79,253,121,203,205,203, 71,126,113, 90,238, 59,178,237,144,137, 43,110,162,132, 56,146, 2, 30,111,194,217, - 83,187, 29,164,150,122,200,172,190,131, 58, 65,133,215, 59,126,132, 50, 83,141,198,203,151, 0, 16, 67,171,231, 97,123,247,190, - 16, 90, 59, 97,209,232,145, 78,243,183,239, 28, 7, 96,131,113, 92,111,132, 17, 70, 20,129, 61, 33,228, 28, 0,248,250,250,206, -243,243,243,123, 65, 8, 57, 71, 41,237,150, 71,116,206, 81, 74,187,229, 95,147,215,103,127,118,156,127,109,209,227,162,159,231, -206,157, 91,107,213,170, 85, 43,155, 55,111,126, 36, 32, 32,224,125, 89, 68, 11,185,241,159,119, 20, 13,197, 3,228,237, 58,244, -241,241, 33,133,223, 63, 81,180, 56,238,246,219,247,145,202,239, 58, 52,117, 57,231, 31,252,120,196, 8,159,246, 3,186,183,233, - 20, 17,149, 18, 90,213,205,193,230,197,139, 96, 51,142,227,110, 27,146, 75, 18,137,164, 91,187,118,237, 4,105,105,105, 48, 49, - 49, 65, 82, 82, 18, 98, 99, 99,161,211,233,160,206, 72,135, 38, 35, 29,234,244, 52,232, 50,210,240,238,201, 35,212,173, 90, 69, -146,183, 88,190, 44, 2, 84,172, 82, 85, 88,217, 18,155,154, 66, 98,106, 10, 82,206,105, 67, 66,200,247,150,150,150, 15, 8, 33, - 11,242, 58,165, 9,115,230,204, 73,230, 56, 14, 43, 86,172, 48, 83, 40, 20,199, 9, 33,146,178,236,152,218,242,187, 53,175, 95, -155,247, 42, 34, 8,173,234, 13, 67,245,202, 93, 17,145,160, 66,114,150, 14,137,233, 58, 52,110,179, 25, 21,235, 45, 65,133,250, -126, 8,253,144, 10, 39,103,119, 30, 4,146, 82,131, 63, 71, 71, 71,127,114,124,228,240, 97, 40,149, 74, 84,173, 90, 21,131, 6, - 13,194,156, 57,115, 48,104,208, 32, 56, 57, 57, 97, 72,255, 30, 88,180,104, 17, 62,126,252, 88, 86, 82, 53,213,171, 87,215,184, -185,185,105,220,220,220, 52, 58,157, 14,217,217,217, 72, 79, 79, 47,154,223, 83,202,253,148,216,219,207,117,116,116, 12,178,183, -183,127, 33,149, 74, 47, 60, 39,228,149,218,205,205,190,101,207,158,196,179,127,127,254, 7,153,140,248, 3, 10, 67,108,217, 88, - 9,125,188,219,117, 17,167,167,237, 6,144, 43, 82,141, 28, 97,139,187,254,181,112,239, 78, 35, 76,154, 80, 21,132, 39, 5,225, -137,161,204,185,129,166, 77,154,139, 44, 44, 72,183, 50,202,122, 48,128,231, 45, 91,182,116,154, 56,113, 34,145, 72, 36,152, 60, -121,178,110,244,232,209,111, 6, 13, 26,244,230,250,245,235,172,155,155, 27, 42, 84,168, 64, 42, 84,168,224, 8,224,121,222,111, - 74,133, 89, 85,178, 92,163, 11,189, 99,225, 46,127,207,194,166, 69,182, 94,210,119,209,154,184,148,101, 91,194,215, 70,188, 86, - 86,121,253,240,118,202,155,144,179, 92,196,227, 91,201,113,111,178,170, 44,219, 18,190,118,238,111,177,197, 62,212,254,254,224, - 78,158,243,215, 41,115,148,130,158,221,189,149, 99, 71, 13,168,110,165,168,117, 0,206,223,213,171,232,234, 50,100,209,202, 77, -186,209,227,166,234,118,253,177,155,102,101,101, 33, 51, 51, 19,155, 54,109, 98,206,158, 61, 27,203,178,236,212,146,198, 64, 0, -160,215,235, 49,118,236, 88,185,153,153, 25,162,163,163, 11, 20, 81, 0,136, 79, 74, 9,190,247, 56,228,213,244,159,250,121,229, -104, 52,154,203,183,158,132,122,186,187,185, 16, 66, 75,220,136, 34, 22, 10, 59, 54,106,218,148, 79,105, 58,136,192, 21,239,246, -173, 70,230,199, 84,100, 38,166,130, 47,148,131,129, 4,122, 78, 12,139,186, 77, 16,246,248, 25,156,109,237, 5, 18,161,208, 24, - 58,203, 8, 35,254, 71, 81, 26, 23, 41, 76,150, 86,173, 90,181,178,180,243,133,222,181, 69,142, 11,136, 84, 81, 18, 86,248, 51, - 0,172, 90,181,106, 37,165,180, 91, 64, 64,192, 97, 0, 42, 3,249,194,152,252,247,194, 94,226,203,100, 29,124,181,214,111,230, -156, 5,176, 52,151,153, 55,105,224,238,112,230,146,255,147,219, 1, 79, 66, 43, 86,176,177,165,122,173,229,175,235,126,115, 33, - 74,149,161,139,193, 61,108,108,108,160,211,233,240,246,237, 91,196,196,196, 64,167,211,129,201,201,129, 38, 61, 29,234,180, 52, -176, 57, 89, 16,177, 44, 84, 73,137,176, 54,145, 2,127,239, 72, 44,235, 6,139, 37, 90,249,239, 82, 51, 51, 72, 76,205,192, 19, - 10,139,157, 86, 44,193,102,195, 38, 77,154, 28, 11, 9, 9,105,218,161, 67,135,101,132, 16,115, 74,233,135,216,216,216,246, 11, - 23, 46,212,216,219,219, 99,236,216,177, 53, 0, 12, 43,147,100,138,181, 30,110, 14, 53, 80,189,202, 48, 84,172,208, 14,233, 57, -122, 36,101,234,145,152,174,195,246,205,205,113, 98, 87, 19,220, 61,209, 26, 33,151, 59, 34, 93,239, 0,133,211,247,160,172,182, - 86,105, 54,175, 94,189,138,165, 75,151, 98,217,178,101, 88,177, 98, 5,150, 45, 91,134,216,216, 88,212,174, 93, 27, 81, 81, 81, -184,120,241, 34,226,227,227, 97, 99, 99,131, 71,143, 30, 97,253,250,245,184,123,247,174, 33,202,157, 65,215, 16, 66,202, 53,151, -206, 48,204,240,248,158, 61,235, 36, 88, 89,121, 54,104,208,160,203,228,201,147,171,180,108,217,178,224,124,149, 42, 85, 92,101, - 50,217, 71, 66,200, 46, 66, 72,253,210,108,113, 64, 3, 91,219,218,208,106, 94,229,149,149, 16,132, 72,209,174, 99, 40, 90,182, -126, 2,157, 94, 4, 30,145,128,199,147,130, 97, 82, 96,105,233, 4, 74, 73,237, 50,146,184, 48, 41, 41,201,253,218,181,107,188, -136,136, 8, 72,165, 82, 0,136, 92,188,120,241,111,107,215,174,125,105,109,109,205,158, 59,119, 14,167, 79,159, 70,183,110,221, -248,163, 71,143,118,175, 80,161,194,182,178,238,123,209,198,184,251,135,214, 93, 28, 40,212, 91,214,151,202, 42, 86, 66,142,226, -251, 9,109,109,229, 0,112,241,221,187, 44, 59,215,204, 85, 57, 89, 65, 81, 22, 46,217,191,148,181, 16,158,210, 69,220,211, 55, -175, 30, 28, 58,117, 41, 35, 49, 33, 77,216,160, 78, 45,149,223,210, 89,162,138,149,170,253,186,104,206, 79, 14,177,153,210,244, -142,147, 47,190, 58,121,233, 81,246,208, 17, 63, 50,163,198, 76, 84, 95,188,116,245, 20,199,113,117, 74,218,113,200,113, 28,226, -227,227,241,226,197, 11,132,135,135, 35, 41, 41, 9,201,201,201,200,202,202, 42,152,110, 52,201,202, 60,255,219,158,179,129,114, -153,204,164,105, 29,119,215,135,207, 94, 38,202,101, 50, 19,247, 74,174,213, 9, 89, 82,108, 59,194,178,108, 29,169,137, 12, 0, - 65,122,200,109,100,167,101, 35, 59, 61, 27, 89,169,217,208,232,248, 80,107,120, 80,105,121,112,243,250, 14,217, 57,106,100,167, -100,128, 99,217,122,198,238,198, 8, 35,140, 40,165, 95, 62,231,235,235, 59,207,192,203, 13,158,222, 44, 74,188,124,125,125,231, - 17, 66,206,205,157, 59,183, 22, 12, 88,211, 76, 41,221, 81,244,149,127,174, 76,247, 14,201,201, 97,217,102,182,158,189,167,205, -254,249,226,225, 63, 54,219,105, 52,202, 40,107, 75, 5,171, 48, 17,219,140, 26,187, 2, 89,217,105,189,178, 83, 13,223, 37,149, -150,150,134,247,239,223, 67, 38,147, 65, 36, 20,130, 85,169,192,170,114,160, 74, 75, 1, 79,167,129,136,101, 97,101, 34,131,155, -147, 3, 42,218, 59, 24,100,243,237,141, 43, 5, 11,223, 11, 79, 23,174,110,226, 1,177, 92, 1,177,169, 2,227,207,221, 2, 0, -136, 68, 34, 96,225, 50, 67, 10,211,198,217,217,249,175, 67,135, 14,137,146,146,146,240,252,249,243, 64, 74,105, 6, 33,196, 20, - 0, 23, 26, 26,122, 45, 36, 36,164,155,187,187, 59, 0, 84, 45,203, 94,102, 50,143,213, 51, 20,209, 31, 35, 17, 17,243, 12, 86, -230,149, 33, 52,169,142,196,116, 29, 36,178,202,208,107,254,158,125, 84,103,126,128, 74,103,216,198, 72,173, 86, 11,134, 97,192, - 48, 12,180, 90, 45,198,140, 25,131,123, 1, 1, 56,114,250, 58,222,191, 11, 67,141, 74, 14,248,225,135,161,104,210,164, 9, 2, - 2, 2, 74,181, 53,188, 1,209,207,111, 3,193,186, 46, 60,136, 21,214,154,102,115, 46, 63, 52,132,108, 81, 74,137, 1,249,185, -182, 91,183,110,213,194,114,114,240,226,213, 43,116, 88,188, 24, 0,112,225,194,133, 79,238,101,250,244,233,226,151, 47, 95,142, -122,242,228,201, 40, 66,200, 58, 74,105,241,139,205, 41,112,254,252,125,252,244,211, 75, 36, 37,229,174,215, 62,122,248,111, 94, - 26,241, 94,135,206, 62,185, 51, 90, 22, 22, 22, 88,183,174,182, 65,249,201,178, 44,118,236,216, 81, 48, 93, 8, 0, 2,129,160, -229,244,233,211,123, 23,119,125,181,106,213, 68,101,217,156,222,207, 69,250,252,131,108,130,121,181,138,181,204,108,234, 34, 69, -255,172,246,179,216,248, 73,211,251,185,108, 88,119, 60, 70, 45, 35,154,189,132,141,174, 32,144,170,247, 25,146,198,119, 23, 55, -105, 45, 42,142,216,247, 49, 41,115,254,196, 31, 7, 91,155, 89,216,229,236,250,205,207,146,199,231,209,191,158,232,210,107, 85, -177,182,248,190,217,198,236,159,166, 45,124,166,101,162, 39, 34,250,175,176,210, 92, 92,176, 44,139,184,184, 56, 36, 37, 37, 33, - 42, 42, 10,201,201,201,121,207,126,242,103, 59, 87,203,217, 32, 66, 21, 21,133, 15,167,118,161,226,208,161,104,188,108, 41, 88, - 78, 0,149,146,197,186, 22,237,145,150,161,130,134, 35,112,106,216, 2, 63, 94,184, 3, 30,101,129,237, 91,140, 61,137, 17, 70, -252,143,194, 16,247, 14,249,132,200,207,207,175,219,183,254,255,194,100,203,207,207,239,133,159,159,159,193,255, 85,116,202,176, -240,113,153,238, 29, 0, 32, 51,233,101,184,181, 91,221,184, 28, 85,142,137,189,157,173,198, 68, 42,225, 50, 50,179,248,207,130, - 3,117,217,241,111, 95,151,227, 62, 66, 67, 66, 66,106,199,197,197, 33,234,195, 7, 48,170, 28,240, 52, 90, 80,181, 18, 29, 90, -181,128, 20,128,148, 71, 32,226,116, 16,240,197,200,202,206, 4,128,208, 50, 59, 71,189,254, 51,101,139, 16, 2,177,169, 41,196, -114, 57,196, 10,211, 79, 20, 46, 67, 20, 27,137, 68,114,232,248,241,227,142,206,206,206, 88,186,116, 41, 92, 92, 92,106,214,169, - 83, 71,217,186,117,107,153,189,189, 61, 60, 61, 61,209,162, 69, 11, 92,188,120, 17, 0,202,244, 41,165,103,164, 65,175, 35,209, - 50, 57, 53, 0,119,110,253, 14,173, 74,131, 6, 94,191, 67, 39,168, 8,219, 90, 75,192,189, 61, 0,229,199, 51,185,234,129, 67, -119,196, 68, 69,130,240,197, 47, 12, 85,158,242, 63, 7, 6, 6,226,240, 25,127, 56,186,121, 32,234,205, 43,188,186,121, 13,247, -108,173,225,230,225, 89, 48, 13, 84, 98, 26, 89, 8,150,111, 41,112,239, 32, 73, 77, 77,149, 88, 89, 89,105,242,243,206,209,209, -241,107,200,214,224,153, 51,103, 34, 93, 40, 4,124,124, 32, 10, 15,135, 78,167, 67,179,102,205,208,184,113, 99, 0, 64,179,102, -205, 32, 16, 8, 80,183,110, 93, 56, 57, 57, 97,203,150, 45,131, 81,194,174, 62, 30,193,115,134, 73,169, 89,165, 74,149, 2,162, -181,111,127, 18,158, 61,233, 8, 2, 49, 54,253,246,183, 55, 7, 87, 87, 87,124,140, 15, 7, 33, 52,164,140, 52, 46,115,112,112, - 88,232,232,232, 88,101,237,218,181,124,169, 84,138,113,227,198, 85,206,206,206,174,152, 39, 37, 99,238,220,185,185, 42,213,162, - 69, 88,188,120, 49, 52, 26,141,178, 36, 99,251,215,215,117, 74, 76,229, 70,217, 59, 56,247,242,182,169, 88,167, 93,167, 14,168, -236,222, 14,237, 58, 69, 1,192, 74, 43, 65,100,255,213, 11,106,159,178,169, 96,181,251,202,165,171,139, 90,121,181,155,239, 59, -214,114,249,170,237,105,101,174,121,204,248,176, 55,235,181,120,192,250,205,219,246,175,255,121,238, 20,105, 84,146, 54, 45, 54, -141,102, 43, 36, 2, 69, 85,123,162,152, 52,123,217,251,184,184,240, 25,136,190, 84,230, 78, 75,142,227, 16, 30, 30, 94,176,166, - 79,173, 86, 35, 39, 39, 7,209,209,209, 5,117, 70, 37, 55,235, 60,113, 68,247,122, 57, 42,149,242, 97,240,155,168, 5,147,135, - 52,207, 81,169,148,111, 34,162,194, 40,221, 88, 44, 27,227,241,120,193,202, 44,101, 7,101,186, 26, 73,207, 95,195,165,189, 27, -244, 12,129,150, 97,145,148,146, 5, 13, 3,176, 60, 33,106,245,255, 1, 44, 17, 32, 57, 46, 22, 60, 62, 63,208,216,221, 24, 97, -196,255, 44,202,116,239, 64, 8, 57,215,188,121,243, 35,133, 85,167,252,207, 0, 52, 0, 74, 91,202,147, 84,152, 76,229, 79, 39, -150,244, 63, 69,236, 26, 58,192,252,108,141, 86,153,238, 29,242,126, 72,234,213,113,115, 90,189,104,136, 11,199, 48, 53, 18,147, - 19, 24,129, 64, 34,172, 96,174,138, 47, 79, 14,106, 52,154,115,215,174, 93,235,217,177, 99, 71,201,155,224, 64,104, 51, 50,160, -205, 72,135,144, 99, 96, 37,107, 4,158, 78, 3,162,213,194,185, 38, 7,117,150, 12,254,247, 66,244, 26,141,230,156,161, 68,139, -199,231,127,186, 46, 75,161,128,196,212, 12, 18,133,162,232,212, 34, 41, 35,163, 76,122,244,232,209,190, 89,179,102,160,148, 98, -199,142, 29,208,233,116, 98,157, 78, 7,173, 86, 11,157, 78,135,204,204, 76,236,223,191, 31, 91,183,110,189, 7, 96, 79,153,157, - 25,163,189,118,249,234,141, 38, 35,135,116, 19, 94, 56,183, 14,140,150,133,138,184, 32, 39, 71,143,108,173, 9, 88,235,161, 64, -194,121,240, 5, 82, 52,175, 91, 25,103,254, 60,169, 3,163,185,110, 32, 11,255, 68, 21,138,142,138, 68,204,187, 48, 40, 50, 63, -194,214,204, 4,202,240, 48, 52,248, 97,216, 23,169, 19, 21, 42, 84, 0,199,113,240,246,246, 46, 88, 92,253,165,100, 43, 37, 37, - 5,103,207,158, 69,179,102,205,224,229,229,133,216,216, 88,132,135,135,163,107,215,174, 5,215, 4, 6, 6,226,217,179,103,168, - 90,181,116,145, 48, 57, 85,127, 33, 38,250,121,191,239,191,255, 94,244,224,193, 3, 80, 74,225,238,110, 6, 51, 83, 57, 8, 79, - 2, 15, 15, 59, 0,185, 99,128,182,109,219, 34, 51, 51,156, 73, 75,163, 23,202,200,199, 67,132,144,211, 90,173,246,109,155, 54, -109,156,222,189,123,135,105,211,166, 9,142, 30, 61,154, 47, 37,195,215,247,211,205, 20, 42, 85,201, 83,247, 53,234,212,156, 85, -153,177,244,146,202, 42, 86, 50,179,169,139,202,238,237, 0, 0, 29,187,141, 68,229,106,174,200, 76, 14,170,164, 86, 69,246, 18, - 9,210, 44,131, 54,197,190,148,249,212, 30,161, 78,188,245, 6,128, 33, 14,128,169,234,205,209,132, 40,225,208, 99,167,255,186, - 56,182,107,183, 30, 66, 61,203, 48,181,221,132, 22,199, 79,157, 79,140,253, 16,181, 17, 81,151, 66,254,214,255, 74, 85,241,216, -204,204, 76,200,229,114,132,132,132,104,124,124,124, 36, 60, 30, 15,111,223,190, 45, 32, 90,118, 54, 86,158, 45, 27,215,174,185, -124,253,254,203,114,137, 68,210,169,109, 35,143,151,111, 62,196, 80, 74, 34, 75, 84, 91,245,250,171,193,207, 3,189,109,157,170, -241,195,111, 61,128,117,235,174,208,104,120, 80,105, 57,104, 24,128,225,139,224, 88,191, 41, 44,170,122,128, 2,120,252,224,158, - 94,163,215, 95, 54,246, 53, 70, 24,241, 63,173,106,209,210, 72, 82,222,231, 84, 0,145,126,126,126,201,133,212,166, 36, 0,129, - 0,234,229, 93,151, 84,228,119, 73,200,221, 61,216,184,144,157,164, 66,132,171,240,103,109,145,107, 12, 26, 0, 22, 94,163, 85, - 44,209, 42,101, 75, 37,108,108,108,236, 26, 52,104, 84,117,231, 31,199, 64, 41,197,235,103,107,144,150,248, 10, 11, 87,222,175, -234,226,226,226, 21, 19, 19,227,111, 72, 34, 88,150, 61,186,123,247,238, 25, 77, 27, 54,104, 80,201,197, 5,129,145, 17, 16, 81, - 22, 34,150, 5, 79,167,129,128,213,194,165, 54, 11, 30, 81, 32, 46, 46, 3,171, 14, 29, 11, 97, 89,246,104, 89,118,107,118,237, -129,165, 49, 25, 32,132, 96,109,243,218, 16,155, 42, 32,146, 43, 48,254,175, 27, 5,228,234,220,210,185, 16, 43, 20,168,218,180, -108,135,240,148, 82,165,169,169,233,147,224,224,224,198,181,107,215,198,140, 25, 51, 16, 25, 25, 9,142,227,144,144,144,160,142, -143,143,143, 77, 74, 74,138, 4,112, 10,192, 78, 67, 60,143,139, 52,234, 13,231, 78,236,155,216,188,149,151,205,247,189,182,226, -244,159,211,145,158,145, 9, 37, 35, 67,142,154, 65,142,134, 15, 43,235, 58,104, 90,183, 46,226, 98, 19,241,226,193,229,108,129, - 70,185,166, 60, 21,148, 16,130,103,207,158,161,138,147, 41,194,238,248,195,198, 68,136,122, 78, 14,112,106,217,170,192,191, 84, -105, 16,242,193, 12, 30, 60,184,192, 51,252,119,223,125, 23, 49,116,232, 80,199,233,211,167,227,143, 63,254,192,189,123,247, 62, - 91,160,237,229,229,133,219,183,111, 47, 1,176,168, 44, 81, 79,171,213,162,102,205,154,120,252,248, 49,174, 93,187,134,118,237, -218,193,203,203, 11, 65, 65, 65,184,114,229, 10,158, 61,123, 6, 66, 8,172,173,173,161,207, 37,207,250,146,140,233,116, 56,254, -203,175,187,231,173, 95,191,181,214,144, 33, 67,112,226,196, 17,140, 28, 81, 3,132, 39, 1, 33, 18,244,232, 94, 3, 75,151, 61, - 70,211,166,109, 97, 99, 35,196,250,117,103,222,171, 84,236,126, 3,178,113,249,149, 43, 87,156,212,106, 53,210,211,211,169, 66, -161, 32, 41, 41,185, 59, 90,139, 83,180,148, 74,165,180, 36, 67,193, 79, 67,215,164,103,209, 52,154,253,172, 87, 42,243,172, 78, -187, 78,209,232,216,109, 4,174,158,219,131, 27,151,175,193, 74, 16, 25, 1,121,214,197,228,136,228,204,248, 28,247,109, 30, 13, - 71,243, 99,114, 46,111,155,252,189, 37,223,209,145, 59,238,187, 53, 35,189,148, 58, 74, 9, 33, 36,245,229,129,191, 78, 81,244, -104,209,188,105,181,218,174,142,226,180,228, 68,250,231,153,139, 33,186,136, 19,103,243, 9, 86, 89, 81, 22, 40,165, 75,125,125, -125,127,206,251,188,119,193,130, 5,163, 87,173, 90,101,251,241,227,199,130, 53, 90,137,201,169, 55, 90,248, 76, 98, 83,210, 51, -180,187,215,207,238, 43,147, 74,196, 11, 86,237,190,165,231,227, 65, 73,118, 25,142,219,210,127,218,194, 41,111, 94, 63,115,174, - 40, 19,227,204,236, 69, 8,188,114, 19,122,158, 8, 63, 93,123, 8,141,142, 69,122,114, 10,174,143,154, 0,133,189, 37,182,222, - 58,145,192,113,220,239,198,174,198, 8, 35,254,119, 81, 10, 23, 41,206,199, 94,130, 1,215, 61, 54,192,206, 87,163,168,138, 85, - 24, 6,109,193, 75, 78, 78, 78,188,125,251, 33,110,157, 91, 14,255,115,203,241,226, 89, 32,226, 98,181,136, 77, 80,195,204,204, -236,126, 41, 29,127,135,162,157,131, 82,169,236,189, 96,225,207, 31,165, 50, 19,180,105,223, 30, 14,182,118, 48, 17, 9,193,103, - 56,240,137, 16,217, 73, 22, 8, 11, 82, 98,206,238, 3,137,217, 74,101,239,162,157, 68, 81,155,133, 73, 6, 33, 4, 18, 51, 83, -136, 21,166,144,152,154,125, 50,141, 40, 53, 51,131,212,212, 12, 2,177,184,184, 69,243,159,217,204,206,206,238,211,183,111,223, -180,140,140, 12,140, 30, 61, 26,254,254,254,207, 46, 95,190,108, 22, 24, 24, 40, 75, 76, 76,172, 70, 41,253,142, 82,186,189, 36, -146, 85,212,102,106,234,187, 44,202,104, 6,248,253, 60, 85,165,102,172,209,111,216, 81,200,121,209, 96, 88, 14, 20,128,147,149, - 24, 45, 59, 44, 67,162,182, 5,142,110, 91,161,228,116,234, 33,133,125,104, 21,181, 73, 41,165,246,246,246,159,229,193,181,107, -215,208,175,111, 31,116,234,213, 19,182,149,170,192,174, 67, 87,116, 26,253, 19,182,109,219, 6, 30,143, 7, 27, 27,155, 79, 20, -142,194, 54,247, 62,163,194, 67, 65,148, 28, 10,162,100,207, 83, 42, 0,240,195,129, 3, 7,126,169, 87,175,222,205,123,247,238, -173, 1, 48,160,240,127, 21, 74,203,226,194,106, 86, 9,101, 52,127,202,148, 41,170, 55,111,222, 64, 46,151,131, 97, 24,220,187, -119, 15, 91,183,110,197,218,181,107,241,236,217, 51, 88, 91, 91,163,106,213,170,208,104, 52,120,252,248,177, 10,192,252, 82,234, - 18,151,148,196,244,217,180,105, 85, 74,183,110,173,177,123,247,111,112,112,104, 1,161,192, 1, 2,161, 45,228,138,154,216,181, -243, 23,116,233,210, 0,127,157, 57,150,154,156,194,244, 41,234,197,189,132,116,170, 31, 62,124,136,109,219,182,161,111,223,190, -177,253,250,245, 99, 51, 50, 50, 10, 20,173,252,104,236,139,243,214,152,105, 52, 26, 73, 73, 54, 71,207, 14,142,157,181, 60,100, -105,194,199,216,102,254, 55,239, 15,190,113,249, 26,222,191,185,129, 27,151,175,225,206,141, 0,223,132,143,177,205, 26, 52,169, - 46,234, 61,122,226,172,125, 39, 79,240, 21,102,142,216,119,242, 4,127,208,164,169, 43, 26,117,106, 55,191,172, 58,159, 87,142, - 52, 59, 49, 97,238,202, 53,155,179, 25,157,154,183,122,227,150, 56, 85, 82,252,124,228,111,197, 44, 65,205, 42,108, 83,169, 84, -110, 87,169, 84, 78, 42,149,202, 73,173, 86,207,143,140,140,108, 51, 99,198,140, 36,150,101, 11,212,210,196, 23,103,238,135,222, -217,179,210,206,198, 82,214,162,113,173, 26,235,182,255,121, 43, 42, 58,225, 96,190, 15,173, 18,202, 72,157,173, 82,247,233,217, -123,104, 78,122,154, 6,205,167,250,130,147, 42,160, 97, 1, 61,229,131, 33, 2, 4, 47, 95, 7,153,149, 41, 14, 69, 60, 85,102, -232,117,125, 10,251,208, 42,227,222,191, 24, 70,155, 70,155, 70,155,255,158, 54,255,147, 65, 8,113, 44, 28,235, 48,207,175,214, -223,138, 86, 89, 91, 42,157,157,157,219,124,223,163, 3,218,118, 91, 0, 74, 41, 94, 61,253, 21,105, 73,175,225,236, 32, 65,120, - 84,102,115, 0,254,134, 38,134, 82, 26, 69, 8,105, 54,101,254,130,147,253,190,107,239, 81,187, 82, 37, 73,197,138,110,144,219, -217, 33, 57, 57, 9,119, 31,188,212,175, 56,124, 60, 36,143,100, 25, 18,130, 7, 28,199,229, 46,114, 7,208,126,202, 28, 16, 62, - 31,200,115,227,144,223, 49, 86,106,220, 2, 68, 32, 0, 75, 57,104, 52, 26,106, 64, 58, 99, 8, 33,125,134,252, 31,123,215, 29, - 30, 85,241,181,223,185,119,123,205,166,119, 2, 4, 82,232,132, 46,189, 8, 72,232, 82, 68,122, 71, 44,136,130,160,160,116,148, - 31, 10, 34, 42, 32, 29, 81,169, 42,189, 74,232, 29,169,161, 5, 2,233,109,211,147,173,247,206,247, 7,217,117, 9, 41,187, 33, - 40,250,237,121,158,155,205,221,187,251,238,244,121,231,204,153,115, 6, 15, 62,178,123,247,110,166, 75,151, 46, 13,119,238,220, -201, 63, 79, 69,228,165,220,249, 67,233, 29,218,125,254,244,113,191, 52,239,208, 91, 29, 82,167,177,168,113, 85, 22, 70, 19, 65, - 98,194, 35,236,222,113,222,120,243,220,129, 28,106,214, 13,204, 79, 43, 59, 4,143,209,104,124, 92,179,102, 77,239, 21, 43, 86, - 88,141,225, 57,142, 67,122,122, 58,206,156, 57,131,122, 77,154,161,214,136, 81, 72, 75, 75,195,178,101,203, 80,165, 74, 21,244, -232,209, 3, 90,173, 22,102,179,249,177,157,117,197, 1, 56, 80,116, 61, 69,104,139, 20, 42,180,188,109,195, 26, 53,106,136,117, - 58, 93, 67, 95, 95, 95,150, 16,178,212, 96, 48, 12,159, 62,125,186,239,130, 5, 11, 16, 22, 22,134,244,244,116, 40, 20, 10,132, -132,132, 32, 45, 45, 13,231,207,159,231, 10, 10, 10, 86, 0,152, 67, 41, 77, 43, 39,125,247, 8, 33,205,223,125,247,173, 29, 95, -124, 62, 46, 68,167,111, 39,118,115,107, 5, 74,205, 72, 75,139, 69,110,206, 41,227,220, 57,235,238,167,164,154,250, 82, 74,239, -218, 89, 77,159,189,253,246,219, 64, 81, 8,158,152,152,152, 43,181,106,213, 10, 41, 77,163,101,143,124,181, 53, 94, 7,224,167, -255,189,255,202,251, 57,233, 87, 67,220, 4,177, 15,155,215,229,151,125,181, 53, 94, 55,251,125,205,188,244,216,168, 59, 73,249, - 7, 86,108,216,177,157, 29,214,231,117, 46, 64,121,119,154,212,139,110,235,208,163,220,250,161, 13, 27, 54, 12, 36, 68, 91, 61, - 53,227,246,197,145,163,199, 13,112, 17, 21,238,109, 16,144, 81,131,169, 18, 33,189,124,249,242, 67,123, 99,134, 22,195,189, 67, - 8,105, 51,125,250,244, 3,148,210,167,108, 19, 82,211,181, 71, 91,116,127,155,102,101,101, 95, 73,189,249,219, 53, 59,176,206, - 19, 66, 58,214,173, 23,177,253,139, 5,159,123,183,123,239, 3,193,157, 63,142, 1,156, 9,143,162,142,129,147, 24,248,175, 78, - 31, 74,201, 54, 26,251, 56,189,194, 59,197, 41, 78,109, 86, 89, 92,228,101, 79,126,113, 99,120, 20,197, 62, 20,216,243,237,248, -248,248,168, 26,193, 1, 7,239,220,105,211,185, 74,128, 39, 0, 32,230, 97, 34, 18, 82,244, 7,237,221, 54, 44,129,108, 53,222, -180,107,239, 64,137, 68,210,157, 20,185,112,160, 21, 8, 42,109, 54,155,227,171, 85,171, 86,202,211,146, 93, 61,113, 28,151, 98, -103, 58,143, 17, 66,134,212,168, 81,227,243, 71,143, 30,237,160,148,230, 63,111, 77,228,165,220,249,195,205,173, 70,240,233,195, -219, 39,157, 61,182,187, 19, 53, 27,234, 1, 0, 17,136, 29, 10, 42,157,151,151, 55,110,194,132, 9, 43,133, 66, 97, 21, 20,217, -156, 89,108,176, 56,142, 99,141, 70,163,148,227, 56, 22, 0, 97, 24,198, 44, 20, 10,117, 59,118,236, 48,155,205,230,199,122,189, -126,220,115,168, 71, 29,234, 0,123,247,238,173,234,234,234,218,153, 16,210,143, 82, 26,158,155,155,171,159, 57,115,230,233,173, - 91,183,230, 84,171, 86,173,107,100,100, 36,113,115,115,195,133, 11, 23,104, 70, 70,198, 54, 0,159, 80, 74, 99, 28, 72, 79, 12, - 33,164,193,184,241,223,191,225,230,182, 50,146, 82, 52, 0, 5, 33, 12,174,101,103,243,123, 11, 10,184, 31,139, 8,163,189,120, -230, 98,154,180,185,215,175, 95, 95, 7, 64, 88,146,141,150, 67, 34,207,251, 93, 87, 24,251, 58, 81, 22,236,252,234,235,120, 29, - 0,124,182, 36, 43, 27,192,234,119,251,184,241,183, 46,173, 94,228,175,190, 59,245,235,157,218,181,246,192, 69, 68, 68, 4, 51, - 12, 51, 16, 64, 93, 47, 73, 86, 77, 79,113, 54, 71, 8,109, 79, 8,227, 1,224,106,237,218,181,119, 3,136,175, 96, 61,223, 1, - 16, 84,252,253,212, 27,191,157, 1,112,198, 65,172,243,132,144,154,239,127, 56,121,162, 88, 40,124, 21, 28, 87,127,238,175, 91, -169, 51,168,180, 83,156,226,148,255,152, 86,107,108, 73,239, 11,236, 5,184, 31, 19,223, 5, 0, 66, 66, 66,232,189,123,247, 28, -158,112, 75, 90,141,227,137,199,247,159,159, 7, 39, 61, 61,189,241,139, 44, 56, 74,233, 79, 0,126,170, 76,204, 34, 34, 53,167, -232,170,104,186,174, 1,104,246, 79, 54, 42,139, 86, 11, 79,130, 48,151, 40,157, 59,119,126,100, 52, 26, 15, 3,136, 35,132,104, - 0,104,141, 70,227, 1,147,201,148, 66, 8,105,252,213, 87, 95, 89, 60,223,207,165,148, 94,172, 96, 58,120, 0,155,139,174,202, -206,227,102, 63, 63,191,201,238,238,238, 53,116, 58,157, 88,167,211,137,108,215, 0, 50,153, 44,205, 94, 44,141,138,172, 23, 9, - 50,221, 53, 42,242, 12,145,114,243,199,246,194,252,235, 97,110,254,216,110, 47,222,229,203,151, 99, 26, 54,108,184,137, 97,152, -106,148, 82,111,128,186, 80,138, 52, 74,105,186, 64, 32, 72,184,121,243,102,194,203, 50, 0, 21, 17,169,197, 69,151, 83,156,226, - 20,167,252,167,164, 44, 27, 45,129,163, 96,119,239,222, 37,206, 34,117,138, 45,217, 42,235,121,108,108,172, 30,192,233,162,171, -248,119, 47, 2,232,241,178,231, 49, 49, 49, 49,162, 50,112, 70, 79,189,150, 0, 96, 82,227, 18, 66, 59,127,182, 76,155, 11, 96, - 74,251,158,142, 97, 94,185,114,229, 49,128,199,206,150,232, 20,167, 56,197, 41,255,156,148,164,205,178, 59,214,161, 83,156,226, - 20,167, 56,197, 41, 78,113,138, 83, 74, 23, 11,169, 42,201,143, 22, 1,208,169,148, 47,217,237,186,190, 34,167, 15,202,195,119, - 98, 58, 49,157,152, 78, 76, 39,166, 19,211,137,249,223,195,252,175, 74, 73, 36, 11, 0, 72, 5, 14, 37, 57,242,163,157, 42,187, -192,157,152, 78, 76, 39,166, 19,211,137,233,196,116, 98,254,247, 48,255,237, 36,171, 4,194,233,220, 58,116,138, 83,156,242,255, - 91,182,109,219,102, 87, 80,209, 55,166,174,238,174, 84,186,206,204,203,201,254,252,231,197, 35,119, 90,222,239,215,175, 31,231, - 44, 69,167, 56,197, 41, 21, 50,134, 15, 14, 14,172,205,112,124, 75, 74, 25,150, 50,212, 68,114, 10,127,185,175,213, 62,229,118, -160, 74,149, 42, 26, 33,131, 30,132, 82, 5, 33, 60,199,179,204,169,152,152,184,155, 14, 48, 64,177,171,171,235,219, 34,145,168, -147,193, 96, 8, 96, 24, 38, 94,175,215, 31, 46, 40, 40, 88, 94,220,113,225, 63, 41, 97, 97, 97,131,142, 29, 59,166,105,213,170, -149, 94, 38,147,153, 11, 11, 11, 5,251,247,239,151,188,246,218,107, 89,247,238,221,171,208,137, 68,127,127,255, 14,171, 87,175, -174,222,165, 75, 23,212,172, 89, 51,127,224,192,129,162, 22, 45, 90,136, 70,143, 30,253, 32, 33, 33,225,168,131, 76,186, 54, 33, -100, 35, 33,132,229,121,126,104,209,137,196, 23,193,216, 25,134, 97,198, 17, 66,250, 80, 74,131, 9, 33, 49,148,210,157, 60,207, -175,180,199, 59,126, 9,120,175, 3,232,198, 48, 76, 4, 0,240, 60,127, 25,192, 94, 74,233,246,231, 72,227, 11,195,148,203,229, - 13, 1,160,160,160,224, 74,101, 97, 18, 66, 26, 22,117,210, 10, 97, 18, 66, 70,200,100,178, 49, 0, 80, 88, 88,248, 3,165,116, -157,195,137, 89, 89,139, 70,204,142, 6, 0, 92,254, 44, 28, 0,224,208,253,184, 91,196,145,223, 42, 9,207, 33,140,103,203,160, -219,224,193,131, 23,252,248,227,143,159, 81, 74,127,123, 17,109,223,199, 39,112,249,151, 95,175,242,155,244,246,168,207,241, 36, - 34, 68,153, 82,135,144, 87,197, 44,219,211,192,113, 39,110, 2, 91, 1, 8,220,220,220, 6,137,197,226, 54, 6,131,193, 87, 32, - 16, 36, 25, 12,134,227,217,217,217, 63, 81, 74, 77,207,157,192,104,226,106, 44,128, 15,225,255,138,243, 70, 25,232, 69,114, 36, - 35,156,102,190, 4,171,125, 6, 79,252,237,152, 0,172,169,136, 59, 15,150,101, 39,249,249,249,245,201,201,201, 41, 96, 89,150, - 62,129, 37, 79,254, 0, 96, 24,134,240, 60,159,154,145,145, 49,244,255,145, 22, 37,168,168, 92,171, 22,189, 37, 4,224, 13,224, - 42,128, 73,148,210, 60, 39, 5,250,219,234,162,184, 70,107, 15,165, 52,201, 74,180,108,220,221,183,139,140,140,140, 10, 14, 14, -172,221,175,119,223, 5,227,199, 77, 32, 44,203,224,250,141, 27,130, 55,135,142,232,236,230,230,230,175,212,235,107,129, 16,190, - 64, 42,189,110, 50, 25, 19,182,254,244,163, 42, 60, 44,140,227, 56, 30, 43, 86,126,255, 90,112,112,224,199,246,144, 45, 66, 72, -168,143,143,207,198,105,211,166,249,244,236,217,147,245,241,241, 65,108,108,172,230,231,159,127, 14,251,230,155,111, 6, 16, 66, -134, 22,249,242,113, 52,179,173,125,220,152,206, 42, 25,233,136, 92, 14,185, 38, 28, 73, 46,196, 65, 74,233,137,138, 22, 96, 65, - 65,193, 59, 5, 5, 5,205,154, 52,105, 66,215,172, 89, 67,134, 15, 31, 78, 9, 33,164,176,176,112, 61, 42,232,250, 65,161, 80, -124,219,165, 75,151,144,144,144,144,152,251,247,239,119,219,178,101,203,222, 97,195,134, 5, 43, 20,138,187, 0, 66, 29,132, 91, -151,145,145,209,160,176,176, 16, 1, 1, 1,107, 0, 52,122, 1,141,136,176, 44,187,211,223,223,159, 46, 90,180,232,183, 6, 13, - 26,120,107,181, 90,243,148, 41, 83, 58,157, 61,123,246, 53, 66, 72, 79,123,201, 22, 33,196,149, 16,178,210,199,199,199,227,243, -207, 63,191,215,184,113,227,171, 18,137, 68,124,247,238, 93,249,228,201,147,223,103, 24,102, 0,165,116, 28,165,246, 79, 16, 22, - 76,127,127,127,143, 5, 11, 22,196, 70, 68, 68, 92, 23,137, 68,162,187,119,239, 42, 62,250,232,163, 73, 21,197,100, 24,102, 69, -139, 22, 45, 92, 63,251,236,179, 91, 97, 97, 97,167, 89,150, 21,199,199,199, 51,179,102,205,122,155,101,217,254, 60,207,143,175, - 72, 58,189,189,189, 93,103,205,154,117,171, 69,139, 22,103, 69, 34,145,232,246,237,219,204,180,105,211,222,118, 36,157,238,238, -238,237,221,221,221, 87, 37, 39, 39, 11, 0,192,215,215,183,105,141, 26, 53,190,177,141,105,105, 49, 13, 48,153, 76,185, 58,157, -110,112, 70, 70, 70,137,142,112,135, 79, 95,214, 3, 0,190, 49, 90,238,159,188,150,119, 15,172,216,101, 79,190, 35,124, 9, 5, -128, 65, 31, 44,238,253,228,245,201,251, 95,230, 3, 2,129,128,223,232, 75,232,229, 36,251, 93,198, 16, 66,122,117,232,208, 97, -214,209,163, 71,191,111,215,174,221, 71,155, 54,109,242,138,139,139,251,130, 16, 18,248,198, 27,111, 12, 63,114,228,200,194,180, -180,180,109,149,213,254,197, 34,137,132, 48, 4, 50,169, 92,109,207,231,133, 12,211,253,116,175, 94, 99,126,184,125, 59,226,155, -232,232,234,249,190,190,205,222,125,247, 93,239,190,125,251, 50,129,129,129,184,119,239,158,251,166, 77,155,106,253,240,195, 15, -125, 8, 33,239, 81, 74, 31, 61, 15,201,202,207, 66, 61,189, 1, 17,148, 66,243, 87, 25, 33, 75, 98,196,101, 69, 52,185,246, 18, -144,173, 79,215,173, 91,247,217,189,123,247,176,112,225, 66, 0, 88,238,224,248, 51,185, 79,159, 62,145, 59,118,236,144,109,221, -186, 85,214,164, 73, 19,248,248,248,160,104, 49,101,117, 76, 93,189,122,245,255, 87,147,187,187,187,251,154, 7, 15, 30,180, 87, - 40, 20, 79,189, 31, 19, 19,211, 48, 36, 36, 36, 27,192, 7,142, 18, 55, 79, 79,207,205, 60,207,235, 51, 50, 50, 70, 1,128, 74, -165,250, 81,161, 80,184, 38, 37, 37,125,252,162, 22, 50, 86,102, 82,140,139,252,155, 53, 90, 37, 58, 44,181,141,152,205,112,124, -203,241,227, 38,144,129,131,222, 72,190, 23,243,128, 23, 8,197,131,246, 31, 56, 32,175, 93,187, 54,163, 95,190, 28,230,180, 52, -152,222,127,255,149,195,135, 15,155,250, 15, 26, 82, 40,100,201,186,224,234,213,228,191,252,244,179,207,142,237,219, 90, 2,184, - 89,158, 38,203,199,199,103,227,177, 99,199,252,171, 87,175,142,172,172, 44,196,198,198, 34, 63, 63, 31, 3, 6, 12, 16,182,108, -217,210,191, 95,191,126, 27, 9, 33,173,236,213,108, 17, 66,188,107, 6, 8,118,127,249,233,128,208,215, 58,183, 84,248, 7,214, - 0, 77,214, 33,238,126,116,147,221,199,206,190, 27,162, 97,238,220,203,166,221, 41,165, 41,142, 22, 96,122,122,250,212, 62,125, -250,108,111,223,190,189,167, 68, 34,129,159,159, 31,233,217,179,103,106, 98, 98,226,236,231, 32, 46, 40, 90,133,113,182,175,197, -195, 3,217, 41, 1,174,174,174,112,117,117, 5, 0,255,231, 93,121,106, 52,154,229, 42,149,170, 95, 78, 78, 78, 33,195, 48,148, - 16, 66, 21, 10,133,204,213,213,245,207, 91,209,119,252,244,122,125,205,197, 75,127,248,186, 67,235, 6,234, 67,135, 14,161,111, -223,190,244,224,193,131,227, 0,124,111,231,111,172,236,211,167, 79,193,204,153, 51,117,247, 98, 98,253,111,221,137, 33, 10,169, -152,247,240,240, 16,158, 63,127, 94,176,100,201, 18,233,172, 89,179, 86, 2,232,231, 64,186, 87,190,241,198, 27,198, 15, 63,252, - 48,233,246,189, 7, 94,215,110,221,163, 74,169,208,236,225,225,206,158, 61,123,150,175, 8, 38,195, 48, 43,166, 78,157,154, 51, -110,220,184,204, 12,109,182, 79,102, 78, 30,149, 8, 89,147,143,143,143,224,183,223,126,211,111,222,188,153, 25, 51,102,204, 10, - 0,253, 29, 40,226, 21, 61,123,246,204,157, 54,109, 90,214,221,152,135, 62,215,110,222,129, 92, 34, 52,121,123,123,177, 23, 46, - 92, 48, 46, 94,188,152,153, 55,111,158, 93,233, 84, 40, 20, 27,182,108,217, 34,248,237,183, 39, 99,223,153, 51,103,152,224,224, - 96,185,237,103, 10,117,122, 48, 4, 72, 79, 79,151,183,104,209, 98, 3,128,128,103, 72,208,236,104, 12,159, 14,188,243,206, 59, - 73,142,182,151, 8,223,119,113,185, 28,247,183,252,138, 90,116,208, 7,139,123, 11, 4, 2,126,204,152, 49,201,197,159,235,116, - 58, 2,160,103,132, 3,100,171, 91,183,110,159,236,217,179,167,198,166, 77,155,190,218,188,121,179, 1, 0,164, 82,169,199,207, - 63,255,188,112,192,128, 1, 24, 48, 96,192, 76, 0,149, 70,180, 56,202, 25, 1, 64, 34,149, 72,162,163,163, 73,120,120,120,153, -198,173, 70,158,191,248,195,237,219,141,223, 10, 15,111,162,229,249,154,162,215, 94,203,155, 60,121,114,122, 78, 78, 14, 98, 99, - 99, 97, 52, 26, 49,124,248,112,182, 93,187,118,126, 3, 6, 12, 88, 70, 8,121,157, 82,106,180, 67,171,179,216,223,223,127,108, -118,118,118,158, 69,171, 83,171,154, 74,208,166,161, 89, 82,191,166, 73, 44, 98,205,162, 30,239,243,228,224,114,146, 31, 94, 29, - 39, 1, 64, 84,128, 52, 17,240,220, 68,203, 37,144, 84,231,132,152,231, 89, 85,254,106, 90, 76,193,103,121,143,232,242,178, 52, -182, 10,133,162,119,126,126,254,182,162,201, 57,180,123,247,238, 56,123,246, 44, 0,180, 4,176,156, 16,210,129, 97,152, 55,121, -158, 95, 77, 41, 45, 43,148,219,187,189,122,245,122,117,199,142, 29, 42, 0,216,182,109, 27, 76, 38, 19,130,131,131, 33, 18,137, - 32, 22,139, 33, 20, 10,173,209, 65,254, 63, 9,195, 48,146,171, 87,175,194,207,207,175,120, 59, 1,128, 54, 21,128,156, 25, 19, - 19,211,226,210,165, 75,104,223,190,253,204,122,245,234,117,141,138,138,242,201,200,200, 64,251,246,237,151, 1,248,237, 69,231, -201,150,139,252,103,234,169, 24,147,108,247,132,153, 49, 44,203, 50,120, 16, 19,107,106,223,190,227,176,199,143, 31, 43,155, 53, -107,198, 8,133, 66,228, 31, 61, 10,221,133, 11, 80, 42,149,232,211,167,143,240,248,241,227,106,181, 82, 61,250,225,131,135,185, - 44,203,128, 82,166, 92,155, 7, 87, 87,215,183, 63,254,248, 99,159,144,144, 16,152,205,102,171, 71,115,179,217,140,184,184, 56, - 40,149, 74, 12, 29, 58,212, 75, 46,151,191,109,231, 36, 91, 53, 52,216,235,242,177,189, 43, 27, 77, 30,223, 77, 17, 42, 63, 4, - 69,220,123, 80,110,123, 11,181, 18,247, 99, 90,239,102,138,131,223,206,140,168,225,231,118,153, 16, 82,213,209, 66,210,233,116, - 39,175, 95,191, 62, 58, 42, 42,138, 7,128, 63,254,248,131,222,186,117,107,220,243,172, 66,121,158, 71, 86, 86, 22,120,158,103, -139,238, 45,175,255,168,122, 95,173, 86,175,232,218,181,235, 27,143, 30, 61,146,237,219,183,207,253,241,227,199, 30, 15, 31, 62, -244, 12, 13, 13, 21, 44, 92,184,112,143, 78,111,100, 77, 28, 53,152, 57, 83,110,210,141, 27, 49,153, 41, 41,151,215,174, 93, 91, - 72, 8,233, 99,231,111,188,238,235,235,235, 62,125,250,116, 16,161,188,105, 88,173,122, 33,172, 80,230,194, 8,197, 46,133,133, - 58,238,193,131, 7,113,211,167, 79,175,214,160, 65, 3,191,162,237, 53,187, 48,253,252,252, 60, 62,252,240, 67, 8, 36,170,134, -245, 27, 68,212, 16, 75, 20, 42, 86, 40, 83, 53,107,214,172, 93, 76, 76, 76,226,180,105,211,124,155, 52,105,226, 16,102,147, 38, - 77, 92,199,140, 25, 99,150,202, 84, 45,170, 87, 15,174, 85,191, 78,173,200,208,208,208,222, 2,129,192,156,150,150,246,104,232, -208,161,190, 61,122,244,240,118, 4,211,203,203,203,117,218,180,105,230,192,160,224, 46, 93, 94,237,220, 92, 36, 83,185, 8,196, - 10, 77, 65,129,142,187,125,251,246,163, 25, 51,102,248, 54,108,216,208,203, 30,204,130,130, 2,161,135,135, 7,234,214,173,139, -218,193,193,200,206,206,198,142, 29, 59,176,110,221, 58,172, 94,189, 26, 63,253,244, 19, 26,183,234, 12,149, 74,133,196,196, 68, -228,228,228, 8,255,238, 54,197,175,168, 69,191, 49,140,237, 57, 97,194,132,196, 49, 99,198, 36,203,100, 50,190,248,229,230,230, -198, 13, 30, 60, 56,101,232, 71, 75,123, 90,182, 22,203,210,100,117,236,216,241,234,222,189,123,239,111,218,180, 9,181,107,215, - 70,151, 46, 93,196, 0,240,246,219,111,139, 7, 12, 24,128, 45, 91,182, 96,219,182,109, 55, 67, 67, 67, 79, 17, 66,122,217,147, -206,161, 67,135,182,234,223,191,255,137,254,253,251, 95, 25, 56,112,224,170,113,227,198, 61, 53,115, 37, 37,198, 95, 52, 24, 12, -104, 16,209, 68, 62,119,205,185,193,229,225,221, 2, 54,173,138,142, 94,247,249,141, 27,143,102,214,174,173, 9,122,248,208,109, -253,226,197, 30,150, 32,221, 38,147, 9,113,113,113,112,117,117,197,224,193,131, 61, 36, 18,201, 80, 59,218,207,146, 94,189,122, -141,120,252,248,177,242,135, 31,126,240,189,114,229,138, 95, 82, 82,146,239,145,195, 7, 60,167,124,240,182,202, 69, 41, 22, 39, -166, 61, 33,170, 15, 19,161,136,126,128, 86,148, 66, 99,187,157, 88,161,113,193,143,200,228,129,228,155, 26,173, 52,119, 62,220, -210,112,224,180, 95, 27,186,122, 4, 74, 63, 46, 35,157,245, 23, 45, 90,180,117,215,174, 93,131, 90,181,106,181,157, 16, 34, 43, -225, 51,210,198,141, 27,239,216,178,101,203,136,214,173, 91,159, 36,132,212, 45,117, 21, 25, 16,208,231,215, 95,127,117,183,220, -123,120,120, 64, 42,149, 62, 67,178, 68, 34, 17, 24,134,193,255, 39, 73, 75, 75,123,179, 77,155, 54, 91,187,117,235,166,191,116, -233, 18,210,210,210,224,239,111, 93,107, 39, 87, 0,210, 77, 46,151, 35, 48, 48, 16, 33, 33, 33,131,142, 31, 63,238, 99, 50,153, -240,240,225, 67,164,166,166, 94,254, 59,242,100,203, 69,254, 77, 82, 44,206,225, 88, 0,123,158, 33, 90, 69,177,133,142, 1, 0, - 37, 36,255,234,245,235, 66, 86, 44, 30,242,227,230,205, 18,145, 72,132, 71,143, 30,225,230,205,155, 40, 56,114, 4,133,167, 79, - 35, 37, 37, 5,121,121,121,240,246,246,198,202, 53,107, 20, 6,142,142,188,125,231, 14, 75,153,191,236, 13, 74, 59,145, 32,145, - 72, 58,245,237,219,183, 84, 66,150,152,152,136,110,221,186, 9, 89,150,237, 84,130,122,238,112,177,204, 17, 63, 79,178,235,200, -246,185,190,190,226,155,192,189,201, 64,238,101,128,234, 1,179, 1, 72,184, 6,236,153,141,160,188,104,114, 96,238, 48, 31,127, -185, 96, 23, 41,166, 54,178,227,120,107,112,120,120,248,234, 33, 67,134, 48, 0,208,161, 67, 7, 18, 30, 30,190,138, 16, 18, 92, -134, 26,241,112, 57,147,228,217,204,204, 76, 12, 24, 48,192,189, 70,141, 26,135, 7, 12, 24,224,110,121,191,162,152, 22,109,114, -157, 58,117, 50,100, 50,217, 79,132,144,114, 7, 88, 91, 76,141, 70,179,188, 91,183,110,253, 54,111,222, 44, 2,128, 99,199,142, - 97,215,174, 93,184,113,227, 6,238,222,189,203, 71, 68, 68,120, 46, 93,189,117,197,242,239, 55, 44,233,221,178,129, 95,187,166, - 17,181,148,121,153,121,222,222,222, 45, 41,165,193,118,166,179,219,236,217,179,111,222,186,255,200,133, 17, 8, 5, 34,161, 64, -162, 86, 43,188, 93, 85,138, 0, 55,185,212, 95,194, 16,101, 65, 65, 65,242, 79, 63,253,196, 3,232,102, 47,230,220,185,115, 31, -220,186,247, 72, 67, 24,129, 64, 40, 16,138,148, 74,185,230,181, 46,237,155, 0,128, 8, 84,148,147,147,147,178,110,221, 58,163, - 35,152,159,125,246,217,117,109, 86,158,171, 64, 40, 20, 10, 4,172,181, 44, 21, 50,153,167, 92, 34, 17,235,245,250,132,175,191, -254,186,208, 17,204,217,179,103,223,188,125,255,177, 27, 67, 8, 75, 8, 35, 80,171, 20,238,238, 46,114, 79, 79,165,204, 67, 46, - 96,197, 57, 57, 57, 9, 27, 55,110,180, 11,211,104, 52,138, 82, 82, 82,112,235,214, 45, 4, 54,105,130, 67,135, 14,161, 74,149, - 42, 24, 48, 96, 0,222,120,227, 13,200,100, 50,116,104, 81, 15,211,167, 79,199,253,251,247, 97, 52, 26, 37, 37, 97, 90,237,164, -138,137,159,159,223,165,242,218,143,237,119,139,167, 51,194,151,208,111, 12, 99,123,218, 18,172,210,240,221,220,220,184,146,180, - 93,197, 49,187,117,235,246,201,145, 35, 71,106,108,220,184,177,231,208,161, 67, 79,110,220,184, 17,205,155, 55,199,173, 91,183, - 80,173, 90, 53,172, 95,191, 30,111,188,241,198,201,101,203,150,245,188,116,233, 82,131,234,213,171,127, 92, 30,230,192,129, 3, - 39, 54,108,216,240,104,114,114,114, 11,173, 86, 91,119,199,142, 29, 35,251,244,233,243, 96,208,160, 65, 29,173, 26, 45,147,105, -243,158,223,183, 35,178,103, 95,132,213,169,187, 98,248,199,155,234,149,133, 73, 41,165, 55,128, 85,235,146,146,210, 54,235,116, - 5, 3,132, 66,185,252,220, 57,183,109,223,127,239, 97,123,210, 59, 33, 33, 1, 61,122,244, 16,138, 68,162,214,101,165,147, 16, -178,168,119,239,222, 3,118,236,216,225,106,209,234,156, 62,125, 26,215,174, 93, 67,108,108, 44,178,178,178,208,113, 92, 30, 38, - 44,124,130, 61, 97, 33, 69,231,183,169,162,130, 99,136, 85,228, 65,196,199, 93, 45, 56, 53,242,235,176,183,199,174,168, 45, 80, -186, 9,241,227, 71,119,145,114, 79,183,173,148,116,146, 22, 45, 90,108,234,223,191, 63, 49, 24, 12, 48, 24, 12, 6, 74,105, 97, - 73,216,254,254,254,210,250,245,235, 99,220,184,113,140, 90,173, 94, 86, 90, 58,243,243,243,245,123,247,238,197,208,161, 67,241, -222,123,239,161,102,205,154,112,117,117,133, 80, 40,196,134, 77,191,120,188, 49,114,124,104,163, 86,109, 26,212,110,212,188,126, -174,158,109, 34,146,187,141, 33, 37,108, 13,188,136, 19,114, 47, 3,102,189,122,245, 90,157, 63,127, 94,210,166, 77, 27, 60,122, -244, 8, 66,161,117, 61,197, 61, 79, 58,103,207,158, 45,209,233,116,248,243,207, 63, 49,108,216,176, 4,163,209,248,254,139,206, -123,113, 46,242,111, 18, 74,233,170, 98, 87, 82,105, 26,173,217, 0, 96,226,177,107,200,176,145, 5,187,119,239,150,139,197, 98, - 60,122,244, 8, 73, 73, 73,216,176,110, 29,215,193,203, 43,183,139,191,127,206,134,117,235,168,193, 96, 0,165, 20,225,225,225, -232,215,175,159,236,245, 1,131, 82, 73, 78,225, 47,118, 48, 63, 95,203,254,250,200,145, 35,159,121, 62,101,202, 20,168,213,106, - 16, 66,124,236,200, 95,255,119,103,247, 14,112,173,174, 73,161,201, 27,180, 96,165,128, 64, 5, 8,212,128,212, 5,144,168, 0, -177, 28,250, 75, 71,181, 12,237, 18,219,183,245, 40,127, 7,183,122,224,231,231, 55,243,232,209,163,158,151, 46, 93,162, 57, 57, - 57, 72, 74, 74,162, 11, 22, 44,240,244,243,243,155, 89,209, 74, 73, 76, 76,156, 27, 25, 25,153, 50,108,216, 48,151,253,251,247, - 7, 14, 27, 54,204, 37, 50, 50, 50, 37, 49, 49,113,238,243, 84,182, 72, 36, 98,111,220,184,225, 54,111,222,188, 55, 0, 92,172, - 91,183,110, 70, 64, 64,192,197, 34,163,201, 50, 69,165, 82, 89, 73,150, 69,187, 38, 16, 8, 32, 20, 10,225,231,231,103,208,106, -181, 92,235, 70,193,178,112, 23,198,228, 39, 17,201,220,100,210, 0,149,218,165, 89, 70, 70,198, 85, 66,136, 93,241, 9, 9, 33, - 13,155, 54,109, 42,228,168,144,159, 48,164,131,223,219, 35,218,123,125, 55,111, 76,149,175,231,142,245, 95, 52,107,116,248,220, -169,131,219, 51, 60,175,171, 86,173,154,143,197,160,221, 14,245,121, 68,227,198,141, 5, 60,132,184,117, 39, 54,229, 81,124, 66, -238,171,237, 90, 88, 53,151,181, 27, 70,116,241,244,244,108, 19, 30, 30,222,216, 94,159, 48, 50,153,172, 97, 88, 88,152,128, 97, -133,196,221, 85, 21,168, 82,202,188, 45,207,212, 26,205, 43,110,158,158,253, 25, 74,179,125,125,125,189,100, 50, 89, 67, 7,242, - 46,224, 33,130,183,151,155,139,167,135, 70,217,165,125,203,154, 45, 94,105, 17, 90,175, 89,243, 22,117, 26, 53,126,157,152,205, - 57,193,193,193, 94, 22, 35,249,178, 68,175,215, 75, 55,111,222,140,121,243,230,161,126, 80, 16,252,253,253,225,229,229,133,211, -167, 79,227,252,249,243,112,117,117, 69,106,106, 42, 22, 47, 94,140,157, 59,119,194,104, 52,170, 28,109, 79,246,144,173,178,196, -108, 54, 51,197, 9, 86,105,248, 50,153,140,183, 24,201,151, 38,123,247,238,221,100,209,100, 77,154, 52,169,213,210,165, 75, 79, - 70, 71, 71, 67,169, 84,226,252,249,243, 24, 57,114,228,201,101,203,150,181, 26, 63,126, 60,214,173, 91,135, 7, 15, 30,172, 41, - 11,111,224,192,129,179, 70,143, 30,253,117, 84, 84, 20,227,237,237, 13, 87, 87, 87,244,238,221, 27,107,214,172, 17,152,205,230, -181,253,251,247,191,210,191,127,255, 43, 92,220,193, 79,182,174, 94,112,250,250,213, 43,152,248,238,135, 98,131,217, 52,205,142, -129,151, 22, 42,149,185,230, 54,109,180, 91, 76,166,130,129, 34,145,220,229,202, 21,183, 93,107,215, 90,201,214,244,233,211,225, -226,226, 2, 60, 49, 96, 70, 25, 90,157,177, 59,119,238,180,142,135,238,238,238, 16,139,197, 16,137, 68, 16, 10,133, 96, 89, 22, -135, 87, 40,240,253,244, 39,252,226,251,233, 4, 7,151,147,231,138,205,170, 8, 32,117, 93,189,197, 87,222, 90, 95,167, 65,221, -142,238, 56,253,115, 50, 22, 68, 94,138, 63,191, 37,109,178, 46,181,212, 80, 74,141,166, 76,153, 82, 59, 53, 53, 21, 23, 46, 92, -192,133, 11, 23,230,149, 82, 54,186,223,127,255,253,139,188,188, 60, 84,175, 94, 29,189,122,245,106, 67, 8,105, 82, 74,191, 65, -227,198,141,209,163, 71, 15,180,111,223, 30,245,235,215,135,193,104, 22,246, 31, 50, 54,236,198,131, 52,255, 5,139, 23,200,143, -254,177,131, 57,121, 50,138,221,180,253,160, 75,139,246,157,191, 22,169,124,207, 18,185,135,239,127, 93,163, 37,149, 74,151, 70, - 69, 69,249, 24,141, 70, 92,191,126, 29,239,189,247,222,243,198, 12,181, 42, 64, 2, 3, 3,113,236,216, 49, 12, 30, 60, 88,151, -146,146,114,230,239,202,147, 45, 23,249,175,136,192,134, 65, 90,229,241,227,199, 89,110,110,110,254, 97, 97, 97,140,193, 96,120, -178, 37,177,109, 27,183,122,237,218, 61, 58,157,238, 93, 0,162,229,223,125,183,194, 63, 32,160,253,144,161, 67,137,201,100, 66, -100,100,164,120,247,238,221,238,247, 83, 82,202, 13,136, 92,124,181, 49,124,248,112, 44, 93,186, 20, 0,240,206, 59,239, 88, 85, -235,196, 14,131, 37,165, 11,186,117,233,222, 88, 29,167,248, 70,109,124,197,148, 87,245,190,234,172, 34, 79,214, 24,140, 88, 0, - 41, 11,222,104, 50,223, 77,237,115,241,254,221, 90,181,101,218,140,106,157,234,180,197,234, 67, 27,187, 1,216, 98,247,170, 78, - 46,111,170, 84, 42,113,241,226, 69,109,227,198,141,179, 40,165, 46,115,231,206,245,144,203,229, 77,159,131,253, 62, 36,132,180, -105,217,178,229,219, 12,195,116,226,121,254,112, 74, 74,202,114, 74,233, 67, 59, 39,237, 9, 0, 62,131,141, 29,138,193, 96, 0, -195, 48,160,148, 98,224,192,129,152, 62,125,122,237,107,215,174,225,232,209,163,110,157, 58,117, 58, 75, 8,201, 2, 48,138, 82, - 90,162,214, 44, 39, 39,167,240,252,249,243,178,163, 71,143,130,231,121,184,185,185, 65,173, 86, 67, 34,145,160,119,239,222,202, -105,211,166,117, 60,112,224, 64,106, 78,213, 42,172, 52, 41, 33, 95,162, 84,170,224,227,223,122,252,160, 55,163, 41,165, 59, 29, - 24, 28,196, 50,129, 89, 71, 56, 61,179,232,211,101,140, 92, 36, 34, 82,145, 0, 18,190, 0,159,124, 49,159,136, 40, 39,128,131, -251,243, 34,145, 72,164,146,192,192,138, 89,147,156,160, 82,156,195,177, 44, 43,150,138,160, 47,237,185,144, 97, 24,134, 97, 68, - 0,204,246, 98, 74, 36, 18,145, 74, 66, 75,197,148,177,132, 37,132,136,241,228,116,214, 51, 18,225, 75,168,141, 22, 73,111, 75, -138, 91,183,110,141, 61, 71, 47, 98,219,174,195, 72,127,116, 21, 51, 62,154,132, 38, 77,154, 96,247,238,221,101,166,201, 98,163, - 85,154,118,217,207,207,239, 82, 98, 98, 98,163,210,190, 91,146,141, 22,191,162, 22, 29,250,209,210,158, 37,105,169, 74,196,255, -212,229, 9, 86, 25, 54, 90,132,144, 94,173, 91,183,158,184,121,243,102, 67,215,174, 93,197, 3, 7, 14, 68,221,186,117, 91,141, - 24, 49, 2, 0,208,169, 83, 39, 44, 93,186,180,213,136, 17, 35,240,203, 47,191, 96,199,142, 29,250,118,237,218,125, 68, 8, 73, -160,148,238, 45, 9,147,231,249, 30, 43, 87,174, 44,174, 41,132,217,108,134,201,100,242, 53,155,205,190, 69, 99, 17,190,254,122, - 89,250,193, 3,187,241,209,199,179,225,229,233,211,208,206, 54, 68,134,127,248, 97,250,250,197,139,177,248,151, 95,240, 97,181, -106,242,141, 55,111,226,160, 78,135, 45, 71,143,166, 23,253, 78,185,182,153,249,249,249,133,123,247,238, 85,111,217,178, 5, 26, -141, 6, 53,107,214,132,155,155, 27,132, 66, 33, 24, 86, 6, 86,228,138,176, 58, 77, 1,156, 7, 0, 84,243, 67,126,120,117,156, - 36, 4, 89,148, 41,189, 13,151,218, 71,131, 72, 85,239, 32,105,212,196,117,117, 53,106, 47, 17,246, 47,127,140, 3,223,196,237, -212,165,227, 43,152,113,187,140,195, 26,141,171, 87,175,142,212,212, 84,236,221,187, 55, 31,192,151,165,253, 6,207,243, 95,124, -247,221,119, 83, 62,254,248, 99, 73,120,120, 56, 0, 52, 4,112,161, 68,210,167, 80,192,223,223,223, 74, 44, 7, 14, 27, 31, 60, -110,242,120, 89,159,206,237, 33, 16,120, 32, 43,223,132,140, 92, 19, 92, 61,148,248,104,114,127,233,225,198,254, 77, 86, 46,251, -241,119, 66, 72, 19,250, 34,157, 69,254,195,226,238,238,222, 48, 35, 35, 3, 15, 31, 62,196,176, 97,195, 18,210,211,211, 15,229, -231,231,143, 76, 76, 76, 4, 0,109, 5, 32,173,100,190, 97,195,134,104,218,180, 41, 6, 12, 24, 32, 45, 40, 40,232, 31, 28, 28, -236, 15,224,149, 23,153,159,226, 92,228, 63, 69,180, 74,156, 16, 76,166, 48,253,138, 21,200, 63,124, 24,226,131, 7,177,197,207, - 47, 79,167,211,125, 64, 41,141, 43, 26,244, 38,173, 91,191,254, 84,207, 51,103,212,134,232,104, 4, 95,187, 6,161, 70,211,208, -209, 4,172, 93,187, 22, 57, 57, 57,200,206,206, 6, 0,124,243,205, 55,200,201,201,129,197,150,161,220, 12,136,208,202,199,171, - 26,146,113, 23,188,128, 81,198,134, 21, 52, 87,234, 84,137,254,143,189,243,179, 25,127, 68, 63,106,166, 40,204, 48, 52, 39,172, - 1,186,244, 2,248,183,172, 9, 1, 4,173, 28, 73,163,101,223, 95, 32, 16,104,239,220,185,211, 35, 52, 52,116, 23, 0,143,231, -181, 7,160,148,222, 3,240,110, 5, 73,192,103, 15, 30, 60,240, 90,179,102,205,219,115,231,206,165,182, 68,203,242,191, 64, 32, - 0,165, 20, 46, 46, 46, 16, 10,133,222,167, 79,159,246,110,214,172,217,183, 69, 3, 90, 73,249,164,117,235,214,197,131, 7, 15, - 32, 16, 8,224,226,226, 2,222,108,196,236,201,227,193,177, 18,193,212,169, 83, 27,246,237,219,247,250,154, 53,107, 76,234, 22, - 45, 95,201,200,200,184, 49,113,240,144,235,191,253,246,155,129,231,249,149,118,230,249,202,221,187,119,217, 0, 63,111,150,154, - 11,120,133, 8,144, 94,253,154,138,149, 62,144, 10, 88, 42, 34, 12, 36, 82,153,203,195,248,248, 12,158,231,111,217,131,201,243, -252,229, 7, 15, 30,200,188,189,220, 5, 5,133,134, 60,153,144,138, 99, 47, 95,140,169, 26,209, 56, 24, 0,116,151,207, 31,147, -132,213,146,197,166,164, 41,170, 85,171,102, 23,102, 97, 97,225,149,132,132, 4,214,219,219, 91,240, 40, 46,254,119,141, 82,225, -169,214,104,154, 3,128, 49, 55,251, 60,163,215,167,177, 66,129,119, 90, 70,134,182,176,176,240,129,189,121,191,127,255,190,192, -215,215,139,221,127,240,200, 46,111,185,196, 75, 37, 22,168, 37,132, 16, 57, 75,114, 68,102, 62, 93, 42,151,123, 61,140,143,215, - 82, 74, 75,213, 16,126,158, 53,164,207,147,250,154,253,139, 13, 54,174, 94,189,138,125, 39,111, 65, 65, 13, 32,186,108, 28, 92, -247, 3, 6, 79,253,248,185,237,254,202, 35, 91, 21,210,102,173,172,117,169, 24, 62, 18,203, 49,132, 31, 60,120,240,236, 77,155, - 54, 89, 13, 80,110,221,186,133, 14, 29, 58, 88,182, 57,208,165, 75, 23, 52,107,214, 12,183,110,221, 66, 72, 72, 8,142, 30, 61, - 42, 97, 89, 86, 50,100,200,144, 5, 0,246,150,151,222, 85,171, 86, 97,228,200,145, 37, 25, 86,223, 7,160, 35,174,225,121,211, - 63,223,224,161,205, 72, 71,106, 90,242, 21,123,203,129, 16,130,225, 31,126,152,190,210, 96,192,230,115,231, 48, 84,161,144,175, -191,119, 15,145,205,154,161, 94,135, 14,233,246,140,117, 22,173,142, 78,167,131, 80, 40,132, 90,173,134,187,187, 59, 68, 34, 17, - 88,161, 31, 4,226, 6, 96, 68, 34, 68,180,110,128,197, 31, 40, 10,134,189,134,101,132, 32, 75, 34,198,101,145,188,100, 91, 29, - 66, 8, 81, 84, 65,111, 74,145, 83, 16,135, 63, 44,132, 68, 83,149,184, 40,213,194,131,163,191, 13,215,168,189, 68,216,183,236, - 17, 14,126, 27,191, 93,151,140, 25, 0,238,151,117,186, 88, 34,145,212,211,104, 52,136,139,139,195,227,199,143,111,150,101,224, - 79, 41, 45,104,209,162, 69,140, 68, 34,169,237,233,233, 9, 0,213, 75, 75, 39,207,243, 86, 59,172,141,155,183,122, 52,108, 19, - 44,125,181, 85,109,108,216, 53, 31,111,245, 95, 6, 33, 75,192,113, 70,124,181,180, 59, 56,125, 30,250,247, 28, 75,218,118, 10, -105,112,120,151, 97, 52,128, 31,254,171, 68, 43, 62, 62,254,221, 54,109,218, 44,200,205,205,205,204,207,207, 31, 12, 0,213,171, - 87, 15, 98, 24, 70, 2, 96,110, 25,237, 41, 8, 37,187,133, 16, 93,187,118, 13, 42,149, 10, 9, 9,127,197,164,143,139,139, 3, -207,243,122, 56,165,172, 62, 26, 65, 41,189, 76, 8,241, 5, 16, 9, 27,247, 14, 76,145,170,174,237,158, 61,123,232,158, 61,123, -218, 90, 39, 47, 74,121,179, 86, 11,170,127, 82,182, 66,161,144, 2,176, 61,209, 36,215,104, 52, 68, 24, 16, 0, 34,121, 98,250, - 65,109,246,132,159, 87, 76, 38,251, 92,203,240, 28, 88, 16, 35,168,141, 18, 35, 95, 74, 48,223,163, 35,222, 21,207, 68,178, 88, - 99,219,179, 1, 51, 5, 7,158,117, 48, 57, 52, 63, 63, 31,102,179,217,181, 70,141, 26,123,204,102,179,171,101,107,224,159,170, - 84,142,227, 98, 88,150,197,219,111,191, 13,139,246,199, 96, 48, 32, 57, 57, 25,122,189, 30, 6,131, 1, 15, 30, 60, 64,118,118, - 54, 12, 6, 3,110,220,184,129,234,213,171,131,101, 89,223, 50, 26, 10,165,148, 34, 48, 48, 16, 85,171, 86, 5, 75, 40, 86, 47, -154,133, 79,222, 27,143, 55,170,243, 88,187,252, 43,180,107,215,174, 86,181,106,213, 90, 8, 4, 2,206,199,199, 71,180, 99,199, -142,223, 57,142,235,237,128, 31,173,189,211,167, 79,175, 90,167, 78, 29, 47,141, 90,101,146,136, 89,136, 77,249, 84,162,207,160, -130,130,116, 4, 6, 6,153, 33,147,135, 12, 29, 58,148,179,103,114,180, 96,126,240,193, 7,190,225,225,225, 46,174, 26, 85,190, - 88,200,166,138, 64,211,179,175, 94, 56, 11, 0, 98, 79, 47, 29,164,242,218,195,134, 13, 51, 59,130, 57,115,230,204,234,158,158, -158, 26, 6, 52,151, 51, 26,255,218,111,215, 27, 50,136, 80, 88, 8,145,184,241, 59,239,188, 67, 28,193,156, 50,101, 74,181,218, -181,107,107, 52,106, 69,158, 64,200, 38,137,120, 62, 73, 10, 62, 89,104, 48,102, 74, 61, 61, 10, 32, 87, 70, 12, 29, 58,180, 84, - 76,139, 54,107,218,180,105,113,197,136, 55,180, 90, 45,116,201,215, 33, 74,136, 70, 3,165, 16, 77, 60, 93, 33,145, 72,172, 71, -223, 75,107,174,165,217,104,149, 68,182,236,253,110,227, 57,101,108, 1,174,172,117,169,184,223,172, 34,252, 50,251,211,143, 63, -254,248,113,251,246,237, 83,187,116,233, 98,216,179,103, 15, 8, 33, 56,122,244, 40, 18, 18, 18,208,165, 75, 23, 80, 74, 45,167, -218,112,229,202, 21,116,234,212,201,208,166, 77,155,132, 31,127,252,241, 51,123, 42,103,228,200,145, 48,153, 76,200,203,203,131, - 86,171,197,238,221,187,209,160, 65, 3, 42,151,203,251,178,129,157,231,247, 31,253,241, 43,117,235, 55,196,183,203, 22, 27,196, - 2,225,231, 14, 14,194, 24,246,193, 7,233,217, 17, 17,218,141,249,249, 5,195,213,106,121,141,184, 56,183,139, 7, 14,120, 24, -141, 70,187, 48, 44, 90,157,128,128, 0, 43,201, 18,137, 68, 16,136, 61,193, 42,234, 65,236,222, 5,114,159,190,248,227,178, 68, -239,162,192, 78,149, 18,251, 21, 26,148,234,218, 65, 30,136,249,175, 12,244,221,209,242, 13,223, 35,242, 42, 88, 67, 8, 97, 8, - 33, 12, 21,144, 29, 35,190, 10,173,225, 89, 85,134, 51, 91,147,113,240,219,248, 95,117,201,152, 5,224, 94,121,253,220,104, 52, -234, 56,142, 3,195, 48, 16, 8, 4,182, 54,162,167,126,253,245, 87, 92,188,120, 17, 0,172,110,123,114,115,115, 57,150,101, 33, -149, 74, 1, 64, 89,198,120, 7,161, 80, 8,161, 80,136, 99,103,143,187,191,241,122,119,114,250,207, 67,104,217, 96, 16, 50,242, -140, 72,201, 54, 34,171, 0,168,211,100, 6,234,118,218,137,171, 15,114,209,176,126, 93,150, 21, 43,134,253,203, 39,239, 32, 47, - 47,175,211, 30, 30, 30, 71, 9, 33, 65,132,144, 32,181, 90,125,202,207,207, 47,154, 16,210,139, 82,250, 91, 98, 98, 98,120, 94, - 94, 94, 75, 74,233, 35, 74,233,163,244,244,244, 14,169,169,169,175,148,117, 88,203,221,221,125, 77, 78, 78,206, 36,142,227,122, - 22, 93,175,113, 28,215,240,238,221,187,181, 27, 54,108,120, 51, 56, 56,248, 74,112,112,240,190,224,224,224,223,131,131,131,127, -111,223,190,253, 82,139,187,135, 23, 41, 37,113,145,127,145, 88, 76, 93, 34,139, 92, 61, 68, 90,231,140,162,215, 99,197, 13,208, -204, 18,201, 13,243,196,137,208,252,254, 59,132,119,239, 98,196,176, 97,106,185, 92,190,140, 16,210,136, 16,210, 82,169, 84,126, - 59,107,214, 44,149,199,194,133,240, 59,126, 28,177,187,119,195, 36, 20, 94,168, 72,234, 10, 11, 11, 33, 16, 8,172,154, 24,133, - 66, 1,142,227,138,184, 91, 57,132,195,140, 51, 9, 41,209, 16,163, 42,120,208,188,253, 57,109,206, 13,138,153,225,181, 59,167, -122,200,189,124, 81,200, 28,207,230, 94,203,130, 90,157,203, 39,130, 60,177, 70,138,199,143,227,192,129,119,104,191, 89,167,211, -101,231,231,231,163, 97,195,134,238, 23, 47, 94,172,209,160, 65, 3,183,162,247,207, 63,103, 39,106,225,239,239,191, 53, 32, 32, -224,161,191,191,255, 86, 66, 72, 11, 7,190,190,230,196,137, 19, 96, 89, 22,179,102,205, 66,110,110, 46,140, 70, 35, 50, 50, 50, -240,248,241, 99, 24, 12, 6,196,199,199,227,246,237,219, 48, 24, 12,136,141,141,133, 94, 95,254,130,132,231,121,168,213,106,232, - 10,243,240,253,252, 79, 48,115,218,100,100,223,191,132,248,196, 20,104, 92, 20,120,247,221,119, 89, 87, 87, 87,158,227,184,170, -102,179,185, 19,199,113, 43,236, 37,156, 69, 78, 11, 79, 6, 6, 6,214, 93,180,104, 81,237, 79,230,175, 16,169, 5,121, 84,162, -146,242, 98,149,132,138,107, 53,199,200, 25,203, 68, 95, 47,249,242,206,153, 51,103, 18,236,113,222,105,193,140,136,136, 8, 77, - 72, 72,104, 16, 30, 30, 30,230, 17, 84, 77, 34,241,245,207, 18,249, 86,201,161,122,221, 57,226, 95,165,245,138, 21, 43,174,159, - 58,117, 42,209, 17, 76,133, 66, 81,107,195,134, 13,117,189,189,189,235, 10,101, 50,105, 65,118,246, 22,115, 65,254, 86, 86,227, - 42,101,212,154,215,118,238,220,121,105,251,246,237,201,142, 96,134,132,132,132,207,159, 63,191, 78,189,122,245,234,248, 84,175, - 33,145,249, 7,102, 72, 3,130, 50,100,245, 26, 72, 16, 80,181,235,183,223,126,123,229,204,153, 51,118, 97,178, 44,107,102, 24, - 6, 66,161, 16,114,185, 28,251,247,239,199,196,209,131, 16,232,239,142,176,240,112,116,124,107, 18,182,111,223,110,181,225, 97, - 89,182,212, 25,125,253,194,119,119, 69,248,146, 75, 88, 89,235, 18, 86,214,186, 20,225, 75, 46,149, 74,182,138,158,151,244, 25, -187, 70,163, 82,236,176,202, 35, 91,148,210,189,199,142, 29,251, 98,248,240,225,226,110,221,186,225,220,185,115, 24, 57,114,228, -201, 29, 59,118, 0, 0,206,157, 59,135,247,223,127,255,228,145, 35, 71, 48,126,252,120,116,232,208, 65,124,226,196,137,111,237, -241,253, 99, 54,155,177,118,237, 90,152,205,102, 40,149, 74,184,185,185,161,123,247,238,184,126,253,250,248,117,235,214, 69,179, - 66,225,155,145, 61, 95,199,158,223,119,224,246,141,235,227,215, 47, 24,226,176, 83, 96,134, 97,208,109,216,176,244,244, 58,117, -180,235,115,114, 10, 70,185,186,202,195,147,147,221,254,216,186,213,195,142,246, 67, 56,142,179,146, 43, 11,233,176, 92, 2,177, - 39, 4,138,186, 16,168,154,224,234, 61,145, 73,216,148, 94, 22, 53,166,183,202,242,159, 37, 20, 51, 35,251,126, 82, 29,125, 63, -169,142, 94, 83,171,141,144, 87,193,106, 69, 21, 76,232,246, 94,213,246,193, 77, 92,144,147,106,196,238,175, 98, 31,233, 50,176, - 16,192,109,123,250, 57,207,243, 55, 19, 18, 18, 32, 22,139, 81,165, 74,149, 80, 66,136,197, 46,112,205,152, 49, 99,222,153, 51, -103,206,100, 0,115,138,242,164,108,223,190,125,157,188,188, 60,220,189,123, 23, 0, 46,150, 81,247,214, 83,134,218,156, 88, 73, - 53,191,122,104, 80,107, 28, 92, 93,235, 35, 65,107, 64,162,214,128,213,223,247,198,165, 19,243,112,241,224, 80, 60, 74, 78,134, -204,167, 15, 56,179,190,238,191, 92, 81, 50, 51, 38, 38,166,197,214,173, 91,219, 3,152, 89,175, 94,189, 51,143, 31, 63,126,229, -248,241,227, 97, 1, 1, 1,203, 42, 10,106,113, 11, 17, 27, 27,251,212, 85,228, 22,194, 64, 41,141,160,148,118,163,148,246, 42, -186,222,127, 46, 95,111,246,203,177,127,171, 49, 60,128, 61,197, 79, 27, 22, 39, 90,182,142,194, 80,195,205, 77,101, 50, 25,227, - 15, 29, 58,100,100, 24, 6,114,185, 28,195, 71,142,100,190,255,238,187,214,131, 90,180, 56, 58,246,213, 87,247, 29, 61,114, 36, -162, 89,179,102,160,148,130, 97, 24,252,242,203, 47,133, 58, 93, 97, 70,149, 42, 85, 52,246, 12, 26,182, 29, 40, 39, 39,199, 74, -180,178,179,179,225,237,237,109,247,214, 97,126, 14, 14, 31,217,127, 41,147,114,111, 61,238,118,111,137,241,243,228,222,205,178, -120, 78,144,205,153,144, 93, 72,145,171,131,224, 28,227,214,108,120, 72, 31,227,131, 78,205,110, 71, 69,159,206,208,113, 58,135, - 78, 75,164,166,166,126,210,191,127,255, 12, 95, 95, 95,162, 86,171,225,239,239,207,244,234,213, 43, 61, 46, 46,110, 78, 69,107, -196,195,195,227,141,246,237,219,239, 74, 72, 72,232, 23, 21, 21, 85,245,248,241,227,253,218,183,111,191,203,195,195,227, 13, 59, - 33,182,124,252,241,199,249, 98,177, 24,205,155, 55, 71,110,110, 46,138, 78,249,148,121,149, 55, 17, 0,128, 72, 36,194,202, 69, -159, 97,230,180,201,208, 70,159,195,213,147,135,112, 44,153, 96,198,252, 47, 33, 18,137, 42,228,235, 43,196, 75, 81,175,158,159, -234,214,251, 35, 7, 38, 78,159, 54, 77,117,229,202, 21,225, 59,239,189, 79, 99,147,180, 16,119, 91,204,162,237, 39,204,159,249, -158,136,124,173, 35,102,205,252,176, 30,165,116, 92,121,152,181,189, 20,245,234,250,169,110,126, 56,118, 80,204,123,239,189, 39, -251,252,243,207,117, 45, 90,180, 40, 76, 73, 73,145, 41, 92,221,194, 5, 46,154,186,177, 73,201,202, 22, 45, 90, 60,120,235,173, -183,178, 28,197,156, 49, 99,134,252,192,129, 3,130,254,253,251,155, 51, 51, 51,149, 66,153,172, 33,145, 72,155,166,101,102,186, -244,235,223,255, 94,191,126,253, 10,120,158, 31,239, 8,230,167,159,126, 42,191,125,251,182,160, 69,139, 22,166,228,228,100,149, -194,221,163, 1,171,113,107,242, 48, 41, 69,221,180, 89,179,251,239,188,243, 78,126, 89,233,180, 37, 41, 42,149, 42,161,101,203, -150,248,234,171,175,240,245,215, 95,163,107,215,174,184,126,227, 58, 34,223,153,140,218, 19,222,199,239,167,207, 34, 33, 33, 1, -115,231,206, 69,131, 6, 13, 32, 18,137,110,151, 8, 58,238, 22,185,156, 68,201,229, 36, 74, 48,238, 22,177,220,151, 74,134,230, -100,227,169,207,151, 32, 23, 63, 45, 89,211, 21,225, 75, 46,149,101,135, 85, 30,217,234,215,175,223, 68,139, 11,135, 81,163, 70, -157, 92,182,108, 89,171, 81,163,158, 44,180,155, 55,111,142,121,243,230,181,154, 49, 99,198,201,249,243,231,163, 99,199,142, 8, - 14, 14, 46,247,224, 11,199,113, 48,155,205, 24, 52,104, 16,204,102, 51,210,210,210,112,231,206, 29,172, 90,181, 10,148, 82, 41, - 0,248,250, 5, 52, 22,139,197,248,243,242,133,130,153,163,154,253,232,192, 98,138,216, 46, 98,242,242,242,208,111,194,132,244, -248,154, 53,181, 43,210,211, 11, 70,187,186,202,171, 61,122,228,166, 50, 24,252,203,178, 73, 37,132,128,231,121, 43,177,178, 16, -174,226, 87,209, 68,105,151, 24, 11,248,189,199, 55, 37, 2, 0,218, 12,241, 67,175,169,213, 70,248,134,200,191,105, 61,248,137, -210,123,251,188, 24,154,155,200,125, 14, 19,110, 58,160,177, 62,119,238,220, 57,104, 52, 26,244,239,223, 95,194, 48,204,194,162, -113, 94, 71, 41, 93, 78, 41, 93, 98,193,146, 72, 36,139,135, 14, 29,202,100,101,101,225,234,213,171, 0,112,164,180,113,137, 82, -106,205,123,158,150,128,227,197, 56,117,121, 63, 14, 30,223,134,135, 9,105,120,148,170, 3, 4, 46,208,229,199,195, 88,152, 0, - 67,214,101,228,232,229,255,133, 29,169, 23,226,110,225, 5,184,133,168, 76,173,214,191,210,166,142, 82,154,100,123,218,208,214, -129,105, 73, 14, 75, 65,213,178,129,219,190,253,222,165,255,160, 33,249, 13, 26, 52,112,245,247,247, 7, 33, 4,189,251,244, 33, -237,163,162, 84, 66, 63, 63,184, 55,106,100,221,142, 56,124,232, 16,246,239,223,159,191,231,215,157,254, 35, 71,143,238, 1, 96, - 67, 25, 3,134,160, 70,141, 26,214,223, 77, 74, 74,130, 68, 34,177,218, 68,228,228,228,192,211,211, 19, 73, 73, 73,176, 83, 81, -178,113,250,180,179,211, 82,155,125, 82,189,153, 74, 72,246,229, 39,131,163, 20, 66,194, 1,133, 20, 38, 14,208,155, 40, 26, 87, - 99,221, 14, 22,154, 93,119,159,219,241, 0,192, 70, 7, 53, 90,127, 16, 66,198,241, 60,191, 13, 0, 19, 21, 21,197,223,188,121, -115,162,189,134,235, 37,170,237,229,242,169, 71,143, 30,117,155, 58,117,106,230,238,221,187,179,187,119,239,238,178,106,213, 42, -183, 14, 29, 58, 76, 5,240,179, 29,149, 90, 72, 8,217, 16, 23, 23, 55,177, 73,147, 38,208,106,181, 48, 26,141,184,116,233, 18, - 66, 66, 66,112,241,226, 69,132,134,134,226,194,133, 11, 8, 11, 11, 3,199,113,208,233,116,224,121,158, 43,111, 48,215,166,167, - 1, 25,143,145,120,110, 31,238, 92,187,132,163,137, 4,203,127,222,133, 42, 85,171, 87,200, 79, 77,152,183,162,142,191,151,251, -193,207,103,127,234, 21,251,199, 47,216,177,118, 57,127,108,223,190,218, 98, 21,198,181, 29, 52,233,117,131, 9, 65, 0,196,175, - 52,107,130,110,174,183, 57,121, 85, 36, 31,185, 81,182, 39,235, 48,111, 69, 29, 63, 79,247, 3,255, 91, 56, 71,117,127,255,122, -108, 89,249, 21,221,190,233,167, 6, 58,160, 89,157, 58,117,186, 49, 12,163, 1,160, 43,178,243,178, 43,180, 77, 73,152,135,119, -237,138,208, 1,205,126,251,237,183,110,114,185,220, 7,128,169,160,160, 32,230,121, 48,143,236,222, 29, 97, 73, 39, 33,196, 11, -128,145, 82,122, 31, 14,134,224, 25, 48, 96,192,188,247,223,127,127, 26,199,113,158,150,247, 76, 38, 19,187,120,241, 98, 1,207, -243, 44,165,212,200, 48,140,241,192,129, 3,156,217,108, 78,212,233,116, 19,158,103, 32,121,253,245,215,113,246,236,217,217,120, -114, 8,195, 94,109,245, 83,118, 90,101,109, 83,218,131, 31, 21, 21, 53,247,205, 55,223,156,254,243,207, 63,223, 89,182,108, 89, -207,241,227,199,227,151, 95,126, 65,205,154, 53,241,231,159,127,226,147, 79, 62, 1,128, 86, 51,102,204,248,125,205,154, 53,193, -177,177,177,139,203, 75,163,201,100,130,217,108,198, 79, 63,253,132,222,189,123,195,211,211, 19,126,126,126, 32,132,252, 49,122, -244,232,239, 0,128, 37,172, 8, 0,244, 58,189, 62, 60,188,137,221, 26,220,224,224, 96,235, 88,151,156,156,108, 61, 41,216,249, -205, 55,211, 87,127,254, 57,126, 44, 44,196,104, 87, 87,121,124, 64,128,239,239,247,239,143, 37,132,172, 42, 77,115,100,209,234, -148, 71,178,236,213, 48, 23, 38,225,227, 95, 23, 60,244, 1,208,181,205, 16, 63,180, 25,226,135, 38,189,188, 8,195, 18, 92, 59, -152,129,235,135,181,219, 77, 57,248,195,145,112, 57,148,210,155,238,238,238,191,183,109,219,182,103,173, 90,181, 48,102,204,152, -183, 68, 34,145,200,100, 50,189,103,113,243, 64, 8,113, 97, 24,102,206,186,117,235,198,186,185,185,225,196,137, 19, 56,126,252, -248, 31,148,210,199,165,141, 75, 0,172, 62,179,170, 4,134,234,110,199,230,201, 83, 19, 78,225,228,137, 95, 81,179,193, 36,200, -124,122,192, 45,124, 62,140,209, 95,195,144,113, 16,110,129,221, 17, 31,123, 31,172, 64,114, 29,255, 17,177,184, 91,184,126,253, -122,137,238, 22, 28,149,122,245,234,181, 58,126,252,184, 68,167,211,225,216,177, 99,104,218,212,122,182,235, 31,141,223,105,203, - 69,254, 77, 82, 86, 80,233, 18,103, 77,194, 19, 97, 88,104, 40, 39, 98,176,174,119,143, 30, 5, 87,174, 92,177,174,250,116,231, -207, 35,127,255,126,112, 28, 7, 74, 41,142, 71, 69, 97,232,144, 33,121, 66,150,172,174, 86,173, 42, 37,244, 47,223, 45, 37, 29, -165, 23,137, 68,253,251,247,239,111, 29,124,226,226,226,160, 80, 40, 32, 22,139,193,243, 60,204,102, 51, 88,150,133,139,139, 11, -204,102,179,161,132,204,116, 42,150, 17, 19,167,205,239,183, 38,114,112,146, 95,158,145,142,211, 84, 67,144, 72,102,237,156, 62, -106,130,158, 13,132,240, 16,164,210, 35,139, 95, 77,228,245, 25,253,138,199, 22, 43,239,200, 63, 33, 36,180,126,253,250,223, 13, - 29, 58,148, 1,128, 78,157, 58, 49,245,235,215,255,134, 16, 18, 90,198,119,202,196,148, 74,165, 18, 0,216,181,107,151,246,206, -157, 59, 93,119,237,218,165,181,125,223, 78,204, 85,139, 22, 45,130, 92, 46,135,217,108,134,193, 96,176,218,103,217,190, 26,141, - 70,120,120,120, 96,207,158, 61,224, 56,110, 79,121,233, 12, 12,170, 10,226, 89, 3, 27,118, 29,197,241,116,145,195, 36,203, 22, -179,166,175, 50,204,199,195,253,208,255, 22,204,245,204,188,119, 9,241,241,241,244,192,254, 61,103, 10, 41, 77,200,202,161, 51, - 51,243,104, 88,129,158, 74,155, 6,227,241,161,149, 31,209, 25,109, 96, 66, 9,167, 6,109, 49,235,248, 42,195,252, 61,221, 15, -124,249,191, 5,170,172,123,151,144,148,156,140,189,123,118, 93, 41,164, 52,129, 82,186,157, 82, 58,130,227,184,186, 28,199,213, -165,148,142, 40,141,188, 56,138,153,159,159, 95, 47, 63, 63,191, 94,101, 98,242, 60, 95,143,231,121,187, 49,109,137,202,146, 37, - 75,162,147,146,146,134,166,166,166,118,177, 92,153,153,153,157,242,242,242,218, 21, 20, 20,180, 46, 92, 82,213, 37, 63, 63,223, - 43, 55, 55,215,183,176,176,176, 49,165,244,146,189,237,211, 86,108,189, 78, 39, 38, 38,206, 74, 76, 76, 36,229,165,147, 25,127, -139,108,254,242,195, 95, 87,174, 92,233,251, 60,248,197,211,153,150,150,182,237,167,159,126,106, 88,189,122,245,224, 17, 35, 70, - 96,197,138, 21, 88,182,108,153, 30, 0,214,172, 89,163,183,209,100, 5, 62,124,248,176, 73, 73,219,134, 79,165,147, 97, 54,118, -238,220,153, 30, 63,126, 28,189,123,247,182, 58, 18,253,225,135, 31, 96, 54,155,115, 58,118,236,200, 3, 64,161,174, 32,135,242, - 20, 6, 99,201,251,239, 37,149,167, 88, 44,126,205,214, 95,160,197, 25,179, 88, 44, 6,165, 20, 97,173, 90,165,103, 53,104,160, - 93,155,157, 93, 48,171, 94, 61,245,216,240,240, 17,181,128, 33, 37, 97, 18, 66,158,210,234, 20,191,236,213,100,217, 98, 82, 74, - 83, 11, 19, 49,230,215, 5, 15,247, 91, 52, 91, 82,165, 0,186, 92, 51,118,126,254, 48, 77,151,134, 31, 0, 60,118, 4, 19, 0, -180, 90,237, 59,159,127,254,185,222,213,213, 21,175,191,254, 58,230,207,159, 63,186, 85,171, 86,217,222,222,222,103, 67, 66, 66, -174, 13, 28, 56, 48,233,210,165, 75,239,180,111,223, 30,119,239,222,197,151, 95,126,153,149,153,153, 57,184, 44, 76, 66,136, 85, -147,215, 43,178,147,246,251,111,190,226, 59,182,157, 8,185, 76, 13,147, 48, 16,218, 60, 19, 50,243, 41, 12,146,102, 16,139, 36, -232,210,162, 14,206, 30, 88, 95,192, 25,242, 55, 84,164,205, 59, 48,185,190,104,204, 74,113,183, 80, 60,157,149,225, 22,226, 69, -228,253,223, 44, 37,248,209,122, 90,163,101, 57, 82,105,121, 37,132,231, 56,142, 71,181,234,213, 84,177, 15, 31, 47, 31, 48,160, -255,168,110,221, 34,229,145,145,145,210, 58,209, 79,182, 46,118,237,218,133, 29, 59,118, 20, 28, 60,120, 48, 71, 34,100,215, 4, - 86, 9,244,230, 56, 30,132,240,101,178, 97,149, 74,245,222,199, 31,127, 44,203,206,206,198,178,101,203,248,134, 13, 27, 50, 10, -133, 2, 70,163, 17,107,214,172, 49,213,169, 83, 71,200, 48, 12,178,179,179,193, 48,204,109, 59, 51,120,149, 16,210,229,187,246, -125,119, 52,121,123,164,123,237,246,175,184,182, 11,244,135,169, 17, 69, 98,220, 67,220, 57,114, 48,243,198,129,165, 25,208,165, -244,165,148,222,116,180, 0,253,252,252, 62, 59,120,240,160,215, 59,239,188, 67,117, 58, 29,121,252,248, 49, 93,176, 96,129,215, -152, 49, 99, 62, 3,240, 70, 69,251, 83, 86, 86, 22, 8, 33,124, 81,163,181,172,250,137, 3, 21,123,157, 16,242, 91,159, 62,125, -122,117,236,216, 17,209,209,209,214, 45, 66, 91,162,101, 57,125,184,112,225,194, 44, 0,211,203,195, 21, 10,133, 88,182, 97, 27, -178, 50,211,225,237,237, 7,169, 76, 86, 97,143,203, 98,134,153,245,197,220, 79,189,210,111,157, 37,215,207, 28,229,183, 94, 77, - 73, 53,115,180,100,143,255,185,137,180,136,253,151,189,154, 97,216, 89, 95, 44,152,227, 98,217,214,252,249,114, 82, 14,225,232, - 59,207,213, 75,254, 45,152,127,179,248,249,249, 33, 49, 49,145,248,249,249, 81,203,182, 94,105, 68,235,153, 6,254,100,187,140, -148,181,109, 88, 81,252, 7, 15, 30, 44,104,212,168,209,135,119,239,222,221, 90,187,118,237,241, 0,170,232,245,250,172, 25, 51, -102,252,111,205,154, 53,163,236,209,100, 1,192, 47,191,252,178,116,228,200,145,251,123,244,232,241, 17,207,243,245,109, 38,145, - 7, 94, 94, 94,214, 45,220,180,148,228,105,227, 70, 13,154,150,151,151,105,183,159, 59,165, 82, 57,118,198,140, 25,210,252,252, -124,124,251,237,183,124,157, 58,117, 24,203,162,104,211,166, 77,230,208,208, 80, 65,255,137, 19,211,151, 36, 39, 99,222,137, 19, -249,211,234,214,109,184,246,206,157,198, 37,105,220, 45, 11,199,146, 52, 89, 22,179,139, 10, 78, 14,137,132,144, 49,191, 46,120, -248, 3,128,174,175, 12,240,193,111,139, 30, 34, 51,214,240, 63,152,113,223,158,176, 64, 37, 96,198, 19, 66,186,164,164,164,252, -246,233,167,159,186, 52,110,220, 24,117,235,214, 21, 42,149,202,102, 22,119, 49,217,217,217, 56,124,248, 48, 86,172, 88, 97,184, -113,227, 70, 31, 74,105,169,219, 85, 28,199,165,134,134,134, 90,202,129, 18, 66, 50,114,244,196,101, 75,173,102,202, 17,227,182, -146,147, 23, 78, 35,209,200, 67,111,226, 81,173,122, 4,218,117, 93,130,223,247, 93,227, 18, 99,111,222, 52, 21,102,174,254,151, -207,223, 47,196,221,194, 11,112, 11, 81,105,218, 44,219,215,255,138,148,216, 67,121,150, 57,181, 98,229,247,175,253,242,211,207, - 62, 44,203,248,220,143,137,185,208,179,111,191,132, 67,135, 14,185,137, 92, 92,154, 2,224, 13,227,199,159, 49,234, 11,181,187, -127,251, 45,168, 90,181,170, 13,138,130, 74, 83,158,101, 78,149,245,131,121,121,121,249, 39, 78,156, 40,152, 62,125, 58,137,139, -139,219,236,237,237, 61,112,223,190,125,202,190,125,251, 22, 70, 71, 71,111,247,241,241,233,213,190,125,123,213,135, 31,126,168, -207,203,203, 91,238, 64,231,190, 73, 8,169,117,254,211,197,111,158, 95,244,253,171, 16,176, 45,161, 23, 2,188,233, 20,140,185, -135, 0,108,166,148,154, 43, 82, 72, 10,133,162,129, 92, 46,199,149, 43, 87, 50,155, 53,107,102,208,233,116,162,249,243,231,187, - 43, 20,138, 6,207, 49,192,209,204,204, 76,240, 60, 47, 0, 64,138, 94,193, 59,126, 22,255,141,158, 61,123,254,182,101,203,150, -206,145,145,145, 8, 14, 14,134,201,100, 66,104,104, 40, 12, 6, 3, 66, 66, 66,160,215,235, 49,123,246,108,100,103,103, 79, 46, - 43, 88, 49, 33, 4,102,179,217,106,108,235, 31, 16,244,196, 79,207,115,184,177, 80, 8,153,224,219,187,215, 34, 53, 35,157,223, -242,103, 74, 74,129,145,235,114, 55, 53,255, 70,241,207, 21,112,200,111, 63,226,221, 4, 0,208,243, 40, 51,226,188, 66,140,224, - 59,123,126, 64, 74,106, 58,126,185,156,148,149,111,228,187,222, 46, 1,211,161,116,254, 75, 48, 35,102, 71,163,223,187,246,127, -246,242,184,138,255,150,189,132,170, 52,185,156, 68, 9,191,162, 22,197,202,181, 37,250,200,122, 30,252, 34, 77,213,111, 69,237, - 54,110,208,160, 65,211, 30, 62,124, 56,183,200, 95,214, 74, 71,176,214,174, 93,123, 23,192,200,178, 62,243,243,226,145, 59, 1, -236,116, 4, 55, 55, 55, 87,119,233,210, 37,221,135, 31,126, 72,226,226,226,246,249,248,248,116,222,191,127,191,188,111,223,190, -250,235,215,175, 31,241,243,243,107,211,169, 83, 39,229,222,115,231, 18, 10,238,223,223,189,251,225,195, 0, 19,207,239, 46,171, -127, 86, 38,201, 42, 78,182,118,206,123,248,197,111, 95, 60,236,196,235,177,221,144,137, 51, 0,226,159, 3,243, 56, 33,164,246, -144, 33, 67,182,116,239,222,253,149,218,181,107,163, 74,149, 42,184,115,231, 14,210,210,210,112,245,234, 85,236,218,181,107,151, - 78,167, 43, 55,160,118, 70, 70,198, 51,225,137,136,204,221,111,253,183,179,118, 93, 56,217, 52,180,117,228,112, 89, 93, 63, 30, - 6, 35, 69,220,163,251,152, 61,115,117, 65,210,163,187, 55,141,102, 99,159,255,128, 15,173,227, 49, 49, 49, 17, 44,203, 86,170, -187,133,138,186,133,112, 74, 37, 18,173,152,152,184,155,193,193,129, 31,239,216,190,173, 37,165, 12, 75, 9,201,215,104, 92,119, - 61,126,252, 56,203,246,115, 53,220,220, 84, 35,199,140, 28, 72,120, 34, 36,132,231,120,150, 57, 21, 19, 19, 87,166,198,200, 96, - 48,140, 27, 56,112,224, 50,185, 92, 62, 67,171,213, 94,209,104, 52,127, 54,104,208, 96, 46,165,116,102, 97, 97,225,111, 42,149, -234,220, 43,175,188, 50, 63, 40, 40,104, 41,165,244,162,131,157,219,140, 39,246, 97, 27, 42, 89,149, 59,135, 82,234, 34, 16, 8, -178,175, 93,187,246, 83, 88, 88,216, 32, 74,169, 11, 33, 36,187,162,152, 58,157,238,157,172,172, 44,143,177, 99,199,154, 86,173, - 90, 21, 54,124,248,240,105, 55,110,220, 16,234,116,186, 24, 7,243,172, 39,132,244, 26, 48, 96,192,106,161, 80,216,145, 97, 24, -194,243, 60,181,121, 14, 74, 41, 56,142,251,189,188,114,225, 56, 46,161, 86,173, 90, 79,173,160, 75,178,207, 53,153, 76, 9,118, - 79, 54, 6,110,210,247, 71,111, 44,212,153, 40, 53,243,116,220,237,148,252, 18,143,156,157,191, 77,235,216,141,169,227, 39, 45, - 59,112,115,161,222,196,243,102,158,142, 47, 13,211,161, 73,241, 95,130, 9, 0,211, 52,155,118, 98,229, 38,171, 97,188,101, 59, -177,248,125,101,138, 69,235, 4, 7, 61, 54, 51,227,159, 24,203,151, 71,248, 42,138, 95,156,116, 57, 42,253,250,245,123, 97,246, - 40, 70,163,241,147,158, 61,123,206,213,104, 52,255, 75, 75, 75,187,162,209,104,110,134,135,135, 79,226,121,126,105, 65, 65,193, - 46,149, 74,213,163, 73,147, 38,147,171, 86,173,186, 62,150,210,245,229,245, 77,139, 86, 7, 0,181,244, 75, 11,145,176, 37, 20, - 38,147, 41,190, 2,101,152, 72, 8,249, 0, 64, 53, 60,113,192,123,143, 82,250, 92,101, 67, 41, 77, 4,208,146, 16, 82, 29, 64, - 71, 60,241,223,151, 5,224, 1,128,139,148,210,171, 21,198, 46,204, 72, 36,132, 52,186,117,249,196,248, 59, 55, 47,191,105, 57, - 93,200,178,226,235,156,177, 96,131,169, 48,115,245,127,196, 81,233,172,144,144, 16, 23, 0,245, 1,164,224, 47, 71,198,177, 0, -190,174,140,133,138,141,116,112, 82,162,231,226, 9, 99,109,183, 11,159,122,246, 34,219, 34, 33,164, 83,101,199, 67,114, 98, 58, - 49,157,152, 78, 76, 39,166, 19,211,137,249,223,195,252,183, 19,173, 18, 8,237,170, 82, 53, 90, 78,113,138, 83,156,226, 20,167, - 56,197, 41, 78,177, 95, 74,213,104, 1,232, 84,202, 23,236,102,170, 21, 57,125, 80, 30,190, 19,211,137,233,196,116, 98, 58, 49, -157,152, 78,204,255, 30,230,255, 55,113,110, 29, 58, 49,157,152, 78, 76, 39,166, 19,211,137,233,196,252,199, 49,255,213,100,202, -185,117,232, 20,167, 56,197, 41, 78,113,138, 83,156,242, 98,196, 66,170, 74, 50,138,119, 18, 45,199, 89, 43, 3,224, 45, 0,253, - 0,212, 0,112, 31,192, 54, 0,223, 57, 16,166,194, 22, 79, 13, 96, 26,128,150,120, 18,189,254, 1,128, 19, 0, 62,167,148,230, - 57, 75,188,100,241,244,244,252, 88, 40, 20,106,128, 39,161, 77, 44,175,182,255,115, 28,151,149,157,157,189,224, 5,181, 3,214, -222, 83, 89,150,180,218,166,205,246,213,100, 50,189,176,116, 58,229,165, 29, 71, 66,221,220,220,126,212,106,181,131, 41,165,119, -156, 37,226,148,255,146,120,121,121,141, 55, 26,141, 51, 68, 34,209,252,212,212,212,239,255, 31,245,235, 18, 79, 30, 90,137,214, -158, 61,123,162, 0, 32, 50, 50,178, 45, 0,168, 84,170,211, 12,195, 84, 47,250, 50,128,191, 98,225, 21, 63,250,111,121,229,121, -254, 65, 70, 70, 70,169, 14,212,228,114,249,105,150,101,171, 19, 66,192, 48,140,245, 50,153, 76, 42,150,101,115, 75,193,140,215, -106,181,141, 95,146, 66, 36, 0,118,187,186,186,234,230,206,157,251, 93,187,118,237, 2, 19, 19, 19,205, 83,167, 78,109,243,231, -159,127, 70, 18, 66, 94,115,132,108, 17, 66, 90, 16, 66,214, 55,108,216,112,231,176, 97,195,182, 52,107,214, 76,156,145,145,161, -218,182,109,155,255,134, 13, 27, 46, 17, 66, 6, 59,234,226,226, 95,208, 16, 5,165,249, 51, 43,235, 89,113, 17, 10,133,154,248, -248,120, 85,209, 74,194, 66,172, 96, 50,153, 96, 50,153,144,159,159,143, 6, 13, 26, 84,122,250,125,125,125, 35, 8, 33,203, 67, - 66, 66, 26,251,249,249, 93, 0, 48, 49, 49, 49,241, 79, 71,210,106, 54,155, 65, 41,181,166,179,118,237,218,206,145,217,177, 54, - 52, 90, 44, 22,119, 13, 9, 9,105,170,215,235, 51, 31, 60,120,112,158,227,184, 79,203,114,122,233, 32,190, 11,128, 79, 37, 18, - 73,179, 26, 53,106, 4,222,189,123, 55,206,104, 52,158, 3, 48,135, 82,154, 93, 25, 36,171,109,219,182, 39,191,253,246, 91,247, - 9, 19, 38,156, 36,132,180,114,146, 45,167,252, 83, 82,165, 74, 21, 77,126,126,254,106, 0, 17, 66,161,208, 71, 42,149, 66, 38, -147, 37, 75, 36,146, 43, 50,153,108,212,201,147, 39,179, 28,197,228, 56,238,211,216,216, 88,159,230,205,155, 47,170, 91,183,238, -236,244,244,116,157,209,104, 60,146,153,153, 57,153, 82,154, 83,214,119,139,115,145,127, 19,201,178,125, 45, 26,239,255,218, 58, - 44,138, 43,212,238, 41, 6, 38, 16, 4,196,198,198,122,169, 84, 42,112, 28,103,213, 22, 88, 38, 53, 91,219,174, 34, 63, 77, 8, - 15, 15, 55,150, 51,225, 4,198,199,199,123, 41,149, 74,235,123, 70,163, 17, 62, 62, 62,124, 66, 66,130,151, 84, 42,125,234,243, - 6,131, 1, 1, 1, 1, 47,147, 47,148,183,220,220,220,178, 31, 63,142,107,160,211, 27,231,140,121,103,250,199,131,251,189,234, -122,250,244,105,254,181,215, 94,211, 71, 69, 69,189, 5, 96,185,157,149,226, 66, 8,217, 48,117,234,212,217, 82,185,218,253,232, -233,155,250, 13,219,246, 36, 52, 12,173, 70, 38, 79,158,204,190,251,238,187,199, 35, 34, 34,126, 36,132, 52,114, 68,179,165, 82, -169,246, 75, 36,146,170, 44,203,194,104, 52, 62,214,106,181,157, 95,162,134,216, 16,192,101, 66, 72, 4,165,244,138,189,207,202, -146,140,140, 12, 20, 22, 22, 62,115,213,174, 93, 27,149,109,127, 72, 8, 17, 4, 6, 6,254,182,112,225, 66,255,228,164, 36,124, -181,100, 73,115, 0,223, 1,104,110,207,247, 83, 83, 83,159, 73,103,120,120, 56,156,226, 80, 29, 76,155, 61,123,246,194, 55,223, -124, 19, 28,199,161,176,176,208,239,222,189,123,117,102,204,152,209,135, 16,210,148, 82, 26,243,156,248,158, 33, 33, 33,209,147, - 38, 77,114,107,218,180, 41,138,162, 84,248,157, 56,113,162,249,154, 53,107,134, 18, 66,194, 41,165,105,207,243, 27,110,110,110, - 63,254,240,195, 15,238,114,185, 28,191,255,254,187,123,199,142, 29, 79, 16, 66, 90, 87,148,108, 17, 66, 24,119,119,247,119, 1, -116,224,121, 94, 12,224, 92,102,102,230, 60, 71,189,186, 19, 66,124,149, 74,229,118,134, 97,170, 21, 91, 96,123, 16, 66,210, 45, -239, 17, 66,188,120,158, 63, 83,214,162,218, 41,255, 14,241,240,240, 24,157,155,155,251,173, 68, 34, 17,185,186,186, 66, 46,151, - 67, 32, 16, 64, 32, 16, 84,145, 72, 36, 85, 36, 18, 73,183, 14, 29, 58, 76, 60,122,244,104,153, 30,246, 95,137,240, 25, 1,134, -204, 97, 9,195, 2, 64,237, 16,119,181,139,139, 11,230,204,153,163,232,213,171,151, 2, 0, 78,158, 60, 57,108,248,240,225, 29, - 9, 33,117, 75, 35, 91, 37,113,145,127,139,148,118,226,240, 41,141, 86,100,100,100, 84,177, 78, 7,153, 76,134, 45, 91,182,128, -101,217,167,162,198,151,244,127,149, 42, 85,202, 77,136, 69, 35,182,107,215, 46,168,213,106,184,184,184, 88, 39, 26,137, 68,130, - 35, 71,142, 64, 40, 20, 66, 32, 16, 64, 40, 20,162,113,227,198, 40, 35,160,253, 11,145,254,117, 8, 5,128,173,111, 63, 73, 87, -255,229, 79,156, 64,110,125, 59, 28,173,107,200,208,239,221, 89, 3, 11,116,198, 38, 0,242,179, 50, 51, 51, 47,236,216,145,216, - 48, 52, 84,244,227,143, 63, 54,245,247,247,239,103, 47,209, 2, 48,173, 81,163, 70,219, 89,153,139,199,176,225, 35,134,141, 18, - 48,198,161,227, 62,156, 31,151,148,158, 63,118,236,216, 29,191,255,254,251,176, 47,190,248,226,214,148, 41, 83,166, 1,248,196, -222,244,139,197,226,170,247,238,221, 11,225,121, 30,245,234,213,123,105,194, 24, 88,136, 20,165, 20,132,144,167, 8, 85, 89,207, -202, 19,139, 6,171,164,171,178,197,223,223, 63,124,200,144, 33, 30,218,244,116,124,181,100,137,229,237,198,229,109, 35, 90,182, - 8, 13, 6, 3, 94,127,253,245, 33, 28,199, 9, 44, 36, 80,175,215, 27,178,179,179,117, 54, 39,123,210, 40,165,175,218, 81,158, -213, 21, 10,197,255, 0, 68, 20, 22, 22,250, 3,128, 66,161, 72,224,121,126,103,126,126,254, 39,150, 0,190, 21,168,167, 64, 0, -117, 80,122, 40, 40,186,112,225,194,187,211,166, 77,139,249,187, 49, 9, 33, 85,189,189,189, 23,244,239,223, 31,123,246,236,193, -222,189,123, 77, 50,153, 76, 48,124,248,112, 50,113,226, 68,215, 73,147, 38,117,195,115, 56,113, 44,146,110,179,103,207,118,171, - 85,171, 22,182,109,219,134,171, 87,175, 22,134,132,132,200,218,181,107, 7,129, 64,224,246,241,199, 31,191, 6, 96,253,243,252, -128, 86,171,157,247,225,135, 31,110,248,233,167,159, 84, 15, 30, 60,192,242,229,203, 61, 6, 14, 28, 24, 69, 8,105,107, 47,217, - 34,132, 72, 0,188, 11,160, 61,203,178,173,135, 15, 31,110,126,231,157,119,132, 12,195,152,150, 44, 89,226,185,102,205,154,129, - 30, 30, 30, 17,233,233,233,121,118, 96, 49, 0,230,140, 26, 53,106,228, 31,127,252,225,122,254,252,121,177,187,187,187,117,129, - 93,244,234,101,105,179,102,179, 25,225,225,225, 1,255, 5,162,193,178,172,145,231,121, 33, 0, 41,165, 84, 95,222,253,127,137, -100,185,187,187, 79,200,204,204,252,206,199,199, 7,222,222,222,207,204,181,122,189, 30, 82,169, 84,228,227,227,243, 67,239,222, -189,133,191,254,250,107,169, 91,128,132, 37,159,254,254,243, 92,127, 55, 87, 21, 0, 96,233,138, 3, 5, 0,240,235,175,191, 34, - 49, 49, 17,174,174,174,168, 91,183, 46, 59,119,238, 92,223,201,147, 39,127, 5, 96, 84,105, 88,197,185,200,191, 73,163,101, 75, -182,108,239,203,180,209,226,121,222, 26,176,212, 66,168, 44, 36,168,248,255,182, 43, 32, 27,134,119,184, 88, 66, 72, 94, 94,158, -149,100,169,213,106, 20, 77,174, 48,153, 76,207,224,114, 28, 7, 66, 8, 45, 11,179,148, 12, 79, 0,112,132, 82,122,223, 78, 38, -106,197,220,250,118, 56, 54, 72,166, 14,178,184, 80,239,246,225,147,215, 13, 0, 78, 63, 28,181,252,219,182,109,253,223,157,185, -108, 86, 97, 70, 98,250,199, 67,122, 84, 13,241,113,151, 41,178, 82,179,221,194,194,186,224,137, 71,101,123,211,217,102,216,176, - 97, 27, 15,158,141, 37, 82,169, 72, 36, 96, 89, 97,171,122,161,238,129, 46,172,139, 10,112,137,139,185,123,122,196,136, 17,245, -166, 76,153,210,218,145,188, 51, 12, 3,181, 90,141,141, 27, 55,130,177, 35,118,206,139, 56, 53, 82, 66,189, 11, 44, 68, 74,171, -213, 98,207,158, 61,136,140,140,188, 76, 8,137, 40,250,200,101, 74, 41,114,114,114,144,148,148, 4, 95, 95,223,203,132, 16,161, -237, 54, 98,113, 76,139, 86,213, 66,170,134, 15, 31, 62,196,108, 54, 11,108, 6,137,226, 4,230, 25, 18, 99,111,222,253,252,252, - 14, 2,120,149,101, 89, 24,116, 58,195,255,190,252,210,246,241, 69, 91,146, 85, 26,166, 37,173, 28,199, 9, 46, 95,190, 44,180, -244, 25, 0, 66, 0, 10, 0, 30,148, 82, 48, 12,115,205,142,242, 12,151,203,229,167,119,237,218,165,110,220,184, 49, 17,139,197, - 48,155,205,184,126,253,122,224, 23, 95,124, 49,238,240,225,195,175, 17, 66,106, 23, 15,158,110,103,189,215, 57,113,226, 68,126, -112,112,112,137,196, 49, 39, 39, 71, 16, 26, 26,218, 22, 64,204, 63,128, 25,159,146,146,210,251,213, 87, 95, 29,159,156,156, 28, -109, 54,155, 63, 2, 80,215,195,195,227,114,223,190,125, 33,147,201,218,219, 67,180,202,170,119, 47, 47,175, 94,175,188,242, 10, -150, 47, 95,142, 47,190,248,162, 19,165,244, 8, 33,164, 99, 78, 78,206,225,158, 61,123, 66,163,209,244, 46,137,104,217,219,150, - 8, 33,161,109,218,180,249, 97,206,156, 57,170, 61,123,246, 32, 36, 36, 4,185,185,185,248,224,131, 15,188, 62,251,236,179, 99, -132,144,118, 22,178, 85, 26, 38, 33,164,182, 68, 34, 89,255,211, 79, 63, 41,131,131,131,131, 69, 34, 17, 19, 28, 28, 12,173, 86, - 11,157, 78, 39,153, 63,127,126, 61,153, 76,246,231,215, 95,127,189, 30, 64,223,114,218, 18, 3, 96,222,202,149, 43,199,143, 29, - 59, 86, 51,100,200, 16,206, 96, 48, 60,181,192,150,203,229, 79, 45,174,195,194,194,236,206,123, 81,244, 12, 53, 0,141, 35,219, -174,101,228, 61, 27,128,196,218,121,132, 66, 72,165, 82, 72,165, 82, 72, 36, 18,220,190,125,123,166, 84, 42, 93, 98, 59, 22,151, -133, 73,254,154,180, 26, 16, 66,206,179, 44, 91,230,125,113,211,144,191, 99,252, 44, 33,205, 1,132,144,165, 0,218, 63, 25,242, -153, 40, 15, 15,143,247,146,147,147, 31,217,139,233,231,231,231,158,151,151,247,181,175,175, 47,188,189,189,173,115,135,191,191, - 63, 76, 38, 19, 82, 82, 82, 64, 41, 69, 86, 86, 22,228,114, 57,252,252,252,190, 30, 55,110,220,182,149, 43, 87,102,148,136,201, -227,139,158, 3,103,124,202,178, 44, 3, 0,172, 64,169,156, 52, 29,168, 90,181, 42, 90,181,106, 5,157, 78,135,236,236,108,212, -169, 83, 71, 64, 8, 25,198, 48,140,154, 82,250, 61,165,244,232,127, 80,235, 94,170, 49,252,236,226,251,162,132, 16,240, 60, 15, -129, 64,240, 20,209, 42,126, 89, 72, 81, 81,123, 37,229,173,156, 12, 6,131,149,100,185,184,184, 88, 73,154,217,108, 46,141,104, - 85,132,169,215,231,121,190, 58, 33,100,165,189,100,171,184, 12, 27, 54,236, 25,123,143,201,147, 39,199,167,166,166,210,215,187, - 52, 80, 68,239, 75, 76,170,225,170,148,121,170, 84,213,164,174,110,154,140,140,140, 51, 0, 52, 14,252, 68,205, 70,141, 26,201, - 54,236, 56, 17, 63,230,253,133,115, 27, 7,187,171,235, 7,120,184,250,184,200,196, 74,134,228, 75,205,166,120, 55, 55,183,144, - 10,172,208, 0, 0, 26,141, 6, 2,129,224,165,208,104, 81, 74,205,132,144, 8, 66,200,229, 61,123,246,160, 89,179,102, 86,178, -101, 33, 33,217,217,217,184,126,253, 58,218,180,105, 3, 0, 17,246,216,106,241, 60, 15,163,209, 8,163,209,104, 37, 48, 34,145, -232, 25, 2, 99,249, 44,203,178,215, 42,152,133,185,174,174,174,109,218,183,111, 47,254,121,203, 22, 49,165, 52, 31, 79, 2, 95, -231, 81, 90, 74,128,236, 98, 98, 54,155,173, 90, 54,161, 80,136,199,143, 31, 91, 39, 46,139,102,184,248,214,121,105, 34,145, 72, - 62,252,229,151, 95,212, 77,155, 54, 37, 25, 25, 25,224,121,222, 58, 72,126,247,221,119,210,126,253,250,249, 95,186,116,233, 99, - 84, 32,156, 13, 0, 82, 26, 33, 2, 0,181, 90,109, 6,192, 84, 6,166,217,108, 38, 45, 91,182,156,146,158,158, 94,175,176,176, -112,190, 61,237, 8,192,239, 69,151,101, 76,249, 51, 58, 58,186,112,192,128, 1,178,106,213,170, 53,123,222,182, 26, 26, 26,218, - 66, 40, 20,226,220,185,115,122, 0,150,149,117,212,213,171, 87,245,125,251,246,149, 4, 6, 6,182,112, 96,192, 13, 13, 15, 15, - 63,228,229,229, 37,179,104,131,250,247,239, 47, 92,181,106,149, 42, 33, 33, 1, 70,163, 17,211,166, 77, 67,247,238,221,225,225, -225,129,201,147, 39,123, 47, 90,180,232, 71, 0,141,202,192,148,138,197,226,141,247,238,221, 11,241,245,245,149,157, 61,123, 22, -245,235,215, 71,122,122, 58,146,147,147,145,151,151,135,228,228,100,140, 26, 53,202,235,171,175,190,242,179, 67,147,101, 37, 89, -171, 86,173,202,218,190,125, 59,187,122,245,106,149,237, 2,187,248,226,186,164, 69,181, 29,146, 37, 18,137, 32,151,203, 53, 89, - 89, 89,217,207, 81, 69, 18, 0, 98, 91,146, 37,145, 72, 32,145, 72, 32,149, 74,159, 43, 46,235,191,100, 18,247, 39,132,220, 20, -137, 68, 18,185, 92, 46, 98, 24, 6, 18,137,164,139,155,155,219,141,206,157, 59,215, 61,120,240, 96,172, 61, 56, 58,157,110,163, - 68, 34, 17,122,121,121, 1, 0, 66, 66, 66, 80,191,126,125,228,231,231,243,217,217,217,208,104, 52,204,163, 71,143, 80, 88, 88, -136,164,164, 36, 4, 5, 5, 9, 25,134,217, 8,224,181,146,240, 78, 93, 74, 90, 1, 96,133,229,222,211,211, 51, 5,128,204,114, - 47,149, 74,225,239,239,143,132,132, 4,168, 84, 42,246,179,207, 62,235,187,101,203,150, 62,132,144, 97,148,210, 77, 54, 80,179, -255,173, 54, 90, 22,146,101,251,250, 20,209,138,140,140,156,181,103,207,158,182, 37, 77,100, 69,251,181,165,106,178, 44,151, 61, - 29,143, 16, 2,142,227,224,237,237, 13,185, 92, 14,185, 92,110,217,243, 7,199,113,207,224, 23,173,240, 29,206,172, 66,161,192, -155,111,190, 73,191,255,254,251,241, 69,100,235,158,189,223,237,191, 60,218,170,197, 42, 46,181,107,215, 62,253,241,199, 31,247, -250,227,143, 63, 18, 26, 7, 87, 19, 40, 18, 31,229, 73,213, 26, 13, 2,170, 68, 14,239,221,247, 42,158,156, 62,180, 87,238,229, -230,230,202,106, 4,200, 13, 12,163, 35, 85, 36, 2,149,175, 66, 36,241,113,117,245, 23, 25,244,169,106, 87, 87,177, 94,175,207, - 2,144, 89, 22,136, 90,173, 62, 32,145, 72,130, 88,150, 5,203,178,240,240,240,112,161,148, 66,163,209, 32, 32, 32, 64, 25, 22, - 22,118, 71, 32, 16,128, 97, 24,228,229,229, 61,122,248,240, 97,151,242, 18,230,234,234,122, 64, 34,145, 4, 49, 12, 3, 66, 8, - 88,150,181, 30, 92,176,252,207,178, 44, 8, 33, 40, 40, 40,176, 11,147, 82,122,133, 16, 18, 17, 25, 25,105, 37, 91,251,246,237, - 67,215,174, 93,145,149,149,133, 27, 55,110,216,146, 44,187,182, 13,109,141,223, 41,165, 16,137, 68,184,125,251,246, 83, 91,218, -150, 75,165, 82, 85,184,243,184,185,185,157,236,223,191, 63,126,248,225, 7, 74, 41, 37, 0, 20,132,144,250, 46, 46, 46,183,111, -222,188,105,151, 29, 12,165, 20, 70,227, 95, 31,181,180,113,219,254,229, 0,153,238,210,168, 81, 35,146,157,157,109, 33,144,214, - 5, 17,203,178,248,246,219,111,101, 77,155, 54,157, 33,149, 74,167,136, 68,162, 28,147,201,244,179, 78,167,155, 79, 41,205,122, -153, 6,165,214,173, 91,191, 31, 23, 23,215, 61, 40, 40,104,215,115,144,120,218,164, 73, 19, 3, 0, 25,203,178,194, 74, 24, 40, -217,162,182,165,179,144,125, 74,169,185, 81,163, 70,186,162, 73,158,181, 23,203,195,195,227,199,189,123,247, 6, 4, 5, 5,193, -100, 50,193,108, 54, 35, 47, 47, 15, 81, 81, 81,208,235,245, 48,155,205, 8, 9, 9,193,167,159,126,170,123,239,189,247,164, 43, - 87,174, 76,205,203,203, 27, 92, 14,236,123,219,182,109, 83,248,250,250,202, 10, 11, 11, 17, 19, 19,131, 70,141, 26, 33, 55, 55, - 23,249,249,249, 40, 40, 40,128,209,104, 68, 78, 78,142,134,227, 56, 67, 57, 88, 51,109, 73,214,184,113,227,174,137,197,226, 70, -239,188,243, 14,226,227,227,173,125,126,204,152, 49,240,246,246, 46, 62,214, 59,196,180, 4, 2, 1, 36, 18, 9, 68, 34, 81, 86, - 80, 80, 16, 8, 33,210,216,216,216,138,108,197,169, 1,228, 8,133, 66,177, 45,193,146, 72, 36, 56,119,238,220,199, 98,177,184, - 68,109, 86, 89,237,199,145,251,151, 96, 34, 95, 42, 18,137, 36,110,110,110, 34,155,121, 90,164, 84, 42,225,229,229,181, 28, 64, - 55, 59,243,221,208,205,205,205, 58,190, 55,104,208, 0,113,113,113, 59,179,179,179,135,166,166,166,130, 97,152,141, 12,195,244, -177,240,128,204,204, 76, 4, 6, 6, 54, 44, 13,175,101, 35,223,241, 32,212,170,209,170, 93,211, 77, 89,108,158,130, 90,173,198, -195,135, 15,145,159,159, 79,239,222,189, 75, 38, 76,152, 64, 12, 6,195, 58, 66,200, 25, 74,233,131,178,184,200,191, 65, 42,100, -163,101, 41,224,210,136, 85,113,226,101, 15, 33, 50, 24, 12,202, 70,141, 26,241,150, 9,220,114, 1, 32,165, 17,173, 34,205,129, -195, 34, 20, 10, 85, 19, 38, 76,200,253,254,251,239,199, 17, 66, 86, 81, 74,239, 86,180, 0,119,109,255,201,251,139, 79,167,125, -234,230, 87,173,198,148, 41, 51, 5, 61,122,244, 56,187, 97,195, 6,206,173, 86,183,142, 71, 15,108,242,254,250,131,169,251,246, -238,221, 11, 60, 49,140,182, 87, 78,238,222,189,219,103,242,187, 19,241,233,135,239,237, 87,135,120,136,149,196, 77, 33,213,231, -167, 41, 65, 11, 37, 53,195,187,239,216,181, 43, 9,192,165,178, 64,100, 50, 89,208,221,187,119, 67,108,137,132,209,104,132, 70, -163,193,134, 13, 27, 60, 85, 42,149,167, 82,169,132, 64, 32, 64,253,250,245,237,213,152, 4,221,185,115, 39, 68,165, 82,161,160, -160, 0,122,189, 30, 38,147, 9, 60,207,131, 16, 2,161, 80, 8,177, 88, 12,133, 66,225,208,201, 62, 91,178,181,111,223, 62,212, -169, 83, 7,153,153,153,136,142,142,118,152,100,217,106,137,108,237,177, 4, 2, 1,126, 12, 14,198,152,196, 68, 43,129, 89,234, -226,130, 79,121,190, 66,117, 95,175, 94, 61,122,234,212, 41,236,223,191, 31, 61,123,246, 36,191,253,246,155,145,227, 56, 81, 66, - 66,130,221,218, 49,158,231,173,105,181,140,219,182, 4,203, 81,162,101, 54,155, 85, 98,177, 24, 58,157,206,186,181,111,123, 85, -175, 94, 29, 90,173, 86,144,147,147, 35, 72, 76, 76,148,207,155, 55,239,157, 99,199,142,249, 2, 24,244, 79, 14, 68,223,127,255, -125,208,152, 49, 99, 30, 11, 4, 2,218,181,107,215, 33,143, 30, 61,234,237,235,235,123,228,143, 63,254,248, 18, 64,168,163,120, -158,158,158, 23, 5, 2, 65,128, 82,169, 20,109,221,186,213,148,155,155, 43,242,242,242, 74,177, 16, 91, 75, 89,155, 76,166,248, -236,236,236,198,246,224,121,122,122,138,190,249,230, 27, 83, 70, 70,134,200,199,199, 39,197,130,163, 80, 40, 68, 91,183,110, 53, -229,228,228,136, 52, 26,205,197,172,172,172,114,241,210,211,211, 7, 15, 27, 54,236,196,145, 35, 71, 60, 88,150,197,163, 71,143, -144,145,145, 1,141, 70,131,141, 27, 55, 34, 40, 40, 8,219,182,109,211,106,181,218,209,255,251,223,255,102,228,229,229,217,227, -234,161, 77,179,102,205,130,178,178,178,160,209,104,144,159,159,143,139, 23, 47,162,118,237,218, 72, 76, 76, 4,195, 48,208,104, - 52,248,238,187,239, 10, 8, 33,218,114,198,142,222, 99,199,142,213, 0,192,216,177, 99, 53, 99,199,142, 45,113,130,107,209,162, - 5,150, 47, 95,238,208,162,186,184,150,221, 66,138,108,200,145,174, 69,139, 22, 56,118,236,216, 84, 71,200, 17,165,212, 32, 20, - 10,159, 34, 88, 54,255,155, 29,109, 67, 28,199,137,138,108, 68,137, 61,247, 47,129,180,149,201,100,162,226,111, 22, 20, 20,136, -124,125,125, 91, 59, 64,124,221,101,178, 39, 10,167,160,160, 32,100,103,103,115, 6,131, 97,224,198,141, 27, 77, 0,208,168, 81, -163,129, 28,199,233,204,102, 51, 43, 22,139,145,159,159, 15, 47, 47, 47,247, 82, 1, 25,124,244,251,207,243,124,138,219,104,249, -250,250, 34, 34, 34, 2,122,189, 30, 73, 73, 73,136,138,138, 50,113, 28,183,249,251,239,191,231, 61, 61, 61, 71,190,254,250,235, -236,165, 75,151,222, 6,240,126, 89, 92,228,223,162,205, 42,141,108, 89, 78, 29,182, 5,112, 12, 64, 59, 75, 38,109,183, 14,203, -210,100, 57,178,202, 97, 89, 54, 43, 62, 62, 94,161, 80, 40,172,239,153, 76, 38,248,249,249,241, 60,207,147,226,191, 83, 65, 21, -245, 83,100,107,250,244,233, 89,223,125,247,221, 80,216,105, 80,190,245,237,112,108, 40, 70,178, 86,124, 49,103,249, 55, 95,204, -115,187,191,127, 29, 86, 47, 91,204,113, 28, 46,213,171, 87,175,117, 94, 94,158,192, 69, 97, 66,122, 22,246,225,137, 31, 45,106, -103,133, 48, 0,214,158, 63,127,254, 82,183,110,221, 78,173,253,101,135, 91, 98, 76,204, 25, 73, 78,122,146,186,102,136, 64,228, - 31,212, 39, 87,167, 19, 13, 28, 56,208, 19,192,235,101, 97, 49, 12,131,152,152, 24,196,198,198, 66,169, 84, 66,165, 82, 65,169, - 84, 66,173, 86, 67,165, 82, 65,165, 82, 57, 92,134, 12,195,128,227, 56,108,223,190, 29,114,185, 28, 10,133,226,169,203, 66,178, -158,167,110,186,118,237, 10,173, 86, 11,165, 82,105,221,238,116, 68, 44, 54, 90, 6,131, 1, 6,131, 1, 70,163,145, 3, 32, 20, - 8, 4, 24, 21, 31,111,213,242, 56, 66, 96,138, 75,253,250,245,233,153, 51,103,112,234,212, 41,228,231,231,227,155,111,190,129, -175,175,111, 7, 0, 51, 29,197,178, 49,210,231,114,114,114,132, 57, 57, 57, 86,237,160, 80, 40,180,106, 15,236,157, 28, 4, 2, -129,117, 53,106,185,108,181, 90, 44,203,194,219,219, 27, 62, 62, 62, 88,177, 98,133,168, 90,181,106,221,255,201, 65,104,209,162, - 69, 53,151, 46, 93,186,102,195,134, 13,251, 6, 15, 30,188,229,250,245,235, 35, 92, 92, 92,174, 29, 61,122,116,158, 68, 34,225, - 43,216,191, 3, 18, 19, 19,189,108,223,226,121, 94,110, 54,155,173,196,182,160,160, 0,117,235,214,181, 27,239,230,205,155,114, - 0,152, 55,111,158, 16,128,220, 98, 12,110,193, 44, 40, 40, 16,214,174, 93,219, 46, 67,112, 74,233, 29, 66, 72,235, 78,157, 58, -157, 62,116,232,144,107, 80, 80, 16, 18, 18, 18,144,144,144,128,154, 53,107, 98,193,130, 5,249, 57, 57, 57, 45,139,200,213,111, -118,102,219,207,213,213, 85,248,248,241, 99,152,205,102, 52,108,216, 16,223,125,247, 29, 6, 14, 28,136,186,117,235, 34, 39, 39, - 7, 55,111,222,196,250,245,235, 93, 69, 34, 81,153, 99, 71, 97, 97,225,111,171, 86,173, 10, 44,174,209, 26, 50,100,136, 34, 37, - 37,197,218, 38,231,204,153,243,212,184,236,200, 46, 67,209,214, 86,169, 87, 69,196,108, 54,171,165, 82,105,142, 68, 34, 17, 91, -236,179,162,162,162, 28,214,102,217, 46, 0, 29,185,255, 39,197, 66, 90,139,139, 88, 44,134,143,143,143,221, 56, 18,137,132, 88, -198, 70,179,217,140,236,236,108,206,215,215,215,186,189,127,249,242,101,174,106,213,170, 28,203,178,172, 88, 44, 6, 33, 4,114, -185,188,212, 1,159,114,116, 78,143,129, 51,173,167, 14, 25,161, 66, 61,105,250,147, 69,255,229,203,151, 97, 52, 26, 17, 21, 21, -101,250,223,255,254,151,152,149,149, 53, 9,128,224,192,129, 3,195,166, 78,157,202,122,121,121, 89,237,104, 75,226, 34,255, 54, -178, 85,146,150,203, 50, 11, 29,139,140,140, 36, 69, 71, 43,137,133,224, 80, 74,159, 33, 87,165, 17,175,162,206, 71,202,235,116, - 44,203, 98,255,254,253, 86, 66, 96, 57,117, 72, 41, 69,101, 19, 45,119,119,247,252,102,205,154,169,227,226,226,126,170,168, 38, -107,197, 23,115,150, 47,156,251,153,155,246,214, 89,196, 39, 38, 65,155,106,186,116,242,218,195,157, 0,118, 2, 0, 86,214, 58, -134,113,183,190,181, 23,179,150,167,188, 65, 61, 63,213,206, 87,187,117, 15, 28, 48,246,125,230,173,183,222,106, 53,108,216,176, -236,193,131, 7,191,171, 84, 42, 67,141, 70, 99,230,142, 61,123, 98, 7, 12, 24, 80,141,227,184, 97,229,249, 28, 49,153, 76,143, -250,246,237,107, 45, 91, 31, 31, 31,245,207, 63,255,236,173, 82,169, 48,100,200,144,180,216,216, 88,235,118, 81,110,110,238, 35, -123,210,104, 52, 26, 31, 53,104,208,160,212,237, 66,139, 70,210, 17,204,162,186,180,158, 46,204,200,200,192,237,219,183, 33, 16, - 8,208,188,121,115,156, 60,121, 18,173, 90,181,114,232,196,161, 78,167, 67, 80, 80, 16,116, 58, 29,242,243,243, 11, 0, 72, 54, - 86,171, 6, 0,120, 59, 35, 3, 23,255,247, 63,156, 93,184,176, 66,237,168, 65,131, 6,244,220,185,115,184,118,237, 26,244,122, - 61, 70,143, 30,141,162,109, 67, 0,232,236, 64,158,131,125,124,124,186,118,235,214,205, 15, 0,242,243,243,201,249,243,231, 33, -149, 74, 65, 8, 65, 82, 82, 18,118,237,218,133,132,132, 4, 16, 66,224,234,234, 26, 64, 8,169, 70, 41,125, 88,198,196, 64, 30, - 62,124,136,207, 63,255, 28, 60,207, 99,234,212,169, 8, 9, 9,177, 18,172, 71,143, 30, 97,222,188,121,224, 56, 14,159,125,246, - 25,106,214,172, 9,147,201, 36,117,196, 79, 89,101,203,228,201,147,239,239,220,185,115, 95, 92, 92,220,107, 95,124,241, 69, 91, - 66, 8, 63,101,202,148,207,213,106, 53,247, 60,184,153,217,185,184,125,239,145,149, 8, 21,191, 60, 61,220, 28,198,187, 27, 19, -103,253, 62,199,217,226,113,112,119,115,117, 52,137, 5, 38,147, 41,191, 79,159, 62,154,237,219,183,147,154, 53,107,226,193,131, - 7,150,197,105, 65, 5, 92, 58, 36,104,181,218, 16,150,101, 69,247,238,221, 67,213,170, 85,209,172, 89, 51,204,159, 63, 31,233, -233,233, 48,155,205,240,242,242,226, 77, 38,211,101,131,193,112,188, 28,172, 57,227,198,141, 19, 1, 24, 95,164,217,170, 55,105, -210, 36,126,241,226,197,184,124,249,178,117, 60,182, 53,134,119,116,235,208, 86,235,100,123, 69, 69, 69, 77, 21,139,197, 20,192, - 57, 0, 14, 17,109, 74,169,161, 74,149, 42,197,177,205, 47,203,100,251, 34, 79, 50,250,250,250, 70,169, 84,170,238,153,153,153, - 79,105,181, 90,182,108,105,244,246,246, 62, 97, 47,142, 82,169,204,100, 89,214, 29, 0, 18, 18, 18,160, 80, 40, 68, 49, 49, 49, - 11, 9, 33,211, 0,160, 90,181,106, 11,181, 90,173,168, 90,209,120,234,227,227, 3,131,193, 80,170, 25,203,233,203,201,235, 0, -172,179,153,123,147,178,179,179,101,139, 23, 47,206, 91,184,112, 97, 33,199,113,122, 0, 71,179,178,178,172,126,180,170, 86,173, -154, 45, 20, 10,221, 52, 26,141,191, 13,212, 51, 92,228,191,176,125,104,235,176,148,150,240,165, 18, 53, 89, 37,145, 45,123,180, - 18,132, 16, 20, 22, 22, 62,165, 29,177,156, 58, 44,137,104, 21, 77,232, 21,218, 58, 44, 34, 89,178,159,127,254,121,243,178,101, -203, 78,217,251, 61, 91, 27,173,149, 95,206,253,194, 66,178,174,158, 58,132,223,162,179,211,167, 46, 92,178,180,162,149, 80,219, - 83, 81,223,199,219,227,216,255, 22,204, 81,223,223,191, 30, 91, 86,126, 69,175, 94,184,208,244,194,133, 11, 67, 39, 78,156, 88, -165,168, 97,105, 1,252, 9, 96,128, 61,167,116,210,210,210,158,178,143, 10, 9, 9,185,163,209,104,188,165, 82, 41, 98, 98, 98, -242,110,220,184,225,240,150, 76,113,204, 74, 98,250, 79,145,172, 27, 55,110,160,125,251,246, 0,128,147, 39, 79,162,101,203,150, - 14,145, 45,147,201,148, 85,171, 86, 45,171,118, 43, 59, 59,155, 7,128,177, 73, 73, 88,229,235, 11,129, 64,128,179, 11, 23,226, - 19,147, 9,243,133,142,153,238, 52,108,216,144, 94,184,112, 1,177,177,177, 48,155,205,232,213,171,151, 45,201,114, 36,207,117, -195,195,195, 15, 31, 61,122,212, 83,169, 84, 34, 63, 63, 31,121,121,121, 24, 62,124, 56, 6, 14, 28, 8,189, 94,143,173, 91,183, -226,247,223,127,135, 74,165, 66,126,126, 62,242,243,243, 93, 35, 35, 35, 79, 19, 66,218,148,102, 91, 72, 41,165, 93,186,116,193, -137, 19, 39,192,178, 44,154, 54,109,138,140, 12,235, 97, 32,120,123,123,151,244,140, 45,234,239,255,200,132, 36, 16, 8,104, 84, - 84,212, 23,109,219,182, 69, 92, 92,220,107,141, 26, 53,250,102,196,136, 17, 9,207,139,235,234,162, 66,131,218,193,208,235,245, -208,235,245,240,243,243, 67,110,110, 46,238,223,191, 15,189, 94, 15,111, 47,141,195,120, 17,117,107, 90,241,188,188,188,144,159, -159,143,135, 15, 31,194, 96, 48,192,195,195,213,145,250, 15,236,210,165,203, 31,155, 55,111,118, 95,191,126,189,161, 93,187,118, -226,111,190,249,134,168,213,106,164,166,166, 86, 52,203, 81, 39, 79,158, 12,234,212,169, 83,216,173, 91,183, 16, 21, 21, 5,131, -193,128,136,136, 8,220,189,123, 23, 45, 90,180, 64, 94, 94,222,185, 11, 23, 46,252,110,199,164,192, 19, 66,102,140, 27, 55, 14, - 22,178,117,226,196, 9, 36, 37, 37, 65,165, 82, 61, 67,180, 44,182,143, 98,177, 24, 0,252,236,212,156, 88, 79, 5, 22,105,158, - 62,209,104, 52, 70, 0, 75,159,167, 45, 62,126,252, 88, 82,191,126,125,189, 84, 42, 21, 23,145,182, 37,255, 84,219, 46,161,222, -159,235, 36, 99, 89,226,227,227, 51,201,195,195,163, 83,245,234,213,145,146,146, 34, 18,139,197,104,217,178,165,177, 73,147, 38, - 70, 31, 31,159,183,237,197,145, 72, 36,183, 68, 34, 81,155, 39,139, 9, 14,143, 31, 63, 6,165,116,106,221,186,117,223,203,205, -205, 69, 70, 70,134, 88,173, 86, 91, 23,213, 97, 97, 97,208,235,245,183, 28, 32,155,115,170, 86,173, 58, 67, 36, 18,205, 79, 75, - 75,251,190,132, 50, 18, 55,104,208, 64, 45, 18,137, 96, 52, 26,159, 34,155, 37,113,145,127, 51,201,122,138,104,217,176,200,226, -234,244,114,183, 13,237,181,209, 34,132,192, 96, 48, 64,161, 80, 88,183,164,108, 61,193,151, 68,180, 42, 34,129,129,129,104,214, -172,153,108,203,150, 45, 63, 46, 94,188,248,116, 69, 48,182,109,222,228,235,194, 23, 4, 38,158,219,139, 59,215, 46, 97,231,205, -172,244,169, 11,151,188,219,227,245, 65, 41,197,137,217,214,113,229,227,133,122, 41,234,250,123,187, 31,251,114,209, 66,181,246, -214, 89, 36, 37, 39, 99,239,185, 11,151, 12,148,222, 4, 48,181,178, 42,219,246,244, 90, 69, 73,234, 11, 24,120,172,238, 29,210, -211,211,113,243,230, 77, 11,201,138, 0,128, 86,173, 90, 93,182,144,173, 75,151, 46,161, 81,163, 70,207,184,119,120, 70,243,144, -153,185,160,216,111,116, 2,224, 97, 33,252, 2,129, 0, 45,103,204,112,152,100, 17, 66, 40,199,113,208,106,181,150,149, 98,133, - 72, 86,209,160,248,225,209,163, 71, 61,215,174, 93,155,179, 97,195,134, 12,158,231,133, 13, 26, 52, 8,104,220,184, 49,217,184, -113, 35, 0, 96,192,128, 1,152, 58,117, 42,110,220,184, 1,133, 66,129, 86,173, 90,113,179,102,205,242,154, 52,105,210,219,120, -226, 39,233, 25,225, 56, 78, 84,173, 90,181, 35, 0, 58,220,186,117, 11, 0, 78, 83, 74, 91, 90,158,151,245,204, 14,225,115,115, -115,133, 42,149,170, 68,215, 16,162, 39,199, 58, 29,221,234,179, 98,158, 58,117,234,243, 47,191,252,114,231, 7, 31,124,112,239, - 57, 49, 75,212,104,117,239,222, 29,133,122, 35,226, 83,178,193,113,102, 20, 26, 83, 29,198,179,213,104,117,239,222, 29, 5, 58, - 3, 30, 39,105, 97, 54,115,200, 45, 52,219,219,142,228,175,190,250,234,129,159,127,254,217,231,204,153, 51,224, 56,142,191,123, -247,238,195, 62,125,250,168,167, 76,153,226,110, 99,131,234,168, 44, 27, 52,104, 80,191, 83,167, 78,105,195,194,194,220,206,157, - 59,135,212,212, 84,152,205,102,116,232,208, 1, 98,177,248,241,194,133, 11, 69, 0,150,217, 57, 57, 88,200,150,241,194,133, 11, - 99,206,158, 61,235,230,230,230, 38,230,195,195,145,116,232, 16,182,111,223,254,204,119, 86,174, 92, 9, 0,118,121,225,183,104, -156,206,159, 63, 95, 41, 4,171,248,118, 89, 69,183, 31,255,173,114,238,220,185,132,137, 19, 39,214, 86,171,213, 75, 91,183,110, -221,222,221,221,157,113,117,117,141,242,247,247,127,175,126,253,250,143, 28,152, 39, 70, 40, 20,138,251,102,179,153,205,203,203, - 67,126,126, 62, 0,192,108, 54,139, 25,134, 65,181,106,213,172,202,147,166, 77,155,194,199,199,135,139,142,142, 30, 97, 47,126, -106,106,234, 83,167, 16, 75,144,113, 45, 91,182, 20,232,245,122,196,198,198,158,180,125, 80, 26, 23,121,217,165, 66, 65,165, 25, -134, 1,165, 20,210,198,141, 75,237,112, 37,116, 62, 82,124,242,179,245,181, 97, 57, 93, 56,102,204, 24,235,103, 46, 93,186,100, - 53,138,239,213,171,215, 83,152,231,207,159,127,134,108,217, 19, 49, 60, 53, 53,245,214,214,173, 91, 47, 44, 90,180,232,156,157, - 5,100,197,180,216,104,245,123,115, 72,210,242,207, 63,189,190, 97,215,209,186, 73,133, 52,105,234,194, 37, 31, 20, 39, 89,246, - 98,214,242, 81,214, 10,240,114,143, 90,188,104,161,139, 69, 59,246,243,229,228,108,152,233, 56, 7, 43,178,220,188,219,106, 22, - 9, 33,124,101, 96, 86,160,193, 61,133,105,235,222, 33, 41, 41,201, 74,178,108, 28,150, 70,180,106,213,234,114, 17,201,178, 60, - 51, 87, 36,157, 2,129, 0, 31,228,229, 65, 32, 16,160,221,236,217,232, 48,119,174,195,121,231, 56, 14, 2,129, 0, 33, 33, 33, - 14,147, 44, 91, 76, 66, 72,203,130,130, 2,172, 95,191, 62,247,222,189,123,193,213,171, 87,159,180,110,221,186, 37,114,185,252, -169,239, 20, 20, 20,160, 71,143, 30,248,254,251,239,209,165, 75, 23,211,136, 17, 35, 36, 12,195,116, 42, 43,157,177,177,177,227, - 58,118,236,184, 82,167,211, 9, 50, 50, 50,198,217,251,172,188,188,111,221,186,245, 94, 72, 72, 72, 91,148,238,194,129, 7,112, -230,121, 48,151, 46, 93, 10, 0, 97,207,131, 89,154, 70,235,151, 95,126, 1,207,243, 8,244,209, 64,175,215,163,120, 89,151,135, - 89, 92,163,181,101,203, 22,240, 60,143, 42,190,110, 48, 24, 12,176, 24, 16,151,135,233,238,238,254,213,134, 13, 27, 2,162,163, -163, 17, 31, 31,143, 37, 75,150, 60,202,202,202,234,150,149,149, 37,153, 53,107,214,177, 55,223,124,211,155,231,121,189,163,125, -147, 82,170, 39,132,140,120,229,149, 87, 54,206,155, 55,239, 65,120,120,120,149,150, 45, 91,106, 50, 50, 50,210,174, 92,185,242, -112,229,202,149, 74,179,217, 60,162,180, 45,169, 82, 48,121, 0,179, 8, 33,223,107, 52,154,157,177,177,177, 77,107,102,102,178, -126,132,160,105,211,166, 79,153, 14, 48, 12,131, 19, 39, 78,128,231,249,251,246,148,103, 66, 66,194,236, 34,109,170, 67, 4,203, -158,254,126,254,252,249,233, 69,216, 23,236,193,254, 59,198, 58,139,198,217,145,123, 71,211,249,237,183,223,198,163,152,127, 52, - 71,211,121,254,252,249,216, 78,157, 58,205,245,246,246,158, 37,149, 74,145,150,246, 36,216,129, 69,243,104,153,175, 27, 55,110, -140, 46, 93,186,224,206,157, 59,115,103,204,152, 17,251, 60,229, 89,180,224, 14, 6, 48,180, 99,199,142, 83,250,245,235,135,111, -191,253, 22,148,210, 53,255, 5, 18, 92,110, 80,233,200,200, 72, 98,251, 90,180, 53, 19,119,255,254,125, 95,219, 14,103, 27,163, -208,210,233, 44, 6,117,199,143, 31, 55,219,118,190, 82, 86,226,113,167, 78,157,242, 62,116,232,144,208, 82,161, 69, 70,157,124, - 98, 98, 34,115,236,216, 49,171,118, 76, 32, 16, 32, 42, 42,202,108, 52, 26, 31, 59,154,225, 59,119,238, 44,171,140,130, 59,126, - 35,246,189, 3,123,127,245,104,222,172,117,150,218,205,173,196,142,108,241, 32, 95,102, 3, 19, 48,243,191, 88, 48, 71, 99, 33, - 89,191, 92, 78,206,210,233,185,246,183,210, 10,174, 86,118,101,231,230,230,198, 90, 78, 23,230,229,229, 61,126,137, 26,225, 21, - 66, 72,132,175,175,239,101, 20, 59, 93,104,121,214,168, 81,163,103,158, 57,164, 54,225,121,184,184,184, 88, 7, 9, 71,237,178, - 8, 33,212,178,149, 93,148, 46,242,156,121, 62,117,253,250,245,170,195,135, 15, 87,133,132,132,196, 16, 66,132,163, 70,141, 50, -250,248,248,136, 78,158, 60,105, 2, 64,218,182,109, 43, 72, 78, 78,166, 9, 9, 9,218,158, 61,123,230,142, 25, 51,198,253,207, - 63,255, 20,243, 60,127,184, 28,236, 7, 0, 58, 58,250,172, 60,233,215,175, 95, 12, 74,112, 28,250, 60,242, 34, 48, 45,162,205, -202, 65, 76,108, 66,145, 7,115, 30,220,163, 20,171, 93,149,201,100,134, 54, 39,195, 97,141,214,253,135, 9, 69, 33,199, 56,112, - 92, 98, 17,222, 19,131,120,154, 89, 96,143,182,160,213,210,165, 75,187, 49, 12,195,156, 61,123, 86,191,104,209,162,184,180,180, -180, 94,148,210,199, 69,237,172,221,250,245,235,127,180,195,149, 67,105,117,127,147, 16,210,226,163,143, 62,122, 23, 64, 43, 0, - 85, 0, 60, 6,112, 18,192,178,138,122, 48,167,148,166, 18, 66, 58,119,235,214,237, 16,203,178,213,108,250,145, 7,128,116,155, -126,225,149,146,146,242,154,157,176, 75, 94,224,176,178, 4, 47,161,252, 91, 78, 50, 30, 62,124,120,118,239,222,189, 5, 65, 65, - 65, 31, 7, 5, 5, 49,153,153,153,200,203,203, 3,195, 48,240,241,241, 65,157, 58,117,224,227,227,195,223,186,117,107,193, 71, - 31,125, 84,174, 79,190,218,181,107, 7,155, 76,166, 26, 12,195, 4, 3, 8,166,148, 6, 19, 66,130, 1,184, 21,105,198,212, 85, -171, 86, 21, 52,111,222, 28,205,154, 53,195,177, 99,199,176,109,219,182,117,148,210, 3,182,218,172,226, 92,228,101,144,155,141, - 73, 91,194,227, 24,101,208,174,246, 69, 26,117, 43,130,208, 90,151,159,157, 31,202, 13, 42,253,204,128,147,153,217,165,132, 14, -103, 11,248,212, 43,207,243,177,229,117,190,204,204,204, 46,239,189,247,222, 33,150,101,171, 89, 52, 85,102,179, 89,175,213,106, -223,106,215,174,221,119, 66,161, 80, 98,139,203,243,252,163,148,148,148,191, 53, 86, 95,113, 63, 90, 93,186,245, 78,127, 94, 76, -165,136,169,113,103,207, 15, 72, 73, 77,199, 47,151,147, 51,115, 13, 92,187, 59,105,249,215, 95, 68,250, 99, 99, 99,187,190,196, -140,255, 74,105, 91,130,101, 61,179, 83,210,236,112, 72,154, 86, 78,250, 72, 17,217,170,148, 78,158,156,156,188,120,198,140, 25, -157, 23, 44, 88,224,185,111,223, 62,117,209,111,160,111,223,190,169,215,175, 95,111, 13, 64,162,211,233, 14, 47, 88,176,192,115, -206,156, 57,238, 0,220,139, 6,153,148,148,148,148,229,112, 74,153, 98, 50,153,226,235,212, 10,179,212,221, 83, 46, 29,108,255, - 55,155,205,241,142,224,149,132, 99,123,207,113, 92,124, 57, 90,229, 15,154, 53,107,198,126,240,193, 7, 41,251,246,237,179, 4, -210, 45,176,105,103,119, 80,134, 83, 82, 59,251,146, 30,192,162,162,171, 50,251,104, 62,128, 22,206,214,245,252, 99,157, 35,247, -255,148,252,250,235,175, 51, 7, 14, 28,184,222,205,205,109, 83,112,112,112,152,183,183,183, 90, 38,147, 65,175,215,231, 26, 12, -134,219,119,238,220, 25, 60, 99,198,140, 7,246, 96,173, 95,191,158, 5, 32,226,121, 94,202, 48,140, 2,128,154, 16,226,106, 33, - 90,132, 16, 24,141, 70,196,198,198,226,147, 79, 62,225,142, 28, 57,242, 63, 0,159, 57,144,220, 38, 0, 60,109,198,113, 79, 0, - 6, 60,113, 96,155, 86,164,217,124, 33, 66,120, 28,171,117,153,146, 91, 17,164, 84, 35,253,114,131, 74,255, 93, 29,174, 28,204, -160,151,165,147, 12,211, 47,250, 9, 43, 23, 61, 21,231,208, 66,194, 74,188, 47,103, 3, 48,187,208, 60,113,217,129, 27,139,245, -102,202, 27,205,252,200, 59,169,249, 55,255, 31, 15, 64,230,138, 60,179, 3,247,213, 74, 74, 31,169,196,188, 94, 39,132,188, 50, -113,226,196,153,114,185,188, 41, 0, 20, 20, 20,156, 77, 76, 76,156,107, 57, 85, 88,222,115,167,148,193,154,211,210, 26,191,140, -120, 6,131,225,189, 87, 94,121,229,107,142,227,190, 52,153, 76, 39,157, 53,229,148,151, 89,126,249,229,151, 7,150,121,185,127, -255,254, 44, 0,108,221,186,213,225,211,192,195,135, 15,231,138, 2,153,235, 0,228, 3,200,193, 19,135,219, 4, 0,242,243,243, - 51, 19, 19, 19,111,113, 28,119, 11,192,143, 21, 56,113,235, 73, 8,217, 77, 41,237, 94, 52,118,238,166,148,118,183,125,239, 69, -139, 13,217, 42,105,188, 47,223, 24,222, 41, 79,100,235,141,191, 38,218,226, 4,170,188,251,210,228,118,114, 94,212,243,174, 96, -157,242,175, 37,150, 49, 0,134, 85,244,185, 83,254,149,117,254, 24, 64, 47,103, 73, 56,229, 95, 55,255, 85,128, 96, 89,228,230, -205,155, 47,204, 68,224,159, 22,219,109,194,146,182, 12, 45, 82,146, 54,203, 73,180,156,226, 20,167, 56,197, 41, 78,113,138, 83, -202, 34,145, 69, 54, 90, 86, 18, 85,100,171, 85,156,100,217,146, 43,219,123, 2,160, 83, 41,171, 50, 71, 78, 19,116,170,192,170, -239,176, 19,211,137,233,196,116, 98, 58, 49,157,152, 78,204,255, 95,152, 21,148,200,114,182, 14,247,188, 40,162,101, 49,126,191, - 25, 65,102,213,190, 76,103,149,100, 12, 95, 22,209,122,202,216,179,178, 47, 0,157,156,152, 78, 76, 39,166, 19,211,137,233,196, -116, 98, 58, 49,159,243,106, 63,109,218,180,233,120, 18,255,152, 78,155, 54,109, 58,165, 52,242, 9,141,161,145, 47,242,183,111, - 52, 66,219,155, 13, 65, 45,215,141, 70,104, 91, 74,153,140,181, 92,182,239, 59,183, 14,157,226, 20,167, 56,197, 41, 78,113,202, -203, 46,167, 23, 46, 92, 88,176,112,225, 66,139,225,123, 26, 0, 82,164,205, 74,123,145, 63, 92,180, 77, 88,238, 65,169,114, 67, -240,252,221, 66, 8,241, 99, 4,162, 33, 66,145,164, 61, 40, 95, 7, 0,192,176, 55, 56,131,238, 15,179,217,184,137, 82,154, 88, - 81,236, 90,132,212,170,169,145,253,174,231, 56, 81, 92,174,161,223, 45, 74,207, 87, 4,167, 63, 33, 45, 37, 98,241, 65,137, 70, - 83,162,151, 66,125, 86, 86,161,222, 96,232,188,149,210, 83,206, 62,224, 20,167, 56,197, 41, 78,249, 55, 8, 33, 68,225,234,234, -122,132, 97,152, 32,155,247, 80,210,255, 0,192,113, 92,146, 86,171,237, 76, 41, 77,255, 59, 49,139,137, 1,192,249,151,161,252, - 28,221, 58, 20, 0, 79,197, 22, 42, 55, 98,118,184,175,178,117, 88,112,208,230,196,228,148,203, 57, 58,195,168,219, 9,185, 90, - 71, 19, 41, 16, 73,199,104, 60,124,230,191, 49,226, 61,247,144,208, 48, 18, 24,232, 15, 80,224,113, 92,188,247,253,123,119, 59, -110,217,176,108,178, 72, 42,253,196,168,211,253,224, 48,243, 36, 68, 17,164,148,156,252, 97,218,155, 26, 1,204, 24, 52,111,243, -254,218,132, 4,222,124,226, 90,194, 33,146,165,113,119, 63,176,240,240, 97,153,107,145, 3, 80, 27,214,250, 36,190,222,213,171, -178,143, 59,119, 62,208,159,144, 46, 78,178,245,159, 28,140,124,212,106,245, 36,161, 80,216,206,104, 52, 6,137,197,226, 56,142, -227,162, 50, 51, 51,151, 82, 74, 19,156, 37,228, 20,167,148,219,135, 74, 13,100,254, 79, 6, 57, 7, 0,149, 74,117,145, 97,152, - 0, 91, 18, 96,241,239, 88,220, 79,164,141,191,200, 7, 25, 25, 25,175,148,145,223, 96, 55, 55,183,239, 0, 52, 41,207, 97,114, -209, 86,211, 5,173, 86,251, 86,209,233,227,146,240, 84,174,174,174,179, 9, 33,253, 25,134, 41, 55,160, 48,207,243, 28,165,116, -107,102,102,230,103,148,210,220,210, 62,231,234,234,122, 56, 58, 58,186,137,151,151, 87,185, 90, 26,179,217,140,199,143, 31,123, - 54,109,218,244, 56,128,240, 23,137,233, 8, 23,249, 39,165,172,147,135, 37,114, 30,203, 63,246, 70,204,230,121, 12, 89, 59,255, - 45,255,164, 71,247,252,199, 45,248, 41, 52,220, 67,222, 46, 58,189, 32,217,222, 31, 20,203, 84,191,183,234,208,189,253,132,119, - 63, 80, 92,185,126, 27, 7,143,157, 65, 78,190, 30, 44,195, 64,163,146, 35, 52,180, 6, 89,178,106,187,199,186, 21, 75,190,148, - 41, 53,145,133,121, 89, 61, 29,201,144, 66, 46,248,100,106,159,166, 10,119, 55, 14,224, 57,124,216,173,129,226,227,221,151, 63, - 1, 48,221, 97,146,117,228,136, 60, 53, 37, 5,115,252,252, 32, 48,155, 33,101, 24, 72, 9,129,148, 97,160,144, 74,209,117,205, - 26,204,221,183, 79, 62,243,181,215,156,100,235, 63, 38, 42,149,106, 68,104,104,232,162,213,171, 87,187, 87,175, 94, 29, 10,133, - 2, 90,173,214,227,206,157, 59, 13,223,127,255,253, 97, 46, 46, 46, 51,178,179,179, 87, 58, 75,202, 41, 78, 41,149,116, 52, 4, - 80, 98,144,248,178,158,253, 93,194, 48, 76, 64, 66, 66,130,151, 92, 46, 7,199,113, 69,209, 0,120,235, 66,218, 54, 82, 78,145, -163, 90,132,135,135, 27,203, 25, 55,190, 77, 77, 77,237,100, 27, 10,173,172,136, 59, 9, 9, 9,157,106,215,174,253, 45,128,206, -165,144,151,217,239,190,251,238,164,186,117,235, 90,180, 64, 69, 81, 16,158,188,166,167,167, 99,226,196,137,214,223,224,121, 30, -135, 14, 29,122,119,196,136, 17, 0,240,126, 25,121, 15,242,242,242, 34, 69, 1,197, 75,149, 89,179,102, 97,214,172, 89, 88,182, -108, 25, 17, 10,133,154,114,202,179, 82, 48,237,229, 34,255,132, 6,171,184,135,248, 98, 31,219, 83, 44,222,225,158,103,136,150, -221,141,147,242,123,231, 45, 93, 61,106,206,240, 86,100,237,251,157, 66,198, 47, 59,124,166,182,159,172,205,205,196,194, 56, 59, - 52, 89, 35,155,183,121,173,221,196, 73, 83, 21, 63,253,122, 20,119,110, 93, 69,244,201,159,159,250, 76,227,206, 35,144,156,158, -139, 17, 19, 62, 84, 18, 86,208, 78, 36,149,143, 52,234, 10,214,218,169,205,242,174,237, 38,127,167,121,211, 58,194, 4,217, 29, -248,184,202,208,170, 81, 77, 97,224,129,107,239,212, 38,228,235,155,148,150, 27,171,176, 56,201, 90,253,230,155,104,109, 50,193, -139,101,193, 18, 2, 22, 0, 67, 8,116,122, 61, 46, 12, 25,130,166, 27, 55,226,179, 93,187,228,179,123,244,112,152,108,201,229, -242,117,133,133,133, 95, 84,192,113,219, 63, 57,120,134,170, 84,170, 79,114,114,114,134,188, 68,105,242, 5,144, 86, 66,124, 68, - 17, 0, 13,165,212,161,200,194, 82,169,116,204,160, 65,131,150, 44, 95,190, 92,158,146,146,130,196,196, 68,112, 28, 7,169, 84, -138,144,144, 16,114,248,240, 97,247,169, 83,167, 46, 86,171,213,146,156,156,156,175, 29, 72, 39, 35, 20, 10,135,187,185,185,245, -246,246,246,246, 74, 75, 75, 75,203,204,204,220,165,215,235,215, 86,116,101, 95,132, 57,184,106,213,170,189,253,252,252,188, 19, - 18, 18,210,227,227,227,127,215,235,245,235,138, 98,216, 61, 79,153,214, 71,145,183,122, 0, 73, 85,171, 86,189,241,240,225,195, -212, 74,196, 76,172, 90,181,234, 77, 71, 49, 9, 33, 10, 0, 91, 0,248,149,243,209, 68, 0, 3,168,131,218,108,167, 84, 30,201, - 42, 10,105,245, 20,161, 42,235,217,223, 45, 50,153, 12, 63,255,252, 51,132, 66, 33,132, 66, 33, 50, 51, 51, 17, 16, 16, 96,189, - 23,137, 68,214,255,171, 84,169, 82, 46, 30,199,113, 77, 89,150, 69, 94, 94, 30, 56,142,179, 94, 89, 89, 89,160,148, 66, 34,145, -128,227,158,132,115,178,121,222,180,140,114,236,239,231,231,135,159,126,250, 9, 6,131,225,153,231,106,181, 26,215,175,255, 21, -100,132,101, 89, 52,107,214,140, 33,132,244, 47,139,104, 17,242,196,233,230,216,177, 99,193,178,236, 83,241, 44,109, 47,142,227, - 48,107,214, 44,216,134, 38,251, 59, 49, 95,186,118, 93,134,135,120, 74,105, 18,128, 18,109,180,152,178, 64,195,125,148,111, 77, -126,243,213,130, 25,163, 34,233,199,195, 58,211,143,222,108, 71, 95,107, 83,239, 87, 86, 32, 32,231,110, 62, 70,128, 11,176,110, - 98,147,160, 64, 15,197,245,186,238,170,208, 18, 84,163,182, 1,165,253,228, 10,245,231,111,189,247,161,114,207,241,107,120, 28, -247,248, 25,146, 5, 0, 23, 15,174, 67, 82, 98, 2, 46, 71,199, 99,240,200,183,149,106,181,230,115, 66,136, 95, 73,152,197,197, - 69, 37,250,223,180, 1,173,164,121,166, 68,228,186, 2,108,176, 24, 66,121, 62,166,118,175, 47, 81,171, 68,139,202, 80,225, 90, - 49, 37, 98,241,193,133,135, 15, 91, 73, 86, 75,189, 30, 18,142,131,153,227,172, 36,203, 96, 54,163,208, 96,128,111, 94, 30,238, -143, 24, 1,106, 50, 97,198,206,157,114,137, 88,124,208,158,116,218,172, 0,186,169,213,234, 99,132,144, 80,123, 42,249, 69, 28, -153,117,208,141, 71,168, 74,165, 58, 70, 8,121,237,101, 72, 39, 33,132, 33,132,204, 27, 53,106,212,165, 26, 53,106, 28, 45, 34, - 86,150,103,130, 26, 53,106, 28, 30, 53,106,212, 21, 66,200, 44, 66, 8, 99, 39,166,191,159,159,223,252,229,203,151,203,239,222, -189,139,132,132, 4,152, 76, 38, 12, 26, 52, 8, 28,199,161,176,176, 16, 6,131, 1, 95,124,241,133,194,221,221,253, 19, 66, 72, -144, 61,121, 39,132,176, 46, 46, 46,235, 55,108,216, 48,246,225,195,135, 62,127,252,241, 7,115,237,218, 53,239, 47,191,252,114, -132,187,187,251,198,162,128,171, 14,149, 39, 33,132,241,245,245, 93,251,219,111,191,189,117,253,250,245,128, 29, 59,118, 8,207, -158, 61,235,187, 98,197,138,209,190,190,190, 27, 9, 33,108, 69,234,136, 16,210, 80, 46,151,119,156, 50,101, 10,127,250,244,233, -132,211,167, 79, 39, 44, 89,178, 4,173, 91,183,110, 57,119,238,220,136, 10, 98, 54, 82,169, 84, 29,166, 76,153,194,159, 56,113, - 34,241,220,185,115,241,139, 23, 47,102, 58,116,232,208,106,193,130, 5,245, 29,196,220,114,250,244,233,182,113,113,113,213,227, -227,227,171,197,199,199, 87,141,143,143,175,154,144,144, 16,148,148,148, 84, 37, 57, 57, 57, 48, 53, 53, 53, 48, 42, 42,170, 21, -128,205, 47, 91, 63,250,175, 99, 22,181,229,203,148, 82,104,181, 90,236,217,179, 7, 69,218,171,134,182, 36, 43, 39, 39, 7, 73, - 73, 73,150,103,130,127, 32,157,224, 56,206, 74,164, 14, 29, 58,132, 81,163, 70, 65,171,213, 90,223, 19, 8, 4,214,255, 45,223, - 41, 15,211,162,121,226, 56, 14,231,206,157,195,184,113,227,176,100,201, 18,108,222,188, 25,187,119,239,134, 86,171,181,146, 45, -179,217, 92, 46,102,122,122, 58,120,158,183, 55,143,200,206,206,182,187,222,109, 9,144, 64, 32,120,134, 20, 89, 46, 71,218,210, -243, 96,190,204, 82,154, 71,120,123,196,218,184,139, 84,117,237,108, 31,134, 85,245,249,100,209,164,254, 50,112, 70, 80, 83, 33, - 96, 44, 0,140,121,224, 13, 5, 32, 34, 25, 96, 42,132,167, 68,139, 45, 19,194,212, 31,253, 20,115,171,150,167, 58,242, 86, 90, -206,254, 18, 73,133, 64, 52,184,255,240,119,221,227, 83,115,144,144,146, 13,150,249,107,222,139,232, 52, 28, 2,150,193,249, 3, - 79, 20, 87, 12,203, 34, 59, 95,143,172, 60, 35,250, 13,159,228,246,195,146, 79, 7, 3,248,162,172,140,212, 35, 36,164,133,159, - 91,159,218,181,171, 48,183, 36,209,136,120,237, 36, 56, 30,160, 39,122,160, 97,166, 23, 27,126, 80,220,167, 30, 33,243,175, 81, -122,183, 44, 28,137, 70, 35,115,173, 95, 31,115,252,252,208,198,100,130,136, 82,188,154,146,130,171,147, 38, 65,191,125, 59, 24, - 0,162,215, 95, 71,251,165, 75,113,220,207, 15, 62,133,133,200,154, 60, 25,158,251,247, 67,164, 86,203, 28, 41,124,145, 72,100, - 92,189,122,181,223,232,209,163,143, 17, 66,218,189,204,154, 45, 66, 72,168,155,155,219,177,207, 63,255,220,123,230,204,153, 73, -149,132,233,173, 80, 40,182,230,231,231, 79,114,116, 69, 91, 68,156,230,173, 92,185,114,252,216,177, 99, 53,163, 71,143,166,247, -239,223,215, 0,176,104, 71, 60, 91,183,110, 93, 99,245,234,213, 62, 77,154, 52,121,119,220,184,113, 34, 66,200,140,242,180, 60, - 74,165,114,194,234,213,171, 61,210,211,211,145,151,151,103, 29,100,227,227,227, 33,147,201,172, 65,213,133, 66, 33, 62,255,252, -115,247, 9, 19, 38, 76, 2, 48,169,188,244, 74, 36,146,225,223,125,247, 93,205, 46, 93,186, 8, 98, 99, 99,193, 48, 12, 36, 18, - 9,222,124,243, 77, 97, 65, 65, 65,208,156, 57,115,198, 2,248,206,145, 50, 16, 10,133,131, 87,173, 90, 21,218,178,101, 75, 65, -116,116, 52, 90,180,104,129,243,231,207,227,245,215, 95, 23,230,230,230, 86,155, 58,117,234,168,210, 86, 88,101,105,157,228,114, -121,221, 63,254,248, 35, 46, 48, 48,208, 58,176, 84,171, 86,141,139,140,140,212, 70, 71, 71,135,157, 57,115, 38,163, 69,139, 22, -143, 29,192,244,151,203,229,225,123,247,238, 77,154, 51,103, 78,199,149, 43, 87,246, 2,128,166, 77,155,254, 62,119,238,220,163, - 90,173,182,206,137, 19, 39,180,173, 91,183,142,183, 19,210,207,215,215,151,155, 56,113,162,178,172, 15,173, 89,179, 38, 11, 64, - 21, 66, 72,245,162, 64,219, 78,249, 27,132, 82,106, 38,132, 68, 16, 66, 46,239,217,179, 7,205,154, 53,195,158, 61,123, 16, 25, - 25,121,217,150, 12, 92,191,126, 29,109,218,180, 1,158, 4,146,255, 71,108,181, 56,142,131, 64, 32, 64,124,124, 60,214,172, 89, -131, 5, 11, 22, 32, 36, 36, 4, 38,147,233, 25,178, 85, 68,136,236, 82,193,152,205,102, 92,184,112, 1,155, 54,110,196,140, 79, - 62,129, 74,165, 2, 0, 24,141, 70,104, 51, 51, 33,149, 74,173,100,172,156,178,220,122,239,222,189, 73, 1, 1, 1, 79,109, 25, - 90, 94,139,198, 44,240, 60, 15,179,217, 12,157, 78,135, 37, 75,150,152, 41,165, 91,203,233,147, 86, 82, 52,105,210, 36,232,245, -127,197, 33,175, 95,100,147, 92,181,106, 85, 52,104,208,192,122,207, 48, 12,181, 23,243,135, 87,234,162,208,230,211, 97,179, 22, - 3, 0, 2, 2, 2, 16, 22, 22, 6, 95, 95,223, 82, 49, 75,226, 34,255,180, 20,183,201,170,144,141, 86,105,145,178,111, 61, 76, -254, 98,244,212,197,139, 21, 82, 86,248, 94,239,122,168,162, 17, 1, 50, 55,136,218,124, 4,162,121,178,144,167,218, 7,192,193, -143,240,101, 31, 45, 51,246, 71,221,175, 53,220,220, 60,239,107,181,207, 24,225, 9, 69,210,246,193, 53, 67,201,227, 36, 45, 4, - 2, 1, 20, 46, 30,120,165,247,251, 96, 89, 6, 74,141, 7, 8, 87,248, 23, 35,102, 88, 8, 88, 1,180,185,133,168, 90,189, 38, - 35,145,202,218,151, 71,180,212, 46,194,239,166, 12,124, 69,154, 97,142,135,172,138, 20,156,101, 58,245, 19,131,113,207,197, 7, - 93, 67,100, 99,127,191,246, 29,128, 14,246, 20, 12,107, 54,195,139,101, 97,164, 20, 87, 39, 77, 66,196,170, 85,184,108, 33,134, -171, 86,225,242,216,177,112, 19, 10, 33, 97, 24, 80,147,233,153, 61,125, 59, 39, 32,244,238,221, 27,233,233,233,222,159,124,242, - 73,133,201,150, 76, 38,219, 68, 8,233, 38, 20, 10,141,132, 16, 48, 12, 99, 13, 2,110,249,223,104, 52,138, 88,150,221,155,158, -158,238,240,150, 31, 33, 36,212,213,213,245,216,233,211,167,189, 21, 10, 5,102,205,154, 85, 41, 36, 75,165, 82,157, 29, 53,106, - 84,149, 77,155, 54,237, 39,132,116,181,151,108, 21, 39, 89,171, 86,173,202, 90,179,102,205, 15,182, 91,132,148,210, 36, 66,200, -218, 38, 77,154,188, 53,118,236, 88, 13,128,241,227,198,141, 67,121,100, 75, 34,145,180, 11, 14, 14,126,106, 85, 43,145, 72, 0, - 0, 10,133, 2, 46, 46, 46, 16,137, 68,208,235,245,136,136,136, 32, 98,177,184,149, 61,105, 86,169, 84,221,250,244,233, 35, 56, -117,234, 20,146,147,147,225,226,226, 2,133, 66, 1,142,227, 48,102,204, 24,209,210,165, 75, 95,115,148,104, 5, 6, 6,246,234, -216,177,163,224,198,141, 27,120,248,240, 33,244,122, 61,238,220,185, 3,181, 90,141,161, 67,135,138, 22, 45, 90,212,195, 81,162, - 5,160,238,216,177, 99, 83,108, 73,150, 69, 20, 10, 5, 9, 13, 13,213,186,187,187, 55, 2,240,216, 17,204,183,223,126, 59,117, -225,194,133,109, 14, 31, 62,252,145,229,205,195,135, 15, 79, 5,128,175,191,254,250,132,167,167,103, 35, 0,246, 18, 45, 80, 74, -249, 55,222,120,227,145, 88, 44,134, 80, 40,132, 88, 44,126,234, 18,137, 68, 96, 24, 70,101,233,206,255, 85, 82, 67, 8,105, 2, -224, 43, 60, 57,145,245, 9,165,244,220, 75, 66,182,174, 16, 66, 34, 34, 35, 35,173,100,107,223,190,125,232,218,181, 43,178,178, -178,112,227,198, 13, 91,146,245, 79,217,104,129,231,121, 8,133, 66, 44, 94,188, 24, 70,163, 17, 63,254,248, 35,182,109,219,246, -212, 24,170, 86,171,177,108,217, 50,135,182,185, 56,142,195,250,245,235,241,209,212,169, 86,146, 85,180,184,134,143,183, 55,220, - 61, 60, 16, 19, 19, 83, 46,209,202,204,204,252,108,215,174, 93, 40,203, 24,126,215,174, 93,214,255,109,141,225,237,154,231, 88, - 22,122,189, 30,175,190,250, 87,168,216,183,223,126,219,250,191, 86,171, 5,203,178,150,178, 32,246, 98, 22, 82,160,183,244,175, -247,186,125,240,193, 83, 26,186,210, 48, 75,227, 34, 47,163,118,171,132, 83,135, 17,148,210,203, 69, 38, 18,145, 0,246, 20,109, - 39,150,109,163,117, 55, 53,127,185,128, 36, 53, 88, 56,177,243,240, 42, 94, 46,160,121, 41, 16,117,248, 12,127,166,201,176,120, -201, 94, 0,192,135,111, 54, 70,253, 78,243, 96, 88,215, 25,147, 90,176,226, 33,241,250, 41, 0,102, 62,219,241,248,240, 0,127, - 63,252,121,255, 58, 4, 44, 11,177,139, 7, 92,220,188,193,155, 13,200, 78,125,136, 99, 59,190, 5, 0,172, 92,191, 21, 12,195, - 64, 32, 96,161, 55,112, 8,169,226, 7,158,231,195,203, 74,103,109, 66, 94,233, 27,234,219, 44, 48, 72, 67,110,184, 62, 68,168, -151,251,211, 31,104, 40, 65, 72,162,146,180, 80,202,154,214, 38,228,149,155,148,158, 46, 87, 3,193, 48, 96, 8,129, 92, 36,130, -126,251,118, 92, 46, 34, 88, 0,112,121,236, 88, 48,191,254, 10,149, 68, 2,150, 16, 8,138, 84,208, 21,233,232, 0, 16, 22, 22, -134,149, 43, 87,122, 79,152, 48,161, 66,100, 75,167,211,205, 87,171,213, 29,215,174, 93,235,221,167, 79,159,103,158,223,191,127, - 31,109,218,180, 73, 73, 78, 78,158,255, 60, 36, 75,163,209, 32, 46, 46,238,185,247,213, 45, 36,235,208,161, 67, 65, 1, 1, 1, -136,136,136,240,252,240,195, 15, 29, 33, 91, 51,109, 73,214,184,113,227,174, 1,240, 34,132, 20, 39, 42,164,232, 89, 61, 27,178, -149, 13, 96, 81, 25, 43,209, 32,133, 66,129,212,212, 84, 12, 31, 62, 28,119,239,254,165, 0,245,243,243,179,174,244, 98, 98, 98, -224,233,233, 9, 66,136,151, 61,121,246,244,244,244, 54, 24, 12, 24, 57,114, 36,226,226,254, 50,103,244,247,247,183,148,169,135, -163,229,232,237,237,237, 93, 88, 88,136,214,173, 91, 67,167,211, 1, 0, 6, 12, 24, 0,161, 80,136,212,212, 84, 8,133, 66,143, - 10, 84,143, 71,100,100,100,169,174, 85,212,106,181,209,213,213,181,150,131,152,238, 61,122,244, 72, 88,181,106,213, 51, 7, 91, -206,159, 63,223,211,205,205,237,176,155,155, 91,168,131,152,188, 45,169, 18,137, 68, 79, 17, 45,161, 80, 8,134, 97,120,252,247, -229,127, 0, 44,167,224,190, 7,208,224, 37,210,108, 89,201,214,190,125,251, 80,167, 78, 29,100,102,102, 34, 58, 58,250, 31, 39, - 89, 54,196, 4, 2,129,192,186, 72,150, 74,165,136,136,136,176,146, 44, 66, 8, 10, 10, 10, 32, 16, 8, 44,227,181, 93,131, 95, - 86, 86, 22,124,125,124,160, 82,169, 80, 51, 36, 4,247,138,198, 17,203,255, 18,137, 4,132, 16,152,205,230,242,202, 48, 23, 79, -108,173,222,175,236,234,177,144,162, 50, 85,199,126,126,224,121,222, 50,230,211,202,192,244,240,240, 64, 94, 94,158,189,152, 47, -165,148,162,209,138, 0,112, 25, 64, 36,165,116, 85,145, 97,252, 83,238, 29,218, 2, 56, 6,155, 35,149,132, 16,166,150,183,114, -205,194, 9, 29,135,119,174,227,129,194,180,135,144,170, 60, 64, 52, 85,177,120,201, 94,220,120,144, 1, 0, 88,188,249, 34,126, -154,211, 13,144,185, 33,204, 37, 29, 62, 42, 65,159,146,136, 22, 1, 37, 60,165, 16,176, 76,209,222, 45, 11,150,101,160, 77, 75, -194,210,207,198, 23,145,172,109,216,115, 34, 26, 1,193,117,254,218,199, 37, 4,160,101, 55,110, 79, 23,209,170, 9,125,155,203, - 82, 72, 18, 52,126,114, 72,165,197,248,163,171, 8,164, 42,131,137,237, 2,228, 23,118,233, 86, 1, 40,119,162,144, 50,204, 19, -227,119, 66, 74, 52,100, 99,138,158,177,132, 60,241,254,202, 59, 62,166, 91, 8,139, 82,169,132,183,183, 55, 22, 44, 88,224, 61, -109,218,180, 31,225, 96, 0,106, 74,233, 29, 66, 72,187, 49, 99,198, 28,203,200,200,240, 14, 11, 11,131, 82,169,132, 82,169, 68, - 74, 74, 10,250,245,235,151,146,156,156, 92, 81,109,217,198, 81,163, 70,121,139, 68, 34,220,191,127, 31,110,110,110, 86,130, 88, - 81,146,165, 86,171,207, 30, 62,124, 56,168, 70,141, 26,184,125,251, 54,106,213,170,133, 45, 91,182,120, 14, 26, 52,200, 46,178, - 37,147,201,122, 23, 17, 39,140, 29, 59, 86, 51,118,236,216,182, 0,218,150,247,219, 99,199,142,213,188,255,254,251, 61,202, 34, - 90, 66,161, 48, 78,171,213,250,200,100, 50,236,216,177, 3, 74,165, 18,114,185, 28,126,126,126,208,106,181,144,203,229,160,148, -194,100, 50, 89, 6,139, 12,123,242,157,150,150,150,194,113, 92,224,254,253,251,145,150,246,151,111,189,160,160, 32,100,103,103, -131,227,184,116, 71,203, 50, 49, 49, 49,133, 16, 18,248,231,159,127, 34, 54, 54, 22, 93,187,118,197,175,191,254,138,198,141, 27, - 3, 0, 12, 6, 67, 69,156,248,113, 44,203,210, 50,234,143, 0,112,173, 76,204,162,201,203, 33, 76,158,231,121, 11,201,178,125, -181, 37, 95,229,252,230,127, 69, 92,108,215, 9, 47,107, 34,187,118,237, 10,173, 86, 11,165, 82,249, 82,217,231, 88, 52, 90,179, -103,207,198,248,241,227,225,237,237,141,143, 62,250, 8, 2,129,192,122,217,238, 12, 56, 34, 94,222,222,101, 62,183, 24,196,151, - 51, 94,170, 92, 92, 92,102, 51, 12,211,159,181,163,224, 56,142,227,120,158,223,154,157,157, 93,166,123, 7,139,225,186, 61,117, - 97, 91, 6,229,164,245,185, 49, 75,226, 34, 47,131, 20, 63,109, 88,146, 70, 11,127,157, 58,124, 38, 20,144, 37,151,199,138, 84, -118,199,108, 73,214,231,227,219, 15,239, 92,199, 21,191, 31, 57, 7,145, 49, 11, 48,228,150, 81,195, 38, 16,145, 2,222, 46,194, -128, 18, 43,129, 97,111,199, 39, 36,194,221, 85, 89, 68,178,138, 46,134, 65,253, 58, 79, 22,179,123, 78, 68, 35,160,122, 29, 8, - 88, 22, 2,150,133, 82, 38, 65, 74,114, 18, 4, 2,230,118,105, 63, 91, 79, 64,250,246, 13, 13,172,234,234, 46, 68,186,167, 1, -190,222,242,146, 63,216, 72,133, 0, 95, 49,186,184, 75,131,234, 9, 72,223,114,136,139,149,104, 25,205,102,136, 94,127,221,186, - 93,120,121,236, 88, 68,172, 90, 5,174, 87, 47,228, 27,141, 79,169,138, 29, 21, 75,131,180, 16,162,153, 51,103,166,100,100,100, - 12,174,224,234,241, 78,102,102,102,187, 79, 62,249, 36, 37, 61, 61, 29,114,185, 28, 73, 73, 73,207, 69,178, 0,160,176,176,112, -232,170, 85,171, 82,142, 29, 59, 6,165, 82, 9,149, 74, 85, 97,162,101,209,100,125,246,217,103, 85, 2, 3, 3, 17, 19, 19, 3, - 23, 23, 23,184,187,187,163,126,253,250, 56,117,234,148,103, 96, 96,224,254, 34,131,217,178,210,244,219,170, 85,171,178, 0, 96, -213,170, 85, 89,132,144, 40, 66,200, 10, 66,200,247,197,174, 21,132,144, 40,219,207, 22, 22, 22,238, 44, 11,219, 96, 48, 68, 69, - 71, 71, 83,185, 92, 14,150,101, 97, 52, 26, 33,149, 74,173,245,149,147,147,131,194,194, 39,219,220,151, 46, 93,130,201,100, 58, -105, 79,222,115,115,115,247,173, 91,183,206, 20, 24, 24,136,122,245,234,161, 81,163, 70,104,209,162, 5,130,130,130, 48,123,246, -108, 67,126,126,254,190, 10, 16,173, 61, 91,182,108, 49, 5, 6, 6,162, 81,163, 70,144, 72, 36,168, 95,191, 62,252,252,252,176, - 96,193, 2, 67,118,118,246,190, 10, 84,211,227,235,215,175,179,101,144, 92, 53,128, 20, 7, 49,227, 46, 92,184,192, 54,111,222, -252,247,226, 15,154, 54,109,250,187, 82,169,116, 1,224,168,221, 31,181, 37, 87, 18,137,196,122, 89,222, 23, 8, 4,255, 31, 52, - 90,147, 0, 92, 3, 16, 3,224,163,151, 41, 97,182,134,239, 25, 25, 25,136,142,142,198,165, 75,151,208,188,121,115,156, 60,121, - 18, 40, 50,144,255, 7,211, 7, 74, 41,132, 66, 33,194,194,194,240,254,251,239, 99,239,222,189,184,115,231, 14, 76, 38,147,149, - 8, 89,108, 50, 29,209,104,137, 68, 34,120,123,123,195,100, 50, 89,181, 89, 0,112,239,238, 93, 8, 4, 2,240, 60, 15,131,193, - 80,174, 70,203,197,197,101,246,234,213,171,223, 77, 79, 79,247, 77, 75, 75,243,178,189, 82, 82, 82,188,146,146,146,188, 18, 18, - 18,188,226,226,226,188, 30, 61,122,228,245,240,225, 67,223, 47,190,248,226, 93, 23, 23,151,217,246,206, 65,245,235,215,199,219, -111,191,109,189,150, 47, 95,110,189,142, 29, 59,230,176,241, 58,203,178, 8,155,181, 24,221,210,168,245,218,235, 73,172,215,141, - 15,199,149,133,249, 20, 23,121,105,218,114,209,105, 67,219,192,210, 37,204,193, 73,148,210, 85,150,237, 66, 91,231,165,197,141, -225, 1, 0,225, 62,242,121,159,143,105, 51,252,213, 90, 46,248,237,200, 69,204,217,249,224,118,200,112,207,176, 26,174,105,224, -211,162,241,225,155,141,177,120,243, 69, 0, 79,182, 14,249,212, 27,160,153, 49,160,170, 64, 60,212,166,151,184,237, 96, 54,232, -142, 62,184,127,183,125, 88,221, 38, 76,114,122,222, 83,199, 63, 35,218,245, 3, 33, 4,254,213,235,128, 21, 8,192,178, 12, 4, - 44, 11,141, 90,138,232, 63,255,228,245,133,133, 71, 75,194,108, 71,136,192, 71, 41, 94,254,102,151,250,210, 68,113, 42, 60,125, - 21, 16, 9,159,144, 0,250,160, 95,177, 25, 66, 0,212, 85, 97, 68,130,187,236,104,138,110,121, 59, 66,126, 63, 86,138, 1, 38, -207,243, 80, 74, 36,208,233,245, 40, 52,155,209,110,233, 82,235,118, 33, 67, 8,174, 0,168,183,116, 41, 78,111,223, 14,181, 88, - 12, 72, 36,118,159, 10, 41, 73,163,149,146,146,130, 1, 3, 6, 60, 23, 33,178,213,108, 77,152, 48,225,216,130, 5, 11,188,103, -206,156, 89,105,152, 31,125,244,209,177,205,155, 55,123, 87,171, 86,173,194,141, 85,169, 84, 78,229,121, 94,179,104,209,162,228, - 47,191,252, 18,197,237,201,138,136,142, 68,163,209, 44, 6,208,190, 12,168, 57,227,198,141, 19, 1, 24, 95,164,217,170, 55,110, -220,184,211,148,210, 25,197,202,119,214,202,149, 43, 7,216,108, 49,174, 0,176,180,172, 52,230,228,228,124,255,254,251,239,143, - 60,126,252,184,135, 84, 42, 5, 33, 4, 34,145, 8, 53,107,214,180,158,162, 17, 10,133,160,148,226,131, 15, 62, 72, 79, 77, 77, -181,203,189,131, 94,175, 95, 63,103,206,156,246,133,133,133, 65, 35, 70,140, 16,185,186,186, 34, 37, 37, 5, 95,125,245,149, 97, -253,250,245,113,249,249,249,142,218, 82,193,100, 50,173,255,244,211, 79,219,229,229,229, 85, 31, 61,122,180, 40, 59, 59, 27,133, -133,133,152, 50,101,138, 97,237,218,181,241,133,133,133, 14, 59,252,109,209,162,197,253, 71,143, 30,181, 42, 40, 40,200,148,203, -229,197,181,125, 68,161, 80, 52, 1,176,209, 17,204,136,136,136,152,199,143, 31, 55,159, 55,111, 94,148,201,100, 18,158, 63,127, -190,151,133,100,125,243,205, 55,199,164, 82,105, 71, 56,110,180,207, 75, 36,146,167, 52, 88,197,255, 23, 8, 4,255,121,141, 22, -165,244, 24,158,184,204,120,169,164, 56,201,186,113,227, 6,218,183,127,210,165, 79,158, 60,137,150, 45, 91,226,228,201,147,104, -213,170,213, 63,234,222,193, 66,180, 4, 2, 1, 6, 13, 26,132, 78,157, 58,161, 74,149, 42, 79,157, 54,180,252,239, 8,217, 48, -155,205,168, 91,183, 46,244, 6, 3, 68, 34,145,117,107, 82, 32, 16,192,211,203, 11,247,239,223,183, 75,163,197, 48, 76,255,222, -189,123, 51, 55,111,222,196,192,129, 3,177,105,211,166, 82, 63, 59,100,200, 16,252,252,243,207,232,221,187, 55, 51,125,250,244, - 50,221, 59, 88,140,208,237,201,147,101,158, 46, 79,163, 87, 89,152,182, 92,228,101, 19, 27,215, 14, 37,181,249,177, 37,180,175, - 85, 79, 17, 45, 27, 39, 97,168,238, 41, 31,209,169,166, 0,191, 29,189,136, 57,191, 61, 94,207, 81,186, 99,199,229,204,221, 31, -181, 4,140, 91,223, 68,253,126, 27,159,108, 23, 2,224, 83,111,192,184,117, 8,136,220, 3, 39, 18,132,200, 46, 52,238, 41,185, -225, 25, 55,253,250,227,183,239, 55,255,174,149,167,175,151, 11,180,217,133, 86,178,117,249,216, 54, 0, 64,223,113,243, 33, 96, -159,108, 41,170,149, 82,200, 68, 44,182,111,248, 58,221,104,212,149,216,186,114,133,204,248,233,175,212,116, 17, 43, 76,200,241, -161,168,227,249,215,161, 63, 82,125,219,179,132,171,161, 43, 60,110,100,226,205, 26, 74,245,215, 55,179,198, 3, 88,254,204,132, -152,149, 85,152,245,231,159,178,174,171, 87,227,252,208,161,240,231, 56, 68,249,249,193, 77, 40,132,139, 68, 2,134, 16, 20,238, -222,141,211, 59,118,192, 91, 34, 1, 84, 42,152,231,206,133, 62, 58, 26,166,220,220, 66, 71,137,214,189,123,247,158, 91,235, 84, - 18, 49,154, 54,109,218,143, 25, 25, 25,131, 43, 19,115,232,208,161,199,142, 28, 57,226, 93, 81,156,220,220,220,201, 0, 38, 87, - 66,122,120, 66,200,140, 34,199,120,227,199,142, 29,171,185,112,225,194, 72, 66,200,119,150,213, 4, 33,196,107,212,168, 81, 99, -138,145,172,114, 79, 29, 82, 74, 31, 43,149,202,185,147, 39, 79,158,255,229,151, 95, 42, 45,134,239, 87,175, 94,133,217,108,134, - 80, 40, 4,199,113, 24, 53,106, 84, 94, 70, 70,198,226,210, 60, 58,151,128,107, 38,132, 12,153, 63,127,254,168,175,191,254,186, - 59,203,178,158, 28,199,165, 21, 22, 22,238, 47, 44, 44, 92, 85,145, 83, 87, 69,229, 48,108,230,204,153,195,150, 44, 89,210,155, - 97, 24, 47,179,217,156,158,155,155,187,171,176,176,176, 66,190,185, 78,159, 62,157,246,221,119,223, 61, 72, 75, 75, 11, 15, 8, - 8,200, 86, 42,149, 6,131,193,192,202,100, 50,181, 66,161,136, 0,112, 6,192, 45, 71, 48, 47, 93,186,148,188, 98,197,138, 88, -189, 94, 31,182, 98,197,138, 19,106,181,250, 8, 33,132,136, 68, 34, 87,153, 76,214, 30, 64, 20,128,123,142, 96, 50, 12,195,219, -106,175,138,219,103,137,197,226,255, 47, 54, 90, 47,157,216,186,119, 72, 79, 79,199,205,155, 55, 45, 36, 43, 2, 0, 90,181,106, -117,217, 66,182, 46, 93,186,132, 70,141, 26, 93, 38,132, 8,255,238,147,135,182, 26, 45, 11,161,170, 82,165,138,245,222,246,178, -177,209,178, 75, 56,142,131, 72, 36,130, 64, 32,128,175,159,159,245,183, 40,165,184,127,255, 62,180, 90,173, 93, 68,139,101, 89, -150, 16,130,129, 3, 7,218,245,187,111,188,241, 6,162,162,162,192,218,201, 10, 89,150, 69,213,170, 85,237,218,121,129,157,246, - 84, 44,203, 34, 32, 32,160,194,152,182, 92,228,101, 34, 88, 37,253, 95, 18,169, 42, 73, 74, 52,134,143, 73, 45,156, 55,228,171, - 83,211,111, 37,235,118, 68,167, 20,188, 15,128,110,189, 33, 63, 88,223,147,237,220, 57, 52, 30,250, 85,173, 64,212, 79,156,183, -209,188, 36, 16,133, 55,226,121,127,204,250,253,118,178, 25,100, 81, 41,137, 72, 20, 73,229, 51, 54,172,254,230,203, 81, 19, 62, - 80,222,136, 73, 65,118,158, 30, 44,203,216, 14,158, 16, 8, 88,168, 21, 82, 4,250,184, 96,243, 15, 95,229,230,230,100,205, 44, - 45,238, 97, 21,149,104, 92,199, 38, 53, 36, 34,223,124,132,213, 27, 0, 86,250,151,147, 89,154, 92,202,238, 96,203,131,120,237, -113,190,244,215,199,249,227, 74, 36, 90, 6, 67,231, 79,186,116, 57, 48,103,239, 94,121,211,245,235, 17, 51,106, 20,252, 10, 11, - 33, 41,218, 74,100, 8,129, 82, 36,130, 82, 36,122, 66,178,150, 44, 65,161,217,140,165, 67,135, 22,232, 13,134, 46, 14,106, 36, - 68,109,219,182,173, 52,146,101, 75,140,224,160,157,151,189,100,171, 83,167, 78,199, 40,165,146,151, 96, 37,111, 33, 91,198, 11, - 23, 46,140, 57,113,226, 68, 12,158, 14, 44,154,117,226,196,137,152,209,163, 71,147, 53,107,214,172, 5,240,169,189, 14, 60,243, -242,242,190,209,104, 52,104,211,166,205,167, 11, 23, 46,116,111,220,184, 49,188,188,188,144,155,155,139, 75,151, 46, 97,210,164, - 73,218,156,156,156,133,153,153,153, 95, 58,152,102,174, 72,115,179,170, 50,203, 1,192,186,162,171, 82,228,173,183,222,186, 26, - 19, 19,147,225,233,233,217, 76, 36, 18,213,195, 19, 59,160,100, 0,107, 29, 37, 68, 22, 25, 63,126,252,159, 49, 49, 49,233,254, -254,254,205,139, 48, 53, 0, 18, 0,172,174, 0,102,226,197,139, 23, 3,154, 52,105,194, 8,133, 66,202,178, 44,132, 66, 33, 21, - 8, 4,180,200,174,134, 2,192,174, 93,187, 36, 0,180,112,202,223,221, 55,173,238, 29,146,146,146,172, 36,203,198, 97,105, 68, -171, 86,173, 46, 23,145, 44,203, 51,243, 63,148, 86,204,153, 51, 7, 43, 87,174, 68,121, 30,205,139, 78,247,145,242,240, 44, 26, - 45,142,227, 96, 52, 26,113,227,198, 13,171,207, 46,203,118,161,197,181,131,217,108, 46,243,180, 58,199,113,156,193, 96,192, 47, -191,252, 98, 23,217,250,233,167,159,160,211,233,192,149,195,224,108, 93, 49, 52,104,208, 0, 90,173,214,122,216, 39, 34,226, 47, - 87,121, 70,163,209, 33,226,106,193, 12, 11, 11, 67,122,122, 58, 60, 60,158,156,199, 9, 28,250,151,178,199,156,255,223,244, 31, - 92,150, 70,139,216,235,146,160,129, 70,227,162, 23,155,118,246,172, 35,105,215, 63,194, 5,213,125, 84, 16,138,164, 72,204, 49, -227,240,173, 28,172, 62,150, 28, 87,104,226,186,223, 73,205,191, 94, 22,142, 84,225,178,191,241, 43,157, 90, 14, 29, 51, 73,145, -167,231, 16, 27,251, 8,105,169, 73, 96, 8, 3, 95,255, 0, 4, 5, 85,133, 76,204, 96,211,170, 47,243, 47,159, 62,114, 42, 55, - 71,219,181, 52,172,238, 26,241,233, 37,175,183,108, 30, 28,172, 34, 48,155, 0,206, 4,152, 77, 0, 95,244,106,121,143,127,186, -205,221,188,153, 69,167, 95,209,158,221,157,101, 40, 49,102, 85,127, 66, 90,106,220,220, 14,204,218,181, 75,206, 27,141,200,152, - 60, 25,114,179, 25,210,162, 85, 9, 0, 64, 34,129,121,238,220, 39, 36,107,200,144,130,236,172, 44,135, 67,240,120,122,122,174, - 75, 79, 79,255,215,121,134,119,119,119,255,164, 34,110, 34, 94, 96,154,188, 0,100, 81, 74,141, 37,172,172, 61, 45, 90,174, 10, -224, 86,245,244,244,156,206, 48, 76, 11, 74,169, 59,195, 48,153, 60,207,159, 73, 77, 77,253,130, 82,122,223, 57,165,254, 99,245, -109,241, 12, 95,222, 62,118, 42,128,247, 0,228, 82, 74, 99,157, 37,247,183,215, 83, 67, 60, 57,133, 85,106, 8, 30,252,131, 39, - 15,221,221,221,207, 29, 56,112,160,113,245,234,213, 25, 91, 51, 6,139,175, 60,203,246,150, 64,240, 68, 31,113,252,248,113,243, -192,129, 3,207, 36, 39, 39,183, 41, 13, 83,173, 86, 31,188,118,237,218,171,217,217,217,207, 16, 42, 91, 79,241,150,251,252,252, -124, 76,152, 48,225, 80, 78, 78, 78,137, 33,120, 52, 26,205,146, 47,191,252,242,221,190,125,251, 50, 22,119, 20,182,151, 37, 92, -144,229, 50, 26,141,216,184,113, 35,255,245,215, 95, 47,203,202,202, 42,117,235,208,207,207, 47, 46, 49, 49, 49,192,226,106,193, - 30,167,162, 85,171, 86, 77,138,141,141,245,251, 59, 49,255,173,132,171,184,118,139, 56,226,251,137, 16, 66,194,188, 20, 3, 40, -208,159, 1, 95,151, 33, 68,108,166,184, 3,138,131,114, 65,193,119,151, 18,169, 93, 91,103, 34,185,124,162, 74,233,250, 89,223, -193,111,187, 87, 13, 14, 33,222,190,254, 32, 96,144,146,156,128, 71, 15,238,210,157, 63,126,155,145,159,163,157, 93, 80,144,247, -109, 89, 56,181, 9, 9,174,166, 22,109, 21,115, 8,133, 37, 31,197,226, 83, 61,195, 48, 1, 24,133,204,237,216, 92,211,128,155, -101,108,251, 88,200,214,140,157, 59,229,226,208,208,103, 28,197,241, 60, 15,125,116, 52,150, 14, 29, 90, 33,146,229, 20,167, 56, -229,185, 7,180,234, 40,223, 71,150, 9, 64,252, 63, 25,188,248,255,121, 29,189,180, 65,165, 9, 33, 10, 55, 55,183, 35, 44,203, - 6, 89, 52, 50,182, 54, 67, 37, 4,148,142, 77, 73, 73,233, 72, 41, 45, 40, 3, 51, 88,165, 82,125,203,113, 92, 83,123,130, 74, -179, 44,123, 62, 55, 55,119, 98, 89, 65,165, 95,196,169, 67, 15, 15,143,251,143, 30, 61, 10,182,156,162,182,157, 43,139,151, 3, - 0,220,187,119, 15,109,219,182,125,148,148,148, 84,245,239,196,124, 89,165, 20, 63, 90,207,175,209,122, 1,141,220, 79, 36, 81, - 14, 19,203,164, 29,120,147, 57, 12, 4, 16, 8,133,183, 13,186,194,163,250,194,188, 13,165,109, 23,254,157,210,159,144,150, 18, -177,248,160, 72,173,150,149, 84, 78,166,220,220, 66,189,193,208,217, 73,178,156,226, 20,167, 56,197, 41,255, 34, 2, 28,234,230, -230,118, 64, 40, 20, 74,108,201,100,241,255, 45, 98, 54,155,117,105,105,105, 93,203,218,125,121, 17,152,255,153,242,118,148,104, -237,217,179,135,218,235,189,149, 16,210,201,158,152, 85, 54,134,111,229,250,206,248,167, 49, 95, 96,222,203,245,138,235, 0,102, - 91, 60, 57, 30, 59, 59, 50, 50,114,214,191, 32,157,149, 89, 71,149,138,105,169,115,123,113, 29,193,180,183, 77, 57,152, 78,187, -218,253,203,128,105, 79, 95,170, 96, 58,203,108,163, 21,172,247, 50,251,210, 75,148,206,202,172,163, 74,193, 44,222,126,236,193, -117, 20,211,158,190, 84,129,116,150,219,238, 95, 22,204,231, 29, 67,202, 72,103,169,109,212,222,182, 84, 74,221,151, 59, 55,189, -172,154, 44, 0,176,248,211, 42,174,209, 42,205, 32, 94,224, 40,201,122, 17,137,183,157,116, 96,167,159,146,127, 2,179, 34,132, -203,145,180, 86,162, 28,171,108,204, 98,229, 89, 89, 50,171,104, 64,143,130, 29, 14, 71, 29,201,123,101,212,123,177,188, 86, 10, -174, 45,102,101,149,101, 73,131, 98,101,166,243, 69, 96, 86, 86, 95, 42,142, 89, 25,237,190,164,122,127,129,117, 84, 89,233,172, -148,190,244, 34,218,124, 9,237,231,185,113,139, 99, 86, 70, 95, 42,142, 89, 25,237,254,239,192,172,140,190, 84, 18,102,101,180, -251,210,234,254,223,170,153,178,108, 23, 22, 17, 46, 82, 2,249,124,106,251,208, 66,188,152,138, 20,218,139,144, 23, 17, 72,178, -178, 9,209,139, 34,155,123,246,236,161, 69, 76,255,165,199,172,228, 58,154, 85,132, 89,153, 43,155,118,149, 85, 71, 47,162,189, -219, 98, 86, 22,126,113,156,202,168,167,146, 48,159, 55,189,165,164,179,210,243,254,188,237,254,239,194,172,228, 58,170,148,190, - 84, 12,179, 93, 37, 47, 6,218,217,220,207,170, 76,204,202,234, 75, 37,164,243,185,235,169, 36,204,231, 77,111, 41,233,172,244, -188, 87,198, 28,242,162,112,255, 41,141,214,173, 8, 66, 41, 83,114,155, 40,114, 88,106,189, 42,164,209,122,145, 36,235, 69, 77, -106,149,137,253, 34,180, 58, 47, 74,243, 86, 89, 90,157, 18,112,163, 42, 17,238, 88,101,167,179, 40,125,228,101,118,122,231,236, - 75,206,190,244,255,169, 47,149,212,110, 34, 35, 35,103,237,217,179,231,179,151,169,157, 23,199,172, 44, 66, 84, 66,222,159,171, - 47, 21,255,110,101,244,165,114, 48,201,139,200,127,101,247,167,191, 83,163, 85, 26,201, 42,237,153,224,101,201,128,165,145, 84, -242,202, 4,149,172,129,121, 97,249,174,228,116,182,123, 17, 26,194, 23, 32,149,158,206,162,149,242,103, 47, 32,239,255,150, 50, -117,246, 37,103, 95,122,233,250, 82,177, 54,217,174, 18, 53, 69,149,170,121, 46,142, 89, 25,191, 97,139, 81, 89,109,244, 69,231, -189, 50,251,210,139,168,251,127,155,252,223, 0, 44,215, 33,254,211,200, 76,208, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, +137, + 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 2, 90, 0, 0, 2,128, 8, 6, 0, 0, 0, 68,254,214,163, + 0, 0, 0, 9,112, 72, 89,115, 0, 0, 13,215, 0, 0, 13,215, 1, 66, 40,155,120, 0, 0, 10, 79,105, 67, 67, 80, 80,104,111, +116,111,115,104,111,112, 32, 73, 67, 67, 32,112,114,111,102,105,108,101, 0, 0,120,218,157, 83,103, 84, 83,233, 22, 61,247,222, +244, 66, 75,136,128,148, 75,111, 82, 21, 8, 32, 82, 66,139,128, 20,145, 38, 42, 33, 9, 16, 74,136, 33,161,217, 21, 81,193, 17, + 69, 69, 4, 27,200,160,136, 3,142,142,128,140, 21, 81, 44, 12,138, 10,216, 7,228, 33,162,142,131,163,136,138,202,251,225,123, +163,107,214,188,247,230,205,254,181,215, 62,231,172,243,157,179,207, 7,192, 8, 12,150, 72, 51, 81, 53,128, 12,169, 66, 30, 17, +224,131,199,196,198,225,228, 46, 64,129, 10, 36,112, 0, 16, 8,179,100, 33,115,253, 35, 1, 0,248,126, 60, 60, 43, 34,192, 7, +190, 0, 1,120,211, 11, 8, 0,192, 77,155,192, 48, 28,135,255, 15,234, 66,153, 92, 1,128,132, 1,192,116,145, 56, 75, 8,128, + 20, 0, 64,122,142, 66,166, 0, 64, 70, 1,128,157,152, 38, 83, 0,160, 4, 0, 96,203, 99, 98,227, 0, 80, 45, 0, 96, 39,127, +230,211, 0,128,157,248,153,123, 1, 0, 91,148, 33, 21, 1,160,145, 0, 32, 19,101,136, 68, 0,104, 59, 0,172,207, 86,138, 69, + 0, 88, 48, 0, 20,102, 75,196, 57, 0,216, 45, 0, 48, 73, 87,102, 72, 0,176,183, 0,192,206, 16, 11,178, 0, 8, 12, 0, 48, + 81,136,133, 41, 0, 4,123, 0, 96,200, 35, 35,120, 0,132,153, 0, 20, 70,242, 87, 60,241, 43,174, 16,231, 42, 0, 0,120,153, +178, 60,185, 36, 57, 69,129, 91, 8, 45,113, 7, 87, 87, 46, 30, 40,206, 73, 23, 43, 20, 54, 97, 2, 97,154, 64, 46,194,121,153, + 25, 50,129, 52, 15,224,243,204, 0, 0,160,145, 21, 17,224,131,243,253,120,206, 14,174,206,206, 54,142,182, 14, 95, 45,234,191, + 6,255, 34, 98, 98,227,254,229,207,171,112, 64, 0, 0,225,116,126,209,254, 44, 47,179, 26,128, 59, 6,128,109,254,162, 37,238, + 4,104, 94, 11,160,117,247,139,102,178, 15, 64,181, 0,160,233,218, 87,243,112,248,126, 60, 60, 69,161,144,185,217,217,229,228, +228,216, 74,196, 66, 91, 97,202, 87,125,254,103,194, 95,192, 87,253,108,249,126, 60,252,247,245,224,190,226, 36,129, 50, 93,129, + 71, 4,248,224,194,204,244, 76,165, 28,207,146, 9,132, 98,220,230,143, 71,252,183, 11,255,252, 29,211, 34,196, 73, 98,185, 88, + 42, 20,227, 81, 18,113,142, 68,154,140,243, 50,165, 34,137, 66,146, 41,197, 37,210,255,100,226,223, 44,251, 3, 62,223, 53, 0, +176,106, 62, 1,123,145, 45,168, 93, 99, 3,246, 75, 39, 16, 88,116,192,226,247, 0, 0,242,187,111,193,212, 40, 8, 3,128,104, +131,225,207,119,255,239, 63,253, 71,160, 37, 0,128,102, 73,146,113, 0, 0, 94, 68, 36, 46, 84,202,179, 63,199, 8, 0, 0, 68, +160,129, 42,176, 65, 27,244,193, 24, 44,192, 6, 28,193, 5,220,193, 11,252, 96, 54,132, 66, 36,196,194, 66, 16, 66, 10,100,128, + 28,114, 96, 41,172,130, 66, 40,134,205,176, 29, 42, 96, 47,212, 64, 29, 52,192, 81,104,134,147,112, 14, 46,194, 85,184, 14, 61, +112, 15,250, 97, 8,158,193, 40,188,129, 9, 4, 65,200, 8, 19, 97, 33,218,136, 1, 98,138, 88, 35,142, 8, 23,153,133,248, 33, +193, 72, 4, 18,139, 36, 32,201,136, 20, 81, 34, 75,145, 53, 72, 49, 82,138, 84, 32, 85, 72, 29,242, 61,114, 2, 57,135, 92, 70, +186,145, 59,200, 0, 50,130,252,134,188, 71, 49,148,129,178, 81, 61,212, 12,181, 67,185,168, 55, 26,132, 70,162, 11,208,100,116, + 49,154,143, 22,160,155,208,114,180, 26, 61,140, 54,161,231,208,171,104, 15,218,143, 62, 67,199, 48,192,232, 24, 7, 51,196,108, + 48, 46,198,195, 66,177, 56, 44, 9,147, 99,203,177, 34,172, 12,171,198, 26,176, 86,172, 3,187,137,245, 99,207,177,119, 4, 18, +129, 69,192, 9, 54, 4,119, 66, 32, 97, 30, 65, 72, 88, 76, 88, 78,216, 72,168, 32, 28, 36, 52, 17,218, 9, 55, 9, 3,132, 81, +194, 39, 34,147,168, 75,180, 38,186, 17,249,196, 24, 98, 50, 49,135, 88, 72, 44, 35,214, 18,143, 19, 47, 16,123,136, 67,196, 55, + 36, 18,137, 67, 50, 39,185,144, 2, 73,177,164, 84,210, 18,210, 70,210,110, 82, 35,233, 44,169,155, 52, 72, 26, 35,147,201,218, +100,107,178, 7, 57,148, 44, 32, 43,200,133,228,157,228,195,228, 51,228, 27,228, 33,242, 91, 10,157, 98, 64,113,164,248, 83,226, + 40, 82,202,106, 74, 25,229, 16,229, 52,229, 6,101,152, 50, 65, 85,163,154, 82,221,168,161, 84, 17, 53,143, 90, 66,173,161,182, + 82,175, 81,135,168, 19, 52,117,154, 57,205,131, 22, 73, 75,165,173,162,149,211, 26,104, 23,104,247,105,175,232,116,186, 17,221, +149, 30, 78,151,208, 87,210,203,233, 71,232,151,232, 3,244,119, 12, 13,134, 21,131,199,136,103, 40, 25,155, 24, 7, 24,103, 25, +119, 24,175,152, 76,166, 25,211,139, 25,199, 84, 48, 55, 49,235,152,231,153, 15,153,111, 85, 88, 42,182, 42,124, 21,145,202, 10, +149, 74,149, 38,149, 27, 42, 47, 84,169,170,166,170,222,170, 11, 85,243, 85,203, 84,143,169, 94, 83,125,174, 70, 85, 51, 83,227, +169, 9,212,150,171, 85,170,157, 80,235, 83, 27, 83,103,169, 59,168,135,170,103,168,111, 84, 63,164,126, 89,253,137, 6, 89,195, + 76,195, 79, 67,164, 81,160,177, 95,227,188,198, 32, 11, 99, 25,179,120, 44, 33,107, 13,171,134,117,129, 53,196, 38,177,205,217, +124,118, 42,187,152,253, 29,187,139, 61,170,169,161, 57, 67, 51, 74, 51, 87,179, 82,243,148,102, 63, 7,227,152,113,248,156,116, + 78, 9,231, 40,167,151,243,126,138,222, 20,239, 41,226, 41, 27,166, 52, 76,185, 49,101, 92,107,170,150,151,150, 88,171, 72,171, + 81,171, 71,235,189, 54,174,237,167,157,166,189, 69,187, 89,251,129, 14, 65,199, 74, 39, 92, 39, 71,103,143,206, 5,157,231, 83, +217, 83,221,167, 10,167, 22, 77, 61, 58,245,174, 46,170,107,165, 27,161,187, 68,119,191,110,167,238,152,158,190, 94,128,158, 76, +111,167,222,121,189,231,250, 28,125, 47,253, 84,253,109,250,167,245, 71, 12, 88, 6,179, 12, 36, 6,219, 12,206, 24, 60,197, 53, +113,111, 60, 29, 47,199,219,241, 81, 67, 93,195, 64, 67,165, 97,149, 97,151,225,132,145,185,209, 60,163,213, 70,141, 70, 15,140, +105,198, 92,227, 36,227,109,198,109,198,163, 38, 6, 38, 33, 38, 75, 77,234, 77,238,154, 82, 77,185,166, 41,166, 59, 76, 59, 76, +199,205,204,205,162,205,214,153, 53,155, 61, 49,215, 50,231,155,231,155,215,155,223,183, 96, 90,120, 90, 44,182,168,182,184,101, + 73,178,228, 90,166, 89,238,182,188,110,133, 90, 57, 89,165, 88, 85, 90, 93,179, 70,173,157,173, 37,214,187,173,187,167, 17,167, +185, 78,147, 78,171,158,214,103,195,176,241,182,201,182,169,183, 25,176,229,216, 6,219,174,182,109,182,125, 97,103, 98, 23,103, +183,197,174,195,238,147,189,147,125,186,125,141,253, 61, 7, 13,135,217, 14,171, 29, 90, 29,126,115,180,114, 20, 58, 86, 58,222, +154,206,156,238, 63,125,197,244,150,233, 47,103, 88,207, 16,207,216, 51,227,182, 19,203, 41,196,105,157, 83,155,211, 71,103, 23, +103,185,115,131,243,136,139,137, 75,130,203, 46,151, 62, 46,155, 27,198,221,200,189,228, 74,116,245,113, 93,225,122,210,245,157, +155,179,155,194,237,168,219,175,238, 54,238,105,238,135,220,159,204, 52,159, 41,158, 89, 51,115,208,195,200, 67,224, 81,229,209, + 63, 11,159,149, 48,107,223,172,126, 79, 67, 79,129,103,181,231, 35, 47, 99, 47,145, 87,173,215,176,183,165,119,170,247, 97,239, + 23, 62,246, 62,114,159,227, 62,227, 60, 55,222, 50,222, 89, 95,204, 55,192,183,200,183,203, 79,195,111,158, 95,133,223, 67,127, + 35,255,100,255,122,255,209, 0,167,128, 37, 1,103, 3,137,129, 65,129, 91, 2,251,248,122,124, 33,191,142, 63, 58,219,101,246, +178,217,237, 65,140,160,185, 65, 21, 65,143,130,173,130,229,193,173, 33,104,200,236,144,173, 33,247,231,152,206,145,206,105, 14, +133, 80,126,232,214,208, 7, 97,230, 97,139,195,126, 12, 39,133,135,133, 87,134, 63,142,112,136, 88, 26,209, 49,151, 53,119,209, +220, 67,115,223, 68,250, 68,150, 68,222,155,103, 49, 79, 57,175, 45, 74, 53, 42, 62,170, 46,106, 60,218, 55,186, 52,186, 63,198, + 46,102, 89,204,213, 88,157, 88, 73,108, 75, 28, 57, 46, 42,174, 54,110,108,190,223,252,237,243,135,226,157,226, 11,227,123, 23, +152, 47,200, 93,112,121,161,206,194,244,133,167, 22,169, 46, 18, 44, 58,150, 64, 76,136, 78, 56,148,240, 65, 16, 42,168, 22,140, + 37,242, 19,119, 37,142, 10,121,194, 29,194,103, 34, 47,209, 54,209,136,216, 67, 92, 42, 30, 78,242, 72, 42, 77,122,146,236,145, +188, 53,121, 36,197, 51,165, 44,229,185,132, 39,169,144,188, 76, 13, 76,221,155, 58,158, 22,154,118, 32,109, 50, 61, 58,189, 49, +131,146,145,144,113, 66,170, 33, 77,147,182,103,234,103,230,102,118,203,172,101,133,178,254,197,110,139,183, 47, 30,149, 7,201, +107,179,144,172, 5, 89, 45, 10,182, 66,166,232, 84, 90, 40,215, 42, 7,178,103,101, 87,102,191,205,137,202, 57,150,171,158, 43, +205,237,204,179,202,219,144, 55,156,239,159,255,237, 18,194, 18,225,146,182,165,134, 75, 87, 45, 29, 88,230,189,172,106, 57,178, + 60,113,121,219, 10,227, 21, 5, 43,134, 86, 6,172, 60,184,138,182, 42,109,213, 79,171,237, 87,151,174,126,189, 38,122, 77,107, +129, 94,193,202,130,193,181, 1,107,235, 11, 85, 10,229,133,125,235,220,215,237, 93, 79, 88, 47, 89,223,181, 97,250,134,157, 27, + 62, 21,137,138,174, 20,219, 23,151, 21,127,216, 40,220,120,229, 27,135,111,202,191,153,220,148,180,169,171,196,185,100,207,102, +210,102,233,230,222, 45,158, 91, 14,150,170,151,230,151, 14,110, 13,217,218,180, 13,223, 86,180,237,245,246, 69,219, 47,151,205, + 40,219,187,131,182, 67,185,163,191, 60,184,188,101,167,201,206,205, 59, 63, 84,164, 84,244, 84,250, 84, 54,238,210,221,181, 97, +215,248,110,209,238, 27,123,188,246, 52,236,213,219, 91,188,247,253, 62,201,190,219, 85, 1, 85, 77,213,102,213,101,251, 73,251, +179,247, 63,174,137,170,233,248,150,251,109, 93,173, 78,109,113,237,199, 3,210, 3,253, 7, 35, 14,182,215,185,212,213, 29,210, + 61, 84, 82,143,214, 43,235, 71, 14,199, 31,190,254,157,239,119, 45, 13, 54, 13, 85,141,156,198,226, 35,112, 68,121,228,233,247, + 9,223,247, 30, 13, 58,218,118,140,123,172,225, 7,211, 31,118, 29,103, 29, 47,106, 66,154,242,154, 70,155, 83,154,251, 91, 98, + 91,186, 79,204, 62,209,214,234,222,122,252, 71,219, 31, 15,156, 52, 60, 89,121, 74,243, 84,201,105,218,233,130,211,147,103,242, +207,140,157,149,157,125,126, 46,249,220, 96,219,162,182,123,231, 99,206,223,106, 15,111,239,186, 16,116,225,210, 69,255,139,231, + 59,188, 59,206, 92,242,184,116,242,178,219,229, 19, 87,184, 87,154,175, 58, 95,109,234,116,234, 60,254,147,211, 79,199,187,156, +187,154,174,185, 92,107,185,238,122,189,181,123,102,247,233, 27,158, 55,206,221,244,189,121,241, 22,255,214,213,158, 57, 61,221, +189,243,122,111,247,197,247,245,223, 22,221,126,114, 39,253,206,203,187,217,119, 39,238,173,188, 79,188, 95,244, 64,237, 65,217, + 67,221,135,213, 63, 91,254,220,216,239,220,127,106,192,119,160,243,209,220, 71,247, 6,133,131,207,254,145,245,143, 15, 67, 5, +143,153,143,203,134, 13,134,235,158, 56, 62, 57, 57,226, 63,114,253,233,252,167, 67,207,100,207, 38,158, 23,254,162,254,203,174, + 23, 22, 47,126,248,213,235,215,206,209,152,209,161,151,242,151,147,191,109,124,165,253,234,192,235, 25,175,219,198,194,198, 30, +190,201,120, 51, 49, 94,244, 86,251,237,193,119,220,119, 29,239,163,223, 15, 79,228,124, 32,127, 40,255,104,249,177,245, 83,208, +167,251,147, 25,147,147,255, 4, 3,152,243,252, 99, 51, 45,219, 0, 0, 0, 32, 99, 72, 82, 77, 0, 0,122, 37, 0, 0,128,131, + 0, 0,249,255, 0, 0,128,233, 0, 0,117, 48, 0, 0,234, 96, 0, 0, 58,152, 0, 0, 23,111,146, 95,197, 70, 0, 3, 40, 76, + 73, 68, 65, 84,120,218,236, 93,119,120, 20,197, 3,125,187,183, 87,114,119,201,165, 55, 18, 72,161, 67, 0,105, 10, 72,239, 66, + 40, 22, 4, 17, 69,108, 63,105, 22, 4, 65, 17,165,131, 34, 85, 69,196, 6, 40,210, 68, 16, 80,138, 72,239, 69,122,135, 0,233, + 61,151,235,109,231,247, 71,110,207,203,113, 45, 16, 80, 96,222,247,237,119,183,237,237,204,206,236,236,219, 55,141, 33,132,128, +130,130,130,130,130,130,130,130,162,242,193,210, 91, 64, 65, 65, 65, 65, 65, 65, 65,241, 31,193,134, 13, 27, 42, 98,129,117,246, +151,211,190,180,251,175,115,222,197,184,147, 74,228,108,103,231,252,248, 62, 9,103,187,255, 42,167, 16,223, 10,240,118,174, 72, + 62,170,172,251,233, 20, 78, 82,217,225,188, 91,156,149,245, 28,185, 9, 39,185, 11,233,254,241,125, 18,206,118,255, 53, 78,215, +252,227, 39,111,133, 56,253,204, 83, 21, 13, 39,169,236,112,222, 45,206, 59,125,142,188,132,147,220,105, 94,242,144,246, 31,227, + 33, 1, 33, 4,220, 93, 20, 89,126, 35, 53, 53,149,113,226,103,254,171,156,206,247, 65,224,175,204,176, 86, 34,118, 84, 54,167, +203,253,172, 44,124,156,154,154,202,108,216,176, 97, 39,128,118,149, 25,247,202, 72,119,151,184, 86, 10,239,109,136,172, 10,113, + 86, 86,190,191,219,156,149,245, 44,185,114, 86, 70,190,119,151,238,119, 49,141, 42, 43,156,149,242, 44,221,141, 60,239, 38,255, +220, 49,175, 43,103,101, 60, 75,174,156,149,145,239,239, 5,103,101, 60, 75,238, 56, 43, 35,223,123, 74,251,135,205,160, 98,111, +231,166,221, 69,167,172,253,127, 89, 16,221, 45,177, 89, 1, 7,230, 95,231,172,228, 52,250,216,206, 89,153, 95, 55,237, 43, 43, +141,238, 70,126,119,230,172, 44,126, 87,158,202, 72, 39,119,156,119, 26, 94, 15,225,172,244,184,223,105,190,191, 87,156,149,156, + 70,149,242, 44,185,112,182,175,228,143,129,246, 78,235, 31, 87, 38,103,101, 61, 75,110,194,121,199,233,228,142,243, 78,195,235, + 33,156,149, 30,247,202,120,135,220, 45,222, 7, 26,119,171,250,172,178, 57, 43,200,253, 64,113, 86,176,122,166,243, 93, 72,251, +127, 53,156,149,201,233, 26,198,202,172,238,185,155,225,172, 76,206, 10,132,245,129,227,188,223,210,253,191,120, 63, 61,241,221, + 73,181,148, 39,119,244,110,132,179, 50, 57,253,228,126, 32, 56,239, 32,237, 31, 40, 84,184,234,240, 94, 8,184, 74,254, 50, 65, + 37, 59, 48,119, 83,184, 86,102, 56,219,223, 13,135,240, 46,160,210,195,105,255, 82,254,232, 46,196,253,126,185,167,244, 89,162, +207,210,127,238, 89,114,201,147,237, 43,209, 41,170, 84,231,217,149,179, 50,174,225,204, 81, 89,121,244,110,199,189, 50,159,165, +187,145,246, 20,119,224, 66, 80, 78,202, 73, 57, 41, 39,229,164,156,148,243,161,229,124,224, 64, 8,161,195, 59, 80, 80, 80, 80, + 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80, 80,220, 71,240,218, 70,171, 74,149, 42, 27, 20, 10, 69, 13, 79,251,181, 90,109, + 86, 86, 86, 86, 7,122, 27,255, 61,208, 52,162,184,143,192,226,159, 94,206, 60, 0, 98, 95, 40, 40, 40, 40, 30,104,120, 20, 90, + 50,153, 44,249,220,185,115,181,120,158,135,205,102,131,213,106,117,252,154, 76, 38,180,109,219,182,194, 13,233,163,163,163,119, +137, 68,162,196,138,156, 99,179,217,110,228,228,228,180,246,114,200, 62, 0,201, 12,243, 79,155, 64,225,191,167, 95, 0,153, 22, +139,165,137, 55, 78,134, 97,146, 93,249, 60,112, 9,255,189,114, 6, 7, 7, 31,225, 56, 46,222, 29,151,167,255, 60,207, 95,205, +203,203,107,117, 47,211,232, 97, 70,116,116,244, 46,142,227, 42,156, 63,179,179,179, 61,230,207,216,216,216,227, 44,203, 86,169, + 0,165,136,231,249, 11, 89, 89, 89,173,189, 8,145,125, 0,146,189,145,184,230, 39,134, 97,210,109, 54, 91, 51, 95,207,145, 55, + 46, 55,121,212, 23,167, 67,100,113, 28, 55, 35, 42, 42,234, 13,157, 78,103, 0, 64, 68, 34, 17,113, 10, 27, 0,192,106,181,230, + 21, 23, 23, 55,160, 57,145,130,130,226,161, 16, 90, 60,207,179, 70,163, 17, 23, 47, 94,132,135,249, 16,109,183,113,189, 90, 71, +255,220, 26, 21, 20, 21, 13,171,217, 12,101, 68,164,131, 59,231,236,105, 88, 45,102, 88, 77, 38, 84,107,222, 66, 8, 3,234,213, +171, 39,242,193, 25, 63,115,230,204,168,160,160, 32, 24, 12, 6, 24, 12, 6, 24,141, 70, 24, 12, 6,152, 76, 38,152, 76, 38,152, +205,102,152,205,102, 88,173, 86, 24,141, 70,108,219,182,205,102,177, 88,188,114, 78,157, 58, 53, 74,165, 82, 57,248,132, 69,224, + 20,120, 45, 22, 11, 12, 6, 3,182,111,223,238,149,147,227,184,248,204,204,204, 40,137, 68, 2, 66, 8,120,158, 7, 33,164,220, +226,138,234,213,171,155,189, 5,242, 46,165,209,195,140, 90, 83,151,111,140, 10,150,203, 96,229,121,164, 54,170,238,216,113,245, +155, 85, 32, 86, 27,120,171, 21, 53,135, 15,114,108,175, 91,183,174,215,252, 73, 8, 73,152,186,124, 99,136,191,156, 5, 5, 5, +250, 58,117,234,100,162,108,112, 63, 79, 66, 43, 94,175,215, 71,217,249,111, 17, 68, 44,203,150, 91, 54,111,222,140,212,212, 84, + 95,113,143,127,251,237,183,163, 44, 22, 11, 76, 38, 19,140, 70, 35, 44, 22, 11,172, 86,171, 99,177,217,108,142,197,100, 50,225, +224,193,131,254, 58, 89, 51,187,116,233, 50,100,227,198,141,202, 95,127,253, 85,153,152,152, 8,137, 68, 2,145, 72, 4,145, 72, + 4,150,101,193,113, 28, 30,123,236, 49,134,102, 65, 10, 10,138,135, 70,104, 25,141,198,107,141, 27, 55, 38,246,255,113, 50,153, + 76,226,242,149, 91,165,102,205,154, 23, 92,207,243, 85, 93, 21, 20, 21,141,113, 85,195, 0, 0, 19,174, 23, 56, 94, 16,159,180, +122,196,113,204,164,140, 18, 0,128, 92, 46, 7,227,252, 25,237, 1, 74,165, 18, 93,186,116,129, 84, 42, 69,179,102,205, 32, 22, +139,221, 46, 18,137, 4, 98,177,216,231, 77, 97, 24, 6,129,129,129,152, 56,113,162, 32,146,160, 12,144, 97, 68,171,102, 8, 0, +193,215,167, 47,193,196, 19,112, 28,231, 88,252,225,148, 72, 36, 56,117,234, 20, 56,142,131, 72, 36,114,252, 10,255,215,175, 95, +143,103,158,121, 6, 28,199, 65, 46,151, 3, 62, 70, 14,118, 78, 35,147,201, 20, 43,149, 74,205, 0, 4,113, 38, 97, 24, 38,230, +118,210,232, 97, 70,176, 92,134, 23, 23,174, 5, 0,220,156, 51,220,145,118, 7,135, 78,112, 28,147,240,218,179, 96, 24, 6, 98, +177, 24, 44,203, 86, 26,103, 97, 97,161,126,192,128, 1,123,130,130,130, 54,171,213,106,248, 16,112,184,121,243, 38, 56,142,243, +152,223, 89,150,197,236,217,179,113,249,242,101,191,226,110, 48, 24,176,120,241, 98,216,108,182,114,188,194,127,215,109,126,138, +172, 41, 93,187,118, 29,180,113,227,198, 80,134, 97,240,249,231,159, 67, 34,145,160, 71,143, 30, 8, 15, 15,199,150, 45, 91, 32, +145, 72, 48,102,204, 24,154,249, 40, 40, 40,188,149,121, 98, 0,143, 0,136,180,155, 8,165, 0, 66,156, 14,201,179,255, 70, 10, +235, 12,195, 28,118,195,211,220,126, 76, 30,195, 48,135,157,214, 77, 0,164,110,182, 23, 0,144,219, 23, 35,202,220,255, 20,167, +235, 8,231,193,211,117, 57,160,108,254, 33, 0, 59, 0,180, 79, 77, 77,221, 9, 0,217,217,217, 79,100,103,103, 3, 0,146,147, +147,207, 93,184,112,161,142,160,121,236,213, 83, 18,171,213, 90, 75,168,170, 18,220,162,206,157, 59,123,253,194,183,154,205,183, + 8, 16,119, 90,202, 93,117,133, 39, 1, 99, 54,155,241,236,179,207, 2,128,199,151,142,243,226,135,118,131,201,100, 2,199,113, +168, 93, 53, 18, 31,118,107,140, 71,137, 5, 90, 13, 3,107,137, 22,125, 2, 45, 56, 87,175, 9, 22,221,200,195,117,181, 6, 28, +199,249,197,201,243,188, 71,145, 37, 18,137,176,112,225, 66, 12, 24, 48, 0, 34,145,200, 47, 62,231, 52, 74, 74, 74,218,120,225, +194,133,112,134, 97,140,246, 52,146, 89,173, 86,149,213,106, 13,183,217,108,225, 21, 73,163,135, 25, 86,158,119,155, 15, 61,229, + 89,127,210,201, 31,206,194,194, 66,125,106,106,234, 1,153, 76,182, 36, 58, 58, 58, 51, 61, 61,221,167,208,114, 21, 63,174, 31, + 21,159,125,246, 25,230,207,159,143, 14, 29, 58,248, 21, 78,163,209, 8,134, 97,176,104,209,162, 91,246, 77,158, 60,249,150,235, +249,224,100, 0,176, 85,170, 84, 25,250,199, 31,127,168,132, 99, 35, 34, 34, 32, 22,139,209,160, 65, 3, 4, 5, 5, 97,207,158, + 61,176,217,108,126, 63,151, 20, 20, 20, 15, 46,220,105, 17, 39,180, 29, 55,110, 92,179, 25, 51,102, 76,107,217,178,229,207,251, +246,237, 91,206, 48,204, 6,167, 50, 49,213, 94,190,110, 16,214, 9, 33,205,157, 69,143, 93,172, 69, 50, 12,179, 65, 56,222,121, + 93,248, 37,132,116, 6, 32, 21,214,199,141, 27,151, 50, 99,198,140,105, 99,199,142,125,127,250,244,233,146,113,227,198, 53,156, + 49, 99,198, 52,225, 58,238,194,225,206,209,242, 58,247,148, 80, 69,117,254,252,121, 79, 85, 84,206, 47, 0,175,165,165, 50, 34, +210,225,100, 77, 74, 8,119,108,159,152, 94,236,120,129, 45,104, 90, 3, 74,165, 18,221, 38,125,234,151, 83,100, 50,153,144,155, +155,235,112, 25,124, 45,254,114, 42,228, 1,216,246,118, 3,220, 44,144,226,227,253,133,216,248,247,101,136,197, 98,116,175,215, + 0, 79, 72,130, 48, 62, 65,138,183, 47,165,193, 66,252,107,211, 75, 8,113, 43,176,132,255, 66, 21,138,191, 66,203, 37,141,110, + 26, 12,134,130,139, 23, 47,234,249,178, 23,187,156, 16, 18,202, 48, 76,169,221,229,138,245, 55,141, 30,102,164, 54,170,238,112, +157, 14, 6,117,114,108,127, 70,123,202,145, 38,163, 22,126, 2, 0,232,208,228, 49,159,207,131, 63,156, 5, 5, 5,250,214,157, +218,239,180,233, 77, 63, 12, 26, 52,232,218, 95,127,253, 37,247, 39,172,238,132,150,224,218, 10, 34,139,227, 56,152, 76, 38,191, +226,110, 50,153, 60, 62, 31, 18,137,228,118, 28, 45,104,181, 90,211,186,117,235,176, 96,193, 2,132,135,135,163,107,215,174,136, +141,141,197,170, 85,171, 64, 8,193,240,225,195, 33,151,203, 5,247,154,102, 64, 10,138,135, 27,222,180,136,108,198,140, 25,211, + 92,133,140,243,186,179,128,114, 17, 83,206, 98, 45,197,199,251,127,131,171,120, 18,174,203, 48,204,134,233,211,167,167,250, 8, + 71,158, 39,161,229,117, 72,124,163,209,120,173, 81,163, 70,126,169, 9,157, 78,151,237, 75,108,184,251,170,119,118, 9, 2, 3, + 3,161, 84, 5,130,245,179,220,181, 88, 44, 14,161,178,117,235, 86,200,229,114,244,232,209,227,142, 28, 45,179,217, 12,169, 68, + 12, 54, 34, 26, 47,206,249, 11, 5,165,122,199, 11,102,199,213,107, 56,150,147,139,183, 91,118,130, 82,158, 11,141,201,228,151, +243,198,243,252, 45, 34,139,227, 56, 60,251,236,179, 14, 55,193,185,221, 10,188, 84, 29,134,135,135, 31,225, 56, 46,222, 41,141, + 2,146,147,147,129,127,218,245, 48, 60,207,107, 66, 66, 66,126, 1, 80,133, 16, 18, 15, 32,200,159, 52,162,112,159, 63, 93,183, +243, 46, 78,213,237,112, 22, 20, 20,232, 83, 83, 83, 15,216,244,166, 31, 50, 50, 50, 14, 0, 8,120,244,209, 71, 43, 44,180, 4, +129, 37, 22,139, 49,123,246,108,204,159, 63,223,177,223, 95,161,101,181, 90,203, 9,168, 75,151, 46,149,187,150,171,176,243, 81, +109, 74, 80,214,187,144, 79, 78, 78,118,156, 19, 19, 19,131,144,144, 16,240, 60, 15,158,231, 17, 16, 16, 0,185, 92, 14,137, 68, + 66, 51, 29, 5, 5,133, 55, 45,162, 31, 59,118,236,251, 12,195,108,176, 59, 75,167,189, 8, 42,119,218,163,185,139, 88,203,243, +112, 92,170, 59,177,229,252, 95,192,184,113,227, 82, 92,195,225,174,186,210, 81,170,186, 12,187, 95, 14,206, 85, 84,149,245, 18, +243,246, 34, 11, 12, 81, 65,174, 84, 66, 36, 98,193, 48, 12,241,197,101, 54,155, 29, 5,255, 27,111,188,225,181,221,138,191,237, +169,204,102, 51, 88, 78,132,172,152, 36,216,216,221,142,115,133,133,229,196,184, 30, 83, 7,162,243,199, 33,246,243,133,235,234, +104, 13, 31, 62, 28,139, 23, 47, 6,203,178,142,123,194,113, 28,106,214,172,137,107,215,174,121,229,226, 56, 46,254,250,245,235, + 81,206,247, 81, 16,177,132, 16,216,108, 54, 84,175, 94,221,112,241,226,197, 55,233,163,123,103, 34,203,211,118,155,141,247,219, +133,113,119, 92, 65, 65,129,190, 95,191,126, 59, 75, 74, 74,126,168, 95,191,254, 37,148, 31, 2,193, 39, 31,199,113,229, 4,150, + 32,178,230,205,155, 87, 78, 20, 89, 44, 22,191, 62, 4, 44, 22,203, 45,130,103,214,172, 89,229,126, 1,160, 85,171, 86,126, 57, +195, 0, 8,203,178, 68, 34,145,160, 75,151, 46,104,216,176, 33,126,253,245, 87,240, 60,143, 97,195,134, 65, 46,151, 99,238,220, +185,176, 90,173,152, 57,115, 38,117,180, 40, 40, 40,188,105, 17,227,244,233,211, 79, 79,159, 62,221,225, 44,185, 58, 90, 30,222, +187, 61,237,162, 42, 82, 16,105, 0,140,238, 4,145, 59,151,204, 85,128, 57,111,155, 49, 99,198, 52,215,112,184, 86, 87,150, 19, + 90,247, 10,217,103, 78,225,211,199, 27, 3, 40, 95, 93,184,240,177, 58, 80, 6, 42,161, 12, 10, 68,191,245,187, 1,192, 94,232, +143,245,203,209, 18,132, 86, 65, 65,129, 87,145, 85, 17, 71,139,149,114, 88, 29, 95, 4, 34, 21,131, 51, 89,202, 9, 45, 17, 39, +198,205,240, 36,176, 98, 9, 56,155,213, 47, 78, 66,200, 45, 85,133,131, 7, 15, 6,195, 48,142, 30, 98,141, 26, 53,114,230, 98, +124,189, 28, 71,135,149,181,193,115,173,142,157,153,111,160, 79,236,237,228,207, 35,223,224,220,154,161, 0,128,214, 90,173, 35, + 45,166, 54,250,167,239,192,156, 83, 59, 29,238,227, 36,188,123, 91,156, 5, 5, 5,250, 71,235,166, 28,144,132, 5,255,112,227, +198,141, 3, 0,216,254,253,251,135, 52,106,212,200,175,103, 82,232, 92,225, 42,178,156,157, 44,225,215, 71, 15, 91, 39,225,104, +243, 75, 64, 9,213,136,126,228,121, 34,228,109,149, 74,133,192,192, 64, 71,143,219,128,128, 0, 40, 20, 10, 71,251, 78, 63,133, + 27, 5, 5,197,195,139, 80, 65,232,216,197, 82, 57,167,201,222,182, 42,213,121,221,157,227,101,119,160,118,249, 40, 95, 55,218, + 5,154, 91, 8,206,154,203, 57, 27, 60,137, 52, 78, 80,144,206,191, 49, 49, 49,191, 7, 6, 6, 38,249, 27,251,138,244, 98,179, + 89,204,183, 56, 91, 12,195, 32, 48, 40, 16,242, 64, 37,228, 65,129, 30, 93, 47,111, 66, 75,112,138,132,151,206,146, 37, 75, 16, + 24, 24,136,151, 94,122,169,194,109,180, 28, 66, 75,194, 98,139,108, 59, 68, 82,174,156,200,226, 56, 14, 34,177, 24,217,129,177, + 96,197, 98,112, 86,255, 92,178,146,146, 18,112, 28,135, 15, 63,252,208,241, 5,239, 44,178, 42, 18,103,111, 96, 25, 70,112,183, +100, 53,106,212,120,151, 97,152, 4, 0,137, 90,173, 86,150,149,149,213,145, 62,175, 94,148,129,205,114,139, 11,229,201,125,189, + 93, 78,193,201,146,132, 5,255, 80,167, 78, 29,135,147,165, 80, 40,132,222,166,190,211,152,101,221,138, 44,215, 30,130, 28,199, +149,229,101, 31,189, 35,157, 29,173,233,211,167, 59,120,157,157, 44, 1, 21,121,142,132,176,238,220,185, 19,199,142, 29,195, 27, +111,188, 1,185, 92,142,249,243,231,195,106,181, 98,242,228,201,144,203,229,144, 74,165, 52,243, 81, 80, 80, 55,171,156, 22,113, + 65,158, 75, 59, 40,198, 69,212,228,185, 19, 88,206,213,132,194,127,134, 97, 44,110,120, 77, 46, 85,138,174,219,133,223,130,233, +211,167,255, 37, 56, 89, 78,219,203,133,195,167,163, 37,147,201,146, 46, 94,188,232, 24, 8,211,219,175,201,100, 66,135, 14, 29, +252,118,198,132, 94,135, 28, 39, 42, 39, 44, 20, 65,129, 80,168,130, 32, 15, 12,116, 21, 28,140,175, 66, 92,248, 34,118, 22, 90, + 31,125,244, 17, 56,142,195,226,197,139, 1, 0,239,190,251,174,223,109,180, 4, 78,216, 24,164,147, 43,104, 60,231, 25,152,126, +180, 32,103,239, 9,112, 28,135,168, 22, 79,128,127,244, 25,232,228,129,224,108, 86,191,123, 29, 22, 22, 22,226,218,181,107, 16, +137, 68,120,231,157,119,202,141,117,228,218,147,109,235,214,173, 62,227,238,206,201,250,232, 70,161,131, 71, 46,151,179, 39, 78, +156, 72,226,121, 62, 89,175,215,215,104,213,170, 21, 79, 31,101, 31,162,136,183,250, 37,170,252,205,159,174,156, 66,155,172,146, +146,146, 31,110,220,184,113, 16, 0, 59,104,208,160, 16,133, 66,129,111,191,253, 86, 7, 64,186,106,213, 42,185, 47, 81, 36,228, + 27, 95, 34, 75, 44, 22,151,229,101,127,226, 78,202, 15, 89,226,171, 97,188, 63,121, 94, 8, 43,195, 48,176,217,108,144,203,229, +229,156,172,128,128, 0,200,100, 50,154,241, 40, 40, 40,124,149, 37,135,253, 46,199, 9,105,238, 36,170, 14,223, 14,111, 69,174, +231, 11,156, 39,161, 97, 52, 26,113,246,236, 89,127,121,252, 30, 24,179,106,179,199, 48, 41,163, 4, 12,195,224,235, 86,245,161, + 84, 5, 66,161, 84,226,233, 95,119, 58, 10,238, 83,211,222,133, 76, 25,136, 42,109,186,250, 85,144, 11, 85,135,206, 66,171,184, +184, 24, 98,177, 24, 83,166, 76, 1,203,178,152, 57,115, 38,226,226,226,144,149,149,133, 85,171, 86,249,229,104,137,108, 34,196, +190, 80, 23,138,193,193, 80,189,208, 22,161, 93, 62, 66,134,137,195, 62,131, 2,109, 13,103, 32,221, 50, 15, 38,222,230,119, 15, + 44,171,213,138,157, 59,119,186, 54,120,119,180,169,178, 90,173,176, 88, 44, 48,155,205,152, 57,115,166, 63, 61, 60,111, 73, 55, +225, 30,218, 7, 65, 21, 93,184,112, 33,146, 16, 18, 6, 32, 24, 64, 62,125, 92,189, 35,182,197,112, 68, 54,251, 31, 0, 96,253, +244,151, 29,219, 63, 60,245, 79,254,156,253, 99,217, 4, 0,117, 18,187, 86,136,179,160,160, 64,223,189, 67,171, 93, 6, 94,252, +125,131, 6, 13,202, 57, 89, 1, 1, 1,140,125,221, 47,187,140,101, 89,136, 68,162, 91,170, 11, 61,137, 45,127,218,104, 89,173, + 86,199, 64,162,222,218, 51,222,142,163,245,242,203, 47, 35, 54, 54,214,225,100, 77,154, 52, 9,114,185, 28,227,198,141,131,197, + 98,193,188,121,243,104,230,163,160,160,184,231,162,236, 94,192,109, 73,106, 48, 24,210, 26, 54,108, 8, 15,251,226, 2, 2, 2, +196, 46,145,170, 82,179,102,205, 11,110,170, 16, 59, 3,216,230,174, 80,103, 24, 6, 65,170, 32, 4, 4, 42,161,112,113,177, 2, +130, 84,144, 5, 6,130,149,184, 45,204,111,225, 20,218,150, 56, 11, 45, 97, 41, 41, 41,129, 88, 44,198,130, 5, 11,160, 82,169, + 96, 52, 26,125,114, 10, 47, 29,145, 72, 4,221,205, 82,156,155,182, 13,210,128,125,168,209,117, 0, 98,197,114, 72,246,252, 2, +189,205,226,107,192,210, 91, 56,107,213,170,133, 9, 19, 38,220, 50,172,131, 39,196,197,197,249,140,187,171,147, 53,187,126, 53, + 72,164, 18,140, 58,115, 19, 70,163,145, 25, 48, 96, 0, 15, 64, 15, 32, 79,175,215,223,240,231,126, 86, 2,238,123, 78,111,189, + 98, 5,240,196,230, 78,192,184,229, 20,156, 44, 3, 47,254,254,218,181,107,130,147, 21,172, 80, 40,240,213, 87, 95,233, 0,176, +147, 39, 79, 86, 36, 36, 36,136,252,201, 75, 34,145, 8,115,230,204,113,219, 38,203,157,232,170,200,115,228,124,110,187,118,237, +220, 14, 88,234, 65,188,221,194, 41,132, 53, 60, 60,220,225,100,217,108, 54, 71,111, 67, 97,244,121, 47, 31, 21, 52,127, 82, 78, +202,249,240,112, 62,144,112, 91, 2,103,101,101,117,247,116, 66,245,234,213, 47, 94,188,120,177,166, 48, 21,135,189,224,148, 24, + 12,134, 90,173, 90,181,242,105,237,240, 60, 15,153, 76, 6, 66, 8, 58, 78,152, 1,134, 5, 88,148,127,137, 69, 61,222, 9, 34, + 17, 7,190,108,170, 15,159,189, 14,245,122,125,185,151,131,187, 69,163,209,192,104, 52,250, 61,154,183,193, 96, 40, 55, 4, 3, + 67,120, 92,255,115,229, 45,189, 15,133,197,223,118, 59, 1, 1, 1,229,170,126,124, 56, 86,140, 63,142,150,115,213,163, 68, 42, + 1, 39, 17, 11,142, 86,233,165, 75,151,250,209,108,238, 63,132, 14, 11, 0, 80,187, 85, 15,240,188, 13,196,102, 43, 55, 77, 82, +221,164,238,224,137, 13,102,139, 14, 70,163,209,215,176, 39, 76,126,126,190,190, 95,191,126, 59, 1,124,215,167, 79,159, 11, 40, + 27, 93,152, 4, 6, 6,202,196, 98, 49, 15,160, 16, 0, 41, 42, 42, 10,206,200,200,224, 13, 6, 67, 53, 95,225,220,184,113, 35, +206,158, 61,139, 54,109,218,148,155, 14, 74,112, 69,157, 71,119,247, 39,127, 10,213,229,238, 70,132,247, 36,228,252,133, 72, 36, + 66,112,112, 48, 36, 18, 9,166, 76,153, 2,137, 68, 2,133, 66, 1, 0,152, 55,111,158, 99,240, 85, 10, 10, 10,138,135, 70,104, +249, 42, 55,189, 84, 43,122,173, 66,180, 90,173,233, 9, 9, 9, 21,186,152,205,102,203,241, 33,220,210, 87,173, 90, 37,113,118, + 33,124,253, 18, 66,114,124,188,108,211,215,175, 95, 47,113,231,110,120,154, 96,218, 23,167,205,102, 75, 79, 76, 76,244,232,152, +184,131,197, 98,201,240, 37, 90,103,228,233,203,137,132, 81,103,110,122,156, 59,145,194,103, 94,243,146, 63, 63,184,221,252,121, +169,118,237,218, 25, 33, 33, 33,155,162,163,163, 11,246,238,221, 27,222,188,121,243,112,231, 99,154, 55,111, 30,235,114,154, 9, +158,231, 57, 4,195, 48,233,125,250,244,113,155,231, 5,209,228, 38,127,166,251,202,243,135, 14, 29,146, 56,159,239,137,223,233, + 57, 74,247, 67,184, 94,111,220,184, 49,235,204,227, 41,239, 91, 44,150, 60,154, 11, 41, 40, 40, 30,122,161,165,215,235,111, 54, +108,216,208,234, 97,223, 13,111,231, 22, 20, 20, 52,171,236, 8, 88, 44,150, 86,247, 3,103,126,126,126,165,198,221,106,181,166, +219, 7, 40,245,122, 12,205,226,255, 94, 26, 1, 64,110,110,238,163, 0,160,213,106,225,107, 90,157, 10, 8,194, 74,207,159, 86, +171,181,213,221,184,167,133,133,133, 45,105,206,162,160,160,160, 66,171, 2,160,147, 17,255, 55,112, 55, 68, 43, 5, 5, 5, 5, + 5, 5, 69,229,130,165,183,128,130,130,130,130,130,130,130,226,238,128, 65, 89,207, 1,119,168, 72,111,130,206,183,113,237,109, +148,147,114, 82, 78,202, 73, 57, 41, 39,229,124,232, 56,125,113, 63, 48,189, 25,239, 69,123,233,206,148,147,114, 82, 78,202, 73, + 57, 41, 39,229,164,156, 15, 35, 8, 33,180,234,144,130,130,130,130,130,130,130,226,110,129,163,183,224, 95,131, 8, 21, 24, 81, +223, 15,213, 28, 10,192,211,132,113, 38,134, 97,138,110,131,147, 1, 32,177, 47,194, 64, 71, 22, 0,102, 0,102,134, 97,136,111, +142,143,217,204,204,208, 20, 98, 19, 55, 39, 12, 35,230,121,252, 93,173, 90,213,227, 12,243,132, 9, 0,148,209,117,235, 5, 42, +229,157,141,102, 83,146, 76, 44, 61, 91,172,213,108, 53,230, 94, 76,163,217,131,130,226, 95, 65, 47, 0, 19, 81,214,172,100, 58, +128,149,244,150, 80, 80,220, 37,161, 21, 24, 24,120,132,101,217,120, 95,227,243, 8,176,207,101,150, 94, 84, 84,212,172, 2,215, +238, 23, 24, 24,216, 65, 44, 22, 63, 14, 0, 22,139,101,175, 70,163,249, 11,192, 42, 0,214,219,140,147, 10,192,179, 0, 6,218, +215,127,178, 23, 22,234,219,228,107, 24, 28, 28,188, 70, 44, 22,147,252,252,252, 22, 0, 16, 30, 30,126,192, 98,177, 48,106,181, +250,105, 0, 39, 43,200,199,138,197,226,217, 45, 90,180,104,187,123,247,238,239, 0, 44,168,164,180,148,177, 44,235, 86,160,240, + 60,159,120, 27, 34, 75, 2, 32,120,193,130, 5,225,203,150, 45,107,156,158,158,222, 0, 0,226,227,227, 79, 13, 26, 52,232,248, +136, 17, 35, 10, 8, 33, 37, 12,195,152,189,241,100,102,134,166,228,102, 95,125, 35, 39,247,236,179, 0, 16, 19,219, 96,165, 72, +196, 74, 8, 57,186, 95, 17, 49, 48,162,102,141,196,255,253,252,237, 2, 73, 98, 82, 85,108,223,119,236,145, 17,111,190,159,146, + 1,124, 70,197,214,189, 67, 80, 80,208, 17,150,101,227,189, 61,227,238,158,121,155,205,150, 94, 88, 88,216,204, 19, 39,199,113, +241,222,202, 11,119,219,120,158,191,154,159,159,239,118,168, 9,149, 74,181,159,227,184, 36,127,185,132, 95,171,213,154,238,169, +151,174, 74,165, 58, 34, 18,137,226,189,197,211,221, 62,158,231,175,230,229,229,121, 10,231, 45,113,175,140,112,222, 14,167,183, +112, 10,229, 17,128,121,225,225,225,143, 21, 20, 20, 60, 15,224,125,181, 90,221, 72, 36, 18, 33, 44, 44,236,125,147,201,116, 57, + 56, 56,248,155,146,146,146,125, 0,222, 4, 64,231, 75,165,160,168, 44,168, 84,170, 28,141, 70, 67, 4,240, 60, 79, 44, 22, 11, + 49, 26,141, 68,175,215, 19,173, 86, 75, 52, 26, 13, 81,171,213,164,164,164,132, 20, 20, 20,144,200,200, 72,215,193, 27, 61,213, +225, 54, 80,169, 84, 23,103,204,152, 97,188,118,237, 26, 49,155,205,196,108, 54,147,180,180, 52,242,233,167,159, 26, 85, 42,213, + 69, 0, 13, 60,156,219,217, 67, 97,209, 5,192,242,198,141, 27,155, 54,110,220, 72, 12, 6, 3,209,106,181,100,229,202,149,164, +126,253,250, 38, 0,203,237,199,176,126,114, 2, 64,235,152,152,152,244, 43, 87,174,216,182,110,221,106, 14, 14, 14,222, 22, 28, + 28,188, 45, 45, 45,205,118,229,202, 21, 62, 34, 34, 34, 29, 64,235, 10,132, 19, 0,158, 25, 53,106, 84, 78, 90, 90, 26,105,215, +174,221,223, 78,219, 25,248,158,231,174,179, 59, 39,139, 16, 18, 67, 8,137, 69,217, 32,151,183, 44,132,144, 88,251, 49,161,126, +114, 42,175, 94,189, 90, 53, 58, 58,122, 6,195, 48, 38, 87, 62,134, 97, 76,209,209,209, 51,174, 94,189, 90,149, 16,162,244,198, +153,126, 99,225,171,155, 54,118, 42,214, 22,157, 39,218,162,243,228,187,239,219,171, 95, 31,241,252,242,216,234, 77, 22,135,196, +167, 44, 56,123,254,210, 34, 66,200,162,191, 14, 95, 92,244,209,151,191, 47,122,114,196,220,175,194, 19, 26,191, 94,129,251,121, + 39,160,156, 0, 66, 66, 66,178,181, 90, 45, 33,132, 16,155,205, 70,204,102, 51, 49, 26,141, 68,167,211, 17,141, 70, 67, 74, 75, + 75, 29,207,121, 73, 73,137,227,127, 84, 84,148,199,231, 61, 52, 52, 52, 71,175,215,151, 43, 59, 76, 38,147,163,252,208,233,116, + 68,167,211, 17,173, 86,235, 88, 52, 26, 13,169, 82,165,202, 77, 47,225,204, 18,194,201,243, 60,177, 90,173,196,108, 54, 59,120, + 13, 6, 67,185,197,104, 52, 18,163,209, 72, 18, 18, 18,252, 14,167, 63,156, 6,131,129,196,199,199,103,122,226, 12, 11, 11,203, + 49, 24, 12,229, 56,157,227,239,202, 43,172,199,196,196,100, 87,132,211,159,112,122,187,159,118, 44,184,112,225, 2,209,235,245, + 36, 46, 46,174,224,233,167,159,182,216,108, 54,178,113,227, 70,210,184,113, 99,190,125,251,246,230,252,252,124,242,210, 75, 47, + 17, 47, 31,133,244, 57,162,156, 20,158, 77, 11,207,142, 22,195, 48, 80, 42,149, 88,177, 98,133,199,233, 56,156,255, 87,171, 86, +205,223,235, 54, 75, 74, 74,218,185,103,207, 30,121,108,236, 63, 3, 98,155, 76, 38,132,134,134, 98,216,176, 97,210, 94,189,122, +213,236,218,181,235,129,235,215,175,183, 3,112,196, 7,223, 83,145,145,145,159,127,248,225,135,209,253,251,247, 71,120,120,185, + 65,183,209,175, 95, 63, 60,253,244,211,146, 11, 23, 46, 12, 88,178,100,201,128,133, 11, 23,102,107, 52,154, 17, 0,126,241, 70, + 42,151,203,251, 84,169, 82,229,171, 61,123,246, 68, 69, 69, 69, 33, 57, 57,153, 29, 51,102, 76,205, 90,181,106,201,227,227,227, +217,172,172, 44,252,250,235,175,113,207, 61,247,220,234,156,156,156,255,153,205,230,117,126,196, 93, 26, 30, 30,254,254,255,254, +247,191, 8,181, 90,109, 61,122,244,232, 69, 97,187, 84, 42,157,220,178,101,203,230, 59,118,236,248, 17,192, 55,183,227,100, 17, + 66,212,248,167,138, 79,128, 69,216,239,143,179, 69, 8,145,254,253,247,223, 97, 45, 91,182,252,197,104, 52, 54,121,227,141, 55, +110, 76,155, 54, 77,174, 82,169, 84, 0, 24,181, 90, 93, 52,113,226, 68,211,220,185,115,223,171, 87,175, 94,167,253,251,247, 63, + 69, 8,177,216, 5,217,173,124, 12,227, 8,207,205,140, 60,236,220,199, 75, 39,140,123, 55,254,147,169, 73,215, 15,159,185,201, +115,114, 21,126,219,117, 26, 57, 5, 26,252,190,255, 12, 98,194,131, 24,137, 76,156, 18, 28, 87,191, 93, 73,198,153, 93,240, 50, + 66, 58, 69,229,128, 97, 24, 40, 20, 10,252,246,219,111,183, 76, 93,229,110, 90, 43,142,227, 16, 18, 18,226,115,118,131,128,128, + 0,108,221,186,213,237,220,139,238,166,244, 9, 14, 14,134,183,143, 13,134, 97, 16, 16, 16,128,189,123,247,130,101, 89,183, 83, + 3,185,110, 83, 42,149, 96,189,204,117, 37,112,238,218,181,203, 39,151,240, 27, 24, 24, 8,148, 85,253,123,126, 40,101, 50,236, +217,179,199, 99,156, 93,255, 7,218,231,123,245,197,185,119,239,222,114, 83,127,185, 78, 9,230,188,174, 84, 42,193,248, 32, 13, + 13, 13,109, 17, 31, 31,143, 67,135, 14, 97,213,170, 85, 97, 41, 41, 41,184,116,233, 18, 24,134,193,180,105,211,152,250,245,235, +139,179,179,179,209,166, 77, 27,172, 93,187,182,149, 90,173,166, 15, 12,197,191, 37, 88,196, 0, 30, 1, 16,137,178,102, 55,165, + 0, 66, 80, 54,147,134, 20, 64, 1, 0,185,125, 49, 2,208, 0,136,176,159,158,111, 47, 91,156, 5, 66,158,243,228,211,132,144, +230,118,110, 97,134,138, 72,167, 99,133,107,184,174,187,254,186,229,230, 0, 96,195,134, 13,194,203,172,125,106,106,234, 78,231, +200,249, 35,178,132,121,202,220, 60,211,174, 93, 52,101, 74,165,114,205,129, 3, 7,228,145,145,255,196,193,104, 52,162,180,180, + 20, 26,141, 6,165,165,165, 8, 10, 10,194,170, 85,171,228,157, 58,117, 90, 83, 90, 90, 90,203,126,211, 60,113,206,201,202,202, +138,182, 90,173,144, 74,221, 55, 81, 98, 89, 22,117,235,214,197,251,239,191,143,110,221,186,197,116,232,208, 97,142,139,208,186, +165, 43,169, 66,161,248,234,232,209,163, 81, 10,133, 2, 23, 47, 94, 68,122,122, 58, 70,141, 26, 85,149,231,121,220,188,121, 19, +151, 46, 93, 66, 70, 70, 6,150, 44, 89, 18,213,183,111,223,175,220, 8, 45,119,221, 83,223,120,251,237,183,235,132,134,134,178, +159,126,250,105,177, 86,171,253,194,190,125,194,252,249,243, 95,104,219,182,109,212, 43,175,188, 66,246,238,221,187,204,158,112, + 30,239,167,115,155, 44,123, 53, 31,236,153,239,156,203, 57,117,157,246,131, 16, 18, 3,192,200, 48, 76,177, 27, 78, 6, 64,112, +215,174, 93,223, 49, 26,141, 77,246,236,217,115,249,241,199, 31, 79, 0,144, 37,100,190,224,224, 96,229,156, 57,115,162, 83, 83, + 83, 47,116,236,216,177, 73,215,174, 93,223,201,203,203,155, 70, 8,201,115,106,179,229,224,228,121,252, 29, 19,219, 96,229,174, +253, 35,158,221,177,215, 36,121,247,205,143,110, 84,171,154, 88,242,247,197, 66,219,153,171,121, 40,213, 91,241,100,199,178, 9, +204, 91, 52,168,134,207, 87,236,193,176,183, 62, 16,255,178,114,233,211,151, 9,148,154,204, 51, 27,189,220,207, 59, 5,229,132, +163,138, 9, 98,177, 24, 79, 60,241, 4, 24,134,185,101, 46, 79,177, 88,140,253,251,247,163, 99,199,142, 16,139,197,120,249,229, +151,253,226,228, 56, 14, 93,187,118,117,204,163,232,204,231, 42, 26, 60,104,130,109,183,124, 29,114, 28, 88,150,245, 56,145,182, + 43,167,175,114, 73, 8,167, 55, 46,231,125,190,194,105,159,242,200,111,145,229, 47,167, 16, 78,142,227,208,170, 85, 43, 28, 63, +126,220,171,232,242,160, 47,203,197,189,168,168,232,197, 90,181,106,237, 90,176, 96, 65, 24, 0, 20, 20, 20, 56, 38,188, 23,137, + 68, 56,127,254, 60, 76, 38, 19, 62,254,248, 99,179, 90,173,126,133, 62, 71,148,243,110,114,122,211, 34, 0,218,142, 27, 55,174, +217,140, 25, 51,166,181,108,217,242,231,125,251,246, 45,103, 24,102, 3, 33, 36, 85,248, 29, 55,110, 92,202,140, 25, 51,166,141, + 29, 59,246,253,233,211,167,159,102, 24,102, 3, 0,184,174,219,203,146, 84, 23, 17, 23, 41,240,216,159,185,114,199,186, 91,119, +253,117,199,237, 16, 90, 0,144,154,154,202,216, 35,201, 56, 23,106,254, 10, 45,127,230,238,227, 56,110,248,180,105,211,162,189, +137, 44,141, 70,131,204,204, 76, 36, 36, 36,224,229,151, 95,142, 94,176, 96,193,112,171,213, 58,203, 11,173, 68, 36, 18,225,208, +161, 67,200,205,205, 69,195,134, 13,145,148,148, 84,238,128, 43, 87,174, 96,211,166, 77, 40, 46, 46, 70,211,166, 77,129,178,198, +221,110,209,168, 81,163,143,235,214,173,219,149,101, 89,171, 92, 46,199,223,127,255,141, 38, 77,154, 96,197,138, 21,168, 86,173, + 26, 20, 10, 5, 46, 92,184,128,134, 13, 27, 98,231,206,157,136,140,140, 68,227,198,141,173,106,181,122,119, 97, 97,225, 95,215, +175, 95,255,216, 83, 56,227,226,226, 62,122,253,245,215,165,153,153,153,252, 15, 63,252,176, 7,192, 30, 0,195, 63,248,224,131, + 33,221,186,117,139, 58,118,236, 88,201,225,195,135, 15,122, 16, 89,254, 56, 89, 86,215,151,146,205,102, 51,234,245,122,147,209, +104,180,176, 44,155,198, 48,140,201,102,179,213,242,100, 66, 12, 30, 60,184,122,126,126,254,176,183,222,122,235,154, 93,100,157, + 71, 89, 3,120, 0,128,213,106, 53,106, 52, 26,117,203,150, 45, 19,158,123,238,185,203,203,151, 47, 31, 54,120,240,224, 85, 63, +252,240,131, 6,128,222,149,176, 90,181,170,199, 69, 34, 86,162, 45, 13,187,186,122,213, 55,111,111, 90, 63,188,234,205,155, 25, + 53,195, 35, 34,181,146,192,200,204, 85, 63,125,127, 4,128, 41, 51, 79,141,147, 87,178, 33, 22,139,112,246,102, 9,218,118,239, + 39,190,124,113,106,107, 0, 27,233,183,220,221,255, 88, 20, 38,161,222,177, 99,135, 87, 71,107,255,254,253, 16,139,197,144,203, +229,152, 59,119,174, 87, 82, 65, 24, 8,110,145, 47, 49, 35, 76,142,238,205,125,226,121,222, 49,209,187,235,242,197, 23, 95,224, +173,183,222, 42,119, 13,187,216, 96,124,113,122, 10, 95, 66, 98, 34,114,115,114,202,109,243,103, 82,122,155,205, 6,177, 88,140, +197,139, 23, 35, 53, 53, 21, 27, 54,108,240,250,251,196, 19, 79,128,101, 89,226,207,253,108,213,170, 21,204,102,179, 35,204,231, +207,159,119,203,187,112,225, 66, 95,193,236, 5, 96, 98,147, 38, 77, 84, 29, 58,116,192,174, 93,187,240,244,211, 79, 27,205,102, +243, 69, 0,232,217,179,103,237, 5, 11, 22, 72,143, 30, 61,138,240,240,112,241,141, 27, 55,190, 3,109, 32, 79,113,151,225, 78, +139, 8,239,188, 25, 51,102, 76,115, 21, 49,206, 16,246, 51, 12,179, 97,250,244,233,169,206,162,200,121, 93,112,157, 92, 68, 92, +138,179, 35,229, 44,162, 60, 9, 40,151,247,173,243,241,121,110,133,150, 61, 98,237,157, 93, 32,161,240,245, 37,178,188,124, 57, +150, 67,112,112,112,143, 39,159,124,210, 33,114, 12, 6,131, 67, 96, 9, 34, 75, 88,191,112,225, 2,154, 53,107, 38, 9, 14, 14, +238, 81, 80, 80, 48,203, 15, 17,135, 42, 85,170, 32, 63, 63, 31,167, 78,157, 66, 66, 66, 2, 44, 22, 11, 54,111,222,140,146,146, + 18,136,197, 98, 72, 36, 18,152,205, 94,219,110,163,110,221,186, 79, 44, 91,182,172,217,210,165, 75,139,132, 47,186,159,126,250, + 9,132, 16, 68, 70, 70, 66,167,211, 33, 39, 39, 7,127,253,245, 23,172, 86, 43, 2, 3, 3,145,156,156, 44,237,211,167, 79,235, +137, 19, 39,138,189, 8,173, 86, 79, 63,253,116,176, 74,165,194,155,111,190, 73,204,102,243,116,251,182,143, 70,140, 24, 17,158, +150,150,102,122,245,213, 87, 15,153,205,230, 79, 5, 51,209, 89,224,120, 72, 88,143, 78,150,197, 98, 17,238,233, 53,141, 70,131, +136,136,136, 4,103,103,203,147, 24,220,187,119,111, 43, 0,162,201,147, 39, 7, 0,200,113, 14,131,201,100,130, 70,163,129, 86, +171,181,148,148,148,228,142, 30, 61,218,186,124,249,114,145,253,156,179,238,132, 22,195, 60, 97, 82,169, 20, 82, 66, 68, 31, 44, + 90,180, 40,176, 91,183,110,108, 96, 96, 32, 74, 75, 75, 85,191,255,241, 71, 96,167, 14,173,147,167,205,248,100,139, 42,190, 97, +206,222,191,175, 34, 35,187, 4, 38,139, 5,201,177,193,101,126, 24,197, 93,135,189, 35,139,195,209,114, 22, 21,187,118,237, 66, +247,238,221, 29,207,186, 68, 34, 41,231,124,249,226,228, 56, 14,221,187,119,191,197,225,217,177, 99,135, 91,247,201, 23,156, 69, +145,171, 56,114, 39,192, 88,150,245, 57, 96,160,224,230,185, 19, 91,206,174,190,139,120,243, 85,205, 1,142,227, 48, 98,196, 8, +136,197, 98,140, 25, 51, 6, 28,199,161,113,227,198,224, 56, 14, 45, 91,182,132, 88, 44, 70,199,142, 29, 43, 28,247, 3, 7, 14, +160, 73,147, 38,142, 48, 53,110,220, 24,205,155, 55, 7,199,113,104,211,166, 13,196, 98, 49,186,118,237,234, 15,231,251,165,165, +165,141, 2, 3, 3,113,225,194, 5,136, 68, 34, 48, 12,115, 9, 64, 35, 0,136,141,141,189,172,211,233,170, 27, 12, 6,188,254, +250,235,140,201,100,106, 56,102,204,152, 15, 12, 6, 3, 21, 90, 20,119, 13,174, 90,196, 9,250,177, 99,199,190,207, 48,204, 6, +193,161,114,117,158,220,173,187, 41,155, 4, 7,234,176,253, 89,109,238, 34,226,242, 24,134, 57, 76, 8,233,233,233, 92, 0, 38, + 23, 97, 85,174,234,208,185,218,208,167,163, 37, 20,190,254, 10, 45, 95, 48, 24, 12,143, 68, 69, 69,121, 20, 89,206,191, 38,147, + 9, 73, 73, 73, 48, 24, 12,143, 84,244,165, 17, 27, 27, 11,179,217,140,111,190,249, 6, 18,137, 4, 18,201, 63,250,194,100,242, +110, 22,157, 57,115,230,218,129, 3, 7,154, 52,109,218, 52,116,237,218,181,121,237,218,181,139,236,214,173, 27,228,114, 57,244, +122, 61, 44, 22, 11, 90,180,104,129,186,117,235, 34, 61, 61, 29,191,255,254,123,126,173, 90,181, 34, 14, 30, 60,200,103,103,103, + 95,247, 66,221,165, 83,167, 78, 96, 24, 6,127,252,241, 71, 62,128,195, 50,153,108,211,212,169, 83, 67, 77, 38, 19, 63,104,208, +160, 27,133,133,133,111, 1, 48, 75,165,210,249,237,218,181,107,185,109,219,182, 31,121,158,159, 91,209,140,234,122,111,181, 90, + 45, 2, 2, 2,252, 25, 74, 66, 92, 88, 88,216, 0, 0,148, 74,101, 24,128,203,142, 28,174,215,151, 19,195, 38,147,201, 16, 22, + 22,166, 4, 0,251, 57, 98, 15,156,145, 86, 43, 86, 95,191,126, 53,200,185,253, 92, 72, 72, 8, 6, 62,247, 28,251,120,171, 86, +210, 70,143, 60,210,117,252,103, 75, 87, 84, 9, 87,153,146,171,132,195, 98,179, 96,219,150,205, 60,225, 45, 91,104,177,115,111, +132,150, 32, 54, 92, 29, 45,177, 88,140,157, 59,119,222,178, 77, 34,145,224,235,175,191,246, 75, 24, 8,162,202, 83,213,153, 75, + 85, 23,227, 75,192,136,197, 98,136, 68, 34, 44, 94,188, 24, 60,207,227,237,183,223, 46, 87,157,232,204,239,151,157,231, 36, 2, +235,126,196, 3, 48, 33,125,182,204,113,190,107,120,237,231,248,229,146, 45, 88,176,192, 47, 71,171,103,207,158, 62,133,171,115, + 13,131,115,184,142, 31, 63,238,150,119,209,162, 69, 62,239,167,205,102,195,198,141, 27, 29, 34, 85,192,248,241,227, 95,151, 74, +165,209,187,119,239, 70,118,118, 54,180, 90, 45, 52, 26, 13, 90,180,104,145,204,178,236,223,217,217,217,105,103,207,158,125,146, + 62, 61, 20,247,208,209, 50, 78,159, 62,253,244,244,233,211,221, 58, 86,174,206,146, 55,231, 73, 16, 88,118, 65, 20, 41,136, 55, +148, 53,171, 57,236,235, 92, 0, 82,215,170, 67,175, 70,144,139,138,156,232,174,240,245,167,250,208, 79, 59,157, 99, 24, 6, 6, +131,193,173,192,114, 22, 7,102,179, 25,133,133,133,176,217,108,183, 61,214,151,187, 47, 89, 95, 66,235,212,169, 83, 47, 13, 25, + 50, 36, 51, 56, 56,184, 81, 94, 94, 94, 46,207,243, 29,247,239,223, 31,201,113, 28, 84, 42, 21, 84, 42, 21, 54,109,218, 4,133, + 66,129, 17, 35, 70,228,218,108,182, 93, 65, 65, 65,225,122,189,254, 68,118,118,246,120,143, 10, 70, 44,238,218,166, 77, 27, 28, + 61,122, 20, 69, 69, 69, 91, 1, 52,126,254,249,231,187, 87,173, 90,149,153, 58,117,170,225,202,149, 43,115, 1,228, 42,149,202, +101,203,150, 45,235,208,180,105,211,160, 65,131, 6, 97,231,206,157,139, 0, 24,252,141,179, 86,171, 45, 39,176,212,106, 53, 74, + 75, 75,161, 84, 42,173,126,222, 51, 49,254,233, 97, 8, 66,136, 35,109,236,110,150,144, 62,132,227, 56,161, 87,163, 39,145, 5, +165, 82, 57,121,233,210,165,114,215, 78, 10, 54,155, 13, 57, 57, 57, 80,169, 84,248,112,252,120,201,164, 81,175, 52, 17, 5, 70, +239,103, 89, 6, 38, 51, 41, 38,188,105,179, 54,167,255,110,224, 99, 90,242,220, 3, 8,194,160,119,239,222,183, 84, 23, 74, 36, + 18,108,221,186, 21,125,251,246,117,124,184, 52,109,218,212,231,199,149, 32, 12,122,245,234,229,112,134, 54,111,222,236,182,218, + 79,112,164,252, 17,132,194,177, 35, 71,142, 4,199,113,248,252,243,207,241,206, 59,239,128,101, 89,204,158, 61, 27, 44,203, 98, +194,132, 9,126,139, 76,103, 1,147,246, 73,217,111,252, 59,106, 20, 44,140, 6, 0, 4,169, 84, 66,132, 42, 84,246,112, 28,231, +112,178, 30,121,228, 17,136,197, 98,180,108,217, 18, 28,199, 57,156,172, 30, 61,122, 56,223, 71,226, 15, 39,199,113,184,120,241, +162, 35,204, 45, 91,182, 44,231,100,113, 28,135,158, 61,123,250, 19,204,105, 33, 33, 33, 19,235,214,173, 91,111,206,156, 57, 98, +145, 72,132, 78,157, 58,213,142,137,137,185,110,181, 90,195, 39, 79,158,172,112,115,142, 28, 64,163,122,245,234, 41,233, 83, 67, +113, 23, 29,173,137,110,118,133, 58,183,185,170,192,135,228, 6,231,227, 5, 14, 87,113,100,119,200,118,249,226,114,119,174, 47, +112,130,130,244,102,169,251, 35,180,236,182,179,215,139, 41, 20,138,147,185,185,185, 45,229,114,121, 57,145,229, 78,112,137, 68, + 34,100,103,103, 67,161, 80,156, 52, 26,141,149,150,136,190,170, 14, 1, 24, 46, 93,186, 52,202,105,189,115,143, 30, 61,126,216, +186,117,107,236,182,109,219,112,240,224, 65, 68, 70, 70, 98,193,130, 5, 89, 57, 57, 57, 47, 1,216,154,159,159,239,243,186,213, +171, 87,111, 16, 24, 24,136,189,123,247, 2,192, 78, 0,175, 12, 27, 54,140,177, 88, 44, 88,184,112,161, 22,192, 31, 33, 33, 33, + 27, 87,173, 90,213,164, 81,163, 70,210,109,219,182,169, 15, 30, 60,248,167,159, 34,203,198,243,252, 45, 2,203,249,158, 6, 5, + 5,249,227,104, 89,130,131,131, 79,169,213,234,126,122,189, 94, 45,147,201,130,212,106,181,209, 89, 96, 9,252, 28,199,137, 47, + 94,188,152, 9, 32, 57, 56, 56,248, 20, 60, 84,115,114, 28,215,169, 83,167, 78,156,107, 26,228,228,228, 32, 59, 59, 27,102,179, + 25, 77,155, 54,101, 68,140, 69, 84,116,243,164,203,176, 14, 84,100,221, 35, 71,139, 8,207,186,208, 75,208, 93, 79,195,205,155, + 55, 59,214, 89,150,197,247,223,127,239,151, 40,218,186,117,171,215, 6,235, 46, 85,135, 62,173,113,225,248, 47,191,252,178,108, +122, 11,187,147,197,178, 44,198,142, 29, 11,153, 76,134,169, 83,167, 98,236,216,177,224, 56,206,103,213,161,179,128, 73, 28,163, +115,254, 56, 42,123, 40,236,237,161, 24,134,113, 22, 91,140,191,226,205,155,155,231, 79, 77,128, 51,167,112, 94, 64, 64,128,199, +134,240, 46,156,222, 46,240, 27,128,171,177,177,177,123, 91,182,108, 25,124,228,200, 17,204,158, 61, 91, 98, 52, 26,171,109,219, +182,205,113, 93,119,247, 75,171,213,202,233,147, 67,113, 55,220, 44, 47,187,243, 92,218, 87, 49,206,213,120, 94,126, 93,143,135, +211, 54,103,222, 60,134, 97, 44,110,174,151,231, 70, 92,185, 94,195,249,152, 60,143,142,150,175,194,194,151,224,242,199,209,210, +233,116,127,254,241,199, 31,205,159,123,238, 57,206, 91,181,161, 86,171, 69,116,116, 52, 78,159, 62,109,213,233,116,127,250,225, +148, 85,166,208,114,197,182,220,220, 92,145,197, 98, 65,205,154, 53, 17, 23, 23, 7,131,193,128,226,226, 98, 17,128,173,126,114, + 72,148, 74,165, 8, 0,138,139,139,129,178,174,166,181,107,213,170,133,163, 71,143,162,176,176,240, 23, 0,221, 38, 78,156,216, +180, 69,139, 22,146, 21, 43, 86,232,222,120,227,141, 95, 44, 22,139, 95, 74,131,231,121,147,213,106, 77, 98, 89,214, 92, 92, 92, +156,225,124, 63,163,163,163,195,148, 74, 37,147,147,147, 99,241, 71,104, 53,106,212,232,208,141, 27, 55, 48,121,242,228,188,105, +211,166,213, 42, 45, 45, 45, 42, 41, 41,177, 58,139, 45,131,193,192, 70, 68, 68,200, 22, 46, 92, 40, 7,128, 70,141, 26, 29,242, + 36,180,180, 90,109, 85,133,226,159, 15, 99,163,209,136,236,236,108,100,103,103, 35, 39, 39, 7,165,165,165, 72, 78, 78,134, 78, +167, 75,160,197,204,191, 38,180,202, 85,159, 57, 63,223,206, 47,242,138, 60,235,206, 2,166,119,239,222,142,182, 93,130, 67, 38, + 44,171, 87,175,118,109, 96,238,151,208,250,242,203, 47, 49,114,228, 72, 4, 4, 4, 96,206,156, 57,229,170, 14, 93,197, 1,207, +243,140, 63,113, 79,122, 79,143,236,249, 97, 16,139,197, 8,127, 35,167, 92, 21,157, 27,193,225, 87, 56,167, 77,155, 86, 41, 85, +135,206,156, 9, 9,101,143,202,226,197,139,209,175, 95, 63,236,222,189,251,182,171, 14, 83, 82, 82,126,218,176, 97, 67,240,153, + 51,103,160, 86,171,145,151,151, 7,163,209,136,244,244,116,143,181, 2,246,178, 60,128, 62, 57, 20,247,184,156, 58,124, 47,121, + 43,243,122,156,143, 23,184,223, 66,203, 31, 71,203,104, 52,206,121,243,205, 55,135,117,238,220, 57, 44, 40, 40, 8,153,153,153, +183,136, 44,141, 70,131,192,192, 64,232,245,122,172, 95,191, 94,109, 52, 26,231,248, 18, 7, 22,139, 5, 81, 81, 81,200,207,207, + 7,239,161,253, 52,203,178,144,203,229,208,104, 52,128,143, 70,230,238, 94, 24,102,179, 25, 22,139, 5, 22,139, 5,102,179,185, +162, 51,114, 43,148, 74,165, 32, 60, 0, 64, 91,165, 74,149,154, 1, 1, 1,184,118,237, 26, 80,214,179,175,115,247,238,221,197, + 5, 5, 5,228,213, 87, 95,221, 67, 8,121, 29,222, 71,199, 55,237,218,181, 43, 9, 0,228,114,249, 5, 0, 72, 79, 79,183, 20, + 23, 23,151,115, 10, 21, 10, 5,233,219,183,111, 44, 33, 4,187,118,237, 74,146, 72, 36, 4,158,123, 53, 26,214,173, 91,119, 38, + 56, 56,120,249,140, 25, 51,158, 75, 77, 77, 61,221,160, 65,131, 36,173, 86,155,171,215,235,245, 6,131,129,136, 68, 34, 73,104, +104,104,192,150, 45, 91, 46,239,223,191,191,179, 74,165, 90,190,110,221,186, 51,158,156, 55,165, 82,153,174,211,233, 18,133, 52, +117, 22, 89,217,217,217, 32,132,224,234,213,171, 80, 40, 20, 55,124, 85,235, 82,220, 61, 8, 31, 85,174,206,139,235, 54,127, 69, +150,179, 48,216,178,101,139,215, 49,180,252,229,116, 22, 69,239,188,243, 14,230,207,159,127,139,163, 53,117,234, 84, 0,192,248, +241,227,253,110,163, 37,184, 87,217,243,195, 16, 51,178,176, 92,216, 1,128, 17,194, 87,177,103, 30, 28,199, 97,242,228,201,183, + 52, 82,119,174,218,243,179,138,175, 92, 56,115,115,115,193,113, 28,194,194,194, 48,112,224, 64,116,237,218,213, 81, 5, 89, 81, +222,115,231,206,237,125,239,189,247, 26,166,164,164, 96,202,148, 41,133, 33, 33, 33, 65,175,189,246, 26, 87, 92, 92,204,120,115, +180,168,208,162,160,168, 4,161, 37, 60, 96,254,246, 58,244, 80, 88,118, 70,249,177, 54, 74,116, 58,221,192, 46, 93,186,172, 93, +185,114,165,188,122,245,234, 56,119,238, 28, 10, 11, 11, 97, 50,153, 32,145, 72, 16, 27, 27,139,226,226, 98,124,255,253,247,122, +157, 78, 55, 16, 64,137, 15,206, 15,154, 53,107,246,213,172, 89,179, 2, 26, 55,110,140,194,194, 66,104, 52, 26,135, 16, 98, 24, + 6, 42,149, 10,114,185, 28,135, 14, 29,194,230,205,155,245, 0, 62,240,193,233, 78,205,193,108, 54, 59, 4,151, 31, 66,203,153, + 83, 41,184, 58, 58,157, 14, 0, 44, 85,171, 86,141, 1,128,171, 87,175, 2, 64, 90,114,114,242,196,234,213,171, 51,203,150, 45, + 35,132,144,205, 30, 68,150,131,147, 97,152, 66, 66, 72, 17,128, 24,147,201, 36, 1,128,146,146, 18,115, 68, 68, 68,148, 76, 38, +227,229,114, 57, 31, 16, 16,192,103,102,102, 90,173, 86,171, 4, 0,218,180,105, 99, 2,144,237, 50, 71,161, 51, 39, 79, 8, 81, + 47, 90,180,104,226,160, 65,131, 90,182,106,213, 42,101,232,208,161,167, 94,125,245, 85, 54, 46, 46, 46,180,180,180,212,112,233, +210,165,162,207, 62,251,172,244,192,129, 3,157,197, 98,241,245, 69,139, 22, 77, 4,160,102, 24,134,119,199,105,181, 90,255,220, +182,109,219, 75,169,169,169, 92, 70, 70, 6,114,114,114, 28, 34, 43, 39, 39, 7,117,235,214,197,254,253,251,109,102,179,121, 91, + 5,238,103,101,129,114,150,125,132, 16,225, 89,247, 36,176,132,143, 41,127, 57,157, 69, 81,191,126,253,202,185, 88, 18,137, 4, +107,214,172,113, 91,110,184,121,174,202,197,221,121,140,175,247,222,123,175,156,104,251,240,195, 15, 61, 22,103,190,238,167,192, + 83,178, 56,174,124,175, 67, 15,207,185,183,112, 10,101,167, 88, 44,198,135, 31,126,232,183,163,133, 91,219,104,221,194, 41,196, +189, 93,187,118,208,233,116, 14, 33,235,201,209,242,117, 63,109, 54,219,200,249,243,231, 19,149, 74,245,152, 90,173,126,254,198, +141, 27, 75,116, 58,221,163, 37, 37, 37, 94, 29, 45,163,209, 40,163,207, 17,229,196,221, 25,159,235,225, 17, 90,246,151, 36,170, + 86,173, 90,110,238, 44,150,101,203, 45, 21,105,103, 96,199,150,139, 23, 47, 62,245,248,227,143,255, 56,114,228,200,160,198,141, + 27,139, 19, 19, 19,161,213,106,113,237,218, 53,156, 62,125,218,186,110,221, 58,181, 78,167,123, 30,128, 63,189,206,150,158, 57, +115,102,115,183,110,221, 38,180,104,209,226,127, 31,125,244,145,168,118,237,218, 40, 41, 41, 65,104,104, 40,162,162,162,112,254, +252,121,172, 95,191,222,150,159,159,255, 21,128, 73,112, 83,135,234,235,131,223,108, 54, 99,192,128, 1,224,121, 30,115,231,206, +133, 63, 19, 42, 59,193,108, 54,155, 9, 0,198,222,158, 75,103, 31, 93, 26,151, 46, 93, 2,128,235, 73, 73, 73, 65, 0,176,109, +219, 54, 6,101,227,107,249,243,133, 79, 8, 33, 14,103,171,110,221,186,215, 92, 11, 71,193,201, 18, 92, 48, 95,225,102, 24,198, + 64, 8,201,213,233,116,221,222,121,231,157, 9, 95,126,249,229,115, 95,126,249,229, 45,199,169, 84,170,229,179,103,207,158,244, +236,179,207,230, 50, 12,227,177, 29,153, 86,171, 29,255,226,139, 47, 62,123,242,228,201,160,128,128, 0,104,181, 90, 20, 20, 20, +192,108, 54, 35, 57, 57, 25,185,185,185, 88,186,116,105,169, 94,175,255,152, 62,142,255, 14,156,133,129, 39, 87,203, 15,145,229, +209,213,249,237,183,223,220,142, 81, 85, 81, 78, 87,177,225,239,216, 86,222, 62,138,132, 97,105,220, 13, 25, 81,193,114,237, 22, + 94,142,227,240,233,167,159, 58, 6,109,117,231,100, 85,196,209, 18, 56,195,194,194,202,108,114,133, 2, 60,207,163,103,207,158, +119,194,203, 3, 24,225, 52,226,251,180,209,163, 71, 79,172, 91,183,110,109, 0, 50,231,123, 80, 65, 23,159,130,130,194,151,208, +178,217,108,233,117,234,212, 41, 87,192,249,154,204,212, 98,177,164,251,121,221,205, 90,173, 54,121,246,236,217,111, 42,149,202, +206, 58,157,174,161,189,224, 56,169,213,106,183, 25,141,198,121,168,216, 36,208,121, 0,134, 31, 56,112, 96,110,183,110,221,166, +118,236,216,241,153, 81,163, 70, 49,132, 16, 44, 92,184,144, 92,185,114,101,181,221,197,186,114, 59, 55, 41, 44, 44,236,204,247, +223,127, 31,189,118,237, 90, 88, 44, 22,204,155, 55, 15, 65, 65, 65,103, 10, 11, 11,253,165,200,221,190,125,251, 15,173, 90,181, +122, 97,255,254,253, 75, 1,156,216,185,115,231,146,214,173, 91,191,184,127,255,254,159, 0,156,254,235,175,191,150,180,104,209, +226,197,195,135, 15,175, 2,112,188, 2,133,175,195,217,178, 90,221,215, 52,122,112,178,188,113,170, 9, 33,230, 33, 67,134,140, +122,246,217,103,191, 57,124,248,240,163,197,197,197, 13, 1, 32, 36, 36,228,100,243,230,205, 15,173, 92,185,242,188,221,201,242, +213, 88, 63, 79,171,213,246,109,216,176,225, 47, 83,166, 76, 81,166,164,164,112, 53,107,214, 68, 90, 90, 26, 78,157, 58,101,253, +238,187,239, 52,122,189,190, 55,128, 34,250, 56,254,123, 66,139, 16,130,144,144,144,114, 31, 81, 66,151,255,138, 86, 23, 58,191, +152,133,169,122, 92,121, 61,113,122, 27, 54, 65, 64, 96, 96,160, 99,112, 83,127,154, 44,240,188,247,241,216, 8, 33, 14, 78, 97, +241, 67,100,249,236, 33,104,159, 2,199,111, 78,127,134,119, 80, 42,149,176, 88, 44, 14, 94, 63,122,126, 86, 84, 45,254, 6,224, + 55,139,197,114, 9, 64, 13, 42,174, 40, 40,238,162,208, 42, 42, 42,106,118,151,175,173, 54, 26,141,147,140, 70,227, 36, 97,131, +193, 96,184, 83,206, 43, 0,158,221,190,125,251,172,237,219,183, 11,245, 8,147,225,123,190, 68,175, 56,119,238, 92,170, 88, 44, +254,122,249,242,229, 45, 8, 33, 8, 14, 14, 62,144,150,150,246, 90, 69, 56,108, 54,219,144,253,251,247, 15,131,189, 45,147,217, +108, 30,178,119,239,222, 55, 81, 54, 31, 19,108, 54,219,144,131, 7, 15, 58,214, 43,248,162, 36,132, 16, 35, 33,164,138,135, 67, +140, 21,116,224, 4,103,203,180,114,229, 74, 13,128,191,241,207, 56, 89, 22,251, 98,112,169, 46,244,134,191,180, 90,109,205, 15, + 63,252,112,154, 72, 36,234,164,213,106,227,148, 74,229, 77,171,213,250,167, 78,167,251, 0,101,115, 84, 81,252, 75, 48,153, 76, + 25,117,234,212,225,220,125, 64,121,123,145,123,251,176,178,217,108,233,181,106,213,242,249,113,230,134, 51,195,139,104,184,158, +156,156,204,250,203, 37,192,108, 54,231,122, 11,103,114,114, 50, 42,202,233, 43,238, 73, 73, 73,110,227,238, 67, 16,122,140,187, +213,106,189, 45, 78,111,247,211, 27,244,122,125, 81,100,100,164,198, 96, 48,136,141, 70,163,216,106,181,150,179, 31,229,114,121, +158, 94,175,167, 15, 15, 5,197,157, 8,173,251, 28, 71, 80, 54,189, 68,101,193,120,242,228,201, 23, 28,246, 84,110,238,237,242, +184, 42, 73,141,143,245,138, 8,163, 74,119,132,236, 66, 74, 87, 73,116,249, 26,141,230, 85, 97, 69,104, 3, 66,241,239,163,160, +160,224,177,202,230, 44, 44, 44,172,244, 15,181,252,252,252,150,119, 33,238,205, 30, 86, 78,111,200,204,204,124,204,135, 16,163, + 15, 14, 5,133,159, 96,233, 45,160,160,160,160,160,160,160,160,184, 59, 96, 80,214,115,192, 29, 42,210,155,160,243,109, 92,123, + 27,229,164,156,148,147,114, 82, 78,202, 73, 57, 31, 58, 78, 95,220, 15, 76,111,198,123,209,206,177, 51,229,164,156,148,147,114, + 82, 78,202, 73, 57, 41,231,195, 8, 66, 8,173, 58,164,160,160,160,160,160,160,160,184, 91,160, 66,139,130,130,130,130,130,130, +130,130, 10, 45, 10, 10,138,251, 20,181,171, 86,173,122,182,118,237,218, 25, 0, 6,223,229,107, 13,108,209,162, 69,129, 76, 38, +219, 2,160, 54,189,245, 20, 20, 20, 84,104, 81, 80, 80, 60,208, 34,171, 97,195,134,123,206,157, 59, 87,119,219,182,109, 85,226, +226,226, 62,185,155, 23,107,214,172,217,204,221,187,119,135,253,241,199, 31, 93, 98, 98, 98,118,221,166,216,170, 93,173, 90,181, +179,181,107,215, 78, 7, 48,176,146,131, 56,184,101,203,150,133, 82,169,116, 51, 21,130, 20, 15, 1, 26, 0,104, 72,133, 22, 5, + 5, 5,197, 93, 20, 89,251,246,237, 11, 55, 24, 12, 56,119,238, 28,242,242,242,142,223,205, 11, 94,184,112,161,104,223,190,125, +136,143,143,199, 79, 63,253, 20,153,148,148,180,187,130,130,166,118,195,134, 13,247,156, 61,123,182,238,182,109,219,226,162,162, +162, 62,171,204,240, 61,250,232,163, 83,119,239,222, 29,186,101,203,150,174,145,145,145,183, 43, 4, 41, 40,254,203,144, 1,120, +129, 97,152, 67, 13, 26, 52, 56,153,146,146,114,130, 97,152,253, 0,250,225,193, 29,187,211, 63,108,216,176, 97,231,134, 13, 27, +118,210, 60, 66, 65, 65, 81, 9, 72, 73, 73, 73,209,106,181, 90,146,151,151, 71, 62,255,252,115, 18, 22, 22,102, 6,240, 39,128, +117,110,150,247, 1,168,252,228, 86,217,143,119,199,243,103, 88, 88,152,249,243,207, 63, 39, 87,175, 94, 37,103,206,156, 33,181, +107,215,214,251, 41,104,106, 55,108,216, 48, 95, 8,243,166, 77,155, 8,199,113,155, 43,243,166,168, 84,170,211,187,118,237, 34, + 87,174, 92, 33, 91,182,108, 33,209,209,209,185, 84,108, 81, 60, 32, 72, 4, 48, 51, 48, 48,176,176, 87,175, 94,228,219,111,191, + 37,235,215,175, 39,191,252,242, 11,153, 51,103, 14,233,208,161, 3,145, 74,165, 25, 0,198, 0, 8,121, 88,180, 8, 33,164,108, + 86,251, 13, 27, 54, 16, 0,237, 1, 32, 53, 53,149,138, 45, 10, 10,138, 59,197, 62,157, 78,215, 82,167,211,161,180,180, 20, 85, +171, 86,133, 88, 44,118,123, 96,110,110, 46,246,238,221,139, 17, 35, 70,156,201,206,206,110, 11,239,243, 94,134, 54,105,210,100, +223, 95,127,253, 85, 59, 40, 40,200,177,145,231,121,152,205,102, 88, 44, 22,152,205,102, 24,141, 70, 24,141, 70, 72,165, 82,200, +229,114,132,133,133,157,130,247, 42, 12,135,251,166,215,235,113,236,216, 49, 12, 26, 52, 40,175,160,160,160, 45,128, 11,149,120, + 95,106, 71, 69, 69,237, 90,186,116,105,100,114,114, 50,110,220,184,129,151, 95,126, 57,255,250,245,235,109, 42,249, 58, 20, 20, +247, 18, 99,159,122,234,169,169,209,209,209,108,131, 6, 13, 16, 27, 27, 11,163,209, 8,189, 94, 15, 66, 8, 56,142, 3, 33, 4, + 37, 37, 37,216,181,107, 23,254,250,235, 47, 99, 81, 81,209,247, 0,230, 1,184,232, 36,178, 30, 56, 45, 82, 78,104,165,166,166, + 50, 52,175, 80, 80, 80, 84, 18, 78,150,148,148, 52, 48, 26,141,208,106,181,126,157,112,245,234, 85, 12, 30, 60,248, 76,118,118, +246,227,112, 63,169,188,170, 73,147, 38, 7,119,237,218, 85,219, 96, 48, 64,173,246, 61,239,188, 84, 42, 69, 64, 64, 0,194,195, +195,247, 3,104,229,233, 75,188, 65,131, 6, 71,246,239,223, 31,166,215,235,113,252,248,113, 12, 28, 56,208, 92, 88, 88,184, 7, +128,167,192, 23,162,108, 30,213,235,110,246, 37, 0,120,211,254,133,239, 14,202,200,200,200,214,203,150, 45,147, 84,175, 94, 29, + 58,157, 14,253,250,245, 43,188,112,225, 66,115, 0,215,104,214,161,184, 15,113,225,220,185,115,181,108, 54, 27,242,243,243, 97, + 52, 26,161,211,233, 28, 66, 75, 36, 18,129, 16, 2,171,213,234,248, 48, 58,122,244, 40,182,109,219, 70,174, 94,189,250,145,253, + 89,122, 32,181, 8, 21, 90, 20, 20, 20,119, 11,181,107,213,170,117,252,247,223,127, 15,144, 72, 36, 88,191,126, 61, 62,250,232, + 35, 75, 97, 97,225,110, 87,241, 18, 29, 29,157,178,100,201,146,164,228,228,100,156, 56,113, 2, 79, 63,253,244, 7, 0,166,185, +225,124, 95,173, 86, 79, 53,155,205, 56,126,252, 56, 94,124,241,197,107, 57, 57, 57,167, 93, 69, 76, 82, 82, 82,155,207, 62,251, + 76,220,180,105, 83,168,213,106, 60,243,204, 51,186,243,231,207,183, 0,112,218, 67, 88, 63, 43, 44, 44,124,199,102,179,161,180, +180, 20,241,241,241,144, 72, 36, 94, 35,167,215,235,145,152,152,184, 63, 47, 47,239, 22,241, 22, 30, 30,190,253,198,141, 27, 29, +228,114,185, 87, 14,179,217,140,244,244,116, 72,165, 82, 24,141, 70,212,168, 81,227,123, 0, 67,104,214,161,184, 31,133,214,223, +127,255, 93,235,231,159,127, 70,147, 38, 77, 80,175, 94, 61,104, 52, 26,135,232, 50,153, 76,176, 88, 44,183,156,164, 86,171,241, +246,219,111, 95,132,189,250,252, 65, 21, 90, 66,195,180,137, 66,157,104,106,106,106, 59,154,103, 40, 40, 40,238,180,224,189,120, +241, 98,227,206,157, 59,239, 94,189,122,117, 68,143, 30, 61, 80,163, 70, 13,241,147, 79, 62, 25,169,211,233, 58, 57, 31,152,147, +147, 19,250,226,139, 47, 30,185,121,243,102,146,125, 83,115, 15,156,205,131,130,130,112,245,234, 85, 65,100, 53,131, 75, 53,163, + 84, 42,221,252,247,223,127,139,165, 82, 41, 14, 31, 62,140,193,131, 7,231, 95,187,118,205, 87,181, 92,136,201,100,130, 72, 36, + 2, 0,164,167,167,251,140,220,141, 27, 55,192,243,188,209,221, 62,150,101,101, 71,143, 30, 69,149, 42, 85,188,114,176, 44,235, + 42,232,138,105,182,161,184, 79, 97, 49,153, 76,104,214,172, 25,174, 93,187,134,163, 71,143, 58, 4, 87,126,126, 62, 50, 51, 51, +203, 29,124,232,208, 33, 28, 59,118, 12,109,219,182,117,229,121, 32,181,136, 67, 57,110,216,176,161,157, 61,114, 59,105,158,161, +160,160,168, 36,212,174, 82,165,202,174,165, 75,151, 70,198,198,198,162, 67,135, 14, 55,179,179,179,171,185, 57,110, 29, 33,164, +247,213,171, 87, 81,189,122,245,245, 0,250,220,206, 49, 9, 9, 9,121,135, 15, 31,142, 56,115,230, 12, 6, 14, 28,152,103,111, +243,229,171,237, 83, 82,221,186,117, 15,111,217,178, 37,140,101, 89,156, 62,125,218,159,170,195, 52,148,181, 47,185,238,102, 95, + 2,128, 15, 1,132,121, 56, 87, 89,171, 86,173,214, 71,142, 28,145, 48, 12,131,180,180, 52,161,234,176,153,157,151,130,226,126, + 67,223, 42, 85,170,124, 55,108,216,176,224, 22, 45, 90, 32, 61, 61, 29, 25, 25, 25, 40, 42, 42, 66,227,198,141,145,146,146,130, + 43, 87,174, 96,243,230,205, 56,118,236, 24,100, 50, 25,226,227,227, 17,184,252,103,124,205,224, 12,128,148, 7, 85,139,220,139, +185, 14, 41, 40, 40, 40,106, 75, 36,146,205,113,113,113,185,112, 63, 46, 85,232, 51,207, 60,147,105,179,217,200,149, 43, 87, 8, +202,122, 15,194,131,208, 34, 87,174, 92, 33,209,209,209, 87, 1,132,186, 57,102,112, 76, 76,204, 77,133, 66,113, 10, 21, 28,214, +161,102,205,154,121,231,207,159, 39, 55,111,222, 36,127,252,241, 7, 9, 15, 15,191, 27, 61, 2,107,215,169, 83, 39,191,180,180, +148, 24, 12, 6,178,107,215, 46,146,144,144,144, 7,218,243,144,226,254, 71, 16,128,201,201,201,201,134, 89,179,102,145,205,155, + 55,147,197,139, 23,147,169, 83,167,146, 81,163, 70,145,150, 45, 91,146,150, 45, 91,146,126,253,250,145,119,222,121,135,116,239, +222,157, 4, 6, 6,150, 0,120,242, 65,190, 41, 84,104, 81, 80, 80,252, 27, 72, 0, 48,199, 46,168,214, 61,243,204, 51,153, 70, +163,145,100,100,100,144, 53,107,214, 16,148, 13,221,224, 14,239,103,103,103,147,236,236,108, 97,104,132,171,248,103, 88,135,111, +237,188,119, 36,130, 18, 19, 19,243,142, 28, 57, 66,210,210,210,200,166, 77,155,136, 93,176, 85, 26,228,114,249, 22,181, 90, 77, + 12, 6, 3,217,190,125, 59, 29,222,129,226, 65, 68, 20,128, 5,245,235,215,183,204,157, 59,151,172, 91,183,142,124,254,249,231, +164,111,223,190,100,204,152, 49,164,127,255,254, 36, 50, 50,210, 8, 96, 6,128,224, 7,253,102,220, 11,161, 69,103, 54,167,156, +148,147,114,186, 98,243,153, 51,103,136, 0,155,205, 70, 50, 50, 50,200,150, 45, 91, 72, 76, 76,204,105,148, 31, 79,203,153, 83, + 85,175, 94,189,115,231,207,159, 39, 55,110,220, 32,102,179,217,193,113,238,220, 57, 2, 96,103, 37,132,179,118, 92, 92, 92,238, +142, 29, 59,200,249,243,231, 73, 76, 76,204,205,202,140,123, 98, 98, 98,110, 94, 94, 30,217,190,125, 59,137,140,140,244, 37,178, +104, 94,162,156,247, 51,103, 34,128,101, 77,155, 54,181,205,159, 63,159,252,239,127,255, 35, 9, 9, 9, 54,251, 71, 81,220,195, +162, 58,157, 27,195, 83, 80, 80, 80,220, 43,200, 14, 28, 56, 0,153, 76,230,216,112,226,196, 9,231,113,180, 60,141,219,160, 62, +123,246,236,227, 61,122,244,216, 61,127,254,252,122,206,189,152,118,236,216, 1, 0,198, 74, 8,219,133,140,140,140,182,221,186, +117,155, 23, 30, 30,254, 72,118,118,246,132,202,140,120, 90, 90,218, 59, 13, 27, 54,156, 86, 90, 90,170,214,233,116,253, 64,199, +206,162,120,112,145, 6, 96,208,209,163, 71, 63, 57,122,244,232, 7, 0, 8,128, 41, 0,206, 62,108, 55,130, 10, 45, 10, 10,138, +123,141,193,175,190,250,170,107, 99,241,195, 0,190,240, 34,178, 4, 20, 93,187,118,173, 85,207,158, 61,135,161,124,239, 68,161, +113,122,101,224,130,201,100,234,234,218, 83,170,146,240, 83,118,118,246, 79, 52, 11, 80, 60, 68, 56, 13,160,255,195,124, 3,168, +208,162,160,160,184,215,184, 14,224,229, 59, 56, 95, 13,247,227,108, 81, 80, 80, 80,252,231, 64, 39,149,166,160,160,160,160,160, +160,160,160, 66,139,130,130,130,130,130,130,130,226,254, 2, 3,207, 61, 7,182, 85,128,231,118,122, 52,108,163,156,148,147,114, + 82, 78,202, 73, 57, 41,231, 67,199,233,139,123, 27, 30, 16,208,225, 29, 40, 39,229,164,156,148,147,114,222, 13, 78,198,190,176, +246, 69, 88,255, 47,199,157,249, 15,199,253, 97,225,124,224,240,111, 14,239, 32, 36, 4,143,178, 46,159, 20,255, 61, 56, 63, 32, +132,166, 19, 5, 5, 69, 5,203, 14,145,211,203,214,102, 95,240, 31, 44, 75,156, 69, 1,127,135,239,165,187, 17,247,135,153,243, +129,128, 55,161,245,136, 82,169,252, 72, 42,149, 38, 51, 12, 99,211,106,181, 39,141, 70,227, 34, 0,251,239,240,154,223, 70, 71, + 71, 15, 46, 40, 40,224, 89,150, 5,203,178, 96, 24, 6, 44,203, 66, 44, 22,235, 75, 74, 74, 84,183, 67, 26,217,160,239,187, 28, +195,140,180, 17,219,162,220, 83,235,167,250,218, 78,225,253,129,145, 72, 36, 79,133,133,133,133,228,229,229, 17,150, 45,107,202, + 39, 18,137,132,137,112,173, 37, 37, 37, 63,248, 75, 22, 26, 26,122, 40, 44, 44, 44, 68, 56,159, 97, 24, 20, 20, 20, 20,231,230, +230, 62, 10, 0, 1, 1, 1,123,149, 74,101, 56,199,113, 16,137, 68, 16,137, 68,208,233,116, 5, 5, 5, 5,143,211,164,184, 63, +177,106,213, 42, 81,183,184,151,107,112, 68,223,136,101, 73, 48,207, 51, 37, 86, 70,126, 98,115,198,183,151,253, 57,191, 95,191, +126, 54,122, 23,239, 29,164, 82,233,220,232,232,232, 87, 52, 26,141,142, 97, 24,194, 48, 12, 24,166,236, 59,203,245,215,102,179, +165, 23, 20, 20, 52,243,241,178, 21, 75,165,210,217, 49, 49, 49, 47,234,116, 58,157,157,207, 45, 47, 0, 88, 44,150,244,252,252, +252,102,126,149,245,145,145,139,228,114,249,243, 58,157, 78,203, 48, 12,239,226, 30, 56,191,204,175,228,231,231,183,241, 37, 12, +164, 82,233,188,232,232,232,151,236,113,119,132,243, 78,227, 30, 29, 29,253,162, 86,171,245,139,211, 75,220,111,225,188, 27,225, +252,143,114, 62,248, 66,171,113,227,198, 63, 31, 60,120,176,150, 88, 44, 6, 0, 24, 12,134,134, 11, 22, 44,120,225,189,247,222, +155, 1, 96,220,109, 94,111, 73,155, 54,109, 6,236,218,181,139, 93,183,110, 29,219,188,121,115, 48, 12, 3,155,205, 6,155,205, +134, 6, 13, 26,200,111, 55, 34,193, 74,197,216, 99, 91,191, 14,120,164,243,171, 35,115,129,169,190,182,123, 19,152, 0,198, 3, + 72,174, 96, 16,242,236,247,229,152, 7,177,177,143,101,217, 10,113,242, 60,127,181,168,168,168,149, 23, 1, 83,233,156,118,145, +245,116,155, 54,109,130,183,109,219,198,220,188,121,147,145,203,229,224,121, 30, 54,155, 13, 22,139, 5,245,235,215,175,144, 19, + 26, 18, 18,162, 26, 59,118,108,141, 39,158,120, 2,107,214,172,193, 11, 47,188,128,214,173, 91, 95,204,205,205, 5, 0, 40,149, +202,240, 51,103,206,212, 10, 11, 11,131, 78,167, 67, 73, 73, 9,186,116,233,130,130,130,130,251,250,225,122,172,113,252, 20,134, +101, 28, 99, 69, 17,171,173,240,224,137,204,241,119,202, 27, 22, 22,118, 76, 38,147, 69,251, 84,203, 78, 47, 50,131,193,144, 83, + 88, 88,216,196,199, 41,137, 0,122,137, 68,162,154, 28,199,213, 1,144,104,181, 90,163, 1, 64, 34,145,228,136, 68,162, 52,139, +197,114,222,100, 50, 93, 2,240, 27,188, 76,128,220, 45,238,229, 26,140, 85,247, 76,169,145,239,161,168, 62,163,182,238,202,216, + 11, 10,153,110, 83,183,184,151, 87,251, 43,182,254, 69,212, 6,176, 18,101, 19, 74,255, 15,101,227, 0,221, 9,226, 0,244, 70, +217,156,143, 73,102,179, 57, 31,192, 81,148,181, 67,185, 8, 32, 33, 50, 50,242, 39,158,231,141, 5, 5, 5, 47,195,205, 68,213, + 45,154, 86, 61,194,178,108,188,224, 9,240,196,150,126,224,104,122,165,188,160, 88,150,157,151,154,154,250,210,234,213,171, 21, + 71,143, 30, 85,212,171, 87,207,241, 65,196,243,252, 45,109, 76,146,146,146,124,185, 26, 28,203,178,115,159,121,230,153,231,150, + 45, 91,166,184,126,253,186,162, 74,149, 42, 14, 78,103,177, 37,160, 74,149, 42,254,230,253,111,187,118,237, 58,104,233,210,165, +226,245,235,215,203, 35, 34, 34, 16, 30, 30, 14,137, 68,114,203,177,143, 63,254, 56,239, 59,234,236,188, 62,125,250, 12, 90,177, + 98,133,226,224,193,131,138, 6, 13, 26, 64, 36, 18,221,113,220,251,246,237,251,220,207, 63,255,172, 56,121,242,164,162,102,205, +154, 16, 76, 5, 87, 62,150,101, 81,181,106, 85,191, 56,123,247,238,253,220,202,149, 43, 21,199,142, 29, 83,212,169, 83,199,113, + 63, 9, 33,183, 29,206,255, 56,231, 67,225,104, 73,205,102, 51,118,238,220, 9,150,101, 17, 22, 22,134,193,131, 7, 99,235,214, +173, 99,183,111,223,190,225, 54,156,173,111,237, 34, 75, 12, 0,191, 60,223, 23, 87,197,192,136, 92, 19, 36, 18, 9,174, 92,185, + 2,145, 72, 84, 97,107, 81, 38,147,189, 72, 8,249, 80,151,113, 88,166,215, 91, 96,200, 60,162,144,203,229,142, 23,128, 46,211, +190, 61,235,136, 66, 46,151, 95, 17,137, 68,147, 53, 26,205, 18, 79,124, 53,107,214,252,241,244,233,211,117,221, 61,184,222,160, +211,233, 80,173, 90,181,132,194,194,194,154,238,246,139,197,226,248,235,215,175, 71, 73,165, 82, 16, 66, 28, 15,177,235,175,240, +223,108, 54,163,126,253,250,102,111,215,244,198,105,181, 90, 17, 16, 16, 0,193,141, 50,153, 76,208,104, 52,190, 56, 25,137, 68, +242,148, 32,178, 0, 96,249,242,229,136,137,137, 65, 84, 84, 20,148, 74, 37,228,114,185,131,211, 95,136, 68, 34,116,235,214, 13, + 31,127,252, 49,102,204,152,129,209,163, 71,151, 43,104,197, 98, 49,194,194,194,240,199, 31,127, 64,165, 82, 33, 33, 33, 1,130, +192,191,175,109, 65,150, 9,219,127,228,134,195,161,237,222,177, 46,247, 88, 19,238, 75,251,171, 18, 44, 11,240,124,217,171,147, + 97, 64,172, 22,190,232,200,201,204, 9,126,220,207, 42,105,105,105, 81,254,222, 35,171,213,138, 42, 85,170,136,124, 28,214, 35, + 37, 37,229,151,161, 67,135, 74,106,214,172,201, 72, 36, 18,112, 28, 7,142,227, 4,129,158, 64, 8, 73,224,121,190,125, 78, 78, + 14, 89,176, 96,193, 39, 59,118,236,120, 18,192, 38,183, 5, 11,209, 55, 42, 53,242, 61,118, 31,199,163,207,116,126, 15,127,172, + 26,251,104,155,198, 60,130, 20,250,203, 0,254,203, 66,171,118, 74, 74,202,241,131, 7, 15, 6,152,205,102,180,104,209,226,192, +133, 11, 23,154,226,246, 70,112, 15, 5,240,217,184,113,227, 6, 13, 29, 58, 84, 20, 18, 18, 2,169, 84,138,210,210, 82, 92,190, +124,249,197, 31,126,248,129,124,245,213, 87, 95, 0, 8, 74, 75, 75,107,121,232,208, 33,116,232,208,225, 77, 0,111,223,170, 8, + 68,241,123, 15, 93,139, 18,214,123,119,107, 40,105,217,140,205, 41,115,113, 92,143, 38,224,109,124,250,161,191, 51,252, 17, 98, +159,244,237,219,119,224,234,213,171, 3, 1, 96,225,194,133,120,234,169,167, 16, 22, 22, 6,133, 66, 1,137, 68, 2,177, 88, 92, +238,215,199,203, 86, 4,224,147,254,253,251, 63,179,108,217,178, 32, 0, 88,182,108, 25,250,246,237,139,240,240,112, 4, 5, 5, + 65, 42,149, 66, 36, 18, 85,248,102,134,133,133,125,219,250,209, 71,135, 44, 93,186, 20, 0,240,193, 91,111,225,137,199, 30, 67, +160, 66, 14,133, 92, 10,225, 94, 72, 69, 98,116, 31, 49,210,167,190, 4, 48,235,169,167,158,122,118,197,138, 21, 65, 0,112,244, +232, 81,228,230,230, 34, 58, 58, 26,114,185, 28, 82,169,212, 17,103,134, 97, 32,151,203,253,138,251, 83, 79, 61,245,204,207, 63, +255, 28, 4, 0, 75,150, 44, 65,183,110,221, 28,113,151,201,100,144, 72, 36,229, 22, 87,209,233,142,243,201, 39,159,124,102,229, +202,149, 65, 0,240,195, 15, 63,160,115,231,206, 8, 13, 13,117,220, 79,129,171, 34,105,244, 31,231,124, 56,132,214,241,227,199, +159, 86, 42,149,211, 1, 68, 74,165,210,144,231,158,123,174,234,144, 33, 67,208,191,127,127,108,223,190,253,245, 10, 10, 45, 38, + 58, 58,122,240,174, 93,187, 28,111,104, 19,185, 69, 48, 85,248, 5,110,199,135, 71, 94,127, 61,102,198,101, 13, 14, 28, 58,143, + 0,176,204,161, 89,179, 34, 13,151, 46,193,102, 50, 97,210,149,210,178,237, 86,194,236,124,103, 68,204, 35,115,191,248, 16,192, + 18, 47, 46,128,204,104, 52,226,226,197,139, 21, 10,196,205,155, 55,193,243,188,209,155,187, 32,145, 72,112,234,212, 41,191,122, + 33, 36, 36, 36,120,123, 0,125,114,110,222,188, 25,163, 70,141,194,249,243,231, 33, 76, 85,226, 7, 39, 19, 22, 22, 22, 34,136, + 44, 65, 4,201,229,114,136,197, 98,134,227, 56, 70,168,218,179, 63, 92,126, 9, 99,150,101,241,227,143, 63, 98,230,204,153, 24, + 51,102, 12, 22, 45, 90,132, 70,141, 26,253,147, 9, 57, 14,106,181, 26,161,161,161, 8, 13, 13, 45, 39, 16,239,103,184, 38,243, +236, 57,243, 21,224, 73, 89, 35, 16,194, 3, 60, 64, 64,192, 19, 30, 57, 25,151,241,209,199,159,250,253,246, 17,139,197,184,116, +233,146, 35, 31, 8,206,176, 32,140,156, 93,131,196,196, 68,159,121, 73, 34,145, 76,252,245,215, 95,165, 63,254,248, 35, 86,172, + 88, 1,134, 97, 32,147,201,160, 84, 42, 17, 18, 18,130,240,240,112,199, 18, 31, 31,207,124,247,221,119,146, 70,141, 26, 77, 84, +171,213,155,220,167, 57, 9, 86, 84,159, 81,251,153,206,239, 1, 0,158,121,143,160,232,226,212, 71,216,226, 9,193,255,101,145, +213,176, 97,195, 61,251,246,237, 11,208,233,116,224,121, 30,155, 54,109, 82,116,238,220,121,247,181,107,215,218, 84, 84,108, 37, + 38, 38,174,223,183,111,223,227,145,145,145, 40, 41, 41,129, 90,173,134,197, 98,129, 72, 36, 66, 66, 66, 2, 62,249,228, 19,166, + 79,159, 62,195, 95,124,241, 69,131, 92, 46, 23,156,141, 68,247,121,169,124,102, 90,240,249,151, 33,132,148,229, 31,194,147,114, +191,133,185,105,120,235,157,143,252, 10, 99,213,170, 85,255,183,102,205,154, 64,103,103,201, 89, 4, 56,139, 44, 97,241, 33, 12, +216,106,213,170, 13,249,233,167,159, 28,156, 17, 17, 17,224, 56, 14, 98,177, 24, 28,199,129,101, 89,236,222,189, 27,211, 39,142, + 67,104,100, 21,204,255,124,161,207,112, 70, 70, 70, 46,234,214,173,219,243, 75,150,252, 83,116, 55,172, 94, 29, 61, 31,127, 12, + 81, 17, 42, 68,132, 6,149,221, 39,158,193,137,243,215,124,190,143, 0,176, 85,171, 86,125,121,213,170, 85,129,206, 31,132, 66, + 92,133,143,103,193,197, 55,153, 76,104,214,172,153, 95,113,119,230, 20,220, 54, 65,180, 9,247, 83,184,142,240,188,250, 8,231, + 16, 65, 8,219, 5,103, 57, 14,177, 88,140, 85,127, 44,245,232,102,223, 46,103, 69,211,221,149, 51, 45, 45, 13,211,166, 77,131, +240,209,230,220, 84, 40, 46, 46, 14,243,231,207,247, 89, 46,185, 60, 3,205, 1, 68, 58,109, 50, 1,144, 58,253,230, 49, 12,115, +216,205,113,194,118,177,189,198, 42, 18,101,237,198, 74, 1,132,184,225,243,196,147,111,127,231, 69,186, 28, 95,238, 58, 30,133, +214,134, 13, 27,132,167,184,125,106,106,234, 78,251,255, 98,153, 76,118, 83,161, 80,196, 0, 40,221,180,105, 19, 94,123,237, 53, +216,173,213,222,193,193,193,167,221,184, 58,199,141, 70,227,123, 0,114,236,155,132, 46,154,108, 97, 97, 33,191,117,235, 86,118, +217,147, 93, 97, 34, 64,227, 15,167,163, 91,106, 42, 54,199, 73, 33, 2,240,232,185,124, 40, 20, 10, 78,173, 86, 91,156,219,109, +185,105,187,181,205, 37, 67,137, 2, 56, 14, 45,246,108,196,168, 61, 27,241,168, 82,138,130,213, 43, 81,186,119, 23, 88,150, 65, + 91,101, 4, 70, 15,220,138, 86, 42, 25,164, 70, 45, 88,150,117,151,179, 29,156, 23, 47, 94,236,167, 82,169,166,187,220, 96,127, +112, 21,101,243, 56,193, 67, 56, 65, 8, 65,163, 70,141,192, 48,140,195, 45, 16, 22,225,161, 19,150, 99,199,220,214, 64,122,228, +180, 87,193, 65,169, 84,226,207, 63,255,116, 28,211,169, 83, 39, 24, 12, 6,132,133,133,249,197,153,151,151, 71, 50, 51, 51,153, +101,203,150, 65, 44, 22, 35, 60, 60, 28, 10,133,130, 89,186,116,233, 56,137, 68, 18,111, 48, 24,120,147,201, 4,169, 84, 58, 95, + 72, 31,142,227,180,106,181, 58,220, 19,167, 72, 36,194,208,161, 67,241,238,187,239, 98,209,162, 69,120,253,245,215,111,113,188, + 12, 6, 3, 34, 34, 34, 28, 98,203,205, 3,120, 55,186,251,222, 93, 78,158,224,244,177,205, 56,115,114, 27,120, 27, 15, 27, 79, + 64,136, 13,188, 21, 56,186,245, 64,173,172,171,153,113, 4,164,172,233, 45, 0, 89,137,198,218, 46, 92, 90, 7,192,186,157, 5, +166,185,190,194,201,113, 28, 12, 6, 3,126,253,245, 87,156, 59,119, 14,155, 54,109,130, 94,175, 71, 68, 68, 4, 66, 66, 66,240, +216, 99,143,225,197, 23, 95, 68, 98, 98,162,207,184, 19, 66,150,220,188,121,179,113,235,214,173,153,226,226, 98, 20, 23, 23, 67, +175,215,195,102,179,193,106,181,130,227, 56, 4, 4, 4, 64, 46,151, 35, 58, 58, 26, 6,131,129, 24,141,198, 37,158, 56,121,158, + 41,209, 93, 25,123,225,143, 85, 99, 31,125,230, 61,130,213, 51, 25,212,168, 38,211,253,121, 36,104,200,186, 61,163,187, 0, 32, + 60,113, 88, 11,196, 98,227,243,223, 29,247,217,240,123,158, 70,183,138,172,112,189, 94,143,210,210,210, 50, 91, 95, 42,197,234, +213,171, 35,122,245,234,181, 43, 51, 51,179,173, 23,177,117, 11,103, 80, 80, 80,130, 72, 36,194,169, 83,167,240,213, 87, 95,225, +207, 63,255, 68, 78, 78, 78, 81,149, 42, 85,130,219,183,111,207,190,245,214, 91,104,220,184, 49,190,255,254,251, 0, 95,156,132, + 16,164, 93,220,141,180, 75,123,192,243,101,174,117,217,226,254, 63,241, 51,238, 90,173,214,112,252,248,241,192,111,190,249, 6, + 81, 81, 81, 72, 74, 74,130, 66,161, 64, 64, 64, 64,185,151,172,243,139,215,215,179,169,215,235, 13,105,105,105,129, 63,255,252, + 51,194,195,195,145,152,152, 8,133, 66, 1,169, 84, 10,142,227,192, 48, 12,150, 45, 91,134,229, 31, 15, 68,218,249,147,232,219, +179,139,207,112, 42, 20,138,231,151, 44, 89, 82,206, 2,137, 14, 13, 5, 39,102, 33, 18, 51, 8,237,244, 36, 0,160,104,251, 90, +111,163, 67, 58,115, 50,165,165,165,134,131, 7, 15, 6, 30, 57,114, 4, 60,207, 35, 49, 49, 17, 58,157, 14, 42,149,202, 17,255, +173, 91,183,162, 79,159, 62,248,241,199, 31,209,178,101, 75,159,113,215,104, 52,134,147, 39, 79, 6,254,244,211, 79, 8, 11, 11, + 67,213,170, 85, 29,113, 23, 22,177, 88, 12,145, 72,132,228,228,100,148,148,148, 32, 48, 48,208,103, 26, 29, 61,122, 52,240,167, +159,126, 66,104,104, 40,226,227,227, 29,142,155, 32,142,102,126,249,113, 57,130, 0, 38,246,142, 57, 43,154,238,174,156,125,251, +246, 69,141, 26, 53,160, 82,169,160, 84, 42, 29,220,222, 56, 61,104, 17,135,222,102, 24,102,131,211, 51,145,202, 48,204, 6,231, + 95, 79,199,217,255,182, 29, 55,110, 92,179, 25, 51,102, 76,107,217,178,229,207,251,246,237, 91,238,137,207, 19,207,184,113,227, + 82,102,204,152, 49,205,249,120, 55,215,241,236,104,165,166,166, 50,246, 72, 50, 0,146,154, 54,109,122,120,251,246,237, 97, 65, + 65, 65,142,131,111,220,184,129,226,226, 98, 4, 5, 5,169,102,207,158,173,106,223,190, 61,162,163,163, 29, 95, 0, 23, 47, 94, +172, 95,187,118,109, 53, 0, 87,223,150,103, 89, 22,173, 90,181,194,105,123,109, 71,183,212, 84,196,199,199, 59, 26,121, 4, 4, + 4, 96,248,240,225,204,168, 81,163, 56,193,205, 32,132, 64,175,215, 35, 54, 54, 86,238,205,213, 1,128, 20,125, 62,214,182,111, + 11,150, 1,116,199, 14, 65, 34,101,192,138, 24, 52, 33, 5,248,189, 67, 91, 48, 0, 76,127,239,135, 31, 46,204, 49, 0, 93,238, +142,195, 65,112,249,242,101,191, 28, 45,123,188,152,219,229, 20, 28,141,125,251,246,193,102,179,249,203, 73, 88,150,133, 82,169, + 68, 76, 76, 12,228,114, 57, 20, 10, 5,243,243,207, 63,143, 79, 74, 74,138, 29, 53,106, 20,171, 86,171,217, 86,173, 90,225,169, +167,158,226,132, 42,206,148,148, 20,159,113,217,185,115, 39,190,250,234, 43,188,254,250,235,110, 29, 45,134, 97, 16, 25, 25, 9, +149, 74,133, 7, 5, 60, 0,179,213, 2,157, 70,239,168,210,181,217,108, 56,185,227,239, 90, 87,255,190,152,178,225,231, 31,197, + 0, 96,216,177,214,249,180,216,167,190, 92, 89,187, 93,168,248,224,206, 34,203, 65,111,121,158,227, 56, 12, 30, 60, 24, 51,102, +204,192,243,207, 63,143, 77,155, 54, 97,194,132, 9,120,229,149, 87,110,113,181,124,125, 57, 90, 44,150,175, 95,120,225,133,215, + 87,175, 94, 93,231,189,247,222, 99, 5, 71, 75,161, 80,128, 97, 24, 24, 12, 6, 24,141, 70,232,245,122,156, 63,127,158,127,245, +213, 87, 47,152, 76,166,175, 61, 86, 87, 50,242, 19, 10,153,110, 83,245,120,182,134,246,218,167, 65,173, 31, 75,212, 51,242,166, + 37, 79,214,238, 76,122, 12, 78, 12, 5, 33, 32, 60,192, 19,192,104,212, 98,248,240, 55, 69,255, 98, 82, 57, 68,150,193, 96,192, +241,227,199,209,161, 67, 7,220,188,121, 19,103,207,158, 69,173, 90,181,176,116,233,210,200,231,158,123,110, 87,110,110,110, 91, +127,157,173,147, 39, 79,142,123,228,145, 71,230,105, 52,154, 66,141, 70, 51, 15,192,114, 0,197,151, 47, 95,174,119,249,242,229, + 5,155, 55,111,110,243,209, 71, 31,137, 92,218,232,136, 60,217,163, 22,139, 21,122,189,209,171,192, 18,214, 9,225,253,138, 56, +195, 48,164, 78,157, 58,232,213,171, 23,196, 98, 49, 20, 10, 5, 2, 3, 3,203, 85,155,185, 10, 46,111,229, 7, 0,158, 97, 24, + 84,169, 82, 5, 61,122,244,128, 68, 34, 41,199, 41,228,195, 30, 61,122, 96,228,164, 15,241,245,200,142,248,234,133, 90,232, 60, + 37,199,107, 56,117, 58,157,230,175,191,254,146,191,251,250,235,120,164,102, 77, 68,168, 84,168, 22, 29, 9,185, 76, 10,137,115, +152, 24,191, 76,118, 2,128, 23,137, 68,104,208,160, 1,114,114,114,112,237,218, 53, 92,187,118, 13, 44,203,162,117,235,214, 14, + 23,230,210,165, 75,152, 52,105, 18,140, 70,163,223,113,175, 89,179, 38, 58,118,236, 8,169, 84, 10,133, 66, 81,174,202, 80,184, +167,165,165,165,168, 81,163, 6,214,173, 91,135,218,181,107,251,228,172, 91,183, 46,218,181,107, 87,238,126,202,229,114,135, 40, + 2,128,155, 7, 53,142,107,196,197,197, 85,136,115,203,161, 27,248,102,235, 95, 48,154,120,168,117,150,114, 39,196, 70,168,176, +231,167,247,252,138,187,192,185,120,241, 98, 20, 23, 23, 59,140, 3,225,163, 92, 48, 81,170, 86,173,138,133, 11,221, 59,153, 46, + 90,196,221, 59, 47,213,207,247,173,112,156,144,185,100, 51,102,204,152,230,122,190, 47, 62,231,253, 46,231,155, 92,196, 89, 78, +133,170, 14,101, 50,217,251,127,253,245, 87, 88, 73, 73, 9, 46, 93,186, 4,150,101, 29,117,234, 28,199,193,108, 54,227,202,149, + 43, 8, 11, 11, 67,110,110, 46,100, 50, 25, 68, 34, 17, 76, 38, 19, 0, 52,241,244, 2, 39,132, 96,100, 94, 89, 19,161, 63,170, + 72,144, 6,160,103, 94,217,131, 33, 52,136, 95,179,102, 13, 2, 3, 3, 17, 20, 20,228,248,245, 85,141,116,242,218,101,228,136, + 25,176,251,119,131, 97, 1,150, 1, 24, 17,192,178, 4, 44,195,128,221,191, 11, 12, 3, 40,195, 67, 43, 90, 0,251,106, 24,239, +181, 1,188, 39,247,201,157,139,229,250,127,199,142, 29,240,151,179, 70,141, 26, 8, 12, 12,116, 44,155, 55,111, 46,231,104,217, +108, 54,132,135,135,251,195, 73,202,220, 8, 30, 81, 81, 81, 16,139,197,204,210,165, 75,199, 37, 39, 39,199,190,243,206, 59,172, + 72, 36,194,177, 99,199,112,230,204, 25, 36, 38, 38,250,221,102,171,184,184, 56,107,220,184,113,182,113,227,202,250, 80,164,164, +164,160,184,184, 56, 87,216,175, 86,171, 11,186,118,237, 90,174,221, 70,126,126,254,253,221, 18,222,126, 31,173,102, 43,116, 6, + 3, 52,165, 58,135, 59,148,155,153, 19,242,222,168,183,197,179,134,191, 4, 0, 24, 53,247,115,148, 46,250,167, 32, 91, 59,106, + 64,212,147,159,173, 24, 11,160,143, 55,126,141, 70, 3,131,193,128,234,213,171, 99,223,190,125, 40, 45, 45, 69,247,238,221,193, + 48,140,163,135,104, 5, 96,202,200,200,120, 60, 53, 53,245,240,156, 57,115,170,215,171, 87,143,209,106,181,208,233,116,112,254, + 61,121,242, 36, 89,190,124,249, 85,157, 78,215,202,110,157,187,197,230,140,111, 47,119,139,123,121,245,159,199, 68,169, 81, 53, + 46,168, 50,138,170, 91, 11, 50,100, 90,181,254,188,193, 70,206,128,216, 0, 27,120, 16, 43, 15,155,189,218,235,223,130, 92, 46, + 95,176,103,207,158,112,131,193,128,163, 71,143, 98,208,160, 65,166,252,252,124, 41, 0, 60,255,252,243,166,101,203,150, 73,107, +212,168,129,165, 75,151, 70, 62,245,212, 83,171,180, 90,109, 3, 63,169,127,204,202,202,250,209,117, 99,120,120,248,252, 27, 55, +110,180,119,110,243, 99,181, 90, 29,193,113,251, 96,242,128,197, 98,129, 94,111, 68, 73, 73, 41, 76,102,139,189,204,228, 97,179, + 89,237,191, 60,172,246,114, 84, 42,225,130,154, 52,136,209, 16, 66,192, 50, 76,241,209, 83,217, 85,189,137,118,119, 85, 92,126, +186, 89,174,176, 9,189,204,194,195,195, 33, 22,139,241,227,143, 63,226,196,222,205,144,138, 8,108, 86, 11,172, 22, 51,108, 22, + 19,196, 34, 17,254, 60,118, 13, 93,234, 6,249, 37, 8, 35, 34, 34,208,179,101, 75,164,182,108, 89,214,189,141,227, 16, 40,147, + 65, 33, 9, 40,115,178, 0, 16, 27,235,239, 32, 2,188, 16,206,232,232,104, 28, 57,114, 4, 35, 71,142,196,204,153, 51, 33,151, +203, 29,189,159,207,157, 59,135,149, 43, 87,162, 75,151, 46, 21,142,187,224,224,141, 29, 59, 22,153,153,153,152, 59,119, 46,154, + 54,109, 10,177, 88,140,226,226, 98,180,106,213, 10, 57, 57, 57,126,113, 58, 87,239, 73,165,210,114,238,147, 32, 0, 43,154, 70, +206,156, 47,245,141,197,250,189,203,193,128,193,129,159,222, 46, 39, 10, 23,174,216, 93, 97,206, 9, 19, 38,148, 11,167, 63,110, +150,191,112,113,157,124, 30,199, 48,204, 81,193,108, 29, 59,118,236,251, 12,195,108, 24, 59,118,236,251,211,167, 79, 63,237, 15, +159,187,253, 12,195,108,180,139,176,158, 78,219,142, 86, 72,104, 41, 20,138, 71, 3, 3, 3,113,233,210, 37,116,239,222,221, 84, + 80, 80,112, 65, 44, 22,215,202,207,207,151,229,230,230, 66,167,211,105, 38, 79,158,124, 13,128,188, 69,139, 22, 53,254,252,243, + 79,220,188,121, 19,203,150, 45, 3,128,181,238,219,108,176,224,121,222,145, 41, 92, 63,219, 68, 34, 17,246,239,223,143,253,251, +203, 55,253,250,230,155,111,124,190, 48,158,250,245, 55, 28, 59,118, 12,206,195, 3, 8,255,157,183, 5, 4, 4, 0,222,123,120, +148,131,175,134,241,190, 26,192,187,131,191,109,191,220,245,204,241,132,140,140, 12,143,231,239,223,191,191,156,163,229,139, 83, + 36, 18,193,102,179, 65, 46,151, 51, 18,137,132,145, 72, 36,241,130,200, 18,137, 68,142, 7, 70, 38,147, 65, 38,147,149,251, 74, +245,132,204,204,204, 14,153,153,153, 30,247,231,229,229, 61,158,151,151,135, 7, 17,102,139, 5,122,157, 9,165, 26, 61, 38, 78, +255,190,108,227, 68, 28, 4,112,240,241,255,141,196,208,110, 93, 58, 86,180,154, 90,184,223, 81, 81, 81,216,185,115, 39, 24,134, +193,170, 85,171, 16, 28, 28,140,110,221,186, 65,165, 82, 97,236,216,177,232,215,175, 95, 69, 11,179,146,130,130,130,199,223,122, +235,173,195,159,126,250,105,181,170, 85,171,194,100, 50,193,108, 54,195,100, 50,225,242,229,203, 88,190,124,249, 77,157, 78,247, + 56,128, 18, 95,100,155, 51,190,189,252,203,174, 81,153,157,251, 63,165, 63,151,243, 7,178,179, 11, 96,181,102,128,183, 89, 97, +182,218,202, 28, 62,171, 21, 86,171, 13, 18,137, 72,245,233,212,183,183,242, 32, 96, 89,198, 4,224,137,123,149, 70, 33, 33, 33, + 41,121,121,121,184,120,241, 34, 94,124,241,197,236,130,130,130,179, 0, 58, 1, 64, 65, 65,193,158, 65,131, 6,213, 91,178,100, + 73, 76, 82, 82, 18, 2, 3, 3, 85, 90,173,214, 23,101, 32,128,161, 0,186,162,172, 29,136,128, 66, 0,147, 89,150,149, 29, 61, +122,244,150,158,118,187,118,237, 2,128,131,238,191,128,236,142,150,193,128,188,130, 34,188,242,191,241,255,124, 25,129,148, 19, + 23, 4, 4,111,140, 64, 0, 0,228,231, 92,198, 75,175,140,148,249,250, 32,112,247, 34,172, 64, 27,157,114, 31,106, 66, 30, 13, + 12, 12, 44,171,126, 91,183, 28, 27, 63,251, 31, 96, 51,131, 88,244,128, 89, 7,152, 53,224, 77, 58, 48, 18, 57, 96,209,251, 37, +180, 2, 3, 3, 17, 40,151, 35, 42, 36,164,108, 16, 72,145, 8, 98, 49, 7,222, 2, 48, 54,198, 33, 72,121,255, 6, 6,113,124, + 84,202,229,114,164,165,165, 97,232,208,161, 48,155,205,232,219,183, 47, 76, 38, 19, 12, 6, 3,244,122, 61,146,147,147,161,211, +233,252,226, 19,122, 43, 6, 6, 6, 66, 34,145,224,237,183,223, 70,179,102,205, 48,105,210, 36,140, 25, 51, 6,201,201,201,120, +227,141, 55,176,124,249,114,164,164,164,248,226, 37,206,105, 36,220, 79, 65,108, 57, 87,241, 1,168,112, 26,185,114, 50, 12, 91, + 78,176, 9,203,155, 47,116,170, 48,231,140, 25, 51,144,151,151,119,139,147, 37,252,143,139,139,195,151, 95,126,121,187, 53, 67, +130,123, 20,237,102, 95, 79, 87, 39,138, 16,210,220,222,118,202, 56,125,250,244,211,211,167, 79, 79,101, 24,102,195,244,233,211, + 83, 61, 57, 90,238,120,220,236,247,251,165,197,185,212,141,182,119,222, 41,220,232,176,176, 48, 81,181,106,213, 88,149, 74,133, +226,226, 98, 68, 70, 70,146,188,188,188,254, 10,133,226,227,159,127,254,185,134, 70,163,193,185,115,231, 48,127,254,252,131, 0, +230,121, 19, 90,155, 34,237,214,177,221,201,114, 94,239,213,171, 23,146,146,146,202,185, 89,114,185,220,107,230, 17,246, 9,142, +144, 72, 36, 66,237,218,181,229, 87,175, 94,213, 75, 36, 18,196,199,199,203,179,179,179,245, 18,137,164,194, 61, 93,124, 53,140, +247,213, 0,222,157,240,105,222,188,121, 57, 7,203,249,215,249,255,250,245,235,125, 86, 29, 10,156,245,234,213,115,220,175,160, +160, 32,225, 92, 0, 64,247,238,221,193,243, 60, 34, 34, 34,252,226, 20, 68,173,189, 1, 60, 12, 6, 3, 95, 90, 90,202, 30, 61, +122, 20, 82,169, 20, 65, 65, 65,142,182, 58, 1, 1, 1, 14, 55,147,194, 93,129,192,195,100,177, 64,175,215, 67,163,209, 0, 0, + 46,159, 90, 83, 94,136, 25,213,183,205, 47, 20,176,133,133,133,216,188,121, 51,254,248,227, 15, 52,107,214,204,173,168,174,128, +224,202, 43, 44, 44,108, 61,122,244,232, 3, 83,166, 76,169, 18, 22, 22, 6,179,217,140, 27, 55,110,224,187,239,190,203,212,233, +116,173, 43, 82,192,128, 0, 22,139, 21, 6,157, 17, 37,234, 82,124, 60,245, 7,143, 89, 15, 0, 10,115,207,163, 87,239,126,210, +123,153, 78,153,153,153,239,180,110,221,122,106,105,105,105,177, 78,167,235, 7, 96,150,243,247, 84, 65, 65, 65,155,222,189,123, +207, 9, 11, 11,107,154,155,155,251,190, 31,148, 99,211,210,210,222, 79, 72, 72, 40,183,209,104, 52, 34, 33, 33,161,118,110,110, +238,192,182,109,219,126, 8, 32,204,105,119, 16,128, 45, 0,190,244,148,151,132,170, 67,141, 70, 15, 85, 72, 44, 50,174,237,244, + 25, 16,137,200, 0,194,243, 94,203, 16,225, 3,216,211,226,163,103,220, 45, 65, 21,142, 21, 94,216, 79, 60,253, 2,158, 24, 58, + 3, 10, 49, 48,237,165,199,145, 28, 2, 64, 30, 6, 73,219,247,192,132,216,239,209,208,223,252, 34, 31,243,213, 87, 56,102, 47, +143,227, 35, 35, 49,186,127,127, 16, 11,176,239,204, 25,172,248,235, 47,244,239,208, 1,138,128, 0,191, 63, 88,120,158,135, 68, + 34,193,229,203,151,177,111,223, 62,212,173, 91, 23,151, 46, 93, 42, 55, 12, 5, 33,196,223,248, 59,226, 46,147,201, 32, 22,139, +145,157,157,141,212,212, 84, 72, 36, 18,252,240,195, 15,216,185,115, 39, 70,143, 30,141, 33, 67,134,160,125,251,246, 56,123,246, +172, 95,156,132,144, 91,122, 43,186, 86,231, 86, 52,141, 92, 57, 93,223,251,183,147,238, 2,231,148, 41, 83,220,118,168,240,135, +211,157, 22,113,147,118, 71,157,197,144,224, 60, 57, 11, 35,215,117, 0,161,194,182,177, 99,199,190,239,239,121,206,235,130, 35, + 86,145, 42, 76,135,208, 74, 77, 77, 45, 23,243,194,194,194, 3, 7, 14, 28,168,175, 84, 42,113,254,252,121,169, 74,165,170, 47, + 20,232, 44,203, 98,213,170, 85, 65, 61,122,244,216, 58,107,214,172,120,158,231,145,147,147,131,119,223,125, 87, 99,181, 90, 7, + 0,176,122,122,129,251,114,166,126,251,237,214,135,109,221,186,117,126, 85,129, 8, 66,138,227, 56,132,134,134,234,245,122, 61, + 20, 10, 5, 66, 67, 67,245, 58,157, 14, 74,165, 82,168, 43,102,241, 79, 79, 5, 95,238,147,175,134,241,174, 13,224,125,226,204, +153, 51,126, 29,103,175,106,245, 43,151,167,165,165,121, 44, 72,118,238,220, 9,222, 94,208,250,203,105,255,202, 35,130,240, 83, + 40, 20, 8, 11, 11,131, 76, 38,131, 92, 46, 47, 39,178,100, 50,153,207, 7,199,215,128,164, 1, 1, 1,135,148, 74,101,136,176, + 95, 44, 22,163,180,180,180,184,176,176,240,209,251,186,234, 16, 4, 86,179, 21,122,189, 1,154, 82,125,165,243,155, 76, 38,200, +100, 50, 44, 95,190, 28,143, 63,254, 56, 90,180,104,113,139,200,186, 77,123, 62,189,176,176,176,253,188,121,243, 14,206,158, 61, + 59, 84,163,209,224,251,239,191, 47,209,104, 52,237, 1,164, 87, 72,108,242, 4, 22,179, 25, 58,131, 17, 90, 77,217, 61,184,114, +122,205,127, 45,169,150,103,103,103, 47,247,178,255,138,213,106, 77, 21,198,125,243, 3,143, 37, 36, 36, 32, 59, 59,187,220,198, +235,215,175,195,102,179, 25, 81, 54, 78,214,203,206, 70, 50,254, 25, 61,219,211, 87,124,153, 59,170, 55, 66,163, 41,115, 65, 12, +218,252,202,201,167,118,177,225,169, 77,214,237,228, 33,134, 97, 28,141,190,135, 15, 31,142,147, 39, 78,160, 83, 21, 53,146, 99, +130, 64,212, 25,144,116,252, 8,127,231,201, 49,107,206,166, 10,115,175,116,106, 2, 49,107,229, 74,183,251,174,244,233, 83,161, +184, 95,184,112, 1,114,185, 28, 54,155,237,150,247, 77, 69,227,239, 44, 96,230,204,153,131,209,163, 71,227,135, 31,126,192,201, +147, 39,241,200, 35,143,160,115,231,206,200,205,205,197,137, 19, 39, 96, 52, 26,253, 14,167,115,187,185, 11, 87,207, 96,219,190, +223,113, 61,253, 26, 50,179,111,222,118,186, 59,115,186, 10,173, 95,182, 29,199,211, 93,154,220, 22,231,199, 31,127,140,220,220, +220,114, 78,150,115,185,228,201,209,114,213, 34, 46,200,119,105, 11, 37,172,155, 92, 68,143,235,186,235,241, 0,144, 11, 64,228, +227, 60,215,245,252,233,211,167,239, 16,156, 48, 59,175,200, 87,251,172,114,142,150, 11,102,244,233,211,167,247,252,249,243, 35, + 3, 2, 2, 28, 61,144,198,142, 29,139,209,163, 71,163,122,245,234,136,136,136,136, 11, 9, 9, 65, 65, 65, 1,102,206,156,137, +180,180,180,215,224,102,160, 61, 87,161,213,230,106, 41,164,210,127, 62, 88, 5,103, 11, 0,134, 12, 25,114,139,163, 37, 36,144, + 55, 88, 44, 22,132,135,135, 67,167,211, 65, 36, 18,161,111,223,190,162, 83,167, 78,217,186,117,235,134, 39,159,124, 82,116,226, +196, 9, 91,207,158, 61, 33, 18,137,208,177, 99, 71,245, 47,191,252, 50, 10,192,103,126,136,173, 74,107, 24, 47,100, 50,127,199, + 62,242, 71, 92,122,227,100, 24, 6, 58,157, 14, 28,199, 57, 26,202,251,195, 41, 84, 29, 58, 63,128, 44,203, 34, 36, 36,196, 81, +120, 8,142,150, 32,180,124,241,250, 26,144, 84,161, 80,168,206,159, 63, 95, 67,232,120,145,159,159,143,142, 29, 59, 94, 44, 44, + 44,188,191, 45, 45, 30, 48, 91,109,208,232, 13,208,232,117,149, 70, 43, 60, 15,139, 22, 45,194,217,179,103, 97, 48, 24,176, 96, +193, 2, 71,167, 2,103,145,117, 7,130,235,178, 92, 46,231,187,119,239,142, 3, 7, 14, 64, 38,147, 89,112, 27,227, 95,241,132, +135,217,106,133, 65,175,135,198,119,149,219,131, 2,135,170, 62,123,246, 44, 76, 38, 19, 38, 77,154,100, 59,124,248,240, 14,148, + 13,128, 42, 56,120, 3,219,181,107, 55, 89,169, 84,134,108,220,184,241, 77, 0, 63,120,123,121, 91,172,118,209, 94,137,247,209, +185, 70,192, 93,155,172,219, 25,102,197,249,197,202,243, 60, 94,123,245, 85,116,174,162,198,147, 77, 35,161,205,186, 8, 69,112, + 36,152,144, 68,204,154,179, 9,167,175,250,221, 20,147, 0, 64,247,118,125,208,168,238,173,195,131,181,238, 84,246, 77,182,231, +207, 67,200,201,207,172,112,220,181, 90,173, 71,231,170, 2,142,150,227,153, 19,238, 95,227,198,141, 81,171, 86, 45,236,216,177, + 3, 77,154, 52,193,165, 75,151,112,233,210, 37,164,165,165,225,228,201,147, 40, 42, 42,170,112, 26,253,186,101, 5,138, 74, 11, + 33,149, 72, 81, 88,156,143,235, 25,215, 16, 29, 30,115,199,233, 46,160, 78,207,143, 1, 0, 85, 34,131, 43, 36,180,156, 57, 63, +249,228,147, 91,196,251,157, 14,217,195, 48,204, 33,111,235, 21, 61,255, 94,194,147,208,186,150,151,151,215,162,127,255,254, 99, + 1, 52,183,111, 43, 1,176,114,235,214,173,125,162,162,162, 58,180,108,217,146,147, 74,165,216,183,111, 31,126,249,229,151, 31, + 0,172,240,118, 33,169, 84,170, 79, 76, 76,148, 11, 25, 81,120, 16, 85, 42,149,104,230,204,153,204, 55,223,124,227,209,229,242, +149, 64, 37, 37, 37,208,106,181, 8, 14, 14,134,217,108, 70,247,238,221,109,103,207,158,133, 68, 34, 65,239,222,189,109,103,206, +156,113, 36,244,226,197,139,227,245,122,125,171, 63,254,248,163, 43,128,182, 21,184, 87, 66,195,248, 64,248,217, 0,222,211, 87, +158, 63,240,183, 58,206, 19,231,200,145, 35,111,139, 83, 34,145, 88,133,145,223, 89,150,133,217,108, 70,147, 38, 77,144,155,155, +235,120,104,148, 74,165, 67,100,249, 35,180,124, 13, 72,202,113, 28, 76, 38, 19,218,182,109, 11,134, 97,240,249,231,159, 63, 24, +213,145, 60,207, 4, 6,134,163, 74,149,218,136,140, 50,128,231, 43,119, 86,153, 49, 99,198,148, 19, 83,238, 70, 94, 22,238,255, +237, 64,224,186,147,217,231, 9,224,168,242,210,106, 13,247, 93, 18, 70, 69, 69,181,200,205,205, 93,231,178,185, 16,192,100, 47, + 31,150,142,132,190,121,243, 38,186,117,235,134,223,127,255, 93,180,118,237,218, 78,235,215,175, 63,115,241,226,197,155, 77,154, + 52,169,250,250,235,175,203,218,182,109,139,252,252,124, 52,109,218,116, 98, 70, 70,134, 23,161,101,191,143, 6, 35,180,218,202, +119, 71,221,185, 89,119,242, 98, 20,242,228,132, 9, 31,162,115,108, 49,250, 62, 18,140, 37, 27,246, 98, 96, 99, 57, 96,146, 85, +152, 79, 8, 75, 88,149, 36, 36,166,180,184,101,191, 76, 85, 54,150,107, 98, 74, 11,176, 55, 47, 85, 56,238,206, 97,118, 21, 85, +183,227,232, 57,223,207, 87, 94,121, 5,239,189,247, 30,186,118,237,138, 75,151, 46, 97,215,174, 93,184,116,233, 18, 70,142, 28, +137,148,148, 20, 60,242,200, 35, 21,226, 92,191,109, 53,212,154, 18,176, 12,139,194,146, 2, 24,140,122,140,121, 99,194, 29,167, +187,227,229,191,109, 58, 0, 96,205,214, 99,183,205,249,193, 7, 31, 32, 59, 59,187,156,147,117, 39,237,178,238,119,120, 27, 45, +237, 26,128,215, 92, 55,154, 76,166,160, 73,147, 38,117,137,136,136, 0,195, 48,152, 51,103, 14,194,194,194, 30, 7,112,218,100, + 50,229,107,181,218,209, 78, 34,164, 51,236, 99,109,228,228,228,184,237,183,175,213,106,205, 93,186,116, 17,199,198,198,150,235, +109,168, 84, 42, 61,185, 59, 14, 78, 97,159,213,106,197,152, 49, 99, 48,109,218, 52, 84,171, 86, 13, 61,123,246, 68,106,106, 42, + 24,134, 65,247,238,221,209,179,231, 63, 85,185, 33, 33, 33,146,223,127,255,189, 29,203,178,103,156, 94, 32,229, 56,221, 65,104, + 24,111,177, 88,252,109, 0, 95,142, 83,200,108, 35, 71,142,196,180,105,211,240,254,251,222,155,122,124,245,213, 87,192,173,237, +169,238, 58,103, 97, 97, 97,185,194, 94,161, 80,124,254,228,147, 79,114, 55,111,222, 44, 39,174,156, 23, 55, 5, 81, 57, 78, 95, + 3,146,138, 68, 34, 68, 71, 71, 99,202,148, 41, 8, 15, 15, 71, 76, 76,140,187,129,252,124,166,209,109,224,174,114,218, 8,127, +244,211, 25, 31,182,254,126,217,122,177, 76, 10,236,223,181, 6,234,162,242,213, 73, 70,243, 63, 93,169,165, 77, 58,193,116,236, + 79,191,242,146, 32,166, 63,254,248, 99,124,252,241,199, 94, 3,180,104,209,162, 59,142,187,159, 98,235, 86, 78,158, 48, 10,101, + 40, 2,148, 85, 80, 63, 37, 20, 60,177,254,167,210,200, 3, 14, 31, 58,116,168,119,120,120, 56,210,211,211, 35,197, 98,113,239, +114,118,149, 94,143,196,196,196,218,121,121,121,173,124,113,142, 28, 57,210, 56,126,252,120,217,128, 1, 3,240,228,147, 79, 98, +192,128, 1, 50,137, 68, 82,147, 16, 2,179,217,140,244,244,116,252,249,231,159,200,203,203, 59,231, 45,156, 60, 33,140, 92, 17, +130, 0,101, 44,234, 55, 8, 1,207, 91, 43, 37,238,206,174,184,179,155, 85, 65,145,229, 54,127, 2,192,225, 63,215, 97,194,219, + 13,240,195,198,131,152,127, 8,104, 20,146,139,250,145,121,224,243,206,225,221,129,205, 48,235,167, 35, 0,128, 93, 59,125,166, + 17,241,150, 7, 13,122,243, 29,197,221,217,185,114,190,142, 31,109,180,110,225, 20, 62, 18, 75, 75, 75, 81, 92, 92,140, 37, 75, +150,224,165,151, 94, 66,110,110, 46,210,210,210,112,241,226, 69,252,252,243,207, 80, 40, 20,183,149, 70,163, 94,253, 0,227,103, +189, 3, 2,130, 58, 53,234, 99,236,208,143,209,188, 81,203, 59, 78,119, 87,248,225,102,121,228,156, 59,119,238,237,230,165,135, + 78,104,185, 69, 68, 68,196,128,118,237,218,193, 96, 48, 32, 50, 50, 18,105,105,105, 96, 89,182, 58, 80, 86,133, 23, 23, 23,183, + 50, 47, 47,175,186,191,124, 34,145, 8, 86,171,213,209,246, 71, 88, 0,160, 87,175, 94,248,237,183,223,124,126, 81,196,196,196, +160,106,213,170,120,235,173,183,110,233,229,224,220,211, 65, 46,151, 99,227,198,141,217,133,133,133,133,132,144, 10,117,115, 19, + 26,198,239,217,179,199,239, 6,240,206, 48,155,205, 55, 47, 94,188, 24,187,104,209, 34,145,151,151,159, 3,187,118,237,178,194, + 71, 85,205,221,224,116,247,101, 74, 8,241, 40,178,252, 25, 70,192,215,128,164, 28,199,225,194,133, 11,152, 48, 97, 2, 24,134, +193,154, 53,107, 30,136,135,235,212,249,130,111, 88,150, 13,237,245, 68,235,134, 96, 24,152, 77,183,214, 84, 7, 22,105, 28, 34, +235,201,207, 86, 96,237,168,254,254,136,158,203,187,119,239, 14, 91,180,104, 17,231, 79,186,239,222,189,219, 74, 8,169,112,181, +159,240,194, 49,155,205,208,235,111,207, 69, 33,132,236,155, 62,117,124,151,165, 63,110, 18, 51,140, 9,251,119,174, 65, 73,177, +251,230, 12, 82, 49,135,111,150,252, 98,149,136, 69, 55,255,229,164,251,162,111,223,190, 3, 22, 44, 88, 80,223,221, 78, 63, 58, +193,164, 25, 12, 6,100,100,100, 64,167,211,173, 30, 55,110,156,121,211,166, 77, 47, 63,245,212, 83,120,228,145, 71, 16, 27, 27, +139,172,172, 44, 92,190,124, 25, 75,150, 44, 33,123,247,238, 93, 13, 96,152,143,251,184,110,198,212,241, 47, 46,249,105,147,148, +101,204,216,191,107, 13, 74, 92, 68,251,173,238,180, 24,223,254,240,139, 89, 34, 17,159,247,229, 22, 57,187, 89,149,249, 98,236, + 61,104, 40,158,156, 55, 31,213,155,119,195,140,153,157,241,237,212,126,152,221, 93, 2,243,170,129,104,244,204, 82, 44,159,212, + 3, 0, 80,229, 91, 63,221, 18, 78,130, 27,110, 28,171,226,146, 0,187,184,169,152,107, 42,196,221,155,115, 85, 81, 71,139,101, + 89, 36, 37, 37,161,122,245,234,120,252,241,199,209,164, 73, 19,116,232,208, 1, 39, 78,156,192,137, 19, 39, 48,114,228, 72,111, + 34,203,103, 26,181,111,213, 5, 7,219,156,191,227,180,113, 77,247,202,128, 63,121,105,232,208,161, 0,240, 80,185, 91, 21, 22, + 90,106,181,250, 4,207,243, 13,131,131,131, 5, 71,202,177,239,250,245,235,224,121, 94, 87,209,132, 49,153, 76,194,224,152,229, +198,101, 18, 26,199,123,123,240, 9, 33,182,194,194, 66,180,107,215, 14,109,218,180,113, 84,159, 56, 47, 78,194, 4,107,215,174, + 5, 33,164,194,141,172,157, 26,198,107, 80,193, 6,240, 0,144,155,155,219,173,109,219,182, 91, 57,142,243,107, 22, 77,158,231, +211,114,114,114,158,184,215,156,238,210,135,231,121,143, 34,203,159,130,200,215,128,164, 28,199, 65,169, 84,226,215, 95,127, 69, + 68, 68,196, 3,245,128,157, 56,155,247,137,183,253,237,194,165, 59, 1, 68, 62,249,217,138, 27, 59, 11,204, 9, 79,126,182,226, +250,218, 81,253,171,121, 59, 39, 59, 59,187,107,255,254,253,127,247, 55,221,173, 86,235,181,236,236,236, 10, 15,151, 64, 8,193, +249,243,231,249, 87, 94,121, 37, 63, 47, 47,175,223,237,196,127,236,132,249,179,167, 77, 28, 30,222,189, 75,139,230, 96, 1,147, +231,198,191,132, 1, 8, 39, 22,221, 28,253,254,220, 87,251,245,235,247,111, 38,155, 58, 59, 59,251,241,167,159,126,122, 24,254, +105, 58, 81, 78, 72,193, 67,239,106, 59,230, 85,173, 90,181,129, 72, 36,146, 1,152, 0,224,250,222,189,123,191,216,187,119,111, + 87, 0,143,137, 68,162, 88,155,205,150, 97,255,232, 89, 1,224,111,223,249, 40,247,117, 16, 62,190,123,231,199,186,129, 97,136, +201,100,244,241,129, 4, 2, 66,136, 68, 34, 62,127,248, 68, 86, 35,111, 31, 82, 78, 51,112, 84,122,149,253,176, 97,195, 48,108, +216, 48, 71,126,250,252,243, 54, 88,125,106, 15,158,105,148, 14,227,215,173,193,168,170,249,253,193, 7, 0, 31,124,248, 74,165, +133,205, 57,238,206,142,150,187,231,160, 34,109,180, 68, 34, 17,242,243,243,113,225,194, 5,228,228,228, 64,167,211,225,236,217, +179, 48,155,205, 40, 42, 42, 66,131, 6, 13,110, 59,156,149,149, 70,255, 38,231,195, 88,125, 88, 97,161,101, 54,155, 63, 74, 74, + 74, 18, 7, 4, 4,212,183,217,108, 32,132,192,102,179, 17,187,168,169,112, 47, 60,177, 88,108,168, 85,171, 22,227,174,119,130, +240, 95,169, 84,234,189,184, 37,211, 19, 19, 19,199, 49, 12, 35,242,244, 21, 34,252,231,121,222,198,113,220,244,219,188, 87,119, +218, 48, 94,155,151,151,215,178,146,211,239,110,112,186,166,143,182,110,221,186,142, 25,237, 93,199, 68,177, 79,182,170,245, 33, +206,189, 14, 72,170,213,106,179,186,117,235,102,115,222,239, 60,160,233, 3, 13,134, 92,239, 49,224,229,132,157, 5,230, 4, 0, + 16,196, 22, 8,185,238,229, 44,125,118,118,118,187,187, 29,180,171, 87,175,154, 30,123,236,177, 31, 75, 75, 75,135, 2,184,237, +214,252,239,127,244,249,251,247, 97,202,168, 1, 76,187,205,115,175, 23, 20, 20,116,116,217,246,183, 32,168,132,113,237, 42, 44, +218,207,229, 87,250,216, 98, 86,171, 53,189,122,245,234, 21,114,110, 44, 22, 75,186,175,253,174, 99,132, 57,227, 52,130,241,254, + 1,160,172,243,119,129, 95,156, 6,131,161,176,101,203,150,226, 10,198, 45,215,223,184,199,198,198,162, 74,149, 42,142, 95, 1, +174,219,125,133,211,106,181,166,199,199,199, 35, 34, 34,194,227,136,239,174,109,178,252,225,172,236, 52,242,198, 89,165,202,210, + 74,231,188,221,112, 82,248,135,206,148,147,114, 82,206,251,150, 83, 68,239, 39,229,164,156,148,243, 30,114, 62,112, 32,132,128, +182, 82,163,160,160,240, 4, 27,189, 5, 20, 20, 20, 20,119, 6,198,139, 42,173, 72, 79,159,219, 81,182,219, 40, 39,229,164,156, +148,147,114, 82, 78,202,249,208,113,250,226,174,236,158,198,255, 26,238,100,120,156,187, 41,192, 40, 39,229,164,156,148,147,114, + 82, 78,202,249,240,113, 62,112,160, 85,135, 20, 20, 20, 20, 20, 20, 20, 20,119, 17, 84,104, 81, 80, 80, 80, 80, 80, 80, 80, 80, +161, 69, 65, 65, 65, 65, 65, 65, 65, 65,133, 22, 5, 5, 5, 5, 5, 5, 5, 5, 5, 21, 90, 20, 20, 20, 20, 20, 20, 20, 20, 20, + 20, 20, 20, 20, 20, 20, 20, 20,247, 21, 8, 33,101, 83,240,108,216,176,193, 49,208, 67,106,106, 42, 67,111, 13, 5, 5, 5, 5, + 5, 5,197,189,196,131,170, 69, 56, 42,176, 40, 40, 40, 40, 40, 40, 40,254, 11,120, 16,181, 8,235, 78, 73, 82, 80, 80, 80, 80, + 80, 80, 80,220,107, 60,136, 90,132,125,144, 85, 36, 5, 5, 5, 5, 5, 5,197,253,131, 7,222,209,162,174, 22, 5, 5, 5, 5, + 5, 5,197,191,133,251, 88,139, 16,251,226,188, 78, 65, 65, 65, 65, 65, 65, 65, 65,113,135, 2,203,227, 47,157,235,144,130,130, +130,130,130,130,130,226,246,193,184, 89,191,167,110, 22,157,217,156,114, 82, 78,202, 73, 57, 41, 39,229,164,156, 15, 37, 28,227, +104, 81, 80, 80, 80, 80, 80, 80, 80, 80,220,153,174,114,250,239,112,186,168,208,162,160,160,160,160,160,160,160,184,115,145,197, +184, 91,167,109,180, 40, 40, 40, 40, 40, 40, 40, 40,238, 18,168,163, 69, 65, 65, 65, 65, 65, 65, 65,113,103,112,109, 4, 79,171, + 14, 41, 40, 40, 40, 40, 40, 40, 40, 42, 89,108,185,221,232,169,231,192,182, 10,144,223, 78,239,131,109,148,147,114, 82, 78,202, + 73, 57, 41, 39,229,124,232, 56,125,113,111,195,253,135,118, 0,118, 0,104,111,255, 5, 0,134,144,187, 63,210, 3,237,250, 74, + 57, 41, 39,229,164,156,148,147,114, 82,206, 7, 29,174, 3,150,150,173,208, 1, 75, 41,252, 0, 7,239, 85,204,190,246, 83, 80, + 80, 80, 80, 80, 60,108, 98,139, 56,191, 36,221,161, 38,128,247, 1, 4, 59,109, 59, 4, 96,186,203,113, 63, 1, 80, 56,173,107, + 1, 76, 2,112,201,103,104, 8,145,216,249,101,246,133, 7, 96, 0, 96, 4, 80,202, 48,140,133,166,217,191,142,150, 0, 82,237, +255, 55, 0,216, 95,193,253, 15, 20, 98, 99, 99,229,161,161,161, 93,143, 29, 59, 38, 61,123,246, 44,118,239,222, 77,190,249,230, + 27,115, 81, 81,209,150,172,172, 44, 61,205, 46, 15, 4,186, 1, 24,107,255, 63, 3,192,230, 59,228, 99, 20, 10,197, 72,165, 82, +217, 67, 38,147, 85,177, 90,173,140, 78,167,203,212,106,181, 91,173, 86,235,103,246,114,175,162,232, 19, 22, 22,246,114,157, 58, +117,106,166,165,165,101,100,102,102,254, 4, 96, 21,128,126, 85,170, 84, 25,152,152,152, 24,119,254,252,249, 75,133,133,133,223, + 2, 88,247, 47,134,147,130,226, 97, 2,227,205,141,112,135, 9,132,144,129,229, 24,152, 91, 57, 58,118,236,216,123,203,150, 45, + 10,158,231, 33, 44,114,185,220, 10, 96,176, 15,145, 21,190,111,223,190,132,161, 67,135, 62,153,153,153,217,172,180,180,244, 81, + 0, 80, 40, 20, 7,163,162,162, 14,207,155, 55,239,103, 66, 72, 58,195, 48,165, 21,140, 40, 39, 22,139, 95, 10, 13, 13,237, 97, +181, 90,155, 16, 66, 32, 22,139,143, 21, 21, 21,109,182, 88, 44,223, 2,184, 29,241, 38,229, 56,110,152, 76, 38,235,102,181, 90, + 27, 2, 0,199,113, 39,141, 70,227,102,171,213,250, 5, 0,211,109,112, 6, 72,165,210, 97, 42,149,170,139,201,100,106, 8, 0, + 82,169,244,164, 90,173,222,106, 50,153,190,176, 11,206,127, 27, 28,128, 84, 66,136, 24, 0, 68, 34, 81,159, 71, 31,125, 52,129, + 97, 24,158, 97, 24, 66, 8, 97, 14, 30, 60,216,216,102,179,177,246,252,145, 10,224, 48, 0,235,253,248,132, 68, 68, 68, 76,227, +121,190,138,215, 68, 11, 8,104,118,236,216,177, 58, 43, 87,174,180,125,253,245,215,197, 67,134, 12, 9, 28, 58,116, 40,247,249, +231,159,127,145,149,149,245,166,235,241,225,225,225,179, 89,150,141,240,231,250, 60,207,231, 23, 20, 20,188, 67,203,170,127, 29, + 99,191,220, 86,218,150, 16, 96, 88,151, 32,246, 78,133, 86, 92, 92,220,146, 23, 95,124,113, 64,195,134, 13, 57, 66, 8, 44, 22, + 11,140, 70, 99,157,253,251,247,183, 95,179,102, 77,179,210,210,210,126, 21,164,124,245,189,247,222,155, 50,121,242,228, 8,177, + 88,204, 88, 44,150, 26, 43, 87,174,108,242,250,235,175,191,181,104,209,162,170,207, 62,251,108,144,176,125,194,132, 9,205,103, +204,152,145, 12,224,179,127, 33,156, 20, 20, 15, 27,218,161,124, 27,173,137, 0, 62,246, 38,180,148,246,151,103, 14,202,156, 44, + 56,253, 58,176,125,251,246,245, 28,199, 9,142,214,163, 90,173, 54, 26,229, 93, 48,119, 34, 43,113,208,160, 65, 45, 87,175, 94, + 61,237,217,103,159,205, 86, 40, 20,181,158,122,234,169, 82,134, 97, 68, 43, 87,174,108, 92,189,122,117,121,175, 94,189, 6,117, +236,216,113, 20, 33,100, 55,195, 48,121,126, 70,178,126, 88, 88,216, 47,159,124,242, 73, 66,183,110,221, 36, 17, 17, 17, 32,132, + 32, 51, 51, 51,110,227,198,141,221, 39, 78,156, 56,170,176,176,176, 47,128, 51, 21,184,113,205,229,114,249,234,137, 19, 39,198, +118,239,222,157,139,137,137,129,193, 96,192,217,179,103, 59,111,222,188,185,237,162, 69,139,222,212,235,245,207,216, 5,134,191, +120, 52, 56, 56,120,205,247,239,189, 23,221,226,165,151,184,176,176, 48, 16, 66,144,151,151,215,121,207,210,165,237,223,248,228, +147, 55, 75, 74, 74,158,118,119,191,255, 77, 72,165, 82,118,217,178,101,143, 72,165, 82, 0,128,201,100, 66, 74, 74, 10,243,192, +124,138, 48, 76,124,102,102,102,176, 68, 34,113,187,223,102,179,161,109,219,182, 73, 18,137, 4,159,125,246,153, 37, 63, 63,191, +241,130, 5, 11,142, 45, 95,190, 60,226,139, 47,190,120, 6,192, 45, 66,139,101,217,136,244,244,116,183,156, 54,155, 13,102,179, + 25, 86,171, 21, 38,147, 9,245,234,213,163,197,212,127, 3, 9, 0,176,233,132, 1, 0,194,238,148, 76,169, 84,214,125,238,185, +231,184,188,188, 60,136,197, 98,152,205,102,100,103,103, 35, 37, 37, 69,244,227,143, 63,214,174, 40, 95,141, 26, 53,134,204,152, + 49, 35,114,211,166, 77,230,101,203,150,153,186,116,233, 34, 30, 50,100,136,170,109,219,182,245,226,227,227,217,239,190,251,206, +184,117,235, 86,203,160, 65,131,164,211,167, 79,143,220,184,113, 99,175, 51,103,206,124,118,175,195, 73, 65,241, 16, 98, 7,254, + 25,226, 65,248,245, 42,180,224, 36,174,250, 0,128, 88, 44,110, 28, 29, 29,189,196,106,181,198,216, 93,157,236,156,156,156,207, + 44, 22,203,113,251,177,235,120,158,239,237,203,201, 26, 52,104, 80,203,223,127,255,125,214,254,253,251, 75, 10, 10, 10, 98,214, +175, 95,111, 24, 53,106, 84, 26, 0, 92,189,122, 53,185, 87,175, 94,113,195,135, 15, 79,239,218,181,235,188, 14, 29, 58,140, 32, +132,108,101, 24, 70,235, 75,100,165,164,164,236,219,181,107, 87, 80, 72, 72, 72,185, 29,137,137,137, 24, 49, 98,132,164,119,239, +222,213, 59,117,234,180,247,242,229,203,109, 0,156,242, 71, 16,213,172, 89,115,219,246,237,219, 3, 67, 67, 67, 81, 92, 92,140, +236,236,108,232,116, 58,168, 84, 42, 60,251,236,179,146,118,173, 31,175, 58,124,228,155,219,210, 51, 50, 58,251, 41,182, 30,125, +188,126,253,109,203,167, 79, 15,180,220,184, 1,185, 92, 14,141, 70, 3, 0, 8, 10, 10, 66,179,164, 36,238,200,210,165,113, 3, +199,140,217,118,248,194,133,206,255,146,216,146,217,127,141, 0, 54,136, 68,162, 62, 82,169,148,237,211,167, 15,182,109,219,198, + 24, 12, 6,206,238,238, 88,251,244,233, 3,185, 92, 14,147,201,196,163,172,234,208,122, 63, 63, 37, 82,169, 20,151, 47, 95, 46, +183,173,180,180, 20,121,121,121, 40, 40, 40,128,209,104, 68,113,113, 49,120,158,103,228,114,121, 30,207,243, 96,217, 50, 67,207, + 19,167, 68, 34,193,133, 11, 23,202,109,179, 90,173,208,106,181, 48, 26,141, 48,155,205, 40, 45, 45,149, 7, 5, 5,213,140,136, +136, 72, 7,176,174,176,176,240,179,156,156,156,235,180,220,250, 87,112, 99,195,113, 67, 53,148, 57,213,215, 42,129,143, 7,128, +221,187,119, 35, 39, 39, 7,249,249,249,200,203,203, 67,124,124, 60, 8, 33, 21,174,142,187,124,249,242,151, 13, 26, 52, 96, 78, +159, 62,189, 25,192,231, 43, 87,174, 28, 92, 88, 88, 56,118,244,232,209, 97,159,126,250,105,225,152, 49, 99,102, 0,248, 97,229, +202,149,255,171, 91,183,110,143,115,231,206, 45,250, 55,194, 73, 65, 81,217, 32,132, 52, 7, 16,105, 95,205,183,151,187,225, 78, +235, 39, 24,134, 49, 57, 29,103, 2, 32,117,243, 43, 64, 88,207, 99, 24,230,176,211,121,121, 12,195, 28,190,221, 96,186,252,150, +125,116, 3,192,134, 13, 27,136,176,184, 59, 51, 42, 42,106,100,199,142, 29,103, 29, 61,122,180, 94, 86, 86, 86,104, 86, 86, 86, +232,209,163, 71,235,117,236,216,113, 86, 84, 84,212, 72,167, 27,225,122,234, 54,167,125,146,125,251,246, 37,252,242,203, 47, 51, +182,109,219, 86,210,184,113, 99,211,246,237,219,173, 93,187,118,205,181,191,160,173, 93,187,118,205,253,235,175,191,108, 45, 90, +180,144,255,254,251,239, 55,247,238,221, 59,123,245,234,213,209,132, 16,145, 59, 78, 59,196, 33, 33, 33,191,238,220,185,243, 22, +145,229,140,170, 85,171, 98,195,134, 13,170,144,144,144,117, 0, 36,158,194,105, 71, 64, 64, 64,192,154,191,254,250, 43, 48, 40, + 40, 8,185,185,185, 16,139,197,136,138,138, 66, 73, 73, 9,178,179,178,112,253,226, 69,176, 38, 19,230, 76,157, 28, 36,151,203, + 87,187, 36,160, 91,206,224,224,224, 53,203,167, 77, 11, 44,216,182, 13,127, 79,153, 2,179,217,236,168,114, 53,155,205,216, 59, +116, 40,242,254,252, 19,223, 77,152, 16, 24, 28, 28,188, 6, 64,128, 15,206,202,128, 51,231, 80, 0,133,246,101, 40,128,253, 41, + 41, 41, 71,207,158, 61,139, 54,109,218, 96,213,170, 85,141, 70,143, 30, 61,116,244,232,209, 67, 87,173, 90,213,168, 77,155, 54, + 56,123,246, 44, 82, 82, 82,142,162,124,251,172,187, 29,206,187,198,105,179,217,202, 45, 60,255,207, 59,166, 74,149, 42,185,191, +252,242, 11,158,125,246, 89, 86, 42,149,102,245,239,223, 95,182,103,207, 30, 98, 23,153,126,135,211, 96, 48, 64,175,215, 67,171, +213,226,234,213,171,242, 79, 62,249,164,245,199, 31,127, 92, 99,219,182,109,113,239,191,255,254, 27,145,145,145,199,162,163,163, + 19, 30,132,251,121, 31,114,102, 3, 48,163,172,189,233,245, 59,225,236,216,177, 99,131, 26, 53,106, 68,175, 60, 29,138, 34, 73, + 29,240,146, 16,240,146, 16,216,194,155,227,178,244, 9, 84,171, 86, 45, 58, 48, 48,176,101, 5,195,185,236,244,233,211,143,217, +191,148, 11, 0,204, 26, 51,102,204, 68,134, 97,118,143, 25, 51,102, 50,128, 89,246,237, 83,206,157, 59,215, 2,192,242,127, 41, +156, 52, 47, 81,206, 10,195,135, 22,137,100, 24,102, 3,195, 48, 27,198,141, 27,215, 1, 64,184,203,122, 43,231,227, 0, 72,221, +253, 10,139,211,246, 72, 66, 72, 79,167,243, 34,111, 51,248,140,155,229, 31,161, 5, 0,169,169,169, 76,106,106,170,176,227, 16, +195, 48,235, 1, 28, 18,139,197,141, 31,121,228,145, 62,127,252,241, 71, 80,100,228, 63,215,143,140,140,196,234,213,171,131,234, +215,175,223, 71, 44, 22, 55, 6,112, 72,165, 82,173,247,226,194,132, 12, 29, 58,244,201, 23, 94,120, 65,221,184,113, 99, 0, 40, + 62,115,230,140,162, 69,139, 22, 90,171,213,202, 88,173, 86,166, 69,139, 22,218, 51,103,206, 40, 44, 22, 75,105,243,230,205,149, +157, 58,117, 74,123,231,157,119, 6,185, 17, 28,206,120,110,230,204,153,241,161,161,161,222,148, 48, 74, 75, 75, 17, 29, 29,141, +161, 67,135,198,136,197,226,151,189,221, 45,142,227,134,205,156, 57, 51, 42, 36, 36, 4, 69, 69, 69,136,143,143,135,201,100,194, +133, 11, 23, 96,208,106, 96, 41, 85,195,162, 46, 70,222,149, 75, 8, 17,115, 24,212, 59, 53,154,227,184, 97, 62,220,146, 97,223, +142, 25, 19,109, 74, 75,195,213, 85,171, 96,179,222,106,254, 88,205,102,156, 92,188, 24,134,244,116,204,120,229,149,104,169, 84, + 58,236, 30, 59, 89,159, 18, 66,228,132, 16, 57,195, 48,243, 90,182,108,249,163, 92, 46, 31, 58,125,250,244,110, 91,182,108,233, +190,107,215,174,246, 86,171, 85,108,181, 90,197,187,119,239,110, 99, 48, 24, 56,153, 76, 6,142,227, 8, 30, 80,136,197, 98, 72, + 36, 18,200,229,114,180,110,221,250,202, 55,223,124, 99,137,143,143, 23,175, 89,179, 38,180, 74,149, 42,202,207, 63,255,188,184, +180,180,116,166,191,124,102,179, 25, 70,163, 17,122,189, 30, 6,131, 1,219,183,111, 79, 26, 62,124, 56,103, 48, 24,108,189,122, +245, 42,180, 88, 44,198, 49, 99,198,168,194,194,194, 70,209,111,216,127, 5, 86, 0, 26,187,208, 50,186, 60, 31, 13,157, 28, 95, +159, 40, 46, 46, 94,244,237,183,223,198,179,178, 16,236, 49,245,192,207,252, 68,108, 9,254, 28,185, 9,239, 34, 42,190, 6, 6, + 12, 24, 16, 69, 8,249,188, 18,194,188, 0, 64, 91, 0,243,110,231,228,123, 16,206, 4,165, 82,185, 42, 40, 40,104,143, 82,169, + 92, 5,123,245,236,157,160, 75, 13,116,238, 93,151, 77,239, 82, 29,164,119, 93, 54,189, 75, 13, 58,212,192,131, 2, 23, 45,226, +140, 60, 66, 72, 42, 33, 36,117,198,140, 25,211,156,222,239,194,186,220, 79,103, 44,149, 16,146, 90, 78, 33,149, 9,172, 59, 54, +221,220, 44,101,154,194, 89, 73, 58, 69,206,209,187, 48, 58, 58,122,201,146, 37, 75,130, 92, 25,179,178,178,160, 86,171, 49,126, +252,248,160, 23, 94,120,225,205,244,244,244, 23,125, 4, 66,154,157,157,221,100,224,192,129, 1,102,179,185,136,231,121, 86,173, + 86,115,193,193,193, 54,225,128,224,224, 96, 91, 73, 73,137, 88,171,213,138,108, 54,155,241,133, 23, 94,144,190,242,202, 43,205, + 0,136, 60,145, 70, 70, 70,118,233,209,163,135,212,211,126,139,197, 2,173, 86, 11,173, 86, 11,179,217,140,214,173, 91,203,190, +249,230,155,174,185,185,185, 11, 61, 42, 14,153,172, 75,151, 46, 93,196,133,133,133, 8, 14, 14,198,245,235,215,113,237,218, 53, + 24, 53, 26,152, 53,106,152, 53,165,176,150,170, 65,212, 37, 40,184,116, 30, 45,234,214,145,252, 36,147,117,211,106,181,179, 61, +113,170, 84,170, 46, 45, 6, 15,230,148, 74, 37,218, 15, 44,235,103,240,123,221,186, 32, 54, 27,120,155, 13, 54,171, 21,221, 46, + 92,128,197, 98, 1,203,178,104, 94, 88,200,169,150, 46,237,146,151,151, 55,235,223,200,236, 50,153,140, 91,182,108,217,115, 82, +169, 20,132, 16,198,100, 50, 97,203,150, 45, 15,221, 67, 47,149, 74, 17, 16, 16, 0,179,217,140,196,196, 68,253,192,129, 3,247, + 77,157, 58,181, 26,203,178, 74,137, 68,242, 71, 65, 65,193,180,172,172,172,171,254,242, 89, 44, 22,152, 76, 38,152, 76, 38,232, +245,122, 92,185,114, 37, 38, 41, 41,137, 25, 58,116,168, 77,167,211, 37,207,159, 63,255,242,150, 45, 91, 20, 51,103,206,124, 10, +192, 8, 90,236,222,219,228, 6, 16, 92, 45,156,211,138, 69,208, 0, 8,178,139,130,167, 24,134,105, 81,175, 94,189,208,179,103, +207, 22, 17, 66, 14, 0,248, 25, 64,150, 55, 50,158,231, 25,158,231,241,250,163,197, 24,218, 82, 4,139,165, 4, 37, 37, 37,184, +126,253, 58,206,156, 57,131,131, 7,207,220,238,179,249,114, 96, 96, 96,215,128,128,128, 68,171,213,202,106, 52,154,235, 58,157, +110, 27,207,243,139,224, 82,101,225, 15,238, 86, 56, 5, 40,149,202, 79,222,127,255,253,199,131,131,131,113,252,248,241,228, 21, + 43, 86,124,162,213,106,239,168,113,125,128,152,253,110,246,220,207,227,226,162, 66,112, 98,215,111,113,211,190, 90,249, 29,192, +199,211, 44,124,255,195, 69,139, 56,139,161,195,132,144,158, 12,195,108,112, 21, 74, 21,178,157,238,240,124, 31,142,150,235,196, +210,229,133,150, 7, 5, 9,171,213, 26,227,236,100, 17, 66,144,149,149,133,140,140, 12,228,229,229, 33, 52, 52, 20,102,179, 57, +198,159,242,161,180,180,244,209,240,240,112,157, 88, 44, 54,234,245,122, 40, 20, 10, 94, 44, 22, 19,251,117, 24,123,175, 69,155, +209,104,100, 56,142,179, 4, 5, 5, 5, 26,141,198, 58,240,210,150,140, 16,242,104,120,120,184,219,125, 70,163, 17, 26,141, 6, + 90,173, 22, 26,141, 6, 70,163, 17,209,209,209,176, 90,173, 77,188,126,210, 90,173, 13, 35, 35, 35,145,153,153, 9,185, 92,142, +244,244,116,152, 52,165, 48,151,150,194,170, 85,195, 86, 82, 2, 94,173, 6,175, 85,195, 98,210, 33,174, 86, 93, 8, 61, 18, 61, +193,100, 50, 53, 12, 15, 15,135, 86,251, 79,115, 51, 98, 23, 88, 86,171, 21, 86,123,227,104,161, 58, 49, 34, 34, 2, 66,143,196, +123, 4, 35,128,209, 44,203,206,147,201,100,220, 27,111,188,129,172,172,172,114,121,226,141, 55,222,112,180,201,106,219,182,237, +238,128,128, 0,107, 94, 94, 30,140, 70,163,248, 65,125,232, 25,134, 1,195, 48,101,105,100,181, 34, 34, 34, 66,155,159,159,127, +176,184,184,248,185,219,225,179, 88, 44, 66,143, 46,232,245,122, 16, 66,112,252,248,113, 4, 4, 4,136,109, 54,219,105,171,213, +170, 16,139,197, 96,237,141,191, 40,238, 25,218,215, 9,145,206,158,222, 34, 42,228,145, 94, 74,173, 66, 42,210,242,215, 31, 73, +252,254,211, 51, 43, 94, 24,244,114,208,164, 73,147, 18, 34, 34, 34, 2, 46, 95,190,108,152, 60,121,114,210,178,101,203, 24,148, + 85,211,121,196,141, 27, 55,214,190,255,254,251, 97, 61,122,244, 72,150,201,100, 76, 73, 73, 9,242,242,242,144,147,147,131,107, +215,174,145, 19, 39, 78, 92, 49, 26,141,171, 42, 18,200,216,216,216,111,158,123,238,185, 23,154, 54,109, 42, 22, 28, 82,173, 86, +219,120,231,206,157,189,127,255,253,247, 54, 90,173,182,194,249,242,230,205,155,171, 62,248,224, 3,229, 19, 79, 60, 81, 71, 38, +147,177,149, 17, 78,103,176, 44, 27, 29, 24, 24,136,109,219,182, 33, 36, 36, 4, 44,203, 70,223,105, 98, 25,204,124, 92,149,152, +112, 24,246,206, 70,157,200, 4, 24,204,124, 28,205,194, 15,142,163,229,225, 93,223, 92,112,164,124,136, 37,253,216,177, 99,223, +103, 24,102,195,216,177, 99,223,119,231,104,217,255,218,156,143,115, 58,222, 88,217, 98,171, 66, 3, 77,242, 60,143,140,140, 12, +100,102,102, 34, 35, 35, 3, 5, 5, 5, 96, 89, 22,132, 16,127,122,159, 17,134, 97,248,173, 91,183,134,238,219,183, 79,219,188, +121,243, 98,161,253,139,213,106,101, 44, 22, 11, 99,111, 23,195, 92,191,126, 93,178,103,207,158,144,115,231,206, 69,163,172,193, + 26,239,195, 10,188,101,155, 32,176,156, 23,131,193,128,128,128, 0,255, 84,135,253, 69,120,252,232,209, 50,145,165, 41,181, 87, + 25,150,192,166, 46, 1,209,150, 66,106,179, 64, 10, 2,198,160,243,251,254, 57, 67, 16, 89,102,187,208, 50,153, 76,176, 88, 44, +224,121, 30, 86,235,191,210,174,252,203, 70,141, 26, 53, 89,187,118,237,144,140,140,140, 91,118,246,237,219, 23, 35, 70,140,192, +240,225,195,207,245,236,217,243,196,111,191,253,134, 97,195,134,129,231,249, 71, 0,148, 0,248,253, 65,123,232,141, 70,163,195, +129, 50, 24, 12, 48,155,205,128,151,198,239,190,242,166,144,182, 86,171, 85,224,102,214,174,253, 5,187,119,239,102,207,156, 57, + 29,255,198, 27, 67,133, 6,247,180,196,189, 55,120, 66,202, 50, 95,143,108, 24, 22, 48,170, 81,184, 86,202, 49,154, 11, 95,191, +175,185, 86, 77,165,141,174,170, 48,197, 39,133, 84,153, 54,109,106,236,185,115,231,141,227,199,143, 63,219,191,127,255,168, 81, +163, 70,213, 91,179,102, 77, 27,131,193,240, 45,128, 98, 79,166, 75,239,222,189, 15, 68, 69, 69, 37,125,245,213, 87,185, 55,111, +222, 12,181, 88, 44, 74,179,217,204,107,181,218,107,122,189,126,155,217,108,222, 6,224,104, 69, 2, 27, 20, 20,212,104,240,224, +193,226,226,226, 98,112, 28, 7,179,217,140,220,220, 92, 60,254,248,227,162,245,235,215,215,191,157, 27, 80, 84, 84, 52,251,219, +111,191,221,177,124,249,242,174, 42,149,170,169, 76, 38,139, 1, 96, 43, 45, 45,205,209,106,181,127,223, 78, 56,203,149,115, 54, + 91,206,209,163, 71,171,171, 84, 42,220,184,113, 3, 54,155, 45,231, 78, 19, 45, 64,194,222, 60,185,107,125,213,186, 17, 73,216, +179,239, 0, 2, 36,236, 77, 58,212,215, 3, 15,161, 13, 21,156, 5,148, 27,129,180,111,250,244,233,242, 25, 51,102, 96,250,244, +233,167,221, 57, 90,130,224,154, 62,125,250,105,225, 56,167,227,119,221, 65, 24, 61, 59, 90,158, 20, 36, 80,214,187, 48, 47, 47, + 47, 52, 36, 36,196, 33,176, 50, 51, 51,145,153,153, 9,169, 84,138,235,215,175, 67, 42,149,102,249,243, 17, 34,151,203,143, 52, +110,220,184,246,213,171, 87, 37,147, 39, 79,174,122,244,232, 81,213,227,143, 63,222, 64, 46,151,219, 8, 33, 48, 24, 12,236,217, +179,103, 3,103,205,154, 21,247,232,163,143,154, 30,125,244,209, 99, 43, 87,174,212,195,203,248, 87, 12,195, 28,202,202,202, 74, + 78, 76, 76, 20, 68, 91, 57,113,229, 44,184,128,178, 42, 79,142,227,142,121, 11, 40,199,113, 39, 47, 92,184,208, 89, 17, 32,131, +169, 84, 13,179, 70, 13,107,105, 41,108,165, 37,176,149,148, 0, 90, 53,164, 86, 43,196, 54, 11,228, 1, 1,200, 72, 79, 7,199, +113, 39,189,113, 74,165,210,147, 57, 57, 57,157, 67, 66, 66, 28, 47, 81,139,213, 90,182,216,108, 48, 89,173, 14, 71, 75, 44, 22, +227,230,205,155,144, 74,165, 39,239,117, 78,102, 89,214, 38, 12,225,224, 33, 30,136,142,142,230, 91,180,104,129, 97,195,134,193, +102,179,217,147,129,105, 15, 96, 15,202,218,183,220,151,112, 39,110,133, 70,235,122,189, 30, 26,141, 6, 69, 69, 69,156, 92, 46, +175, 29, 23, 23,119,192,100, 50,173,178, 90,173,223, 93,187,118, 77,237,137,211, 46,204, 28,162,139,231,121, 16, 66, 96,179,217, + 96,177, 88, 32,145, 72,248,157, 59,119, 97,214,156, 79,176,228,187,101,164,119,239,222,204,250,245,235,193,243,124, 58, 45, 87, +239, 9, 62, 43,254,121,106, 0,172, 54,173,113,231,114,205,143, 23,213,218, 73, 63,206, 61, 98,146,138,212,205,218, 69, 55, 76, + 78,170, 45, 10, 9, 9,101, 23, 46,154, 87,240,211,178,213,151,111,220,184,161,254,226,139, 47, 90,214,174, 93, 59,248,239,191, +255,142,243, 36,180, 20, 10, 69,205,151, 95,126,121,112, 81, 81,145,100,201,146, 37, 43,179,178,178,142,160,108,104, 25,231, 30, +212, 61, 1,252,128,178, 42,203,104,123, 57,183, 7,192,100,111,223,107, 12,195,224,175,191,254,186,165,119, 32,127,103,234, 60, +164, 70,141, 26,207, 94,189,122,117,119, 78, 78,206,211,174, 59, 37, 18,201,164, 90,181,106,117, 59,125,250,244, 68, 0,155, 42, + 66,172,211,233,198,172, 94,189,250, 83,145, 72, 84,197,102,179,101,234,245,250, 49,119,236,104, 89,248, 87,166, 47, 92,177, 88, +111,178, 85,147, 75, 69, 55, 12, 22,254, 85,154,149, 31, 92, 55,203,142, 60, 39, 55, 42, 15,101,243, 8, 58,175,255,109,127, 25, +153, 8, 33,194,177,121, 78, 46,150,201,197, 5,115,183, 47,239, 14, 6, 75,119,215,227,144,241,230,104,141, 3,240, 40,128, 67, + 57, 57, 57,243, 94,120,225,133, 89, 63,253,244, 83,144, 90,173, 70, 78, 78, 14,114,115,115,193,113, 28, 84, 42, 21,190,252,242, + 75,125, 78, 78,206, 60,231,115,112,235, 8,242, 0, 96,136,136,136, 56,178,108,217,178,152,175,191,254,154,123,241,197, 23,175, +247,236,217,179,206,151, 95,126,121, 85, 34,145, 16,155,205,198, 24,141, 70,230,245,215, 95,175, 62,103,206,156, 52,145, 72,164, +120,246,217,103, 25,165, 82,121, 8, 94,134, 13,200,203,203,219,250,235,175,191, 62,249,206, 59,239,200, 76, 38,147, 91, 39, 75, +216, 22, 18, 18,130,189,123,247,154,138,138,138,182,248,112, 49,182,254,177,105, 99,219,231,251,247,151, 88, 74,213,176,148,170, + 97, 85,171, 97, 43, 45, 6,163, 81, 67,108,179, 66, 46,225, 17, 19, 31, 0,171, 62, 16, 27, 15,255,109, 49, 26,141, 94, 7, 54, + 84,171,213, 91,247, 44, 89,210,254,209,132, 4,110,239,200,145, 48, 91, 44,120,226,194, 5,135,184, 50,155,205, 88,215,176, 33, +108, 12,131, 71, 94,123, 13,151,172, 86,171, 90,173,222,250, 95,124, 24, 78,156, 56,145, 59,112,224,192,163, 60,207, 55,169,136, +187,243, 95,135,197, 98,185,197,141,178,217,108,101,174, 99,153,115, 32,221,184,113, 99,219,179,103,207, 74, 78,157, 58,133,221, +187,119, 63,242,211, 79, 63,141,171, 86,173, 90,195, 27, 55,110,100,251, 18,111,238, 6,253,133,189,253,225,202,229,171,240,191, +255,253,143,201,206,206,198,207, 63,255, 12, 95,131,167, 82, 84, 26,180,176,218,228,166,157,203, 53, 61, 55,221, 40,221,159,165, +159, 12, 96, 51, 12, 54,114,233, 24, 57,209,180,105,104, 4, 0, 24, 13,182,152,154, 53,107,182,227, 56, 78, 10, 0,129,129,129, + 77,195,195,195,191, 44, 40, 40,104,237, 46, 77, 83, 83, 83, 91, 68, 69, 69, 53,254,253,247,223,255,206,202,202, 58, 13,224,160, +235, 65,213,171, 87, 31,127,238,220,185,230, 98,177,152,241,145, 71, 0, 0,237,218,181,171, 45,147,201,194, 55, 93, 12,134, 90, + 82, 3, 68, 84, 2,112, 1,176,133, 52,194,117, 73, 61,196,199, 31, 8, 47, 42, 42,122,164,164,164,228,239, 10,222,131, 14, 79, + 62,249,228,119, 75,150, 44,137,111,215,174, 29, 57,118,236, 24, 11, 23,123,168,122,245,234, 93,247,239,223,223,228,213, 87, 95, +253,106,197,138, 21, 67, 81,190,167,173, 47, 92,183,143, 55, 88,105,216,122, 25,219, 0, 91,130,221, 51,163,185,248, 33, 64, 69, +134, 92,184,131,225, 25,238, 40,136, 30, 13, 12, 15,219, 31,181,143,137,245,168,197, 98, 57,126,226,196,137,117,207, 62,251,172, +166,160,160, 0,225,225,225, 72, 76, 76, 4,195, 48,248,242,203, 47,245,215,174, 93, 91, 99, 31, 75,235,209,204,204,204,222,118, +177,229, 14,165,243,231,207, 95,177,116,233,210,144,163, 71,143,138,172, 86,171,170, 78,157, 58,186,125,251,246, 5,138,197, 98, + 34,145, 72,248,163, 71,143, 42,170, 87,175,110, 96, 24, 70,246,231,159,127, 22, 28, 56,112,160,218,232,209,163,191, 69, 89,119, +107, 79, 88, 62,101,202,148,140,171, 87,175,194,104, 52, 66,173, 86,163,164,164,196,177, 20, 23, 23,163,164,164, 4, 98,177, 24, +217,217,217,248,229,151, 95,178,236,163,196,123,115, 54,190,248,252,203,133,121, 89, 55,174, 67,165,144,195,170, 46,134,173,164, + 0, 40, 45,129,212, 98,134, 82,108, 67,213, 26,114, 4, 40, 84,200, 81,107,176,100,223,225,108,251, 40,241, 30, 97, 50,153,190, + 24, 49,103, 78,142, 85, 34, 65, 66,191,126, 48,219,171, 10,157,133,150,141, 97, 80,173, 83, 39,176,193,193,152,182,102, 77,142, +125,148,248,123, 10,158,231, 69, 38,147,201, 91, 60,192,243,124,250,217,179,103, 87, 0,216,193, 48, 12, 97, 24,134,160,108,176, + 54,205,253,252, 32, 91, 44, 22, 76,152, 48, 1, 18,137, 4, 19, 38, 76,192, 71, 31,125,132, 89,179,102, 97,225,194,133,248,241, +199, 31,177,113,227,198,164, 61,123,246, 72,118,237,218, 69,166, 79,159,158, 95,189,122,117,209,107,175,189, 22, 34,151,203,223, +246,198, 57,102,204, 24, 4, 5, 5, 97,204,152, 49,248,228,147, 79,240,205, 55,223, 96,221,186,117,216,187,119, 47, 68, 34, 17, +159,158,126, 19, 6,131,129,204,159, 63, 63, 99,221,186,117,250,121,243,230,129,227, 56,134, 22,173,247, 4, 31,200, 7,126,120, + 54,100,241,249, 43,251,179,244, 31, 0,248, 67,248, 34, 85,169, 84,242,181,107,127,229, 0, 96,205,234, 95,196, 23, 46, 92, 8, +254,245,215, 95, 3,162,162,162,240,227,143, 63, 6,200,229,242, 40, 15,156,182,117,235,214, 25,165, 82,105,248, 43,175,188,210, +189,121,243,230,111,217, 63, 68, 59, 1,168,143,178,222,139, 93,174, 92,185,114, 38, 34, 34,226,226,150, 45, 91,180,254, 4,180, +180,180,244,219, 31,126,248, 33,177,208, 22,134, 77,218, 39,177,132,255, 20, 27, 67,190,195,245,132,143,160,168,210, 12,207, 61, +247, 92, 21,155,205,182,184,130,241,127,174,111,223,190, 63, 44, 89,178, 36,254,149, 87, 94,201, 62,118,236, 88, 14,128, 37, 0, +150, 57, 47,231,206,157,203,127,225,133, 23,178, 22, 47, 94, 28,251,236,179,207, 46, 4,240, 52,205, 58, 20, 20,229,191,133,224, +161,215,161,167,194,124,157,213,106,237,205,113,220,122,148, 31,176,244, 77,147,201, 20,203, 48, 12,145, 72, 36,217, 57, 57, 57, +243,156, 7, 44, 77, 79, 79,239, 29, 31, 31,239, 56, 7,101,179,123, 59,143,165,165,122,226,137, 39, 58,239,223,191,127,193,134, + 13, 27,114, 75, 75, 75, 3, 87,175, 94, 45,159, 49, 99,198,117,158,231,201,123,239,189,151,208,173, 91, 55,157,205,102,203,122, +237,181,215,170, 39, 37, 37,189,118,238,220,185,109, 12,195, 56, 11,173,114,156,118,212,175, 81,163,198,222, 53,107,214,168, 66, + 66, 66,144,155,155,139,194,194, 66,104,181, 90,216,108, 54,136,197, 98,228,229,229, 97,242,228,201,234,204,204, 76,119, 3,150, +186,227,124, 52, 49, 46,110,235,188,137, 19,130, 66, 56, 22, 5,231,207,194, 90, 84, 0,177,213,130,170,245,131, 33,145,202,113, +233, 66, 41,222, 94,254, 75,233,141,194, 98,119, 3,150,186,229,108, 86,179,230,182,175, 70,143, 14, 52,220,188,137,216,151, 94, +130, 78,167,131,217,108, 6,203,178,184, 50,111, 30, 36,145,145, 24,191,114,165,246,244,141, 27,157,112,235, 80, 25,238, 56,239, + 20,206,156, 67, 25,134,113, 52,134,239,219,183,111,185, 3,127,253,245, 87, 44, 92,184, 16, 70,163,209, 74, 8,121, 19,192,151, + 0, 2,237,187, 53,247, 48,156,149,206, 25, 22, 22, 54,239,247,223,127, 79,140,138,138, 98,156, 71,108,183,139, 79, 0,192,176, + 97,195, 58, 29, 56,112, 64,214,184,113, 99, 99,126,126,126,243,200,200,200,237,203,150, 45,139,120,246,217,103, 51,207,156, 57, + 19,231,202, 25, 30, 30, 62,107,205,154, 53, 53,106,212,168,193, 10,174,152,107,245,228,144, 33, 67, 58, 47, 91,182, 76,250,228, +147, 79, 26,181, 90,109,116, 80, 80,208,229, 53,107,214, 68,244,233,211, 39,251,204,153, 51,177,247,235,253,124, 16, 56,235,215, +175,127,233,244,233,211, 53,132,117,189, 94,143,188,188, 60,228,231,231, 35, 36, 36, 4, 93,186,116,185,146,150,150, 86,195, 3, +103,227,103,158,121,102,226,226,197,139, 59, 43,149, 74,201,174, 93,187,180,219,182,109, 51, 92,191,126,221,106,177, 88, 72,108, +108, 44,215,186,117,235,128, 30, 61,122, 40,101, 50, 25,251,225,135, 31,230, 79,157, 58, 53,130, 97,152,229, 0, 6,186,227,108, +220,184,241,193, 63,254,248,227, 81,134, 97, 32, 18,137, 96, 50,153, 81, 92, 92,140,140,140,116,156, 57,115, 6,251,247,239,199, +150, 45, 91,254,214,106,181,141,253,140,123, 56,128, 93, 70,163,177,142, 84, 42,245, 91,216,219,108, 54,112, 28,119, 30, 64, 87, + 0,233, 52, 47, 81, 78,138, 50,137, 3, 55,141,225, 9, 33, 94,123,243,193,238, 78,173,179,127,153, 31,114, 51,132,195, 56, 0, + 19,156, 92, 48, 95,118,158,154, 16,178,187,115,231,206,195, 58,117,234, 52,167,107,215,174, 89, 89, 89, 89,201,179,103,207,142, +183, 90,173,230, 51,103,206,176,151, 47, 95,190,126,228,200,145, 26,181,106,213,122,237,220,185,115, 59, 93, 68,150, 39,156,185, +124,249,242,227, 29, 58,116,248,229,181,215, 94,171,214,162, 69, 11,105, 72, 72, 8, 56,142,195,213,171, 87,241,247,223,127,155, + 86,174, 92,153, 94, 92, 92, 92,145, 41,120, 14,165,101,100,116,121,118,248,155,107, 94,235,219, 43,226,177, 58,181,165,177,177, +177,128, 94,143,243, 55,178,113,224,252,223,230,111,118, 31,200, 51, 26,141, 79,195,255, 41,120, 14, 29,185,116,169,115,199,209, +163,215, 76,122,254,249,104,100,101,113,177,177,177,144, 74,165,184,118,237, 26, 46,243,188,117,230,162, 69, 57,106,181,250,223, +152,130, 71, 6,224, 83,158,231, 57, 0,144,203,229, 24, 49, 98, 4,156,167,220, 89,184,112, 33,244,122, 61, 0,112, 12,195,124, + 10,224,187,251,221,197, 18, 80, 88, 88, 56,254,137, 39,158,152,206,113,156,199, 81,111, 67, 67, 67, 81, 90, 90, 10,171,213,106, +203,200,200, 56, 31, 26, 26, 10,177, 88, 12, 66,136,219,231,168,160,160, 96,252,211, 79, 63, 61,133,101, 89, 79,206, 7, 84, 42, +213,245,237,219,183,215,124,245,213, 87,217,239,191,255,254,234, 43,175,188, 34,219,190,125,187,141, 16,242, 11, 45,183,254, 99, +165,168, 83,199, 6,251, 71,156,183,161, 20,142,175, 94,189,122,206,145, 35, 71, 34,135, 13, 27,150,252,252,243,207,171, 58,116, +232, 16,232,124,128, 94,175,231,127,251,237, 55,237,194,133, 11, 75,118,239,222,157, 54,100,200,144, 22,240, 50,119,234,141, 27, + 55, 54, 78,155, 54, 45,184, 71,143, 30,181, 0, 56,218,103,229,229,229,225,250,245,235, 56,117,234,212,117,179,217,188,190, 2, + 81, 42, 0, 48,105,192,128, 1,159, 46, 93,186,180,202, 43,175,188,146,189,114,229,202, 83, 40, 27,176,216, 21, 33,125,251,246, +109,184,116,233,210,216, 87, 94,121, 37, 27,101,237,200,104, 59, 66, 10,138,127,208, 30,183,182,211,242,250, 1,243,131,201,100, + 34, 6,131,129,232,116, 58,162,209,104, 8,220,207, 2,191, 46, 51, 51,147,164,167,167,147, 27, 55,110,144,180,180, 52, 2,224, + 71, 23,197,235,174,192, 82,254,244,211, 79, 53,226,226,226, 38, 42, 20,138,205, 34,145, 72, 45, 18,137,212, 50,153,236,143,240, +240,240,143,102,206,156, 25, 71, 8,145,120, 81,209,158,192,137,197,226, 87,163,162,162,214,133,133,133,165,135,134,134,166, 71, + 69, 69,173, 19,139,197,255, 3, 32,246,161,204, 61, 33,128,227,184,119,149, 74,229, 86,153, 76,150, 43,147,201,114,149, 74,229, + 86,142,227,222,133,247,129, 84,189,114, 74,165,210,119, 35, 35, 35,183,170, 84,170, 92,149, 74,149, 27, 25, 25,185, 85, 42,149, +222, 9,231,157,124,149, 8, 66, 75, 71,236, 96, 24,198,242,200, 35,143,124,213,164, 73,147, 47,155, 52,105,242,101,163, 70,141, +190,102, 24,198, 34,236, 7,160,131,231,193, 27,239,102, 56,255, 53,206,148,148,148,101, 75,151, 46,229,199,143, 31,175,174, 85, +171, 86,225,248,241,227,213, 75,151, 46,229, 83, 82, 82,150,221, 46,103,116,116,116, 66, 74, 74, 74,225,226,197,139,173, 23, 46, + 92, 32,139, 23, 47,182,166,164,164, 20,186,140, 12,255, 64,222,207,255, 58,103,253,250,245, 47, 17, 39,152, 76, 38,146,151,151, + 71, 46, 92,184, 64,118,239,222, 77,226,227,227, 47,249,193, 25, 14,224,117, 0,191,197,196,196,156,107,217,178,229,141,199, 31, +127,252, 70, 66, 66,194, 85,177, 88,188, 31,101, 35,188,167,216,151, 79, 1,212,242,193,217, 50, 36, 36,100, 90,124,124,252,250, +154, 53,107,238, 77, 76, 76,220, 31, 22, 22,182, 33, 32, 32, 96, 6,254, 25, 25,187,162,113,239,240,228,147, 79, 94,215,104, 52, +182,166, 77,155,158,115,119, 82,221,186,117,247,104, 52, 26, 91,255,254,253,211, 1,164,210,188, 68, 57,239, 18,231, 3,253,129, +230,138,154,118,193,180,206,105, 25,231,230,184,113, 46,199,252, 96, 63,215,103, 66, 16, 66, 68,132, 16, 37, 33, 36,152, 16, 18, + 70, 8, 9, 33,132, 4, 18, 66,100,132, 16,150,102,194,127,133,115,168, 93, 64,233,236,255, 93,225,107,255, 3,125, 63,227,226, +226, 66,155, 55,111, 62,124,237,218,181,239, 94,185,114,229,221,181,107,215,190,219,188,121,243,225,113,113,113,161,119, 18,206, +232,232,232,132,122,245,234, 45,168, 91,183,110,122,189,122,245, 22,184,136, 44,154, 63,255, 37,206,164,164,164,223, 27, 54,108, +120,169, 81,163, 70,151, 27, 53,106,116,169,126,253,250,151,234,212,169,115,169,122,245,234,151,170, 86,173,122, 41, 34, 34,226, +247,219, 8,103, 24,128, 88,220, 58, 13,216,191, 29,247,246, 41, 41, 41, 7, 2, 2, 2,220,142, 13,198,113,220,164, 70,141, 26, +157, 68, 89, 79, 73,154,151, 40, 39, 21, 90,149, 32,180,104,134,121,120, 57,101,240, 62,205,136,175,253,244,126, 82, 78,202, 73, + 57, 41, 39,229,164,176, 11, 45, 58,250, 52,133, 43,140,240, 62, 50,174,175,253, 20, 20, 20, 20, 20, 20, 15,157,166,114, 89,218, + 9, 59, 24, 47,170,180, 34,189, 9,110, 71,217,110,163,156,148,147,114, 82, 78,202, 73, 57, 41,231, 67,199, 41, 96,142,135,237, +231, 93,214,191,190, 79,133, 23, 67,171, 14, 41, 39,229,164,156,148,147,114, 82, 78,202,249, 95,225,116,135,215,238, 83,145,213, + 14,240, 49,188, 3, 5, 5, 5, 5, 5, 5, 5, 5, 69,133,225,123, 82,233, 85,171, 86,137,132,255, 3, 6, 12, 24, 98,179,217, +134, 11,235, 34,145,232,243,159,127,254,249, 59,111, 87,232,215,175,159,205, 27,167, 59,248,186,142, 59,206,250,181, 84,111,132, + 7, 43,222, 44, 46,209,205,189,154,105,219,109, 48, 24,234, 9,251, 2, 2, 2,206,126,247,221,119, 23, 43, 59,156, 67,134, 12, +169,229,122,157,196,120,113,251,176,160,128, 17,133,197,154,217,167, 47,105,190,166,121,236, 95, 65, 4,128,212,160, 0, 73,239, +250, 33,146,150,167, 10, 12,251,180,102,219,111, 40,235, 13, 91,244, 32, 70, 56, 38, 38,166,142, 74,165, 26, 4,160,190, 78,167, +139, 82, 40, 20,185, 0,206,168,213,234,101,217,217,217,231,253,229,105,151,136,235, 0,170,217, 87,111,236, 76, 67,130, 63,251, +124,161,107,117, 24, 8, 32, 99, 24,152,183, 92,134, 99, 2,205,110, 53, 96,224,201,173,219,187,214,128,137, 16, 72, 24,192,184, +229, 10, 2, 30,160,164, 82, 1,232,130,178, 33, 28, 78, 0,216,130,178,158,187, 20, 20, 20, 15, 14, 92, 39,148,118,172,115, 30, +196, 68, 91, 9,199, 44, 32, 32, 33, 0, 9, 55, 26,141, 98,169, 84, 10,147,201, 4,133, 66,254,197,235,175, 12,153, 8, 22,197, + 22, 43, 70,124,247,221,119,183, 61,211,117, 69,174, 3,224, 47,215,243, 67, 85,242, 41, 59,126,123, 47,180,109,207,153, 51, 76, +215,242,199,148,150,150,178, 50,153, 12, 70,163, 17,193,193,193,143,191,241,218,107, 77, 89, 49, 49, 73, 36,202,125,115,230,204, +201,190,221,112,190,253,246,219, 49,102,179,161, 21,207,243, 82,147,201, 36,115,189, 78,176, 66, 57,115,199,111,239, 41,218,165, +206,152, 8, 80,161,245, 47, 64,154, 16,170,220, 57,119, 64,251,186, 45,235,215, 4,127,102, 23, 12, 38,115,239, 29,233,154,222, + 31,237,207,124, 39, 93, 99,110, 2, 47, 3, 65,222,135, 16, 37, 39, 39, 15,139,140,140,236,191,104,209, 34, 73,114,114, 50, 2, + 2, 2,160,215,235, 99,175, 92,185, 18,251,198, 27,111,180,147,203,229, 43,174, 94,189,250, 5,252,155, 8,174,218,142, 31, 62, + 4, 0, 60, 62,104,114, 53, 0,239, 58, 9, 1,199,190,246,131, 39, 87, 3, 48, 26,229, 39, 70,206, 2,176,222, 67,169, 35,221, +176,116, 22,122,191,240, 46, 7,224, 13, 71,224, 89,224,143, 31,231,161,251,128, 55,203,109,103, 8,184,223,150,206, 66,234, 11, +239,122,156,213,188, 91, 77,198,194,243,196,163, 19,207,178,140,117,243, 37,226,110,130,225, 28, 0,238,230, 35,237,134,178, 9, +157,221, 30,223,179,142, 40,199,108,177,185, 29,112, 86, 34, 22,229,110, 60,111,187,229,220, 23, 27,195, 98,177,149,149,173, 18, + 14,182,117, 87,131,119,124,240,193, 7, 92,106,106, 42,190,249,230,155,214, 95,127,253,245,107,165,165,165,127,218,239,219,101, +250,248, 82, 80, 60,208,130,203,189,208,226, 68,248,106,253,154,239,106,228,228,230,227,197, 87, 71, 97,249,242,229, 40, 42, 42, + 66,104,104, 40,164, 18,137,120,238,167, 31,198,168, 84,202,152, 23, 95, 27,243, 21,128, 58,183, 27,154, 10, 94,167,166,235,249, +140,125, 14, 68, 78,196,138,165, 82, 41,187, 98,197, 10, 20, 23, 23, 35, 36, 36, 4, 82,169,152,157, 51, 99,156, 92,165, 10,148, +191, 60,116,108,107, 0,171,110, 55,156, 38,147,166,245,218,229,223,169,242,242,242, 48,248,127, 99,224,122, 29,137, 68, 98, 19, + 94, 44, 52,143,253, 43,248, 96,209,136, 23,234, 54, 8, 2,204,167,247, 66, 44, 18, 65, 17, 28,138, 46,156, 8, 34, 6,245, 94, +220,156,246, 62,128,143, 30,148,200, 38, 39, 39, 15,235,215,175, 95,255, 41, 83,166, 72, 88,182,172,227,176, 86,171,133, 94,175, + 71, 92, 92, 28,118,236,216, 33, 25, 63,126,124,255, 95,127,253, 21, 87,175, 94,157, 95, 81,254,211,167, 79, 39, 86,171, 86,205, + 0, 0,189, 26, 6,185,238, 75, 16,246, 1, 64, 80, 80,144, 79,190,240, 16,165,241,244,233, 3,245,133,243,134,117,138,179,121, +216,110, 0,160,240,198,197,243,132,219,178,224, 13,143,251, 95,157,242,147,245,196,170,221,117,146,147,147,245,206,219, 3, 3, + 3, 61,157, 18,173,209,104,170,185,110, 20,142, 55, 91,108, 81,158,174,215,117,196, 66,183, 2,204, 98, 3,247,211, 79, 63, 1, + 0, 62,123,119,160,104,241,193,124,142,227,202,138,218, 79, 63,253, 20,147, 38, 77,146,110,222,188,185,199,210,165, 75,123,172, + 91,183,110,174, 39,161, 74, 65, 65,113, 95,138, 44,231, 95,207, 66,139,101,152, 32, 85, 80, 32,158,121,238,117,252,254,251, 31, +104,219,182,173, 99, 95, 82, 82, 18,250, 61,221, 7, 63,255, 48, 7, 0,130,238, 36, 68,119,122,157,162, 18,237, 71,221,251, 47, +152,124, 35, 91,179,127,195,134, 13,104,211,166, 77,185,243,159,123,246, 25,252,248,237,167,240, 50,202,188, 95, 96, 8, 43, 9, + 82, 41, 49,224,197,255,193,221,117, 94, 27,220,119, 67,183,126,243, 58,231, 20,104,231,208,124,118,239, 81, 35, 38,188,107,195, +186,117, 80,244,203, 23,248,187,216,128,223, 51, 13,120,185,203, 99, 72, 9,147,163,141,213,134, 24,165,184, 99,182,214,242, 64, + 8,173,152,152,152, 58,145,145,145,229, 68, 86,105,105, 41, 52, 26, 13,212,106, 53, 74, 75, 75,193,178, 44,198,140, 25, 35,217, +185,115,103,255,152,152,152,109,126, 84, 35,222,176, 59, 89,128, 72,172,153, 48, 97,130, 49, 42, 42,202,168, 80, 40, 8, 39,145, +149,182, 31, 60, 57, 8, 0, 88, 78, 82, 58,119,238, 92, 83, 92, 92,156,129,227, 56,233,155,111,190,233,215,240, 48, 70,163,145, + 56,115,154, 76, 70,199,246,153, 51,103,154,162,163,163,141, 10,133,130,152,205,254,155,142, 39,175, 21, 66, 38, 17, 65, 38, 17, + 33, 64, 42, 70, 80, 98,115,200,138, 78,193,106,181,226,147, 79, 62, 49,199,196,196,152, 20, 10, 5,145, 74,165,146,145, 35, 71, +250, 12,231,144, 33, 67, 72, 72, 72,136, 89,161, 80, 72, 38, 77,154,116,203,180, 25,219, 79,100, 64, 46, 21, 67, 33,227, 80, 51, + 41, 30, 50,162,247, 59,172, 34, 81,249,214, 8, 50,153, 12,173, 91,183, 70,253,250,245,177,110,221,186,246, 84,104, 81, 80, 60, + 16,240, 56,221, 14, 7, 0, 27, 54,108,104, 7, 96, 7, 0,164,166,166, 50,101,103, 16,140, 30,246, 52, 94, 30, 60, 0, 54, 27, +239, 24,221,148, 97, 25, 12,125,169, 7,120,222,159, 26, 9,223, 93, 60,111,227, 58,255, 76, 82,205,176, 34, 0,168,145, 16, 75, + 94,123,249,121,216,120,254,159,138, 18, 17,240,250,224,238,101,219, 42, 33,156, 34,216, 48,234,141,167,224,238, 58,117,106, 84, + 97,173,102, 3,152,242,147, 61,222,141,201, 54, 41,167, 27,212,175, 26, 91,221,162,215,195, 96,176, 96,201,249, 66,253,214, 12, +109, 20, 27,146,150, 55,239,153, 22, 1,162,188, 76, 36, 4, 73,107,102,107, 45, 15, 68,220, 85, 42,213,160, 69,139, 22,221, 34, +178,114,114,114, 88,141, 70, 3,179,217,204,151,150,150,194,102,179, 97,236,216,177,226,241,227,199, 15,202,206,206,158, 36,104, + 30,119,156,246,118, 87,163, 79,159, 62,157,240,193, 7, 31,152, 59,118,236,120, 35, 41, 41, 73, 43, 18,137, 16, 27, 27, 59,175, + 75,151, 46, 97, 83,166, 76, 49,247,232,209, 35, 77, 36, 18,161,102,205,154,218, 83,167, 78, 37, 0,144,251, 27,119,103,206,239, +182,127, 78, 0,128, 97, 24,116,233,210,229,122,205,154, 53,181, 34,145, 8, 23,127,155, 73,252,189,159, 98,142, 69,173,184, 96, +123, 33,194, 0,242, 64, 71, 75,188, 46, 93,186,164,215,169, 83, 71,195,178, 44, 78,158, 60, 25,143, 91,167,181,186,133, 83, 46, +151, 91,158,123,238,185, 27,231,207,159,119,119, 60, 56, 17,139, 22,117,236, 6, 86, 92, 19, 32,125,143,199,112,138, 69,176,142, + 31, 54,144, 11, 9, 0,100, 65, 17, 70,181, 90, 13,149, 74, 85,230,144,153,205, 56,126,252, 56, 90,182,108,217,110,213,170, 85, + 59,233,243, 78, 57, 41,231, 63,112,167, 69,238, 67, 55,139,113, 90, 47,215, 70,107,135,107,164,108, 54, 43,146,170, 69, 99,230, +135, 67, 96,179,241,176,217,108,176,218,127,109, 54, 27, 44,102,115,165,132,236, 78,174, 19,170,146, 79,249, 99,197,136,208,142, +125, 63,237, 52,253,131,193, 91,109, 54,128,231, 45,176, 88, 0, 27,111, 1,111,179,193, 98,169,156,166, 57, 22,158, 71, 66,124, + 12,166,127, 48, 24,174,215, 89,246,243,170, 94,219,215,143, 81,180, 77,157, 49,234,226,117,221, 39, 84,216,223, 91, 4, 72,100, + 28,225, 2, 96, 50, 89, 81,106,226, 77, 0,180, 6, 11,111, 38,202,136, 0, 0,224, 88,230, 65,234, 93, 91, 63, 57, 57,185,156, +200,154, 53,107, 86,196,151, 95,126, 25, 7, 0, 79, 63,253,116, 70,167, 78,157,242, 47, 92,184,128,216,216, 88, 38, 63, 63,191, + 39,128, 55,237,231,142, 6,240,165, 7, 94,109,181,106,213, 12,145,145,145, 70, 65, 16,177, 44, 11,142,227, 80,173, 90, 53, 67, + 84, 84,148,177,102,205,154, 90,137, 68, 2,150,101, 33, 8, 61,191, 62,243, 24, 6, 34,145, 8, 2,167,171,219, 35,112, 86, 4, + 98,142,189,181,120,115,226,100, 89,214,237,245, 60,230,161,128, 0, 2,192,227,241, 34,214,169,120,228,188,183, 16, 88,114, 28, + 98, 0, 59, 8, 33, 56,118,236, 24,174, 94,189, 10,137, 68,130,152,152, 24, 76,154, 52, 9, 70, 99,153,222,237,215,175, 95, 59, + 0, 39,233, 19, 76, 65,225,192,142,251, 80, 96,185,186, 90,222,219,104,109,216,176,161, 93,106,106,234, 78, 65, 0,149,137, 29, + 55,226,199, 98,133,197, 98, 6, 42, 97, 32, 46,111,215,177,217,120,175,215, 17,218,104,241, 60,225,220,138, 44,158,135,213, 98, +169,148,187,199,219, 44,224,121, 11,220, 93,135, 97, 88,155,189,192,151,208,231,228,222, 35,166, 90, 2,107,169,150,132,221, 86, + 3,226,194,101, 82,228,235,145, 92,187,174,232,184,206,130,189, 39,206, 34, 34, 80,245,192,164,139, 78,167,139, 10, 8, 8,128, + 86,171,117, 56, 89, 95,126,249,101,156,201,100, 98, 1,128,227,196,241,121,124, 92,128,141, 7,130, 85, 89, 40, 42, 42, 9, 39, +132, 48,118,193,243, 41,128,239,224,101,100,127,137, 68,226, 16, 40,206, 2, 72, 38,147,221,150,128, 17, 32,136, 51,137, 68,226, +118,187,107,245,154, 47, 72,156,133, 22, 72,153,171,229, 34,182, 68, 34, 17,132,182, 81,190, 32,149, 74, 29,113,119, 7, 78,228, +116, 61, 81,197,155, 98,154,205,102,104, 52, 26, 20, 23, 23, 35, 32,160,204, 48, 35,132,128, 97,152, 55, 1,188, 69,159, 98, 10, + 10,247, 90,228, 62, 22, 91,238,133, 22,202, 44, 59, 6, 0,172, 22,179, 91,241,179,234,183,189,184,145,173, 69, 76,196, 33, 16, + 47,117,146,238,208,191,127,255, 31, 98, 99, 99, 91, 8,235, 50,121, 96,248,107, 35, 62,134,213,106, 70,144,156,197,171,131,186, +151, 19, 89,101,142,150, 9,158,228, 92, 81,137,246,163,238,253,230, 79, 14, 86,133,239,119, 21, 63,211,151, 28,125,166, 72,109, +140,103,217,195, 40, 98, 98,109,253, 94,255,120,136, 83,225,126, 98,197,194, 9,239,248,237, 7, 50,172,248,153, 55,230,189, 70, +184,192,122, 10,182,116,215,123,131, 31, 91,235, 44,230,194,194,194, 54,116,125,102,110,231,156, 66,218, 70,235,223, 64, 80,112, + 8, 27,223,172, 61,154,189,185, 0,219,199,189, 71,128, 34,132,199,198,177, 29,134, 77, 69, 96,179, 94, 56,240,234, 32, 30, 40, +124, 32,226,170, 80, 40,114,117, 58, 93,172, 94,175,135, 90,173,134, 90,173, 46, 47, 8,196, 98,230,181,255, 13,143, 16, 75,164, +176,152, 77,248,125,217, 84,159,156,194, 16, 14,189, 26, 6, 65, 36,150,150,158, 73, 78,158,199,113, 28, 88,150,197,111, 95,188, +247,230, 47,179, 71, 4, 1,192,137, 13, 95,168, 7,140,249,124, 62,203,178, 48, 26,141,178,138,132,251,230,205,155,241, 70,163, +209, 96, 23,104,130,240,195,181,107,215,170, 26,141, 70,189,243,118,127, 32, 87, 4, 1, 33, 73,128, 34,234, 22,247, 44, 45, 45, +173,138,197, 98,209,113, 28, 7,147,201,228,151, 42, 98, 89, 86,114,242,228,201,120,158,231,221, 30, 95,191,122, 21, 32,166, 33, + 32, 13,246, 59,206,254,140, 8,109, 23, 91, 4, 21, 44, 75, 41, 40, 30,116,103,235, 62,124, 38, 24, 15,255, 29, 66,171,253,134, + 13, 27,136,243, 23,162,213, 98,177,139,172,127, 68,143,205,198, 35, 51,207,128, 11, 23, 46, 98,238,220,185,216,123,224,221,224, + 41, 83,166,200,198,143, 31,111,236,223,191,255,108,158,231, 27,177, 44,123, 2,255, 84, 85,148,119,133,120,190,234,209,163, 71, +147,133,117,139,197,130,160,160, 32, 4, 5, 5,161, 78,205,248, 91, 68,150,205,102,131,217, 75,213,161,208, 70,139, 33, 60,177, + 88,108,176,241,188, 67,252, 20,169,141,241,235,183, 29,171,225,116,120,109,225, 79,235,230,245, 60,139,193, 55, 38, 57,226,177, + 98,225,132,119,166,124,243,141,172,200, 22, 57,114,192, 51, 47,167,244, 27, 48, 8,207, 61,245, 68, 59,163,201,180, 78,196, 18, +222,226,184, 30, 88, 16,184,182,209,162,184, 71,184, 92,172,181,136,101,114, 4,198, 36,226,162,198, 38, 17,137, 68,135,174, 20, +235, 36,172,136, 3,203, 73,112,166,200, 96,121,128,162,123,230,242,229,203,177, 85,171, 86,133, 90,173,134,213,106,229,159,126, +250,233, 12,142, 19,199,115, 98, 49,147, 58, 96, 56,159,157,157,105, 97, 89, 17, 8,177,225,137,126,111, 48,178, 0,185,196,108, + 50, 89, 81, 86,117,232,206,205,114, 30,194, 33,168, 75,151, 46, 97, 66, 79,192, 95,102,143, 8,114,218,167,106,218,180,105,152, +115,175, 67, 63,221, 34,166,127,255,254,242,106,213,170, 49, 0,112,120,217, 7,130,123,198,244,234,213, 43,160, 90,181,178,118, +248,127,126, 49,194,111,206, 8, 5, 1, 74,174, 1, 37,105,183, 56, 89,189,122,245,146, 37, 39, 39, 87,232, 89,180, 55,128,247, + 56,118,151,146,179, 2,217,199,252,226,122,177, 49, 44,113,129,224,102, 63,193, 66, 26, 24,110,108,241,222,230,131, 84,108, 81, + 80,248, 5, 23, 45,114, 95,161,157, 93, 32,182,183,255, 58, 4, 23, 7, 0,118,139,142,113,210, 89,176, 88,205,183,136, 44,155, +205, 6, 49, 99,196,220,185,115,241,214, 91,111, 1,128,228,157,119,222, 89, 59,101,202,148, 39,121,158,111, 68, 8,105,195, 48, +140,183,175,198, 29,177,177,177, 57,132, 16, 49,203,178,109,190,248,226,139,176, 30, 61,122, 32, 40, 40, 8,132, 39,183,136, 44, +155,141,135,217,108,130, 39, 75, 43, 84, 37,159,242,199,170,145,161, 29,251,124,218,201,198,243, 91, 5,145,197,219,108, 0, 95, +118, 82, 65,110, 6,182,252,190, 14, 95, 45,252,170, 8, 12, 57, 7, 2,222, 46, 6,225, 65, 12, 54,218,115,248,108,155,214,205, +235, 97,202, 55,223,200, 78, 31,205, 90, 59,252,237,247, 83,250, 13, 24,132, 85, 63, 47, 3,107, 45, 62,230, 44,178,108, 22, 30, + 37, 69,249,189,254,162,109,180,254, 45,132,109,217,186,149, 25, 52,104, 16, 95, 90, 90, 10,137, 84,202, 91, 44, 22, 81,171, 86, +173,108,111,189,245, 22,155,157,157, 13,117,169,134, 3, 16,134, 7,192,214, 82,171,213,203,222,120,227,141,118,187,118,237,146, +176, 44, 11,181, 90,141, 14, 29, 58,228,231,241,113, 1,175,253,111,120, 68,102,102,134, 85, 37,231,140, 18,137, 24,185,185,185, +124,187, 30, 3,245, 3,134,188, 85,229,173, 15,166, 47,202,218,183,240, 75,127,174,225,220, 19,208,117,223,226,197,139, 77,113, +113,113, 6,153, 76, 38, 29, 60,120,176, 95,245,135, 38,147,137,204,156, 57,211,232,218,187,208,100, 50,145,185,115,231,154,226, +227,227,141,114,185,156, 88, 44,190,219,125,178, 44, 99,125,117,202, 79, 86,171,213, 90,206,197, 18, 68,150,133,103, 52, 11, 22, + 44, 48,199,199,199,155, 20, 10, 5,145,201,100, 18,127,194, 57,124,248,112, 18, 26, 26,106, 86, 42,149,146, 49, 99,198,220, 81, +175, 67,139, 13,220,148, 47, 28,195, 59,200,130,130,130, 80, 90, 90,234, 8,107,108,108, 44, 21, 91, 20, 20,110,112,139, 22,185, + 63, 93, 56,255,198,209,226, 1, 77, 78,110,126, 84, 68,116, 34,172, 86,171,125,177,192,106,177, 96,228,235, 3, 48,123,225, 2, + 0, 16,196, 86,151,119,222,121,103, 45, 0,159,133,217,138, 21, 43, 38,191,243,206, 59,170,156,156,156,205, 63,252,240, 67,216, +192,129, 3, 49,122,244,104,124,250,233,167, 16, 75, 3, 16, 22, 89,213,113, 29,225,186,249,121,133, 32, 32, 26, 15, 62,157,185, +172,144, 2, 23, 30,153, 0,139,205, 2,222, 98,129,197, 98, 1, 35, 42,139,218,150,223,215, 97,224, 75,195, 33,150,169, 66, 63, +159,251,137, 62,165, 89,236,147,227, 95,121,197,232,135, 9,200,158, 62,154,181,118,248, 91, 99,186, 8, 34,107,205,178,133,231, + 62, 27,219,103,185, 76,202, 57,174, 99,225,121,176,172,136,182,209,250,151, 68,150, 76, 38, 91,189,105,211,166, 75, 77,154, 52, + 97,180, 90, 45, 44, 22, 11,242,243,243,177,118,237,218, 51,132, 16,132,134,134, 98,211,166, 77,252,192,129, 3, 87, 27,141,198, +103,238,119,177,149,157,157,125, 94, 46,151,175,120,255,253,247, 7,140, 29, 59, 86,204,243, 60, 46, 92,184, 0, 48, 12, 17, 75, +164, 96, 89, 22, 98, 49,135,146, 18, 53,175, 8, 12,201, 50, 19,145, 66, 44,145,130, 21, 73,188,117, 19,190, 97, 31,140, 20, 44, + 39, 41, 21,122, 2, 74, 36, 18, 28, 88, 53, 75,221,126,240,100, 21, 0, 72,100,242,162,174, 93,187, 94,175, 87,175,158,246,200, +145, 35, 9,184,181,215,161,235,243,105,237, 59,120,140, 72, 33, 15,208,118,233,210,229,134,192,153,182,245,115,245,160,161, 31, + 48,140, 72,170, 77, 77, 77,189,158,146,146,162, 21,137, 68, 56,187,238, 19,117,223,193, 99, 2, 24, 47,131,172,110,190, 68, 94, + 61,177,106,119,157,169, 83,167, 90,122,244,232,113, 83,104, 47,150,150,150, 86,165,103,207,158,178, 57,115,230, 88,122,246,236, +153,222,160, 65, 3, 13,203,178, 56,122,244,104,188, 55,167, 74,128, 92, 46,183,188,252,242,203, 55, 78,157, 58,117,187,189, 14, +189,162,106,213,170,224,121, 30, 29, 58,116,128,193, 96,160,206, 22, 5,197,131, 9,215,113,180, 60,143, 12,111,177, 90,134,191, +254,230,196,207, 1, 38,208,169, 20,248,199, 88, 34, 96,222,125,119,148, 18,128, 92, 16, 91,111,191,253,182,207,105, 78,156, 68, + 86,179,129, 3, 7, 98,220,184,113,248,236,179,207,108,159,126,250,169,232,252,197,107,230,193, 67, 63, 42,118,185, 14, 8,136, +134,183,240,195,221,241, 21,149,104, 63,106,211,115,198,196,140, 28,221,158,193,111,140,119,148, 94, 54, 0,106, 38,214, 6, 0, + 95, 45, 92,168, 21,203, 84,202,126, 3, 6, 1, 64,151,207,231,126,178,118, 10,190,241, 45,182, 8, 83,119,248,219, 99, 66, 5, +145,245,197,156,169,167,130,153,156, 5, 35, 70,157,177, 56, 95, 7, 0,194,130,176,182, 77,207, 25,221,114, 11,181,243,104, 62, +187,119,144, 74,165,147,183,111,223,174,108,216,176, 33, 83, 80, 80, 0,155,173, 44, 69,204,102, 51, 74, 74, 74, 80, 90, 90, 10, +163,209,136,166, 77,155,178,243,231,207, 87,142, 24, 49, 98,178,201,100, 26,122,191,199,251,234,213,171, 95,172, 95,191, 30, 59, +119,238,236, 63,118,236, 88,113, 76, 76, 12, 19, 28,156,195, 88,204, 38, 0,132,228,229,229,241,138,192,144,172,136,232,248, 27, +153,217,185,117, 45,102, 19,120,155,217, 99,107,115,251,240, 14,239,158, 62,125, 58,113,214,172, 89, 38,231,158,128, 3,198,124, + 62,191,105,211,166, 97, 11, 22, 44, 48,165,166,166, 94, 23, 26,175,251,211, 24,126,203, 21,188,121,250,244,201,250,174,156,237, + 95,155,245,173,192,233,220, 27,177,215,168, 69,223,214,172, 89, 51, 44, 37, 37,229,186, 55,222,228,228,100,125,108,108,172,169, + 78,157, 58, 26,177, 88,252,127,246,206, 58, 60,138,171,141,226,103,102, 93,227, 78, 72, 8, 22,197, 37,184, 91,209, 22, 45, 78, + 41, 86,172, 80,138,180,120,161, 80,188, 88,129,150, 2,165,248, 71,139,107,113, 39, 9,193, 18, 36, 16,119,151,117,153,251,253, +145,108,154,132,200,110, 66, 75,105,231,247, 60,243,108, 50,114,246,142,238,153,247,222,251,222,252, 72,150, 94,175,172, 89,179, + 38,227,236,236,172,245,243,243,203,179,180,209,190, 88, 44, 38,166,168, 88,105, 88,210,235,144,199,129, 97,216,176, 97,133,153, +225,103,213,169,147, 56, 98,196, 8,215,153, 51,103, 98,231,206,157,184,121,243,230, 27,102,191,125,251,246,184,118,237,218, 18, +252,139, 18,235,178,176,252,199, 40, 63,143, 86, 73,118,237,218,251, 7,138,180,105, 42,141,101,203,150, 9, 11, 34, 89, 93, 63, +255,252,115,168, 84, 42,219, 82, 86,235,130,130, 92, 27,165,153,172, 85,171, 86,237, 39,132,184, 3,104, 99, 52, 50,119,127,252, +105, 87,199,178,190,111,208,160, 65,111,104, 18,138,230,208, 52,149, 39,224,145, 7, 63,236,216,249,107,177,245,243, 27,191,123, +131,194,195,205, 27, 86,169, 0,116, 45,105,182,240,231, 48, 35,133,154, 38, 38, 78,154, 88,104,178, 54,111, 88,117, 33,160,169, +199, 71,243, 63,253,166, 84,115,246,205,162, 9, 82,154,166, 90,149,104,163,245,134,230, 91,128,213,252,147,142,195,134, 13,107, + 16, 24, 24, 72, 23, 53, 89, 90,173,182, 48,113,167,169,177,120,124,124, 60,218,183,111, 79, 55,104,208,160,222,189,123,247, 58, +226,207,225,156,222,215,125, 55,190,126,253,122,163,139,139,203,197,133, 11, 23,142, 72, 75, 75,235,149,153,153,101,127,114,215, + 55,232, 49,104, 18,213,190,231, 80,133,150,112, 69,113,137,201, 62, 87, 78,239,179, 59,115,112, 11,116, 90,237, 4, 0,225,248, + 51,189, 67, 73, 77,165, 41,141,131,143,143,143,162,168, 81,241,240,240, 80,187,185,185,105, 2, 2, 2, 10,231,151,209,155,239, +141,125,183, 84,179,160,253,151,162,162,227,105, 50,109, 37,211, 70, 72, 36, 18,152,204,151, 37,229, 44,218,219,178,212, 7,101, +197,189, 14, 11, 53, 11,210, 59, 20,243,105,123,247,238,237,178,119,239,222,166, 0, 30, 32,127,172, 67, 61,144, 95,149, 88,164, +209,252,226,130,137,189,223, 89,205,255,170,230,251, 76,123,252,217, 54, 11,200,111,171,117,181, 76,163, 85, 17,166,134,239, 0, +232, 25, 51,102,100,170, 84, 42,219, 17, 35, 70,148,187, 77, 82, 82,210,206, 61,123,246, 20, 51, 89,253,251,247, 31,115,228,200, +145,139, 41, 41, 41,149,218, 43, 91, 43,241,178,171, 39,230,216,182,239,189,242,115, 0,171,203, 8,228, 49, 1, 77, 93, 63,218, +188, 97,213,111, 37,204,214, 47, 0,250,151,229, 74,187,125,208, 15,251,118,109, 54,181,237, 18, 63, 14,138, 63, 51, 36,100,105, +169,189, 21,109,100,194,165, 5,229,152,201,182,209,250,123,224,243,249, 29,230,206,157,203, 87, 40, 20,111,152,172,146, 70, 43, + 39, 39, 7, 15, 31, 62,196,232,209,163,133,161,161,161, 29,116, 58,221,229,127,195, 49, 72, 74, 74,122, 86,144,140,116,186, 41, +133,131, 80, 36,230, 15,253,228,115,247,194, 94,135, 7,183, 64,163, 86, 1, 0,215,156,244, 14, 92, 46,151, 31, 26, 26,234,105, +138, 90,233,116, 58,161,105,126, 80, 80,144,167, 41,183,150, 90,173, 54,187,215,225, 95,165,249,232,209, 35,119, 83,239, 72, 83, +239, 66, 46,151,203, 15, 14, 14,118, 55,105,106, 52, 26,179,122, 29, 10, 4, 2,126,104,104,168,187,209,104,124,107,189, 14,139, + 26, 99,228,143,179, 88,108,172,197,130,182,101, 20, 69, 81,132,173, 54,100, 97,121,239, 41,217, 83,178,252, 65,165, 43,194,212, +240,221,130, 77,184,213,171, 87,239,246,241,199, 31, 23, 51, 89, 3, 7, 14, 52, 30, 61,122,244,138,171,171,107, 50, 77,211,207, + 44, 45, 71, 97, 27, 45,188,241, 6, 9,154,166, 31,182,105,230, 7,154,166, 31,206,255,244, 83,205, 50,252, 84,204,108, 29,251, +237, 80,247,184,204,167,165, 91, 51, 0,246, 78,213, 48,108,204, 20, 12, 27, 51,197, 22, 64,107,160,236,222,138,229,149,131,229, +175,129,162, 40,129,155,155,219, 99,181, 90, 13,138,162,160,209,104, 10, 13, 86,110,110, 46,178,179,179, 11,255,215,233,116, 72, + 77, 77,133,135,135, 7, 40,138,250, 87,183,163,211,233,116,134,185, 75,214,236,225,112,249, 6,134,209, 81, 58,157,238, 19, 75, +238,243,185,115,231,210, 40,165,237,213,212,169, 83, 75,157,255,174, 52,191,250,234,171, 82,123, 9, 78,157, 58,181,220,222,131, +101,241,197, 23, 95,188,181, 94,135,230, 63,190, 88, 88, 88,254,101,148,218,117,175, 82, 70,139,166,233,135,165,244, 46,164, 0, + 16,154,166, 31,150,146,229,192, 16, 19, 19,179,196,198,198,102,130, 66,161, 56,219,191,127,255, 25, 3, 7, 14, 52, 2,249, 13, +228, 43,187, 71,153,217,138, 69, 29,250,124, 55, 51, 43, 79,179,169,228,178,146,145, 39,147,217,218,242,253,170,173,191, 29, 57, + 48, 48, 41, 33,110,107, 89,251, 86,150,161, 42,171,183, 98,118,142,106, 73,135, 62,223,125,158,153,163, 98,219,104,253, 77, 24, +141,198,243, 98,177,152, 50, 13,166, 92, 52,122,149,147,147, 3,165, 82,137,130, 33,105, 0, 0,121,121,121,176,182,182,134,209, +104, 36,255,178, 67,161, 1,240,101, 65,180, 10, 0,190,140,188,178,177,232,181,253,168,232,178,114,162, 89,137,230, 12, 16, 93, +218,118,229, 45,251, 11, 52,147,203, 25, 32,186, 60,146, 45,212, 75, 6, 0, 62,143,147, 82,214,224,209,124, 30, 39,165,156,118, +251, 22,190, 55, 80, 4,192, 18,246,206,102, 97,121,127,223,255,223,213, 23,119, 97, 53, 89, 77, 86,243,111,209, 20, 22, 76,230, + 46, 99,143, 39,171,201,106,178,154,255, 52,205,210, 24,255,158, 24, 45, 82,202, 4, 66, 8,254, 77, 99,192,177,176,252,151,209, + 84,114, 25, 11, 11, 11, 11, 75,213,121, 99, 48,233,162, 11,202,114,165,150,244, 38,168,140,179,189,200,106,178,154,172, 38,171, +201,106,178,154,172,230,127, 78,179, 34,237,162,219,143, 7,176,227, 61, 49, 91,111,152, 44, 66,254,250,214, 42,108, 88,149,213, +100, 53, 89, 77, 86,147,213,100, 53, 89,205,202,194, 86, 29,178,176,176,176,176,176,176,176,252,199,177, 44, 97, 41, 75, 41,120, +244,155, 15, 6, 95, 21, 28,206, 85,136, 61,182,248,223,182,139, 3, 7, 14,228, 88,178,126,100,164, 13, 29, 2,215,181, 86, 82, +126,159, 60,133,126, 45, 19,178,104, 83, 69, 23,162, 67,205,198, 35, 37, 34,201,103, 90,173,214, 75, 38,151,167,100,164,167,110, +203,136,121,180,165,200, 58, 86,119,239,222,117, 13, 12, 12, 76, 0,144, 91,228, 77,129,133,133,229,109, 98,227, 87, 29, 20,245, + 9, 64,254,236,118,201,144,167,200, 14,223, 85,108, 61,107,223, 49,160, 41,255, 34,115, 84, 32,248, 17, 89, 97,177, 21,252,224, +216, 68, 68, 68,120,214,174, 93, 59, 26, 64, 86,201,111, 47,101, 25,123,159,179,188,207,180, 71,241,132,165,133,247, 66,213,141, + 86,157,254, 94, 48,208,163, 64, 48, 28, 20, 66, 17,121,100, 64,165,116,106,125, 84, 13, 12,183, 57,128,198, 0,105, 44, 21,139, + 26,169,180,186, 20,134,144,145,120,117,232,129,197,122, 94, 3, 39,161,236,225, 44,150, 32,242,200, 15, 22,233, 49,228,235,251, +215,142, 10,109, 36, 20,106, 55,233, 63, 27,197, 51, 56, 87, 22, 1,128,182, 52, 77,251, 75, 36, 18, 87,165, 82,153,202, 48, 76, + 44,242,235,167, 51, 43,169, 73, 3, 24, 43,147, 74,123,120,202, 5,141, 99,210,178,227,115,245,198,235,200, 79,232,154,249,182, +174,168,124,147,229,178,227,243,161,129,163, 87, 77,235, 2,155, 14,223,205, 86, 2,229, 25, 45,202,221,187,213,177, 33, 31, 15, +234, 48,121,252,104, 89, 53, 71, 25, 18,211, 20,246, 63,236,220,187,102,239,222,125,189, 63, 29,210,181, 7, 0,124,243,205, 55, + 31, 86,175, 94,189, 6,135,195,137, 92,176, 96,193, 47,139, 22, 45, 34, 84,217, 35,149,187, 22, 92,195,166, 7,190, 20, 64, 0, +128,154, 0, 94, 3,120,130,226, 89,198, 43,195,123,161, 89,173, 90, 53, 55,134, 97, 62,117,118,118,238,149,156,156,124,138,166, +233,159,226,227,227, 19,222,229, 83,135, 16,178,157,162,168,241,132,144, 29, 22,124, 78,176,228, 59, 68, 34, 81,178, 90,173,118, + 42,248, 59, 69,173, 86, 59,255, 85,251,243,119,126,215,223,244,254, 61,238,252,141, 39, 61,138,206,234,214,198,191,148, 39, 10, +229,127,254,198,211,118,197,215, 11, 48,150,241, 12,164, 8, 33, 88,178,100, 9,181,116,233,210, 49,181,106,213,170, 67,211,244, +243,133, 11, 23, 22, 75,125, 83,114, 89,145,251,156, 53, 91, 44,239, 43,150, 13, 42, 93, 33,126, 3,165, 80,147,129, 0, 53,186, +125,179, 70,109, 38,140,236, 67, 17,142, 8, 67,199,205, 49, 88,172,229, 57, 90, 8,142,106, 89,125,127,239, 25,131,250,116,161, +155, 6,212,128,171,163, 53, 64,243,176,253,116,148,253,166, 85, 11,182, 2, 8,172, 68, 41, 23,189,186,189,223, 41, 49,203, 8, +138, 2, 40, 10,160, 41, 32, 79,205,160,219,135,163, 22, 1,248,193,194,167, 18,109, 35,161, 48, 99,191, 26, 0, 56,111,225,164, +212,112,116,116, 28, 51,125,250,116,105, 64, 64,128,141, 72, 36, 18,168,213,106,231,136,136, 8,199, 5, 11, 22, 4,168, 84,170, + 19, 0,238, 91,168,233, 81,219,221,237,208,166, 25, 99,155, 55,168,233, 9,158, 54, 15,140, 70, 81,253, 69,196,203,150, 19,183, + 30, 30,247, 52, 67,253, 49, 42, 49,100, 66, 90, 90, 26, 5, 0, 14, 14, 14,164,184,201,106, 49,122,253,204,110,152,177,238, 60, +148,106,237,175,229,105,216,213,104, 56,226,163,143,250,117, 88,254,245, 84, 89,124,186, 14,161,145, 42,216,201,248, 88,244,229, + 36,129, 70,163,111,185,245,151,189,227, 55,175,156,243,163,209,104,236, 4,160,169,209,104, 12, 2,240,203,146, 37, 75,202,122, +248, 46, 5,240, 85,193, 5,189,143,195,225, 92,232,216,177,163,215,167,159,126, 74, 53,105,210, 4,193,193,193, 53,247,239,223, +223,229,212,169, 83,145, 70,163,241, 17,128,231, 40, 24,246,196, 12,120, 0,188, 57, 28, 78,253,127,178,166,171,171,171, 88,171, +213,142,114,119,119, 31,223,170, 85,171,250,125,250,244,161,188,189,189,241,236,217,179, 38,103,206,156, 89,116,253,250,245, 71, +113,113,113, 59, 4, 2,193,158,196,196, 68,213,223,254, 59, 78, 81,227, 1,184, 21,248,228, 37,102,124, 38, 32, 63,151, 84,162, +185,223,161, 86,171,157, 76,141, 77, 41,138,114,250, 43,247,199,194,239, 10,163, 40,202,174, 96, 93,148,247, 73,211, 52, 12, 6, +131,194,104, 52,214,170, 64,211,187,224, 69,202,108,175, 11,160,188, 68,208, 98, 0,232,214,218, 63, 3, 20,158, 22, 70,180,222, +124,201,124, 90,104,192, 8,252,207,223,124,106, 87, 44, 10, 86,242, 45,118,201, 18,106,209,162, 69, 88,188,120,113, 31, 0,109, + 25,134,185,238,235,235,187,177,152, 36,195, 20, 46, 91,180,104,209,247,229,220,231, 44, 44,239, 11, 29, 96,201,160,210,101,190, +255,212, 26,208, 14, 70,140,246,180,119, 26, 56,237,211,193,226, 0,223,218, 80, 67,134,168, 52, 35, 78,159, 60, 3, 0, 7, 45, +139, 58, 13,110,202,229,170,247,172, 90,252,165, 79,219,230, 1,120, 28,175, 71, 80,188, 17,202, 72, 61, 56,180, 30, 70,134, 0, + 4,234,202,238,117, 92,166, 1, 55,158,107, 65, 83, 0,135, 6,104,154, 2,135,174,164, 24,163,125,241,205,174,144,128,180,100, + 6, 96,180, 47,170,120, 66,252,235,214,173, 59, 98,233,210,165, 54, 73, 73, 73,210,224,224, 96, 8,133, 66,216,218,218,114, 92, + 93, 93,221,214,173, 91,167,154, 54,109, 90, 47,157, 78, 23, 5, 32,205, 76, 77,223,158, 77,235,223,218,177,234, 27,107,253,221, + 51,200, 58,240, 63,112,104, 2,190, 84, 6, 47,177, 24,103, 62,170,109, 55,240,100,228,209,123,201, 10, 95, 0,241, 21,137,133, +135,135,115, 52, 26,205,199, 86, 86, 86, 45,120, 60,158,179,200,182, 6,147,192,109,154,158, 74,213,124,157,226,164,108, 55,179, +139,115,143,181,159,119,196,140,117,231,177, 97,255,157,221,141,145,180,176,188,188,217, 18,137,108,194,180,207, 62,149,197,165, +233,176,236,104, 26,118, 93,203,193,168,182,114,204,248,192, 26,195,134, 14,145, 30,254,223,145, 9, 0,126, 44,178,201, 51, 95, + 95, 95, 42, 60, 60,188,180,135,175, 45,128, 57, 90,173,150,230,243,249,148, 72, 36, 26,177,124,249,114,221,208,161, 67,227, 76, + 43,180,109,219, 22,109,219,182,165,114,115,115,107, 94,190,124,185,230,222,189,123, 13,183,111,223, 14, 3,112,172,236,136,133, + 56, 70,173, 86, 85, 23,137,197,202, 31,182,110, 93,219,174, 93, 59, 70, 40,252, 51,253, 84,101, 52, 1,192,218,218,250, 71, 39, + 39, 39,106,222,188,121, 9,111, 75,179, 70,141, 26,231,155, 55,111,222,177, 91,183,110,220,214,173, 91,195,205,205,173,112,153, +131,131, 3,218,182,109, 75,197,198,198, 54,184,126,253,250,214,243,231,207,111,124,240,224,193,229,168,168,168,110,127,115, 68, +107, 71,129,153, 72,180,112,253,247, 30,138,162,100,219,183,111,119, 50,141,201,168,215,235, 97, 52, 26, 11, 63, 77, 19,195, 48, + 48, 26,141, 88,190,124,185, 81,161, 80,152,115,140, 20, 69,222,154, 77, 19, 83,218,167, 64, 32,112, 48, 37,236,173,224,201,254, +212, 85,152,229, 39,149, 74, 61, 1,244,132, 99,157, 57,197, 87,200,127,127, 86, 40, 20,209,137, 26,155,167, 0,218,149,163,102, +179,116,233,210, 81,139, 23, 47,238, 87, 36, 74, 91,127,208,160, 65, 37,135,189,170, 95,240,169,160, 40,234, 10, 77,211, 39, 0, +236,194, 91,140,186,179,252,187, 32,132, 52, 3,224, 88,100,150, 22,249,181, 66, 40,248,157,164, 0,216,151,152, 95,116, 61,211, +103,106,193,124,199,130,237, 72, 17,221, 84,138,162,238, 87,178,136, 87, 81, 70, 59, 45, 46, 0,156, 60,121,146,244,238,221,155, + 50,125,150,110,138, 6,158, 30, 59,180,111,143, 94,157, 91,129, 22,217,226, 69, 10,112, 59,134,128, 75,235, 65,131,224,238,205, +203, 4, 92,102, 79,137,173,202,142,158,212, 24,240, 69,253, 0,223,239,126, 90, 53,157, 19,150,194,197,174,235, 74,232,212,121, + 72, 77,138, 65, 74, 66, 52, 18,227, 94, 35, 62,230,245, 35,128, 90,100,182,230, 27, 39, 6, 48, 50, 5,239,128, 12, 74,139,232, +153,175,169, 83,132,215,244, 14, 8,200, 20, 24, 1,157, 34,220,140,175, 47, 75,179, 94,157, 58,117,134,126,253,245,215,118, 79, +158, 60, 17, 43,149, 74,205,153, 51,103,158, 69, 69, 69, 89,185,186,186,102, 76,154, 52,169,142,155,155,155, 85,255,254,253, 5, + 7, 14, 28,248, 16,197,187,181,150,165, 25,208,183, 69,163,219, 59, 55,174,151,166, 31,222, 4,109,196, 67,156, 78, 84,224,102, +178,146,212,180, 22, 82, 83, 26, 56, 66, 38,228,226,155,214,110,178,158,191, 69,124,167,103,152, 97,229,105,222,186,117,203, 85, + 34,145,172, 27, 62,124,184,235,212,169, 83,133, 70,174, 13,247,200,237,116,235, 57, 91,111,187, 41, 53, 58,206,208,142, 53, 48, +115,120,125,204,220,112,201,100,178,198,123,121,101, 49, 33, 33,101,107,234,117, 58, 47,119, 39, 43,132, 70,169,176,235, 90, 14, +254,248,218, 13,157,151, 39,160,127, 99, 46,124, 61,100, 48,232,244,222,131, 6, 13,218, 83,240,214,126, 31,192,135,131, 6, 13, +242,225,112, 56,151, 0,252, 94,209, 57, 18,137, 74, 31, 61,197,214,214, 22,237,219,183,135,175,175, 47,183, 93,187,118,245, 75, + 24,152, 98,154, 58,157,214,149, 97, 8,228,114,185,216,222,222,222, 86, 46,151,167,151,246, 67,101,137, 38, 0,216,217,217, 13, +104,223,190, 61,119,255,254,253,105,145,145,145,119,135, 14, 29,250,218,202,202,170, 88,244, 87, 42,149,162, 78,157, 58, 88,176, + 96, 1,183, 71,143, 30, 21,106, 58, 59, 59,119,221,187,119, 47, 40,138, 42,252,209,126, 35, 88,236,233, 9, 23, 23, 23,244,236, +217,147, 59, 96,192,128,174, 81, 81, 81,149,186,143, 44,224, 98, 41, 17,173, 37, 37,206, 83,153,213,111,165,173,111,198,121, 79, + 49, 69,151, 10,244, 80,133,123,179,220,234, 78,145, 72, 84, 24,133, 42,229,187,222,208,164,105, 26,243,231,207, 7, 69, 81,224, +241,120,224,243,249,165,126,118,232,208,193,210,114,198, 82, 20, 69,243,249,252, 57, 92, 46,247, 83,141, 70,227, 46, 18,137, 18, +140, 70,227,110,141, 70,179, 28,128,158, 16, 98, 83,134,201, 42, 85, 83, 42,149,122,190,120,241,162,110, 89, 5,209,104, 52,168, + 95,191, 62,160, 65, 88,121,154, 17, 17, 17,158,181,106,213,242, 6, 96, 26,162,237, 26, 33,164, 93,145,255,139,114,141, 16,242, + 65,193,223,207, 95,189,122,229, 89,187,118,237,204,191,235,250,100, 53,255,121,154, 21,120, 17, 71,138,162, 78, 22,185, 87,123, +155,254,159, 59,119,238, 87, 43, 86,172,120, 66, 81,212,201,162,243,139,174, 87,244,179,224,121,115,146, 16,210,123,222,188,121, + 1, 43, 87,174,252,214,180,238, 95, 97, 18, 45,137,104, 89,165,170,165,184, 30, 99, 5, 46,199, 8, 46, 77,129,203, 1, 64, 40, + 68, 71, 69, 32, 55, 39,235, 6, 34,143, 70,154, 23,201, 26,216,186, 97,195,122,171,246,109,152, 77,255,124, 93,137, 44,133, 26, +225, 15,174,224,254,149,223,147,140, 6,227,239,160, 72, 16, 64, 7,227, 53,243, 12, 56, 82,185, 49, 46, 40,194,205, 55, 90, 5, +230,170,152,217,122,103, 52,240,241,241, 25,178, 96,193, 2,135,144,144, 16, 81,118,118,118,238,190,125,251, 18, 52, 26, 77, 20, +128,115,209,209,209, 62,223,127,255,189, 96,213,170, 85,245,234,213,171,231,122,232,208, 33,109, 41,195, 25,189,161,249,229,232, + 97,183, 63,157,246,185, 40,236,208, 22, 8,194,130, 49,255, 97,154,241,143, 68,229,215, 0, 54, 32, 54,175,117,170,218,112, 97, +125,251,234,116, 13, 57, 31,181,109, 4, 29,194, 51,212,229, 70,178, 36, 18,201,186,189,123,247,122, 54,107,214,140, 6,128,235, +207, 13,194, 57, 91,111,187,157, 91,209,154,106,237,111,143,148, 44, 13,166,111, 9,197,153,219, 41,103, 77, 38,171,162, 66,202, +229,242,212,184,148, 28,103,123,153, 8, 35,219,200,208,121,121, 2, 6, 54, 21, 66,200,167,240, 44, 50, 9,181,107,213,160, 66, +111, 28,107, 90, 96,178,154, 37, 38, 38, 2, 64, 83, 0,145,177,177,177,174,129,129,129,217, 69,228, 50, 1,124, 39, 16, 8,230, + 83, 20, 69,154, 53,107, 22, 90,175, 94,189, 60, 91, 91, 91,168, 84, 42,104, 52, 26,240,249,124,168, 84, 42, 68, 71, 71,227,238, +221,187,176,181,181,181,232, 68,229,229,229, 65, 46,151,131, 97,152, 42,107, 26,141, 70,106,219,182,109,210, 39, 79,158, 72,143, + 28, 57,226, 60, 99,198,140,116, 63, 63,191,160, 33, 67,134,188,116,114,114,210, 60,124,248, 16,183,110,221, 66,102,102, 38, 90, +180,104, 97,150,166, 86,171, 5,151,203,133, 74,165,130, 80, 40, 4,151,203,133,193, 96, 0,195, 48,133,230, 43, 47, 47, 15, 25, + 25, 25,224,243,249,208,106,181,239,226, 13,244,141, 8, 85,121,213,111,149,137,104, 21, 53,106,102,154,172,138, 34, 81,101, 86, +119,102,101,101,137,109,108,108,230, 0, 72,172,232,187, 40,138, 2,135,195, 1,159,207, 7, 69, 81,104,215,174, 29,198,142, 29, +139,198,141, 27, 35, 34, 34, 2, 7, 14, 28,192,253,251,247,193,227,241, 10,215, 55,187,126,162, 67, 7,142, 72, 36,186,213,183, +111,223,128,175,191,254, 90, 84,163, 70, 13,132,133,133,121,172, 92,185,114,206,197,139, 23,251, 41, 20,138,166,166,167, 93,249, + 81,250,130, 42,193,252,234,194,158, 26,141, 6, 97, 97, 97,150,108,243, 6,181,107,215,142,166,105,250, 37,195, 48,215, 1,212, + 39,132,180,163, 40,234, 12,242,219, 37, 22, 69, 65, 8,249,128,162,168, 28, 0,143,104,154,126,206, 48, 76, 52, 27,183, 97, 49, +227,185,210,187,228,255, 20, 69,157, 92,177, 98, 69,239,210,204, 85, 41,247,102,177,249, 43, 87,174,252,182,200,255, 85,137,168, +182, 71,241,198,240, 29, 10,162, 92,127, 26,173,147, 39, 79,150,239, 64, 24,244, 63,121,116,255,157,206, 58,120, 6, 52,105, 91, + 36, 58, 68, 16,124,247, 22, 0,178,219,172,162,184,246, 22,211, 28,238,238,109,223, 78,165,183, 95, 81, 34, 54, 33, 5,183, 78, +239, 70,106, 98,212, 46,128,204, 64,228,145,156, 42,159,137, 26,253,235, 57,217, 59,216,168,117, 4, 12, 1,240,134,217,122, 39, + 52,246,246,246, 30,112,251,246,109, 7,181, 90, 45,186,113,227,134,114,239,222,189, 73, 58,157,238, 10,128,155, 5,235,132,164, +166,166, 14, 42, 48, 38, 28, 46,151, 43,208,233,116,229,181, 93,104,252,229,167,163,110,124,183,109,167,232,229,227, 80,124,127, +228, 52,178,148, 74,227,149, 20,213,135, 0, 76,142,254, 82, 72,154, 42,158,128, 84,231,209, 20, 92,165, 60,151,240, 12,181, 8, + 40,189, 74, 86,163,209, 12, 29, 62,124,184,171,201,100, 1, 64, 90,174,158,171,212,232, 57,173,253,237,209,164,227, 32, 4, 95, + 62,140, 67,215,226, 81,203, 81,114,205, 75,154,101,214, 17, 77, 77, 73,220,182,126,211,246,245,223, 45,249, 82, 48,179,167, 53, + 6, 54,229, 65,196,167, 96, 37,225, 97,249,198, 31,245, 33,119,175, 61,116,117,117, 61, 9,224,195,196,196, 68,184,186,186,230, + 1,120,206,225,112, 34,141, 70, 99,105,141,186, 23, 2,112,222,179,103, 15,173,215,235,243, 34, 34, 34,224,226,226, 2,103,103, +103, 88, 91, 91, 35, 60, 60, 28,127,252,241, 7,158, 61,123, 6,134, 97,208,176, 97, 67,139, 78, 86,122,122, 58, 30, 62,124,136, +158, 61,123,205, 72, 77, 77,177,178,181,179, 87,220,184,126,109, 77,101, 52, 25,134,161, 0, 32, 32, 32, 0, 1, 1, 1,162,248, +248,120,247,147, 39, 79, 58, 45, 91,182, 44,198,211,211,115,159, 74,165, 42, 22, 57, 48,215,104,153,204,133,201, 4,138, 68, 34, +240,249,124,228,228,228, 32, 57, 57, 25,185,185,249,157, 54,109,108,108,222,137,209, 42, 35, 66,245,214,214,255,139,205,225, 27, +213,157, 54, 54, 54,195, 1,204, 49,115, 95, 96, 48, 24,192,231,243, 17, 24, 24,136, 77,155, 54,225,254,253,251,248,253,247,223, +225,225,225,129,209,163, 71,131,166,105, 60,121,242,196,210, 34, 50,183,111,223,158,243,225,135, 31, 6,236,217,179, 71, 20, 29, + 29,141,103,207,158,193,198,198, 6,155, 54,109, 18,142, 31, 63,190,246,229,203,151, 23, 34,191,243, 75,249, 20,233, 93,168, 16, +187, 14,174, 95,191,254, 27,171,184,184,184, 88,159, 59,119,206,169,208,128,149,236,145,248, 38, 89, 11, 23, 46, 92,239,235,235, +187,161,160,186,176, 45, 0, 41, 33,164,195,145, 35, 71, 40, 0, 24, 56,112, 32,161, 40,202,244,131,244,232,240,225,195, 29,195, +195,195,201,226,197,139,217, 54, 90, 44,101,121,145,241,166,123,178, 44, 3,101,137, 81, 43, 26,241, 50, 49,111,222,188,128, 21, + 43, 86,220,171,162,201, 42,250,198, 68, 76,102,171,240,199,180,204, 42,195,194,216, 23,237,234,226,100,111, 55,119,116,107, 48, + 12, 96, 48, 2, 6, 35,129, 66,169, 66,216,227,251, 74,136,168, 35,102, 21, 71, 40, 88,181,236,235,207,107,134,198,209, 72,200, +212,225,234,177,237, 36, 53, 49,106, 0, 34, 15,127,242,118, 76,214,224,250, 46,206, 78, 87,247,111,255,134,190,255, 90, 11, 35, +147,239,179, 24,134, 20,254,253, 14,112,113,116,116, 28,118,231,206, 29, 71,161, 80, 40,122,241,226, 5,115,248,240,225, 76,157, + 78,119,177,136,201, 2,128,214, 77,155, 54, 53,200,100, 50, 40, 20, 10,157, 78,167, 83,151, 99,178,220, 59, 52,110,112,237,187, +109, 59, 69,106,173, 22,217, 42, 13, 56,246, 78, 37, 77, 22, 0,180,234, 88,183, 90, 53, 74, 36, 7, 1, 16,149,163, 75, 40,203, +100, 1,128, 80, 40,236, 50,117,234,212, 98,227,226, 57,200,121, 6,137,144,103,188,249, 52,141, 9,190,124, 24,215,159,164, 49, + 34, 62,199,232, 72, 94,215, 52,247, 0,100,197, 61,221,246,251,241,147, 23,190, 88,176, 42, 79,169,200, 69, 45, 55, 49,242,114, +179,177,124,197,119,250,219,183,175, 95,153, 51, 99, 98,203,195,135, 15,175, 68,126, 99,112, 0,120,126,248,240,225, 81, 11, 22, + 44,248, 5,127,166,121, 40, 73,194,176, 97,195,226,252,253,253,179,125,125,125,179,211,211,211,241,244,233, 83,100,102,102,226, +251,239,191, 71, 88, 88, 24, 76, 17, 65,179,218,170,188,105,144,144,153,153, 33, 35,132, 32, 51, 35, 93,250,245,215, 95, 91, 87, + 70,211,104, 52, 22,187,183,170, 85,171,134, 73,147, 38,241,149, 74,165, 77, 76, 76,140, 85,209,101,230,106,106,181,218,194,140, +195,132, 16,104,181, 90,100,103,103, 67,171,213,226,229,203,151,133, 38,171,224,251,223, 89, 68,203,244,183, 72, 36, 74, 54, 93, +203,166, 42, 56,145, 72,148, 82,214,250, 85,161,200,119,145,130,191, 45, 53,135, 21,238,143,153,231, 29,124, 62, 31, 99,199,142, +197,189,123,247, 16, 17, 17, 1, 14,135, 3,133, 66, 1,165, 82,137,174, 93,187, 66, 32, 16, 88, 26,209, 34,124, 62,127,248, 87, + 95,125, 37,138,140,140, 68, 90, 90,154,169, 49, 61,140, 70, 35,102,204,152, 33, 22, 10,133,195, 45, 13,221, 39, 38, 38,118,127, +249,242,165,119,201, 41, 41, 41, 41,187,104,155,194,202,114,228,200, 17,106,224,192,129,100,224,192,129,196,100,184, 88, 88, 74, +163, 12, 47,178,163,172,136,214,219,136,138,153, 34, 91, 40,232, 32, 82, 9, 76, 38,171,125, 17,227, 69,153, 34, 92,230, 85, 29, +214, 26,220,200,217,222,238,242,158, 45, 75,101, 39, 31, 83,136,139,141, 66,106, 98, 52,154,182,236,128,176,199,161, 96,244,198, +163,120,121,164,226,150,156, 53, 6,214,245,245,245,251,172,125,203,122, 88,117, 50, 15, 47,130,207, 33, 43, 53,113, 51,162, 14, + 31,125, 43,103,200,115, 96, 3,103, 39,187,203,191,108, 89,106,115,230, 41,141,216,216, 40, 28,251,101, 61,209,235, 52, 89, 40, +222,147,203,226,183,102, 49,163, 21,228,101, 37, 67,155,107,132,136, 86,138, 44,172,164, 72, 2,112,125,253,250,245,157, 91,180, +104, 33, 24, 54,108, 88, 82,102,102,230, 49, 0,119,138,172,227, 95,183,110,221,158,155, 54,109,114,142,141,141,197,197,139, 23, +147,144,223,245,191, 44,226,174,133, 62,222,250,199, 47, 63,126, 41,174,233,131,239,191,250,194,112,228,254,211,190, 0,206, 20, + 89,199,183, 75,253,186, 39,151,205,154, 76, 51, 33,103,241, 48, 58, 25,175,179, 53,127,148, 37,152,150,150, 70, 41,149, 74, 79, + 27, 27,155,162, 23, 36, 92,165, 10,205,236,193,117, 19,186,206,185,225,166,214, 25, 33,228,209,100,122, 63,207,132,123,199,142, +216,167,169,211, 40, 83,111,196,138, 24, 55,164, 75,191, 45,123,127, 27,121,242,228,169,207,116, 26,117, 61, 31, 31,111, 18,116, +251,242,195, 57, 51, 38,246,168,228, 25,151,221,187,119,143,230,112, 56,197, 12,122,209, 8,145,165,145, 34, 75, 48, 87,179,164, +209, 50, 97, 48, 24,168,202,106,106, 52,154, 82,135,118, 40,173,173, 22,195, 48,127,201,254, 91, 18,161, 42, 90,101,104,106, 79, +167, 86,171,157, 10,218,108, 57,191,205,136, 86, 85,122, 34,150, 87,125,105, 73,249,104,154, 6,195, 48,224,243,249,104,216,176, + 33, 78,158, 60, 9, 59, 59, 59, 88, 89, 89,193,202,202, 10, 98,177, 24,246,246,246,133, 70,139,166,205,238,165, 67, 52, 26,141, +135,135,135, 7, 94,190,124, 9,145, 72, 84, 56, 9,133, 66, 4, 4, 4, 64,161, 80, 84,195,187,140,221,179,176,252,181,207,149, +147, 69,205, 18, 69, 81, 39,231,206,157,251, 85,101,245,230,206,157,251, 85,105, 17,174, 42, 26,174, 98,209, 45,110, 81, 7, 89, +170,147, 44, 48, 89,187, 54, 47,177,250,237, 1, 16, 23, 23,137, 11,135, 54,230,234,117,218, 76,134,209,123,190,126, 22, 10,208, +216,109, 86, 17,104,210,188, 95,207,142,212,133, 39, 90,228,100,165,226,121,208,185, 40,168, 4,243,222,154,201,114,118,184,188, +103,203, 18,155, 19,143, 41,196,198, 70,225,204,254,239,115,244, 58, 93, 23, 68, 30, 9,170,138,244,112, 62,191, 31,191,122, 76, +239, 79,219, 38,192, 72, 25, 49, 60, 44,252,131,148, 36,244, 75,188, 81,126,207,176,162,164,166,166, 30, 91,191,126, 61,181,122, +245,234,246,106,181,250,127, 0,138,134, 40,235,213,170, 85,235,227, 29, 59,118,216,197,198,198,242,110,220,184,161,184,124,249, + 50, 1,112,162,130,136,203,236,174,159, 76,226, 52,174, 81,109,106, 72, 84,124, 95, 0,103,139, 44, 14,232,221,196,255,230,206, + 21, 11,229,250,155, 71,144,151, 24,139,121, 55,227,114, 0,152,125,188,245,122, 61,178,179,179,161,207, 75, 55, 52,117, 85,100, + 47, 30,228,164, 73,206, 84,115,121,140,210,224,107,149,162,185,156,254,154, 35,145, 72, 44, 58,150, 91, 86,124,185, 23,192,222, + 65,131, 6,237,121,116,251, 84, 83, 87, 87,215, 83,190,190,190, 20, 0,148,209,195,176, 44,150, 2,152,209,170, 85, 43, 42, 48, + 48,240,238,134, 13, 27,206,151,103, 86, 42, 19,209,170, 8,115, 53, 25,134,161,203, 56,190, 84,101, 53,139, 70,180, 42, 50, 90, +239, 50,162, 85,154,105, 41,106, 18,139, 26,161,127, 66,175,195,242,204,148, 37,229, 51,181,147,227,243,249, 8, 13, 13, 69,245, +234,213,161,211,233, 32,151,203, 33,151,203, 33,147,201,144,155,155, 11, 30,143, 7, 11,247,153, 17,137, 68, 49, 79,159, 62,245, +118,116,116,132,209,104, 44,102,182, 94,188,120, 1,169, 84, 26,111,105, 68,203,213,213,245, 92, 65,175,195, 98,184,184,184, 88, +191,141,227, 90, 52,146, 53,112,224, 64,182,138,144,165,220,104, 86, 25, 81,173,212, 18,145, 40,109,145,255, 83,145,159,195,173, +119,193,223, 40,229,111,109, 41,243,210, 87,172, 88,113,185, 72,251,174,212, 42,238,130, 41,197, 67,177, 30, 46,220,138, 34, 89, + 78,118,182,151,127,250,126,177,213,161, 96, 32, 62, 54, 18, 87,143,110,202, 54, 24,117,157,192,144,196,219, 23,143, 30, 1, 5, + 37, 94, 31,185,106,222, 35, 2,141, 27,251,121,226,247, 39,122,164,198,189, 0, 33,204, 46,164,236, 85, 86,249,236,212,234,223, +208,201,206,225,242,174, 77,139,173,127, 11,165, 16, 23, 27,137, 11,135, 54,229, 24,244,202,206,136, 60, 26, 92, 89,217,177,128, + 45, 71, 42,218, 58,160, 67,227,193,158,181,220,193, 16, 61, 24, 62, 65,255,217, 14,220,231, 33,202,223,175,139,178, 15, 49,121, +204,103,241,119,204,107, 64,151,151,151,247, 59,128, 32, 20, 79,175,208,160, 78,157, 58,131,183,110,221,234, 24, 23, 23, 39, 10, + 9, 9, 81,109,223,190, 61,133, 97,152,223, 0,152, 83,149,250, 69, 72, 84,252, 79, 40,158, 47,167,193,151,159, 12,187, 61,108, +204,167,162,200,139,123, 97, 27, 25,134, 89, 55, 19,140,207, 51,181, 67, 11,162,107,165,226,224,224, 64,210,210,210,162,179,178, +178,188,165, 82, 41,210,211,211,145,145,145,129,236,236,108,104,114, 50, 12,246,198, 44, 5,101,200, 0,143,199, 67, 74,172, 30, + 70,163, 49,201,220,104, 22, 0,219,165, 75,151,142, 99, 24,198,148, 17,177, 88,239,194, 34,235,153,174, 7,239, 65,131, 6,237, + 41,210,235, 48,187,168, 22,242,211, 59, 80, 5,233, 29, 90,156, 61,123, 54,188, 71,143, 30,113,165,153, 21,161, 80,104,113, 67, +233,178,122, 49, 86, 70,179,172,136, 86,201,249,150,104,154,170, 47, 77,141,224, 75,206, 55,193,225,112,192, 48, 12,204,232, 84, +241,151,154,150,162,189, 3, 43, 99,114, 74,156,155,114, 19,135, 86,178, 39,226, 91,141,104,153,206, 5,159,207,199,241,227,199, + 49,102,204, 24, 24,141, 70, 72, 36, 18,200,100, 50, 72,165, 82, 28, 61,122, 20,166,244, 15,150,248, 87,189, 94,255,235,138, 21, + 43,190,218,182,109,155,152, 16, 2,129, 64, 80,104,180, 22, 47, 94,172,210,233,116,191,154,101,180, 76, 25,223, 25,242, 84, 42, + 53,148,219,235,176,180,109,202,104,175,101,179,116,233,210, 81, 12,195,244, 67,137, 20, 14, 37,214, 43,150,250,129, 77,239,192, + 98,198,243,228,254, 63,184,120, 38,131, 69, 21,137,100, 21, 26, 46,186, 60,243,226,104,107,115,249,199,239, 23, 91,237,187, 79, + 33,242,245,107, 92,249,223,198,124,147,245,234,208, 3, 68, 31, 73, 70,228,145, 54,120,125,164,187,217,111, 79, 20,213,216,205, +201, 6, 25, 10, 6, 57,105, 49, 0, 65,200,219, 48, 89,142,182,142,151,127,222,180,216,250,240, 3, 26,145,145,145,184,112,104, + 99,182,193,160,238, 84, 21,147, 53,156,207,239, 87,167,174,123,196,252,113,253, 6, 7,214,118,129,125, 76, 56, 78,140, 30,140, +111, 14,124, 4,185, 35, 7,205,123,202, 49,118,185,203, 96,215, 0,225, 75,215, 54,232,103,129,116, 81,147,213,216,203,203,107, +240,157, 59,119, 28,234,215,175, 47,122,246,236,153,122,251,246,237, 41, 42,149,234, 60,128, 80, 11, 52,139,154,172,198,115,199, +143,190,253,221,143,123, 68, 52, 95,128, 85,191,158,192,180,107,113,198, 83,209, 57,131, 80,188, 90,177, 84, 52, 26,205,197, 77, +155, 54,105,104,154, 70, 70, 70, 6,210,210,210,144,146,146, 82,248,153,149,149, 5, 14,135,131, 75,151, 46,105,115,114,114,238, +152, 91,192, 91,183,110,121,197,199,199,251, 38, 38, 38, 54, 45,152,158, 33,191,119,161,172,200,188,166,137,137,137,237, 1,220, + 55,205,143,139,139,171,113,247,238, 93,215,138,244,229,114, 57,248,124,126,177,136,150, 80, 40,132,179,179, 51, 12, 6, 3, 14, + 30, 60, 8, 0, 25,229,105,240,249,130, 68,154,166,192, 16, 70, 35, 18,137, 24, 87, 87,215, 82, 13,150, 37,154, 5,196,125,240, +193, 7,234,224,224,224, 82, 35, 90,149,209, 36,132, 40,187,117,235,134,132,132, 4,136, 68,162,194, 31,107,147,161,162,105, 26, + 66,161, 16, 73, 73, 73,152, 48, 97, 2, 8, 33,202,191,251,201, 83,180, 77, 83,129, 25,162, 0, 80, 5, 70,232,141,118, 90,230, +182,129, 50, 85, 13, 18, 66, 96, 50, 92, 37,150, 23,126,151, 57,217,219, 75,180,233, 26,159,149,149,245, 93,126,113,200,246, 18, +159, 59, 44,248, 81, 40, 52, 90, 97, 97, 97,216,179,103, 15,178,178,178, 32, 16, 8,144,153,153,137,157, 59,119,226,233,211,167, + 16, 8, 4, 48, 29, 11,115,253, 91, 96, 96,224,119,215,175, 95,127, 58,116,232, 80, 85,104,104, 40, 84, 42, 21, 66, 67, 67,209, +189,123,119,245,205,155, 55, 35, 84, 42,213, 82,152, 83,117,104,202,248, 94, 48,188,142, 70,163, 65, 72, 72, 72,169, 83, 89,219, +148, 36, 34, 34,194,211,104, 52,122, 19, 66,218, 18, 66,172, 80,144,194,161,224,255,162,211, 7, 5,203,172, 8, 33,109,141, 70, + 99,157,136,136, 8, 79,214, 78,176,188,167, 92, 45, 98,182, 72, 17,147,117,181,252,136, 22, 67,111,250,105,227, 18,171, 95,239, +209,136,141,142, 64,208,233,173,217, 70, 70,223,201,194,225,112,186,160, 72,174, 13,145, 88, 90,143,161,242,187, 51,231,164,197, + 2,132, 83, 25,163, 85, 76, 19, 12,189,105,231,198,197,214,251,131, 40, 36,196,190,194,205, 99, 91,178, 13, 6, 77,103,188, 62, + 18, 82, 25,205,225,124,254, 2, 30,135,154,223,173,117, 35,126,155, 70,117, 33, 77,137, 66, 82, 92, 2, 14,134,165,102, 68,100, +106, 62,189, 73,233, 16,253, 74,243, 83,207,113,118,118,182, 46, 60,244,158,104,111,119,231, 68,206,239, 20, 79,161, 35, 58,178, + 34,241,102,225,176, 20,197,203,249, 38, 46,114,185,124,104, 80, 80,144,149, 72, 36, 18, 7, 5, 5, 49,219,183,111, 79, 87,169, + 84,167, 1,220, 54,107,223,223,196,189, 89,221, 90, 87,191,221,242,163, 40, 79,161,132, 66,171,131,208,217,213,248,219,237,199, + 3, 80,118, 2,204, 98,154, 66,161,112,255,254,253,251,123,182,107,215,206,179, 94,189,122,116, 70, 70, 6,242,242,242, 10, 27, + 87, 59, 58, 58, 34, 44, 44,140,137,140,140, 76, 16, 10,133, 7,204, 45,103,171, 86,173, 34,105,154,126, 86, 80,141,246, 12, 37, +122, 23, 22, 89,213, 59, 49, 49,177,153,171,171,235, 85, 0,146, 34,189, 14,139,106,154,210, 59,124, 5,128,166, 40,234,126,104, +104,104, 94,143, 30, 61, 32, 22,139,161, 80, 40,224,225,225, 1,131,193,128,211,167, 79, 35, 56, 56, 88,193, 48,204,213, 82,204, +107,177,114,170,213, 42, 15, 0,180, 74,169,108, 56,106,212,168,246, 51,103,206, 44,214, 37,221,201,201, 9,118,118,118, 22,105, + 2, 64, 70, 70,134,223,217,179,103, 63, 15, 13, 13,253,162,103,207,158,214, 95,125,245,149,208,203,203, 11, 70,163,145,174,172, +102,102,102,166,117, 72, 72,200,154, 54,109,218, 76,238,209,163, 7,247,219,111,191,133,181,181, 53,140, 70, 35,196, 98, 49,114, +114,114,176,116,233, 82,220,184,113,195, 64, 8,217,146,157,157, 61,203,194,107, 9, 85,189, 55,203,138, 0,149,149,146,161,140, +245,255,242,114,150,104,211,133,130, 20, 14,115,202,200, 96, 15,115,175,121,147,209,226,112, 56,136,138,138,194,246,237,219,223, +200,163,101, 74,255, 80,134,118,105,251, 78,174, 92,185, 98,164, 40,170,101, 80, 80,208,156,145, 35, 71,126,170, 80, 40,220,165, + 82,105,130, 94,175,223,173, 82,169,150, 35,191, 61, 42,223,146,103,136, 66,161,136, 46,173,215, 97,201,117, 0,155,114, 53, 75, +164,119, 40,150,194,161,196, 54,197, 82, 63,148,146,222,225, 47, 63,239,172,230, 63, 82,243,125, 55, 91,101, 39, 44,125,131,198, +227,121, 60,149,190,254,245, 8,170, 42, 38,235,205,104,137, 90, 25,177,112,127, 76, 35,173, 70, 13, 69,118,242,115, 68, 29, 76, +169,210,110, 21,148,243, 90, 4,133,168,200, 87,184,119,114, 75,126, 57, 95, 31,169,116, 57, 41, 96,222, 15,103,142,240, 41,107, + 59, 60,252,124, 12, 18,178, 20, 56,243, 58,243, 16, 81,106, 62,251, 21,200,196, 13,128, 54,104,174,239,252, 58,105,107,219,254, +214,131, 29,170,241,176,238,203,221, 16,205,181,231, 55,239,220,206,146, 49, 16,147, 68, 34,209,245,239,191,255,190, 75,219,182, +109,133,131, 6, 13, 42,173,129,188,165,196,221,127,241,234,135, 83,219,214,126,105, 95,191, 5, 54, 47,152,109,220,127,251,113, +201, 94,136,229,226,235,235,107,188,117,235,214,204, 9, 19, 38,172,235,210,165,139, 91,223,190,125, 5, 30, 30, 30, 16, 10,133, +120,245,234, 21,174, 95,191,174,125,253,250,117,130, 82,169,156,217,160, 65, 3, 75,114,156,101, 46, 92,184,240,187,130,239,160, + 10,170, 11,155,162,160,119,161,105,165,130,164,165, 77, 1, 72, 22, 47, 94, 60, 18, 0,202,232,246,189, 16,192, 54, 0, 92, 66, + 72,210,222,189,123, 91, 30, 59,118,172,229,140, 25, 51,248, 61,123,246,196,157, 59,119,112,225,194, 5,157, 78,167,187, 93, 96, + 92,205, 29, 42,135, 1, 16, 98, 48, 24, 30,175, 90,181,170, 37,135,195, 89,104, 90,240,244,233, 83,236,218,181,171, 50,154, 6, + 0,107,146,147,147,127,216,187,119,239,194,139, 23, 47,126, 50,106,212, 40, 43,189, 94,143,176,176, 48,252,252,243,207,149,210, +204,206,206,254,220,193,193, 97,254,233,211,167,119,159, 63,127,254,195, 17, 35, 70,208,211,166, 77,195,166, 77,155,240,191,255, +253,143, 49, 26,141,199,120, 60,222,168,180,180, 52,197,187,120,234, 20, 84,195, 37, 88, 56,214, 97,133,186, 85,169, 26, 52,147, +196,170, 10,152,246,163, 67,135, 14,133, 81, 70, 83, 20,174,232, 58, 20, 69, 89, 92,117, 8,192,134, 16,194, 0,216,130,252,241, + 69,139,102,133,231,224,207,204,241,230, 42,250, 39,106,108,158, 66,131,176,242, 7,149,182, 1, 8,252, 43, 80,203, 90,184,112, +225,250, 69,139, 22,173, 47,153,194,161,232, 74, 37, 83, 63, 44, 89,178, 4,108,122, 7,150,127, 43,165, 27,173,144, 29,122,125, +205, 1, 95,125,255,237,236, 69, 6,189, 54,155, 64, 55, 16,175,142,134, 86,245,203, 8, 67,230, 94,218,183,120, 19, 8, 50,137, +209, 48,167,202,165,255,139,202, 73, 89,219, 33,119,233, 36,252,239, 73, 2, 73, 82,232, 63,250, 85,167, 43, 22, 13,202,111,147, +197, 12,185,172,206, 60,104,235,198,251,237,243, 78,246,212,169,140,145, 22,127, 79, 74, 74,202,241,245,235,215,211,107,215,174, +109,175, 84, 42, 75, 54,144,175, 44,179,251, 76,157,203,105, 94,199,115,234,189,151,209,253, 96, 70,117, 97, 73, 90,181,106,149, + 24, 30, 30, 62,236,252,249,243, 67,175, 93,187,214, 69,161, 80,120, 82, 20, 5,137, 68, 18,173,209,104, 46, 10,133,194,253, 22, +154, 44, 0,192,162, 69,139,200,146, 37, 75,168,240,240,112,194,225,112,254, 0, 16,201,225,112,162,138, 54,130, 47, 58,223,180, +205,226,197,139,205,249, 65,188,150,151,151, 23,188,116,233,210,118, 75,151, 46,109, 88, 16, 21,186,134, 63,219,124, 89,138, 30, +192, 53, 62, 95,144, 64, 81,148, 59, 95, 32, 84,220,186,117,235, 98, 21, 53,149, 58,157,110, 78,108,108,236,186,117,235,214, 45, +151, 74,165,205,158, 62,125,250, 71, 85, 52, 11, 76,212, 0, 59, 59, 59,183, 61,123,246, 28,222,185,115,103, 11, 46,151,123,135, +162,168, 65,217,217,217,239,116, 80,233,130, 1,162,151, 88, 48,214,161, 89,186,111, 59, 73,233, 95, 97,220,140, 70, 99,222,252, +249,243, 83, 74, 26,175,146,209, 43,211,255, 5,169, 92,204, 57,166,150,244,162,172,192,184, 80,121, 0,144, 63,118, 97,254,176, + 58,230, 14, 42, 13, 64, 85,209,125, 78,211,244, 49, 0,207,105,154,126, 89,178,163, 75,209,101, 75,150, 44,169,232, 62,103, 97, +121,175, 49,227,201,182,152, 6, 22, 87,182, 37,237,223, 24,174,124, 59,229, 28,198,231, 47,161,129, 47, 1, 80, 4, 88,247,171, + 78,247,117,121, 27,186,180,194,114, 66, 97, 70,193,193,252, 54,233, 38,150, 85, 98,223,171,193,140,241, 7, 45,212,244, 65,249, + 3,202,190,161, 57,112,224, 64, 78, 25, 63,230,197, 6,149, 46,139, 35, 71, 10,179,248,151, 85,206,162,215,155,252,238,221,187, +110,129,129,129,137, 40,222,232,191,180,249,196,194,125,231, 0, 48,190,229,227,249, 94,104,214,170, 85, 75,240,234,213, 43,237, + 63,235,222,100, 53,255,145,154, 54,126,213, 65, 97, 28,138,230, 14, 42, 55,162, 85,196,160, 17,242, 51,178,194, 98,203, 40,167, +233, 62,183,137,136,136,240,172, 93,187,118, 52,128,172, 18,229, 40,109, 25, 97,207,209,127, 94,179, 52,198,163,248, 80,116,239, + 21,165,245, 14,199, 95,112, 34, 88, 77, 86,147,213,100, 53, 89, 77, 86,147,213,100, 53, 43,107,180,222, 91, 8, 33,160,193,194, +194,194,194,194,194,194,194,242,151, 64,149,227, 74, 45, 9, 9, 86,198,217, 94,100, 53, 89, 77, 86,147,213,100, 53, 89, 77, 86, +243, 63,167, 89,145,118,209,237,223,215,170,195,241, 0,118,176, 85,135,172, 38,171,201,106,178,154,172, 38,171,201,106,254, 83, + 52,203, 50, 44,239, 45,132, 16, 51,199, 58,100, 97, 97, 97, 97, 97, 97,249, 71,208,165, 46, 92,185, 70,208,103, 95,153,213,137, +170, 66,122,212, 66, 53, 0,120, 91,122,255, 81, 92, 1,244, 42,242,255, 41, 20,244,140,103,141,214,251, 75, 29, 0, 95, 1,176, + 46, 50,239, 30,128, 21, 37,214,219, 7,160,232,128,132, 10,228,143, 19,248,210,146, 47,163,105,122, 69,187,118,237, 62,187,113, +227,198, 90,131,193,176,180, 18,229,245,116,117,117,253,142,162,168, 38, 0,120, 20, 69,189, 74, 78, 78, 94, 97, 48, 24,170,210, +107,165,166,139,139,203, 74, 0,141,104,154,230, 81, 20, 21,145,156,156,188,204, 96, 48, 92,169,130,166,220,217,217,185, 53, 33, +196, 5, 0,135,199,227,165,199,199,199,223, 69, 37,115, 43, 13, 92, 28,198,207, 81, 24,120, 0, 96, 37,229,234,143, 44,246,211, +153, 59,143,189,196, 89, 88,254,219,144,252,158,201,197,232, 94, 11,203,137, 1,179,140, 0,213,205, 11, 27,207, 69, 98, 86, 89, +219, 83,165,244,106, 46,169,217,189, 22,150, 27, 73,190, 70,183, 90, 88,115,238, 21,202,237,105,111,142,166,137, 29, 0, 61,222, +140, 81, 10, 40,243,122, 95,255,211,233,133,226, 85,156,133, 85,158,229, 26,173, 33,117,225,106,228,130,123, 36, 12,166,110,188, +114, 0, 13, 11,126,228, 95, 34, 63, 87, 81,110, 21, 11,247,190,104,254,211, 88, 72, 8, 25, 86,236, 98, 45, 37, 15, 81,167, 78, +157,250,158, 63,127, 94, 98, 26,239,142, 97, 24,136,197, 98, 3,128,209, 22,124,151,211,144, 33, 67,230,254,244,211, 79, 24, 60, +120,240,252,147, 39, 79,174, 7,144,103,238,198,182,182,182, 3,109,108,108, 54,253,248,227,143,142, 45, 90,180,164, 4, 2, 1, + 94,189,138,112,159, 48, 97, 66,189,240,240,240, 99, 41, 41, 41,159, 90,186,243,118,118,118,195,109,108,108,214,109,223,190,221, +161, 77,155, 54,160, 40, 10,193,193,193,238,159,127,254,121,195,152,152,152, 3,201,201,201,147, 45,213,180,183,183,175,107,109, +109,221,113,243,230,205,226,214,173, 91, 67, 36, 18, 33, 52, 52, 84, 54,113,226, 68,151,248,248,248,176,228,228,228,171,150,154, +172, 71,193, 39, 62, 52,232, 52,171, 0,128,203, 23,206,110,177,238,246,137, 71,151, 79,244,169,104,222,192,197, 97,191,179,102, +139,133,133,165, 40,195,221,224, 66, 8,190, 60,255,243, 2, 26, 0,186,125,242,205,180,225,110, 88,251,107, 66,217, 99,216, 90, +168, 55,107, 84, 53,108,218, 19,143,228,170,148,115, 7, 64,127,206,229, 78,107, 30, 24,232, 48,229,230,205, 8, 29,176,251, 63, +114,138, 74,173,230, 44,211,104, 13,240,195, 82, 67,126,196,132,234, 81, 27, 7, 46, 68,114,174,119,234,212,169,246,216,177, 99, +169,198,141, 27, 35, 56, 56,184,238,129, 3, 7,122,157, 58,117, 42,194,104, 52, 6, 3,120, 2,243,179, 90,243, 0, 4,112, 56, +156, 38,255,112,205,127, 50,210, 2,115,149,140, 63, 19,157,190,145,240,244,210,165, 75,199,185, 92,174, 41,162,213, 92,161, 80, + 56,151,136,130,153, 67, 13,189, 94,143,103,207,158,129,166,105, 30, 0, 47,188, 57,164, 70, 89,184, 75, 36,146,173,183,239, 5, +219, 83, 92, 49, 50,213, 0,212, 58, 8,100,206,248,105,215, 94,187,153,211, 39, 15,184,114,229,202,245,220,220,220, 95, 44, 40, +143,151, 84, 42, 93,255,240,225, 67,123,137, 68, 2,134, 97,144,155,155, 11, 23, 23, 23,252,248,227,143, 54, 51,103,206, 28,150, +147,147,115, 69,173, 86,255,207, 18,115,110,109,109,221,241,241,227,199, 98,211,128,210, 90,173, 22,238,238,238,216,183,111,159, +112,218,180,105,126, 89, 89, 89,113, 90,173,246,181,185,130, 57, 10, 3,207,160,211,172,218,179,101,113,117, 0, 24, 53,121,241, + 42, 65,174,213,105,115,230,229, 40, 12,167, 0,176, 70,139,229,239,166,137,131,131,195,145,180,180,180,171, 0, 62,197,219,137, + 52,212, 21,137, 68, 13, 24,134,113,161,105, 26, 28, 14, 39, 73,161, 80, 60, 4,240,162,178,130,246,181, 58,244,129, 80, 50, 6, +132,105, 72, 3,160,104, 58,212,168, 83,238, 74,127,113,229, 68,149, 52, 5,226, 79, 0,210,144, 6, 24,138,166, 31, 50, 6,229, +143,105,207,174,156,249,167,156,156, 59,217,240,174,229, 98,254,192,152,111, 67,239,227,154,112,165, 25,208,251,162,204,175, 86, +156, 10,244,156, 62,125,186,203,228,207, 62,163,198,140, 30, 93,231,234,141, 27, 84,123, 75, 70, 43,120, 63, 41,179,193,126,169, + 70,107,160, 31,108, 9, 48,231,192,166,175,104, 46,135, 67, 13,157,190, 98,216,206, 45,107,232,174,125, 6, 21, 86,159,180,109, +219, 22,109,219,182,165, 86,173, 90, 85,231,143, 63,254,168,179,111,223, 62,195,237,219,183, 31, 2, 56, 88,214,151,117,175, 5, + 21, 3,136,248, 60,174, 98,232,130, 95,182, 7, 6, 6, 66, 40, 20,162, 42,154, 0,208,181, 54,253,154,103, 87,243,225,208,169, + 11,163, 91,180,104, 69,222,134,230,123,196, 61,160,112, 80,107,219,234,213,171,183, 54, 24, 12, 34, 0,224,114,185,234,216,216, +216,169,200, 31, 27, 16, 0,142, 49, 12,211,215, 2,109, 26,192,162,190,125,251,206,159, 50,101, 10, 60, 60, 60, 48,109,218, 52, +232,245,250,224, 51,103,206, 44, 4,176, 18, 21,220, 60, 78, 78, 78, 11,183,110,221,106,199, 21, 72,209,120, 78, 36, 18,179, 12, + 0, 0,153, 16, 56, 62,137, 96,218,180,105, 86, 65, 65, 65,203, 44, 49, 90, 78, 78, 78, 75,127,252,241, 71, 59,137, 68, 2, 66, + 72,225, 88,140,121,121,121,200,203,203,195,228,201,147,173,194,194,194,190,179,196,104, 57, 59, 59,183,222,188,121,179, 88, 36, + 18, 33, 47, 47,143,175,211,233,168,220,220, 92, 40,149, 74,162,213,106,117, 83,167, 78, 21, 62,121,242,164, 67, 98, 98,226,107, +176,252, 83,224, 0,248,136,199,227,245,175, 93,187,118,211,151, 47, 95, 62, 48, 24, 12, 71, 1, 28,125, 11, 47, 83,157,221,220, +220,150, 39, 36, 36,108, 6,176,247,191,114, 64,157,157,157,143,222,186,117,171,250,214,173, 91, 71,175, 93,187,246, 52,128,255, + 85, 65,142,207,231,243, 7,180,111,223,190,250,168, 81,163, 4,206,206,206,208,104, 52,136,140,140,180, 58,116,232,144,103,104, +104,104, 92,193,136, 24,102,191, 80,216,215,109, 37, 3,215,234, 64,203, 86,173,219, 12, 30,240,145,220,217,222, 26, 42,173, 17, + 47,163, 19, 61,206,158, 62,222, 62,156, 47,190,165,211,101,127,156,254,226, 86,158,165,154, 29, 59,118,110,211,165,115,103,185, +181,141, 53,178, 21, 58,188,138,138,247,188,124,225, 68, 91, 46, 87,124,141,161,244, 35, 82, 30, 95, 80,190,203,115, 51, 13,224, + 42, 68,246, 13, 26,182,106, 28,212,109,236,178,166,132, 16,208, 4, 27, 75, 70,179,166, 1,220,141,249,195,126, 89,164, 7, 66, + 8, 69, 97, 77,209,104, 86,247, 90, 88, 78, 8,102,129, 6,213,189,130,106, 74, 19,221, 0,161,141,157, 93,224,196,241,227,169, +220,156, 28,132,134,134, 42, 75,154,172,245,213,192,191, 70,163,198,177,216,202,155,237,127,104, 52,171,212,170, 67,179,243,104, + 73, 36,146, 82,231, 91, 91, 91,163, 99,199,142, 88,177, 98, 5, 23, 64,147, 18,139,139, 15,178, 10, 8, 79,110,155, 7,107,169, +144,246,240,240,144, 91, 89, 89, 85, 89, 19, 0, 64, 24,175, 86, 30,228,131,251,191,124, 53,250,226,190,117, 1,138,220, 44, 94, +201, 85,100, 50, 25,188,189,189, 49,127,254,124,243, 52,171,206,223,170,233,226,226,226,211,182,109,219, 38,151,174, 94,181, 73, + 72, 72, 16, 38, 36, 36, 8,207, 95,186,100,211,178,101,203, 38, 46, 46, 46, 62,133,135,234,205,174,166,229,149,243,155, 45, 91, +182, 44, 60,118,236, 24,221,182,109, 91,216,218,218,162, 99,199,142, 56,125,250, 52,119,237,218,181,223, 2,152, 95, 81, 57,105, +154,110,211,182,109, 91, 10,132, 32, 41,219,128,187, 43,124, 16,186,198, 23,185,106,130,140,236, 28,168, 84,106, 72, 36, 18, 17, +242,171,123,205,221,247, 86, 45, 91,182,164, 0, 20,154,171,220,220,252, 41, 47, 79, 1,173, 86, 7,161, 80, 40, 7, 32, 50, 87, +147, 16,226,210,186,117,107, 0,128, 78,167, 43,124,195,203,202,202,162,178,179,179,161,213,106,193,227,241,248,168,184, 93, 99, +161,166,149,148,171,231,242,133,179, 71, 77, 94, 28, 59,106,242,226, 88, 46, 95, 56, 91, 43,207, 49,154, 51,207, 74,202,213,191, +227,235,211,145,166,233,159,107,213,170, 21, 70,211,244, 30, 0, 46, 85,212,108, 6,224, 91,177, 88,124,209,215,215, 55, 86, 34, +145, 92, 42, 48,234, 45, 43,169, 41,144, 72, 36,151,190,253,246,219,195, 15, 30, 60, 24,252,199, 31,127,120, 61,122,244,104,192, +170, 85,171, 14,200,100,178,235, 40,222, 46,209,226,123,211,203,203,107,231,221,187,119,155,181,106,213,234, 39, 0,194,183,116, +191,115, 0, 52,130, 89, 35,114,188,147,243,238,214,184,113,227,234, 34,145, 8, 93,186,116, 1,128, 14, 85,209,228,243,249, 3, +230,207,159, 95,107,193,130, 5,130,196,196, 68, 92,186,116, 9,247,238,221,131,193, 96,192,164, 73,147,132,163, 70,141,170, 41, +151,203, 7, 88, 84, 78,174,213,129,233,159,207,232,241,229,180,113,242,135, 49, 58,236,186, 24,131,223,111, 39, 34, 69, 41, 64, +159, 1,163,172,187,247, 27,210, 93, 32,180, 62, 96,169,230,220, 57,115,122,140,255,100,152,252,105, 34,131,227,119,146,112,231, + 89, 54, 12, 60, 27,244, 28,240,169,109,195,214, 61,122,113,193,219,253,174,207,209,143, 64,139,233,211,167, 59,206, 94,243,235, + 77,183,102, 31,109, 76,205, 68,219,162,198,167, 46, 96, 99, 39,149,126,244,172,125,251,113,226,252,241, 98,203,213, 44,166,215, +164,223,166,148, 76,180, 43,218, 62,171,157, 29,234, 20, 84, 43,114,206,255,188,128, 38, 20,166, 13,119, 43,246, 28, 40,181,156, + 87,128,193,211,103,204,224, 89,219,218, 98,203,150, 45,208, 40, 20,197,218,204,118,174,142, 30, 23, 37,220,184,154,190,238, 97, + 29, 61,169,235,255,194,247,149,241,101, 70,180, 78,158, 60, 73,122,247,238, 77, 1,192,145, 48,100, 14,240,195,119, 67,166,124, + 59,159,162, 41, 82, 35,160,213,211,106,181,252, 21,246,246,246, 80, 42,149,208,104, 52,224,243,249, 80,171,213,136,137,137,193, +157, 59,119, 96,107,107,107, 81, 73,114,114,114, 32,147,201, 32,147,201,222,138,230,188,209, 93,132,175, 98, 83,133,231,238, 92, +105,255,253,103,255,107, 81,171, 81,135, 71,157,135, 76,123,108,229,232,166,126,244,232, 17,110,221,186,133,204,204, 76, 4, 6, + 6,254, 91, 78,230,189,130, 54, 89,247, 0,216,214,174, 93,219,253,220,197,107,182,121,106,198, 42, 42, 89,207, 99, 24, 6, 18, +137,171,225,224,145,227,217,131, 7,244,161,146,146,146, 82, 0,220, 43, 48,183, 21,141,169, 40, 2,224, 51,112,224,192,185,159, +125,246, 25, 34, 34, 34, 48,110,220, 56,213,189,123,247,210, 91,181,106,101,255,227,143, 63,138,103,206,156,137,171, 87,175, 46, + 58,121,242,228,111, 0, 34, 1,148, 58, 86, 27, 33,132,207,231,243, 97, 40,176, 13, 58, 35, 83,232,239,115,114,114, 64, 84,153, +224,243,249, 28, 0,142, 48,179, 29, 29,195, 48,124, 30,143, 87,104,178, 98,146,115, 16,147,162, 68, 78,158, 22, 42,149, 1, 90, + 21, 1, 71, 98,207, 5,162,156, 1, 68,153, 27, 29, 17,137, 68, 48, 24, 12,200,205,205, 47,134, 41, 82,166,213,106,145,157,157, + 13, 14,135, 35, 3, 96, 5, 32,195, 28,193,130, 70,238,191, 23, 84, 3,226,254,175,125, 29, 94,158,154, 87,108,158,149,148,171, + 63, 50,211,143, 99,239,222,240, 70,163,193,187,125, 11,231,189,219,246, 89, 66, 71, 71,199,203,135, 15, 31,246,171, 83,167, 14, + 34, 35, 35,125, 7, 13, 26, 20,152,152,152,216, 8,150,143,201, 40,161,105,250,187, 81,163, 70,125, 54,116,232, 80,170,110,221, +186,224,114,185, 48, 24, 12,238, 17, 17, 17, 29, 15, 29, 58, 52,103,231,206,157, 63, 26,141,198, 47, 96,126,187, 63, 90, 32, 16, + 28,220,190,125,123,187,192,192, 64,236,217,179, 7,247,238,221, 99,154, 53,107, 70,143, 28, 57, 18,158,158,158,129, 35, 71,142, +252, 93,163,209,244,172,100,100,203,179,101,203,150,213, 57, 28, 14, 90,181,106,197,191,117,235, 86, 99, 0,183,170,120, 76,101, +238,238,238, 87, 59,116,232,208,232,226,197,139, 33, 73, 73, 73, 29, 44,216, 95, 0,232,231,230,230,182,202,218,218,218,214,130, +103,172, 50, 62, 62,126, 22,128, 35,102,110,210,162, 73,147, 38,136,142,142,134,143,143, 15,248,124,126, 75,157, 78, 55, 1, 64, + 15, 0, 95, 3, 8,179,160,188,117, 59,119,238, 92,189, 67,135, 14,212,145, 35, 71, 10,219,135,210, 52, 13,131,193, 0, 62,159, +143, 22, 45, 90,208,193,193,193,213,238,223,191, 95, 23,102, 84, 35,218,215,234,208,167, 85,155,246,109,218, 5, 54,160,215, 30, +121, 9, 35, 99, 4,135, 50,128, 75, 49, 96,244, 66, 8,249, 28,212, 13,104,202,121,246,228, 97,160, 86,163,235,147,254,226,226, + 9,115, 52,123,116,235,218,214,207,167, 46,253,253,239,175,144, 21, 31,102,140, 15,191,150, 70,115,104,248, 53,233,228, 80,215, +191, 17,167, 81, 96, 7, 94, 66,228,147,142,106,117,187, 46,153, 17,215, 46,190,139, 27,114, 9,192,113,175,230,240, 81,239,174, + 29,248,137, 9, 9,138, 67, 71, 78, 60, 86,234,113, 7, 0,174, 2, 84, 79,160, 65,253,230,205,219,255,184,114,165,189,171,171, + 43,111,196,208,161,134, 29, 33, 33, 33, 40,163,234,119, 9,192,113,112,113,233, 50,113,226, 68, 78, 98, 66, 2, 57,116,244,212, + 35,147, 30,242,223, 82,234, 55,112,247,237, 13,197, 51,139,170, 41,251, 0, 2,103, 23, 23,191, 9, 19, 38, 32, 41, 33, 1,123, +246,238,205, 83, 3,183, 77, 81,172,227, 28,108,246,175,229, 50,102,246,167,125,169,234,174, 14,152,184,104, 71,203,142,186,148, + 90, 72,252,243,252, 23,245, 34,239,177,201, 26, 95,170,209, 42,201,255,194,176, 80,206,135,215,161, 67,251,233,212, 92,157, 34, + 34, 34, 2, 14, 14, 14,112,117,117,133,181,181, 53,158, 62,125,138, 75,151, 46,225,249,243,231, 96, 24, 6, 13, 27, 54,180,168, + 52,105,105,105,120,248,240, 33,108,109,109,223,154,102,173,234,142,152, 82,221,145,159,156,158,195,191,120,239,121,224,142,121, + 3,252,105,223, 1, 59,139, 14, 18,171,213,106,241, 47,161,176,119, 97,245,234,213, 91,239,218,181,139,175, 49, 64, 94,119,194, +237,213, 10,181, 81, 10, 0, 82, 17, 71, 17,188,202,251,139,111,190,249, 70,241,201, 39,159,248,198,198,198,174, 48, 35,214,191, +188,115,231,206, 95, 18, 66,120,211,167, 79, 7, 0,140, 26, 53, 42,231,206,157, 59,117, 1,164, 92,186,116,201,109,236,216,177, + 47, 46, 95,190, 44,153, 49, 99, 6,199, 96, 48, 60,229,114,185,228,228,201,147, 75, 1, 44,126,227, 23,145,166,131, 66, 66, 66, +106,184,121,122,195,211,158, 70,219,249,207,243, 31,112, 18, 6,113, 81,175, 16,254,232, 30, 92, 92, 92,172, 93, 93, 93,195,226, +226,226,116,241,241,241,115, 20, 10,197,214, 10,202, 24, 26, 28, 28,236,234,233,233,137,188,188, 60,196,165, 42, 49,237,168, 4, + 57,170,252, 32, 6, 15, 42, 52,170,238, 45, 23,211,218,123, 41, 41, 41, 58,173, 86,187, 32, 59, 59,123, 87,121,154, 60, 30, 47, +253,209,163, 71, 50, 15, 15, 15,168,213,106,146,145,145, 65, 41, 20, 10,228,230,230, 82,167, 78,157,250, 48, 49, 49,177,153,151, +151, 23,229,238,238,190, 52, 49, 49, 81, 21, 31, 31, 63,206,156,170,201, 2,195,100,228,114,185,107,199,143, 31, 63,248,183,223, +126, 11, 58,178,216,175, 95,145,234, 18,235,128,128,128,115, 13, 26,248,187,237, 93, 83,127, 35,128,213,255,128,107,107,204, 87, + 95,125,229,103,103,103,135,137, 19, 39, 98,201,146, 37, 88,184,112, 97,157,137, 19, 39,142, 7,176,222, 2, 29,177,139,139,203, +253,239,191,255,222,183,117,235,214, 56,125,250, 52,246,239,223,143,215,175, 95, 27,188,188,188,184,129,129,129, 88,180,104, 17, +186,119,239, 62,110,234,212,169,237, 19, 18, 18, 26,155,105, 62, 62, 89,180,104, 81,191, 54,109,218, 96,244,232,209,154, 43, 87, +174, 12, 6,112,254,194,133, 11,157,174, 94,189,122,228,215, 95,127, 21,127,251,237,183, 93,102,206,156, 57, 17,192,166, 74,236, +255,135,237,218,229,143,161,220,166, 77, 27,172, 90,181,170,123, 21,141,150,192,222,222,254,212,158, 61,123, 26,121,123,123, 99, +196,136, 17,141, 7, 15, 30,124, 42, 51, 51,179, 43, 0,179, 30, 72,213,170, 85,251,238,216,177, 99,181,203,170, 89, 40, 13,141, + 70, 99,247,209, 71, 31,173,140,138,138,178,200,104,237,219,183, 15,179,102,205, 66,195,134, 13, 27,180,104,209, 98,219,132, 9, + 19, 48,112,224,192,206, 79,159, 62,117, 70,126,175,229, 10, 17,137, 68, 13, 62,254,248, 99,193,221,187,119, 1, 0, 1, 1, 1, +104,212,168, 17,162,163,163, 17, 20, 20, 4,141, 70, 3,103,103,103,244,239,223, 95, 20, 21, 21,213, 32, 45, 45,173, 66,163, 69, + 11, 37, 99,250,245,238, 41, 63,126, 39, 17, 70,198,128,166,181,173, 16,232,235,132,103,113, 57, 8, 14,139,131, 81,203,135,149, +157, 61, 90,182,239,102,151, 20,255,122, 76, 58, 80,113,123, 45,161,100, 76,255,126,189,100,199,111, 39, 32, 43, 33,156,188,188, +247,219, 37,189, 90, 49, 14, 0,130,254, 56,176,205,197, 94,220,181,110,147,166,156, 14, 93,251,218, 30,221,159, 52, 38,243,239, + 25,219,239, 13,174, 86,199,118, 79, 94,218,168,217,195,218, 18,158,173,251, 61,185, 94,191,217,180,172, 59,208,109,206, 87, 95, +181,248,116,252,120, 17,195, 48,248,245,151, 95,114, 30,134,132, 60, 27, 15, 48, 19,202,208,219, 12,120, 14,238,215, 79, 40,183, +178,194,231,211,166, 65,174,215, 95, 46, 60, 36, 64,231,207,191,252,178,245,228,201,147,197,219,150,126, 22,212,125,236,178, 38, + 12, 33,148,169,154,114, 95,249,161,184,102, 99,251,245,131,220,202, 10,211,167, 79, 7,165,211,157, 43, 52, 80, 92, 92,254,228, +195,182,129,195,250,180, 1, 5, 10,251, 79,222,192,203,232,212, 71,151, 19,241,234,125,117, 85, 37, 40,179,141, 86,185, 85,135, +185, 58, 36,119,238, 53, 32,177,110,221,186,185,117,234,212,201, 77, 79, 79,199,227,199,143,145,153,153,137, 77,155, 54, 33, 60, + 60, 28, 12,195, 84,218,192, 48, 12,131,183,173, 9, 0,206,246, 86, 24,209,179, 57, 87,163, 86,136, 82, 83, 83,139, 85, 31,253, +139,140, 86, 33, 6,131, 65,228,229,229, 5, 26,160,178,149,122, 89,210,190,118, 84,210,190,118, 84,182, 82, 47,211,106,181,180, + 76, 38,131, 70,163, 17,153, 33,197,251,224,131, 15,190,252,237,183,223,120,203,151, 47, 71,189,122,245,160,211,233,112,231,206, +157, 56, 0, 41, 5,235, 36, 92,187,118, 45,193,100,132, 87,172, 88,129,163, 71,143, 82, 93,186,116,153, 83,218,245,148,152,152, +248,221,132, 9, 19, 50,148,185, 25,216, 62, 68,133, 35, 35, 82,241,115,191,215, 24,106,127, 24, 25,201, 49,216,177, 99, 7, 46, + 92,184, 72,157, 63,127,129,127,229,202, 21,105,175, 94,189, 54, 86,171, 86,237,100,121,133, 76, 72, 72, 88, 62,121,242,228,172, +220,220, 92,228,230,230, 66,165, 82, 35, 67, 1, 60, 90,231,135, 71,235,252,160,102,196,216,178,121, 43,253,232,209, 35,135,215, +175, 95,187,245,233,211,103,157,171,171,235,206,242, 52,227,227,227,239, 78,153, 50, 69,157,147,147, 3,173, 86,171, 51, 26,141, + 90,149, 74,165, 63,112,224,192, 12,123,123,251,150,167, 79,159,230, 93,184,112,145,123,229,202, 85,254,165, 75,151,172, 59,118, +236,120,208,217,217,121,183, 57,145, 50, 14,135,179, 97,239,222,189, 99,182,108,217,226, 28, 24, 24,232, 95,162, 42,202,181,107, +215,174, 53,126,249,229,151,106,171, 86,173,154,131,252, 14, 40,239, 20, 7, 7,135,169,253,250,245,195,150, 45, 91,112,226,196, +137,153, 27, 55,110,196, 7, 31,124, 0, 55, 55,183, 41, 48,191,218, 11, 0, 86,175, 95,191,222,215,215,215, 23,163, 70,141,210, +142, 27, 55,238,139, 93,187,118,121, 93,191,126,157,191,123,247,238, 26, 19, 39, 78,156, 62,108,216, 48,117,205,154, 53,177,105, +211,166,218, 52, 77,111, 48,235,254,118,118,158, 49,116,232, 80,172, 89,179, 6, 87,174, 92, 25,128,252, 31, 84, 45,128, 51, 55, +111,222,236,243,237,183,223, 98,192,128, 1,112,119,119,159, 94,153,200,147,159,159,223,130, 30, 61,122,224,250,245,235,104,220, +184, 49, 90,182,108, 57, 19,128, 67, 37, 15, 39, 45,147,201, 14,238,218,181,171,109,141, 26, 53,176,108,217, 50,212,170, 85, 11, + 59,119,238,108, 43,149, 74, 15,194,204,230, 27,214,214,214, 50,137, 68,130, 57,115,230,144, 1, 3, 6,100, 84, 52,205,156, 57, +147, 8,133, 66,216,218,218, 90,155,107,138, 69, 34, 81,171,122,245,234,225,206,157, 59,184,112,225, 2,230,207,159,143, 25, 51, +102, 32, 53, 53, 21, 31,127,252,177, 4,192, 64, 11,246,219,201,209,209, 17, 57, 57,249,227,194,215,171, 87, 15, 15, 30, 60, 64, +106,106, 42,220,221,221,145,148,148, 4,123,123,123,120,123,123,131, 97, 24, 39,243, 36, 73, 61, 7, 59,107,164,100,106,192,133, + 1, 77,234, 58,224,242,227,116,196,164,106,225,100,111,131,164,148, 84, 84,179, 23,161,122,117, 15, 16,194,212, 51,203, 1,115, +232, 38, 66,145, 24, 25,185, 58,196,135, 93, 73,215, 25, 53, 19,178, 34,111,198,102, 69,222,140,213,105,212, 19,130,110, 92, 72, +175,225, 44, 70,245,234,213, 65, 17,166,249,187,184, 31, 7,121,160,186, 84,204, 29,117,225,231, 5,212,201, 31,231, 81,154,244, +152,102, 61,156,243, 35,203,142,128,215,160,143, 63,110,245,197, 23, 95,136,146,147,147,153, 97, 67,134,100, 44, 95,188,248,226, +217, 10, 94, 12,242,128, 58, 93,187,118, 5, 13,224,236,249,243,138, 36, 32, 14, 0,156,129,234,125, 63,250,168,221, 87,115,231, +138,211,210,211,153, 59, 17,121,199,195, 83, 72,127, 59, 35,188,204,105,159,101, 4,234,155,116,207,157, 59, 71, 84, 64, 16, 0, +116,168,142, 41,221, 90, 7, 4,142,236,215, 14,137, 41,153,152,190,252,103,108, 59,116,245,156,181,158,116,250, 23,253, 20,143, +175,148,209, 42,168,250,121, 99,158, 82,249,102,237, 65, 85, 13,204, 95,161, 89, 26,255, 70,163,101, 66,175,207,175, 37,209,234, + 25,104,245,140,233,173, 22, 42,149,202,108,137,115,231,206,237,153, 54,109, 26,214,173, 91,135, 23, 47, 94,128,207,231,163, 94, +189,122,174, 0,100,166,103,126,147, 38, 77,156,104,154,198,179,103,207,176,118,237, 90,124,242,201, 39,228,214,173, 91, 59, 81, +122,190,148, 7, 25, 25, 25,155, 39,140,251, 36, 43, 51, 57, 6,122, 85, 38, 82,226, 95, 65,163,200,194,178, 21,223, 65,169,231, + 34, 41, 91,135,164,108, 29,104,161, 29,182,253,184,139,227,231,231,215,131,195,225,244, 46,167,156,119,146,147,147,127,156, 52, +105, 82, 86, 82, 82, 82,225,254,105,245, 4, 90,125,241,235, 85, 34,145, 96,195,134, 13,214,117,235,214,237,199,229,114, 59,150, +163,153, 24, 27, 27, 27, 62,105,210, 36,109,114,114, 50,178,179,179,113,252,248,241, 62, 53,106,212,176, 93,185,122, 29,165,208, +113,145,148,165, 67, 82,150, 14, 2,153, 19, 14, 30,249,141,227,237,237, 61,140,203,229,182,172,200,100,253,250,235,175, 35,135, + 12, 25, 34, 95,189,122,117,198,177, 99,199,182, 0, 40,122, 66,158,109,216,176,225,208,193,131, 7,115,191,252,242, 75,187, 85, +171, 86,205,124,199,102,171,227,144, 33, 67,124, 24,134,193,225,195,135, 31, 1, 88,255,219,111,191,221,215,104, 52,248,248,227, +143,189, 10,170,145,204,161,217,176, 97,195, 62,107,219,182, 45, 62,255,252,115,221,197,139, 23,155, 0, 88,135,252,170, 92, 2, + 32, 26,192,198,171, 87,175, 54,156, 58,117,170,166,121,243,230, 24, 61,122,244, 39, 0,218, 86,160,219,106,232,208,161,190, 12, +195,224,192,129, 3, 15, 1,156, 46,177,252,210,145, 35, 71,238,104,181, 90, 12, 31, 62,188, 38, 0, 75, 30,228,124,161, 80,120, +248,155,111,190,177,137,143,143,199,200,145, 35, 53,207,158, 61,195,226,197,139,197,214,214,214,167,139,220, 3,102, 35, 20, 10, +119,252,240,195, 15,253,234,215,175,143, 73,147, 38,105,183,110,221, 58,237,179,207, 62,211, 54,105,210, 4, 91,182,108,233, 39, + 16, 8, 44, 26, 90, 36, 33, 33, 33, 43, 44, 44,204,190,162, 41, 46, 46,206,220,238,249, 18,153, 76,118, 59, 32, 32, 32,167, 94, +189,122, 77, 13, 6, 3,158, 62,125,250,106,207,158, 61, 76,189,122,245,176,121,243,102,172, 90,181, 10,189,123,247, 6,135,195, + 49,219,104,113, 56, 28,232,116, 58, 72, 36, 18,112,185, 92,188,122,245,202,148, 90, 6,124, 62, 31, 0, 32,149, 74, 33, 22,139, + 65,211,180, 89,189,209, 40, 10, 36, 71,169, 7,143, 71,131, 75, 51, 8,143,206,134, 78,207, 64,196,231,128,199,165, 0,194,192, + 70,202,131, 72,192, 1, 77, 81,140,153,154,200, 86,232, 32,224,211,224,241, 5, 20,109, 48,138, 11,127, 28,185, 70,177, 88, 44, +160, 28,172,132, 16,241,255, 65,195, 2, 83,249, 13,203,199, 0, 60,169,135,199,224, 53,107,215, 10,114,242,242, 48, 96,192,128, +140,168,251,247,247,170,128,251,237, 43,232,164, 68,115,185,117, 59,180,111,143,224,144, 16,228,102,102,190, 4,242, 27,199, 11, +220,220,134,108,216,176, 65,160, 82,171, 49,160,127,255,172, 23, 55,110,252, 26,155,135,147, 7,162,243,141, 88,133,231,157,207, +119, 49,233,102,103,102,102, 2,249, 41, 36,156, 29,101, 43, 39, 15,235,142, 92,165, 26,179,191,219,203,132,132, 39, 78,185, 30, +135, 94,191, 37, 32,251, 95,246, 51, 60,190,196, 4,192,140,132,165,166,232, 82, 69,102, 69,163,209,188,117, 3, 84, 85,205,210, + 76, 98, 85, 53,255,137,112,185, 92,245,243,231,207, 5, 86,246,110,140,189,156,151, 89,227,147, 27,214, 0, 96, 39,227,102,235, +140,122, 38, 33, 33, 1, 66,161, 80,109,102,117,195,184, 29, 59,118, 44, 3,224,207,229,114, 79,238,218,181,139,218,187,119,175, +237,208,161, 67, 35,194,194,194,226, 3, 2, 2, 60,119,237,218,101, 5, 0, 27, 55,110, 36, 7, 15, 30,236,142,252,148, 25,101, +230,113, 73, 78, 78, 94,156,158,158,126,107,242,228,201,155, 4, 2,129,173, 84, 42,181,191,126,253, 58,165,214, 17, 52,251, 42, +186,176, 39,162,149,152,198,181,121, 86, 24, 63,126, 60, 39, 44, 44,108, 69,124,124,252,201,114, 52,231,100,101,101, 93,127,241, +226,197, 58,107,247, 70,142, 82,207,175,172, 3,231, 61, 3, 0,120, 58,240, 64, 23, 60, 23,179,178,178,144,154,154,138,207, 62, +251,204, 54, 34, 34, 98, 78,124,124,252,229,114,162, 90, 87,211,210,210,226,158, 60,121,210,129,199,227, 9,164, 82,105,179,219, +183,111, 83,106, 45,131, 6,115,162,145,145,151, 95, 78, 59, 25, 23, 65,223, 56, 99,202,148, 41,220,151, 47, 95,126,151,152,152, +216,166,212,135, 25, 77,175, 42,106,178,102,207,158, 29, 10,160, 38,128, 98, 85,163, 70,163,145, 26, 62,124,248, 99, 0,245,190, +252,242, 75, 59, 66,200,204, 57,115,230,100, 0,216,254,119, 95, 75, 86, 86, 86, 43, 39, 76,152,128,131, 7, 15, 34, 51, 51,115, + 3, 0,228,228,228,172,223,183,111,223,129,113,227,198,225,151, 95,126, 89,153,154,154,122, 22, 21,119,213,254,224,227,143, 63, +198,153, 51,103,240,199, 31,127, 44, 0,240,180,140,245, 94, 92,191,126,125,206,177, 99,199,190, 31, 58,116, 40,126,254,249,231, + 30, 0,202,107, 32,219,181,123,247,238, 56,125,250, 52,210,211,211,183,148,182, 66, 86, 86,214,214,227,199,143,183,232,222,189, + 59, 86,172, 88,209, 21,192, 37, 51,118,221,215,218,218,122,215,247,223,127,223,172,126,253,250, 24, 54,108,152, 90,167,211,245, +248,242,203, 47, 79,236,223,191, 95,190,103,207,158,166,227,199,143,191, 91,144,243,237,142, 89,161, 44,154,254,118,237,218,181, + 99, 59,116,232,128,153, 51,103, 26,206,157, 59,215, 23,192,249,179,103,207, 70,204,158, 61,251,212,218,181,107, 57,107,214,172, + 25, 59,125,250,244, 84,134, 97,222,149,185,254,102,227,198,141, 45,186,117,235,134, 87,175, 94,225,206,157, 59,208,233,116,191, +220,190,125,251, 90,157, 58,117,190,209,106,181, 39,164, 82,233, 40,185, 92, 30,208,168, 81,163, 78, 65, 65, 65, 18,152,215, 78, + 47, 57, 50, 50,210,198,218,218, 26, 6,131, 1,143, 30, 61,130,135,135, 7,116, 58, 29, 94,191,126,141,250,245,235,131,207,231, + 35, 57, 57, 25, 69,162,229, 21,152, 34,250, 81, 68, 84, 66, 77, 59,185, 20, 48,138,240,224, 89, 28, 28, 29,108, 97,164,104, 36, + 37, 37,162,145,143, 59, 40,138, 66, 86,122, 18, 40,138,122,108,142,166,145, 48,193, 49, 9, 41,213,236,229, 66,212,111,209,205, +254,246,217,212,189, 86, 53, 91,143,231,114, 40,142, 64, 40,219, 62,118,244,104, 7,134, 33,200, 74, 79, 6,151,166,239,189,139, + 19,116, 56, 6,177,237,107,137, 30,116, 27,187,172, 17, 69, 64, 84, 58,236,249, 57, 25,153, 18,160,209,198,175,191,182,177,119, +112,192,176, 97,195,152,244,248,248,139, 74, 51, 19, 43,215,172, 83,199, 89, 38,151,227,230,205,155,224,228,183,177,197, 78,192, +119,213,236,217,246, 78, 46, 46,248,100,236, 88, 38, 57, 38,230,146, 10, 72,176,164,172, 53,107,213,226,153,116,233, 2,221, 68, + 14,166,125,217,183,173, 80, 42, 22,226,219,109,191, 33, 54, 77,113,224,118, 34,182,253, 75,227, 29, 59,202,141,104,149,213,248, + 44,191, 81,181,164, 92,179, 34, 18,137, 10,163, 41, 22,188,233,189,117,205,138,248, 43, 52,223, 33,243, 0, 28, 3, 48, 47, 54, + 54, 54,124,236,216,177, 58,131, 78,147,123,107, 89,205,185, 33, 43,106, 76,186,189,216,117,210,239,211,172,231, 42,179, 51,114, + 55,110,220,168,143,141,141, 13, 47,186, 77, 5,218, 49, 0, 78,239,222,189,123,235,225,195,135, 81,175, 94, 61, 60,125,250,212, + 73,161, 80, 52,126,252,248,177,157,175,175, 47,246,238,221,139,131, 7, 15,174, 3,112,161, 60,147,101,194, 96, 48, 92, 76, 74, + 74,242,142,142,142,174,109, 99, 99,163,183,177,177, 65,201,158,136, 57, 42, 6,233, 89,217,176,179,179,135,149,149,149,151, 25, +230,252,116, 82, 82, 82, 93,198,214,167, 93,221,180, 13,217,193,223, 86, 71,240,183,213,113,122,142, 27, 92,109, 4,200,204,204, + 68,106,106, 42, 82, 83, 83, 65, 81, 20,244,122,189,159, 25,154,175, 19, 19, 19,127,138,137,137, 57,230,236,236, 12,185, 92, 14, + 2, 32, 41, 75,143,208, 53,190, 8, 93,227,139,164, 44, 61,114,114,115, 81,163, 70, 13,200,229,242,178,170, 40,232,106,213,170, +245, 28, 50,100,136, 28, 0, 10, 12, 84,103, 66,200,164, 82,166,137, 6,131,161,181,105,221, 89,179,102,217, 1,232,254, 55, 95, + 79, 28, 0,147,199,141, 27,215, 84, 36, 18, 97,243,230,205,175, 1,252,106,122,214,111,221,186,245, 25, 0, 76,155, 54, 45, 0, +192, 76,148,145, 9,186, 48, 52,196,231, 55,241,243,243,195,237,219,183, 1,224,183, 10,190,251,200,173, 91,183, 80,167, 78, 29, +136, 68,162,102, 21,172,235, 85,189,122,117, 60,123,246, 12, 0, 30,148,177,206,131,103,207,158,229, 87,247, 80,148,151, 25,251, +222,175, 91,183,110,143, 46, 95,190,220,172, 85,171, 86, 24, 59,118,172,246,238,221,187, 61, 1, 92,123,240,224, 65,199,225,195, +135, 43,234,214,173,139,171, 87,175,250, 14, 31, 62,252, 22, 77,211,203,204,208,252,100,233,210,165,243, 62,252,240, 67, 44, 93, +186,148, 28, 58,116,104, 24,128,243, 5,203,206, 29, 56,112, 96,228,242,229,203, 73,255,254,253,177,100,201,146,121, 0, 38,149, + 39,166, 80, 40,178,141, 70, 35, 20, 10,133, 89, 33,121,115,215,119,112,112,248,160, 91,183,110,152, 63,127, 62,170, 85,171,134, + 19, 39, 78, 16, 0, 39, 1, 92,215,106,181,237, 0,172, 85, 40, 20,191,223,190,125, 27, 93,187,118,229,163,248, 16, 35,229,125, +255,163,125,251,246,105,172,173,173,225,233,233,137,154, 53,107, 34, 41, 41, 9, 81, 81, 81,168, 95,191, 62,154, 52,105, 2,131, +193,128,159,126,250, 73,157,155,155,107, 86, 78, 62,131, 86,177,231,194,169,163,217,246,114, 33,220,157,172, 81,163,154, 29,242, +178,210,144,154,148,128, 38,126, 30,104,223,164, 6,210,178,181, 56,119,242,104,102,110,174,114,143, 89, 33,124,141,114,215,197, +179, 39,178,109,229,124,120,251, 4, 96,248,216,105,141, 26, 53, 14,188,208,188,121,235,115,171, 87,126,219,160,115, 75, 63, 42, + 46, 77,141, 51, 39,127,203,204,206,201,217,245, 46, 30,244, 75, 0,142,218,186,238,181, 45,199,130,127,242,239, 49,238,167,240, + 56,108, 0, 0, 61,135,227,219,243,131, 15, 16, 23, 23,135,163,135, 15, 39, 42,129,135,230,234,137,197, 98, 26, 0,178,179,179, + 33, 44,104,119,103, 0,124,122,245,234,133,212,180, 52,236,251,245,215,212, 51, 64,136, 37,229,236, 3, 8, 36,226,252,128, 96, +118,118, 54, 40, 32, 7, 0, 40, 46,122, 54,175, 87, 7,169, 25, 57,184,124, 47, 60,175,134, 10,159,149,167,243, 30, 55,132,175, + 92, 27, 45, 0,105, 51,103,206,132, 80, 40,132,171,171,107,161, 57, 50,153, 21,129, 64, 0, 87, 87, 87, 24, 12, 6, 28, 56,112, + 0, 0,210,202,125,195, 3, 52,125, 39,173, 96, 52,122,162,228,241,120,111, 69,179,224,205, 81, 51, 96,246,207,204,217, 91,165, +119,138,169,140,230,123, 64,243,130,156, 88,205, 1,100, 70, 69, 69,197, 13, 30,208, 55, 59, 58,226, 73,146, 34, 43, 33, 49, 39, + 61, 54, 49,246,245,227,164,175,230,204,204,142,139,139,139, 69,126, 46,173,230, 9, 9, 9,166,109,204, 97,230,224,193,131,127, + 24, 55,110, 28, 9, 13, 13, 5, 0, 4, 7, 7, 99,244,232,209,100,228,200,145, 27, 0,204,173, 68,185, 21, 42,149,170, 88, 52, + 68,103,100, 10,171,252,114,114,114,144,144,144, 0,173, 86,107,182, 35,126,113,110,205,243,140,168, 32,125,128,167, 20, 1,158, + 82,248, 86,151,128, 50,228, 21,154,172,212,212, 84,211,155,179,218,130,114,230,104, 52,154, 98,229, 44, 90, 53,153,147,147,131, +164,164, 36, 24,141,198,178,126,200,152,248,248,248,115, 7, 15, 30,204, 5,128,213,171, 87,103, 80, 20,245, 7, 69, 81, 63,148, + 50,109,227,114,185, 55, 77,235,174, 89,179, 38, 3,111, 86,137,253,149,124, 88,191,126,253,204,121,243,230,109,158, 62,125, 58, +182,109,219,134,196,196,196,185,248, 51, 23, 15,147,150,150, 54,123,203,150, 45, 24, 51,102, 12, 22, 46, 92,184,166,113,227,198, + 57, 0,134,151, 37,232,232,232,232,206,229,114, 17, 18, 18,146, 3,224, 85, 5,223,159, 20, 18, 18,146, 76, 81, 20, 92, 93, 93, +107,149,183,162,157,157, 93,109,185, 92,142,248,248,120,160,224,141,185, 20,162, 18, 18, 18,136, 64, 32,128,155,155, 91,157,138, +118,222,214,214,118,246, 79, 63,253,196,125,242,228, 9, 58,119,238, 28,119,245,234,213,174, 0, 76, 93,210, 67,130,131,131,219, +118,236,216,241,249,133, 11, 23,240,221,119,223, 81, 13, 27, 54,156, 84,145,166,167,167,231,196, 79, 62,249, 4,155, 54,109,194, +246,237,219, 39, 1, 56, 92, 98,149,253, 91,182,108,153,182,125,251,118,140, 29, 59, 22, 94, 94, 94,195,203,211,139,142,142,158, +211,161, 67,135,224, 23, 47, 94,152, 53,226,129,153,235,119, 12, 12, 12,172,173, 82,169,176,107,215,174, 87,181,107,215,190,127, +248,240,225,153,120,243, 7,251,247,163, 71,143, 98,196,136, 17,104,216,176,225, 46, 0, 67,205,185, 45,195,194,194, 98, 47, 93, +186,196,240,249,124,120,122,122,162,119,239,222, 24, 54,108, 24, 26, 52,104, 0,157, 78,135,163, 71,143, 50,143, 31, 63,142,211, +106,181,102,229, 82, 74,127,113,229, 68,100,228,243,155, 33,119,175,233,185, 28, 26, 30,174,118,248,168, 75, 35,124, 58,176, 53, +154,248, 86, 67,116,138, 10,151, 46, 93,208, 71, 70,190,186,109, 78,143, 67,147,102,248,211,135,183,158,132,220, 48,240,184, 20, +124,125,234, 98,254, 87,179,109,151, 47,154, 99, 83,183,150, 7, 30,190,206,198,133,243,103,244, 9,113,177,151,223, 85,143,195, +171, 0, 95, 38,164,164, 28,154,134,145, 22, 42, 56, 5, 29,105,234,249,251,123, 59,187,184,224,212,169, 83,160, 45,232, 17,122, + 21,224,203,100,249,181,224,121,121,121, 48,233,213,246,241,241,241,240,244,196,233, 83,167,192, 97,152,176,246, 22, 38, 24,125, +150, 95, 13, 93,168, 75, 1,234,207,170, 67, 94,187,186,147,143,173,181, 20,119, 31,190,132, 70, 79,238,253,154,137,119,154,143, +236, 47,100, 60, 42, 89,117,184,122,219,182,109,205,127,250,233,167,174, 51,103,206,148,141, 26, 53, 10, 34,145, 8, 74,165, 18, +238,238,238, 48, 26,141, 56,123,246, 44,130,130,130,242, 24,134,185,128, 55,211, 6,116, 65,145, 94, 26,231, 94, 65,156,239,183, +148,205,143, 13, 26,244, 86, 52, 1, 64,246,146,177, 74,175,161,221,187,241,240,141,254,251,206,133, 80,159, 15,109, 79, 55,241, +169, 14, 0,112,118,118,134,149,149,149,197,154,111,129,191, 92,179,104,181,110, 82, 82,210,179,164,164,164,148,113,227,198,249, +154, 26,190, 11,133, 66,117, 65, 36, 43,179,180,109,204, 40,167, 14,192,103, 63,253,244,211,241,236,236,236,115, 95,126,249, 37, +150, 47, 95,142, 19, 39, 78,180, 5,112,179,146,251,110,204,204,204,204,186,119,239,158,115, 29,191,198,168,233,196, 67,187, 5, + 47, 64, 8,129,189,132, 32, 55, 43, 3, 15, 30,132, 32, 55, 55,247,174, 37,229,212,233,116, 89, 41, 41, 41, 14, 78, 78, 78,200, +200,200, 64, 90, 90, 90,161,201,202,204,204, 68, 70, 70, 6,161,168, 55,114,182,148,167,169, 72, 73, 73, 81,134,135,135, 11,156, +171,215, 65, 45, 39, 62, 2,191,122, 6, 16, 2, 15, 59, 26,185, 57, 89,184,125,251, 54,178,179,179,175,148,165,201, 48,204, 23, +195,135, 15,231, 0, 24,249,229,151, 95,218, 1,104, 56,123,246,236, 11, 40,209,179,144,203,229,174,223,187,119,111, 61, 83, 21, +227,156, 57,115,214, 1,248,233,239,186,150,236,237,237,191, 56,117,234,148, 92,167,211, 97,227,198,141, 88,183,110,221, 78,188, +153,168,242,212,230,205,155,183,208, 52, 61,121,202,148, 41,152, 48, 97,130,164,105,211,166, 51, 19, 19, 19,127, 45, 77, 51, 62, + 62,126,126,147, 38, 77, 22,166,164,164,124,107,150, 89,126,241, 98,124,147, 38, 77,230,167,164,164,172, 42,239, 28, 73,165, 82, +169,209,104, 68,100,100,100, 38, 80,102,251, 14,117,100,100,100,188,209,104,116,151, 72, 36,118, 21, 93,159,153,153,153,223, 54, +109,218,116,113,114,114,242,121, 0,203, 74, 49,228,161,137,137,137, 1,211,167, 79,159,186,114,229,202,254, 73, 73, 73, 7, 42, +210,140,142,142,254,182, 99,199,142, 11,158, 63,127,190, 27,101, 87, 1,111, 94,178,100,137,110,239,222,189,147, 34, 35, 35, 87, + 84,160,121, 50, 45, 45,237,164, 5,231,183,172,245, 11, 53, 57, 28,206,236,149, 43, 87,210,219,182,109, 3, 33,100,141,209,104, + 44,171,156, 15,127,255,253,247, 61,173, 91,183, 30,117,248,240, 97, 81, 64, 64,192, 4,141, 70,179,191,162,235, 83,169, 84, 30, + 61,124,248,112,255,135, 15, 31,186,143, 26, 53, 74,228,237,237, 13,157, 78,135,196,196, 68,108,219,182, 77,253,248,241,227,184, +172,172,172,163,150, 60, 67, 12,218,156,161,183, 46, 29,219, 31,245,226,113,203, 14, 61,250,217,106,117,238, 16,166,115,144,149, +158,132,179, 39,143,102, 70, 70,190,186,173, 84,102, 13,181, 68, 83,167,201,254,248,246,229,227, 7,226, 34,195, 91,180,235,216, +211, 86,173,245,132,144, 79, 35, 61, 57, 30,103, 79, 29,203,136,140,124,125, 93,173,215,140,126, 87,207,121,142, 23,150,113,146, +130,198, 77,236,211, 8, 98, 91,247, 7, 60, 96, 99,107, 64,236,224,236,204, 47,184,119, 32,203,111,243,104,150,102, 50, 32,168, + 83, 80, 75,165, 84, 42,193, 3,180, 99, 0,158,163,163,163, 24, 0,158, 63,127, 14, 73,126,173,134, 69,229,204, 3,164,146, 34, +186, 52,160, 76,231,162, 90,109, 43, 41, 5, 0,113, 73,233,208,234,203,253,221,120,223,217, 81,196,112,237,168,140, 0, 31, 64, + 23,153, 76,182,124,225,194,133,107,238,222,189,187,166,119,239,222,107,132, 66,225,242,130,131,205, 47,231, 68,252,109,154,205, +220, 96,215,177, 22,117,173, 91,109,138,153,216,214,214, 56, 58, 80,170,237,212,169,211,150, 42,150,179, 42, 55,203, 95,169,121, + 76,175,215, 19,228, 87,219, 29, 67,217, 85,130,243,138, 44, 79,138,137,137, 33, 5,127, 91, 82, 78,135, 33, 67,134, 48,185,185, +185,100,240,224,193, 4, 21, 15,225, 83,174,166, 80, 40,236,216,174, 93, 59,125,114,106, 6,121,246, 58,158,220, 9,126, 74,206, + 93,186, 69, 14, 28, 61, 69, 54,109,217, 78, 26, 52,104,160, 5,224,105,137, 38,151,203,237,212,177, 99,199,244,228,228,100, 18, + 30, 30, 78,174, 93,187, 70,142, 28, 57, 66,182,111,223, 78,126,248,225, 7, 82,189,122,245,100, 0,206,150,104,138,197,226,126, + 31,124,240,129, 62, 43, 71, 73, 34,227,211,201,163,240, 72,114,243,222, 35,114,246,210, 77,242,235,254,195,196,223,223, 95,109, +134, 38,135,195,225,108, 58,112,224, 64, 14, 33,132,244,235,215, 47, 14,197, 19,169,214,252,226,139, 47, 82, 8, 33,100,213,170, + 85,233, 40,189, 33,252, 95,125, 45,245,168, 86,173,218, 51, 62,159,127, 10,192,200, 10,182,251,152,203,229,158,112,113,113,185, + 15,224,163,119,112, 31,245,118,114,114,186, 3,160,162, 17, 14, 76,235,125,248, 47,185,223,255, 10,205, 78, 92, 46,247, 26, 80, +254, 32,194, 69,158,215,223,112, 56,156,211, 0, 58, 91, 88,206,186, 14, 14, 14,131,109,109,109, 63,183,181,181,253,220,201,201, +105,176, 64, 32,168, 91,149,125,183,175,219,165,143, 71,227,190,191, 87,111,216, 43,218,163, 81,239,104,175, 38,253,126,183,175, +219,165, 79, 85, 53, 61,155,244, 59,230,209,168,119,140, 71,163, 62, 81, 53,155,245,251,221,193,167,203, 7,239,242, 28,141,172, + 6,183,174, 53, 97, 32,215, 22, 16,114,109, 1,233, 82, 19, 76, 75, 27,248, 55, 7,228,221,187,116, 89, 75,140,198,181,253, 63, +252,112,109, 29,192,158, 0,156,146, 83,105,154,141, 1,171,194,109,251,245, 91, 91, 11,112,232, 10, 72,218,183,109,187,134, 24, +141,107,135,127,252,241, 90, 15,192,165, 52,189,178, 52, 9,192,169, 6,184, 21,213,117, 0,106, 15,244, 66,192,188, 62, 94,132, + 92, 91, 64,150, 12,242, 38, 77,156, 49,178, 2,205,178, 34, 69,239,109, 68,171,180,182,226, 21, 33, 45,120,184,174, 40,248,148, +190,133,139,240,173,107,182,112,133,119,151,218, 84,120, 79, 31,110, 6,242,187, 36, 75,255,133, 15,201,221, 90,173,150,168,213, +106,162, 84, 42, 73, 94, 94, 94, 73, 3, 85,104,200, 18, 18, 18, 72, 92, 92, 28,137,137,137, 33, 81, 81, 81, 4,127,182,189, 49, +187,156, 86, 86, 86, 63, 13, 26, 52,200,200,227,241, 54,189,141,125,183,179,179, 91, 17, 24, 24,168,251,254,251,239,201,239,191, +255, 78,126,252,241, 71, 50,101,202, 20, 82,175, 94, 61,141,141,141,205,208,202,104,186,184,184,204,247,241,241, 73,223,185,115, + 39,249,245,215, 95,201,134, 13, 27,200,215, 95,127,109,116,119,119, 79,146,203,229,221, 43,163,233,228,228,180,163, 77,155, 54, +186, 29, 59,118,144, 11, 23, 46,144,125,251,246,145, 47,190,248,130,248,250,250,106,164, 82,233, 0, 51, 53, 57, 92, 46,119,237, +196,137, 19,147,220,220,220, 78,149, 88, 38,241,247,247,191, 63,124,248,240, 4, 0,115,254, 69,215, 39,171,201,106,178,154,127, +129,209, 26,230,134,106, 4,224, 72,248,252,143,219,183,109,187,134, 15,124,108,169, 41, 18,113, 56, 3, 91, 7, 6,174,225, 3, + 67, 77,235,138, 56,156,129,237,219,182, 93,195,227,112, 70,148,165, 87,158, 38, 1, 56,124, 46,119, 78,235,150, 45,215,114,129, +175, 76,243, 58,213,164,194,190,232, 81,157,180,245,164, 94,142,112,130,228, 95,108,180, 74,165, 50, 70,171, 48,128,240, 23, 92, +132,239,139,230, 63,229,166,174, 83, 96,152,142, 89, 16,209, 58,134,252, 81,212,235, 84,178,156,226,183,188,239,245, 29, 28, 28, +206,212,169, 83, 39,181, 70,141, 26, 9,182,182,182,251, 1,184, 87, 81, 51,192,197,197,229, 23,103,103,231, 23,174,174,174, 15, + 29, 28, 28,214, 35, 63,235,124,165, 53,121, 60, 94,160,179,179,243, 21, 47, 47,175, 44, 79, 79,207,100, 7, 7,135, 3,165, 68, +178,204,209,116, 69,233, 15, 21,126,193, 50,246, 71,135,213,100, 53, 89,205, 98, 6,166, 91, 45,172,236, 90, 19,134,174, 53, 97, +236,230,133,245, 69, 13, 74,111, 64, 92, 89, 83, 52, 26, 16,150, 92,191, 34,189,138, 52, 9,192,105, 5,200, 74,110,211,211, 29, +254,102,106,190,239, 17, 45,211,115,190, 88, 68,139, 91, 73, 65,195, 95, 80,200,247, 69,243,159,194, 75,148,211, 24,185, 8, 43, +222,226,119,170,222,242, 62, 60, 74, 75, 75,251, 32, 45,237,173,246, 77,120,146,148,148, 52,242,109, 10,234,245,250,187,201,201, +201, 29,222,130, 84, 89, 93,175,117, 48,179, 91, 54, 11, 11,203,127, 7, 10, 48,226, 21,230,118,169,139,141, 92, 35,232,179,175, + 17, 95,162, 75,158,138,170,140,102, 62,198,221,165, 60,227,169,202,150,243, 79,242,222,208,136,195, 83,234,191,115,218, 18,145, +223, 70,203,252, 60, 90, 44, 44, 44, 44, 44, 44, 44,239,142,139, 47,216, 23,177,247,128, 83, 40, 30,125, 59, 85,196,136,150, 25, +250,180,164, 39, 69,101,194,167, 23, 89, 77, 86,147,213,100, 53, 89, 77, 86,147,213,252,207,105,154, 40,107,236,212,103, 37,254, +175, 84, 47,190,127, 2, 85,105,163,245, 87, 26, 48, 86,147,213,100, 53, 89, 77, 86,147,213,100, 53,255,123,154,239, 51,101,246, + 58,100,171, 14, 89, 88, 88, 88, 88, 88, 88, 88,170, 70,153, 81, 55,214,104,177,176,176,176,176,176,176,176, 84, 13, 87,228, 15, + 81,117, 10,127, 14, 85,181,131, 53, 90, 44, 44, 44, 44, 44, 44, 44, 44, 85,167, 23,254,236,109, 88, 44,186, 69,179,199,134,133, +133,133,133,133,133,133,165,202,140, 47,242,201,166,119, 96, 97, 97, 97, 97, 97, 97, 97,121, 75,152,215, 51,242,228,201,147,132, + 61, 86, 44, 44, 44, 44, 44, 44, 44,239,138,247,212,139,152,162, 88,197, 70,249, 96,123, 29,178,176,176,176,176,176,176,176, 84, +157, 29, 69, 12, 87,177,121,172,209, 98, 97, 97, 97, 97, 97, 97, 97,169, 26, 38,131,117, 10, 37,134, 84,163, 1,182,202,144,133, +133,133,133,133,133,229,221,242,158,123,145, 29, 5,211, 27,195, 37,153,122, 29,118, 40,216,193, 14,236,169,102, 97, 97, 97, 97, + 97, 97,121, 7,188,207, 94,196, 21,165,180,209, 98, 97, 97, 97, 97, 97, 97, 97, 97,169, 58,227, 75,124, 2,200,111, 12, 79,177, +199,134,133,133,133,133,133,133,133,229,173, 24,173,162,236,248, 59, 6,149,102, 97, 97, 97, 97, 97, 97, 97,249, 79, 66, 8,249, +203, 51,195,179, 35,155,179,154,172, 38,171,201,106,178,154,172, 38,171,249, 95, 96, 60, 74,100,133, 7,216,244, 14, 44, 44, 44, + 44, 44, 44, 44, 44,111,195,100,237, 40,237,127,118,172, 67, 22, 22, 22, 22, 22, 22, 22,150,191, 8, 54,162,197,194,194,194,194, +194,194,194, 82, 53,118,160,148,172,240,172,209, 98, 97, 97, 97, 97, 97, 97, 97,121,123,102,235, 13,216,170, 67, 22, 22, 22, 22, + 22, 22, 22,150,170, 49,190,172,255, 41,148,221,115,224,162, 5, 95, 80,153,222, 7, 23, 89, 77, 86,147,213,100, 53, 89, 77, 86, +147,213,252,207,105, 86,164,125, 17,239, 31,165, 54,134,255, 59,242,104,177, 93, 95, 89, 77, 86,147,213,100, 53, 89, 77, 86,147, +213,252,183, 99, 26,130,199, 52,185, 2,249,121,180,216, 54, 90, 44, 44,239, 57,228, 48, 56,200,244,241, 2, 33,110,224, 8, 18, +145,248,232, 21,181, 24, 76,149, 53,147,253, 61, 33,214, 59,195, 32, 74, 69,242,195,215, 85,213,100, 97, 97, 97,249, 23,147,136, + 50,218,104,177, 70,139,133,229,125, 39,213,215, 27, 92,172, 0, 13, 87, 16, 93, 4, 28,253, 87, 0, 79, 31, 87, 89,147,207, 44, +131,145,118, 7,209, 61,135,147,207, 74,224,217, 83,246, 96,179,176,176,176, 88,198,223,222, 24,158,199,227, 37, 3, 96, 68, 34, +209, 81,176,163, 92,179,252,181,184, 22, 92,103, 76,193,117,103, 9, 50, 46,151,187, 80, 34,145, 92, 22, 10,133, 41, 66,161, 48, + 69, 42,149, 94,230,114,185, 11, 1,200,254, 41, 59, 72,126,169, 39, 1,109,252, 64,171,103,170,157,125,148,229,164,212, 24,189, + 65, 27,122,146,157,117,101, 85,210,228, 82,221,212, 58,198,227,215,123, 74,103,133,214,224, 7,130, 42,105, 22,193,134,207,231, +159, 5,224,192, 94,158,255, 78,252,128,166, 77,185,220, 89,190, 64, 39,128, 29, 79,151,133,229,111, 55, 90,122,189,222, 41, 45, + 45,141,218,179,103, 79, 95,107,107,235, 8, 46,151, 59, 15, 0,255,191,114,192,101, 50,217, 45, 43, 43,171,100,107,107,235,100, + 43, 43,171,144,138,230,255, 75,241,118,116,116,140,182,179,179,123, 94,116,166, 99,131,143, 90,213,105, 61,114,145,189,127,191, +246, 85,212,231,115,185,220,121,214,214,214, 17,123,246,236,233, 27, 31, 31, 79,233,245,122, 39, 11,182,111,103,107,107, 27,118, +247,238,221, 5,105,105,105,237, 99,239,236,116, 76,186,187,221, 49,250,202,218, 14, 65,167, 55, 45,176,177,177,126, 10,160,221, + 63,226, 72,170, 25,103,208,156,142, 79, 18,149,146,196, 28,189,115,112,148, 82, 14,112, 58, 64, 91,133,151,152,108,198, 25, 32, +157, 66,227, 84,210, 91, 25,142,206,215, 95,105,172, 64,211, 29,161,166, 92,170,252,192,161,233, 73, 12,195,116,229,243,249,159, +179,143,223,127, 39, 2,154,110,125,171,111,223,101,115, 26, 52,152,234, 11,244, 41,195,108, 81, 0,166,249,250,250,158, 1,240, +241, 91,252,250,239,124,124,124,226, 1, 76,103,207, 4,203,223, 76, 99,211, 11, 62,138,180,209,178,200,104, 13,244, 66,235,161, + 53,113,117,176, 23,114,135,212, 68,222,136,154,184, 49,192, 11,157, 42, 83, 26,123,123,123,180,107,215,142, 19, 31, 31, 47,254, +226,139, 47, 22,137, 68,162, 72, 0,221, 43,163, 37, 22,139,131, 36, 18, 73, 44,151,203, 45, 86, 22,137, 68, 18, 36,149, 74, 99, +185, 92,110,231,162,243,229,114,249, 45, 43, 43,171,100,185, 92, 30, 82,134, 17, 10,178,178,178, 74,150,201,100, 65, 69,231,115, +185,220,206, 50,153, 44, 78, 46,151,151,156,223, 73, 46,151,199,150,156, 95, 22, 60, 30,207, 61, 54, 54,214, 41, 46, 46,206, 73, + 32, 16, 56, 23,157, 31, 19, 19,227, 20, 27, 27, 91,108,190, 37,112,185,220, 78, 82,169, 52, 86, 34,145, 4,149, 54,191,228, 62, +149, 69,145, 99,215,201,156,249,150,154,172,110,221,186,221, 72, 76, 76,244,176,177,177,177, 41,186,192,206,218,166,251, 47, 59, +183,204,236,215,179,219, 36, 71,191, 15,235, 87, 82,191,187, 72, 36,138,252,226,139, 47, 22,197,199,199,139, 91,182,108,201,161, +105,139,222, 39,186,244,235,215,239, 88,114,114,114,181,134, 13, 27,114, 12, 6, 3,158, 28, 95, 8,201,195,207, 33,138,220,134, +234,226, 84,110,196,133,149,238,221, 58, 52, 61,134,119,220, 24,148, 28,246,227,131, 98,218, 49,132, 56,134,197,171, 29,123,245, + 29,196,125, 16,171,114,212, 27,141,118, 0,167, 3,217,229, 41,172,148, 38, 87,223,150, 33,196,249,143, 40,158, 99,199,193, 83, + 57,151,162,184,142,122,163,209, 30, 52,218, 87, 70,179,232,229,207,225,112,102,174, 93,187,150, 6, 48, 5,128,224,191,244, 20, +110,238,134,106,157,106,115,238, 53,118, 69,235,183, 40, 27, 80,112,191,123,255, 83,246, 83,203, 48,207, 14,188,126,125,110, 68, +237,218,189,231, 52,104, 48,166, 20,179, 69, 1,152,179,114,229,202,145, 79,158, 60,113,172, 89,179,230,132,183,244,210,191, 97, +229,202,149,179,159, 60,121,226,230,229,229,181, 4,108,250,162,127, 21,132, 16, 1, 33,164, 35, 33,164, 23, 33,164, 51, 33,164, +121,193,223,205, 10,166, 94,132,144, 46, 37, 62,155, 21,108,107, 90, 30, 88,134, 70,175,146,219, 21,217,166,228,255,197,254, 46, +197,104,245, 66,126, 91,173, 94,197,118,224,228,201,147,164,232,103, 73,134,120, 97,241,212, 86,213,148, 97, 39,246,145,188,216, +215, 36, 51,252, 1,121,176,227, 91, 50,181,153,163,114, 88, 77,124,103,249,241, 34,228,230,205,155,228,201,147, 39, 36, 47, 47, +143,188,120,241,130, 4, 6, 6,170, 36, 18,201, 31, 0,188, 44, 17,147,203,229,201,127,252,241, 7,233,214,173, 91,182, 76, 38, + 91, 99,186,185,172,172,172,146,111,222,188, 73,186,117,235,150, 45,151,203, 55, 0,224, 0,192,128, 1, 3, 82, 8, 33,196,209, +209, 49,161, 52,189,126,253,250,101, 18, 66,136,181,181,181,169,170,137, 35,151,203, 55, 76,158, 60, 57,239,254,253,251,196,214, +214,214, 52,159,182,178,178, 90, 51,101,202,148,188,224,224,224,162,243,203,197,206,206, 46,214,104, 52,146, 19, 39, 78, 16, 39, + 39,167,194, 50,216,218,218,198, 26,141, 70,114,236,216,177, 50,203, 86, 94,160, 64, 38,147,173, 30, 49, 98, 68,110, 84, 84, 20, +177,183,183, 79, 46, 50,127,205,168, 81,163,114, 99, 98, 98,136,131,131,131, 89,101,180,183,183, 79,190,117,235, 22,233,223,191, +127, 78,209, 99,106,111,111,159,124,251,246,109,211,252,213,230, 60,200,220,220,220, 38, 56, 57, 57, 37, 56, 57, 57, 37,216,216, +216, 44,119,117,117, 77, 74, 77, 77, 37,132, 16, 82,171, 86,173,148,162,145, 44,167,128,190, 51,182, 29,190,125,247,218,227,244, +212, 6, 93, 39,173,182,110,208,207,218,130, 99,224, 37,145, 72,254,104,223,190,189, 42, 54, 54,150, 40, 20, 10,242,240,225, 67, +114,243,230, 77,242,242,229, 75, 2,192,156, 62,182,114,153, 76, 22,175,209,104, 24,141, 70,195,164,166,166, 26, 83, 82, 82,140, +225,107, 92, 9,249,153, 87, 56,101, 29,235, 67,146,174,173, 96,172,100,146, 56, 0,242,119,246,224,217,226,239, 78,182,251, 28, +120,186,208, 35,252,218,202, 30,122, 18,117,137,236, 27,227,168,191, 58,163, 90, 4,249,193,247,127,100,187, 95,245, 74,105,254, +224,183,239,225,215, 30,207, 54, 45,153,166,143,142,142, 38,179, 70,245, 48,156,159, 90,237, 21,217,230,123,184, 50,154, 69, 24, +250,209, 71, 31,229,197,196,196, 16,127,127,127, 5,135,195, 25,251, 95, 50, 89, 93,188, 5,241, 15,127,157,197,244, 9,144,164, +191, 37,179, 21,224,228,228,148,182,123,247,110, 34,151,203, 83,254, 65,102,139,242, 5,250,238,105,208,224, 24, 51,112,160,113, + 79,131, 6,199,124,129,190, 5, 6,139, 2, 48,119,213,170, 85,193,122,189, 62,120,215,174, 93,193,125,251,246, 13, 6, 48,171, +138,223,249,253,119,223,125, 71,244,122, 61,217,181,107, 23,233,219,183, 47, 1,176,209,220,141,101, 50, 89,157,250,245,235,239, +245,247,247,143,105,216,176,161,214,207,207, 79,237,237,237, 29, 21, 16, 16,176, 91, 40, 20,122,129,229,111,161, 60, 47, 66, 8, +105, 62,119,238,220,121, 0,200,220,185,115,231, 17, 66,122, 21,248,137, 94, 69,255, 46,249,105, 50, 79,166,255, 75,211, 48, 77, +165,105,150,246, 29, 37,190, 7,101, 68,178,198, 23,148,251,207,157, 59,121,242,100,251,147, 39, 79, 94, 45,185,115,131,106,162, +213,212, 86,213, 84,170,212, 68,242,248,219,207,201,229,142,238,228,102, 7, 23,242,124,230, 71, 36,241,215, 13,228,179, 70,182, +202,129, 53,209,209, 82,163, 21, 28, 28, 76,130,131,131, 73, 72, 72, 8,137,140,140, 36,217,217,217,228,224,193,131, 70,123,123, +123,149, 80, 40, 92, 9, 64,108,142,152,149,149, 85, 50, 33,132,104, 52, 26,178,124,249,114,117, 65,164,202,217,218,218, 58,153, + 16, 66,178,178,178,200,202,149, 43,213,214,214,214, 15, 1,184, 57, 56, 56,196,190,126,253,154, 56, 59, 59,151,106,102,108,109, +109,147,159, 61,123,102, 50, 78,213,108,109,109, 31, 31, 63,126, 92, 71, 8, 33,113,113,113,196,206,206, 46, 25,128,179,189,189, +253,131,147, 39, 79,234, 8, 33, 36, 33, 33,193, 52,223, 44,163,165, 82,169,200,249,243,231,139,149,193, 52,255,204,153, 51,197, + 12,152, 25, 56, 91, 91, 91, 7, 31, 60,120, 80,107, 52, 26,201,227,199,143, 77, 38,209,217,198,198, 38,228,240,225,195, 90,163, +209, 72,194,195,195,205, 54,131, 53,106,212, 72, 33,132, 16,131,193, 64,182,109,219,166, 49, 29, 83,211,124,173, 86, 75,182,110, +221,170,177,178,178, 10, 6, 80,110,244,205,193,193, 33, 65,171,213,146,172,172, 44, 18, 24, 24,152,119,243,230, 77,146,147,147, + 67, 8, 33,164, 70,141, 26, 41, 0,224,211,126,236, 55,119, 95,228,229,124, 50,123,203, 33,175,230,195,190, 61,119, 47, 62,238, +167,223,131,130, 29, 2,250,245, 48, 39,168, 41, 20, 10, 87,186,186,186,170,175, 95,191,110,212,233,116, 36, 38, 38,134,132,132, +132, 20, 94, 99,143, 30, 61, 50,203,104,113,185,220,133,119,239,222,213, 25,141, 70, 38, 45, 45,205,152,146,146, 98, 76, 73, 73, + 49,148, 52, 90,228,103, 30, 73, 59, 51,142,156,218, 49, 93,203,231,243, 23,190,155,104, 22, 56,100,187, 79, 63,178,221, 39,120, +247, 8,135,180,220,144,253,132, 92,152, 78, 94,125, 83,147, 44,236, 33,207,101,182,251, 4,147,237,190, 3,201,226,246, 92,139, + 52,119,248,245, 33,219,125,130,191, 27,228,153,254, 32,248, 62,185,122,245, 42,217,186, 97, 21,153,218,165,154,130,217,238, 19, + 76,126,240,235,111,137,102, 81,132, 66,225,139, 27, 55,110,144,107,215,174,145, 37, 75,150, 16,137, 68, 18,243, 54,162,122,228, + 7,111, 79,242,163,119,123,178,179,174, 43,185,210,254, 31,215,193,167,185, 27,170,117,245, 22,196,165, 61,248,157,144,140,151, + 36,105,141, 63,233,225,195,171,170,217, 10,112,114,114, 74,141,138,138, 34, 73, 73, 73,100,221,186,117,196,202,202,234, 31,109, +182,124,128,126, 0,230,173, 94,189,186,208,100,109,217,178, 37,248,209,163, 71,193, 30, 30, 30,167,171,240, 93, 27, 87,175, 94, + 93,104,178,182,108,217, 66, 30, 61,122, 68, 60, 61, 61, 99, 43,218,112,196,136, 17,146, 86,173, 90, 5, 15, 31, 62, 92,185,123, +247,110, 18, 21, 21, 69, 30, 62,124, 72, 86,175, 94, 77, 22, 45, 90, 68,126,254,249,103,210,191,127,127, 69, 96, 96,224,221,129, + 3, 7,138, 44,140, 40,112, 11,162, 48, 2, 66, 8,143, 16, 98, 50,154, 92, 0, 60,211,203, 63, 75,113,163, 85,150, 23, 41,203, + 76,149,101,176, 74, 46, 43,199,136,149,107,216,204,248,190, 66, 83, 85,198,117, 80, 44, 34,113,165,119,239,222,237,223,248,241, + 33, 88, 58,254,139,111, 68,145,187,215, 33,249,224,102,112,178,146,193,203, 77,135,230,198, 41,232,111, 28,199,200,150, 45,197, + 98,138, 90,102,233, 1, 21, 8, 4, 16, 8, 4,224,243,249, 80, 42,149, 72, 72, 72, 64,155, 54,109,232,144,144, 16,209,132, 9, + 19,166,139,197,226, 24, 0, 31, 86,120, 55, 83,249, 17,233, 91,183,110, 97,220,184,113,194,189,123,247, 54,116,116,116, 12, 53, + 26,141, 2, 0, 8, 15, 15,199,144, 33, 67,132,251,247,239,175,231,230,230, 22,162,211,233, 36, 66,161, 16, 28, 14,167, 76, 61, +129, 64, 0,189, 94, 47,172, 91,183,238,195,208,208,208,128,222,189,123,243,162,163,163,241,250,245,107,232,245,122,129,183,183, +247,163,144,144,144,134,189,122,245,226,197,198,198, 34, 58, 58,186,176, 28,230,148, 87,171,213, 66, 40, 20,162,104,149, 22, 69, + 81,208,104, 52, 16, 8, 4,102,107,113,185,220, 78,190,190,190,143, 66, 67, 67, 27,247,235,215,143,127,255,254,125,196,197,197, +193,104, 52, 10,252,252,252, 30,133,134,134, 54,234,219,183, 47,255,225,195,135, 72, 78, 78,134,185, 85,104,166,245, 66, 67, 67, + 49,124,248,112,193,217,179,103, 27,185,186,186, 62, 52, 24, 12, 2, 0,120,244,232, 17,134, 12, 25, 34, 56,119,238, 92,227,234, +213,171, 63,172,160, 42,145, 3, 0,122,189, 30, 19, 38, 76,144, 90, 89, 89, 33, 54, 54, 22, 12,195,192,104, 52, 2, 0,210, 51, +211, 31,133, 62,122, 28, 62,114,232,160,246, 42,157, 70,115,251, 94, 80, 88,173, 26,158,238, 20, 69,106, 84, 80,212, 15,165, 82, +105,204,154, 53,107,102, 68, 69, 69, 9,125,125,125,233, 87,175, 94, 33, 55, 55, 23,124, 62,191,240, 26, 51,119,191, 5, 2, 65, + 7,127,127,127,174, 90,173, 6,195, 48, 0, 64,104,154, 46,245,100,136,178,110,192,207,217,192, 19,139,197, 29,222,201, 19, 41, +199,223, 30, 12,186, 70,167,106,133, 66, 27,119,185,204,213, 27,136,185,134,154,142, 66,112,104,142,232,254,107,165, 20, 32, 93, +225,145,102,111,153, 38,211,245,117,138, 86,168,183,171, 39,115,115,247, 64,122,122, 58,170,215,242,133, 90,224, 40,184,245, 82, + 33, 3,101,161,230,159,180,173, 91,183,174, 75,157, 58,117,144,150,150,134,198,141, 27,195,214,214,214, 22, 64,215, 74,155,172, + 93,158, 66,228,160, 53, 64,175,129,145, 90, 2, 61,119, 5, 94,166, 54, 38,219, 27,243,254, 73, 38,203, 74, 38,184,179,255,192, +193,106,246, 30,126,192,169, 79,224,108, 35,196,206, 73,141,237, 28,173,133,199, 42,105,182, 2,156,157,157, 47,221,189,123,215, + 65, 36, 18, 33, 36, 36, 4,254,254,254, 88,183,110,157,163,173,173,237,181,127,136,217, 34,225,192,137,239, 30, 62,220,181, 55, + 34,226,228,136,218,181,123, 15,247,246, 94, 62,241,227,143,199, 78,155, 54, 13,171, 86,173,194,177, 99,199,208,186,117,107,140, + 31, 63, 94, 31, 19, 19,179,167,146,223,179,121,205,154, 53, 83,167, 79,159, 94, 82, 83, 23, 29, 29, 93,110,109,139,191,191,191, +251,139, 23, 47,226,103,206,156,217,120,239,222,189, 98,137, 68,130,172,172, 44,252,248,227,143,152, 55,111, 30, 40,138, 2, 33, + 4, 63,255,252,179,100,204,152, 49,205, 35, 34, 34,226, 61, 61, 61, 43,108,214, 65, 8,161, 8, 33, 34, 0,146,130, 73, 10, 64, +178,127,255,126,235,126,253,250, 89, 21,204, 19, 23, 76, 66,176,148,164, 84, 47, 82,228,183,242,100,137,227,221,187,228,188,146, +203, 8, 33,189,203,211,176,208, 64,151,246,125,167,202, 51, 91, 69,127,129, 58,148,234, 34,129, 6, 46, 94, 62,200,190,112, 24, + 98, 46, 5, 49,167, 96,226, 82,160, 95, 61, 66,117, 17, 15,122, 66, 2, 42,107,180, 76, 19,143,199,131, 82,169,132,209,104,196, +188,121,243,132,231,207,159,183,167,105,250,127, 21,233, 20, 53, 76,207,159, 63,135,159,159, 31,117,226,196, 9,231, 41, 83,166, +136, 77,223,147,157,157,141, 58,117,234, 80,103,206,156,113,250,250,235,175,101,229,153, 25,138,162,192,231,243, 49,125,250,116, +241,189,123,247,236,220,220,220,240,234,213, 43,100,100,100, 64, 38,147, 97,250,244,233,226,187,119,239, 58,186,185,185, 33, 42, + 42, 10,217,217,217,144,201,100, 22, 27, 45, 62,159, 95,108, 27,138,162,160,211,233, 44, 50, 6,214,214,214,251,130,131,131, 29, +173,173,173,241,240,225, 67, 24, 12, 6, 88, 91, 91, 99,234,212,169,226,224,224, 96, 71, 27, 27, 27,132,135,135,131, 16, 2, 43, + 43, 43,139,202, 8, 0, 12,195, 32, 60, 60, 28, 53,106,212,192,181,107,215,156, 38, 78,156, 40, 50,205,127,249,242, 37,220,221, +221,113,237,218, 53, 39,169, 84,186,175, 44, 45,134, 97,144,152,152,136, 39, 79,158,224,213,171, 87, 72, 77, 77, 69, 90, 90, 26, +114,115,115, 97, 48, 24, 0, 0,146,220,156, 83,251, 15,157, 8, 21,139,197, 18,127,239,186, 30,143, 30, 63, 77, 17,139,197, 18, + 79, 15, 15,111, 96, 49, 93,142, 33,252, 95,116,116,180,253,152, 49, 99,248, 73, 73, 73,200,204,204, 4,151,203,125,227,218, 18, + 8,204,107, 10,100, 48, 24,252, 68, 34, 17,165,211,233, 10, 35, 96, 2,129, 0, 51,246, 41,225,191, 16,197,166,143, 55,164,128, + 24,245,208,106,181,126,127,251, 47, 24, 64,129,210,214, 5, 69, 53,190,243, 74, 97,215,182,247, 80, 62, 94,159, 5, 24, 61, 64, +115,209,161,129, 59,247,216, 35,133, 51, 8, 26, 64, 3, 95, 66, 42,238,249, 69, 0, 10,208,213, 1,168,166,231, 95, 24,236, 91, +127, 52,137, 31, 31, 31, 15, 62,159, 15,161, 80,136,198,157, 6,112,247,135,234, 93, 64,161, 33,116,240, 49, 71,179, 88,216, 81, + 44, 94,176,104,209, 34,105, 81,205,177, 99,199, 74,173,173,173, 23, 85,218,100, 41, 36, 45, 97, 32,211,159,196, 43,107, 44, 63, +149,228, 23,145,162,242, 1, 33, 51, 1,125,163,183, 96,182, 58, 8,133,194,215, 0,218, 84,201,100,201, 5,183, 15, 28, 56, 88, +205,174,122,190,201,130, 65, 13,240,196,112,113,180,193,206, 25, 29,237, 28,109,196,150,154,173, 0,103,103,231, 63,238,220,185, +227, 32, 18,137, 16, 28, 28, 12, 62,159, 15,145, 72,132,250,245,235, 99,251,246,237,142,118,118,118,255, 40,179,181,242,225,195, +221, 43,158, 60,121, 62, 55, 32,192,247, 67,169,212,110,242,240,225,214, 95,127,253,245,201,227,199,143,239,234,213,171, 87,218, +189,123,247,214, 3, 56,108,105,196, 12,192,150,181,107,215, 78, 54, 25,183,175,191,254,250,231,227,199,143,175,232,213,171, 87, +226,189,123,247,102, 2,216, 82,158, 64, 94, 94,222,241,249,243,231, 91,127,244,209, 71,166,255,113,227,198, 13,236,217,179, 7, + 82,169,180,216,186,125,251,246,197,184,113,227,108,181, 90,109,185,191, 73, 78, 78, 78,157,239,220,185,227,143,252, 14, 94, 66, +147,209,122,252,248,177, 77, 78, 78,142,141, 76, 38,179,113,117,117,149,155,204,214, 71, 31,125,100,195,229,114,219,128, 5, 21, +121,145,162, 70,199,156,121,149, 93,223, 92,179, 85, 98, 86,153, 57,180,138, 25,173,222,189,123, 95, 69, 25, 61,169,116, 25,201, + 16,194, 8, 49,135,130,132, 83,196,108,129, 1, 55, 59, 5, 84, 37, 58,240,150,246, 99, 40, 16, 8,192,225,112,160,213,106,145, +158,158,110,145, 41,176,178,178,130, 76, 38,131, 74,165,130,193, 96,128, 72, 36, 50,153, 17, 88, 89, 89,129,199,227,129,199,227, + 65, 36, 18,189, 17, 77, 42, 25,205,225,243,249,144, 74,165, 72, 76, 76, 68,116,116, 52, 24,134,129, 76, 38,131, 84, 42,133, 64, + 32, 64, 66, 66, 2, 18, 18, 18, 64, 8,129, 84, 42,133, 84, 42,133, 37, 13,174,141, 70, 99,169, 63,254,122,189,222,162,136,150, +193, 96, 64, 88, 88, 24, 98, 98, 98, 32, 18,137, 10,247, 85, 40, 20,226,229,203,151, 72, 74, 74,130, 68, 34,129,149,149, 21,172, +173,173,205,214, 53,237,139, 92, 46,135, 88, 44, 70,102,102, 38,148, 74,101,225, 49,181,178,178,130, 84, 42, 69,118,118, 54, 82, + 82, 82,202,221,119,163,209,136,132,132, 4,164,166,166, 34, 54, 54, 22,105,105,105,133,102,171, 32,106, 84,181,192, 78, 78, 14, +210,211,211, 11, 35,145,101, 77,230,192, 48, 12,114,115,115,113,231,206, 29,138, 97, 24,100,101,101, 49,169, 73, 73,198,207, 18, + 4, 56,182,248, 7,114,240,236, 3,245,254,211,193,170,163,127, 60, 81,109, 57,250, 72, 37, 10, 92, 98,120, 39,143,161,173, 1, +214,208,243,186,165,229,233,133,169, 58,190,181,115, 64, 23,224,245, 25,128,230, 2, 34, 91,180,168, 87, 19,209,153, 70,233,179, +100,173, 8, 20,186, 99,139,183,173, 89,154, 70, 94,215,212, 92,189, 48, 74,231,104,229,215,160, 9,146,147,147, 33, 20, 10, 33, + 20, 10,209,180,117, 23,188, 78, 55, 74,158,198,171, 36, 32,232,102,150,230,159,212,146,201,100, 45,219,180,105, 67, 21,213,236, +217,179, 39, 40,138,170, 15,192,215,162,135,220,198, 90, 2,232, 36, 45,192, 37,211,159, 38, 42,221,142, 61, 86,123,247,249,112, +128,221,247, 23, 83,252,194,146, 52, 94, 32,250, 47, 64,116, 77,170, 96,182,218,203,229,242,147,155, 54,109,242, 18,137, 68,103, + 0,180,173,140,136, 76,204,217,182, 96,242,208,106,182, 38,147,165, 87, 2, 92, 49,192, 19, 3, 92, 49, 92,156, 28,176,108, 92, + 87, 59,137,136,119,212, 2,195,186,127,203,150, 45,142, 37, 77,150,105,106,220,184, 49, 22, 46, 92,232,104,103,103,183,239, 29, +255, 88,118,179,182,182,222,219,165, 75,151, 59, 9,114,249,184,196, 38, 77, 4,127, 88, 91,103,119,206,206,182,246,124,252, 88, +231, 3, 60, 2,176, 53, 46, 46,174,135, 5, 38,235, 99, 43, 43,171,224,206,157, 59,235,228,114,121,204,186,117,235, 62,155, 50, +101, 10, 86,173, 90,133,249,243,231,255, 8,224, 83, 0, 95,197,197,197,185, 85,100,178, 0, 32, 41, 41,105,216,156, 57,115,210, +210,210,210, 0, 0,245,235,215, 71, 86, 86, 22,102,205,154,133,207, 63,255, 28, 0,208,168, 81, 35, 16, 66,144,156,156,140, 53, +107,214, 36, 39, 37, 37,141,174,224,217, 30,123,248,240,225,230, 58,157,206, 29,249,213,131,194,172,172, 44,171,140,140, 12,185, + 78,167,147, 50, 12, 35,181,177,177,145, 1,144,140, 28, 57,146,251,244,233, 83, 63,131,193, 16,207,122,171, 63, 41,207,139, 84, + 6,138,162, 78, 85, 37,114, 85, 90, 68,172, 12,202,143,104,245,238,221,155, 42,250, 89, 44, 98, 68,225, 97, 76,208, 53,216, 5, + 52, 41, 22,205,146,112, 40,136,173,172,241, 58, 54, 26,124, 80, 79,222,150,209,202,204,204,196,103,159,125,166, 26, 54,108, 88, + 58,195, 48, 3,204, 53, 5,214,214,214,176,182,182,198,211,167, 79, 73,255,254,253,147,215,173, 91,167, 42,106,180,158, 63,127, + 78,186,117,235,150,178,104,209,162,188,242,140,150, 41,162,181,114,229, 74, 85,135, 14, 29, 82,159, 60,121, 66, 76,102, 74, 38, +147, 97,205,154, 53,170,142, 29, 59, 38,223,191,127,159,152,230, 89, 18,209,162,105,186,208,104, 21,221,134,166,105, 48, 12, 99, +145,209, 82, 40, 20,195,122,245,234,149, 28, 30, 30, 78, 76,251,105,109,109,141,117,235,214,169,186,118,237,154,252,228,201, 19, + 98,154,103,101,101,101,182, 25, 52,125,191, 92, 46,135,149,149, 21,158, 62,125, 74,186,117,235,150,188,113,227, 70,117,209,249, + 97, 97, 97,164,111,223,190,201,185,185,185,195,202, 51, 47,166,234, 60,131,193, 0,181, 90,141,180,180, 52,196,198,198, 22, 86, + 29,170,164, 86, 61,134, 14,238,211, 80,165, 82, 41,159, 62,127, 17, 83,191,158,191,147, 74,165, 82, 70,199,196, 60, 7, 22, 51, +229,104, 15, 8, 8, 8, 72,255,236,179,207, 84,153,153,153, 85, 54, 90, 2,129, 32,156,203,229,146,182,109,219, 18,173, 86, 75, + 98, 99, 99,245,105,153,153, 6,223,111,191, 37, 79,102,204,160,196, 65, 65, 66,153, 76, 70, 21,104,210,175, 94,189, 98,196, 98, +113,248,223,254, 36,162, 25, 23, 80,164,205,245, 23,121, 54, 93,251, 12, 17, 80, 73,247, 0, 93, 30, 32,180, 5,132,182,224, 74, +237,241, 65,219, 70,156,221,119,114, 92, 64,152, 86,224, 11,221, 43,212,228, 17,103,128,105,123,225,185,218,182,205,192,169,130, +140,140, 12,112, 56,156, 66, 83, 36,145, 74,209,249,195,145,244,207,247, 52, 46, 0,105, 13,138,227,110,193,189, 62,123,193,130, + 5,252,204,204, 76,208, 52,253,167,166, 68,130,137, 19, 39, 10,173,172,172,230,155,253,240, 59,236,199, 7, 79,216, 2, 32,159, + 63, 75, 82,187, 29,127,164,242,249, 98,229, 78,113, 64,163,230,152,208,193, 73,188,242, 84, 74, 64,104,172,170, 38, 96,156, 1, +131,182,105, 37,204, 86, 91,185, 92,126, 42, 40, 40, 72,210,179,103, 79,172, 89,179, 70, 42, 22,139,207, 84,230,193,175,200, 51, + 78, 89,186,241,151,228,135,235,187, 3, 58, 69,190,193, 42, 50,165,228, 49, 88,184,243, 82,182, 94, 79,134,154,171,169, 82,169, + 70,125,250,233,167,233, 71,143, 30,125,195,100,137, 68, 34, 68, 70, 70, 98,249,242,229, 25, 25, 25, 25,163,223,165,201,154, 50, +101,202,242,184,184, 56,159, 11, 23, 46,112, 83, 83, 83,157,214,254,244, 83,246,145,236,236,140, 21,143, 31, 63,251,170, 94,189, +186,115, 27, 52, 24, 93, 78,234,135, 82, 77,214,228,201,147,247,199,197,197, 53,190,120,241, 34, 47, 53, 53,213,125,242,228,201, + 88,189,122, 53,230,207,159,191, 29,192, 4,152,215,225,229,207, 0,130, 78,247, 44, 51, 51,179,119,247,238,221,179, 50, 51, 51, +209,160, 65, 3,244,233,211, 7, 46, 46, 46,112,115,115, 67,191,126,253,224,237,237,141,244,244,116, 12, 29, 58, 52, 35, 53, 53, +181, 59,128, 87,229,105,166,167,167, 71,236,219,183,239,249,212,169, 83, 27,199,197,197,249, 1,176,207,205,205,149,230,230,230, + 10,181, 90,173,216,214,214,214,182, 81,163, 70, 14,227,199,143,151, 61,120,240,192, 47, 46, 46, 46, 15, 64, 52,107,175, 10, 77, + 86,153, 94, 4, 64,106,129,225,209,150,248, 76,173, 96,153,185,219,150,250,183, 25,235,149, 52, 91, 69,167, 55,170, 14, 75,191, + 24,129,133,123, 14,239, 86, 11, 60,234,192,218,167, 33, 36, 34, 17,196, 2, 1,196,182,246,208, 48, 12,126,138, 76, 82, 42, 8, +153,111,233, 1, 45,249, 67, 72, 81, 20, 54,111,222,108,104,217,178,165,250,210,165, 75,155, 84, 42,149, 7,128,223, 45, 49, 5, + 27, 55,110, 84, 78,159, 62, 61, 52, 37, 37,165,161, 72, 36,210,154,230,111,218,180, 73, 57,114,228,200,199,113,113,113,141, 37, + 18,137,178,172,246, 89, 69,141,150, 80, 40,212,164,164,164, 52, 31, 59,118,108,248,214,173, 91, 21, 18,137, 4, 82,169, 20, 66, +161, 80,155,146,146,210,240,179,207, 62, 11, 93,189,122,181, 82, 44, 22, 67, 42,149, 90, 84, 45, 71, 8,121,195, 80, 21,157,111, + 46, 6,131,225, 82, 74, 74, 74,195,233,211,167, 63,248,254,251,239, 21, 38, 3, 84,180,140,107,215,174, 85,202,100, 50,139, 34, + 90,166,245,164, 82, 41, 54,108,216,160,156, 58,117,106,104, 74, 74, 74, 67,161, 80,168, 45, 50, 95, 49,101,202,148, 7, 41, 41, + 41, 13, 13, 6,195,165,114,222,240,140, 57, 57, 57,224,114,185,120,252,248,177,134,207,231,131,166,105,188,124,249,178,208,104, +217,217,217,249, 55,172, 95,207,247,151,253,135,175,138,249, 66, 97,203,230, 77,253, 94, 69, 69,199, 17, 66, 69, 85, 80,212,223, + 85, 42,149,199,165, 75,151, 54,181,108,217, 82,189,121,243,102, 67, 89,145, 45,115,208,104, 52, 87, 67, 66, 66,244, 34,145,136, + 74, 76, 76, 52,112, 56, 28, 24,141, 70,162,105,222, 92, 83,255,251,239,201,211,185,115, 41, 43,169,148,203,231,243, 33,145, 72, +168,179,103,207,106,149, 74,229,213,191,223,104, 65, 2, 10,226, 23, 41, 26,185,136, 54, 80,120,254,123,190,201, 18,217, 0, 34, + 91, 64,100,139,106,213,220,113, 47, 82, 41, 7, 13, 1,140,102,228, 16, 35, 68, 10, 10,146,199,201,144,243, 4, 98, 42, 41, 41, +169,208, 16,153, 38,175, 58,126, 8,137,206,147,129, 34, 66,112, 96, 73, 10,146,222,246,246,246,220,196,196,196, 55, 52,253,253, +253, 57,122,189,222,252,212, 46, 9, 70, 87,128,153,252, 60, 73,237,250, 91,168,194,103,198,138,159,197, 98, 99, 22, 16,180, 17, + 1,181,220, 48, 99, 96, 35,193,215,199, 83, 3,238, 71, 41,107,129, 67, 38,128,201,115,180,160,156,109,228,114,249,153,251,247, +239, 75,228,114, 57, 94,189,122,133,230,205,155, 99,199,142, 29, 18,137, 68,114, 26,128, 69,237,241,238, 38, 35, 58, 47,215,216, +114,246,225,152,164,135,137,134, 98, 38, 43, 85, 65,240,233,119,199,179, 50,115,212, 3,238,196,150,125,255,148,194,131,172,172, +172,110,243,231,207, 79, 79, 77, 77, 45,102,178,162,163,163, 77,134,160, 3,128, 39,239,234,199,210,218,218,122,248,138, 21, 43, +112,255,254,125,244,236,217, 19,215,174, 93, 67, 70, 70, 6, 14,156, 57,243, 98,223,139, 23, 95,153,218,108,149,145,250,161, 84, +172,172,172,190, 88,177, 98, 5,130,130,130, 10, 53,211,211,211,177, 98,197,138, 56, 0,147, 44, 53, 89, 38, 82, 82, 82,238, 61, +123,246,172,123,131, 6, 13,194, 54,109,218, 20,231,234,234,202,140, 31, 63, 30,159,126,250, 41, 28, 29, 29,141, 27, 54,108,136, +105,219,182,237,227,136,136,136, 46, 74,165,242,145, 57,239, 2,105,105,105,183,118,236,216,113,167, 83,167, 78,146, 81,163, 70, + 57, 30, 59,118,204, 94,169, 84,186, 9,133, 66, 39,173, 86, 43, 8, 11, 11,227, 28, 57,114,196,229,233,211,167,145,106,181,250, + 94,101,203,254, 95,131,162,168,251, 20, 69,157,162, 40,234, 98,137,207,251,229, 45,179, 96,219,178,254, 46,119,189, 18,197,220, + 81, 98, 50,159,225,181,176,120, 98, 61,185,242,214,136, 22, 36,105,124, 27,146, 60,196,143,220,104,111, 71,198,214,166, 20,163, + 42,153,222, 65,165, 82, 21, 78, 71,143, 30, 37, 46, 46, 46, 10,185, 92,110,113,122, 7, 23, 23,151,228,156,156, 28,210,172, 89, +179, 12, 71, 71,199,194, 84, 4,174,174,174,201, 10,133,130,180,104,209, 34,195,201,201,105, 3, 10, 26,101,187,187,187,199, 18, + 66,136,167,167,103, 66, 89,122, 6,131,129,184,184,184,152,122,232,241,236,236,236,126, 8, 12, 12,204, 72, 78, 78, 38,174,174, +174,133,169, 19, 28, 29, 29,215, 52,111,222,188,228,252,138,202, 27, 27, 23, 23, 71,226,226,226, 72,245,234,213, 19,138,206,143, +142,142, 38,209,209,209,196,221,221,221,226,244, 14,142,142,142,171, 75, 41, 75,165,202,232,225,225,145,172, 82,169, 72,171, 86, +173,138, 29, 83, 15, 15,143,100,181, 90,109,154,111, 86,122, 7,177, 88, 60, 65, 36, 18, 37,136, 68,162, 4,161, 80,184,188, 70, +141, 26, 41,135, 14, 29, 34, 27, 54,108, 48,117, 73,135,163,127,223,150,117, 90,141,254,202,209,191,223, 23, 85, 73,239, 32,151, +203,255,112,113,113, 81, 28, 61,122,180,216,245,165, 82,169,204, 78,239, 32, 22,139,227,242,242,242,152,228,228,100,253,205,155, + 55,149, 65, 65, 65,202,199,143, 31, 43, 35, 35, 35, 85,233, 41, 41,186,228,228,100, 85,118,118,182, 38, 52, 52, 84, 35,145,188, +155,244, 14,100,135,119, 29,242,131,239,241,136,165, 94, 79,167,183,147,168, 31, 45,107, 72,200,255, 62, 34,228,244,167,132, 92, +154, 77,238,109, 31, 79, 90,121, 9,141, 55,103, 85,127, 78,182,249,252,102, 78, 74, 6,178,163,126, 29,242,131,239,233, 23, 75, +188,158,142,106,235,166,254,105,235, 6,114,247,238, 93,242,248,241, 99,242,234,213, 43,114,250,247, 67,164, 85, 45, 73,190,230, + 15,190,199, 45, 76,243,208, 90, 40, 20,230,173, 91,183,142,220,185,115,167, 80,243,248,241,227, 68, 34,145, 40, 1,243,122, 45, + 19,128, 34, 63,248,127,104,216,234,115,253,235,174,178,220,244,147,179, 9,121,180,155,144, 29, 1,132,236, 10, 36,228, 80, 47, + 66, 78,140, 38,119, 54, 12, 36,173,189,248,122,178,205,231, 26,217,238,111,118, 99,123, 30,143,151,115,244,232, 81,146,144,144, + 64,174, 93,187, 70,130,130,130, 72,120,120, 56,137,137,137, 33,167, 78,157, 34, 60, 30, 79,141, 74, 12, 91, 22,232, 12,207, 46, +117,249,137,161, 43, 91, 19,114,108, 40, 73,221, 55,156,244,174, 39,207,104, 81,189, 74,249,232, 26,217,219,219,167,157, 58,117, +138, 68, 70, 70,146,171, 87,175, 18, 39, 39,167, 52, 0, 1,239,250, 7,177, 75,151, 46,119, 9, 33,193, 61,123,246, 12, 6,112, +182, 75,151, 46,193,175, 95,191, 14,110,222,188,249, 29,148,159,250,161, 76, 58,119,238,172, 35,132,144,158, 61,123, 18, 0, 9, + 93,186,116, 33,175, 95,191, 38,205,155, 55,215,190,165, 98,115, 0,140,230,241,120, 63,217,217,217, 93,182,181,181,189,196,225, +112,118, 0, 24,129,202,231,227,226, 0,112, 3,224, 15,160,105,193,228, 87, 48,143,237,113,248, 31,161, 48,189,131, 57, 12,244, + 66,235, 49,181,168,171,195,106, 34,119,104, 77,228,125, 82,155, 50, 39, 97,105,151,178,140, 22,195, 48,228,249,243,231,164, 99, +199,142, 10,169, 84, 26, 15,243, 19,150, 22,211,116,112,112, 8,114,114,114,122, 35,137,102,145,249,197, 18,150, 58, 57, 57,221, +114,117,117, 77,118,116,116, 12, 41, 77,211,193,193, 33,200,213,213, 53,217,193,193,161, 88,114, 79, 14,135,211,211,193,193, 33, +190,228,124, 46,151,219,201,201,201, 41,182,228,252, 50,246, 29, 46, 46, 46,177, 9, 9, 9, 36, 53, 53,149,120,120,120, 36,148, + 52, 96, 73, 73, 73,197, 12,152, 57,154, 21,149,165,156, 50,150,170,105,198, 49,173,204,121, 55,225, 93,173, 90,181,148,181,107, +215, 18,153, 76,150, 82,116,129, 79,187, 79, 22,220,125,145,151,243,233,156, 31, 14,149,146,176,212,220,228,160,221,165, 82,105, +124,199,142, 29, 21,207,159, 63, 39, 12,195, 16,134, 97,202, 50, 90,165,105,246,104,218,180,105,122, 90, 90,154, 49, 55, 55,215, + 16, 27, 27,171,121,253,250,181,106,217,178,101,186,212,212, 84,117, 94, 94,158,246,225,195,135, 26, 87, 87,215, 84, 0, 61, 44, + 61, 71,149,253,237, 42, 89,125, 70,182,251,181, 38,219,252, 78,133, 47,242, 12, 27, 29, 40,213, 4,175,237, 73,200,165,217,228, +206, 15,159,146,150, 94,130,124, 67,180,221,247, 12,249,217,187, 29,217, 88, 75, 96,150,230, 79,181,219,146,237,190,103,158, 46, +244, 12,251,168,137,163,118,255,238,237,228,229,203,151,228,248,145,125,164, 69,205, 2,147,181,205,239, 60,249,193,175,163, 57, +154,165,153,173,157, 59,119,146,151, 47, 95,146,223,126,251,205, 92,147,213,165, 52,163, 53,175,139, 44,235,211, 64,145,102,104, + 35,129,182, 95, 0, 95,215,173, 14,223,208,202,147,107,108,232, 74, 51,126,142, 32,221,124,196, 26,178,205,231, 26,217,230,215, +221,220,114, 10, 4,130, 24, 20,201,169, 83,114, 18, 10,133,169,229, 24,173, 46, 21,154, 45,111, 97,226, 31, 75, 59,145, 62, 13, +228,233,102,154,172,138,174,165, 70, 14, 14, 14,105,187,118,237, 34,206,206,206,169,102,154,172,191,252,250,180,182,182,222,155, +151,151, 23,124,238,220,185,224, 46, 93,186, 4,239,221,187, 55,248,198,141, 27,193, 18,137,100,175, 41, 56, 81,210,108,249,189, +249,252,239, 82, 34,162, 21,156,155,155, 75,206,157, 59, 71,186,116,233, 66,246,238,221, 75,110,220,184, 65, 36, 18, 73,112,101, +203,249, 87,236, 59,171,249,159,102,124, 41,147,101, 70,235, 45,158, 8,162, 86,171,201,172, 89,179,180, 34,145, 72,201,231,243, + 45, 29,130,231,189,190, 8, 29, 28, 28,110, 57, 59, 59, 39, 59, 59, 59, 23, 51,123, 69,231, 59, 56, 56,132,252,203,111, 64,111, + 62,159, 31,205,227,241,138, 15,193,227,223,183,101,237,214,163,230, 59, 7,244,253,160,138,229,228,243,249,252,121, 34,145, 72, + 57,107,214, 44,109, 94, 94,158, 37, 70, 11, 0,186, 74, 36,146,248, 61,123,246,168, 94,188,120,161,207,200,200, 48,220,189,123, + 87, 31, 20, 20,164, 93,188,120,113,174, 68, 34,137, 71,217,105, 9,254,150,227, 73, 54,214, 18,152,204,214,163,249,158,225,125, +234, 73,116, 59,102,118, 35, 45,107,148, 48, 89,101,103,114, 47, 93,179,192,108, 61,248,218, 35,188,163,183,204,176, 98,254, 12, +210,162,166,184,184,201,178, 64,179,164,217,146, 72, 36,185,139, 22, 45,178, 36,146, 85,220, 16,254,228,227, 65,182,251,238,205, + 55, 81, 21, 76, 63,248,252, 72, 54,251,120,252, 83,238,163, 64,103,120,118,246, 22, 62,177, 32,146,101, 78, 57, 27,217,218,218, +134, 89, 16,201,250, 59,246,189,219,196,137, 19,131, 95,191,126, 29,252,234,213,171,224, 27, 55,110, 4,127,248,225,135,193, 0, +186, 21, 89,167,208,108,233,250,247,215, 52,162,233, 25, 21,104,126, 60,113,226, 68,242,250,245,107,242,234,213, 43,114,227,198, + 13,242,225,135, 31, 18, 88, 54,124, 15,107,138, 88,163,245, 78, 34, 90,127,245,128,159, 93, 0, 92, 44, 58, 67, 36, 18, 37,171, +213,106, 71,153, 76,246,123, 94, 94,222, 84,228,119,139,172,146,230, 95, 81, 78, 86,243, 95,161,233, 42,147,201, 54,229,229,229, +125, 40, 18,137, 82,213,106,181,179, 5,154, 54, 66,161,112,134, 72, 36,234,168, 84, 42,189, 1, 64, 42,149, 62,215,104, 52,151, + 85, 42,213,122, 0, 89,239,122,223,201,198, 90, 2, 8, 4, 77, 65, 48, 55, 56, 70, 81,115,197,185, 12,207,153,157,108, 99, 90, +213,150, 70,130,199,124, 7, 74,115,143, 26, 19,173,177, 88, 83, 76, 53,135,145, 55,247, 94,148,178,198,119, 23,114, 61,191,232, + 40,139,105, 85, 75, 22, 3,130,239, 32, 84,222,182, 84,179,164,217,146, 74,165,123, 20, 10,197, 56, 0,151, 45,221,119,114,216, +143, 15,133,190, 26,244,156,122, 32,229, 12,225, 67,136, 18, 52,231, 49,146,144, 76, 45, 14,211,177,247,209,223,174,217, 77, 38, +147, 13,247,245,245,173,245,244,233,211, 87, 74,165,242, 87, 0,231, 75,172, 67,249, 2, 29, 37, 92,110, 67,149,193,112, 45, 12, + 8,170, 64,243, 99,153, 76,246,133,175,175,111,192,211,167, 79,159, 40,149,202,181, 0, 14,176,231,232, 95,165,249,175, 52, 90, +127,123, 22,101,211,143, 93, 94, 94, 30,123, 6, 88,254,106, 18,243,242,242,250, 23, 92,119,150,110,155,165,209,104, 22,106, 52, +154,133, 40,104, 63,146,153,153,249,143,106,180, 74, 77,123,165, 37, 27,107, 5, 65, 32, 88,217,196, 67, 60,245,232, 68,177, 18, +132,138, 3,143,217, 80,129,201,170, 72,243, 30,196,250,149,205, 61,197,159,255, 54, 65,172, 4, 65, 18, 8,214, 87, 96,178,204, +229,166, 66,161,168, 89,233,125, 30, 20,166, 3, 16, 73,128, 40, 44, 46,231, 69,113, 49, 8,197, 54, 50,126,151,156,207,203,203, + 59,127,239,222,189,114,127,131,194,129, 75, 48,152,221, 25,224, 64, 94, 94,222,129, 10, 52, 89, 88,254,113,112,217, 67,192,194, + 82,241, 75,201, 63,181, 96,212,180, 87, 90,114,216,239, 62,210, 56,179, 64,163, 38, 96,136,134,194,144, 68, 77,139,214, 86, 81, +243, 46,210,168,233,224,192, 27, 2, 67, 4,242,180, 73,212,164,104,237, 63,102,191, 1,130,197,172,145, 98, 97, 97,249,199, 48, + 30,197,123, 26, 22,254,207, 26, 45, 22,150,247,156,130, 40, 79, 92,193,244,143,213,100, 97, 97, 97,249, 15, 26, 46, 80, 40,187, + 65,155, 37,117,175,149,105, 20,119,145,213,172,148, 38, 7,128, 53, 0, 27,228, 15,227, 96,234, 38, 92, 81,154,141, 15, 0,232, +217,227,201,106,178,154,172, 38,171,201,106,190, 99,205,138,180,223,199,182, 95,165,101,134,223,241,174,122, 29,178,154,149,167, + 59,123, 60, 89, 77, 86,147,213,100, 53, 89,205,127,169,230,191, 14, 66, 72,165, 19,177,177,188, 27, 68,236, 33, 96, 97, 97, 97, + 97, 97,249,199,209,184,224,211, 21,249,209, 45, 87,211,130,119,218, 70, 75,108, 95,215, 21, 92,186, 1,197, 16, 95, 0, 32, 52, + 21, 14, 3,243, 80,149,254, 34,177,170,218, 50, 55,111, 59, 2,193, 97, 10,218, 65,121, 9,207, 51,170,170, 87,207,219,170,191, +179,131,124,120, 82,122,246,158, 39,207,242,142, 89,178,173,181,181,167,181,200,206,118,160, 70,167,175, 39,224,243, 99,116, 89, + 57, 59, 50, 51, 95,229, 86,162, 24,118,229, 45, 92,188,152, 80, 39, 19, 67, 40,190, 68, 71,219, 91,241,169, 60,228,145,188, 68, + 25,227,149, 21, 73,142, 28, 25, 68, 44, 61, 55, 20,141, 14, 82,185,188,137, 80, 36,105, 46,145,219,214,101, 8,144,145, 28, 31, +165,213, 27,110, 24,181,202, 96,194,224,202,219, 56, 87, 44, 44, 44, 44, 44, 44,255, 2,163, 21, 2,160, 23,242,219,104, 85,220, + 24,222,211,191,205,125,145, 72,236, 5, 0, 12, 33, 96, 8,160,200,201, 10, 78,122, 21,212, 29, 0, 28,106, 52, 62,199, 19, 89, + 53, 97, 72,254,114, 35, 3, 24,116,234,200,156,232,187,205,204, 41,145,212,209,251,163, 78, 93, 58,247,239,221,187,151, 79,253, +122,245,107, 3,192,163,199,143, 34, 78,158, 60,245,236,210, 69,234,168, 34,245,249,111, 85,217, 99, 2,209, 55, 77,155, 54,106, + 19, 20, 20,178, 20,192,228,170, 30, 65,123,123,217,212,243,255,155,213,174,115,255, 53, 82,192, 50,163, 37,178,179, 29,216,175, + 79,143, 70, 95, 78,155, 72,127, 58,235, 91,175,251, 55,175,172,146,185, 6,100, 17, 70,127, 94,145, 60,228,122,121, 3, 39,151, +244,143,101, 25,172, 95, 51,206,210, 27,118,181,180, 85,101, 68, 12, 33,140,113, 8, 69, 81,224, 8, 36, 71, 28,107,181, 57,100, +211, 97,102, 38, 0,179,123,140, 89,185,250,119,113,114,117, 63, 58,228,147, 25, 34,137,181, 51, 23, 28, 62, 0, 10, 9, 81, 97, +184,116, 96,133,237,231, 75,118, 54,190,249, 48,218,240,199,255,182,168, 41, 62,175,191, 50,241, 41,155, 75,133,133,133,133,133, +229,191,204,169, 2,115,117,170,228,130, 50,141,150, 72, 36,246,186,115,229,164,221,111, 55, 98, 1, 0, 93, 26,187,224,171,101, +155,186,237,221, 24,244, 12, 0, 90,118,234,237,189,116,222, 52,220,122,146, 2, 66, 8, 26,213,177,199, 7,253, 6,153,103, 60, +156,253,154, 13, 28, 56, 96,216,172, 89, 95,244,125,249,242,101,212,254,253,251,175, 3, 64,219,118,237,234,124,251,237,183,131, +215,216,218, 9, 15, 30,249, 95,188, 58, 57,236,126,101,246, 86,228, 86,171,154, 79,221,154,195, 15,254,188,137,238,208,125,192, +208, 40, 40, 86,168, 19, 94,197,155,179,173,131,131,195,116, 30,143,103, 13, 0, 12,243,167,255,209,233,136, 11, 0, 24,140,140, +220,214,205, 39,151,195, 23, 25,133, 66,254,211,220,188,188, 61, 57,241, 97, 63,149,167,169,209,235, 3, 62,159, 52,134,126,240, + 42, 29, 94, 1,109, 57, 27, 86,124, 13,198,168,183,157, 49,111,217,192,160,187, 7,161, 72,198, 85, 51,119,141, 87,114, 70,181, +106, 45, 56,223,172,144,117,165, 40,140,246,108,249,201,135, 75,119, 31,225, 53,173, 99, 5,141,158,193,153,224,244,150, 63,172, +255,102,245,205, 31,122,157, 0,176, 29,192, 31, 0, 42, 52,117,118,246,118,191, 78,159,191, 94,166,208,254,153,166,168,192,100, +225,199, 61,135, 17, 26,203,192,215,199,151,235, 50,125,149,108,251,178,241,187,149,249, 99,119,177,176,176,176,176,176,252, 87, + 73, 68,241,222,134, 59, 42, 52, 90, 0, 32, 19,115,241,236,117, 18, 0,192, 70, 12, 76,157, 48, 10,233,105,169,222, 90, 3,131, + 79, 70,141, 64, 72,120, 34,158, 69,166,130, 16, 2,111,119,137,217,165,225,128,105,250,201,216, 79,218,159, 59,127,254,222,130, +249, 11,126,161, 40,220, 6,128,237, 59,126,108,185,112,209,194,113, 35, 70,141,232,122,228,200,145, 39, 0, 42,101,180,184,148, +124,211,234,149,203, 5,113,105,106,245,244, 89,115,153, 47,102, 78,223, 0, 96,128, 89, 78,134,199,179,142,139,139,147,209,116, +241,230,107,223, 45,159,123,173,107,255, 53, 47,162, 98,178, 30,156, 59,126,188,153,191,191, 63,226,226,147, 90,175,250,126, 91, +195, 51,231,196, 99,114,115, 84,253,149,105, 97,165, 14,218, 44,228,241,158, 44, 89,245, 67, 35,198,166, 14,253,213,184,158, 8, +168,237,134,248,148, 44,180,235,222,151, 27,124,255,126, 55,192,108,163, 85, 50, 65,227, 64, 45,147,210,240,219, 61,119, 59,127, +216,202,173, 41, 77,115,144,167,210, 35, 53, 91, 3, 35, 3,180,245,179, 70,143,189,223,115, 51, 20,250,143,150,253, 47,246,163, +219, 27,123, 39,171,179, 19,166, 0, 56, 90,254,215, 16, 59,119, 39, 43, 60,139,205, 45,213,100, 41,212, 6, 0, 0,159, 99, 4, + 5, 98,207,222, 95, 44, 44, 44, 44, 44,255,113, 74,237,117, 8, 20,140, 74,126,242,228,201, 82,219,239, 24,141, 4,207, 34, 19, +241, 44, 50, 17,247,194, 83,161, 35, 60,108, 88,181, 4,107, 87, 44, 66,134,138,198,111,183, 98,241, 60, 50, 9,207, 35,147,144, +150, 89,106,166,247, 98, 85, 74,107, 86,136, 27,175, 95,111,181,186, 91, 59,105, 7, 59, 91, 91,219, 23, 79,126, 81, 44,156,153, +236,183,228,243, 88, 62, 79, 43,140,147,202,164,173, 14, 31, 62,228,239,236,232, 36,149,201,228,179, 37,213, 26,238,180,182,110, + 96, 93,158,102, 73,196, 78,190,125,251,246,234,209,201,197,197,153,153,184, 33, 56,188,158,159,175,190,110,157,186,173,197, 78, +117,251,150,179, 89,161, 38,195, 48,160,105, 26,201,201,201, 72, 72, 72,192,235,215,175,241,252,249,115,196,198, 70, 37, 51,132, +240,140, 96,104, 87, 87,119,112,185, 2,120,213,240,196, 15, 27, 86, 72,150, 45,254,170,185, 72, 42, 56, 86,194, 8, 21,106,170, + 51, 50,143,156, 62,123, 62,254,204,254, 31,140, 0,144,146,153,135, 75,247, 95, 34,228,105,172,165, 39,178,100, 10,135, 26,241, +209, 47,115, 12,145,167, 56, 75,191,254, 34,246,198,141,155, 81,217,185, 90,228, 42,117, 80,170,245,208,104,141,208, 27, 25,120, + 58,138,240,251,220,122, 56,126,249,161, 51, 69, 81,235, 43, 58,158, 26,141,222,216,198, 87,138,161, 29,171,195,215, 93,138,248, +103,183, 49,125,254,122, 4,189,214, 32, 51, 51, 11,122, 69, 26,152,188, 56,164, 69,134,192, 96, 52,146,138,206,251, 91,130,213, +100, 53, 89, 77, 86,147,213,252, 23,107,150,229, 69,222, 19,118,148, 50,161,208,104,149, 69, 68,108, 6,158,189, 78, 66, 19,223, +106,168, 93,195, 21,247,158,103,226,215, 75,177,216,121, 46, 26,151, 66, 83,193,112,229, 72,202, 1, 94, 68, 37,227, 69,116, 90, +133,249,179, 57, 66,222,144,207, 63,207,158, 85,223, 63,167,197,149, 51, 83, 81,205,241,133,255,156, 57, 89, 83, 57, 66,222, 16, +219,234,242,253,115,103,205, 24, 46,151, 72, 4, 90,141, 22,181,106,122,138,166, 77,153, 58,134,178, 21,238, 55,119, 47,229,213, +252,108,133, 98,241, 79,203, 22,207, 22,174,255,237, 69,140, 66, 11,197,209,219,201,175,190,152,187, 48,131,203, 19,253, 32,175, +230,103,107,174,150, 94,175,135, 70,163,129, 86,171,133, 78,167, 67,124,108, 88,223, 63,126,251,178,123,205,234,118,221,133, 34, + 17, 8,128, 28,149, 1,175, 19,149,232,216,185, 43,167, 73,227,198, 1, 50, 87,191,177,165,105,101,103, 71,103, 51,132, 35, 63, +249,251, 62,206,161, 11, 15,240,203,201,251, 56,118,249, 1,238, 93, 61, 99, 32,140,190,112,252, 47,153,107, 29,111,153,107,253, +104,153, 91,131,228,194,169, 90,189,160,114,143, 41,135, 38, 29, 59,119,185, 56, 97,242,180, 43,202,220,244,148,159, 54, 45,137, + 79, 77,136, 10, 19,242, 41,131, 68,200, 65,158,218,128,221,127, 36, 96,224,138, 80, 60,141,201, 3, 33,164,194, 1,188, 25, 96, +230,144,177, 95, 26,245, 58, 29,124, 60,100,216,183, 99, 37,250,118,108,136, 78,245,109,209,172,182, 20, 18,174, 6, 79,194,159, +225,192,190,221, 6,134,161,191, 96, 95,100, 88, 88, 88, 88, 88,216,136, 86,225,228, 90,116, 65,153, 85,135,106,181, 42,114,192, +144, 17,112,117,114,145,245,235, 48,154, 31, 28,145,133,212,196,104,188,124,254, 24, 74,181, 30,124,219,154,128,200, 5, 53,188, + 60,241,240,217, 49,221,198,213,167,242, 24,131, 38,178, 44,189,190,125, 93,221, 95,134, 83,244,234, 85, 30,119,158, 63,203,108, +178,111,254, 46, 12, 27, 38,115, 88,189,202,227, 78,212, 43, 41, 45, 17,145, 86, 99, 70, 13,165,104,138, 96,206,156, 89,232,215, +187, 7, 62, 25, 51,146,218,179,103,119,139, 44, 51,247,146, 1,111,243,188,175,151, 8,146,179, 12,218,123,207,243, 52, 18,169, + 88,124,243, 69,158, 34,192,203, 67,220,179,255,232,132, 83,135,127, 90, 15, 96,148, 57, 90, 38,131,165,215,235,161,211,233, 0, +192, 8, 0, 52,157,255,153,158,171, 69, 74,150, 6,201, 89, 26, 24,140, 12,250, 15, 25, 37,190, 31, 20, 58, 10, 64, 25,237,181, + 24, 70,111,208,227,232,133, 16,196,223, 63,194, 80, 52, 39,187, 72, 99,120,200, 92,235,120,187,184,120, 92,235,221,127,164,163, + 64,148, 95, 13,155,171,208, 96,207,182, 85,229,150,147,166, 40,194, 24, 13, 89, 6,189, 94, 81,171,102,173,120, 95,255,134,162, + 27, 87,206,245,189,121,241,104,158,161,214, 72,155,136,168, 68,112,120, 66,112,248, 34,104,116,230,189, 44, 36,191,188,179, 5, + 0, 53,246,179, 89, 27,102,124,249, 21,103,230,198,235,208,170,149,208,168, 20,200,201,206,132,152,171,199,147, 91,199, 13,196, +168,159,161, 72,124,176,133,189,191, 88, 88, 88, 88, 88,254,227,148, 28,126,167,112, 94,153, 70, 43,250,233,141,102, 0,224,221, +180, 91,186, 76,196,181,227,210, 20,146,227, 34,176,103,205,116, 48, 12, 65,207,113,171, 33,247,114,129,152,207,129, 38, 47, 61, + 47, 35,226,106,185,109,117, 40, 74,223,117,203,246,120,175,207, 38,213,178,218,183, 47,143, 7, 0,251,246,229,241, 38, 77,172, +110,181,117,123,164, 87, 96,155, 38, 32, 70, 35,122,247, 27,128, 33, 31, 15, 65, 84,146, 18,255,187, 22, 3,133, 74,107, 86,111, + 57,177,131,111, 67, 7,123,199, 30,159,143,238, 33,229,114, 40,170,174,167, 53, 39, 54, 85,111,224,112,120,198, 19,247,179, 19, +250,247,255,216,225,210,233, 67,157,140, 14,190, 13, 85,105,225,161, 21,233,105, 52, 26, 24,141, 70,104, 52, 26,232,245,122,216, + 57,212, 60,221,117,192,154,184,196,164,220, 83, 73,153,234, 64,133,222,128,228, 44, 13, 82,178, 52,200, 82,232,224, 34,183,133, + 65,175,173, 95,150, 30, 33,228,151, 15, 7,140, 24, 9,128,166,104,195,174,188,196,240,231,249, 75,254, 52, 89, 61,250, 13,115, +188, 22, 28,129,151, 65,103, 50, 9, 99,200,207,226, 78, 49,113,229, 31, 87, 16, 14, 5,134,207,165,244, 28,154,102,116,186, 60, +189,147,147,227,165,171,151,206,246, 81, 27, 94,129,195, 23, 22,174,171,210, 26,205,190, 98,146, 95,222,217, 12, 0,223,111,220, +176,182, 85,215, 97,252,171, 33,145, 80,233,129,150,141,189,241,251,193, 31, 53,132,232,191, 84, 36, 62,216,204,222, 91, 44, 44, + 44, 44, 44, 44,197, 12,214, 41,228, 55,142, 47, 30,209, 50,213,141,246,238,221,187,100,131,107,196, 39,103,192, 94,198,133,163, +155, 23,134, 79, 95,139, 95,214,207,132,209,168, 7, 33,128,193,104, 94,102, 2, 66,120, 23, 38, 79,242,242,173,225,197,113, 28, + 62, 76,162,250,117,159, 82, 60,124,152, 68, 85,175,190,125,246,228, 73, 94,145,185,106,143,214, 6,163, 17, 55,159,164,224,113, +100, 54, 30, 71,229, 64, 38, 54, 63,205, 23, 71,192,159,180,106,229, 10, 62,151, 67, 81, 79,162,243,242,226,210, 13,121, 28, 30, + 79, 39, 17, 11,136,150,112, 53, 81,105, 36,189,243,135, 99, 84, 39,246,126, 63, 22,192,148,178,116, 76, 61, 13, 77,145, 44,211, + 39, 33,132, 80, 0,195, 80, 70, 99, 92,154, 26,121, 58, 61,146, 51,255, 52, 90,148,161,236,154, 83,153,107, 29,111, 43,185,236, + 44,135,195, 17, 18, 2,232,117,134,193,112,173,211, 61, 47,241,229,243,162, 38,235,206,147, 4, 68, 60,184,152,108,212, 41, 71, + 40, 83,158,253, 97,238,190, 83, 20, 8,135, 3,134, 67, 83, 12, 69,129,225,209, 68, 11, 66,152,146, 37, 82, 90, 96,180, 76,102, + 75,192,227,204, 63,127, 96,189,211, 39,189,252,112,240, 90,190,231, 83,231,166,230, 40,226, 89,147,197,194,194,194,194,242,118, + 41,207,139,188, 71, 81,173, 55, 35, 90,229,237, 16, 33,192,139,232, 52,212,112,119,132,123,141,218,120, 30,246,240,207,101, 0, + 12, 70,243,170,163,142, 31, 79,140, 91,187,214,138,153, 57, 51,187,229,170, 85, 30,183, 39, 77,172,110, 93,175,190,125,246,236, +217, 49, 45,215,173,179,190,125,225, 14,207, 72, 10,242,117,153,114,115, 89, 54, 70, 16,221,188,161,127, 77,206,146,125, 47, 98, +254,120,148,155,194,231,243,245, 46,182, 34, 74, 46, 19,112, 56, 52, 79,160,209,211, 26,239,128,198,156, 19, 52,213,184, 60, 21, +147,209, 42, 89,117,152,158, 26,209,247,252,255,102,213,235,240,225,106,187,248, 84, 21,178,181,156,194,170, 67, 14, 77,225, 81, + 88, 52,192,225, 63, 46, 77,211, 74,110,119,110,255,175,191,120,172, 91,181, 28, 58,131, 17,147,103, 46,192,152, 81, 35,206,193, +181, 78,119, 15, 47,159,224,235, 39,118, 73,186, 79,252, 1,209,207,130,146, 12,154,156, 3,150,152,172, 66,179, 5, 16, 35, 97, +232,140,204, 28,153,198, 0, 17, 74,241,125, 26, 29, 83,169, 43, 39, 79,101,192,137,187, 73, 56,249,219, 1, 88,203,165,236,147, +128,133,133,133,133,229,173,243,158,154, 43,148, 48, 87, 64, 89, 17,173,242,240,116,119,198,221,199,145,168,239, 91, 19,214, 86, +114,132, 71,196,129, 67,243, 64, 83,128,222, 96,190, 25, 34, 58,253,193,117,235,172, 17, 29, 41,165,183,254, 16,233, 53,121,146, + 87,228,186,117,214,183,137, 78,127, 16,192, 8, 66,242,199, 5, 50, 37, 72, 53, 90,224, 11, 8,163,175,238,108, 39,225, 4,189, + 82,164,211, 52, 71, 99,111, 45, 98,236,173,133,180,189, 92,192,227,243, 56,140,129,208, 58,119, 39, 47, 53, 97,152,134,230,232, + 21,173, 58, 52, 26,141,160, 40,218, 88, 96,196,164,177,233, 42,100,171, 57, 72,206,210, 32, 51, 87,135,186,213,164,184,120,233, +136,210,168, 87,237, 43, 77,139,195,227, 91,215,246,114,199, 87,223,172,131, 74, 99,196,139,248, 60,240,133, 66, 23,103,151,128, +208, 17,159,205, 21, 78,219, 17,129,177,157,236, 49,243,122, 68,188, 50, 89, 52,215,146, 51,107, 52, 26,161, 82,107,249,201,105, +153,182, 57,185, 10, 43,177, 72,168,114,180,179, 78, 43,109, 93,181,133, 17, 45, 19, 18, 17, 23,125, 90,184, 64,173, 27, 10,149, +198,128, 91,127, 28,101,159, 8, 44, 44, 44, 44, 44, 44,127,178,163,172, 5,102, 25, 45,153, 68, 4,194, 17,225,122,112, 4,124, +252, 27, 96,247,241,123,168, 83,191, 5, 18,115, 13, 32,160, 43,236,109,104, 98,214, 60, 85, 8,128,144,190,125, 37,238, 31,125, + 84,173, 43, 33,188, 11, 63,108,207,137, 3,128,154,245,242,101, 24,134,128, 16,128, 48,249,134,203,108, 40,110,116,100, 98, 78, + 13, 47, 23, 41,158,198,233, 52, 82, 33,159,182,149, 10, 56,142,214, 2, 62,159,203,133,145, 80,154,196,196, 8, 13, 5, 68,153, + 35, 87,178,234, 80, 34,115, 61,221,249,195,213,169, 81, 49,217, 65,117, 51,148, 13,179,117, 2, 16, 2,212,173, 38,197,227, 59, +167,140,201,241, 47, 95,168,146,159,109, 43, 77,139, 97,192,209, 25, 24,132,190,202, 70,150, 66,143,172, 60, 29, 90,119,236,195, +111,221,165, 47,174, 63, 78, 3, 99,208, 99,213,143,167,114,141, 68, 63, 4, 8,211, 91,176,211,244,221,144, 39,238,169,153, 10, + 33,143,203,205,242,173,227,249, 90,192,231, 25,114,114,114, 4,197,215,226, 64, 42, 22, 32, 35, 79, 15, 0,122, 75,175,158,108, +133, 30,199,239, 36,225,196,209,253, 16,139,197, 32,236, 13,197,194,194,194,194,194, 82, 20, 87,228, 15,191,115,170,224,179,208, +124,153, 53,168,180,145, 33,112,176,183,131, 72,106,133,200,100, 29,114, 41, 39,100, 42, 9,140,198,252,136, 86, 57,129,167, 82, + 71,247, 62,126, 60, 49,238,216,177,180,157,199,143, 39, 22,105,232,253,103, 36,171,240,147, 33,102,107, 82,196,120,241,248,153, + 43,217,125, 3, 29,109,105, 14, 71,197,231,209, 26, 46,159,163,227,115,105, 61,159, 75,107,157,173,120,156, 43, 39, 14, 8, 8, +133, 43, 21,105,170,213,106,116,233,210, 5, 61,123,246, 68,191,126,253, 48,104,208, 32,120,123,251, 57,209, 28, 74, 75, 40,134, +113, 20,228,162,182, 35, 5,174, 58, 22,127, 28,248, 78,249,248,230,239,161, 70,141,186, 15,138, 91,206, 63, 53, 9, 97, 50,178, + 53, 80,235,140,200,204,211, 33, 83,161,131,193,177, 37,126,191,149, 0,149,214,136,232,224, 35,170,212,164,184,233,154,148,151, +145, 21,156,138, 57,197,255, 37,113,159,126, 50, 42, 85, 46,162, 95,182,109,213, 44,213,193,222,206, 64, 81,127, 70, 94, 41,138, +130,200,202, 9,182, 54,114, 68,134,156,193,249, 85,157, 85, 0,190, 54,231,120, 22,197, 74,194, 69,223, 64, 23,244,233, 63, 20, +245, 91,116, 55,199, 88,179, 35,218,179,154,172, 38,171,201,106,178,154,255, 37, 76, 99, 28,154, 62,205,203, 12,111, 50, 64,181, + 92,165,168, 83, 77, 10,181,206, 9,106,173, 17, 10,181, 17, 57, 74, 29,114,148,122, 68, 38, 41,241,248,120,213, 75,152, 31,197, +202,207,248, 73, 8, 0, 42,223,224,153, 27, 61, 17,232,180,223,172, 93,245,237,224, 3,141, 27,105,167,245,114,173,254, 48, 82, +155, 64, 81,180,138,230,112,245,118,114, 46, 47, 60,252, 97,234,237,107,167,219,137, 12,198,145,202,114,116, 12, 6, 67,118,181, +106,213, 0, 20, 31,130,199,175,182,184,223,205, 83,115,106,182,239,187,202,113,253,242, 89, 74,154,195,103, 40, 46,255,177, 81, +175,218,175, 74,126,246, 3,202,177, 31, 52, 95, 20,118,247,193,211, 22, 54,118,213,241, 50, 94, 1,133,218, 0,157,129,129,173, +140,143,184, 71,231,116,145,225, 65,135,242, 18, 30,238,174,196, 97,219,247, 60,236,177,123,143, 30,221, 7,180,104,209,146,179, +112,225, 2,248,248,248, 64,165, 82,129,166,105, 84,175, 81, 27,145,207, 31,224,206,169,111,140,202,244,168,109, 0,150, 2, 72, +181,244, 75,210,114,180, 56, 19,148,130, 83,191, 29, 4,135, 39, 96,111, 39, 22, 22, 22, 22, 22,150, 55, 25, 95,226,115,135, 89, + 70, 75,173, 86, 71,182,233,210, 7, 12, 67, 96, 36, 0, 99, 44,136, 60, 49,127, 70,159,140,122,117,100, 85, 75,199, 48,198,123, +155,119,236,236,217,184,121,123,142,191,135, 12, 57,233, 73,184,115,243,178, 1, 12,185,109,206,246,233,233, 47,242,196,206,117, + 6, 12, 30,248,209,225, 81,159, 76,204,106,215,177,163,212,201,201, 69, 19, 23, 31,167,252,121,239,175,250,115,167,143,181, 99, + 96,248, 56, 61,253,101, 94,121, 58,217,217,217,223,151, 54, 95, 40,144,181, 6, 80,147,195,165,180,170,212, 23, 22,181, 8, 79, +139,143,237,255,237, 55,139,163,134,141,155, 33,168, 85,173, 54, 82,178, 57,136,140, 75, 66,248,181, 99,154,248,231,247,127,203, +137, 11, 25,107,166, 84, 98, 41,243,226, 0,172,191,115,231,118, 64,143, 30, 61,186,119,234,212,137,140, 31, 63, 30,132, 0,127, +236,152, 68, 50, 34,239, 28, 65,126, 20,235, 85, 37,207, 75,244,181,219, 15,236, 6,181,107,202,181,151,143,197,206,131,167,245, + 32, 76, 52,123, 63,177,176,176,176,176,176, 20, 82,249, 54, 90,177, 97,249,249,180,254,106,114,147, 82, 70,236,222,253,203,178, + 95,246, 30,104,173,214,106,171, 17,240, 99,141, 6,237,213, 60, 35, 22,154,171,161, 74,126, 25,100,111, 95,183,222,207, 63,110, +254,250,231,157, 91,219,131, 49,250, 82, 64, 20,161,112, 69,164, 55,142,170,200,100,149,107,150,210,114,183,119, 29,176, 70,149, +158,158,247,139,165,219,170,210,159, 37,209, 28, 93,245,237, 27,190, 89, 77,211,156,110, 70, 35,195, 99,140,250,151, 70,157,250, + 59, 85,234,179,227, 48,187,149, 27, 50,202, 89,246, 4,192,147, 75,151, 46,181,189,116,233, 82,115, 0,223, 35,127, 12,197,160, +170,156, 23, 77,122,110,231, 47,103,125,249,199, 23,160, 60, 25,134,192, 96,100,162,249, 42,101,103,246,158, 98, 97, 97, 97, 97, + 97, 41,100, 60,222, 76, 90,106, 94, 68,235,239, 34, 51,243, 85, 46, 50, 49,173,170, 58,233,233, 47,242, 0,188,209,115, 79, 89, + 69,221,199, 47,114,254,135, 23, 57,255,171,236,246,138,148,215,169,192,235, 81, 85, 44,134, 57, 13,217,175, 23, 76,111,133,180, +180, 48, 5,210, 16,200,222, 67, 44, 44, 44, 44, 44, 44, 22, 27, 46,243, 26,195,179,176,176,176,176,176,176,176,176, 84,104,178, +138,126, 2,200,111,123, 94, 86,207, 1, 75, 70,230,174, 76,239,131,139,172,102,149, 53,121, 0, 4, 0,100, 0, 42,170,210,236, +142,130,241, 26,217,227,201,106,178,154,172, 38,171,201,106,190, 67,205,138,180, 47,226, 95,130,101,137,215, 43, 7,219,245,149, +213,100, 53, 89, 77, 86,147,213,100, 53, 89,205,127, 59,227, 75,153, 64, 8,249,231,180,209, 98, 97, 97, 97, 97, 97,249,187,176, +183,175, 43, 3, 10,219,245, 86,136,196,193,207, 25, 0,148,105, 97,201,236,209, 99, 41,133,162,227, 28,190,149, 54, 90, 60,154, + 43,248, 82, 34,183, 15,147, 90,219,199,255,199, 15, 46,229, 93, 67, 58,181,107, 59,175,223,125,106,138,251, 89,178,161,196,209, +123,151, 75,237,192, 24,169,147,247, 84,184, 54, 22, 87,165, 16, 82,167,154,142,178,234, 77,111,202,171, 5,124,240, 23,236,163, +208,223,223,191,165,191,191,127, 75, 0,194,183, 33, 40,113,242, 30,234, 94,167,197, 53,167, 90,141, 46, 75,157,235, 14,124,219, + 5,150,185,214,177,151, 85,111,242, 63,153, 91,131, 76,153,107,131, 28,153,123,147,171,114, 7,191, 90, 21,109, 87,189,239,183, +190, 75,246, 63,222, 95,189,239,183,190,165, 45,183,237,177, 81,190,232,192,139,229,246,125,190,147,177,207,149,202, 81,189,245, + 80, 27,215,246, 95,216, 91,186, 93, 53,239, 22, 79,106, 4,180, 77,113,171, 27,248,216,220,109,220,125, 90,134,120,250,183, 78, +118,247,110, 25,196, 30,121,243, 16, 57,214,108, 41,178,245, 56, 37,180,245, 56, 45,180,171,217,177,170,122,174,174,174, 98, 95, + 95,223, 30, 45, 90,180,152,208,185,115,231,207, 27, 53,106, 52,222,211,211,179, 27,222, 97,103, 44,137,147,247, 60, 13,143, 74, +211,240,168, 52,137,147,247,188,138,159,175, 62,203, 40,218,152, 64,209,198, 4,169,147,207,178,127,202,185, 18, 58,123,123, 74, +156,188,215,201, 93,252,239,137,157,234,246,177,116,123, 91, 91,219,110,142,142,142, 31,154, 38, 91, 91,219,110,236, 29, 80,105, + 10,163, 88, 37,254,174,212,133,206,225, 9, 37, 55,134,125, 50,185,222,202,197,115, 69, 27,118,254,142, 13,203,103, 61,213, 40, +178,252,255,137,123,238, 80,179,121, 16,135,230,184, 23,157,103,100,140,113,105,175,239, 53,125, 27,250, 62, 53,196, 99,191,158, + 61, 98,230,208,193, 93, 60,187,244,158, 78, 61,123,173, 58,102,190, 69, 67,195, 67,255,251,173,250,181, 43,151, 55,238,220,185, + 99,105,170,193,103, 29, 79,200,221,156, 19,251, 36,203,146, 50, 88, 57,214,170,201,149, 58, 92,107,211,111,178, 75,240,197, 95, +119, 27,181, 76, 87,101, 90,145,209,191, 43,143, 99,237,218,181,155,113, 56, 28,251,169, 83,167,242, 1, 96,253,250,245,117,140, + 70, 99,122, 68, 68,196,125, 84, 34,249,105,190,193,244, 25,241,253,234, 37,191,124,240, 65, 79, 36,164, 41,176,106,221,150, 14, +103, 79, 30, 26,164, 72,126,113,228,109,156, 19, 27, 27, 47, 43,240,229,143,166,207, 94,234,212,163, 67, 51, 78,158,218,128,179, +215, 30,180,253,117,203,210,123,128, 95,243,220,180,176, 50,115,138, 49,202,236,249,206, 50,210,131, 81,102, 3,192,208, 55,126, +236,101,250, 46,142, 98, 99, 15, 87, 33,247, 65, 58, 80,225,160,143, 54, 53, 90,159,227, 9,133,158, 52, 77,131,166, 0,154,166, +192,161,168,252,113, 66,117,170,232,248,240,235,221,255, 9,247,137,220,163,121, 18, 56, 92,123,154,250,179,124, 20, 93,240, 73, + 72, 78,210,139, 27,246,111,225,107,172,235,213,177, 9,104, 93, 71,241,243,213,215, 25, 82,110,187,207, 79, 81,132,222, 26,115, +125, 93,168, 89, 6, 64, 36,178, 61,113,226,132, 99,143, 30, 61,172,157, 2,250, 93, 53,103, 27, 1, 39,207,255,228,201,227,252, + 30, 61,186, 91,112,125,122,119, 5, 77,239,165, 0, 30,195,144,245, 28,134, 28,202, 75,127, 30, 1, 88, 54,250,148,216,201,103, + 44, 13, 98,246,115,134, 1, 21,164, 74,121,182,179,178, 7,151, 43,180,234,204,227,243, 63,175,233, 93,191,113,124,212,203, 32, + 69, 94,238, 58,131, 38,251,170,197, 66,122,195,151, 23,175, 7,127,192,229,241,168, 30,157, 3, 57, 26,224,114, 85, 78,186,179, +179,243,135,155, 54,109,170,213,178,101, 75, 0,128,193, 96,176, 58,124,248,176,203, 55,223,124, 35,125,254,252,121,101, 7, 78, +173,230,232,232,232, 33, 16, 8,170, 1,128, 86,171,141, 79, 77, 77,141, 1, 80,225,139,191,212,185,150, 3, 8,150, 94,191,118, +141, 11, 0,109,219,182, 91,230,209,102,138, 45,135, 47, 83,149,122, 56,180,185,210,172,136,203, 51,238,220,189, 77, 1, 64,139, +192,150,115, 37, 14,126,155,223,101,100, 75,228,228, 19, 72, 3, 51, 91,180,237,210,127,200,199, 35,232,128,186, 30,232,214,181, +211, 28, 21,112,194,162,107,134,203, 21,223,187,119,175, 54, 77,211, 28,131,193,160,110,209,162, 69, 76, 85,202,229,230,221,242, + 22, 5,186,186,206,160,253, 49,245, 85,208, 50,224,141,129, 99, 56,214,213, 27,127, 13, 14,119, 28,195, 48,177,185, 49, 65,173, +254,133, 17,173, 55,143,179,165, 74, 52, 87,240,249,208, 49,159,213,155,241,197, 87,162,233, 27, 46,225,212,150,185,105,255, 84, +147, 5, 0, 28,154,227,126,238,252, 57, 39,137,128, 3, 0,200, 83, 27,240, 65,143, 30, 21,255, 34,212,104,126,133,166, 40, 31, +211,128, 54, 70,131, 78,196,229, 9,212, 84,190, 65, 2, 5,192,193,173,198, 37,103,195, 13,201,208,193, 93, 60,247, 30,184, 16, + 23, 19,151,110,241, 67,141,226,240,209,162, 93, 55,116,233,218,221,250,222,221, 91, 75,119,108,251, 97,158, 65,167,255,129,209, + 51,235,212, 25, 47, 19, 42,124,152,187,212,109, 34,144, 57,156,237, 63,225, 27,123, 53,109,135,133,203,191,119,184,118,102,223, +213,248,216,134, 76,116,116,172,154, 80,212,211,204,140,196,207, 21, 73, 17,207,204, 61,100, 50,153,172,150, 76, 38,107,216,160, + 65, 3,209,172, 89,179,120, 29, 58,116,248,211,178,143, 31,207,191,114,229,138,235,154, 53,107,122, 62,124,248, 80,157,151,151, + 23,154,151,151,247, 10, 22, 52,180,119,113,113,156, 50,224,163, 62,232,212,127, 50,140, 12,133,241,159,205,192,185, 51, 71, 39, + 2,120, 43, 70, 75, 47,177,250,102,220,132, 89,142, 45,154, 53,226, 44,221,247, 12, 98, 1, 23,221,155,250, 80, 99,166,206,183, +217,185,113,233, 79, 72, 67,251,210, 34, 89,140, 50,123,126, 61, 7,237,199,125, 91,214,196,241,253,218,143,209,121, 54,104,137, +245,178,216,227, 95,133, 3, 64,173, 30, 83,229, 66, 99,234, 38, 55, 27,142,147,208,152,186,169, 86,143,169, 23, 95,157,221,148, + 91, 94, 89,120, 66,161,231,254,125,251,234,218,202,249,224,210, 20, 56, 28, 10, 92, 14, 13,181,214,136, 65,131, 63,126,107,151, +185,216,169,110, 79, 26, 24,147,255,131,141, 93,170,148, 23,167, 45, 57, 39, 20,135,111,127,242,248,111, 92, 39,107, 33, 56, 28, + 10, 28, 26,224,208, 20,162,146, 85, 24, 59,118,140,117, 85, 13,251, 7,173,157,154,125, 57,196,167,123,139,122,118, 13, 14,222, +166,172, 91,124, 48,196, 62, 77, 45, 25,125,224,216,229,143, 73,219, 25,119, 9, 97, 86,199,221,248,254,124,121, 34, 26,141, 38, +185,123,143, 15,172, 40,174, 84,114,241,247,221,237,184, 52, 5,189,145,192, 96, 36, 48, 22,140,141, 74, 21,188,193,208, 52, 5, +194, 16,140, 27, 55, 22,221,123,124,160,100, 12, 76,156,249, 15, 57,122,239,217,139, 55, 29, 53,122, 6,107, 54,237, 92,170,200, + 78, 93,250, 58,220, 62, 42, 47, 59,109,134, 42,229,133,217,227, 96,208, 32, 77, 99, 95, 61,158,176,239,228, 29,212,243,247,131, +145,201, 47,167,143,187, 20,251, 78,221,129,175,143,111,126,185, 25, 2,239,234, 50, 52,107,218, 12, 0, 42,101,180,184, 66,249, +194,246,189, 70, 44,233, 61,232, 19, 56, 57, 58,130, 38,250,222, 23, 79,237,235,189,107,235,234, 47, 13,234,156, 53, 22,137, 17, + 99,225,239, 2, 97,152, 42, 71,157,220,220,220, 28,155, 53,251, 51, 29,163,193, 96,128,151,151, 23,226,227,227,125, 42,243,158, +230,234,234,218,107,209,162, 69, 78, 61,123,246,228,185,184,184, 0, 0,146,146,146,170,157, 61,123,182,241,162, 69,139, 82, 18, + 19, 19, 79,161,156,140, 62, 70, 61,205,167,185,224,136, 68,146,252,125, 4, 69,207,154, 50,178,129,179,171,155,166,180,245, 83, + 83,147, 4,179, 39, 95,166,184, 92,126,193,250,160, 9, 97,168,114,162, 68, 93,120, 60, 94,169, 53, 20, 58,142, 85, 11,194,179, +254,148,230,208,249, 23,171, 65,159,154, 25, 19,226,103, 65, 36, 46,128, 39,224,255, 48, 96,200, 39,173, 6,246,239, 7, 87, 71, +107, 92,188,241, 16, 19,167,204,212, 27,116,250,117,149,122,120,112, 56,220,148,148,148, 40, 91, 91, 91,151,170,255,222, 82, 53, + 47,156, 59,227,116,241,143, 75,115,215,110,216, 56, 73,167, 53,232, 25, 66, 10,199, 49, 22,139,133,188,174,189, 7, 91, 57,213, +110, 33,218,184,232, 83,222,191, 48,162,181,227,173, 24, 45,129, 88, 62,120,193,236,169,162,111,126,189,131, 83, 91, 38,166, 41, +115,210, 28, 11,223, 20,172,108, 66, 20, 57, 89,141, 43, 83, 66,153,163,119, 75,138,195,157, 64,113, 56, 82,138,166, 4,140,145, +137, 53,104,181,203, 84,233, 47, 18,171,186,247, 12, 67,240,191, 91, 41,150, 25, 32,130, 58,123, 15,254,230,244,127,246,206, 58, + 60,138,227,255,227,239, 61,215,184, 39, 36, 1, 66, 66,176, 0,193,221, 61, 56,197,165, 56,133,210, 66,105,129, 66,177, 2,165, + 80,188,180, 64, 41, 80,164,184, 6,119, 43,154, 64, 32, 64, 18,136,251,197, 46,231,126,243,251, 35,210, 64,163,208,254,190,149, +121, 61,207, 61,201,222,237,189,111,118,119,118,247,189,159,249,204,140,155,189, 0, 58,163, 5,195, 70,140,198,158, 61,123,108, + 92,236,248,208, 25,204, 88,179,118,173, 82,149,112,198, 53, 33, 57, 47,181,107,223,217, 23, 99,227,101,207,146,210,117,135,170, + 90, 54,189,209, 2,133,198, 12,141,158,133,128,250,205,176,102, 93, 29, 97, 82, 98,220,236,221,187,118,204,124,254,156,189,199, +202,102, 45,213,165,191, 72, 46,245,164,115,111,208,195,214,193,233,215,129, 83, 86,216,199,200, 56, 32, 48,226,181,173, 16, 67, +199,205,180,245,115, 23, 65, 34,100,219,199, 37,166,122,204,249,252,243,219,177, 22,210, 92,145, 21, 27, 87, 81,121,170, 87,175, + 62, 40, 36, 36, 68,252,217,103,159,113,189,189,189,177,107,255, 97,223,118, 61, 62,232,155,150,158,233, 77, 8,129,155,171,107, +242,164, 15, 63, 56,125,246,236,217,196,228,228,100,238,234,213,171, 91, 28, 63,126,188, 94, 70, 70, 70,165,159, 76, 45,132, 64, +167,183,192, 82,120,131,204,202,215, 87,217,159,122,121,121, 9, 82, 83, 83,245, 37,162, 12,204,239,129, 66,166, 71,151, 14, 45, + 56,219,206,197, 67,165,179, 64, 34,228, 34, 62, 83,131,166,141,131,152,159, 44,230, 70,165, 9, 78, 24,218,103,161,155,148,244, +236,215,170, 38, 92, 29,196,216,249,253, 10,156,186, 27,215, 51, 83,197, 96, 51, 97, 79,241, 16,112,186, 73,172,233,155, 59, 54, +173,229,222,185,137, 47, 30, 54,173,229,126, 51, 44, 42, 90,244,193,218,143, 83, 85,220,203,121,231,103, 42, 75,191,240,176,224, +104,195,195,207, 23, 18, 33, 22,114, 32, 17,114, 32, 17, 20,252,101,177,152,247,123,170,245,168,235,205,182, 90, 38,176,217,156, + 9,195,135,126,224, 57,114,248, 7, 4,108, 22, 14, 31, 61,221,127,223,190,189,233, 38,163, 97,135,133,197,254,185,172,250,243, +198, 14,101, 1,174,118,124,124,190,227, 25,108, 69, 92,216,136,185,176, 21,115,209,185,161, 11,216,239, 62, 8,140,195,212,254, +126,189,167, 14,172,222, 41,208, 71, 26,240,228,117,254,243, 9,203, 31,109,184, 46,239,244,233,247,235,235, 57,169,228, 6,206, +162, 57,147, 56, 41,105,105,157, 14,159,190,209,217, 98, 24, 31,101, 54,170,191,204,138, 56, 92,106, 84, 56, 37,234,110,176, 87, +203, 33, 66,163,202,244,244, 73, 84, 74,173, 60,189, 0,145, 9, 10, 72,132, 28, 72,139,246,173,144, 3,137,144, 11,169,144,131, +180,148,120,228,170,217,183, 83,157, 88,157,112,227,174,185, 42, 5,215, 25, 45,120, 28,167, 66,245,192,198,240,240,240,132,161, +247,168,234,247,175, 30, 61,249,224,198,137,111, 52, 25, 47,191,172,172,206,254,208,123,152, 55,107, 74, 24, 3,132, 23,222,164, +131, 23,173,218,210,100,217,188,233,111,188, 55,103,233,166, 38,239, 30,201,178, 89,216,121,224, 71, 75,219,117, 27, 8,101,110, + 38,126,187,120, 8, 61, 66, 6, 99,212,248, 79, 96,111,239,188,102,221,242, 47,158,152,245,138,171,127,184,230,186,215,105, 27, +212,160,238, 62, 47, 79, 79,111,171,181, 96,150, 15, 66, 0,149, 50, 31, 95,124, 58, 9, 86, 66,208, 40,184,121,103, 97,187,110, +132, 20,206, 6,146,157,147,173,142,122,249,188,171, 78, 22,117,191,210,251, 82,167, 51,101,101,101,225,241,227,199,136,142,142, + 70,100,100, 36,114,114,114, 96,103,103,167, 82,171,213, 85, 10,222, 55,108,216,112,228,213,171, 87,133, 14, 14, 14,197,111, 26, + 12, 6,216,216,216, 96,228,200,145,220,238,221,187,123,245,233,211,103,236,179,103,207,246, 3, 80,148, 90,158,220, 87,105, 54, +110,129, 91, 59,116,236, 48, 13, 0, 68,182, 30,113,155,119,157,142, 44,247,129,214,206,211,183,117,235, 54,181, 64, 8, 24,144, +141,154,156,232,140,114,162, 68,146,123,247,238,249,177,217,108,206,239,247, 32, 43,126,216,121,176,206,165, 91, 79, 7,173, 90, +243,157,208, 86, 34, 64, 86,190, 1, 19, 71, 13,172,244, 61, 88,228, 22,216,187,117,235,246, 39,151, 45,253,138, 35,149, 72,112, +241,126, 44, 62,254,244,115, 93,122,194,179,239,136,149,187, 69,147, 21, 45,123,207, 91,229,159,210, 61, 46,160,154, 20, 54,253, +122, 8,167,142,233, 39, 52,152, 44,144,171, 77,208, 27, 45,176, 88, 9,242,213, 38, 60, 79, 82,194,217,182,234, 83,185, 17, 66, +154, 1,112, 1,144,197, 48,204,195,146,203, 69, 15,116, 69,222,248,173,229,236,194,251,131, 19, 0, 3, 10,122,234, 23, 87,159, +194,229,178,222, 47,250,254,115, 0,117, 11, 53, 45, 0, 30, 48, 12,147, 87,134,217,250, 67,148,139, 19, 26, 26, 74, 66, 66, 66, +138,175,248,111, 47,191,141,128,199,245,148,216,185,128,144, 23, 40, 57,129,177,171,187, 87,206,119,235, 54, 56,206,248,104, 74, +162, 66,158,235, 91,248,246,229,202,220, 44, 56, 12,123, 93,135, 54, 45,187, 79,251,232, 35, 4,250, 85,227, 89, 44, 22,242, 44, + 58,206,180,251,231,157,227,110,222,229,111, 80,164, 60, 91, 88, 34, 4, 89,165,110,159, 22,171, 37,229,237, 8,150,197,106,121, +251,233,246, 15,154, 12, 3,216, 75,249,216,122, 46, 30,132, 0, 12, 8,236, 36, 92, 28,184,158,130,184,176, 99,138,144, 70, 10, +245,200, 85, 75, 58,119,234, 61,243,234,243,215,186, 67, 50,153,238, 2,128,140,242, 52, 75,191,160, 91,161, 55, 90, 96, 50,155, +113,228,244,105,244,236,220, 2,173, 91,183, 64,251,118,173, 57,143,194, 34,198,127, 52,109,146, 55,126,239,221, 81,172, 41,116, +243,111, 38,181,115, 62, 52,104,218,106,155,167, 41,102,112,216, 64, 77,119, 17, 28,109,120, 48,152, 25, 36,100, 25, 11,207, 28, +123,124, 60,103,169,227,188,217,211,206, 42,178,248, 13,128, 23,198,242,182, 93,163,209,240, 71,143, 30,205, 53,153, 76,198,145, + 19, 63,233,158,145,145,213,255,135,141,223, 10, 92, 93,221,160,209,153, 17, 22,249,170,238,178,101, 75,107,158, 62,127,253,196, +146,207,167,158,236,217,179,167,221,193,131, 7,173, 21,237,207, 55,158, 16, 51,179,191,223,185,239,200,158,245,223,173, 68, 84, + 98, 30,126,222,182, 5,196, 98,222, 90,193,174, 42,169, 73, 70,143, 30, 45, 58,113,226, 68,181,148,148, 20,133, 70,163,201,122, + 35, 30,193, 98, 56,153,185, 26, 56,219,240,193,227,176,224,230, 32,132,171,157, 0, 92, 54,192, 98, 24, 75,105,154, 63, 31, 58, +179,220,170,201,199,169, 95, 13,195,119,126,191, 2,227,103, 44,192,179,108,254,121,150,216,110,249,244,225,131,230,185,136, 44, + 61, 61,237, 89,174,157,155, 84,135, 68,200,195,252,153,163,209, 60, 44,193, 53, 85,110, 93,144,165,101, 55, 94,122,190,120,178, +238,203,111, 6, 71, 10, 34, 88, 54, 98, 46,206,239, 91, 35, 83,231,103,229, 23, 53,201, 25,244,186,196, 74, 86,227,203,165, 60, +217,206,107, 28, 84,127,197,180,201, 19, 88,109, 90, 53, 39, 44, 22, 23,217, 74, 3, 67, 8,240,233,199, 83, 49,125,234, 36,247, +228, 52,217,162, 45, 91,182, 46,188,122,137,124,173,206,122,185,164, 60, 77, 22, 83, 16, 5,146, 10, 57,144,138, 10,140,139, 84, +200,129,206, 96, 1,195,128,109,239, 19,156,207, 20, 68,114,211,114, 19,203,124, 2,127, 67,211,209,167,254,149, 75,113, 54,117, +242, 14,229,221,141, 79,139, 92, 30, 22,145,249, 0, 64,174,119,123,251,177, 70, 51,129, 74,103, 70,124,166, 6,102, 35, 97,198, +247,242, 69,141, 33, 76,224,202,157,225,123,206, 69,192,182,196, 69,255, 13,205,212,123, 71,116, 78, 13, 6, 14, 91,191,105,219, +195,239, 86, 44, 96,103,231, 27, 96, 37, 4, 66, 62, 27, 34, 62,167,240,197,134, 86,157,143, 45, 63,254,148, 97, 6, 51, 8, 55, +110,152,171, 82, 63, 97, 37,163, 6,246,110,127,128, 1,248, 12,139,151,226,233, 91,221,183, 75,223,113,194, 46,253, 70,195, 98, + 54,204, 11,187, 69,174,105,100, 81, 87, 42,163,217,160, 94, 93, 48, 64,184, 90, 22, 61, 21, 0, 36,174,181,183,214, 9,172,211, +228,237,247,252,253, 3,155, 84,230,184, 23, 71, 74,133, 54, 51, 28, 28, 93, 22, 4,214,111,236,154,153,167,103,108,156,170, 33, + 62,230, 49,126,253,113,209, 94,171,206,176,244,202,153, 67, 43, 54,252,124,124,104,151,158, 3,177,243,135,111,231,231,164, 23, + 27,173,203, 37,162, 85,163,118,239,216,238,205,229, 11, 96, 50, 91, 97,178,144,130,191,102, 11,114,115,243, 96, 50, 91, 33, 20, +219,192,108,101, 96,178, 88, 97, 50, 91,161, 55,152, 37, 83, 71,247,249, 72, 7,220, 47,173,156, 94,117, 58, 92,224, 9, 4,190, + 4, 5,115,215, 18, 66, 16,159,161,101,121,120,120,236, 7, 0,129, 64, 0,129, 64, 0,171,213,138,176,168,172, 25,206,129,181, +167,161,208,224, 89,140,134, 68,121,194,157, 30,101,109,187,187,187,123,223,183, 77,150, 78,167,131, 74,165,194,173,187, 15,237, +118,236, 57,210, 51, 62, 49,197,207, 74,236,244, 54,174,126, 61,148,178,216,190,101,237, 79,101,102,212, 71,182, 45, 39,177, 62, +155, 62,214,127,211,238,208, 7,175, 46, 44, 47, 55, 79,171, 70,151,185,134,207,166, 12,110,186,106,227,207, 49,121,119,182,206, +170,232, 24,113, 56, 28,110, 86, 86, 86,241,249,189,249,167, 95,155,134, 71,165, 14,216,176,126,131, 48, 44, 86,137,167,241,105, + 24,219,213,167,224, 9,167, 18,199, 93,226,230,231, 92,179, 86,173,253, 91, 54,174,226,196,164,233,240,253,177, 7,184,122,114, +235,173, 12,217,253,158,200, 76,215,190,203, 53,228, 79, 48, 90,101,106, 94,139,200,134, 74,103,134,222, 96,134,201, 74,160,208, +152, 32,147, 27,160,208, 24,161,210,154, 49,182,155, 79,169,223,171,192,143,184, 48, 12, 19, 74, 8, 9, 33,132,116, 5,192, 47, + 90, 46,184,103, 51,161,133,134,236,141,229,121,243,230,125,249,205, 55,223, 68, 22,173, 91,244,126,209,186,229,189, 95,226,251, + 78,243,231,207,111,176,106,213,170,149,173, 90,181, 58,240,219,111,191,197, 1,200,171,108,243, 33,167,228,198,132,134,134, 86, +180,163,253,140, 38,163,192, 86,196, 69,205, 26, 62,248,240,203,157,206,191,172,154, 32, 19,242, 57,236,115,231,206, 57,230, 24, +164, 96,177,216,149,126, 68,145,186, 4,180,230,241,248,103,214,174, 93,139,225,125,219,137,146,178, 77,170,136, 36,109,166,218, + 0,179,171, 75,109,254,242,149,171,164,171, 86,175,153, 30,122,202, 42, 87,101, 62, 95, 83,122, 19, 95,211, 71,108,166, 68, 14, + 22,195,128, 88, 45, 41,121, 9, 15,155, 2,192,251,228, 98,169,116, 38,176, 11,115,107, 24, 6,208,232,204, 96,179, 25,153, 60, +234,208,243,145, 95, 47,239,188,247,192,165, 52,194,178, 87,170,213,241, 98, 20,204, 57, 88,101,116, 6, 11,244, 38, 11, 34,159, +132,161,125,203,122,104,221,180, 14, 52, 58, 11, 52,122, 51,106,212, 10, 4, 0,231, 82, 15, 28,155, 21, 71, 44, 38, 29, 33, 22, +155,144,102, 46,112,181,231,195,195, 65, 0, 1,159, 3,147, 25,208, 26,172,208, 25, 44, 72,144,105,161,212,138, 16,212,225,131, +154, 78, 30,143,244, 25, 9,162, 19,185, 73,143, 6,149,107, 78, 45, 22,236,222,127,196, 63, 45, 45,179,255,217, 19,251, 4, 89, + 10, 19, 34, 18,212,144,201,245, 0,219, 5,139, 87,126, 47,152, 59,107,242,128,221,191, 30, 77,236,210,174, 69, 98, 85,183, 89, +147, 21,181,247,208,225, 35, 91, 67, 66, 6,136, 34,239,159, 69,204,227, 43, 43,212,178, 42,229,103,177, 26, 53,106,100,158, 60, +121,178,114,229,202,149,222,167, 78,157,170,145,149,149,245, 24,128,201,222,222,190, 78,109,127,223, 39, 23,207,159,243,234, 51, +224, 3,110, 74,182, 22,118, 98, 30,124, 93,197,184,123,235,130,137,207,231,150,154,111, 82,216, 60, 56, 2, 93,190,192,169,187, +113, 61, 35,115,132,215, 39, 77, 24,155,120,241,102, 84,206,230, 61, 23,191,245,146,154, 30, 11,173, 89,155, 31, 53,173,229, 62, +239,227,209,248,102,211, 94,220, 8,139,146,169, 89, 30, 43,210,245,230, 75,101,135,210, 1, 14,155,129,141,136, 11,181, 34, 43, +255,117,248,249,218,127, 82,152,122,236,197, 19,123, 89,185, 74, 19,146,179,117, 76, 90,174, 18, 22, 43,129,189,152, 7,179,149, + 64,158,155,205,236,219,187, 7, 15, 31,222,101,129,205,154, 8, 96, 73,185, 59,148, 41,104, 42,148, 10,185, 5, 17, 33, 81,193, + 95,147,197,138, 64,255, 90,216,190,121,157,173,179,171, 27,218,182,175,124,110,180,141,147,111,163, 3,187, 54,227,250,111,225, + 29,111,108,248,190,153,212,211,101, 19,195, 88,190, 3,129, 78,111,180, 32, 95,158, 7,190, 33, 25,205,189,178,224, 40,182, 32, + 65,225,129,103, 25, 49,210,138, 46,248, 57,207,142, 63,102,200,128,133, 71, 78, 95,253,166, 71,183,142,120,150,160,128,136,207, +129,144,207,134,144,207, 6,151,177, 96,221,143, 91, 77,121,249,202,144,156,200,147,217,239, 80, 63, 47, 23, 62,253, 22,152, 59, +139,202,101,239,166,133,191, 76,250, 98,117,143,158, 3,199, 49,207, 30, 94,251, 82, 3, 92,169,220,131, 30,169,212,123, 86,107, +229,239,113, 66, 27,231,141, 51,231, 46,159,217, 61,228, 3,176,217, 28,152, 76, 38, 28, 61,184, 23,187,190, 95,252,210,160,202, + 25, 7,192,106,144,177, 39, 31,218,251,227, 7, 95, 44, 90,199, 52,104,212,188,197,181,244, 63, 78, 71,107,101, 51,219,198, 76, +152, 50,204,205,205,205,230,247,136, 22, 65,237,192,122,232,221,111, 48, 46,156, 60,142,231,145, 17,176,146, 2,195,100,181, 18, +200,243,114, 50,204, 38,195,238, 50, 91, 60,132, 66,223,157,187,246, 4,176, 88, 12,140, 38, 43, 12,102, 43,102,125,244,161, 97, +234,167, 95,182,237,221,189, 67, 36,159, 13, 69, 66, 82,186,253,221,240, 23, 65, 86,174,212,123,194,156,117, 60,157,222,130,124, +141, 9,103,127, 46,219,235, 8, 29,124, 90, 85,111,210,123,194,212,175,182, 11, 4,108,150,177,126,109,239,184, 14, 45,235, 39, +251,120, 58, 43,151,173,250,190,249,237,251,225,189,135,142,156, 32, 28, 91,167, 9,227,233, 36,178,249,112,228,192,134, 22,179, +113,140, 38, 55,185,204,241, 5,185, 98, 7,185, 79, 13,127,205,239, 17,163,218,199, 24,130,154,111, 56, 15, 6,113,218,204,232, + 65, 0,224,225,233,163,227, 10,108,149, 85,136,192, 16, 0,216,244,211,175, 77,159, 68,167, 77, 90,191,126,131, 56, 44, 86,137, +199,177,249, 16,240, 88, 48,154,172, 96, 42, 25,212,182, 18,246,148, 5,243,231,217,230,169, 45,184, 30,145,133,200, 71,215,136, + 65,165, 27, 41, 54,219, 14,130,171,205, 24, 0,181, 0,188,102, 24,178, 77,157,233,126, 18,184, 97,174,106,189,183, 90, 11,158, +151,109, 93,252,106, 90, 56,130,222, 92,190,164, 21,195,144,250, 12,129, 3, 64, 82,115, 11,239,169,149,117,106,234,204,104,172, + 94,185, 8, 27,119, 28, 71, 90,142, 14,118,150,100,156,252,121, 57, 62,251,102, 63,180,250,178,179, 26, 42,242, 35,165, 25,163, +183, 13, 87,209,255, 69,235,125,243,205, 55, 33,111, 29,155,144, 50,142,217, 31,214, 43,250,254,170, 85,171, 86,150,248, 92, 83, + 89,147, 85,108,180,138, 54,170, 2,179, 85,219,197,195,247,183,147, 39,142, 57,228,169,140, 16,242,216,240,169,225,143, 37,155, + 79,186,244,106,234,140,108,163, 29,126,221,254, 93,174, 78,163, 60, 88,169,139,133,107, 96, 11,145, 84,114,246,216,209,227,240, +243,113,229,237,187,149, 27, 31, 30,167, 45, 14,245, 42,178, 18,249, 53,108, 53,156, 65, 3, 7,138,175, 92,189,246,169, 10, 40, +213,104,177, 25,118,181,159,246, 28,117,181, 17,113,193, 48,128, 82,107,198,164, 49,131,223,255, 54, 70,172,236, 9,227,198,130, + 41, 52, 89,138,156, 12,124, 57,247, 35,157,196, 20,243, 60, 41, 33, 41,181,107,223,207,174, 40, 84,140,110,216,232,143, 30, 62, +143,254, 38, 79,163,121,183, 73,126,244, 6, 11,244, 70, 43, 98, 99, 95, 99,214,216,110,224,178, 89, 96,179,173, 5,201,210,230, +178, 43,163, 42, 45, 58, 23,238,188, 33,123,215,206,248,201,211,205,213, 73, 42, 17, 17,169, 88,192,212,175, 19,192,107,217,178, + 53,191, 70, 96, 67,222,173, 23, 90, 36,101,105, 17,151,150, 15,129, 91, 99,206,240,206,189,176,119,195,156,142,185, 73,143, 88, +248, 99,146,226, 27, 92,186,126,175,239,142, 31,215, 11, 50,229, 70,188, 76, 82, 33, 35, 79,135,244, 60, 61, 50,114,117,144,138, +184,104,223,111,178,224,204,201,109,125,187,180,107,177,233, 93,182, 59, 46, 46,254, 76, 66,106,250, 7, 13,131,155, 99,239, 47, +187,218,217,219,215,176,149,203,227, 21,149, 61, 58,203,151, 47,231,175, 90,181,138,179,121,243,102, 69,203,150, 45,221,231,207, +159,223, 67, 38,147, 61,168, 94,189,122,224,133, 99,187,175, 54,110,223,191, 25,172, 70,151,118, 29, 58,241, 4, 86, 14, 46,134, +134, 26, 15, 29,220,151,163,213, 42,167,150,107, 56,196,118,203, 51, 85, 12, 92,188,188, 34,165,124, 75, 55, 14, 75, 30,157,119, +126,230,158, 60,224,152, 95,207,143, 47, 95,123, 20, 21,221, 52, 44,193,245,106,216, 43, 89,174,198, 88, 59,246,252,103,229, 94, +120,217, 12, 3, 46,155, 5, 27, 17, 7,172,194,171,170,212,179,225, 43, 48,140, 75, 81,228,148, 1, 83,248, 23, 96, 24,164,229, + 37, 61,174, 68,206, 6, 67,172, 4,136, 74, 81, 67,165, 43, 8,205, 87,115, 22, 35, 43, 51, 5, 63,108,218,141,240, 71, 15,209, +189, 87, 63,108,249,105, 31, 38,141,249, 64, 87,209,211, 15,139, 85, 24,209, 42, 17,205,146,138, 56, 0, 24,200,213, 38, 28,189, +157,140, 90, 53, 89,149,190, 49, 0,128,141, 84,140,124,165, 22, 44,158, 13, 94,135,157, 21,159,187,118,127,254,194,175,215,127, +158,151, 30,145,244,234,233, 45, 4, 58,231,163,166,151, 17,145, 25,182,120,148, 83, 3,129,254,126, 96,241, 30, 86, 74, 59, 59, + 50,104,245, 73,214,209,144,166,141,235,181,242,117,181,135,214, 96, 41,140,106,177,177,107,231, 30, 36,196,167, 76,200,121,126, + 50,252,207,112,180,106, 89, 92,150,192,213,127,250,211,251, 87,226, 6,142,156, 14, 15, 47,159, 70,242,164,199,149, 78, 91,168, +204,123,150, 74, 26, 45,158,216,126,254,172, 5,223,206,236,222,103, 8,238,221,186,130,199,145,175,209,162, 69, 51,244, 26, 48, + 28, 74, 69,110,157,195,123, 54,116, 51,107,148, 23, 56, 2,243,204,230,173, 59, 51, 86,139, 5, 49, 47,159,189, 46, 77, 75,155, + 30,245,248,110,122,148,237, 27,205, 83,206,117, 26, 73,237, 28, 31,235,141, 22,164,166,166,224,206,111,215,131,181,233, 81,143, +171,178,191, 4, 60, 54, 46,134,203, 96, 52, 89, 97, 52, 91,209,190, 67, 55, 3,143,165,111,183, 98,253,206,150,233,105,233, 44, +137,173,179,213,209,171, 46,207, 67, 96,212, 63,137,205,231, 25, 77, 86,248,121, 74,202,213,116,241,244, 95, 57,103,206,172,186, +108,158, 8, 74,181,222,144,158,150,234,190,253,215,107,170, 23, 47,159,122, 85,115,181,179,253,118,195, 54,158, 66,199, 64,150, +175, 71,174, 82,193,140,156,242,133,231,142,239,191, 25, 85,158,209, 42, 37, 93,164,230,153,139,183,234, 56,216,240, 24,149,206, +108,205, 81, 24, 45, 35, 7,188, 95,167,203, 66,147, 53,121,253,186, 13,226,240, 88, 37,158,196,230, 67,200, 99,131,207, 99,193, + 96,178,162,146,167, 19,203,221,213,125,106,235,166, 65,184,240, 56, 27,108, 54, 11, 90,101,158,134,131,156,232,166, 29,187,139, +155, 52,111,137, 78, 29, 59,224, 85,116,148, 79,232,169,163, 93,238,222,185,145, 97, 54,214,158,161,206,138, 62, 94,165,192,130, + 70,195, 54,241,221, 63,244,240,170,222,102,208,240, 15,237,124,125,188, 24, 87,103, 39,152, 9, 7,147,199, 12,174,244,153, 95, + 96,204,129, 85, 95,207,135, 94,111,128,139, 61, 31,132, 0, 59, 55, 45,129,193, 96,128,167,147, 0,249,234,178,103,147,171,200, +143,148, 21,133,170, 82,238, 73, 9, 51, 86,222,251, 12,195,132,206,155, 55,239, 75, 0,100,222,188,121, 95, 22, 45,127,243,205, + 55, 90, 0,105, 21, 52, 29,110,127,195,104, 21,109, 92,217,103, 55, 47,208,217,201,227,238,197, 11,231,237, 78, 60,177,226,222, +241, 71,232,211,194, 3, 60, 14, 11, 98, 59, 79, 60,137,207,199,153, 99, 63,202, 79, 30,216,150,170,215,235,215, 84,220,214,236, +223, 84, 42,150, 92,248,101,239, 65,171,179,147, 19,235,135,139, 89,177, 57, 74,115,113,147, 86,244,253, 83,214, 71, 23,182,123, + 16, 48,231,133, 66,161,191,193, 96,112,168,232,192,238,188,152, 88,152,196,203,252, 25,215, 86, 48,108,182,101,239,190,189,112, +182,229, 67,111,178, 98,222,231,159,104,199,118,151,202, 71, 14, 29,222,185, 83,239,153, 87,185,146,128, 43,173,131, 3, 72,227, +198,141,229,108, 54,187, 82,169, 20,174,174,174, 75, 88, 44,214, 8, 62,159,111, 99, 48, 24,148, 6,171, 78,172,214, 25,160, 51, + 2, 26,141, 14, 92, 94,129, 89,228,178, 25,104,117, 6,104,180,134,242, 79,140,140,103,183, 1,212, 86,148,136, 41, 93,121,225, +199,223,127,248,228, 39, 67,134, 14, 91,232,213,104,128, 52, 62, 61, 31, 60,198,136,102,117, 61,112,237,252,113,146,146, 16, 61, +171, 34,147, 5, 0,178,172, 92,111, 23, 23, 55,132,199,169,144,154,163, 69, 70,161,201, 74,207,211, 67,169, 85,162,161,175, 39, +228,249,249,222,239,188,127,129,227, 23, 46, 92,248,160,119,255, 97,152,249,249,210,182, 63,255,248, 93,132,132,207, 29,175,206, +140,185, 94, 25,163,245,236,217,179,220,185,115,231,214,250,233,167,159, 88,163, 70,141,210, 6, 5, 5, 9, 71,143, 30,221,118, +207,158, 61, 66,177, 88,168,125,114,235,212,194,137, 31,207,235,191,125,227,242, 70,121,121,121,140,217,100, 58,103,204,203,155, +167,170,192,204, 37,159,250,242,229,226, 88,227,184,110,237, 92, 78, 57,138, 89,245, 5,196, 48, 28,117,151, 28,196,139, 37,198, +216,243,155,149,162, 15,214,126,156, 38,183, 46,208,177, 92, 87, 84,100,178, 0,128,197,102, 96, 48, 91, 96, 35,226,130,197, 98, + 21,153,120,143, 93, 7,207,137, 93,236,248,224,178, 89,224,176, 25, 40, 52, 38,100, 43,140,152,254, 97,255, 74, 63, 9,152, 45, + 4, 90,131, 25,154,194,167, 67,165, 34, 27,243, 63,159,141, 94,125, 7, 98,226,212,217,200,211, 2,143,226,148, 48,154, 76, 21, +158, 20, 44,134, 5,141,222,140,241,221,125,145,171, 50, 66,173, 53,195, 96,182, 66,204,231,128,203, 97, 65, 34,228,192, 86,204, + 5, 8,225, 21, 93, 76,184, 92,174,206,100, 50,237, 45,231,137, 30, 53,188,221,160, 53,177,208,124,216,119,232,218,170, 54, 34, +111, 31,229,220,184,247,180,230,167,159, 47,192, 39,147,250,226,200,203, 90,112,116,245,133, 84, 34,130,137,176, 0,144, 74, 38, +236, 45,177,178,140, 3, 71,108,253,105,103,212,178, 69,243,132,114, 53, 3, 1,143,141,171, 87, 46,227,238,253, 71, 27,179,159, +159,220,139, 63, 17, 46, 97,185,217,218,218, 66,200,103,195, 96,212, 27, 42,159,186, 64, 64,128, 96,137,107,237,173,133, 79,252, +193, 22, 43, 74,121,175, 98,163,197, 17,218,206,155,241,249,178,149,221,251, 12,193,197,208, 35, 56,124,228,160,165, 85,207, 9, +236,125,187,126, 68,219,174,253,208,182,251, 48,156, 59,190,103,182,218,202,212,155, 60,115,225,215,237, 59,247,198,197, 51, 71, +144,153,145,178,182,178,229,101,115,153,153,157,187,245,133,206, 96, 65,187, 46, 33, 56,127,250,248,199, 40,236,100, 81,249,155, +216, 91,215,103,176,204,179,103,205,228,202,228, 6,110,150,194,128,148, 44, 13,226, 51, 53, 56,121,224,103, 82,249,235,133,161, + 89,251,134,213,184,147, 87, 95, 77,246,174,230,161,231,234,181,162,232,215,177,117, 38,126, 56,150, 91,211,191, 14, 75,150,175, + 71, 86,190, 30,217,249,122,168,116,102,248, 87, 11, 96,153,204, 76,171,170, 30,103,103, 59, 62,119,203,233, 56,216, 74,184,104, + 93,231,221, 59,218, 90,173,214,223, 77,214,250, 2,147, 21, 17,151, 15, 1,143, 13, 1,143, 5, 1,143, 13,179,133, 84,234,193, + 69,228, 90,187,247,244, 25, 31,121, 26,204, 64, 78,190, 1, 28, 54, 3, 87,103, 7, 73,179, 70, 35,176,243,187,143, 1, 0,147, +230,254,128,137,227, 71,163,110,253, 32,200,243,242,220, 71, 12,233,189, 30,192,241,202,150,245,236,197,235, 62, 23,111,134,207, +157, 62,103,177,116,104,223, 78,236,199,177,249, 72,207,213,227,117,180,178, 74,145, 55, 0, 48, 91,172, 32, 32,216,125, 48, 20, + 34, 62, 7, 89,249, 70, 16, 66,176,124,243, 33,216,136,184, 72,207, 43,104,238, 47,143,114,253, 72, 57, 17,169, 42, 68, 27, 67, + 80,144,203,229, 82,217,136,214, 55,223,124, 19,249,205, 55,223,148, 26, 33, 43, 97,178,222,109, 82,105, 30, 79, 82,199,214,201, +249,222,197,243,103,109,142, 63,177,224,218,147, 28, 12,105, 87, 13,170,220, 36,172,249,124,104, 46, 3, 98, 96,177,217,114,189, + 86,115, 76,171, 85,175, 0, 96, 44,183,210,184,215, 14,150, 8,165,151,183,108,255,197,236,236,234,138,189,183,114, 83,242,212, +102,211,239,205, 86, 38,230,209,133,237, 53,205, 86, 83, 79, 93,230,171,135, 21, 61,137, 91, 9,120,223,252,120, 18, 0,129,213, +106, 5,177, 90,193, 21, 74, 37,206,126, 45, 51, 11, 47,116, 66, 14,139,209,149,188, 2, 16,171, 57, 37, 59,174,252, 48, 40, 3, +192, 78,204,197,193, 27,169, 0,144,201, 86,134,189, 24, 57,180,160,185, 80,103, 16, 42,234,215,170, 69,154, 53,107, 38, 23,137, + 42, 53,252, 21,219,205,205,237,193,194,133, 11,235, 76,156, 56, 81,192,231,243, 97, 54,155, 29,183,109,223,110,221,190, 98, 18, + 6,125,188, 5, 60,190, 0, 90,157, 17, 92, 46, 7,121,249, 42,200, 21, 26, 40, 53,166,170,215,160,216, 88, 67, 22,176,250,196, +113,254,192, 30,210,134,205,249, 44, 30,154, 4,122,224,218,133, 19,228,222,249,157,147,180,178,232, 95, 42, 89, 17,161,210,153, +144,150,163, 67,106,142, 14, 25,121, 58,100,228,234,145,145,167, 3,195, 48,208, 25,204,239,117,227, 82,203,162, 14,239,253,101, + 71, 63,189, 17,195,219,119, 31,136,217,139,183,248,238,221,186,234,114, 28, 97,181,169,100,162,173, 37, 50, 50, 50,225,195, 15, + 63,108,244,235,175,191,178, 27, 52,104,160,125,241,226,133,184,208, 68, 26,165, 82,177,232,231,239,191,185,208,188,121,243, 3, +169,209, 47,175, 22,182,167, 87,120, 97,247,237, 48, 78, 32, 50,134, 79,246,145,180,238,225,231, 46,134,143, 68,217,163,142,244, +201,154,156,206,159,172,204,186,186, 81,150,174, 55, 95,202,210,178, 27,167,170,184,149,202,193, 51,233,117,137,131,134, 12, 7, +155, 97,193,168,211, 36, 22, 85, 46, 87, 59, 62,150,236,123, 9,169,144, 11, 27, 17, 7, 82, 17, 23,109,235, 57,162, 10,215, 51, + 98,178, 88,161,209, 91,160,213,155,161, 51,152,225,236,237,128,159,246, 30, 70,146, 76,139,147, 15,179, 17,149,168, 68, 64, 53, + 9, 8,169,248, 50,105,181,152,212,125, 7,143,178, 97,179, 24,176, 89, 12,171, 94,157,218,200, 85, 25,193,227,176,192, 19,138, + 32, 17,112, 96, 43,226,130,199,227, 66, 38,147, 65,175,215,195,199,199, 71, 88,190, 21, 36,176,145,138, 16, 80,211, 19, 70,147, + 25,103,111, 62,199,138, 89,131,208,173,125, 83, 48, 92, 41, 94,234,131, 97,227,104, 3, 43,139, 5,163,217, 10,131,209, 2,128, +165, 43, 75,207,219,219,187,179, 68, 34,145,104, 52, 26,101, 82, 82,210,245,140,168,227, 73, 22,118,255,201,231, 47, 94,221, 27, +210,171, 27,194, 35, 34,113,228,248,169, 91,217, 78,249,115,138,190, 83,191,126,253,150,206,206,206,210,156,156, 28,197,179,103, +207, 30,188,235,115, 1, 97,177, 62,109,213,182, 35, 84,114, 25, 50,147,227, 43,253, 20, 93,215,215, 6, 95,125,179,165, 73, 96, +237,192, 38, 22, 82, 96,188,234,249,216,224,179,197,155,154,212, 10,168,221,164,168, 67, 72, 93,159,242,135,101,227,136,109,186, +143,153, 56,251,155,126, 67,198,225,234,197, 83, 88,183,226,243,189, 18, 59,151,186,142, 14,118,141, 27,180,236,142, 91,151, 79, + 65,104,227, 14, 7, 39,247,182,163,198,207,232, 58,100,212, 20,220,189,117, 25, 27, 87,125,185,199,162, 87,238,175, 76, 89, 37, +174, 53, 93, 26, 5, 55, 31,105,227,232, 6,121,190, 18, 54, 14,174,168,219,176,217,200,231, 79,244,115,213,178,184,172,119, 54, + 29,132, 64,111, 36,200, 83, 25,145,156,165, 69, 66, 70,129,209,178, 90,171,144, 19,100,177, 50, 82, 33,135,227,104,122,229,243, +244,242, 85,226,235,237,198,172,254,250,115,182, 17, 66,100,201, 11, 76, 86,150,194,128,172,124, 3, 84, 58, 19, 28, 37, 28, 88, + 45,214, 42, 63,117,231,169,140,176, 17,115, 97, 39,230, 85, 58,202, 88, 26, 63,238, 58, 24,248, 36, 58,109,192,186,117, 27,196, +143,227, 74,152, 44,110, 65, 52, 75,192, 99,195, 98,181, 2,149, 56,227,185, 28,238,204,254,189,187, 34, 57, 91, 91,208,107,153, +197, 32, 32,168, 57,156, 69, 86,116, 25, 54, 15, 0,208,183,119, 65,106, 91, 92,186, 26,167,239,101, 1,111, 38,118,151,127, 45, +214,106,217,219,247,157,249,244,240,161, 3,118, 58, 11, 7,219,206, 37, 64,163, 55, 67,200, 99, 67,192, 99, 67,196, 99,191,145, +143, 93,177,209, 42,200,185, 75,202, 54, 65,163,211, 65,161, 53,129, 0,120,240, 74, 5,173,193,140,124,181, 9, 45,235, 56,188, + 95, 32,132, 97,206, 16, 66,250,188,109,136,222, 54, 75, 37, 34, 82,165,105, 60, 44,169, 81,180,126, 89, 70,174,100,206, 22,128, + 42,245,224,226,188,237, 28, 75, 46,243, 36, 14,117,237,108,236,238,157, 63, 23, 42, 61,254,196,138,235, 17, 5, 38,203,164,205, +198,218,185, 35, 82, 20,242,236, 78, 0, 98, 43,251, 99, 98,231,186, 13,133,124,193,213,111, 55,108, 51,186,186,121, 89,143,221, +147,203,242, 53,150, 55,220,132, 69,175,103, 17, 43,225,233, 50, 95, 85,170, 13,129,197, 98,140,139, 63, 30, 8, 43, 33, 88,178, +225, 48, 86,206, 25, 6,169,104,148,152, 97, 24,177, 90,103,198,172,165, 59,176,246,171, 9, 54, 98, 1, 7, 12, 83,144, 19, 53, +102,248,192,202, 85, 64,157, 25,175,239,255,170, 82,198,133,190, 40,217, 92,216,162,109,175, 71, 45, 90,180,144, 59, 56, 56, 64, + 36, 18,253, 30,169, 40, 3, 55, 55,183,175, 22, 47, 94, 28, 56,117,234,212,226,193, 62, 57, 28, 14,166,127,244, 17,203, 98, 33, + 56,119,110, 39, 92,170, 7,227,212,165,123,232,217,185, 25, 84, 26, 29,114,229, 74, 88,193,126,231,138,168,148,103, 95,205, 72, +120,218,188, 77,167,190,184,126,225, 4,185,119,238,231, 73, 85, 25,163,199,193,209, 33, 57,236,233,235,186, 12,227, 88, 16,209, + 42, 52, 89, 6,147, 21,190,110, 98, 36, 39,188,134,189,157, 93,114,101,245, 68, 46,129,253, 25, 22,153,202,128,236, 84,103,198, + 28, 6, 64,212,233, 47, 70, 28,222,191, 61, 34,242,217,227, 21, 33, 35,103,114,186, 15,249,136,189,245,155, 25, 95, 2,168,236, +192,123,198,168,168,168,231, 19, 38, 76,104,125,247,238, 93, 11, 0, 13,195, 48, 38, 54,155, 45, 54, 24, 12,188, 78,157, 58,229, +191,124,249,242, 6, 74, 79, 90,124,131,182, 31, 30,118,102, 4,202, 94,124,171,113,132,175,141,178, 91,167,118,173,208,170,190, + 55,146,219,181, 2,128,153,137, 42,105,160,174,214,142,131, 38,179,232,236,214, 93,167, 87, 78, 26,214,117,214, 94,206,146,117, +233,161, 75,202, 77, 68, 77,126,113,163, 71,105, 54,158,195,102,193, 70,196,133, 84,196,129,141,136, 11, 27, 33, 23, 38, 51,169, +202,147, 35, 49,153,173, 5, 17, 45,131, 25, 42,173, 25, 87, 31,103, 34, 35,223, 0,185,210, 8,173,209, 2, 2, 82,240, 52, 90, +137,171,121,214,171, 59,246, 69,119, 82,123,159,224,252,237,155,191,179, 61,122, 59,165,184, 71,159,157,152, 15, 27,113, 65,111, +236,155, 55,111,194,201,169,226,167,125,171,213,138, 35,231, 31, 96,221,238,171, 56,191,243, 11, 8,121,108, 52,236,191, 20,227, + 6,180,128,149, 88,241, 58, 42, 50, 51,160, 94, 35, 55, 22, 75, 4, 22,195, 64,111,178, 2, 32,101,238, 79,131,193,224,148,148, +148,164,240,247,247,119,247,244,244, 28,194,102,179, 9,148,143,245, 39, 14,228,106,174,132,238, 23,171,181,122,139,216,156,191, +211, 63, 93,219, 7,254,254, 96, 24,134,216,218,218,242,174, 94,189,170, 10, 10, 10,114,121,199, 83,137, 37,114,173,189,113,226, +180, 79,135,212,242,243,195,225,253, 59, 65, 8,115,180,178, 95,222,119,250, 46,190,158,255,102, 15,195,207, 22,111,106,178,118, +233,204, 55,222,155, 54,127, 93,185,189, 14, 69, 2,233,156, 65, 35, 38,227,209,131,223,176,102,233,103, 7,244,170,220,113, 38, +179,233,131,220,244,184, 3, 53,235,181, 0, 49, 42,113,241,208,119, 24, 54,122,146,160,123,200, 16,220,189,117, 25, 43,191,156, +182, 79, 35,151,125,136, 74, 38, 57, 91, 9,119,106,167, 30, 3,184, 90,189, 17,155, 86, 47,194,148, 57, 43,208,178,115, 95,238, +179,199,247,166, 2, 88, 86,233,116, 8,163, 5,157,130,156, 11,204,179,201,138, 83,113,108, 78,105, 53,144,195,102, 88,141,253, +236,161, 53,152,161,168,224,161,146,195,227,102,200,243, 21,213,191, 95,249, 41, 91,173, 51, 35, 43,223, 0, 89,190, 30,217,242, +223, 13, 86,118,190, 30, 89,249, 6,112, 57, 12,162, 99, 19,193,226,114,170,156,159,151,167, 50,161,121,109,135,130,115,244, 29, + 91, 71, 76, 28,219, 22,231,111, 60, 25,180,110,221,122,225,147,120, 37, 34,226, 20,133,145, 44, 54, 4, 92, 22,248,133,255, 91, +172, 5,185,145,229, 97,235,226, 87,115,236,152, 81, 93,108,165, 34,164,197,200,192, 97, 23, 12, 17, 99,231,234, 13, 59,129, 14, + 51,166, 77,134,179,147, 61,146,178,245,216,120, 60, 26, 17,207, 95,193,170,173,218,102,111,218,118,160,231,196,233,159,217,179, +184,124,236,185, 16, 95, 80, 78,182, 5, 47,239,157,214,165,189,126,170, 86, 41,114, 8,136,165,146, 57,200, 12, 49, 91, 10,170, +219,202, 37,243,112, 96,247, 15,184, 16, 38, 43,174,129,183,143,174,197,167,243,151, 35, 91, 97, 64,105,245,178, 60, 63, 2, 32, +171, 68, 36,234, 15,203, 37,204, 81,105,203, 76,225,178,161, 12, 13,195, 91,230,202,240,214,251,134,183,244, 74, 27,251,111,123, +133, 77,135,127, 48, 69,246, 46, 13,196, 66,201,111,231,206,157,150,156,136, 32,197, 38,203,168,201, 38, 43,102,246, 77, 81,200, +179,186, 87,201,100,185, 4, 52, 16,136, 5, 55, 22, 46,223,168,119,243,170,110, 62,251, 88,145,163,212, 89,204,127,204, 65,144, + 88, 36,118, 46, 58, 14, 95,176,142,171, 53, 44,202,206,126,161,174, 40,242,100, 37, 4,161,247, 51, 64, 72,193, 35,210,161,155, +169, 40,124, 50,135,197, 90,208,172,114,233,177, 12,156,194, 60,148,202,134,191,127,220,246,131,162, 79, 80,190,122,228,202, 37, +197,205,133, 45, 27, 21, 68,178,108,109,109, 97,111,111, 15,169, 84,138,138,154, 14, 25,134, 25, 51,113,226,196, 63, 60,253,203, +100, 50,116,237,210, 9,155,127,248, 9,141,186,140,197,165, 59, 23, 96, 52, 89,209,176,158, 31,170,123, 58, 32, 57, 83,249, 78, + 39,186,196, 45,112,122,243, 78, 3,190,108,219,185, 47,174,158, 63, 70,238,157,223, 53,185,170, 3, 33,246,233,218,250,244,215, + 95, 47,169,185,112,197,247, 2, 27, 33, 7, 47, 84, 6,176, 24, 6,190,110, 98, 56, 73, 88,184,126, 98,143,110, 88,223,214,149, + 30, 28,207,219,219,107,239,218,205,219, 37,107, 87, 45,237,244, 40,140,185,170, 74,139,206, 5, 0, 77,102,212,234,151,192,243, +106,191, 93, 60,219,168,195, 64,184,121,250,117,139,203,124, 89,105,179, 1, 64, 19, 27, 27, 27,183,112,225,194,192, 85,171, 86, + 17, 54,155,109, 5, 32,216,176, 97,131, 38, 38, 38,230, 49, 10,186,230,162,162,155, 77,151,110,245,103, 73,249,150,150,142, 98, + 86,125, 63,119, 49, 90,213, 47,104, 21, 29,214,167, 45,188,125,124, 16,155,161,105,156,171,177,114, 85, 6,182,223,150,109, 17, + 15,107, 56,179, 39,153,181,134,231, 0, 78,190, 67,179,105,113,130,124, 81, 52,203, 70,196,133,181,160,174, 84,201,104,233,141, + 22,104,245, 22,104, 13,102,168, 13, 22,104, 12, 22, 88, 73,193, 57,193, 48, 12,140,102, 43, 42,245,216,252, 86,221,183,117,116, +134, 95, 13, 6,182,226,130,178,217, 22, 14,247,192, 0,112,114,114,130,171,171,107,165,162,162, 6, 99,193, 41,110, 48, 89,139, +155,245, 13, 70, 51, 8, 33,136,142,142,250, 34, 33, 46,174,191,127,128,127,251,122, 13, 27, 57,138, 5, 44, 0, 40,211,104,105, + 52, 26,139,141,141,141,171,163,163, 35, 43, 53, 53,181,216, 60,251, 55,238,100, 62,126,236, 40, 6, 13, 26,168,122,241,224, 73, +113, 23,119,173, 86,203,180,105,211,198,214,219,219,155,165,215,235, 21, 85, 61, 76, 18,151,218, 3, 28,156, 28, 87,140,249,112, + 74,237, 78, 93,123,226,218,149,139, 56,121,236,215, 95, 52, 89,209, 23, 43, 43, 18, 24, 88,231, 15,189, 14,107, 5,212,254, 67, +175,195,234, 53, 3,202, 53, 90,245, 26, 54,107, 65, 24, 14, 46,132, 30, 34, 58,150,113, 26, 0,171, 69,167, 60,116,240,199,175, +150,141,152, 58,191, 86,239,126, 35, 48,102,244, 56,112, 56,108, 92,191,116, 26,107,151,206, 62,163,202,151,141,173, 76,154, 64, + 65,232,173, 46,207, 75,228,253,137, 79,173, 6, 8,187,119, 11,175,163,159, 69, 62,121,120,183,190,127, 80, 75,184,120,250,126, +146,232,204, 94,133, 23, 47,140, 21,201, 24,116,186,196,113, 99, 71,163,100,175,195, 86,193,129, 78,204,219, 39, 0, 0,141, 82, +102,252,249,187, 89, 49, 69,189, 14,173, 70, 67, 98, 89,186,249,121, 89, 71,174,223,185, 63,167,127,159,158,172,108,133,161, 32, +130,149,111, 40,124,233,145, 93,244,191, 66,143, 0, 79, 41,162, 34,195,172,186,252,236,163, 85, 60, 47,117,227, 62,232,241,188, +168,238, 90,173, 4, 12,160,171,114,179, 20,215,118,242,234, 53,235,132, 79,226, 84,136,136, 87, 20, 52, 21,114,217, 5, 6,139, +203, 42, 54, 93, 5,189,217, 43,136, 14, 49,236,149,227,199, 14, 71,182,194, 8,171, 21,224,176, 89,133, 47, 30,146,148, 12,146, +149, 26,100,231,101, 33, 46, 33, 17,242,140,215, 96,177, 88,112,246,172, 93,233,145,164, 45,132,239,161, 49,144,160, 33,125,218, +115,142,253,150, 14,177,128, 3,189, 50, 19,231, 14,126,151,165, 87, 41, 86,104, 53,170, 99,149, 25,207,241,247, 20, 4, 38, 75, +161,210,185, 9,184,108, 28,222,253, 61, 62, 24, 55,237,141,171,239, 23, 11,190, 6, 88, 12,114,243,148, 96, 24, 38,171,106,215, + 37,230, 97,121,203,239, 24, 25,123,111,141, 82,204,214, 31, 31, 20,202,126, 26, 37,231, 46,158, 63, 45,185,157, 32,192,131,168, +244, 66,147,149,101, 93,254,113,159, 20,101,126,110, 15, 0,209, 85,123, 46,100,245, 24, 54,126, 78,164, 95,237,122,250,107,207, + 84,241,114,181,169,204, 60,135, 86, 67, 22, 70, 62, 58,179,185,119,190, 41,246, 35,137, 71, 61,139,213,108, 94,173,205,138, 94, + 90, 70,211, 33,127,233,198,195,197,205,134,115, 87,237, 41,248,223, 98,129,133, 88, 65,172,192,140,175,126,132,217,106,129,213, + 98,129,213, 66, 96,178, 16,113, 69,197,117,245,172,126, 44,239,229,161, 58, 35,151,253,177,185,208,222,222, 30, 78, 78, 78,112, +114,114,130,173,173,109,133, 70,139,203,229, 74, 57,156, 55,119,117, 98, 98, 34, 18, 18, 18, 96,107,107, 11, 98, 53,193, 96, 2, + 26,180,236,142,167,175,159,225,242,237,199, 32, 86, 11, 36,210,170,207,242, 34,113, 11,252,168, 89,199,254,223,119,238, 55, 1, +151,142,109, 35, 15,111,158,158,162,149, 69,239,168,116,132,222, 98, 97, 76, 38, 19,250,116,239,152, 24, 30,249,234,252,130, 57, + 83,123,182, 14,153, 34,104, 21,232, 5,157,193,130,148,132,215,184,126, 98,151,174,118, 77,143, 11, 93,218,181, 72, 52,153, 76, +176, 88, 44, 21,222,200,117, 6, 99, 54,155, 43,146, 12, 31, 62,146,251,240,193,131,163, 18,151,128,195, 22,134,245,132, 33,214, +134, 12, 33,131, 26, 54,172, 11,163,201, 10,141, 70,145, 87,213,109, 86, 42,149,113, 59,119,238,172, 57,118,236, 88,113,189,122, +245,184,175, 95,191,198,218,181,107,115,148, 74,101, 92,101, 53, 46,222,140,218,192, 97,242, 98,138, 34, 90, 73,109, 91, 97,120, + 72, 91, 28, 56,115, 27,215,111,221, 69,162, 74,250, 88,101,230,156, 72, 78, 76,211,215,119, 84, 28,237,215,170, 58,251,240,238, +188,163,145, 29,231, 13, 37, 68,112, 49,251,198, 18,117,229, 79,110, 64,169, 53,193, 86, 92, 48,222, 83, 81,100,139,205, 48,149, +118, 68, 12, 16,119,235,110, 88,131,166, 1,245, 16, 30,151, 15,153, 92, 15,173,222, 12,171,149,192, 10, 2, 39, 27, 62,132, 60, + 22,146, 18,226, 96, 37,198,248, 42,222, 42,178, 58,180,239,192, 1, 24, 48, 12,225,112, 57, 28, 16, 20,140,175, 40, 18,137, 84, +174,174,174,149,138,104, 25,205,102, 12,234,217, 2, 45,155, 53, 68,255, 41, 5, 99,102, 94,249,101, 30, 28,164, 92, 28,216,187, + 3,201, 55, 55,236,173,217,106,234,197,103, 79, 35, 7, 71,134,255, 54,178, 87, 19, 81, 99,119, 78, 26,175,172, 48,169, 90,173, + 62, 10,128,207,227,241,122,182,111,223,222,241,232,209,163,114,103,103,103, 43,159,199,203,234,215, 55,196,202,229,241,114,139, +214,189,115,231, 14,119,202,148, 41, 54,121,121,121, 73,153,153,153,119, 1,152,202,127, 16, 12,236, 10, 22,126, 5,195, 8,165, + 34,113, 98,141, 26,126,158,205, 90,182,176, 27, 48,232, 3, 8,248, 2, 92,186,120, 30,155,214,175, 58,164, 74,127, 49,190, 42, +123,242,207,234,117,152,146, 20, 31,167,209,234,131, 26, 52,237,200,220,186,120, 98,166, 17,206,235,217, 2,227,119, 93, 7, 77, +171, 21,151,166,194,166,111,190,128,131,157, 4,241,175, 95,106, 99, 94, 60,253,209,164, 83,124, 81,105,147, 5, 64,156, 99, 25, +220,106,116, 79, 7,189,209,130,155, 87,207,232,172,102,107,207,187, 55,206,190,174, 86,187,153,176, 65,179, 46, 14,217, 39,119, + 12,210, 0, 7, 42,210, 73,125,249,199, 8, 46, 49,200,227,175, 92,189,108,231,230, 91,159,205,128,129, 81,175, 67, 86,236, 67, +179, 38,243,165, 66,145,250,172, 82,189,112,115,146,241,213,252,197,223,126,212,172,105, 83, 9,129,240,141, 8, 86,145,193,202, + 86, 24,224,108,195,135, 86,145,133,152,135,231,117,154, 44,118,185,227,157,153, 13,106,113,182, 44,147,255,123, 58, 67,116,203, +242,214,207,150,101,242,205, 6,181,184,226, 91, 29, 27,182, 18, 62,158,198,167, 22, 39,190, 11,184, 5,185, 89,124, 46,187, 56, + 79,171,232, 90, 80, 1, 29,121, 66,123,164,230,232,192,128,192,106, 49,195,108, 50, 64,169, 80, 32, 53, 45, 3,153, 25,153, 80, + 42,229, 16, 75, 29,208,160,113,115,216, 72,132,120,114,253, 16, 8, 33,149, 26,215,208,196,112, 3,155,181,108, 39,120,150, 80, +144,139, 37,228, 18,156,254,117, 85,142, 74, 33,107,167, 74,143,137,169,234,181,216,108,177, 92,142,120, 30, 83,191,154, 71, 13, +230,241,235,124,236,253,105, 51, 12,133,145, 77,147,201,130,103, 73,106,164,231,106,144, 20,251,130, 88, 45,150,203,248,143,192, + 41, 59, 0, 8, 78,195, 6,117,209,125,212, 0,252,240,195,143,136,141, 75,176,174,152,217, 59, 73,165,148,247,170,130,201,234, +138,194,177, 54, 52,153, 81,171,181, 14,205, 82, 78,133,231,178,180, 6, 82,110,130,143,208,197, 23,237,198,175,189,160, 85,230, +242, 45,122, 13,231,244,222,241,191,150,166, 89,224,160, 97, 88,241,217, 48, 72, 69, 28, 48, 12,131,162,230,194, 45, 95, 79,134, + 88, 80,208,182,172,213,155, 49,106,214, 58,236, 93, 55, 27, 4,192,136, 15,110,107,202, 42, 39, 10,230, 46,156,225,129, 7,213, + 18, 19,100,169, 93,251,126,118, 69,103, 20,232, 67, 6,142,125,212,180,105, 83,185, 72, 36,130, 72, 36,130,173,173, 45, 28, 28, + 28, 96,111,111, 95,225,182,155, 76, 38,149,193, 96,112,226,243,249,176, 90,173,136,143,143, 71,124,124, 60,242,243,243,145,149, +149, 5,181, 74, 97,126,112,229, 48,167, 65,171,222,240,244, 11,130,111, 64, 35,112,217, 12, 56, 28, 22,174,159,250,169,172,114, +150,110,178, 58,244,219,210,165,255, 68, 92, 58,182,157, 60,188,121,122,170, 86, 22,253, 83,101,143, 81, 97,115,207,147, 65,131, + 6, 5, 77,153, 50,133,183,120,206,148, 11,103, 46, 94,143, 62, 28,186,189,111, 94,158,220,155, 16, 2,123, 59,187,228, 97,125, + 91,159,238,212,166, 89,226,149, 43, 87,172,191,254,250,171,158, 97,152,167,229,105, 22, 92,164,100,191, 92,185,124,117, 73,187, + 14, 29,177, 99,247,175, 29, 34,159,191,232,240,250,117, 12,188,125,253, 80,163,102, 0, 52,140, 3,174,222,184, 5,149, 92,246, + 75,101,202,249, 86, 84,139,201,203,203,251,109,216,176, 97,221,111,223,190,205, 26, 54,108,152, 38, 59, 59,251, 78,137, 40, 22, +169, 72,243,238,214,129, 89, 0,126,241,237, 48,238, 80,170, 81,254, 9,128, 85, 62,190, 62,184,126,235, 46,238,222,190,255, 99, +182,216,103,233,248, 81, 31, 78,174,222,143, 61,177, 95,171,234,108, 87, 7, 49,246,111, 95,203, 62,117, 55, 97, 93, 66,142,101, +199,170, 27, 75,190,174,204, 49, 42,190,113, 40,141,104, 83,215, 17, 38, 11,129,149, 20, 92,112,109,132,220,178, 46,188,127,208, +228, 24, 4,227,167, 78,153,242,186, 65,195,198,159,142,250,112, 42,175,177,159, 55, 30,188,146, 3, 12, 3, 71,119, 9,210,211, +211,113,243,200,118,115, 94,234,203, 31,217,108,235,178, 42,236, 79,228, 37, 62,246, 47,177, 56, 57, 59, 59, 27,215,175, 95, 71, +145,193,114,113,113, 41,203,104,189,161,153,147,153,118,231,235, 53,219,218, 76, 26, 51, 16, 33, 29,235,227,198,195,215, 48, 20, +142,215, 84,212,149, 60,238,238, 86,254, 39,195,252, 12, 31, 13,170,173,208,154,248, 9, 95,197,231,223, 68,193, 28,172,214, 50, +202,105,200,205,205, 61, 21, 21, 21,213,182, 81,163, 70,213,207,158, 61,155, 27,121,255,194,204,146,133,248,236,179,207,164, 63, +252,240,131,152, 16,114,199, 96, 48,196, 86,106,219, 89,216, 31,246,232,145,147,209,100,197,173,251, 79,234,118,105,211, 24, 86, + 2, 60,124,248, 16, 59,126,222,161,123, 26,241,248, 59,117,166,251,178,114,204, 75,169,251,211,242,126,189, 14,139, 53,211, 83, + 19,190,187,116,230,200,222,102, 29,250, 98,228,140,101,203,174,159,249,117, 73,147,118, 33,172,186,205,186, 35,236,238, 85, 92, + 62,123,254, 91,163, 42,119, 9, 42,206, 29, 41,181,156, 2,145,248,227,122, 77, 58, 32, 41, 49, 1,241, 49,207,126,209,229,190, + 74, 75,124,205,254, 37, 45, 37,113,106,205,250,109,112,251,194,129,153,229, 24,173,114,235,188,183,139,104,251,217,208, 83,195, + 83, 82,182,186,171,181, 58, 1, 33, 68, 39,224,115, 50,164, 44,229, 65, 69,165,203,249,194,152,149, 86,125,208, 7,163,166,158, +217,180,105, 61,215,205, 94,140,140, 60, 29, 20, 90, 35,148, 26, 35, 88, 12, 3,127, 79, 9, 52,202, 92,220, 56,178,198,100, 80, +229, 13, 3, 94, 27,203,210,148,184, 6, 46,207,123,117,117,198,103,211,174,129,111,231,237, 89,163,243,252,114,163,117,202,212, +199,125, 63,155,118, 58,144, 16,210, 69,226, 26,168, 84,203,162, 22,150,181,237, 12, 83,112,126,143,236,228, 13,163,185, 96,252, + 49,179, 21,176, 88,173,133, 81, 62,128, 20,183,231, 51, 21,108, 59, 99, 61,120,230, 14,210, 50,229,208, 26, 76,208, 27,204, 48, +154, 44, 96,177,217,176,119,176, 71, 64,141, 96,216,217,219, 34, 51, 35, 13,119,175,156, 66,116,196,141, 59, 12,193, 82,109, 86, +204,149,202, 28, 35,158,200, 62,208,195,211,157,149,174, 48, 64,196,103,227,241,141,179, 70,147, 65,255, 93, 37, 77,214, 31, 52, +229, 57,185,235, 62,157,243,249,136, 93, 59,119,187, 7,213,180, 69, 74,182, 22, 41, 89, 58, 40,117,166, 66, 35,102,133, 94,149, +141,136,171,187, 51, 44, 58,229, 58,252, 71, 40,211,104,153,141, 58,229,209,243, 15,156,230, 45, 89,195,126,245, 58,214,180,252, +147, 62, 41, 90,149,162,119,149, 35, 89, 37,216, 53,189,230,129,191, 98, 35,254,208, 92, 72,172,176, 18,130,211,247, 51,138,155, + 11,173,133,153,151,225,175,203,159, 70,176,228,220,133, 29,123,207,188, 20, 17,165,220,167,213,102,218,189,124,245, 93, 30, 0, +176,217,236,226, 87, 81,110,150, 78,167, 51, 84,208,132,178,231,167,159,126,154, 59,117,234, 84, 65,114,114, 50, 94,191,126, 13, +185, 92, 14,161, 80,136,243,231,207,155, 96, 53,127, 23,113,251,120,124, 84,216,197, 69,129, 77,187, 87, 11,106,213, 27, 98,177, + 4, 28, 82,249,100, 76,177,107,237,225, 77, 59,244,251,190,203,128, 73,184,124,252, 39,242,240,198,169,105,218,172,232,237, 85, +221,151,114,185, 60, 18, 64,204,119,223,125,215,120,199,142, 29, 53,231,204,153, 19,187,231,251, 37,155, 0, 32, 39, 39, 7, 0, + 16, 30, 30, 78,166, 77,155,166,215,233,116,113,121,121,121, 97,168,160, 3, 4, 0,104,179,196, 43,119,108, 89,213, 32, 57, 53, +125,160, 95,131,230,112,169,217, 28,238,254, 45,144,167, 52,226,193,171, 52,196,190,184,130, 23,183,142,156,213, 72,205, 75, 80, +197,241,141, 27, 53,106,228,205, 98,177,106,168, 84, 42,247,122,245,234, 53,146, 72, 36,225,141, 26, 53, 10,230,112, 56, 41,143, + 30, 61, 74,168,138, 86,226,141,221,122,223, 14,227, 54, 38, 42,109, 58,197,102,104,130, 19,149, 54,225, 26,129,221,236,172,171, + 27,245,187,216, 94,235,136, 49, 59,242,240,110,197,209,253,219,215,178, 71, 77,254,204,242, 44,223,225, 19,142,136,127,169,106, +225,106, 86,250, 71, 99,251,255, 62,188, 67, 97, 36,171,240,255, 74,133,233,243,243, 35,242, 1,204,141,120,206,253,254,217, 39, + 83,190,110,216,172,205,232,246,189,134,177,204, 60, 41, 46, 28,223, 74,226, 34,174, 30,230, 16,203, 2,109, 37,102, 3,168,176, + 57,200, 96,168,140,201,250, 99, 25,147, 37, 29, 15,255,250,243,184,163,199,143,125, 51,160, 95,127,167, 45, 95, 13,197,154,109, + 39, 32, 17, 9, 64,172, 86, 12,237,228, 61,100,209,196, 58,125,189,221,132, 94, 71,175,165,220,156,177,254,217, 92,141,198, 24, + 93,137, 72, 12,201,206,206,190, 37,149, 74,179,218,182,109,219, 82, 32, 16, 48,217,217,217, 28, 87, 87, 87,179,157,157,157, 33, + 37, 37, 69,163,215,235,143, 2,168,210,176,227, 70,147, 21,241,153, 58,156, 60,118, 20, 79,238, 95,193,139, 23, 81,202, 23,207, + 95,108,102, 56,100,189, 58, 51, 38, 23,168,242, 3, 62,172,165,246, 58, 36, 85,238,117,104,209, 43,247,239,249,113,121,103,141, + 78, 63,174, 81,235, 62,168, 94,183, 13,203,104,178,224,233,195,107,184,118,100,253, 26,163, 42,119,222,251, 28, 99,207,106, 53, + 3, 8,155,143,223,174,159, 1,177, 90,127, 4, 0, 98,181,254, 24,126,251,236,212, 22,189, 39,194,209,181,122, 35,121, 82, 56, +131,119, 24, 61,156,199, 97,169,207, 29,221,117, 60, 62, 62, 30, 47, 95,190,196,171, 87,175,144,155,155,139,253,251,227,171,116, +124, 52,121, 9,151,162,159,179,122, 12, 30, 58,242,244,144,225, 99,132, 53, 3,130, 88,129,213, 28,224, 36,229, 32,234, 85, 2, +162, 31, 69, 88,163, 30,156,213, 25, 21,178, 1,218,188,132, 50,141,159,216,185,174, 27, 96,153, 87, 52,119, 97,171, 86,109, 2, + 63, 95,241, 77, 75, 39, 23,215, 82,175,227, 57, 89, 50,254, 23, 51, 78, 5,222,189,247, 91,165,230, 58,180, 90, 44, 57,147,199, + 13,179,178, 11, 38, 10, 69,113,156,186,112,239, 21, 60, 76, 21,188, 79,172,230, 10, 35,248, 31, 14,108, 7,179,213, 10,181,214, + 8,133, 90,143,124,165, 14,233,178, 28, 60,137,136,192,141,211,167,240, 58,234, 73,156,201, 96,184,200, 98, 49, 71,180,153,209, + 55,170,214,210,196,169,233,228,232,136,184, 92, 21,132,124, 14, 18,162, 31,233,213,138,252,125,239, 90,143,180, 57, 49,233, 50, + 54,211,125,216,176,225,231, 59,247,232,103,215,172,117, 87,177,179,173, 61,120, 28,130,152,248, 52,132,221, 57,175,142,125,114, + 83, 97, 50,168,122,254, 25,179,190,252,205,169,184,215,161, 81,175,238, 59,162,127,135, 99,108, 54,135,111,181,154,245, 70,131, +126,240,251,152,172,191, 10, 66, 44, 41,227, 70, 12,124,227,217,192,108, 37,162, 17, 31, 92,208,150,124, 86, 48, 89,136,120,196, + 7,119, 52, 5, 23,144,178, 19,251, 60, 60, 28,251, 20,205, 93,152,152,152,243, 48, 55, 87,127, 13, 64,138, 78,167,123,231, 50, +102,102,102,126,189, 98,197,138, 16,141, 70, 83,167, 99,199,142, 2, 91, 91, 91,228,228,228,224,226,197,139,166,208,208,208,231, + 50,153,108, 17, 32, 51,107, 17,252, 75,132,238,248,216,168, 71, 23, 23,213,105,218,163, 90, 80,235,222,149,191,152, 9, 68,147, + 58,247,155,192, 92, 62,241, 19,121,112,253,196, 71,218,172,152,109,239,177, 91,141, 58,157,238,190, 78,167,123,182, 96,193,130, +102,110,110,110,110,139, 22, 45, 18, 42, 20, 10,238,150, 45, 91,116,217,217,217, 25, 10,133,226, 46,202,201,167,249, 35,225,166, +252, 84, 12, 58,119,244,167, 78,228,232, 79,221,236,157,189,186,219,185, 84,171, 37,207, 74,141,203,207, 74,187, 8,224,114,225, + 64,145, 85,162,113,227,198,126, 12,195, 12, 3,208, 64, 34,145,248, 75,165, 82, 1, 33,164, 14,195, 48,145, 86,171, 53,162, 94, +189,122,161,207,159, 63,175,210, 96,178,137, 55,118,235,189, 3,219,252,154,171,177,242, 12, 44,222,175,137, 55,118,235, 1, 64, +118,233,115, 13,128,147,207, 59,206, 29,116,234,110,194,166,200, 60,187,153, 89,215,191, 57, 85,213, 50,231,167, 60,241,255,179, +234,191, 46,253,121, 10,128,113, 17,143,176,246,105,248,221,197, 12, 1,215, 2,243,114,173,236,213,163, 63, 67,159,203,229,234, +188,188,188, 74,237, 93, 40, 16, 8,116,122,125,121, 1,148, 27,102, 85, 58,118, 0, 29,118, 31, 59,180,123,220,137, 83, 39,191, +105,223,101,128,147,176, 90, 53,212,112,101,176,123, 94,147,153, 87,194,179, 30,244,251,252,230, 15,177,105,186, 8, 84, 49, 31, + 70,165, 82, 69, 3,200, 83,169, 84,253, 9, 33,201, 12,195,120,231,229,229, 61, 54,153, 76, 79,171,108, 8,172, 24,217,170, 85, +243,253, 12,195,112,136,217,186,250, 46,151,253,171, 46,253, 69, 10,222,115, 90,146,160, 26,182,152,181,104, 99,147, 90,254,181, +155, 20,205,117, 88,191,186, 13,166,204, 93,219,164,122,205,128, 38,191,207,127, 88, 97,154, 0, 49,105,242,198, 31,251,121,245, +205,240,123,215,190,116,246,168, 94, 61, 35, 37,246, 69,242,171,199, 95, 91,116,138, 99,239,123,156,227, 95, 69,174,223,241,221, +220, 57,233,169,113, 59, 52, 89, 49,207, 0, 64,147, 21,243,236, 69, 24,190,202,206, 72,153,147, 35,139,253,238, 93,247,133, 90, +173, 78,219,183,111,159,125,155, 54,109, 88,110,110,110,200,202,202,194,181,107,215,172, 86,171, 53,181,202, 90,185,113,215,212, +185,140,227, 47,219,190, 95,205,147,216,244, 54,155,205,158,132, 0, 28, 14, 39,221,160, 81,156, 87,178, 36,159, 35, 47, 65, 87, +254, 61,195,202, 0, 96, 21,205, 93,104,181, 90,153,213,155,118, 39,112,133, 54,165, 14,134,104,210, 41,197, 86,171,181,210,115, + 29,202,147,194,106,253, 89,231, 55, 67,200,210, 70, 77, 91,126,105, 50, 25,117,133,231,135, 14,128,142, 16,228,176, 88,204, 13, +182,213,116, 65,241, 30, 15, 83, 12, 3, 91,194,112, 96, 35,226,128, 1, 3, 85,126, 46,169, 74, 78, 86,169,134, 88, 22, 29,169, +145,117,240, 61,103, 56, 52,246,234,165,179, 31, 88, 44,150, 26,133, 49,131,120,189, 86,125, 88,149,238,240, 11,240,200,140,127, + 63,103,138,204, 22,243, 23,255, 80,165,154, 81,254, 78,154,129, 53, 69,253,171,121,185,141,141, 79,144, 61,136, 77,214,252,130, + 55,167,213,121,159,114,178,221,220,220,190, 98, 24,102, 52,159,207,151, 26, 12, 6, 53, 33,100, 79,102,102,230,215,248,195,228, +191,193, 92,145,171,118, 44, 95, 40, 94,104,212,169,127,211,200,162, 71, 86,180,237, 98,151,218,221,133, 18,201, 92,157, 86,189, + 71,147, 25,189,251, 79,222,159,118, 2,129, 32, 88, 42,149,114,179,179,179,239, 3,200,255, 59, 29,247, 70,141, 26,249,176, 88, +172, 26, 86,171,213, 13,128, 29, 10,122,133,100,115, 56,156,212,194,136, 22,169,170,102,219, 15, 15, 59,119,233, 86,127,214,197, +155, 81, 27, 10,155, 21,139,241, 26,178, 78, 56,186,119,167,207,126, 57,118,178,180, 94,135,255,184, 58,255,255,167,217,129, 35, +245,200, 30,199,226,219, 45,239, 18,168,211,100,167,165, 78,187,245, 52,235, 62, 0,229,251,148,147,199,227,141, 50, 26,141, 34, + 30,143,167, 53, 26,141,251,254, 46,219, 46,114, 13,156,192, 2,169,244,204, 20, 86, 48,143,222,234,180,242,111,169, 75,236,160, +160,160,118, 60, 30,207,199, 98,177,136, 13, 6,131, 70,171,213,198, 39, 36, 36,252,134,178, 39, 62,255, 75,203, 41,113, 13, 88, +207,227, 9, 62, 1, 0,163, 81,191, 81, 45,139,153, 85,222, 23,203, 89,255, 31,125,140,156,107, 52,141,225,176,185, 46, 40, 28, +152,219,106, 54,103,101,198, 61, 12,248, 31,150,243, 95, 7, 33,228, 47,255,141,174, 84,147,106, 82, 77,170, 89, 10, 44,186, 63, +169,230,255, 82, 83,232, 81,215, 91,232, 81,183,210,131, 46,151,177, 62,221,159,148, 34, 38,151,242, 2, 33, 4, 28,186,111, 40, + 20,202,255, 0, 43,221, 5,148,255, 37,186,244, 23,201,127,229,250,148,255, 28,101,230, 68, 51,229,184,210,170,132, 4,223,197, +217, 94,166,154, 84,147,106, 82, 77,170, 73, 53,169,230,127, 78,179, 34,237,127, 98,147,228,228,183,150,207, 0, 72,167, 77,135, + 84,147,106, 82, 77,170, 73, 53,169, 38,213,252,187,104,254,155, 40,110, 58,100,209,125, 65,161, 80, 40, 20, 10,133,242,215, 64, +115,180, 40, 20, 10,133, 66,161, 80,222,143,210,154, 14,169,209,162, 80, 40, 20, 10,133, 66,249, 19, 40, 51, 25,158, 54, 29, 82, + 40, 20, 10,133, 66,161,188, 31, 69, 17, 45, 15,148, 24,222,129, 26, 45, 10,133, 66,161, 80, 40,148, 63,143,116,148, 22,221, 10, + 13, 13, 37,165,253, 79,161, 80, 40, 20, 10,133,242,255,193, 63,220,139,148,140,100, 77, 46, 92,126,179,215, 33, 53, 88, 20, 10, +133, 66,161, 80,254, 46,102,235, 31, 70, 81, 36,171,232, 85, 60,105,118,177,209, 10, 9, 9, 97,168,217,162, 80, 40, 20, 10,133, +242,191,226,223,232, 69, 88,111,111, 32, 61,204, 20, 10,133, 66,161, 80,254,151,102,235,223,180, 61,116,120, 7, 10,133, 66,161, + 80, 40,148,247,195, 3, 64,159, 18,203,103, 80,162,249,144, 66,161, 80, 40, 20, 10,133,242,238, 76, 46,109,153, 16, 66, 35, 90, + 20, 10,133, 66,161, 80, 40,127,129,217,162, 80, 40, 20, 10,133, 66,161,252, 85,252,127, 76, 42, 77,103, 54,167,154, 84,147,106, + 82, 77,170, 73, 53,169,230,191,157,162,113,180,128, 18,227,104, 1,116,100,120, 10,133, 66,161, 80, 40,148,247,165, 15, 10,198, +207,154, 92,248,183, 15, 53, 90, 20, 10,133, 66,161, 80, 40,127, 46,127,152,126,135, 26, 45, 10,133, 66,161, 80, 40,148, 63,215, + 96,109,167, 70,139, 66,161, 80, 40, 20, 10,229, 47,134, 26, 45, 10,133, 66,161, 80, 40,148,191, 8, 6,101,247, 28,184, 92, 5, +157,119,233,125,112,153,106, 82, 77,170, 73, 53,169, 38,213,164,154,255, 57,205,138,180, 47,227,159, 71,209,200,240,103,240,123, + 34,252,118, 66,254,250,105, 27,105,215, 87,170, 73, 53,169, 38,213,164,154, 84,147,106,254,219,153,252,214, 95, 0,255, 63,227, +104, 81, 40, 20, 10,133, 66,161,252,215,204, 86,177,225,162, 83,240, 80, 40, 20, 10,133, 66,161,188, 31,219,203,250,128, 70,180, + 40, 20, 10,133, 66,161, 80,222,143,201,101, 45, 83,163, 69,161, 80, 40, 20, 10,133,242,215, 24, 46,106,180, 40, 20, 10,133, 66, +161, 80,254, 68,147, 53,185,212, 79, 67, 67, 67, 9,221, 71, 20, 10,133, 66,161, 80,254, 87,252,219,188, 72,241,240, 14, 69, 27, + 70,205, 22,133, 66,161, 80, 40,148,255,165,201,250,135,122, 17, 15,252,222,219,112,114,225, 50, 8, 33,180,215, 33,133, 66,161, + 80, 40, 20,202,123,210, 7,111,246, 60,156, 92,180, 76,141, 22,133, 66,161, 80, 40, 20,202,251, 51,185,220, 79,105,179, 33,133, + 66,161, 80, 40,148,255, 37,255,198, 28, 45,134, 30, 86, 10,133, 66,161, 80, 40,148,247,162,180,104,214,255,203, 92,135, 20, 10, +133, 66,161, 80, 40,255, 73,195, 69,141, 22,133, 66,161, 80, 40, 20,202, 95, 96,178,138,140,214, 95, 61, 96, 41,157,217,156,106, + 82, 77,170, 73, 53,169, 38,213,164,154,255, 21,147, 85,114,136, 7, 0,180,215, 33,133, 66,161, 80, 40, 20,202,251, 66, 39,149, +166, 80, 40, 20, 10,133, 66,249,139,160,147, 74, 83, 40, 20, 10,133, 66,161,252, 63, 27, 46,106,180, 40, 20, 10,133, 66,161, 80, +254, 68,147,245,134,217,162, 57, 90, 20, 10,133, 66,161, 80, 40,239, 71,153, 57, 90, 12,202,238, 57,112,185, 10, 63,240, 46,189, + 15, 46, 83, 77,170, 73, 53,169, 38,213,164,154, 84,243, 63,167, 89,145,246,101,252,243,153,140,255,167, 1, 75,105,215, 87,170, + 73, 53,169, 38,213,164,154, 84,147,106,254,215,152, 12, 20,140,163, 69,155, 14, 41, 20, 10,133, 66,161, 80,254, 4, 99, 85, 26, +212,104, 81, 40, 20, 10,133, 66,161,188, 31,116, 28, 45, 10,133, 66,161, 80, 40,148,191, 8, 15, 20, 68,181,138,254, 6, 83,163, + 69,161, 80, 40, 20, 10,133,242,231,208, 7, 5, 81,173,162,191,212,104, 81, 40, 20, 10,133, 66,161,252,137,148, 58,142, 22, 3, + 0,161,161,161, 69,253, 15, 59,134,132,132,220,160,251,138, 66,161, 80, 40, 20,202,255, 39,255, 70, 47, 66, 8,249, 61,162, 21, + 18, 18,194, 0,184, 78, 15, 53,133, 66,161, 80, 40,148,255, 5,255, 70, 47,194,122,203, 73,118,164,135,153, 66,161, 80, 40, 20, +202,255,130,127,163, 23,225,188,229, 34, 41, 20, 10,133, 66,161, 80,254, 39,252,131,189,136, 7, 10, 18,225,207, 20,254, 5, 10, +135,124,160,227,104, 81, 40, 20, 10,133, 66,161,188, 31, 69,189, 13, 39,227,173, 49,181,104, 20,139, 66,161, 80, 40, 20, 10,229, +253, 40,109,100,248,255,151,185, 14, 41, 20, 10,133, 66,161, 80,254,147,208,185, 14, 41, 20, 10,133, 66,161, 80,254, 28, 74, 70, +181,182,255,127,253, 40,157,217,156,106, 82, 77,170, 73, 53,169, 38,213,164,154,255, 37,147, 85,188,252,198, 56, 90, 20, 10,133, + 66,161, 80, 40,148, 63, 23,218,116, 72,161, 80, 40, 20, 10,133,242,126, 20,245, 56, 44,185, 76,141, 22,133, 66,161, 80, 40, 20, +202,159,104,182,254, 0,109, 58,164, 80, 40, 20, 10,133, 66,121, 63, 38,151,245, 1, 53, 90, 20, 10,133, 66,161, 80, 40,127,145, +225, 98, 80,118,207,129,203, 85, 16,126,151,222, 7,151,169, 38,213,164,154, 84,147,106, 82, 77,170,249,159,211,172, 72,251, 50, +254,121,252,207, 6, 44,165, 93, 95,169, 38,213,164,154, 84,147,106, 82, 77,170,249,159,132, 14,239, 64,161, 80, 40, 20, 10,133, +242, 23, 82, 21,163,229,194,225,112,190, 20,137, 68, 63,136, 68,162,109, 28, 14,231, 59, 0, 14, 85,253, 65,137, 68, 50,211,221, +221,253,165,187,187,123,138,143,143,207, 89, 27, 27,241,167,126, 2,180, 7,192,253,147,182, 39, 16,192,167, 34,145,232,133, 80, + 40, 76, 0,176, 23,192,167, 0,156,223, 71,248,107, 79, 12,126,246, 73,255, 19, 95,123, 98,240, 91, 31,245,113,115,115,187, 5, +160,251,159,117, 80,134,139,209,117,136, 4, 73, 67, 36, 72, 26, 46,126,247,167, 6, 27, 27,155,209, 30, 30, 30,119,157,156,156, + 82, 61, 60, 60,238, 8,133,194, 33, 85,148,112,117,115,115, 91,227,237,237, 29,237,233,233,185, 1, 5,179,147,255,109,105, 39, + 64,187,150, 2,100,181,226, 67,217,134,143, 31, 90,241,209,173, 27, 32,126, 71,185,182, 0,142,216,218,218, 62,230,112, 56,161, + 0, 6, 21,214,175, 65, 28, 14, 39,212,214,214,246, 49,128, 35,133,235,189, 75, 61, 93, 3, 32, 21,192,202,194,229,143,189,189, +189,149, 13, 27, 54, 76,104,216,176,225, 46,127,127,255, 49,149, 21, 19,139,197,221,188,189,189,143,250,248,248, 36,180,106,213, + 42,215,203,203, 43,170, 90,181,106,187, 5, 2, 65, 71,122,137,163, 80, 40,148,191, 63,125, 1,124, 3, 96,115, 68, 68, 68, 24, + 33, 36,140, 16, 18, 22, 17, 17, 17, 6,224, 7, 0,171, 80,118, 8,241,141,247,157,156,156,150, 46, 95,190, 92,151,158,158, 78, +178,178,178, 72,116,116, 52, 89,191,112,174,181,135, 35,135,248,185, 56,104, 60, 60, 60, 94,251, 86,171,118,160,190,148, 53, 23, + 64,173,202,104,150,192, 65, 36, 18,221, 95,184,112,161,234,214,173, 91, 42,131,193,160,178, 90,173,170,180,180, 52,213,229,203, +151, 85,109,218,180, 81, 1,152, 5,128, 93, 5,205, 98,150,121,226, 6,249,249, 43,178,204, 19, 55, 74,190, 95,167, 78,157,231, + 86,171,149, 12, 30, 60, 88, 15,192,171, 42,154,111,227, 5, 8,235,219,194,126,136, 20,153,230,221, 95, 19,178,101, 14, 25, 34, + 65,210,187,104,186,186,186,158,156, 57,115,166, 34, 53, 53,149,232,245,122,146,148,148, 68,166, 76,153,146,239,234,234,186,175, +146,219,238, 20, 20, 20,148,121,247,238, 93,171, 92, 46, 39,215,175, 95,183, 54,104,208, 32,179,146,102,171,235, 91,101,217,238, +233,233,121,182, 42, 47, 87, 87,215, 29, 85, 61, 70, 45, 4, 72, 50,134, 93, 35,228,225, 69,114,106,112, 43,178,190,105, 53, 50, +200,145, 47,111,203,199,199, 29, 74, 31,202,164, 44,205, 15, 58,116,232,160,126,250,244,169, 37, 39, 39,135, 60,127,254,220, 58, +105,210, 36, 29,128,200, 73,147, 38,233,158, 63,127,110,205,201,201, 33, 79,159, 62,181,116,232,208, 65, 13, 96, 98, 21,202,201, + 2,176,115,201,146, 37,132, 16, 66,150, 47, 95, 78, 26, 54,108, 72, 58,119,238, 76, 84, 42, 21, 33,132, 36, 16, 66,118,153,205, +230,113,149,209,180,179,179, 27, 61,115,230, 76,149, 70,163, 33, 69, 88,173, 86, 34,151,203,201,230,205,155,213,238,238,238,103, +203,120,200,160, 77, 30, 84,147,106, 82,205,191,155,230, 63, 25, 15, 20,228,105, 21,189, 60,128,130,166,195,138, 24, 49,119,238, +220, 34, 83,117,174,109,219,182, 15,198,141, 27, 23, 54,110,220,184,176,182,109,219, 94, 7,112,225,209,163, 71, 97, 95,124,241, + 69, 24,128, 17, 21, 28, 8,135,214,173, 91,203, 51, 50, 50, 72, 64, 64, 0,169, 94,189, 58,201,200,200, 32,132, 16,242,240,131, + 38,228, 74, 93,144,228,155,231,200,197,227, 71,200, 36, 15, 14,105,231, 97,103,242,112,119,207,113,118,118, 94,129,130,164,253, +242, 14,238,192,186,117,235, 42, 35, 35, 35, 85, 49, 49, 49,170,165, 75,151,170, 58,119,238,172, 10, 10, 10, 82, 13, 26, 52, 72, +181,105,211, 38,149,209,104, 84,237,216,177, 67,101,107,107, 27, 89,138,217,122,103,163,197,225,112, 54, 70, 68, 68,144,215,175, + 95,147,194, 40, 69, 89,154,118,246,246,246, 61, 29, 28, 28,102,217,219,219,247, 4, 96, 7, 0, 1,128,180,145, 29,124, 62,110, +228, 87, 39,116, 68,215, 90,155,187, 54,107, 50,196,134, 37, 55,125, 63,135,144,193, 62,239,100,180,236,236,236, 70,127,250,233, +167, 74,189, 94, 79, 52, 26, 13, 81,169, 84, 68,163,209, 16,165, 82, 73, 70,140, 24,161, 16, 10,133, 3, 43,210,116,118,118,254, +250,230,205,155,230,140,140, 12,114,243,230, 77,114,246,236, 89,178,101,203, 22,171,171,171,235,186,170,158,128,238,238,238,151, + 46, 94,188, 24, 22, 30, 30, 30,118,255,254,253, 48,147,201, 20,102, 52, 26,195,140, 70, 99, 88,104,104,104,216,177, 99,199,194, + 14, 30, 60, 24,102, 48, 24,194, 12, 6, 67,152, 94,175, 15,171, 89,179,230,249,170, 30,163,230, 2, 36, 27,110,157, 34,100,221, +116,146,255,237, 52, 34,159,221,155,200,166,180, 39, 63, 52,171, 70,218,139,112,250,173,122, 84,166, 38,151,203,189,145,144,144, + 96,157, 63,127,190,161, 94,189,122,249,227,199,143,215,233,245,122, 66, 8, 33,122,189,158,140, 31, 63, 94, 87,175, 94,189,252, +249,243,231, 27,226,227,227,173, 28, 14,231,114, 21,202,185,170,200,100,221,184,113,131,148, 68,165, 82,145,206,157, 59, 39, 52, +108,216,112, 87,141, 26, 53, 70, 86,164, 41,149, 74,251,207,155, 55, 79, 69, 74,193,100, 50, 17,165, 82, 73,226,227,227,173,213, +171, 87, 79, 3,224, 68, 47,230, 84,147,106, 82, 77,106,180,254, 50,202,156,130,167,220,157,248,197, 23, 95,132, 17, 66,194, 22, + 44, 88, 16, 86, 24,217,226, 1,144, 22,190, 56, 0,134,207,155, 55, 47,140, 16, 18, 54,119,238,220,162,117,202, 58, 16,125, 15, + 31, 62,108,220,176, 97, 3,113,115,115, 35,238,238,238,100,227,198,141,196,106,181,146,140,208,125,228, 74, 93,144, 23, 95,142, + 37,132, 16, 18,189, 98, 6,185, 82, 23, 36,246,199,101,100,212,168, 81, 26,177, 88, 60,162,156,131,235,216,164, 73, 19,165, 86, +171, 85,237,222,189, 91, 37, 22,139, 31, 2,168,135,130,166, 72,166,176,172, 99,234,213,171,167,120,246,236,153,234,215, 95,127, + 85, 1, 88, 90,201, 10, 83, 11, 64, 39,137, 68, 50,104,158, 23, 55,134,252,252, 21,153,231,134,167, 0, 26, 0,112, 41, 92,199, +115,238,220,185,132, 16, 66,188,189,189,111,150,161,105, 23, 20, 20, 52, 55, 38, 38,102,177,201,100, 90, 28, 30, 30,190,184,118, +237,218,243,251,213,244,104,117, 98, 68,183,224,252,101,211,130,201,218,217, 65,223,245,106,222,245,192,176,142, 35, 62,172,225, +124,107,188,171, 80, 51,212,142,173,124,171,233,176, 82, 21,219,203,203,235,126, 82, 82, 82,177,185, 82, 42,149, 36, 53, 53,149, +196,197,197,145, 91,183,110, 17, 15, 15,143, 43, 21,105,186,187,187, 63, 79, 74, 74, 34, 63,174, 95, 79, 6, 55,168, 67,218,219, +219,144, 14, 14, 54,164,169, 84,168,174, 11, 52,173,170,209,122,252,248,113, 24,128, 48, 0, 97, 57, 57, 57, 97, 57, 57, 57, 97, +121,121,121,197,239, 1, 8,203,207,207, 15,203,207,207, 15, 51, 24, 12, 97,126,126,126, 85, 54, 90,109,132,104,211, 66,136,220, + 86, 2,104,251,122, 57,167, 77,171,233,108,185, 55,162, 21,201,155,222,153,108, 8,246, 34,109,249,248,184,146,154,125,249,124, +254,117, 0,115, 10, 77,249,216,158, 61,123,106, 8, 33,164,103,207,158, 26, 0, 99, 11,223,255,180,208,100,245,172,100, 57, 89, +254,254,254,234,162, 72, 22,128,223,252,253,253,213, 13, 27, 54, 36, 13, 27, 54, 36,222,222,222,202, 66,237, 74, 93,208,106,213, +170, 21,173,213,106,139, 13,160, 92, 46, 39,105,105,105, 36, 54, 54,150, 68, 70, 70,146,135, 15, 31,146,132,132, 4,114,232,208, + 33,139,189,189,253, 25,122, 49,167,154, 84,147,106, 82,163,245,151, 26,173,183, 95,111, 26,173,208,208,208,183,109,215,183,143, + 30, 61, 10,155, 55,111, 94, 24,202, 25,136, 11,192,228, 5, 11, 22, 20, 69,189,190, 41,231,230,191, 35, 58, 58,154,140, 29, 59, +150, 4, 6, 6,146,192,192, 64, 50,110,220, 56,146,159,159, 79, 84,175,158,145, 43,117, 65, 30, 14,109, 74, 8, 33, 68,249, 34, +156, 92,169, 11, 18, 54,170, 53,121,242,228, 9,169, 86,173,218,197,114,126,255,244,157, 59,119,178,246,237,219,151,129,130,124, + 44, 46,128,150, 0, 54,138, 68,162,157, 40,104, 46,172, 14,192, 33, 32, 32, 32, 87,163,209,168, 6, 15, 30,172, 2,224, 83,142, +102,135,192,192,192,215, 59,118,236, 32, 50,153,140,228,230,230,146,213,109,106, 19,242,243, 87,100,121,211,234,214, 31,127,252, + 81, 63,103,206, 28,181,163,163, 99, 40, 0,207,193,131, 7,155, 9, 33,164,125,251,246,153,165,137,217,219,219,247,140,137,137, + 89,172,211,233, 22,203,229,242,197,185,185,185,139, 79,157, 56,177,184, 71,131,218, 99,243,151, 77, 11, 62, 49,162, 91,112, 47, + 47,135, 65,235,186, 55,155,154, 58,127,226,224, 5,173,235,189,208,173,250,228,218, 7, 53,221,214,188,203,209,118,113,113, 73, +215,235,245, 4,192, 31, 94,175, 95,191, 38, 78, 78, 78, 73, 21,105, 56, 58, 58, 46,248,116,248, 48,203,192,234, 94,228,245,134, +133,196,116,233, 87, 98, 58,187,155,188,250,118, 54,233,231,238,172,104,201, 99,205,171,108,121,220,221,221, 47,221,191,127,255, + 13,163,149,151,151, 87,170,209, 82, 40, 20, 97, 6,131, 33,204,223,223,255,252,251,214,250,150,124,248,117, 16,177, 31,134,143, +109, 71,178,166,117, 38, 61,237,184, 9,239, 33, 55, 28,192,117, 0,163,170,248, 61, 22,128, 85, 69,134,234,219,111,191, 37,132, + 16,226,239,239,175,198,251,141, 99,103, 87,167, 78,157,184,137, 19, 39,154,235,214,173, 43,107,211,166,141,252,193,131, 7,228, +198,141, 27,228,236,217,179,228,200,145, 35,228,217,179,103, 36, 53, 53,149, 68, 71, 71,147, 62,125,250,200, 1,116,160,215, 66, + 10,133,242,119,166, 20, 47,242,143,166,184,215, 97,104,104, 40, 9, 9, 9, 97, 74,108,160, 29, 0, 97,211,166, 77,179, 86,173, + 90,181, 22, 5,195,202, 51, 65,108,124,208, 89,196,121,210, 89,196,121, 18,196,198, 7,133, 17,163,237, 43, 86,172,248,186, 97, +195,134,233, 0, 68, 0,220,203,248,177,118, 78, 78, 78, 72, 74, 74,130,157,157, 29,236,236,236,144,148,148, 4, 66, 8,204, 4, + 48, 17, 64,111, 52, 66,171,213, 66,103, 37,208, 90, 1,133, 74, 5,119,119,119, 24,141, 70,191, 50,182,161,209,208,161, 67,253, +130,130,130,178,190,248,226,139, 52, 20,228,202,236,156, 48, 97,194,165,223,126,251, 45, 72,165, 82,229, 70, 70, 70,234, 26, 52, +104,208, 19,128,123, 76, 76,204,232,205,155, 55, 99,236,216,177, 40,231,166,211,160, 79,159, 62,103,159, 61,123,230, 55,106,212, + 40, 92,191,126, 29,171, 87,175, 70,118,118, 54, 1, 0,189, 94, 79, 44, 22,139,177,117,235,214,198, 13, 27, 54, 52,111,223,190, +253,253,154, 53,107,178, 1, 32, 46, 46,238, 85,105,130, 12,195,212,246,245,245,133, 94,175, 71, 86, 86, 22,158, 61,123, 6, 27, + 59, 59, 68,164,101,187,117, 92,247, 99,206,151, 39, 46,113,135, 55, 15,114,156,213,173,141,126,229,197,235, 1,245, 60,221,220, + 12, 70,147,123,116,122,102,218,187, 28, 88, 30,143,151,148,157,157, 13,131,193, 0,173, 86, 11,133, 66,129,156,156, 28,100,103, +103, 35, 45, 45, 13, 60, 30,239,117, 69, 26,182,185,185, 55,227,238,220, 96, 14,109,253, 22,126,230, 92,112,142,110, 4,231,228, + 15,168,101,200,194,182,133, 83,108, 12, 78, 46, 75,108,109,108,242,236,237,237,183, 3,240,175, 72, 47, 56, 56, 24, 57, 57, 57, +200,201,201,129,147,147, 19, 28, 28, 28,224,224,224, 0,185, 92,142,252,252,124, 40, 20, 10, 4, 4, 4,160, 81,163, 70,216,179, +103,207,159, 82,193,239, 25, 16,107,134,101,218,165,168, 52,240, 36, 18,212,116,144,250, 54,147,194,177,156,175,116,230,114,185, +135, 29, 29, 29, 47, 2,152, 14, 64, 2, 96,186,163,163,227, 69, 46,151, 59, 0,192,114, 0,251,170, 88,140,149, 75,150, 44,153, + 27, 19, 19, 35,126,242,228, 9,190,248,226, 11, 44, 93,186, 20,175, 94,189,250, 30,128,181,112,157,143,156,156,156, 66, 89, 44, +214, 79, 0,122, 3,232,233,225,225,209,165, 2,221, 1,115,230,204,209, 53,105,210, 36,250,197,139, 23, 3,238,220,185,211,116, +246,236,217,249,137,137,137,136,142,142,134,135,135, 7,188,189,189,161, 82,169,144,151,151,135, 1, 3, 6,216,217,218,218,142, +160,151,113, 10,133,242,119, 54, 89,111,121,145,127, 90, 68,171,212,229, 82,159,168,197, 98,241,146,176,176,176, 86, 13, 27, 54, +228, 0, 56, 4, 0, 65,108, 12, 25,208,186,241,206, 19,219,191,109,120,108,195,194,134, 61, 26, 6,236, 12, 98,163,168, 23, 91, +104,211,166, 77, 29,194,194,194, 90, 11, 4,130,143,203, 50,118, 0,224,224,224, 0, 59, 59, 59,216,219,219,195,193,193, 1, 86, +171, 21, 42,141, 14,106, 11,160,212, 25,144,159,159, 15,101,225,178, 74,111,132, 90,173, 46,254,110, 41,116,156, 56,113, 98,214, +230,205,155,101,233,233,233,223, 2,104, 48,118,236,216,254,155, 54,109,194,213,171, 87,117,189, 3,107, 57,173,104,215,248,235, +122,233,175, 22, 7,114, 49, 9,192,205,155, 55,111,162,117,235,214, 96, 24,102, 88,105,130, 34,145,232,135, 3, 7, 14,136, 34, + 35, 35, 81,171, 86,173,200, 97,195,134,125,240,237,183,223,250, 73, 84,185,183, 1,192,156,147, 17, 57, 99,198,140,175, 86,172, + 88,145,149,149,149,101,212,104, 52,174,253,250,245, 67, 82, 82, 18, 82, 83, 83,127, 43,195,100, 70,135,135,135,147,252,252,124, +196,198,198, 34, 60, 60, 92,244,213, 87, 95, 53,183,176, 88,253, 83, 96,243,225,216, 54, 77,155,143,106,217, 24,251,238, 62,225, +221,138,138,179,111, 90,221,203,225,113,114,122, 13, 19,131,215,239,114,180,149, 74,229,198,175,191,254, 90,165, 82,169,144,146, +146,130,167, 79,159,226,197,139, 23, 72, 72, 72,192,234,213,171, 85,185,185,185,155, 42,210,240, 20,114, 62, 91, 51,123, 2,195, +121,254, 27,240,228, 6,160, 81, 2, 90, 21,244, 47,195,176,235,101, 6,182, 28, 61,206, 79, 76, 74,178, 63,120,240,224, 68, 31, + 31,159, 48, 0, 1, 21,185,122, 0, 96,177, 88,111,155, 80,176, 88, 44, 37,128, 12,137, 68,146,108, 99, 99,147,204, 98,177, 50, + 8, 33,234, 63,163,230,179,204, 48,130,205, 6,248, 34,176,184,229, 78,237,249,193,176, 97,195, 14, 36, 39, 39,247,136,141,141, +109,181,105,211,166,175,133, 66, 97,196,166, 77,155,190,142,141,141,109,149,156,156,220, 99,216,176, 97, 7, 0,140,169,202,239, +251,251,251,207, 88,188,120, 49, 86,175, 94,141, 70,141, 26, 33, 32, 32, 64,179,100,201,146,141, 0, 22, 2,248,216,223,223,255, +246,140, 25, 51,198,203,100, 50,247,148,148,148, 70,223,127,255,253,148,141, 27, 55, 54, 75, 75, 75, 19, 86, 32,221,182,123,247, +238, 56,119,238, 28, 0,164, 3,136,205,201,201, 49,167,165,165,161, 78,157, 58,104,222,188, 57, 84, 42, 21, 84, 42, 21,228,114, + 57,124,125,125, 97,181, 90, 91,209, 75, 57,133, 66,161,252,191, 26,174,210,141,150, 80, 40,116, 8, 14, 14, 70,205,154, 53, 29, + 80,216, 91,203,137,207,153, 63,107,226,112,177, 52,236, 60,152,240, 43, 24,214,174,190,216,137,207,153, 95,248, 21,142,175,175, +175, 32, 56, 56, 24, 18,137,196,171,140, 31,191,158,145,145,129,224,224, 96,216,219,219,195,206,206, 14,193,193,193, 48, 26,141, +200, 87, 42,161,182, 0, 26,147, 21,249,249,249,200,205,202,132,198, 2,152,109,156,144,144,144, 0, 54,155, 29, 87,134,166, 71, +173, 90,181,178, 34, 34, 34,178, 0,220, 4, 48,117,233,210,165,152, 55,111, 30, 22, 45, 90,116, 64,156, 30,223,253,192,185,147, + 78,251,151,124,228, 18,192,103,134, 3, 48, 38, 39, 39,195,222,222, 30, 18,137,164, 84, 99,208,190,125,251, 38, 18,137, 4,187, +119,239, 38, 41, 41, 41,109, 80,208,133, 63,142, 97, 10,204,158,136,133,124, 0, 27,195,194,194, 90,124,245,213, 87, 81, 93,187, +118,229,182,108,217, 18,203,151, 47, 7,128,208,210, 52,229,114,249,189, 49, 99,198, 24,174, 93,187,134,151, 47, 95, 74, 78,156, + 56, 49,100,249,242,229,245, 19, 19, 19, 5,167,207,158,239,181, 55, 89, 49,228,219,139,183,132, 43, 46, 92,191,231,108, 43,169, + 87,195,217, 17,225,137,169, 60, 11, 27, 15, 42, 58,162, 45,184,236,137, 29,133,156,240,118, 2, 86,122, 71, 33, 39,172, 25,151, + 61, 65,169, 84, 30, 60,117,234,212,133,217,179,103,171,100, 50, 25,108,108,108,144,147,147,131,149, 43, 87,170,194,195,195,143, + 26, 12,134,211, 21,233, 90,172,164,137,119,117, 31,224,117, 68,241,123, 70, 43,193, 3, 3, 15, 33, 83, 63, 65, 96,157, 58, 48, + 24, 12,104,208,160, 1,179,116,233, 82,137,157,157,221,231, 21,154, 30,214, 31,170,155,153, 97,152, 12, 66, 72,170, 74,165, 74, + 17,137, 68,137, 60, 30, 47, 49, 55, 55, 55,133, 16,146,249,103,248, 44,194,194,103,173, 27,248, 3, 2, 17, 18,115, 84,105, 15, + 85,200, 45,109, 69, 27, 27,155, 9, 91,182,108, 17,254,252,243,207,166, 25, 51,102,232,167, 76,153,194,213,106,181,174, 83,166, + 76,225,206,152, 49, 67,255,243,207, 63,155,182,108,217, 34,148, 74,165,131,222,165, 32, 38,147, 9, 17, 17, 17,223,190,122,245, + 74,130,130,225, 70, 62, 89,178,100,201,216,152,152, 24,225,230,205,155,113,228,200, 17, 28, 57,114, 4,253,251,247,199,204,153, + 51,177,120,241,226,242,228,196, 13, 27, 54, 12,118,114,114,194,141, 27, 55,210, 0, 36, 2,104, 34,149, 74,109,250,247,239,143, + 30, 61,122, 64,167,211,193,104, 52, 22, 27, 45, 54,155, 13,123,123,123, 39,122, 13,164, 80, 40,148,191,220,100,189, 97,182, 56, + 0, 80, 20,170, 11, 9, 9, 97,202,187, 49, 90,242,100,144,171, 53, 72,200,215, 32, 41,207,250,198,103, 86,171,181,220, 95, 79, + 75, 75, 59,125,247,238,221, 9,193,193,193,156,180,180,130, 22,177,224,224, 96,104, 52, 26,164, 61,185, 15,181, 21,144,212, 10, +130, 90,173, 70,222,139,199,144, 54,108, 5,167, 62,163,176,110,243,102,125, 78, 78,206,214,210, 52,249,124, 62,183, 90,181,106, + 89,113,113,113,102, 0,185,118,118,118,221,125,124,124,112,253,250,117, 0,216, 71,128, 53, 8,191, 6,220, 56, 6, 82, 16, 82, +145,250,250,250, 66, 38,147, 65,165, 82, 93, 47, 77,243,238,221,187, 49, 38,147,169, 65,191,126,253,152, 95,126,249,229,144, 66, +161, 88, 4,224,169,222, 10,246,147,228, 76,168, 45, 16, 2,232,230,224,224,240,233,226,197,139,187,204,152, 49, 3,167, 78,157, +194,197,139, 23,141, 40,200, 5,187, 91,138,108,126,108,108,236,182, 57,115,230,180,100,177, 88, 83, 47, 93,186,100, 14, 8, 8, + 80, 24,141, 70, 75,237,192, 64,214,162,165,203,120,211,167, 78,182,207,209,224,121,143,218, 30,173, 25, 6,120,158, 42, 75,124, +165, 66, 78,121,251,180, 61,159, 29, 58,160, 77,195,246, 19,134,245,149, 74,106,213,131,250,217,125,247,109,135,207,174, 19,133, +199,132,220,144,201,250,159, 58,117,106,200,245,235,215,167, 27, 12,134,154, 2,129,224,181, 92, 46,223,160, 82,169, 42, 52, 89, +108, 54,187,143,222,163,154,131, 60, 55, 23,194,194, 72,148,194,100, 69,182,222,140,151,246, 1, 24, 81,205,187,184, 25, 52, 35, + 35, 3,238,238,238,140,197, 98,233, 91,158,230,197,139, 23, 17, 18, 18, 82,100, 60,193, 48, 12, 24,134,201, 14, 12, 12,204, 20, + 8, 4, 57, 60, 30, 79,177,102,205, 26,157, 78,167, 3,135,195, 17, 90, 44, 22,246,251,212,246,230, 98,184, 10, 8,243,195,148, +126,157,186, 54,170, 87,135,220,124,248,132,201,211,232,118,149, 19, 5,252,222,223,223,159,147,155,155,123, 26,192, 75,147,201, +180,255,208,161, 67,194,209,163, 71,235, 14, 31, 62, 60, 18,128,223,218,181,107,135,168, 84,170,237, 85, 41,199,171, 87,175,190, + 95,177, 98,197,220, 5, 11, 22, 96,207,158, 61, 51, 94,189,122, 53,175, 48,210,213,127,241,226,197, 88,179,102, 13,246,236,217, + 99,125,249,242,229, 89,171,213,250,106,246,236,217, 13,221,220,220,178,211,211,211, 95,149, 35,219,180,103,207,158,250,219,183, +111,243,149, 74,229, 45, 0,159, 78,155, 54,109, 98,139, 22, 45, 20,195,134, 13,147,230,230,230,202,197, 98, 49,127,199,142, 29, + 14, 28, 14, 7,106,181, 26, 12,195, 64,169, 84, 26,232,117,144, 66,161,252, 93, 41,203,139,252, 67, 40,243,222,192, 41,109, 3, + 53, 26, 77,102, 82, 82, 82,157,212,212, 84, 51, 0, 51, 0,228, 24,204,223,172,216,113,236,231, 65, 45,253, 37,233, 38, 19, 78, + 60,140,212,228, 24,204, 69,201,239,230,212,212, 84,101, 98, 98,162,141, 86,171, 85,149,241, 91,191,253,240,195, 15,218,107,215, +174,217,196,198,198,194, 98,177,160, 73,147, 38,136,142,142, 70,222,203, 8, 72,234, 52,129,164, 67, 8, 34,195, 30, 34,252,226, +101,196,171, 12,230,168,133, 43,242, 85,106,245, 98,163,209,120,162, 52, 65, 46,151,155, 11,128, 16, 66, 44, 0,160, 80, 40,158, +170, 84,170,118,110,110,110,120,254,252,185, 68,109,193,204, 33,243,215,109, 34,132, 88,120, 5,189,185,102, 13, 27, 54, 12,143, + 30, 61, 2,128, 71,165,105, 42, 20,138, 25,147, 38, 77,186,182,123,247,110, 78,108,108,108,143,159,127,254,185, 71, 84, 84, 20, + 97,114,147, 44,183, 53, 92,248,141,157,217,236, 71,223,192,139, 33, 33, 33,240,240,240,192,142, 29, 59,176, 97,195, 6,211, 71, + 31,125, 20,179, 97,195,134,102, 50,153,108,127, 25,219,159, 47,151,203,207, 59, 57, 57, 77,175, 95,191,190, 82,173, 86, 35, 39, + 39, 7,105,105,105,112,116,114, 98,153,193,106,237, 98,111,191,255,116,134, 82,194, 57,127, 15,247, 83,210,203,141,102,181,228, +178,199, 12,106,223,184,253,199, 11,230, 75,113,251, 4,152, 73,139, 65,126,254, 26,159,140, 27, 98,163,211,239,239,160,126,146, + 48, 58, 76,161,216,171, 80, 40,142, 84,177,178,244,108,221,186,245,129, 21, 43, 86,136,190, 92,189, 2,107,235,120,193,156,147, +131, 44,189, 5,217,122, 51, 20,121, 47,241,252,121, 36,156,156,156, 17, 31, 31, 15,157, 78,135, 23, 47, 94, 16, 54,155,125,186, +162,136, 78, 17, 37,154, 11,229, 2,129, 32,135,203,229,102,114, 56,156,220,216,216, 88,181, 78,167, 3,139,197,146, 88, 44, 22, + 81, 37,202, 90,205,217,217,121, 54, 10, 6, 19, 61,165,204,206,222, 24,204,133, 61, 56,232,232,235,236,212,107,225,148,209,206, + 62,158,174,242,216,152,215,166,173, 23,238,100,235,244,101,119,214, 0, 16,154,155,155, 91, 28,145, 60,124,248,240, 39,135, 15, + 31,158, 8, 96, 39, 10,230,221,186, 44,151,203,127,124,135,147,111,225,209,163, 71,231, 46, 88,176, 0, 34,145,168,120,240, 84, +145, 72, 36, 4,128, 95,127,253, 21,207,159, 63,111,129,194,124, 45,171,213,122, 32, 61, 61,189, 34, 77,191,160,160,160,216, 99, +199,142,241, 1,120, 78,155, 54,173,213,166, 77,155, 48,110,220,184,172,200,200,200,150, 0,226, 0,248, 77,157, 58,245,193,158, + 61,123, 28,172, 86, 43,242,242,242, 96, 48, 24,226,232,165,156, 66,161, 80,179,245,151, 16, 12, 32, 28, 5,227,103,245, 1,112, + 6, 5,105, 29,101,226, 93,232,206, 46, 0,232, 87,116,127, 44, 35, 25, 30, 40,232,145,117, 30,192, 79, 0,220,202, 18,117,114, +114,250,124,236,216,177,166,148,148, 20,146,145,145, 65,142, 28, 57, 66,102, 77, 24,107,233, 86,203,211, 90,203,211, 77,237,226, +226, 18,237,225,236,184,171,177, 24,179, 0, 84,171,196,134,141,141,138,138,154, 60,118,236,216, 9,133,191, 59,225,192,129, 3, +170, 75,151, 46,169,216,108,118, 40, 10,134,118, 40, 50,148, 99,250,246,237,171,210,235,245,170,192,192,192, 92, 20, 36,238,151, +197,144,142, 29, 59,230,157, 59,119,142, 88, 44,150, 63,140, 81,148,149,149, 69, 46, 94,188, 72,218,180,105, 35, 7, 48,186, 75, +151, 46,215,239,220,185,115,189,109,219,182, 71, 43, 42,176,179,179,243,252, 39, 79,158, 60, 74, 72, 72, 8, 59,115,230, 76,216, +254,253,251,195,166, 78,157,250,180, 97,195,134,218,152,152, 24,171,217,108, 38, 79, 30, 63, 38,129,181,107,171, 1,248,150,165, +211, 89,196,121,160,216,241, 53,209, 45, 31, 71,116, 3,188, 9, 0,162, 92,247, 57,201,156,209,149, 68, 79,239, 69, 58, 9,217, +119,223,165,166, 56, 58, 58, 94,120,244,232, 17, 81, 42,149,228,217,179,103,100, 76, 72, 15,114,119, 98, 87,114,190,135, 63,217, +211,161, 6, 89,215,189, 33,233,209,161, 29,249,225,135, 31,200,177, 99,199,200,252,249,243,173,206,206,206, 74,148,147,163,229, +238,238,126,233,208,161, 67, 97, 0,194,216,108,118,152, 66,161, 8, 83, 42,149,167,147,147,147,183, 4, 6, 6,206,173, 95,191, +254,200, 58,117,234,116,238, 84,195,119,110, 23, 27, 65,116, 87, 91,225,235,218, 82,241, 58,252,113,220,171, 98,236, 0,223, 90, +126,126,202, 27, 55,110, 88,245,122, 61,185,117,235,150,181,110,237, 0,221,218,161, 61,143,198,239, 88,117, 84,119,238,151, 11, +154,147,219,239, 28,254, 48, 36,162,163,152,245, 75, 43, 73,241,112, 28,239,202,112, 0, 39,240,123,175,195,177, 0, 78,162,252, + 94,136, 44, 0, 59,151, 47, 95, 94,178,167, 33, 0,176, 26, 54,108, 24, 70, 8, 9,107,216,176, 97, 88, 85, 11, 34, 22,139,103, +159, 58,117,106,137,143,143,207,234, 97,195,134,237,144,203,229,103, 70,142, 28, 25,129,130,206, 32, 12, 10,102, 71,232, 91,173, + 90,181,172,240,240,112,114,253,250,117, 50,120,240, 96, 37,143,199, 27, 69, 47,227, 20, 10,133,242,151, 48,185,180,191, 21,141, +163,181, 34, 34, 34,162,104, 12,173,105,229,137,207,155, 55, 47,236,209,163, 71, 97, 40, 24, 37,190, 92, 56, 28,206,241,143, 62, +250,136,184,185,185,169, 92, 93, 93,143,115,217,236,137,222, 34, 4,227,221,186,186,183,219,187,119,111,255,239,191,255,190, 15, +128, 22, 0,184, 94, 94, 94,105, 25, 25, 25,170, 59,119,238,168,218,180,105,163,114,118,118,150, 5, 5, 5,169,214,174, 93,171, + 50,153, 76,170,217,179,103,171,240,199,241,190, 74, 67, 8, 96, 58,159,207, 63, 94,183,110,221,136,133,253, 58,155, 86,207,156, + 72,198,250,187,168, 0,124, 15,224, 35, 0,246, 0,184, 67,134, 12,185,242,226,197,139, 11, 65, 65, 65,219, 42,161,235, 89,191, +126,253,171, 7, 14, 28,120,116,236,216,177,176,207, 63,255,252,145,147,147, 83, 74, 76, 76,140, 85,167,211,145,188,188, 60, 34, +151,203,201,153, 51,103, 44,142,142,142,155,203,220,112, 1, 59,157, 92,220, 87,234, 16, 14,201, 11, 70,145, 54,124, 86,234,187, +212, 20,137, 68,146,155,147,147, 67, 50, 50, 50, 72,108,108, 44, 57,122,244, 40,233,217,186, 57, 57, 56,117, 16,217, 55,161, 63, + 89,211,179, 57,105, 97, 35, 84,187,219, 72, 31,217,216,216,200, 42,211,235,208,221,221,253,146, 94,175, 47, 30,190,161, 90,181, +106, 97,129,129,129,199,130,130,130,214,157, 58,117,234,147,245,235,215,247,239, 84,195,119,238,202, 30,173,181,154,203,135,137, +242,208,247,100, 94,147, 0, 93,161,153, 47, 21, 47, 39,199,189, 55,174, 95,183, 22,153, 95,179,217, 76, 78, 28, 63, 78,134,246, +234, 22,145,127,254,215,159,110, 45,158,113, 96,118,147,128, 19,109,132, 24, 94,158, 97, 43,126, 20,145,194,169,189, 45,107, 75, +111, 31,199,244,118,118,172,239, 91,218,188, 49,189,212,208,128,128,128, 88, 66, 72,122,157, 58,117, 98, 1,236,171, 83,167, 78, +201,229, 15,203,144, 45, 30,156,116,201,146, 37,164,240,252, 96, 1, 88,180, 98,197,138, 48, 66, 72,152,191,191,255,109, 0,104, + 36,129,115, 7, 59,214, 79,253,252,220,114, 58,216,177,126,106, 36, 41,125,202, 40, 95, 30,106,183,115, 17,223,234,239,239,161, +236,232,101,119,115,223,174,159, 87,247,238,221,123, 7,128,205, 0,190,118,114,114,186, 53,124,248,240,231,123,246,236,121,190, +118,237, 90, 99, 76, 76, 12, 25, 63,126,188, 90, 32, 16,124, 77,175,131, 20, 10,133,242,151, 81, 52, 50,188, 71, 85,140, 86,223, +185,115,231,134, 17, 66,138,198,210, 26, 93,202, 58,253, 22, 44, 88, 16, 70, 8, 41, 26, 29,254,237, 1,204, 74, 27,208,108,201, +150, 45, 91,136, 64, 32,248,233, 29, 55,166,164,166,251,128, 1, 3, 90, 42, 20,138,102,110,110,110,205, 10, 35, 87,222,206,206, +206,177,251,247,239, 87,105,181, 90, 21, 33, 68,101, 54,155, 85,143, 30, 61, 82,117,236,216, 81, 85,226,169,191,162,114,190,193, +151,238,184,253,112,225, 4,242,165, 59,110,191,245,209,168,157, 59,119,158,139,139,139, 59,109,107,107,251, 69, 37, 53,189, 93, + 92, 92, 22, 57, 58, 58, 94,112,118,118,254,210,209,209, 49,221,104, 52,146,188,188, 60, 18, 29, 29, 77,174, 95,191, 78,238,222, +189, 75, 28, 29, 29, 83,202, 42,103, 23, 17,231, 94,222,234,233,196,186,115, 5, 49,108,154, 79, 0, 16,249,250,121, 36,251,135, +165,228,225,164, 30,164,163,144,253,219, 59,236, 79,216,219,219,111, 63,126,252,184,245,213,171, 87, 36, 52, 52,148,156, 57,115, +134,204,156, 57,147,212,246,244,208,183,228,179, 50,219, 9, 56, 23,222,101,192, 82,189, 94, 31,166, 80, 40,194, 84, 42, 85, 88, +221,186,117,195,154, 55,111,126,172,101,203,150,235, 14, 31, 62,252,201,202,149, 43,251,119,177, 17, 68,107, 46, 31, 38,228,243, + 94,132, 76,111, 75, 94, 79,236, 72, 58,139, 56, 79,202,212,116,115, 75, 41, 26,173, 93,173, 86,147,155, 55,111,146,171, 87,175, + 18,119,103,103, 69,123, 17,123,114, 27, 1, 58,180,177,133,125,101,203,217,201,142,181,235,222, 15,223, 88,180,231,246,144, 95, +199,246, 50,119,180,103,109, 41,177,222, 65, 66, 72,250,224,193,131,227, 9, 33,233, 71,143, 30, 77, 38,132,164, 15, 26, 52, 40, +158, 16,146, 14,224, 64,105,154,111, 13, 78,186,179,208,100, 77, 95,178,100, 73, 24, 33, 36,108,201,146, 37, 97, 64,193, 32,170, + 29,236, 88,187,239,111, 91, 99,213,159,217, 77, 14,143,239, 99,233, 96,199,218, 93,106, 57,237, 57,167,195,119,174, 39,134, 11, +251,200,241,153, 35, 45,109,221,109,111, 4, 4, 4,172,249,228,147, 79,142,221,189,123,247,169,197, 98,121, 30, 27, 27,251,124, +243,230,205,207, 91,181,106,117,219,201,201, 41,130,207,231,127, 84,209, 49,250,147,160,154, 84,147,106, 82, 77, 74, 9, 8, 33, + 40,175,191,251,233,111,191,253, 86, 66, 8,153, 61,100,200, 16,172, 90,181,106,104,253,250,245,135,123,121,121,185, 0, 64, 90, + 90,154,230,217,179,103,138, 33, 67,134, 96,209,162, 69, 88,189,122,245, 58, 20,228,178,252,127,146,113,226,196,137,106, 51,102, +204,144,173, 92,185,210, 58,126,252,248, 58, 0,158,101,103,103,215, 30, 57,114,228,116, 14,135, 51,196,215,215, 55, 40, 61, 61, + 61, 75,171,213,238, 3,176, 13, 21,180,153,150,133,128, 5, 75,211,234, 30,184,192,130,165,196,219,189, 22, 45, 90, 52,108,208, +160, 65,198,245,235,215,155, 21, 10,197,169, 74,202, 37,103,101,101, 45, 43, 90,112,116,116,116,127,242,228,201, 71,174,174,174, +172,216,216, 88,232,245,122,188,122,245,202,138,130,166,169, 82, 81,153,201,198, 31,143, 94, 10,156, 61, 42,196, 86,243,242, 49, +120,108, 54, 76, 92, 62, 50,238, 93,192,206,155, 47, 21,106, 35, 54,189,203,118,202,229,242,239,102,206,156, 57,242,139, 47,190, + 16,250,250,250, 50,191,253,246, 27, 14, 29, 58,164,151,201,100, 61, 1,220,248,125,232,167,170, 97,181, 90,193,231,243, 1, 0, +243,230,205, 3,139,197,226,202,100, 50, 62,195, 48, 2,134, 97,196, 12,195,176, 77,113,207, 97, 85,228, 33, 51, 79,142,228, 76, +121,185,122, 22,171,245,208,253,251,247,103, 53,110,220,152,245,240,225, 67,100,101,101,225,213,171, 87,196, 66,200,129,155, 90, + 75, 65, 82,162,190,242,229, 19, 59, 58, 13,104,228, 32, 96,241,119, 45, 66,123, 3,139,189,213,138,193, 40, 24, 75, 11, 0,118, + 50, 12,195, 3,144, 83,183,110,221, 78, 47, 94,188, 16,213,173, 91, 87,251,242,229,203,115, 12,195,120, 1,216, 93,154,166, 72, + 36,202, 6,144,125,244,232, 81, 0,152,132,130,157,215,100,241,226,197,233, 55,111,222,196,146, 37, 75, 50, 1,108, 1, 0,169, +131, 83,191, 32, 59, 30,195,255,101, 9, 90,233,193,218,100, 37,165, 70, 93,165,174,110,157,235, 75, 88,224,254,252, 21,154,185, + 7,178,248,102, 99,131,165, 75,151,222, 84,169, 84,250,131, 7, 15, 26, 62,252,240, 67,118, 76, 76,204, 3, 0,183, 0, 28, 69, + 97,142, 37,133, 66,161, 80,254, 82,222, 30,214,161,194, 28,173,183, 93,235, 42, 0, 63, 70, 69, 69, 21, 79, 42, 29, 21, 21, 21, + 6, 96, 43, 10, 70,131,239, 91, 5,199,187,176, 48,162,181,237, 29, 55,230,109, 77, 97,112,112,176,232,197,139, 23, 60,148, 62, +225, 49,243, 14,154,127,160,180,185, 14, 3, 2, 2, 54,152, 76,166, 99, 91,183,110, 61,204,102,179, 71,190,135,219,247,245,247, +247,207,219,191,127,191, 53, 52, 52,148, 44, 92,184,208,226,225,225,145,135, 63,230,104,189,161,217,158,207, 62, 50,167,142,151, +226,209,232,182,228,245, 39,253,200,173, 81, 29,201,100, 47,169,162,189,144,125,232, 61,159, 74,252,237,236,236,118,138, 68, 34, +133,173,173,237, 37, 0,173,223,231, 24, 57, 57, 57,237,113,119,119,191, 84,242,229,230,230,118,204,197,197,229,123,103,103,231, +133,246,246,246, 83,252,132,252,245,159,212,246,212, 69, 12,168, 75, 46,183,113, 33,163,156,249,111, 55, 29,190, 93, 78, 15, 63, + 63,191,156,189,123,247, 90, 79,159, 62, 77,230,207,159,111,173, 94,189,186, 2,229,228,181,149, 27,209,178,103, 31, 58, 50,168, +165, 53,179,143, 23, 89, 85,199,198,218,201,129, 93, 86, 15,197, 81,133, 6,120,108, 69,154,181,106,213,218, 74, 8,217,181,124, +249,242, 93,248,125, 46,208,110, 75,151, 46, 93, 76, 8, 89,188,116,233,210,197, 0,122, 0, 64,123, 59,214,222,125,253,155, 90, +210,122,123,146,111,234, 72, 45,237,237, 88,123, 75,141,100, 58,114, 78,156,156,216,199,154, 62,177, 13, 89,228, 47,177,180,116, + 20, 92,225,243,249,159,160, 32,226,220, 28, 0,159, 62, 53, 83, 77,170, 73, 53,105, 68,235,239, 97,188, 42, 51,169,116, 73,220, + 29, 29, 29,119,214,172, 89,243,176,175,175,239, 97,169, 84,186, 14, 5, 73,243, 85, 61, 16,126, 43, 86,172, 80,216,217,217, 53, +250, 19, 15,174, 43, 0, 47,252,113,226,220, 63,173,194, 44,243,192,140,152, 47,134, 62, 89,230,129, 25, 37,222,110, 94,167, 78, +157,111, 80, 48,154,247,251, 86, 66, 95, 71, 71,199,205,142,142,142, 41,133,185, 89,190,149,209,108,202,102,143,236, 36,100,255, +214,154,207,202,232, 36,228,220,105,198,102,143,248,135,158,128,229,117,182, 40, 75,179,154,179,179,243,122, 71, 71,199, 52,103, +103,231,205, 85, 52, 89,111,104, 54, 18,193,163,179, 61,251, 68,107, 27, 70,221,217,142,125,180,169,184,236, 78, 29, 85,216,246, +224, 37, 75,150,140, 35,132,140,243,244,244, 28, 82,194,248, 7, 45, 90,180, 40,132, 16, 18, 82, 52, 2,124,115, 49, 92, 59,218, +179,247,183,177,101,228, 29,237,217,251,155,139,225, 90, 86, 57, 59,217,179, 15,181,177,101,228,237,109, 89,251,125, 4,168, 78, + 47,230, 84,147,106, 82, 77,106,180,254, 29, 70,139, 86, 24,170, 73, 53,169, 38,213,164,154, 84,147,106, 82,163, 85,186,177, 42, +249,242, 40, 50, 90, 28,186,111, 40, 20, 10,133, 66,161, 80,222,139, 50, 7, 44,101,202,113,165, 85, 73,108,127, 23,103,123,153, +106, 82, 77,170, 73, 53,169, 38,213,164,154,255, 57,205,138,180,255,191, 59,214,253,101,208,166, 67,170, 73, 53,169, 38,213,164, +154, 84,147,106,254, 93, 52,255,117, 16, 66,222,105,144, 80, 10,133, 66,161, 80, 40, 20,202,239, 4, 23,254, 45, 30,184,180, 40, +154, 85,106,142, 22,167,249,242, 76,179,217,236, 10, 0, 28, 14, 71,102,122,176,208,163, 60,117, 46,208,197, 92, 48,253, 14, 56, +192, 36, 51,112,169, 20,205, 75,102,179,217,161, 80, 51,207,244, 96, 97,143,114, 53,155, 47,191, 80,114,125,243,131,133,221,254, +224, 20, 1, 54,183,249,242,180,183,202,234, 89,217,189,194,224,141, 49,177,254,178,114,254, 83, 52,255,203,112, 91, 44,207, 52, +153, 10,234, 17,151,203,145, 25,239,151, 95,143,120, 45,150,167,149, 92,223,116,127,161, 91,121,154, 98,145, 32,167,150,151,203, +186,242, 52, 99,211,178,103,171, 53, 58,167,242, 52,171,122,110,122,123,120,116,177, 20,158,155,108, 96, 82, 74,122,250,165,191, + 89, 93,106, 10, 96, 33, 0,219, 18,239, 69, 0,248,148,214, 74, 10,133,242, 15, 51, 90,225, 40,152,231,112,123,161,217,218, 94, +166,209, 50,155,205,174, 97,199, 23, 67,173, 7,186,140, 89,238,234, 55, 96,219, 31, 38, 74, 54,235,242,248,242,200,131, 65,108, +147,194,193,133, 99,180, 77, 75, 75, 99, 0,128, 97,152,159, 0,248,148,162,233, 16,118,124, 49, 52, 6,160,253,240,165, 14, 62, +128,109, 22,143,247,153, 72, 34,233,164,213,106,235, 3,128, 72, 36,138,212,170,213,215, 92,140,198,181,111,175, 95,214,150,149, + 44,107,231,209,203, 93,235, 12,216, 54,211, 98,181,242, 83, 31,110,109,175,203,142,225,112,205,250, 45, 95, 2,231, 22,151, 98, +170,202,208,251,253,119, 63,152,239,196, 5, 58,243,133,194, 70,246, 14, 14,237,172,132,212,181, 90,173,140,197,108,126,174,200, +207,191,101, 53,155,159,152, 13,106,167,176, 83,223, 88,203, 43,231,219,219,242, 1,192, 57, 14, 12,145, 72,165,157,216, 92,110, +107, 0,176,152, 76,191,169, 85,170,107, 3,129, 35,149,217,246,202,238,159,119, 93,255,191,134,201,100,118,141,187,176, 24,122, + 19, 16, 60,248, 27,215,134, 35,127,217, 15, 0, 6,217, 19, 55, 85,204,169, 22, 0, 32,169, 21,114, 95,224, 30,156, 9, 0,156, +196,116,215,232,208, 5,208,155,128,186, 33, 75, 93, 43,210,252,112,209, 33,167, 47, 38, 15, 18, 0,192,197,163,223,215,190,122, +236,199, 94, 0,208,121,208,180,115,221, 7,207,136, 6,128,213,219,143, 57, 29,248,102,104,185,154,149, 59, 55,243,121,249, 49, +161,254, 6, 69,186,189,183,132,227, 30, 19, 19,195, 2, 0, 79, 79,207, 74,157,155,213, 0,187,116, 96, 58,139,205,110, 87,203, +223, 63, 24, 0,137,125,253, 58,220, 98, 54,223,246, 0,182,252,201,117,105, 38, 33,111, 14,206,202, 48, 12,173,144, 20, 10,229, +159,198,153, 66,115,117,230, 15, 15,179,101,125, 67,173, 7,110,188, 2, 58,180,108,136,201, 35,123, 75, 75,126,118,100,219, 82, +159,152,135, 39,235,252,252,203, 90, 86,195,134, 13, 17, 23, 23, 87,169, 82,104, 12,192,245, 24, 0,242, 23, 54,121, 18,201,235, +245,107,214,216,118,235,214,141,227,233,233, 9,134, 97,144,145,145,209,242,242,229,203, 77,103,205,154, 53, 21,242, 23,121, 26, + 3,148,215, 99, 42,214, 45, 42,107,253,218,213,177,112,198, 80, 59, 0,248,114,204,150,166, 15,163, 50, 29, 95,191,126,221,101, +238,220,185, 57,236,107,215,126,116, 6,118,101, 2,201,149, 41,231,158,211,247,133,118,233,191,250,141,154, 49,227,168,191,191, +191,212,215,215,151,177,177,177, 1,155,205, 70, 94, 94,158,207,179,103,207,122, 61,120,240, 64,125,249,198, 79,252, 71, 15,250, +197,202,132, 45,116,149,218,118,109,154,240,162,141, 77,228,232,129, 3,171, 13, 29, 58, 84, 88,171, 86, 45, 0,192,235,215,175, + 3,142, 28, 57, 50,252,232,209,163,139,160, 77, 51,107, 12,208, 85,180,237,197,154, 0,132, 64,107,123, 87,215, 81,108, 46,183, +190,217,108,246, 42,140, 54,164, 90, 76,166, 72,185, 76,182,239,237,245, 41,127, 68,111, 2, 94,164, 3, 93,219, 5, 99,244,160, +174, 18, 0,152, 59,108, 69,203,196,248, 87, 60,131,193,128,218,129,117,219,124,253,205,186, 11, 96,177,176,247,216,229,226,245, + 43,163, 25,241, 34, 14,139,191, 94,143,180,167, 71, 90, 90,242, 95,117, 82, 42,242,217, 0, 96,107,103, 55,232,200,193, 95,175, +121, 6, 13,185,247, 42,219, 88, 41,205,242,206,205,243, 7, 55,123,164, 60,187, 86,239,135,139, 59,185, 62, 62, 62,120,250,244, +105,213,206,205,252, 40, 27,171,135,199,243,181,159,127,238,222,190,125,123, 72,165, 82,112, 56, 28,152,205,230,174,183,111,223, +238,186,120,241,226,105,200,143, 82, 87,246,220,172, 4,107, 25,134,233,244,225,228,153, 30,189,251, 15,193,160,158,109,104, 69, +164, 80, 40,255, 52,138,162, 87, 37,123, 30,110, 47,215,104,113, 56, 28, 89,183,177, 43, 93,219,181,104,128,135, 79,162,243, 19, +146,210, 85, 69,159,229, 70, 30,169,221,191,141, 87,189,155, 55,111, 64,175,215,227,183,223,126,195,147, 39, 79, 16, 31, 31,143, + 41, 83,166,232, 11,155, 14, 75,211,204,107, 63,124,169, 3,242, 99,164, 1,252,168, 26,151, 95,190,100,235,116, 58,220,188,121, + 19,121,121,121,224,243,249,168, 86,173, 26,186,119,239,206,121,249,242,165, 99,151,110, 61,237,218,247, 28, 17, 7,187, 0, 21, +135,195,201, 43,107, 30, 17, 14,135, 35,235, 50,102,185,107,189,128,234,120,157,144,150,191,240,155,159, 85, 86, 43,225,196,198, + 39, 26,111,220,184,129,224,224, 96, 92,186,116,201, 41, 55, 55,247,171, 45, 91,182, 44,228,126,251,195, 70,147, 33,103, 14,202, +214,203,107, 63,124,169,131,147,236,176,239,213,243, 39,120,145,145,145,188,173, 91,183, 34, 39, 39, 7,124, 62, 31,246,246,246, +112,119,119, 71,237,218,181,153, 47,191,252, 82, 26, 18, 18,137,143, 39, 13,241, 53,250, 77,140, 42,171,156,197,219,174, 74, 20, + 59, 43, 46,214, 58,118,230, 12,171,109,219,182,111, 60,182,215,172, 89, 19, 61,122,244, 16,142, 26, 53,170,214,208,225, 35,173, +237,251,124,248, 26, 82, 95, 77,133,154,234,100,145,147,230,174,103,215,225,195, 79, 45, 93,186,212,222,221,221, 29, 18,137, 4, + 0,144,159,159, 95, 45, 33, 33,161,229,162, 69,139, 6,223,143, 56,200,105, 31,146,156, 6,137,183,182,188,253,249, 95,133,203, +229,200,138,162, 72, 54, 18, 81, 94,114, 74,166, 26, 0, 12, 6, 3, 12, 6, 3,244,122, 61, 62,154, 54,133, 61,105,112,115,127, +223,118, 51, 31,199,167,102,230,214,189,124,207,177,232,187,166, 10, 52, 57,154,120,185, 60,233,202,164,197,159,127,238,238,230, +246,123,139,224,222, 61,123,216,185,185,185, 93, 23, 47, 94, 92,143,136, 59,202,235,134, 44,181, 47, 79,179,188,115, 83, 30,125, +166,198,215, 51,122, 52,218,246, 77, 40, 44, 22, 11,238,222,189,139,155, 55,111, 98,221,186,117,228,220,185,115,249,182, 18,201, + 36,148,123,110, 70,217,180,245,200,240,251,246,219,163,140, 64, 32,192,201,147, 39,241,242,229, 75,176, 88, 44, 52,108,216, 16, +163, 71,143, 70,215,174, 93,221, 39, 79,158, 66,218,247, 28, 22, 11,187, 64,229,123,214, 37, 22,128,153,243, 23,127,235, 49,102, +226,116,172,254,250, 75,106,180, 40, 20,202, 63, 57,154, 85,230, 16, 15, 8, 13, 13, 37,133,175, 14, 0, 64, 0, 86,205, 1,219, + 14, 28,126,100, 61, 83,115,192,182, 3, 4, 96, 17,128,101, 11, 84,111,220,184,177, 73, 46,151,147, 7, 15, 30,144,143, 62,250, + 72,189,113,227,198,107,103,206,156, 57, 98, 54, 26,119,120,122,120,124, 71, 80,122,130, 61, 1, 88,190,128,157, 88, 44,206, 74, + 74, 74, 34,103,207,158, 37, 75,150, 44, 33,251,246,237, 35,231,206,157, 35,151, 47, 95, 38,231,206,157, 35, 7, 14, 28, 32, 17, + 17, 17, 36, 58, 58,154, 72, 36,146, 44, 95,192,174, 28, 77, 54, 1,216,181, 7,108,157,115,244,161,105,105,224,128,109,179, 8, +192,118, 0,234, 52,110,220,216,114,228,200, 17,178,119,239, 94,242,203, 47,191,144,136,136, 8,146,157,157, 77, 56, 2, 73, 86, +209,247,202, 42, 39, 1, 88, 94, 94, 94, 89,114,185,156,120,123,123, 19, 62,159, 79,220,220,220, 72,237,218,181, 73,203,150, 45, + 73,175, 94,189,200,200,145, 35,201, 87, 95,125, 69,228,114, 57, 17, 10,133,153, 69,223, 43, 75, 51, 24, 16, 73, 36,146,164,176, +176, 48, 82, 22, 90,173,150,100,103,103,147, 11, 23, 46, 16,137, 68,146, 20, 12,136,202,211, 20, 1, 77,130,130,130,178,178,179, +179,137,209,104, 36, 73, 73, 73,228,217,179,103,228,229,203,151, 36, 41, 41,137,104,181,218, 98,237,232,232,104,226,231,231,151, + 37, 2,154,148,165,249, 95,166,168, 78,188,253,242,113,115,235,229,238,238,174, 61,122,244, 40, 73, 77, 77, 37,187,119,239, 38, + 44, 96,197,219,235,149,167,201, 7,186,183,109,219,214,114,247,238, 93,242,248,241, 99, 50,111,222, 60,210,163, 71, 15,210,179, +103, 79,178,120,241, 98,146,146,146, 66, 82, 82, 82, 72,175, 94,189, 44,124,160,123, 69,245,179,180,115,211, 14,240, 9, 9, 9, +209, 26,141, 70, 18, 27, 27, 75,234,215,175,159,194, 6, 70, 73,128,122, 29, 0, 65, 69,245,211, 11,112,240,240,240, 72,191,123, +247, 46, 57,118,236, 24,241,245,245,205, 98, 3, 31,218, 2, 53,109,129,154,108,224,195,154, 53,107,102,221,189,123,151,228,228, +228, 16, 31, 31,159,116, 47,192,225, 61,234, 18, 11,192,206,249,139,191, 37, 81, 41,106, 50,127,241,183, 4, 64, 18, 41,200, 30, +189, 68,107, 36,133,242,223,227,109, 47,242,143,191,175, 16,242,102,175,195,144,144, 16, 6,192,245,242,190,164,101,179, 87,174, + 94,189,154,163,211,233,240,243,207, 63, 43, 63, 24, 60,248,112,135,118,237, 98,107,248,250,202, 25, 22,171,194,217,134,179, 4, +130, 79, 86,175, 94,109,111, 48, 24,240,232,209, 35, 52,109,218, 20,238,238,238,144, 74,165,144, 74,165,112,117,117, 69, 96, 96, + 32,100, 50, 25,108,108,108,240,197, 23, 95,216,101, 9, 4,159, 84,164,107,181, 18, 14, 0, 88,172, 86, 62, 15,152,236,215,172, +217,163, 69,139, 22,177,156,156,156,224,232,232, 8,169, 84,138,151, 47, 95,194, 96, 48, 64, 44, 18, 87,106,144, 86, 22,139,197, +146, 74,165,184,122,245, 42,102,206,156,137,214,173, 91,195,222,222, 30, 54, 54, 54,168, 95,191, 62,186,119,239,142, 73,147, 38, + 33, 54, 54, 22, 76, 37,146, 74,158,115, 56,211, 39, 77,154,228, 26, 28, 28, 92,234,231, 58,157, 14,114,185, 28, 89, 89, 89,168, + 86,173, 26,134, 12, 25,226,250,156,195,153, 94,150,158, 19,224, 94, 45, 32,224,212,131, 7, 15,156, 37, 18, 9,246,238,221,139, + 19, 39, 78,224,252,249,243, 56,123,246, 44, 66, 67, 67,113,242,228, 73,100,101,101, 1, 0, 2, 2, 2,112,232,208, 33,103,169, +171,107,168, 19,224, 78, 79,233,202,145,152,153,121,177,126, 70,134,243,168,145, 35,111,169, 84, 42,140, 26, 53, 10, 43, 87,173, +250,146, 11,204,170,204,247, 3, 1, 59, 71, 15,143, 93,223,126,251, 45, 43, 35, 35, 3, 3, 7, 14,204, 94,187,106,213,132,240, + 11, 23,106,133,157, 63, 95,107,229,210,165, 19, 58,116,232,144,157,146,146,130, 61,123,246,176,220,124,124,118, 5, 2,118, 85, + 45,167, 18,152,185, 97,195, 6,161, 78,167, 67,183,110,221, 98,173,145,145,129,102,224, 87, 21,240,242, 58, 96,172,232,251,233, +192,244, 47,190,248,194, 93, 32, 16,224,179,207, 62,203,214, 36, 38, 54, 48, 3,191,228, 3, 9,249, 64,130, 25,248, 69, 25, 23, +215, 96,204,152, 49,217, 2,129, 0,235,215,175,119, 79,255,125,210,237,202,210, 20,192, 41, 0, 55, 0,164,125, 56,121,230,135, +193,205, 91, 97,207,142, 45,248,102,233,220, 93, 0, 62, 96, 24,102, 31,128, 57,180,230, 81, 40,255, 77, 42,227, 69,254,166, 76, + 46,235, 3, 78, 73, 39, 9,160, 99,121, 42, 14, 78, 78, 77, 27, 52,104,128,155, 55,111, 34, 40, 40,232,129,189,189,189,153, 39, + 16,128,203,229,130, 88, 43,244, 89, 16, 73, 36, 93,186,118,237,202,185,119,239, 30,252,252,252, 32, 18,137,192,229,114,223,120, +241,120, 60,120,120,120, 64,161, 80,160, 75,151, 46,220, 77,155, 54,117,129, 94,255,117,133, 55,196,152,103,210,172,123,223,142, +252,105,247,174,154,237,219,183, 71,126,190, 2, 86,171, 21, 98,177, 24, 6,131, 1, 28, 14,167,160, 9,200, 68, 20,149,217, 99, + 22,139,197,194,102,179,225,231,231,135,149, 43, 87, 66,167,211,129,199,227, 1, 0, 20, 10, 5,228,114, 57,158, 61,123,134,132, +132, 4,144, 74,140, 72,102, 99,103,215,123,232,208,161,165, 78,248,171,215,235,145,159,159,143,252,252,124,200,229,114,232,116, + 58,180,106,213,138,127, 38, 52,180, 55,114,114,214,150,250, 29,161,112,240,158, 61,123, 92,249,124, 62,180, 90, 45,148, 74, 37, +146,147,147,145,152,152,168,147,201,100,102, 27, 27, 27,150,175,175, 47, 75, 32, 16, 8, 6, 12, 24,192, 40, 20, 10, 48, 12,131, +144,144, 16,167,253,123,247, 14,133,193,176,142,158,210,149,227, 34,160,111, 98, 48,244,109,209,188,249,213, 7, 15, 31, 6,127, +242,201, 39,136,136,136,248, 86,124,240,224, 13, 13,240,164,188,239,198, 2,211,191, 43, 97, 96, 72, 98, 98,144, 17,200, 42,177, + 74,130,111, 92,220,249, 49, 99,198, 60,141,136,136,112, 94,191,126,189,251, 7, 3, 7, 78, 7,176,162, 42,101,180,177,179,107, +230,225,225,129,115,231,206, 33, 41, 62,126,174, 25,208, 86, 41,188,196,102,183,109,223,190, 61, 78,158, 60,137,148,196,196,185, +230, 55,203, 88,240,160, 4,100,113, 98, 99,231,238,218,181,107,231,248,241,227,193,230,112,218,194, 92,165,134,195, 63, 36,190, +143,159,242, 9,118,109,223,180, 11,192, 68, 0, 86, 0, 15,104,141,163, 80,254,219, 81,173,138,188,200, 63,200,108,109, 7, 80, +181,136,150,171,171,171,151, 84, 42, 69, 90, 90, 26,234,214,169, 35, 19, 8, 4,224,115,185, 16,242,249,149, 42,129, 70,163, 9, +242,244,244, 68,126,126, 62,156,157,157,193,227,241,138, 95,124, 62,191,248,127, 27, 27, 27,176, 88, 44,248,248,248, 64,163,209, + 4, 85,168,155,249,204,245,224,166,105, 31,221,189,113,174,230,192,129,131,224,224,224, 8,111,239,106,112,117,117,133, 72, 36, +130,183,183, 55,106,213,170, 69,214,174, 93, 11,177,107,195, 74, 93,200, 75,154, 39, 14,135, 3,139,197,130,204,204, 76, 68, 69, + 69, 33, 34, 34, 2,119,239,222,197,227,199,143,161, 84, 42, 43, 53,242,171, 70,171,109,196,225,112, 74, 53, 89,114,185, 28,114, +185,188,216,104,101,101,101, 33, 33, 33, 1, 42,181,186,113, 57,166,119, 80,131, 6, 13,216, 0, 32, 18,137,208,184,113, 99,108, +219,182,205,124,250,196,137, 97,245,238,222,117,244,190,112,193,254,167,173, 91,135, 13, 25, 50,196,114,239,222, 61, 40, 20, 10, +188,120,241, 2, 46, 46, 46, 28,190, 80, 56,148,158,206, 85, 35, 12, 80, 59, 43,149, 61, 91,183,110, 29,151,159,159,143, 53,107, +214,176,184, 54, 54,219,151,150,209,196, 87, 12,155,221,166,125,251,246, 56,117,234, 20,210, 18, 19,231, 37,150, 98, 96, 18,129, +172,164,216,216,121,187,118,237, 66,247,238,221,193,112, 56, 85, 78, 84,106,217,178,101, 3,171,213,138,167, 79,159,194, 30,184, + 95,213,239,215,242,247, 15, 46,138,252, 74,128, 91,101,173, 39, 1,110,133,135,135, 67, 36, 18,161,110,189,122, 77,170,248, 51, +107, 25,134, 73, 31, 63,229, 19, 28, 59,127, 7, 0,176,107,251,166,204, 18, 38,139, 66,161,208,136,214, 63, 53,162, 85,100,172, + 74,190,240,134,209,170,164,249, 0, 0,112,185, 92,240, 5, 2,240,249,252, 2,131, 36, 16, 84, 90,131, 97, 24, 8,133,194, 98, + 99, 85,210, 96,149,252, 95, 44, 22, 87,122,232,250,188, 87,231,219, 77,156, 48,158, 47, 16, 8, 96, 48,232, 65, 8,129, 64, 32, +132,189,189, 61,252,252,252,160, 80, 40,208,186, 77, 7,125,178,156, 23,234, 84,119, 64,196,187,236, 61,179,217, 12,181, 90,141, +188,188, 60,228,230,230, 66,161, 80, 64,171,213, 86,186, 43,186,213,106,101, 39, 39, 39,227,215, 95,127, 69, 78, 78, 14,128,130, + 68,235, 34,115, 85,244, 55, 46, 46, 14,123,247,238, 69,124,124,124,149,142, 79,187,118,237, 16, 26, 26,202,238,216,165,203,142, + 75,190,190,105,151,124,125,211, 58,118,233,178,227,212,169, 83,108, 47, 47, 47, 36, 36, 36,224,209,163, 71,200,203,203, 3, 33, +132,246,159,127, 7, 94, 3,121,154,220,220,241, 95,126,249, 37,145, 74,165, 88,243,221,119,141, 86, 0, 35, 42,107, 96,236,202, + 49, 48,118,239,103, 96, 64, 8,129,213,106,133,197, 98,121,167,109, 99, 24,134,225,114,185, 85, 29, 90,161, 42, 43, 23, 39,190, +127,241,213, 74,156, 61,121,164,232,253, 24,106,178, 40, 20,202,191,128, 50, 19,225, 57, 37, 28,100,241,223,178,200,204,204, 76, + 85,171,213, 53,125,125,125,145,146,146,226,234,227,227,147,200,231,114,193,227,243,193,176, 42,246, 4, 98,177,248,105, 90, 90, + 90, 27, 47, 47, 47,152,205,230, 98, 83,245,118,211, 97, 81,148,230,241,227,199, 16,139,197, 79,161, 43,119,228, 4, 88, 12,121, +213,155, 52,105, 82, 28, 25,178,183,183,135,189,189, 29, 4, 2, 33, 22, 44, 88, 96, 93,191,118,237, 22,159,206, 75,243,199,205, +250,146,124,185, 98,199,159,186,103, 43,123, 99, 18,139,197, 79,189,189,189, 91,217,217,217,225,216,177, 99, 72, 72, 72, 64, 94, + 94, 30, 52, 26, 13,244,122, 61, 52, 26, 13, 12, 6, 3,132, 66, 33,234,213,171, 7, 91, 91, 91, 92,190,124,249, 41,244,250,210, +205,101, 78,206,177,167, 79,159,182,106,222,188,121,113, 68,165, 83,167, 78, 76,167, 78,157,156,139,163,104, 26, 13,178,179,179, +241,224,193, 3, 92,190,124, 25, 12,195, 32, 38, 38,198,162,215,106, 15,208,115,226,221,208, 1,191,177,119,237,218, 57,117,234, +212, 9,109,218,180,129, 5,232, 5, 96,239,255,208,192, 0, 0,238,222,189,251,204, 98,177,180,169, 93,187, 54,228, 64, 11, 0, + 39,171,100, 34, 95,189, 10, 55,155,205, 93, 26, 53,106,132, 99,135, 15,183, 3,144, 80,218,122,106,160, 93,112,112, 48,180, 90, + 45, 94, 60,127, 30, 86, 5,147,181, 99,254,226,111, 63, 28, 51,113, 58,246,236,216,130, 93,219, 55, 37,239,220,182,209, 27,149, +200, 31,163, 80, 40,255,169,104, 86,133, 94,228,111,202,228,178,204, 23,167, 42, 42,249,121,121, 97,225,225,225, 53,155, 52,105, +130, 29, 59,118, 52,111,221,170, 85, 42,143,207, 55,243,121, 60,176, 42,113, 35,209,170,213, 87,174, 92,185,210, 98,192,128, 1, +156,123,247,238,193,221,221,189,216,104, 21,253,229,112, 56, 32,132, 64, 44, 22,227,248,241,227, 70,173, 90,125,165,194,104,145, +197,106, 97, 21, 26, 61, 66, 8,228,114, 57,120, 60, 30,214,173, 91,143,205,107,215,142,180, 0, 71, 2, 36, 46,159, 3, 16,254, +207,110,208, 26,205,213,179,103,207, 54, 93,180,104, 17,183, 90,181,106,144,203,229,200,203,203, 67, 78, 78, 14, 20, 10, 5, 20, + 10, 5,242,242,242, 32,151,203, 33, 20, 10, 17, 17, 17, 97,210,105, 52, 87,203,210, 19,232,116, 71,199,142, 29,251, 69,120,120, +184, 7,135,195,129,201,100,130,213,106,133,213,106,133,209,104,196,171, 87,175, 16, 25, 25,137,151, 47, 95, 34, 55, 55, 23, 92, + 46, 23,108, 54, 27,143, 31, 63,206,147,152, 76,135, 13,244,156,126,103,184,192,177,219,183,111, 79, 24, 61,122, 52, 60,171, 85, +235,128,148,148, 74, 25,152, 19,229, 24,152,252,119, 51, 48,191, 27, 32,165,242, 97, 92, 92, 92,155,142, 29, 59,194,163, 90,181, +111,235,165,164, 92,122, 94,133, 60, 45,139,217,124,235,246,237,219, 93,198,140, 25,131, 29, 59,118,124,235, 18, 23,119, 62,235, +173,102, 78, 23,192,165, 70,173, 90,223,126,248,225,135,184,120,241, 34, 44,102,243,173,114, 36, 75,142,248, 94,253,195,201, 51, +189,223, 74,124,223,198, 48,204, 12, 0,107,104,141,162, 80, 40,255,230,136, 86,149,154, 14, 69, 22,203,252, 57,115,230,152, 88, + 44, 22, 6, 13, 26,100,115,242,212,169, 33,143,159, 60,241,147,201,100,246, 22,139,165, 66, 45, 23,189,126,227,156, 57,115,228, + 6,131, 1,129,129,129,200,205,205,133,197, 98, 1,135,195, 1,135,195, 1,195, 48, 96,177, 88,144, 74,165, 8, 15, 15,199,206, +157, 59, 21, 46,122,253,198, 10,111, 18, 22,203,211,189,123,247,130,205,102, 19,161, 80, 8,134, 97,192,225,112,176,126,253,122, +217,102,224, 24, 0,176, 89, 44, 3, 0,176, 88, 76,101,179,119, 43,108,183,228,243,249,176, 22,116, 2,168,112, 93, 7,189,126, +195,234,213,171,149, 47, 94,188,128, 90,173, 46,142,190,169, 84,170,226,228,122,185, 92, 14,134, 97,160, 86,171,113,234,212, 41, +165,131, 94,191,161, 44,189, 28, 32, 35, 37, 38,166, 95,243,230,205,115,226,226,226,144,159,159,143,167, 79,159,226,242,229,203, + 56,116,232, 16, 46, 94,188,136, 87,175, 94,193,108, 54,195,203,203, 11,132, 16,156, 56,113, 34,223,172, 84,246,202, 1, 50,232, + 57, 81, 54,213,221,221,187,184,185,186, 38,185, 56, 59,167, 84,119,119,239,242,246,231,118, 64,116,116,116, 52,204,102, 51,252, +252,252, 28,203,203,211, 34,102,243,237,219,183,111, 99,204,152, 49,240,174, 89,115,149, 47,224,242,246, 58,190,128,139,111,173, + 90,171,138, 12, 12, 49,155,111, 87,181,204, 54,192,166,207, 63,255, 92,203,227,241,112,240,224, 65, 63,147,191,255, 75, 14, 48, + 66, 10,212,233, 8,240, 42,250,190, 7,176,229,171,175,190,202, 96, 24, 6,251,246,237,115,182,171, 85,235, 25, 7, 24,107, 7, + 84,183, 3,170,115,128,177,118,181,106, 61, 59,120,240,160,179,217,108,198,172, 89,179, 50, 60,128, 45,229, 72,206, 36,132,244, + 37,132,180, 39,132,120,239,220,182, 17,103, 79, 30, 41, 50, 89, 19, 81,144,244, 62, 26,192, 51, 90,227, 40, 20,202,191,153, 82, +195, 80,156,230,203, 51, 1,226,218,161,101, 67, 60,124, 18,149,239,236, 96,123,161,232,179,220,200, 35,181, 59, 7,217, 54,252, +225,135, 31,192,229,114,145,156,156,140,231,207,159,195,214,214, 22, 35, 71,142,212,107,149,202,126, 37,230, 58,236, 10,224,114, +161,102,193,124,106,249, 49,210, 90,156,136,154,231,207,134,178,237,236,236,160, 82,169,192, 98,177, 32, 20, 10, 33, 22,139, 33, + 18,137,240,232,209, 35,244,233,219,223,146, 37,110,255,251,128,165,191,207,167, 86,172, 89, 52,214, 80, 11, 64, 28, 14,124,230, +234,233, 57,103,225,194,133,162, 30, 61,122,128,199,227,161, 90,245,128, 12,191,158,107, 54,177, 88,140, 57, 37, 71,177,160, 86, +117, 79,187,231, 49, 9, 0, 24,153,233,193, 66,207, 18,115, 29,254,161,156, 62,134, 27,126,199,127, 89,107,219,184,113, 65, 62, +186, 92, 46, 71,102,102, 38,100, 50, 25,228,114, 57,212,106, 53, 0, 32, 52, 52, 20,103,111,190, 84,104,171, 13,137, 45,171,156, +191,111,123,148,141,167,241,126,141,253,123,127, 97,187,184,184, 32, 51, 51, 19, 89, 89, 89,144,203,229,208,106,181,176, 88, 44, +200,205,205,197,207,187,126,177,228, 72,219,199, 23, 15, 8, 89,158,166, 58, 89,228,168,186,227, 21, 92,207,151, 76,152, 48,193, +198,214,214, 22, 86,171, 21,121,121,121, 72, 74, 74, 66, 92, 92, 28,110,222,188,169,150,201, 13, 80, 59,119, 75, 41, 30,176,180, + 20,205, 63,145,127,156,102,201,113,171, 60, 61, 60,210, 18, 19, 19, 93, 45, 22, 11,188,188,188,204,242,220,220, 85,124,224,162, + 13,144, 14,128,100, 3, 11, 55,108,218, 52,190,127,255,254,104,214,172, 89,114, 70,102,102,141,210,234, 18, 1,216,129,128,157, +166, 90,181,200, 7, 15, 30,184, 39, 37, 37, 97,204,152, 49,217,137,175, 95,207,179, 43,204,215,202, 7,218,249,214,170,181,234, +224,193,131,206, 53,107,214, 68, 80, 80, 80,134, 48, 41,169,126, 20,144, 95, 70,253, 44,243,220,148, 71,159,169, 49,109, 96,131, +102, 31,125,244, 17,204,102, 51,110,222,188,137,251,247,239, 35, 49, 49, 17,119,238,220,145,219, 74, 36,195, 74,204,117, 88,106, +253,236, 21,160,246,219,183,111, 47,195,227,241,176,107,215, 46,132,135,135, 3, 0,130,131,131,241,225,135, 31,194,108, 54, 99, +212,168,209,228, 76,148, 40,182,188,250, 9,160, 1,128,239, 80, 96,242,154, 17, 66,132, 12,195,164, 1,240, 70,213,114,178,104, +253,164,154, 84,243,191,163,249,175,162,220, 73,165, 75,206,167,182,252, 71,216,189, 57,205,199,164,180, 35,219,150,114,218,182, +107, 95,103,233,146,197,172,230,205,155,195,219,219, 27,193,193,193, 72, 74, 74, 18,216,219,219, 87, 52,159,154,170,125,207, 17, +113, 13, 27, 54,180,159, 55,111,158, 93,247,238,221,185,222,222,222, 32,132, 32, 60, 60, 28,199,142, 29, 51,238,216,177, 67,161, +113,235, 43, 15,187,246,171,170, 50,243,169,221, 7, 52, 0,150, 85, 75, 75,219, 62,125,218,180,197,141,155, 52,153,176,100,201, + 18,150, 84, 44,226,174, 92, 48, 81, 8, 0,203,191, 63,100,215,127,200, 72,108,240, 7, 58,140, 40,125, 30,185,146,229, 76, 74, +153,148,216,123, 96, 23,255,207,102,140,183, 12, 29, 58, 84, 98,107,107, 11,111,111,111, 56, 56, 56, 32, 54, 54, 22, 41, 41, 41, +228,244,233,211,170,187,143,163,185, 39, 46, 62, 76, 20,218,121, 84,102, 94, 66,101,251, 30, 31,196,247,238,221,219, 97,236,216, +177, 54, 77,155, 54,229, 10, 4, 2, 8, 4, 2,100,102,102,226,213,171, 87,198,211,167, 79,171, 52,174,189,242,194,174, 29, 84, + 86,114,174, 67,109,251,225, 75, 95,221,186,180,100, 86,228,211,167,163,173, 64, 35,163,209,232,101,177, 88, 24, 22,139,149,110, +181, 90,159, 26,149,202,157,250,224, 37,235,233, 92,135,149,195, 98,177,240, 44, 22, 11,228,114, 57, 46, 93,186,196,121,253,250, +245,194, 39, 79,158, 44, 76, 75, 75,131,201,100,194,224,193,131, 17, 28, 28,140,107,215,174, 33, 43, 51,243,116,121, 90, 81, 64, +190, 32, 37,229,195, 73,147, 38,157,219,187,119, 47,235,201,147, 39,206,187,118,237,250,185, 52, 3, 51,122,244,104,107,102, 82, +210,135,122, 32,191,156,250, 89,222,185,153,125,254,224,230, 39, 3, 6, 13,169,183,100,209, 66,110,235,214,173,225,236,236,140, +118,237,218,193,104, 52,218,215,173, 91,183,162,115, 83,217,190,231,176,216, 70,141, 26, 73,214,175, 95,239, 62,126,252,120,204, +152, 49, 3, 0,160,213,106,113,241,226, 69,204,154, 53, 43, 35,137,211, 66, 93, 81,253, 44,140, 84, 21, 25,176, 27, 0,218, 3, +136, 5, 77,124,167, 80, 40,255, 78,138, 38,149,246, 64,193,196,210,103, 80,240,112, 94,241, 92,135,183,238, 63, 67,201,105, 62, + 10,240,120,110,246, 25,251,122,202,156, 85, 65,108,147,194,129,203,232,108, 99,162,163,153,138,230, 60, 44,158, 79,205, 46, 64, +229, 20,119,160,249,202,229,203, 63,217,176, 97, 67,151,162, 33, 28,196, 98,241, 83,173, 90,125,197, 69,175,223,168,177, 11,184, + 82,213,185,249, 82,128, 76, 0,211, 28,194,194, 54,133,244, 31,188, 90,232,232,199,253,114,197, 14, 29,155,197, 50,188, 74,203, +194, 6,127, 64, 82,137, 14,146, 26, 3, 16, 41,247, 48,103, 58, 13,137,250,234,243,207, 63, 91,190,108, 89,115,169, 84,218,193, +104, 54, 7, 88,173, 86,192,106,141,209,168,213, 55,136,209,248, 64, 31,188,104,173,208,206,131, 84,122, 94, 66,251,186, 74,199, +248, 35,205,119,239,220, 57,243,240,225,195,127,216,118, 39,189,126,147,198,190,238,229,202,108,123,201,117,116,192,111,144,201, +126, 43, 47,116, 73,231, 58,172, 28, 28,171,117,178,131,131,195,158, 46, 93,186, 8,187,118,237,138, 62,125,250,160,117,235,214, +176, 90,173, 32,132, 64,169, 84,226,208,161, 67, 88,189,122,117, 76, 13, 96, 89, 69,122,122,224,138,224,236,217, 94,141, 26, 53, +218, 85,158,129, 41, 52, 89, 21,230, 36,150,127,110, 10, 98,204,118,253, 18,134, 79, 95,233,111, 80,164,219, 59,137,205,238,145, +207,158,178, 42,127,110, 6, 42, 45,225,135, 90, 12, 30, 56,112, 58,155,195,105, 87,216, 3,146,188,120,254, 60,172,104, 82,105, + 4,127,120,169,138,117,169,104,236, 58,154,248, 78,161, 80,254,237, 70,171, 15, 10,242,181,138,167,228, 41,115,174,195,162,168, + 15,135,195,145,197,158,152, 50,178, 60,117, 46,208,165, 48,146,133, 10,231, 58, 44,252, 63, 1, 80, 66,175,255,250,141,193, 72, + 75,244, 46,228,190,181,126, 85,134, 69,204, 3,162, 96,214,135, 64,246, 28, 56, 53,173, 64,175,249,242,185, 37,183,169,204,155, +236, 27,191,203,203,213, 1,183,160, 82,221,130, 74, 85,106,210, 46,151,195,203,173,168,156,111,111,123, 18,160,120,223,109,127, + 91,179, 66,243,240, 30,251,243,191, 70,106,118,246, 9, 0,210,106,161,161,110,231, 67, 67,135,126, 54,123,246, 96, 15, 79,207, + 90,206,206,206, 14, 54, 54, 54,172,123,247,238,197,153,117,186, 77,141,129,221,133,209,212, 10,209, 3, 87, 2,147,146,234,127, + 48,112,224,116,134,195,105, 91,210,192, 16,179,249,142, 31,176,165,188, 72,214,187,158,155,222, 2,143, 46,133,145, 44,176,129, + 73,149,169, 27, 41, 5,229, 88, 1,179,121, 5, 34, 34, 74,169,243, 85,174, 75,203, 25,134, 81,130, 38,190, 83, 40,148,127, 47, + 69,243, 29,158,249,255,254,225,174, 84,147,106,254,139, 52,217, 40,232, 69, 71,247, 39,213,164,154, 84,147,106, 82,202,165,104, +174, 67, 14,221, 21, 20, 74,165,177,224,247,102, 48, 10,133, 66,161, 80,138, 40,202,205, 42,201,118,160, 32,117,167, 44, 87, 90, +149,222, 4,239,226,108, 47, 83, 77,170, 73, 53,169, 38,213,164,154, 84,243, 63,167, 89,145,246, 63,177, 55, 99, 81, 78, 86,113, +110, 86,101,103,183,121, 95,104, 88,149,106, 82, 77,170, 73, 53,169, 38,213,164,154,255,118, 60, 10, 77, 86,241,171,168,233,144, + 69,247, 13,133, 66,161, 0, 75,150,128, 69, 8, 24, 66,150,176, 8, 57,204, 38,100, 8,155, 16,188,215, 84, 32, 67,134,148, 62, +152,237,199, 35, 29,108,232, 30,167, 80,254, 85,164,163,140, 73,165,105,142,214,255, 22, 31,119,119,247,109, 0,152,140,140,140, +201, 0,146,232, 46,249,251,225,232,232,216,197,108, 54, 67,161, 80, 92,249, 55,110, 95,189, 90, 24, 72, 88,168, 91,252, 6, 65, +210,139, 87,216, 83,218,186,117,253, 49, 6,204,239, 99,113, 49, 86,188,120,254, 26,199,171,240,115,172, 94, 93,189,183, 0,192, +185,203,201,211,241,215,140,171, 85,219,197,197,229, 2,135,195,225, 88, 44,150,105, 50,153, 44,180,108, 35, 52,132, 13, 0, 92, +114,109,190, 60,195,117,222,167, 83, 25,174, 70,191, 83,174,215,170,243,217, 92,118,188,128,235,126,123,202,120,214,185, 60, 85, +171,231,165,125,255,200,145, 35,101,206,226, 93,223, 31,189, 88,150,122,125,131, 27,196,197,126,183,177,249,134, 14,126,206,220, +184,228,199,210,111,183,230,111,227,219,251,246, 29, 51,148, 9,229,136,153,209, 59,119,230,168,232, 89, 86,121, 86, 2,142, 70, + 32,136, 43, 16,120, 91,204,102, 55, 6, 32,108, 14, 39,211,164,215, 39,243,128,136,249,128,252,223,174,201, 19, 8,170, 89,204, +102, 55, 0,248, 59,150,147,242, 38,101, 26, 45,169, 84,250,136,197, 98, 85, 43, 57, 25,110,209,124,130, 69,239,149,252,140, 97, + 24, 88, 44,150,148,188,188,188,166, 85,248,125, 91, 0, 67, 1, 20,117, 81,223, 15,224, 16,222, 61,225,216,150,199,227,205,145, + 72, 36,157,181, 90,109,125, 0, 16,137, 68,145,106,181,250,170,209,104,252,238, 29,117, 57, 0, 62,144, 74,165,157, 88, 44, 86, + 39, 66, 8, 67, 8,185,166, 82,169,174, 2, 56, 12,224, 93, 70, 74, 16,185,186,186,174,112,116,116, 28, 49,127,254,252, 28, 39, + 39,167,192, 89,179,102, 61,204,205,205,253, 53, 59, 59,123, 1,170, 48, 71,221, 95, 76, 45,119,119,247,253, 92, 46,151,157,156, +156,220, 9, 0,188,189,189,175, 25, 12, 6,139, 76, 38, 27, 9,224,117, 21,245, 36, 0, 90, 74,165,210,166, 82,169,180,189,197, + 98,169, 91, 56, 63,227, 11,149, 74,117,211,104, 52, 62, 2,112, 15,128,250,111,116,142,216,112, 56,156,189,133,117, 61, 0,128, +242,223,118, 17, 32, 44,212,125, 30,249, 50,176,216,120,213,175, 83,246,202, 12,124, 74, 89,183,210, 70,171,115, 7,143,190,253, +250,117, 99, 1,128,193,116,174,239,213, 27,233, 39,255,108,147, 53,104,208,160,223,246,238,221,235,160,215,235, 49,121,242,228, +253,151, 47, 95,222,162, 80, 40,230,151,123,225,144, 58,204, 90,179,254,162,152, 97, 88, 0,224,106,181, 90, 92, 83, 83, 95, 7, + 60,127,246, 91,207,200,200,187, 43,181, 47,175,222,179, 50,220, 41, 70,180,123, 89,153, 66,212,245, 67, 72,223,193, 3,251, 44, + 91,182, 4, 35,134,141,168, 30, 25,169, 19,121,217,198,242,115,181, 18,127, 39, 23,215,126,203,150, 31, 97,110,223, 58,209,111, +239,174,165, 87,199,143,119,234, 76,205, 86,165, 96,150,115, 56, 45,237,252,253,219, 15, 59,113, 2, 82,111,111, 14, 71, 32, 96, + 1,128, 89,175,247, 86, 37, 39,123, 28,236,215,175,197,146,232,232,235, 75,128,251, 84,243,127,162, 73,169,138,209, 98,177, 88, +213, 82, 83, 83, 93, 37, 18, 73,193,197,152, 16, 88, 44, 22, 88, 44,150,226,201,139, 9, 33,197,127,205,102, 51,234,212,169, 83, +169, 39, 90, 0,157, 1,140,235,216,177,227,144,239,190,251,142, 27, 20, 20, 84, 52,101, 72,187, 47,191,252,242,251,240,240,240, +163, 0,118,163, 96,240,198,202, 62,241,246,144, 72, 36,251,214,172, 89, 99,219,173, 91, 55,142,167,167, 39, 24,134, 65, 70, 70, + 70,203,203,151, 47, 55,157, 53,107,214, 52,181, 90, 61, 10,192,133, 42,236,159, 6, 54, 54, 54, 71, 6, 14, 28, 88,173, 67,135, + 14,194,122,245,234,193, 98,177,224,241,227,199,227, 31, 61,122, 52,252,232,209,163,139,149, 74,229, 16, 84,126,190, 54, 70, 42, +149,142,181,181,181, 93,177,104,209, 34,199, 81,163, 70,241,159, 61,123,150,231,231,231,199,220,190,125,219,229,208,161, 67,211, + 86,173, 90,245,129, 66,161, 88,160, 82,169,126, 65, 37,230, 80,180,177,177,121,196, 98,177,170, 85,198, 8, 3,168,138, 25,110, + 92,163, 70,141, 67,183,110,221,170,145,144,144, 96, 25, 48, 96,192, 30, 0,184,122,245,106,144,201,100, 98,186,119,239,126, 46, + 37, 37,101, 40,128,199,149,220,246,134,142,142,142, 39, 71,140, 24,225, 88,171, 86, 45,113,141, 26, 53, 24,137, 68, 2, 54,155, +141,252,252,124,207,103,207,158,117,189,127,255,190,246,242,229,203,185,122,189,190, 31,128,136, 42, 28,167,214,174,174,174,163, +185, 92,110, 3,179,217,236, 5, 0, 28, 14, 39,213,100, 50, 61,147,201,100,123, 1,252,246,174, 39,136,155,155,219,230, 21, 43, + 86, 56,203,100, 50,178,106,213,170,205, 74,165,114,236,191,245, 98,176,255,215,195,120,244,240, 62, 80, 48,109, 14, 83, 74,253, + 99, 0,240, 62,253,116, 54,154, 54,107,129,145, 35, 62,168, 80,179,119,151,106,107,184,124,158,147, 78,167,251, 45, 95,163, 63, + 44, 17, 11,135,142, 24, 30, 18, 3, 0,231,206, 95, 31,218,188,185,195, 53, 59,177,224, 3,161, 80,216,218,100, 48,230,156,189, +146,242,121, 85, 76,149,151,151,215, 5, 7, 7, 7,113,110,110,110, 70, 86, 86,214,143,125,251,246, 93,190,123,247,110,135,184, +184, 56, 36, 39, 39,227,147, 79, 62,145,166,164,164, 76,143,136,136,184,107, 48, 24,202,140,108, 41,149,185, 27,191,156,215,127, +145,157,157, 51, 91, 34,182,133,141,157, 35,252,106, 53, 66,203,214,125,209,171,207, 4,188,138, 9,111,185,123,215,178,240,212, +212,203,223, 72, 29,107, 46,151,203,107,148,121, 93,170, 87, 27, 29,250, 13, 44, 48, 89,139, 22, 45, 65,244,203,151,202,132,120, +214,199,103, 78,112,196,189,186,212, 17,152, 13, 25, 9,183,111,157,168,209,182,221, 0, 0,104,186,119,215,210,171, 31,143,116, +232,178,121,127,158,146,222,146,202,190,118, 46,227,114,199,246, 88,191,222, 53,120,218, 52,158, 42, 62,222, 24,187,117,171, 38, +243,230, 77, 11, 71, 32, 32,222, 61,123, 50, 46,157, 58, 9,167,189,120,193,187,179,106, 85,123,238,210,165,126, 11,140,198,125, + 84,243,255, 85,243,191, 78, 81, 18,124,201,222,135,219,203, 53, 90, 12,195, 64, 34,145,224,224,193,131,224,114,185,224,112, 56, +224,114,185,101,254,239,227,227, 83,153,130, 12,114,119,119,255,126,203,150, 45,110, 61,122,244,128, 80, 40, 44,254,128,205,102, +163, 91,183,110,232,218,181, 43, 55, 45, 45,109,248,193,131, 7,135,175, 92,185, 50, 83, 46,151,207, 64,225,196,208,229,208, 41, + 48, 48,240,216,197,139, 23, 69, 58,157, 14, 55,111,222, 68, 94, 94, 30,248,124, 62,170, 85,171,134,238,221,187,115, 94,190,124, +233,216,173, 91,183, 99,209,209,209, 33, 0,174, 85,162,172, 77, 93, 93, 93,111, 28, 62,124, 88,216,168, 81, 35,230,213,171, 87, + 8, 14, 14, 6, 0,228,231,231, 99,192,128, 1,194, 81,163, 70,213, 26, 62,124,248, 61,153, 76,214, 1,192,163, 10,244,154,184, +187,187,255, 50,112,224, 64,207,149, 43, 87,218,218,216,216, 32, 33, 33, 33,221,221,221, 61,160,104,127, 15, 31, 62,156,223,183, +111, 95,143,213,171, 87,111, 60,114,228,200,231, 50,153,108, 44,128,176,114, 93,107,161, 33, 22,139,197,200,204,204,196,254,253, +251, 49,125,250,116,176,217,108,200,100, 50, 28, 58,116, 8, 31,127,252,113,145,161,169,148, 25, 22,139,197, 93,253,253,253,127, +190,122,245,106, 53,123,123,123,120,122,122,178,190,250,234,171, 6,126,126,126,162,234,213,171,179,211,211,211,113,236,216, 49, +191,209,163, 71,159, 76, 74, 74, 26,175,215,235, 43,108, 82,115,115,115,219,121,230,204, 25,159,200,200, 72,108,221,186, 21,185, +185,185,224,243,249,176,183,183,135,187,187, 59, 2, 2, 2,152,121,243,230,137,251,246,237, 43,158, 49, 99,198, 78,131,193,208, +184, 18,199,168,145,171,171,235,182, 78,157, 58,249, 45, 93,186,212,222,221,221, 29, 69, 15, 6,249,249,249,213, 18, 18, 18, 90, + 46, 90,180,104,200,163, 71,143,226,100, 50,217, 20, 0, 79,170,120,226, 52,174, 87,175, 94,200,128, 1, 3,216,233,233,233,216, +187,119,111,136, 82,169,108, 92, 5,115,249,143,226,209,195,251,152,252,209, 39, 42, 79,111,111,222,197, 11, 63, 15, 58,114,188, +246, 67,123, 81,193,132,212,114, 45,140, 67, 6, 70, 55,235,222, 99, 2,175,119,159, 1,170,237, 63,108,148, 86,198,104,113,249, + 60,167,253,251,214, 37,221,186,253,168,193,165,203,247,123, 14,234,215,143,240,120,246,126, 0,240,249,172, 79,185,199, 78,157, +218,213,173,107,139,180,118,109,155, 38,141, 28, 53,219,167, 10,197,173, 93,187,118,237,235,225,225,225,110, 2,129, 0,185,185, +185, 78,219,183,111, 95,215,182,109, 91, 86,108,108, 44, 94,190,124,137,248,248,120,228,231,231,163, 91,183,110,210,176,176,176, + 31, 1,148,105,180,140,172,206, 43, 60,171,155, 54, 57,137, 36, 53,140, 22,133, 43, 49,165,215,187,116,230, 82,195, 3,123,181, +193,110, 30,117, 2,198,125,184, 24,203,150, 31,229,254,186,255,219, 69, 87, 46, 31, 0, 88, 53,202,158, 17,128,160,245,151, 11, +230, 67,161,212, 99,212,136, 73, 24, 61, 98,146, 19,129,193,131, 88,116, 18,131, 54,207,222,134,247, 34,116,203,142,117, 3, 1, + 84, 43, 97,182,174, 80,179, 85, 54,203, 56,156, 22, 33,223,127,239,210, 96,226, 68,193,147,165, 75,213,217, 55,111,106,253,123, +247,206, 11,158, 58, 85, 15, 0,202,248,120, 94,244,226,197, 98,151,246,237, 69,173,230,204,113,176, 24, 12,238,203,150, 45,107, +190,168, 96,242,242, 42,105,250, 12, 29,106, 89,180,107, 87,179,155,179,103,119,100, 76, 38,118,207, 86,173, 30,175,218,187, 55, +245,125, 52,255,204,114,166,221,184,161,207,245,243, 67,240,128, 1, 57, 62,174,174,250, 63,115,219,223,167,156,148, 98,138,114, +181, 38,151,124, 66, 69,104,104,104, 7, 0,215, 1, 44, 13, 9, 9, 89, 2, 0,118,118,118,153,114,185,220,245,216,177, 99, 21, +154, 44, 46,151, 11, 15, 15, 15, 4, 4, 4,200,100, 50,153, 91, 57, 5, 72,182, 90,173,213, 8, 33,197,209,151,178,208,235,245, +136,137,137, 65,195,134, 13, 83, 80, 48, 17,109,153, 65, 29,177, 88, 28,251,242,229, 75,231,231,207,159,227,209,163, 71,240,243, +243,131,131,131, 3,184, 92, 46, 76, 38, 19, 20, 10, 5, 2, 3, 3, 33, 16, 8,208,164, 73,147,108,181, 90,237, 87, 65, 19,144, + 64, 34,145,196,220,184,113,195, 59, 56, 56, 24, 15, 30, 60,128,183,183, 55,220,221,221, 1, 0,241,241,241,184,125,251, 54,122, +247,238,141,240,240,112, 12, 30, 60, 56, 89,173, 86, 7, 0,208,151, 37,232,232,232,152,126,245,234,213,148,160,160, 32,157, 90, +173,102,101,102,102,114,111,222,188,105, 86, 42,149,210,252,252,124,174, 92, 46,231, 42, 20, 10,142, 90,173,230,178, 88, 44,158, + 86,171,229, 94,185,114,133,109, 52, 26,203, 29, 32,179,232, 56,157, 58,117, 10, 65, 65, 65, 56,118,236, 24, 62,251,236, 51,220, +185,115, 7,222,222,222, 56,124,248, 48,230,204,153,131,168,168, 40, 56, 59, 59,163, 94,189,122, 21, 29, 35,212,170, 85,235,213, +211,167, 79,107,241,120,188,162,121, 29,139,230,203, 67, 86, 86, 22, 94,191,126,141,212,212, 84,248,251,251, 99,196,136, 17,175, + 83, 83, 83,253, 43,170,121, 94, 94, 94, 89,145,145,145,206, 13, 27, 54, 68,102,102, 38,236,237,237, 97,103,103, 7,123,123,251, +226,255,253,252,252, 48,123,246,108,184,187,187,203,116, 58,157, 91, 69, 38, 40, 40, 40,232,194,149, 43, 87,156,109,109,109,145, +145,145, 1,133, 66, 1, 14,135, 3,177, 88, 12,103,103,231, 98, 35, 31, 19, 19,131, 62,125,250,100,199,198,198,246,168,130, 73, + 98,185,185,185,189,140,136,136, 8, 32,132, 32, 41, 41, 9, 81, 81, 81,248,232,163,143, 98,116, 58, 93, 29,252,139,230,236, 43, +145,119,197, 27,251,225,100,222,192,254,173, 13, 47, 34, 67, 25,129, 53, 10,141, 27,216,230, 3,192,227,103, 10, 59, 61, 43, 16, +117,235,135,144,227, 39,127,227,255,178,123, 59, 23, 86,184,129, 65,212,139, 24,124, 93,150,118,247, 78, 30, 19, 63,253,116,124, +131,142,109, 59,176,148,106,181,235,143, 63,174,111, 18, 27,251,194, 21, 0,252,252,234,202,166, 77,155, 21,102, 35,145,200,174, +223,190, 97,221,176, 97,231,179,139,215,210,119, 84,162,200,126, 1, 1, 1,119, 79,157, 58,229,236,234,234, 10, 59, 59, 59,168, +213,106, 24,141, 70, 60,127,254, 92,119,240,224, 65,147,173,173,173, 77, 70, 70, 6,228,114, 57, 24,134,193,169, 83,167,146, 0, +248,190, 45, 84,148,163, 5, 0, 31,245,170,203,173,215, 57,192,129, 39, 48,139, 68,220,104, 15, 48, 22, 1, 67,164,110,231, 46, + 60,110,120,238,210,131,145, 3, 7,125,230,210,174,195, 64, 44, 90, 56,196,148,150,150, 20,108, 68,187,151,165,229,104,213,241, + 71,231, 1,131, 7,126,176,108,217, 18, 44, 89,180, 20,161,167, 78,228, 75, 37, 44,189,173, 61,215,174,125,203, 54,186,217,211, +251, 39,171, 84,105,222,203, 86, 31, 28,209,167,255,236,106,109,219, 13,192,237, 91, 39,176,119,215,210, 71,140,136,208,102,196, +183, 88, 2, 56,216,251,249, 77,153, 25, 19,195,123,178,100,137,202,156,150,150,215,116,214,172,236,210,214, 77,185,116, 73,194, +247,244,180,117,232,215,207,113,163,175, 47, 49,201,100,219, 74,203, 49, 42, 77,243,178, 84,106,127,224,220,185, 46,132,203,237, +240,197,220,185,162,144,144, 16, 40, 20, 10, 28, 61,122, 20,219,182,110,213,123,120,120, 60,245,124,246, 44,188,129, 66,177,176, +178,154, 77,103,205,202,182, 88, 44,204, 7,115,230,116,139,140,143,239,156, 33,147, 85, 7, 0, 15, 71,199,228,166,126,126,143, +118,134,134, 70,109,174, 81,195, 90,217,114,254,116,254,188,219,145,132,132,137,142,142,142,162, 76,153,140, 35,224,243,115, 90, +214,171,119,248,135, 5, 11,174,155, 35, 34,120,194,106,213,108,237, 66, 66,170,188,237, 77,103,205,202,206, 85, 42, 57, 51,151, + 47,111,147,152,153, 89, 93,165,215,251,203,149, 74,119,139,201,196,178, 21,139,115,106, 6, 6,202,180, 55,111,166,215,212,104, + 62,217, 1,200,254,170, 99, 93,154, 23,249, 7,241,246, 56, 90,103, 8, 33,111,204,117,120, 61, 36, 36,228, 15,189,107, 8, 33, +149,138,102,113,185,220, 55,154,169,202,129,199, 48, 12,194,194,194,224,228,228, 4,119,119,119, 8, 4,111, 78, 62,152,149,149, +133, 59,119,238,224,197,139, 23,104,212,168, 81, 81, 51, 70,217,142, 72, 32,248,116,245,234,213,246, 6,131, 1,143, 30, 61, 66, +211,166, 77, 33, 16, 8,192,227,241,222, 48,129, 50,153, 12,245,235,215,199, 23, 95,124, 97,183,114,229,202, 79,245,122,125,153, + 79,164, 28, 14,103,198,164, 73,147, 92,139, 34, 88,201,201,201,104,210,164, 73,241,231, 46, 46, 46,120,252,248, 49,154, 54,109, +138,106,213,170, 97,200,144, 33,174,123,247,238,157, 97, 54,155,191, 43, 75,147,207,231,179,130,130,130,154, 1,128, 68, 34, 1, +139,197,138,182,181,181,117,113,115,115,147,216,218,218,254, 97, 27,119,237,218, 37,103,177, 88,166, 10,221, 0,139,133,140,140, + 12, 52,104,208, 0,249,249,249, 0, 0,181, 90, 13,127,127,127, 40, 20,138, 98,211,234,233,233, 9,173,182,252,212,175,134, 13, + 27, 46,169, 83,167, 78,119,137, 68, 34,224,114,185,120,242,228, 9,130,131,131,113,240,224, 65,248,248,248, 64, 44, 22, 35, 38, + 38, 6, 65, 65, 65,184,113,227, 6, 92, 92, 92, 80,191,126,125,129,171,171,235,173,220,220,220,107,137,137,137, 75,202, 41, 39, + 75, 42,149,226,198,141, 27,216,185,115, 39,226,227,227,145,150,150, 6, 27, 27, 27, 52,110,220, 24,245,234,213, 67,235,214,173, + 17, 19, 19, 3,166,226,202,228, 30, 16, 16, 16,250,224,193, 3,103, 66, 8,246,238,221, 11,149, 74, 5,131,193, 0, 22,139, 5, +161, 80, 8, 7, 7, 7,116,238,220, 25, 46, 46, 46, 8, 8, 8,192,161, 67,135,156,123,245,234,117, 86, 38,147, 53, 6,144, 81, +209,126,117,112,112,248,100,241,226,197,222,174,174,174, 72, 72, 72, 64,126,126, 62,220,220,220,208,177, 99, 71,175,203,151, 47, +127, 98, 50,153,214,255, 91,110,100, 37, 18,223,153,139, 23,126, 30, 20, 80, 51, 47,168, 81,160,216,251, 88,168,155,247,193, 80, + 89,125, 0,104, 80,215, 45,114, 80,136, 56,249, 73,100,104,242,197, 11, 39, 30,189,136,198, 49, 84,162,105, 59, 95,163, 63,124, +233,242,253,158,193,141,154, 88, 87,127, 59,167,207,244,143, 38, 10, 92,221, 38, 32, 51,233, 4, 46, 95, 13,243,153,243,217, 36, +151,239,214,254,116,238,210,229,251,172,124,141,126, 97,229, 66, 89, 62,155,119,255,208,218, 89,153,125, 4,175, 94,242, 33,178, +105, 0, 63,191,218, 80, 40, 20, 16, 10,133,194, 17, 35, 70, 88,230,207,159,175,177,181,181, 21, 51, 12,131,107,215,174,201, 0, +244,168, 72, 87,231,234, 64, 44, 70,147,153,240,217, 86,194,216,104, 25, 75, 46,255,217,243, 56,116,239,218, 41,179,109,139, 6, + 43,231, 47, 91,251,101, 64,237, 96,151,241, 19,151,114,151, 47, 25,185, 21, 12,218,149,166,243,242, 21,174, 50,135,143,139, 0, +244, 89,246,245, 18,196,198,198, 56, 76, 30, 39, 95,202, 17,136, 60,235,248,182,177,217,186,243, 90, 79,127,255, 26,213,103,207, + 24,114,102,221,247,235,250,148,140,108,237,222,181,248, 36,128, 46,149,217,183,255, 33, 26,142, 14, 13,133, 42, 41,201,148,123, +235,150,174,203,247,223,103,123,247,232,177,222, 96, 52, 58, 23, 93, 42, 88, 12, 3,166, 40,117,194,106,101, 56, 95,124,193, 34, + 28, 14, 76, 14, 14,227,144,151, 87,187, 34,205,207,210,211, 7,141,156, 56,177,207,201,243,231, 81,163, 70,141,226,251,153,189, +189, 61,230,204,153,131, 89,179,102, 9, 30, 63,126,220,252,200,145, 35,205,191, 91,179,198, 13,192,160,202,148,243,226,189,123, + 14, 83,151, 45, 91,208,168,105, 83,159, 61,251,247, 11,106,213,170, 5, 0,120,253,250,117,192,183,171, 86,249, 54, 8, 10,202, + 92,249,233,167,187, 35,231,207,175, 15,224, 86,121,154, 25, 55,111, 26,142, 36, 36, 76,188,122,237,154,125,131, 6, 13, 0, 0, + 81, 81, 81,174, 27, 55,110,156, 84,127,200,144, 81,203,166, 77, 91, 24,162,211,201,109,179,178, 4, 33,155, 55,115, 14,124,240, + 65,133,154, 69,229, 4,128,142,227,199,127,218,174, 83,167,122,131, 38, 78,116,244,241,241, 97,164, 82, 41,140, 70, 35,210,210, +210, 28, 34, 35, 35,107,133, 42,149,138,227,247,238,237,133,197,210,237, 47, 60,214,165,122,145,127, 88, 36,235,143,158,162,240, +111,199,208,208, 80, 2,160, 99, 72, 72,200,141,162, 27,184,197, 98,169,148,201,226,112, 56, 96, 24,166,178,102, 11,132, 16,100, +103,103, 35, 59, 59,187,184,233, 72, 38,147,225,234,213,171,136,137,137, 1,151,203, 5,143,199,131,209, 88,241, 28,180, 18,137, +164,107,215,174, 93, 57,247,238,221,131,159,159, 31, 68, 34, 81,113,185,138, 94, 60, 30, 15, 30, 30, 30, 80, 40, 20,232,210,165, + 11,119,211,166, 77, 93,203, 51, 90,118,118,118,189,135, 14, 29,202, 47, 90, 86,169, 84, 96,179,217,197,166, 69,165, 82, 33, 55, + 55, 23,114,185, 28, 58,157, 14,173, 90,181,226,135,134,134,246,206,201,201,249,174, 50,219,175,209,104, 84, 50,153,204,190, 93, +187,118, 14,187,119,239,142,106,213,170, 85,224, 27, 53,237,250,117,157, 78,167,227,178, 88,172, 74,205,163,183,111,223,190,226, +125,159,154,154,138,173, 91,183, 22,127, 22, 19, 19,131, 77,155, 54, 21, 79, 5, 80,222, 49,170, 83,167, 78,175,189,123,247, 54, +221,179,103, 79, 30,155,205, 70, 84, 84, 20,246,239,223, 15, 66, 8, 92, 92, 92,160,209,104,144,153,153,137,107,215,174,193,108, + 54, 67, 42,149,194,203,203, 75, 56, 99,198,140,182, 75,151, 46,229,150,103,180, 44, 22,139,133,205,102,195,215,215, 23,139, 22, + 45,130, 78,167, 3,143, 87,224, 47, 21, 10, 5,228,114, 57,194,195,195,145,144,144, 0, 82,193, 40,111, 66,161,112,200,158, 61, +123, 92,249,124, 62,180, 90, 45,148, 74, 37,146,147,147,145,152,152,168,147,201,100,102, 27, 27, 27,150,175,175, 47, 75, 32, 16, + 8, 6, 12, 24,192, 20, 25,206,144,144, 16,167,189,123,247, 14, 51, 24, 12, 21,153, 36, 23,119,119,247, 47, 39, 77,154, 36, 44, + 89,103, 51, 50, 50, 48,104,208, 32,241,111,191,253, 54, 95,161, 80,236, 7,144,245, 47,187,161,145, 35,199,107, 63,124,116, 57, + 42,232, 88,168,155,119, 98,138,165,205,156,207,215,114, 0, 96,251,182,111,218, 28, 11, 77,189, 83,167, 70,102,242,145,227,181, + 31, 58, 56,188,168,200, 8,176, 58,119,240,232, 43, 17, 11,135, 14,234,215,143,252,248,227,250, 38,211, 63,154, 40,240,173, 61, +167, 32,194,201,117, 69, 23,243,215,140, 70,251, 90,248,227,143,235,155, 12,234, 55, 56, 60, 62, 62, 97, 91,231, 14,130, 67, 87, +111,164,159, 46, 47, 98,232,234, 36,244, 18, 11,212,240,242,171,135,192,186, 18, 60,126, 18,133,163,135,239,162,110,253,150,208, +235,245, 48,155,205,146,190,125,251,106, 14, 30, 60,168,139,142,142, 86,106,181,218, 14, 0,162, 43,218,248,148,148,231,214, 64, +247,150, 70,158, 72, 96, 86,230,243, 52,243, 22, 30,249,160, 73,139,238, 77, 29, 60,188,184, 46, 18,235,233, 94,221,154,239,223, +185, 99,209,172,133,139,247,163, 89,243,238,173, 94, 68,221,170, 7,224,105,169,230, 53, 22,161,172,163,199,205,177,175, 94,245, + 73, 76, 72, 72,169,237,230,110,120, 45, 39,166, 79,230,253,212,173, 93,135, 33, 13,107,213,109,207,127,241,252, 6,179,232,139, + 97,191, 46, 91,189,110, 68,145,217,186,114,233,215, 14,227,198,221,229,239,222, 93,118,116,252,191, 6, 79, 32,168, 38,245,245, +229,196,239,222,173,245,235,219, 55, 15, 0, 12, 70,163,115,124, 66,130,157, 88, 44, 6, 33, 4, 38,147,233,141, 28,226,162,188, +225, 6,129,129,110,149,209,140,255,234,171,134, 95,124,241, 5, 50, 50, 50, 96, 54,155,193,229,114,223,190,102, 67,173, 86, 99, +220,184,113,216,188,102, 77,203,202,104, 90, 44, 22,102,234,178,101, 11,230, 46, 88, 80,107,202,148, 41,172,146,215, 94, 71, 71, + 71, 28, 57,122,148,191,101,203,150,106, 95,110,222, 60,110,164, 64, 16, 11,189,190, 92,205,108,127,127, 56,102,102,138,138, 76, + 22, 0, 4, 6, 6, 98,235,214,173,130, 9, 19, 38,240,251,246,237,187,246,113,163, 70, 27,215,183,109,251,202,169,118,109, 91, +190, 64, 80,173, 34,205,162,253, 9, 0, 74,157,174,193,250,141, 27, 29,238,223,191,143,204,204, 76,100,100, 20, 60,143, 50, 12, +131,102,205,154, 49,163, 71,143,182,171,233,237,221, 28, 22,203, 95,121,184,255,224, 69,254, 65, 76, 46,229,189,223,115,180, 10, + 55,136, 41,220, 64,166,196,205,241, 13,195, 82,145,209,122, 23,228,114, 57,228,114, 57,118,236,216, 1, 30,143, 87,124,243, 5, + 0,131,193, 80, 25,211, 18,228,233,233,137,252,252,124,212,174, 93,251,141, 72, 22,143,199, 3,135,195, 1,143,199,131, 64, 32, +128, 94,175,135,143,143, 15, 52, 26, 77, 80,121,154, 90,173,182,177,163,163, 99,241, 13, 86, 95, 88, 89,245,122,125,113,121, 13, + 6, 3,242,242,242,160, 82,169,160, 84, 42,161, 86,171,131, 43,179,189, 86,171, 21,207,158, 61,123, 29, 24, 24,216,152,205,102, + 67, 42,149, 74,212,106,117,113,110, 81,110,110, 46,126,249,229, 23,245,152, 49, 99,156, 79,157, 58, 85,161,209, 98, 24, 6, 31, +127,252, 49, 4, 2, 1, 52, 26, 13,126,252,241, 71,204,156, 57, 19, 60, 30, 15, 74,165, 18, 91,183,110,197,236,217,179,193,225, +112, 96, 48, 24,176,113,227,198, 50,181,158, 63,127, 30,127,239,222,189,224, 38, 77,154, 56, 28, 63,126, 60,171, 91,183,110, 46, + 61,122,244,128, 72, 36,130, 86,171,133,201,100, 66,203,150, 45, 81,167, 78, 29,200,100, 50,156, 59,119, 46, 59, 32, 32,192,249, +254,253,251,214,140,140,140,196, 10,204, 53, 41, 17, 49,132,197, 98, 65,102,102, 38,228,114, 57,178,178,178,144,150,150,134,148, +148, 20,112, 56,156, 10, 71,211,117,114,114, 26,220,160, 65, 3, 54, 0,136, 68, 34, 52,110,220, 24, 11, 22, 44, 48,107,181,218, +161, 0,206, 21,174,214,235,167,159,126, 58,126,251,246,109,142,167,167, 39, 94,190,124, 9, 23, 23, 23,142, 80, 40,172,208,104, +185,187,187,239, 58,125,250,180, 99,145,185, 46,218,207, 26, 77,193,225, 24, 52,104,144,227,158, 61,123,118,153,205,230,222,255, +182,155,154,189, 8,188,198, 13,108,243, 15,134,202,234,207,249,124, 45,167, 78,131,130,135,215,201, 83,192,249,110,205,103,245, + 71,245,183, 61, 99, 47, 82,240, 42,210,233,213,213,123, 75,191,126,221, 88, 35,134,135,196,240,120,246,126,219,182, 47,117,117, +117,155, 80,194,134,217,194,201,217, 22,126,190,124,230,200,153, 23,174,243,230,127,173,223,183,103, 93,236,175, 7, 66,123,242, +185,151,186,159,187,156, 60,173, 44,237,232,215,242, 83, 26,189,176,174, 34, 39,130,113,116,107,131,198,141, 2,225,234,146,135, +159,118, 29, 68,141,154,205,160,215,235, 97,107,107, 43,182, 88, 44, 70, 54,155,189,175, 50, 38, 11, 0,174, 92,145, 91,235,215, +151, 27,216, 74,171,121,250,204,239, 6,118,235,213,175, 94,231,206, 93,173, 23, 47,253, 31,123, 87, 29, 31,197,241,190,159,221, + 61,205,197,229,226, 2, 4, 8, 4,130, 21,105,113,215, 80,164, 88, 11, 5, 74,209,210, 2,133, 34, 69, 75, 5, 41,180, 64,113, +104, 11, 20,119, 8, 30, 74,112, 13, 18, 15, 36, 16,191,184, 92,114,126, 43,191, 63, 34,223, 4, 34,119,129, 26,191,125, 62,159, +253,236,221,222,238,115, 51, 59,179, 59,207,188,243,206, 59, 23, 13, 29, 90, 25, 20,253,250,180,204, 56,127,105,211, 83, 69,218, +243,134, 77,155,117, 68,100,196,149,190, 28,135,112,130,168,220,250, 20,241, 12,231,181,108,228,149,131, 7, 39,177, 26,246,161, +197,119,223,135,245, 27, 48, 96,108, 64,231, 78,157,217, 75,193,127,234,197,200,142,178,233,216, 62,245,179, 79,251, 29,255,117, +239,250,222,231,207,253,222,160, 64,153, 24,196,139,172,151, 58,105, 52,237, 34,144, 72,200,172, 43, 87,232,102, 19, 38,232, 74, +159, 71,153, 76,134,147, 39, 79, 66, 44, 22,151,109, 34,145,168,236,179,139,139, 11,136,146,105,164,166,112, 2,128, 66,161, 64, +122,122, 58,108,109,109, 33,151,203,145,158,158,142, 91,183,110, 33, 54, 54, 22, 66,161, 16,125,251,246, 5, 89,133,111,243,203, +156,195,231,204,233,229,223,172,153,247,203, 34, 11, 0, 12, 6, 3,114,115,115, 49,104,208, 32,242,220,185,115,174,231,147,146, +222, 7,176,183, 58,206, 86, 3, 6,228,100, 28, 57, 82,233,127,191,243,206, 59,196,205,155, 55, 37,125,251,244,153, 53,251,251, +239, 55,253,178,103, 79, 50, 67,211,174,230,228,157, 36, 73,146, 32, 8,120,121,121, 33, 55, 55, 23, 69, 69,197, 35,216, 86, 86, + 86,176,183,183,135,209,104, 4,203,113,194,191,178,172,171,210, 34,255, 17,108, 47, 39,184,182,191, 98,209, 42,201, 20, 0,116, + 45,223,176,176, 44,107,146,200, 18, 10,133, 53,250, 92,153, 98,229,122, 25,166, 8,173,210,180, 74,165,210,178, 7,173,188,192, + 42, 77, 39, 73,146,160, 40,202,164,144,248, 44,203, 82,133,133,133, 56,122,244, 40,186,116,233, 82, 54, 44, 85, 80, 80,128,252, +252,124, 20, 20, 20, 64,171,213,226,197,139, 23,184,124,249, 50, 26, 52,104, 0,192,180,224,175,241,241,241, 15,234,214,173,219, +186,180, 17,239,214,173,155,231,174, 93,187,210,250,247,239,239,206,113, 28, 22, 45, 90,148,253,238,187,239, 58,149,111,228,107, + 2, 69, 81,184,117,235, 22, 26, 52,104, 0,142,227, 32, 18,137, 16, 19, 19, 3,103,103,103,176, 44, 11,129, 64,128,172,172, 44, + 88, 91, 87, 31, 35, 49, 60, 60,124,252, 39,159,124,146,102,107,107,219, 60, 39, 39, 71, 33,145, 72, 58, 93,187,118,205,203, 96, + 48,192,198,198, 6, 54, 54, 54, 56,123,246, 44,236,236,236, 48,115,230,204, 36,141, 70,115,203,210,210,210, 69,163,209, 60, 73, + 79, 79, 95,100, 78,121,211, 52, 13,149, 74,133,188,188, 60,228,230,230, 66,169, 84, 66,171,213,214,152,198,202,208,169, 83, 39, + 4, 5, 5, 81, 43, 86,172,248, 53, 62, 62, 30, 0,224,235,235,139,153, 51,103, 82, 30, 30, 30,120,241,226, 5, 30, 60,120, 0, +131,193, 0,142,227,170,125,120, 5, 2, 65,183,143, 63,254,184,163,183,183, 55, 97, 48, 24,192,178, 44,116, 58, 29, 74, 63, 39, + 37, 37,193,223,223,159,244,241,241,121, 47, 62, 62,190, 27, 76,155, 88,193, 3, 64, 70,210, 9,120, 8,157, 1,210, 6,156,230, + 4,114,178,107, 23,197, 37, 51, 51,243,251,185,139,111, 78,248,101,181,193, 37, 69, 1, 52, 10, 24,140,134, 77,122, 96,252, 24, + 26, 43,126, 60, 10,111,159, 70, 72, 76, 76, 68,183,110,221, 68,105,105,105,159, 20, 21, 21,205, 49,149,251,210,165, 59,204,197, +179,231,134, 13, 31, 57,182,117,207,158,253,233, 11, 23,206, 34,252,201,133,136, 79, 70,126,144,201,177, 69,132,131,157,197,195, +152,232,251, 13,155,183,236, 10, 61,205,116, 2,150,173, 6,150,113, 85, 63,239,208,159, 57,227, 70,158, 57,241,251,152, 15, 71, +143,107,209,163, 71,111,227,133, 75,167,241,224,246,165,199,107, 87, 79,188,186, 98,253,161,110,189,250,126,208, 84,238,114,235, +108,128,159,238, 83, 47, 71,219,184, 29,187,114,249,202, 82,217,179, 41,149,178, 40,121, 47,146, 4, 1,142,227, 42,136,172,151, +133, 22, 73,146, 53, 26, 0,202,115,150,111,139, 74, 59,212,219,182,109,131, 68, 34,129, 88, 44,134, 80, 40,172,209,253,162, 60, +103,196,139, 23,221,119,239,221, 43,169, 76,100,229,228,228, 32, 39, 39, 7, 69, 69, 69, 24, 53,106,148,232,155,251,247,223, 65, +137,235, 71, 85,156,222,110,110, 58, 75, 11,139,140,200,200, 72,247, 38, 77,154, 84, 72,175, 82,169,132,133,133, 5,246,238,219, + 39, 10, 28, 48, 96, 90,143,179,103,215,162,134,248, 87,149,229,157, 32, 8, 56, 59, 59,195,222,222, 30, 4, 65,128,166,105,164, +167,167, 35, 34, 34, 2,247,239,223, 7, 69, 16,244, 95, 89,198,149,105,145,255,160, 85,107,123,165, 67,135, 85,141,137,154, 35, +180, 40,138,170,181, 85,171, 42,152, 50,116, 40,147,201,194,210,210,210, 58,120,120,120,128,166,233, 50,161,245,242,208, 97,169, +245,227,209,163, 71,144,201,100, 97, 90,173,182, 90, 78,142,227,222,107,219,182, 45,142, 29, 59,134, 43, 87,174,224,249,243,231, + 80,171,213,208,233,116,208,104, 52,136,136,136, 0,203,178, 8, 8, 8,128,165,165, 37,100, 50, 89,152, 78, 87,125, 71, 84,165, + 82, 41,132, 66, 97, 35, 11, 11,139,178, 99,110,110,110,200,201,201, 97,141, 70, 35,118,239,222,173,116,117,117,181,180,176,176, + 48, 89,184, 18, 4,129,204,204, 76,120,122,122,150,249,104, 21, 22, 22,194,217,217,185, 84, 88, 64,167,211,193,218,218,186,198, +161, 67, 0,218,103,207,158,205, 46,247,189,205,240,225,195,247, 31, 60,120,176, 94,112,112, 48,238,222,189, 11,185, 92,142, 31, +126,248,225,121, 66, 66,194,135, 0,238,103,102,190, 89,191, 72, 83,234, 80, 78, 78,206,209,176,176,176,247,218,182,109, 91,246, +150,232,214,173, 27,209,173, 91, 55,167,242,166,254,172,172, 44,220,187,119, 15,193,193,193, 32, 8, 2, 79,159, 62,101, 52, 26, +205,254,234, 70, 41, 60, 60, 60,118, 45, 92,184,208,138,166,233,178,186,109, 97, 97, 1,169, 84, 10,145, 72, 4,138,162,144,144, +144,128, 65,131, 6,217,110,220,184,241,119,157, 78, 87, 31,128, 1,111, 9,242, 53, 48, 60, 10, 87,218, 6,248,187, 68,108,223, +182,162,195,164,201, 40, 29, 58,164, 3,252,157, 35, 30,133,103,216,182,118,174, 57,191,231,130,147, 63,211, 27,207, 13, 60,119, + 62,100,196, 87,179,102, 10,125,125,253, 51,131,255, 12,245,238, 65,127, 75, 56, 58,217, 32, 39, 91,137,132,164, 12,196, 39,234, + 57, 95, 95,255,204, 7,247,194, 36, 63,254,188,174,161, 74,173, 45, 29, 58,172,182,158, 94,191,245,124,240,218, 13,146,171, 99, + 63,105, 35,182,176,112, 71,110,118, 24,188,189,229, 24, 20,216, 28,191,237,185, 5, 91, 91, 7,184,184,184,128, 36, 73, 75, 83, +243,158,157,157, 77, 28, 61,112,125,194,199,227, 38,190,219,167,247, 0,250,252,133, 51,130, 43, 23, 79,221,250,125,251,215,199, + 57, 74, 37, 35,184, 66,139, 58,117, 93,159,196, 61,123,244, 97,247,158,163, 96, 33,178,110, 0, 52,174,180,194,150, 77, 48,224, +144,116,236,224, 50,233,199,227, 38,181,239,211,231,125,250,194,133, 19,184,112,118,207,157,165, 75,235,156,125,158,186, 79,116, +251,126,138,116,240,176,169,121, 65,231,162,244, 31, 12,172, 27,235,110,217, 82, 3, 60,231, 85, 85,249,142,164, 64,144, 65,235, +116, 94,158,125,250, 80,234,196, 68,161,149,139, 11, 13, 0, 70,163,177, 70,161,133, 42,134,160, 95,230, 52, 53, 45,106,181, 26, +108, 21,177, 19, 95,230, 76,207,204,172, 83,210, 9, 47,131,209,104, 44, 19, 89, 57, 57, 57,200,207,207,135,165,165, 37,178,116, + 58, 23, 83, 56,123,183,107,183,251,155,101,203,230, 28, 57,122, 84, 84, 94,100,149,110, 66,161, 16,171, 86,175, 22,125,241,213, + 87, 83,167, 9, 4, 51, 64,211, 38,223,207,210, 78, 59, 69, 81, 16, 8, 4, 72, 76, 76, 68, 82, 82, 18, 18, 19, 19,145,152,152, + 8, 11, 11, 11,112,127,241, 36,160,255,176,127, 86,169,200, 42,191, 47,179,114, 85, 27,222,193, 28,103,120, 83,133, 1, 99,198, +248,174, 41, 66, 75,165, 82, 5, 95,190,124,185,221,224,193,131, 5,119,238,220,129,171,171,107,153,208, 42,221,151, 14, 71,201, +100, 50, 28, 63,126,220,160, 82,169,130,107,120,152, 46,159, 61,123,182,245,146, 37, 75,132,227,199,143, 71,100,100, 36, 38, 79, +158,140,252,252,124, 40,149, 74,228,228,228, 64,173, 86,163, 93,187,118,144, 74,165,120,242,228,137, 81,173, 86, 95,174,193, 98, +199,101,102,102, 22,201,229,114,183,151,127, 27, 54,108,152,203,230,205,155,213,209,209,209,198, 14, 29, 58,216,152, 42, 56, 74, +113,224,192,129, 50, 75, 93,108,108, 44, 54,111,222, 92,230,147, 21, 26, 26,138, 53,107,214,148,197, 62, 51, 19,247,179,179,179, +105,163,209,136, 6, 13, 26,192,195,195, 3, 90,173, 22,235,214,173,163, 1,220,255,167,106,179, 86,171, 61, 50,118,236,216,121, + 15, 31, 62,116, 19, 8, 4,197, 38,237,146,252, 25, 12, 6, 60,123,246, 12, 17, 17, 17,136,142,142, 70,110,110,110, 89, 71,224, +209,163, 71,121, 70,163,241, 80, 85,188,114,185,124,209,111,191,253,230, 42,147,201, 42,212,231, 82,107,104,169,149, 52, 43, 43, + 11,118,118,118,232,209,163,135,243,229,203,151, 23,233,116,186, 37,111, 73,155, 70, 12, 27, 18,219,230,139,207, 6, 99,104,160, + 44,249, 88, 80,234,205, 53, 63,206, 46,113,134,119,142, 24, 26,232,145,252, 56,198, 14,195,134,156,104, 3, 32, 5,213, 59,108, +179,127, 94, 85,156,108,219,214,254,202,177, 83,167,126, 95, 48,119, 86,232,156,217, 19,229,106, 77,156,212,215, 71, 76, 0, 64, +124,162,158,123, 18,201,106,215,172,157, 21,186, 98,245, 70, 50, 35, 39,127,242,189,123, 85,135, 55, 40, 47, 94, 72, 18, 82,223, +198, 93,210, 26,250,117,172,123,231,214, 94, 88,201, 52,104,212,184, 13,250,244,126, 15, 87, 66, 30, 33, 61, 75, 11,133, 66, 1, +157, 78, 87,109,184,132,232, 39,199,199,112, 4,231, 77,112, 68, 18, 65,114,210, 49, 99, 63,237, 52, 96,192,251, 92, 80,208, 41, +250,196,241,189, 55, 14,253,177,225, 8, 41, 18, 10, 52,122, 91, 61, 65,104, 11, 64,134, 71, 22,169,138, 59, 52, 66,137,168,106, +243,107, 73, 96,215, 38, 77, 27,187,142, 25, 59,217,182,127,191, 65,220,217,179, 39,216, 67, 7,119, 95, 57,180,179,217, 94,150, + 84,138, 20,201,106, 73,129,210, 88,192, 17, 98,187, 34, 37,171,206,136,175,175,117, 31, 48,204, 0, 28,225,213, 85,249,118, 64, +167, 75, 41, 74, 78,118,115,232,210, 69,242,108,217, 50,153, 75,187,118, 90,162,196,135,184, 58,161, 69, 81, 20, 64,146,172, 41, +156,166,166, 69,163,209,128, 5,140,181,225,164,105,186,130,200, 42, 21, 90,165,207,139, 41,156,219,151, 46,189,227,221,167, 79, +110, 72, 72,136, 75,215,174, 93,137,194,194, 66, 20, 22, 22, 86, 16, 91,238,238,238, 68,147,128, 0,217,129, 43, 87,124, 77,189, +159,166,228,157, 36,201,191, 92,104,253,199,177,189, 74,235, 97,117, 87,149, 90,180, 76, 17, 90, 38, 90,180,140, 70,163, 17,206, +206,206,200,206,206,174,178,225, 39, 73, 18, 22, 22, 22,165, 99,196,213,206,188,211,233,116,235,230,204,153, 51,189, 95,191,126, + 78,141, 26, 53, 66, 86, 86, 22, 92, 92, 92, 32,149, 74,203,124,199, 74,249, 66, 67, 67,241,219,111,191, 41,117, 58,221,186, 26, + 56,127, 94,189,122,245,103, 67,135, 14,117,112,117,117,133,189,189, 61,158, 60,121, 2,123,123,123, 40,149, 74,196,196,196,192, +218,218,186,204,111,231,212,169, 83,133, 58,157,238,231, 26,196, 27,119,237,218, 53,131,181,181,245,147,172,172, 44, 42, 55, 55, + 87,144,151,151, 39, 80, 42,149,194,130,130, 2,225,249,243,231,157,108,109,109,213,127,254,249,103,150,183,183, 55,245,252,249, +115,202,104, 52,214,168, 94, 9,130,192,140, 25, 51, 32, 18,137,160,211,233,176,110,221, 58,204,153, 51,167,204, 39,107,245,234, +213, 88,184,112, 97,153,112,222,177, 99,135, 89, 53,135,227, 56, 24, 12, 6, 24,141, 70, 24,141, 70,147,196,239,235,192, 68,193, +158,254,244,233,211,192,182,109,219, 94, 60,124,248,176, 99, 73, 76, 50,100,100,100, 32, 35, 35, 3, 89, 89, 89, 40, 42, 42, 2, + 77,211,240,240,240, 64, 70, 70, 6, 78,156, 56, 81, 80, 88, 88,216, 7,213,204, 56,164, 40,106,108,167, 78,157, 4, 47,167,161, +180,151, 87, 42,222, 37, 18, 9,210,210,210,208,173, 91, 55,113, 72, 72,200, 88, 0,255,105,161, 85, 62,188, 67,239, 62, 19, 68, +254, 77,219,235, 31, 71, 4, 37, 55,174,155,145, 60,122,144,205, 25, 0,120, 20,158, 97,251, 56,198, 14,254, 77, 3,185,222,125, +236, 91,103,164,111,111, 6,192, 80,221,114, 61, 0, 96, 43,147, 12,239,213,179, 93,154,181,165, 37,185,102,237,142,115, 91,182, +252,252,206,145, 51,255, 11,239,176,102,109,113,120,135, 94, 61,219,177,209, 81,209,195, 1,236, 52, 85,188, 4, 6, 14,124,248, +219,174,223, 16, 29,241,167,251,188, 25,205,197,185, 25, 70, 88, 88,121,161,117, 75, 23,108,223, 21,134,199,143, 31,167,235,245, +250,110,213,214,111,130,243,142,136, 12,247,107,214,180,137,235,152,177,147,108, 2, 3, 7, 33, 40,232, 36,254,216,189,243,218, + 7,163,134,254,154,154,167,164,156,133, 50,145,140, 99,197,148,200, 86, 32,146, 88,100,234,245,197,115, 32,132, 66,169, 13, 48, +188,218,134,103,202,164,209,182,221,123, 14,194,153,179, 39,241,199,238,237, 87, 23, 55, 29,182,179,110, 43,127,162,221, 59, 63, + 78,173, 91,175,174,143,170, 40, 67, 73, 18, 98,131, 86,203, 90,255,184, 59,225,167,248,133, 99,227, 1,172, 5, 63,235,176, 60, +158,252,209,191,127,219, 47,226,226, 68,242,142, 29, 45,210,174, 92,145,149,172, 68, 82,173,208, 18, 8, 4,224,170, 30,234,170, +192, 73,236,217, 67, 2,168,118, 18,150, 72, 36,130, 90,173,134,177,106, 11,118, 5, 78,183, 11, 23,146,227,226,226, 26, 58, 56, + 56, 84, 16, 89,185,185,185,101,159,181, 90, 45,212,106, 53, 44, 44, 44, 34, 52,149,143,136, 84,224,204,184,118, 77,187,114,198, +140, 37, 31,142, 26,181, 33,248,242,101,169,163,163, 35, 10, 10, 10, 42, 8, 45,189, 94,143,238, 61,122,136, 86, 63,124, 56, 6, + 74,229, 82, 83,238,167, 75,183,110, 53,250, 3, 83, 20, 5,246, 47, 30, 58,124, 11, 48,169, 50,225, 69,214, 52,132, 99,234,172, +195, 42, 26,200,151, 87,247, 94,216,186,117,107,109,108,108, 44,188,189,189,203,196, 74,249,255,180,177,177,129,157,157, 29, 66, + 67, 67,241,253,247,223,107, 0, 44,172,129,179, 80,173, 86,143,236,213,171,151, 70, 32, 16,160,113,227,198,101,241,179, 88,150, +133, 88, 44,134,165,165, 37, 30, 62,124,136,129, 3, 7,170,213,106,245, 72,188, 26, 67,235,101,206, 2,181, 90,253, 81,239,222, +189,213,145,145,145,232,212,169, 19, 30, 63,126,140,162,162, 34, 20, 21, 21,225,197,139, 23,104,210,164, 9,212,106, 53, 54,111, +222,172, 81,171,213, 31, 1, 40,168,142,179,176,176,112,224,156, 57,115,168,253,251,247,215,245,240,240,104,218,166, 77,155, 70, + 61,122,244,168, 63,100,200, 16,159,254,253,251,187, 53,108,216, 80,219,167, 79, 31,121,191,126,253,228,106,181, 90,120,243,230, + 77,133,209,104,236, 87, 67, 58,203,196, 73,108,108,108,217, 80,161, 64, 32, 64,118,118,118, 89,228,254,210,151, 82, 21, 66,184, +103, 77, 98,187, 84, 96,149, 10, 46, 19,252,220, 42,227,172,241, 34,177, 88, 92,106,241,228, 76,224,124, 20, 21, 21,213,171, 75, +151, 46,143, 38, 76,152, 80,152,158,158, 14,107,107,107,248,250,250,194,207,207, 15, 78, 78, 78, 48, 24, 12, 56,126,252,184,234, +196,137, 19, 97, 5, 5, 5,221,240,106, 12,173,158, 47,221,199, 23,149,189,100, 75,173, 89,165, 66, 75, 42,149,194,195,195,163, +244,222,190, 48,231,126,214, 18,127, 45,103,137,128,233,209,189, 79,189,254, 3, 6,219, 30, 63,121, 75,188, 97,211,137,176,214, + 61,177,195,177,142,242,148, 99, 29,229,169,214, 61,177, 99,195,166, 19, 97,199, 79,222, 18,247, 31, 48,216,182, 71,247, 62,245, + 34, 35,162, 27,149, 95,247,176,178,116, 74,165,210,246,157, 58,182,206, 11,185,113,149, 93,177,122, 35,217,189,219, 7, 15,119, +254,122,252,248,206, 95,143, 31,239,222,237,131,135, 43, 86,111, 36, 67,110, 92,101, 59,117,108,157, 39,149, 74,219,155,146,247, + 41,147, 70,219, 14,232, 63, 8, 65, 65,199,233, 35, 7, 54,175, 62,120,244,105,151, 79,167, 95,203,136,141,125,204,101,166, 92, +128,144, 76, 68, 84, 84, 84, 65,137,200,138, 53,133,115,242,196,209,229, 69,214,117, 71,215, 78, 59,162,162,192, 92,186,116,218, +120,249,242, 67,205,245, 71,153, 5, 15, 34,179,115,211,178,114,159, 43,149, 57,122,150,101,192, 48, 12,245,205, 55,101, 14,187, +149,150, 81,135, 14, 93,241,103,240, 62,236,222,181,173,128,101,161, 29,126,228, 8, 51,124,248, 50,206,167, 78, 29,159,189, 7, +246, 17,129,239, 15,182,229, 0,118,224,208, 65,118,251, 15,238, 39,234, 53,168, 87,199,215,183, 44,164,205,127,175, 46,253, 5, +156,203,128, 60,101, 98,226,213,208,141, 27,117, 46, 35, 71, 58,136, 93, 92,108,192, 48, 68,233,251,189,170, 77, 32, 16,188,108, +129,169,146,211,195,201, 41,245,212,169, 83,240,243,243,131,135,135, 7,202,251,200,150, 6,228,118,116,116,196,209,163, 71,193, + 85, 12, 78, 93, 37,103,171,186,117, 67, 87,173, 92,169,103, 89, 22,121,121,121,175, 88,179,242,242,242,192,178, 44,206,158, 57, +163, 87, 22,175, 4, 98, 82,222,187, 81, 84,209,135,157, 59,175, 24, 48, 96,128, 33, 46, 46, 14, 44,203,162,188,101, 43, 51, 51, + 19, 86, 86, 86,208,234,116, 94, 0,100,166,112,102,158, 63,111,137, 26,222,235,149, 88,180,254,138,114,255,175,139,172,242, 11, + 74, 79, 50,201,162, 69,211, 52,188,188,188, 42, 44,233, 66,146,100,133,205,204, 25,135,123, 34, 35, 35, 47,244,233,211,103,201, +187,239,190, 59,101,201,146, 37, 84,163, 70,141, 80, 80, 80, 0,123,123,123, 56, 59, 59, 35, 38, 38, 6,167, 78,157, 98,178,179, +179,183, 2, 88, 14,211,166,208, 95,121,250,244,105, 96,243,230,205, 15,206,159, 63,223,182,119,239,222, 66, 47, 47, 47,112, 28, +135,135, 15, 31,226,216,177, 99,134,157, 59,119, 42, 75, 68,150,169,206,203, 23,211,210,210, 62,232,215,175,223,222,177, 99,199, + 90, 51, 12, 35,124,241,226, 5,116, 58, 29,140, 70, 35,146,146,146, 12, 65, 65, 65, 69,106,181,122, 52,128,139, 38,240,133,230, +231,231, 55,185,116,233,210,216,155, 55,111,126, 63, 97,194, 4,199, 30, 61,122,136,104,154,198,141, 27, 55,178, 90,181,106,229, +156,153,153,105, 56,122,244,104,142, 86,171, 93,200, 48,140, 73, 75,240, 16, 4, 1,165, 82, 9, 39, 39, 39,232,116, 58,176, 44, + 11,189, 94, 15, 43, 43,171,178,101,147, 56,142,131, 57,206,245, 47,213, 1,202, 96, 48, 96,212,168, 81, 96, 89, 22,235,214,173, + 3, 77,211,102,147,217,218,218, 62,120,244,232, 81, 96,203,150, 45,203,196, 75,105, 29,146, 72, 36,112,114,114,130,163,163, 35, +130,130,130, 32, 20, 10, 31,212,228,239, 86,130,199,217,217,217,173, 46, 93,186,212, 62, 44, 44,236, 99, 0, 45, 13, 6,131, 7, +195, 48, 4, 73,146, 10,142,227,158, 40,149,202, 95, 97,226, 18, 60,153,153,153,223,143, 27, 55,174,213,190,125,251,172, 4,130, +255, 61, 26, 2,129, 0, 18,137, 4,165,193, 49, 57,142,131, 94,175,199,162, 69,139,148, 42,149,234,251,183,229, 45,209,186, 77, + 59,108,223,188,222,234,242,159, 23,178,162,158,226, 88, 37, 33, 28, 82, 50,210,183, 55, 75, 75, 78,182,106,221,166,157, 73,156, + 70,189, 33,231,163,209, 95,122,151, 44,193,179,232,197,139,132,109,123,247,252, 20, 15, 0, 63,254,188,174, 97, 70, 78,254,228, +232,168,232,225,219,182, 29,104,111,212, 27,114, 76,225,252,159,120,217, 91, 0, 14, 90, 0,119, 31,134,101,212, 29, 56,242,252, +194, 6,245,108,222,207,204,209,164, 22, 21,169, 63, 7, 16,111,106,222, 59,118,232,130, 63, 47,238,199, 31,187,247, 42, 57,150, +210, 58, 57, 57,113, 0, 16, 21,229,196, 69, 69,229,115,255,243, 43,182, 83, 9,185,199,203,191,252,188,199,151, 5,202,220,159, +215,109,174,126, 40,165,121,139,119,209,188,197,187,152,254,249,215,182, 77,154, 54,246, 6,128, 35, 71,192, 52,109, 16,121,122, +201,226,101,239, 47, 95,190, 12,202, 66, 29,150, 47, 47, 94,174, 39, 38, 60,242, 76,124, 60,244,124,155, 85, 17, 75,104,250, 46, +190,252,178,161, 58, 55, 87,222,113,222, 60, 39,193, 87, 95,145,213, 57,195,151,127,126, 77,225,188,255,228,201,153,201,159,126, +154,186,116,201,146, 62, 91,183,109,179,104,214,172, 25,210,211,211,209,184,113, 99,120,120,120,224,210,165, 75, 56,122,232,144, + 42,191,176,112, 33,128, 45,166,112,238, 57,123, 54,166, 81,211,166,217,219,182,109,115, 31, 48, 96, 0,161, 82,169, 80, 80, 80, +128,130,130, 2,232,116, 58,148, 4,132,230, 98,159, 62,141, 50, 26,141, 91, 77,205, 59,147,149, 37, 93,222,174, 93,138,136,101, + 87,125, 48,116,232,156,229,223,126, 43,169, 87,175, 30,161,211,233,202,172, 90, 6,131, 1, 86, 86, 86, 6,189, 94,239, 8, 64, +109, 10,167,100,231, 78, 58, 43, 43, 11,114,185,188, 44, 92, 83,249,184,132,133,133,133,224, 56,142, 15,166, 91, 11, 84,169,144, +236,237,237, 31, 8, 4, 2,207,242,214,173,202,214,206, 43,127,204,104, 52,166,100,103,103,183,126, 73,241, 86,229, 15,229, 11, +224,135,238,221,187,127, 48,123,246,108, 34, 36, 36, 4, 39, 78,156,224,226,227,227,143,148, 88,177,226,171,233,233, 84,197,105, + 45,145, 72,102, 90, 90, 90,246, 44, 13,225, 32,147,201,194, 84, 42, 85,112,201,112, 97, 97, 45, 56,109, 36, 18,201, 12, 75, 75, +203, 94, 37,203,175,192,218,218,250,145, 74,165,186,164,211,233,214,163,234,133,170,171,227,180,176,181,181,253,222,201,201,233, +163,175,190,250,202,241,218,181,107,138, 63,255,252, 83,148,159,159,191, 79,175,215, 87,183,168,244, 43,156, 14, 14, 14, 15, 40, +138,242,252,139,202, 8,205,155, 55, 15, 26, 56,112,224,128,209,163, 71,195,104, 52, 98,203,150, 45,184,116,233,210,153,103,207, +158, 5,214,208, 27,125,153,211,201,211,211, 51,100,202,148, 41, 62,163, 70,141,146,217,219,219, 67, 32, 16, 64,165, 82,225,217, +179,103,120,248,240, 33,119,242,228,201,162,208,208,208, 20,181, 90,221, 21, 64,182, 25,247,243,117,122,205, 21, 56, 5, 2, 65, + 23, 47, 47,175, 3, 75,151, 46,181,238,213,171,151,133,163,163, 35, 40,138,130,209,104,132, 66,161, 64,120,120, 56, 46, 92,184, +160, 58,114,228,136, 42, 39, 39,103, 20,128,171,255, 68, 58,223, 36,167,127, 67, 44,126,105,161,232, 42,163,189,215,112,110,141, +233,236,222,197,109,208,240, 15,250,245, 5,128,195, 71,207,157, 55, 97, 81,233, 42,211, 89, 83, 90, 77,225,108,220,128, 92, 26, + 17, 25, 94, 33,160,101,211, 38, 1,177,254,205,134,126,103, 10, 81,185,200,240, 21,242, 94,110, 56,182,188, 77,183,194, 48,171, +191, 47, 2, 7, 13, 31, 50,224,235,133, 11,240,195,247, 43,112,242,240,241, 51, 81,241, 21,150, 9,250,207,213,165,191,152,147, +248, 78, 32,120, 87,230,230,214,121, 29,203, 46,120, 28, 30,110, 85,190,195, 86,106,121, 46,223,169,116,119,119,207, 84, 40, 20, + 46,166,112, 6,254,242,139, 65,109,105, 41, 89,176,106, 85,151, 34,173,182,203,242,229,203, 5,247,239,223,199,230,141, 27,105, +109, 74,202,222, 44, 96, 70, 21,163, 33, 85,114,250,204,152, 33,157,187,121,243,120,223, 6, 13,156, 63,254,248, 99,161, 80, 40, +132, 74,165, 66,114,114, 50, 46, 94,184,160,143,140,138,138, 84, 42,149,239, 3, 72, 51,149, 51,240,151, 95, 12,118,190,190,144, +201,229,220,229, 43, 87,108, 39,207,156, 57,165, 78,221,186,182,125,250,246, 21,218,216,216, 32, 47, 47, 15, 47, 94,188,192,241, +227,199, 51,139,138,138,220, 1, 48,166,112,238,189,121,179,249,217,171, 87,135,125,247,221,119,226,128,128, 0,216,218,218,162, +176,176, 16,225,225,225,184,122,245,170,110,235,214,173, 5, 5, 5, 5, 83, 24,134, 57,245, 23,150,251,219, 96,213, 42,197,246, +210,209,159,191,218,195,223,148,130,104, 13, 96,113,201,231,111, 81,243,154,129,111,211,203,199,219,193,193, 97,187, 86,171,229, + 52, 26,205,100, 0, 73,255,194,116, 10, 90,183,110,189, 57, 51, 51,179, 61,199,113,176,181,181,189, 21, 17, 17, 49, 13, 85,204, +188,169,129,147, 2,208,222,202,202,170,157,181,181,117, 23,157, 78,231, 95, 50,252, 22,165, 82,169,174, 26, 12,134,187, 37,214, + 39,230, 31,206, 59, 5,160,151,187,187,251,167, 44,203, 54, 32, 8,194,142, 97, 24, 24,141,198,124,150,101,159, 21, 20, 20,236, + 4,112,233, 95,144,206, 55,194,217,164, 62,134,112, 36,252,171, 18, 4, 21,132,214, 75, 2,130, 96, 17, 21, 25,135,227,102,164, +147,236,215,211,107, 19, 80, 60, 51, 17, 53, 59,215,254, 79,104,153, 32, 94,204, 22,153,245,169,113, 28,193, 85,224, 36, 56, 34, +169,113,243, 33,127,188,142,208, 50, 21, 77,252,208, 5, 28,218,179, 28,238, 70, 63,195,159,111,241,187,238,141,113,254, 0, 56, +108,180,183,191, 69, 10, 4,174, 0,200, 18,235, 11,203, 18, 4,195, 17, 4, 93,126,120,235,165,142,101,181,156, 6,160,153, 80, + 34,241, 98,104,218, 37, 29,176, 58,203, 48,239,104, 57,174,200, 19, 88,252, 8,136,169, 77, 58, 13, 64, 51, 74, 34,241, 62,203, +113,131,178, 44, 45,155,103,106, 52,114, 0,156,149,165,101,148, 82,165,218,173,213,106, 55,225,213,145,139, 26, 57, 69, 18,137, + 39, 67,211, 46, 0, 64, 10, 4,153, 7,117, 58,175, 20, 27,155,143,181, 58,157,143,149,149,149, 81,175,215, 43,181, 90,237,104, +154,166, 47,155,147,247,103, 52,221,228, 38, 73,118, 50, 88, 90, 58, 26, 8,194, 82, 79,211, 6,189,193,144,172,213,106,195, 0, +252, 4, 32,238, 47, 46,247,183, 10,166,132,147,122, 83, 15, 11,207,201,115,242,156, 60, 39,207,201,115,242,156,127, 61,167, 12, +128,119, 73,103,241,191,152,247,183,202,186, 85, 58,251, 95,192,223, 11, 30, 60,120,240,224,193,227,173,128, 26,149,248,100,241, +248,103, 65, 84,163, 74,205, 49, 9,214, 70,217, 6,243,156, 60, 39,207,201,115,242,156, 60, 39,207,249,255,142,179, 38,238,255, +226,144,228, 43,107, 29,114, 28,183,253,239,248, 99,222,252,203,115,242,156, 60, 39,207,201,115,242,156, 60,231,255, 59,148, 14, + 29,146,252,173,168, 18, 46, 37,219,155, 62,151,199,219, 93, 23, 94,134, 71,201,102,206,249,110,252, 45,231,193,131, 7,143,183, + 3,255,132,208, 50,181,209,122,157,198,237,117,133,207, 10,130, 64, 26, 65, 32, 13,192,138, 55,120,110, 77,112,119,114,114,250, +162, 73,147, 38,123, 93, 92, 92,166, 3,112, 54,243,250,134, 50,153,108,189,165,165,101,136,165,165,101,136, 76, 38, 91, 15,160, +225, 27, 42, 55, 2,192,100,137, 68,114,197,205,205, 45, 85, 44, 22, 95, 1, 48, 5,181,159,185,218, 8,197,113,210,190, 5,208, +220,156, 11,157,155, 14, 58, 36,111, 58,232,137,188,233,160,112,199,128,129, 13,229, 77, 7,133,203,155, 14,122,226,220,116,208, +161,191,160,190,190, 78,249,174, 32, 8, 36, 17, 4,146, 76,188,246, 39, 2, 72, 38, 8,164,188,129,186,196,131, 7, 15, 30, 60, +254,107,112,119,119,255,192,205,205, 45,216,205,205,237,146,187,187,251, 7, 38, 92,210,179,146,134,135, 33, 8, 48, 53, 52, 36, +213,157, 87,147,185,178,252,181,107, 76,204, 90,121, 78, 23,130, 0,195,149,128, 32,192, 58, 59, 59,111,112,115,115, 91,241,242, +230,236,236,188,129, 32,192,150, 59,151, 41, 39,240,204, 53,171,186,140, 25, 51,230,112, 94, 94, 94,144, 94,175, 15,122,250,244, +105, 80,215,174, 93, 15,190,100,221,168,146, 83, 42,149,126,216,182, 93,251,208,171, 55,238, 62,141,125,150,144, 22, 25,243, 60, +225,244,249,203,247, 3,154, 53,191, 39,149, 74, 63, 52,163,140, 8, 0,147, 5, 2,193, 21, 43, 43,171, 20,129, 64,112, 5,192, + 84,138,162, 78,173, 92,185, 50, 33, 34, 34, 34,227,230,205,155,249, 87,175, 94, 77,157, 48, 97,194, 51,130, 32, 78, 87, 34,216, +123, 86, 98,165,121,217,170,179, 36, 49, 49,241,188, 66,161,184, 96, 97, 97,241,189, 9,231,151,113,202,155, 14,122,146, 89, 96, +224, 50, 11, 12,156,188,233, 32,174,220,231, 39,102,222,243,154,202,232,149,186, 32,145, 72,188,107, 16,244, 61,171,186, 22,128, +107,201,111,173, 1,252, 82,178,149, 78, 61,119,149, 74, 36,111,170, 46,189,137,188,243,156, 60, 39,207,201,115,254,221,156,255, +101,180, 42,217,187,161,216, 95,203,173,182,179, 14, 63,123,250,244,169, 21, 0,248,249,249, 77, 3,112,212, 28, 33, 65, 16,152, +203,178, 28, 9, 0, 36, 73,204,235,214,173,123, 43, 11, 11,139, 10, 81,144, 53, 26,141,248,202,149, 63,123,176, 44, 71,148,156, + 55,151,227,176, 30, 64,134,169,255,161,215,235, 72,161, 80, 12,146, 36,190, 12, 8,104, 86, 39, 59, 59,251, 26, 73,146,123, 83, + 83, 83,243,204, 54,227, 16, 4,118,236,216,225,231,230,230,246, 74,180,102,133, 66, 33, 30, 52,232,125,179,248,198, 1, 18,157, + 68,210, 78, 68, 16,110, 12, 77,219, 1,128, 64, 32,200,187, 47, 22,183,254,225,187,239,100, 4, 65,176, 57, 57, 57,208,104, 52, +152, 53,107,150, 69,100,100,228,224,236,236,236, 77, 53,208,250, 53,111,209,106,214,133, 11,231,253,149,185,121,218, 29, 63,111, + 11,213, 8, 68,234,186, 77, 26,139, 54,111,223,109, 63,105,252,232,207,163,163, 35, 30,161,242,229, 72,202,131, 4,112,124,230, +204,153, 77, 3, 3, 3,197,133,133,133, 82,141, 70, 83,103,239,222,189,139, 90,183,110,109,213,178,101, 75,241,129, 3, 7,136, +130,130, 2,112, 28, 39,107,220,184, 49, 55, 98,196, 8,237,193,131, 7,167, 3,216, 80,141,240,157, 91,124, 47,201,117,141, 26, + 53, 90, 10, 0, 79,159, 62, 21,149,187,199, 66,127,127,127, 75, 0,136,137,137,249,134,227,216,153, 0,192,113, 88, 13, 96, 65, + 37,166,181,167, 77, 59, 14, 7, 8, 52,136,184,113, 88,218,180,211,112, 45, 56, 60, 35,128,167, 37, 29,130,229, 64,185,184, 80, + 21, 17,149,150,150, 86,171,181, 9, 7, 12, 8, 36, 8,130, 56, 18, 26, 26,122, 52, 51, 51,179, 46,203, 50, 19,171, 75,231, 75, +245,136,112,116,116, 28,151,157,157,189, 2,192,167, 81, 81, 81,173, 0,192,223,223, 95, 4,224,129,141,141, 77, 7,131, 94, 79, +240,239, 42, 30, 60,120,240,248,207, 10,173,135, 0, 6,224,127, 75,240,108, 7, 96,182,208, 18, 3,192,181,107,215, 0, 64, 82, +139,132, 16,229, 5,204,140, 25, 51,224,230,230,246,178,120, 65, 72,200,149,215,201,108,133,255,248,246,219,111,173,242,243,243, +123,254,250,235,175,157, 57,142, 91,147,150,150,118,167,134,235, 51, 56, 14,171, 73,146,152, 71, 16, 4, 36, 18,105,236,148, 41, + 83, 30,150,252, 86,231,244,233,211,178,129, 3, 7,170, 1, 36, 0,128, 68, 34,245,160, 40,210,175, 88,185, 98,117,117,130,112, + 24,224, 75,139,197,221, 39,255,242, 11,253,206,192,129, 2, 75,185,156, 0,128,132,232,104,199,213, 63,254,216, 33, 47, 62, 94, +172,113,116,204,201, 81,169, 52,177,177,177,144, 72, 36, 4, 69, 81,239,212,148, 97, 75, 75,203, 47,190,251, 97,149,165, 50, 55, + 95,163, 85, 22,234, 41,218,168,179,182,144, 49, 25,233,153, 57, 86, 22,150,234,121,139,151,137, 63,155, 56,246, 11,149, 74, 53, +173, 6,170,233, 95,126,249,165,127,219,182,109, 61, 14, 29, 58, 68, 20, 20, 20, 64, 32, 16, 88,181,108,217, 18,173, 91,183,102, +254,252,243, 79,162,110,221,186, 8, 8, 8,192,141, 27, 55,112,235,214, 45,162, 85,171, 86,178, 99,199,142,141, 49, 26,141, 27, +106, 18,215, 20, 69,206,106,220,184,113, 75, 75, 75, 75,189,159,159, 31, 38, 78,156, 8,142,227,208,179,103,207, 0, 43, 43,171, +163, 42,149, 74, 28, 19, 19,221,185, 38,145,157, 25,113,114, 68,169,101, 11, 64, 51,112,120,150, 21,113,178,121,185, 83,252, 99, + 98, 98,222,205,203,203, 43,115, 70, 44, 93,192,188,115,231,206,230,212,165, 12,142,195,234,129, 3, 3,231, 1, 4,209,179,103, +207,252,233,211,167,147,209,209,209, 31, 13, 25, 50, 56,224,233,211,103,168, 38,157,229,235, 17, 49,110,220,248, 12, 43, 43,171, +161, 71,142, 28,137, 81, 40, 20, 2,145,168, 76,103, 82,206,206,206,114, 63, 63,191,169, 14, 14, 14,153, 20, 73, 58,115,224,184, +154,234, 18, 15, 30, 60,120,240,248, 87,225, 76,137,184, 58,243,242, 15, 2, 0, 8, 10, 10, 42, 11, 95, 26, 24, 24, 88,101,175, +154,227,184,140,199,143, 31,123,169,213,106,112, 28,103, 74, 35, 80,126,138,102, 6, 65,144,155, 73,146,152, 70, 16, 4, 2, 2, +154, 61, 95,183,110, 93,101,107,122,233, 3, 2,154, 61,167, 40,178, 30,199,113, 32, 8,114, 11,199,177, 25, 85,112, 86,218, 48, +138,197,146,185, 0,224,234,234, 22,127,238,220, 57,253,176, 97,195,240,227,143, 63,138,230,207,159, 63, 71, 32, 16, 76, 79, 74, + 74, 74,175, 38,157, 0,176, 64, 46,119,150,237,216,177,195,111,202,148, 41, 15, 21, 10,197, 2, 0,112,115,115, 91, 1,160, 9, +128,132,114,199,176,117,235,193,212,137, 19, 39,198,102,102,102, 46,168,138,115, 40, 80,223,171,113,227,238,203,175, 93,227, 72, +157,142,200,190,126, 93,153,149,145, 97,140,203,202,146,237,122,240, 32,112,209,138, 21, 66, 47,111,111,132,156, 58,229,148,173, + 86,103, 21,232,116,218,140,140, 12,142,166,233, 91, 38,228,189,169,179,220, 89,182,237,167, 45,247,173,133, 20,235,236,233, 65, + 8, 29, 28, 4,164,204, 70, 76, 9, 72, 93,189, 58, 13,197, 0,154,214, 84, 70, 34,145,104, 76,239,222,189,101, 7, 15, 30, 36, + 2, 2, 2, 96,103,103,135,235,215,175,227,209,163, 71,200,203,203, 35,141, 70, 35,218,180,105,131, 85,171, 86,193,219,219, 27, +249,249,249, 72, 74, 74,114, 18,139,197,114,163,209, 88,213,253,172, 80,159,230,206,157, 11, 55, 55, 55,208, 52,141,220,220, 92, +208, 52, 13, 43, 43, 43, 0, 64, 74, 74, 10, 78,157, 58,105, 74, 93,170, 17, 28,199,225,189,247,222, 43, 36, 8, 34,234,101,139, +150, 57,156, 30, 30, 30, 7,178,178,178,251,117,239,222, 29,121,121,121,198,101,203,150,161,121,243,230,240,243,243, 51, 37,157, + 11, 68, 34,241,175, 62, 62, 62, 63,205,152, 49,195,205,193,193, 1, 58,157,110, 81,122,122, 58,166, 78,157, 10, 0,232,223,191, +127,115,161, 80,120,110,194,132, 9,168, 91,183,110,106,110,110,110, 82,104,104,232, 68,181, 90, 29, 94,219,188,155, 8,158,147, +231,228, 57,121,206,127, 21,167,169, 90,228, 95, 10, 69,169, 5,171, 4,219, 43, 8,173,192,192, 64, 34, 40, 40,136, 51, 33, 99, + 57,158,158,158, 94, 22, 22, 22, 0,144, 99,110, 42, 88,150,157,238,232,232,152,185, 96,193,130,142,126,126,126,250,233,211,167, +135, 39, 36, 36, 44, 44,127, 78,157, 58,117,190,223,184,113, 35, 98, 99, 99, 19, 86,172, 88,113, 35, 39, 39,199,220,117,204,230, +115, 28,214,149, 88,199,178, 79,157, 58,213,252,218,181,107,211,126,254,249,103,249,103,159,125, 38,250,226,139, 47, 70, 3,248, +177, 38, 18,138,162,212,149, 13, 23, 86, 6, 55, 55, 55, 61, 69, 81, 85, 6,137, 11, 4, 44,164, 98,113,183,229,215,174,113,250, +132, 4,245,111,107,215, 90,111,187,119,111,169,145,227, 92,156,157,157,209,169, 67,135, 34, 41, 69,101,103,166,167,179,206,245, +235, 83, 47,206,157,115,210,136,197,105, 7, 15, 30, 44,200,201,201, 57, 81,163, 9,143, 32,148, 44,199,233,173, 60,189,141,195, + 6,247, 10,184,127,247, 81,180,181,179, 19,217,170,101, 64,243,232,216,132, 80,176,172,129, 32, 8,101, 77, 60,182,182,182,126, + 57, 57, 57, 80, 42,149,144,203,229, 88,183,110, 29, 92, 93, 93,161, 86,171, 17, 17, 17,193,121,122,122, 18,215,174, 93,131,167, +167, 39,178,178,178,160,215,235, 81, 88, 88,152,169,211,233,170, 90,155, 49,131, 36,169,223, 73,146, 24, 79, 16, 4,234,213,243, + 77,220,180,105,147,158,101, 89,248,251,251, 99,200,144, 33, 56,118,236, 24, 34, 34, 34, 74, 45, 79,122, 31,159, 58,137, 36, 73, +248,148,104,165, 90, 91,117, 74,151,246, 73, 75, 75, 27, 90,203,135,134,116,119,119, 31,221,160, 65,131,105, 31,126,248,161, 81, + 44, 22, 67,165, 82,149,222, 11, 99,191,126,253,243, 7, 14, 12,180, 61,115,230, 76,181,233,212,235,245,241, 5, 5, 5,159,126, +249,229,151,123,183,110,221,106,191,112,225, 66,176, 44, 11,142,227, 64,211,116,217,162,223, 44,203,226,248,241,227,136,139,139, +251,254, 37,145,197,131, 7, 15, 30,255, 47, 96,134, 22,249, 55,194, 13,197,195,134,120, 89,108,253,237,145,225, 41,138,218,118, +241,226,197,150,157, 59,119, 22,244,232,209, 35,224,252,249,243, 1,169,169,169,225, 37,214,131,128, 30, 61,122, 4, 56, 59, 59, + 99,253,250,245,106,138,162,182,213,242,111,202, 26,189,244,244,244,135, 0,214, 28, 59,118,108,245,228,201,147,225,234,234,218, + 68,161, 80,252,173,121,182,145, 72, 90, 77, 88,183,142, 22, 26,141,228, 47,107,214,216,172,189,114,101,245,161,195,135, 5,239, +189,247, 30,193,113, 28,194,158, 60,177, 88,181, 97,131,108,212,224,193, 9, 49,241,241,244,201, 11, 23,140, 25,169,169,185,169, + 89, 89, 75, 0,228,214,196,111, 52, 26,111, 63,125,250,212,189, 83,151,247, 60,174,222, 11,127, 52,108,112,255,238, 66, 1, 73, + 60, 75, 72,121,224,230,234,100, 27,114, 37, 88, 99, 52, 26,111,215,196,163, 82,169, 94,208, 52,237,192,113,156, 60, 36, 36, 4, +114,185, 28,121,121,121, 48, 26,141,208,235,245,122,181, 90, 45,205,201,201,129, 86,171,133, 78,167,131,141,141, 13,194,194,194, + 50,104,154,254,179, 42, 78,134, 97, 38, 72, 36,146,111,133, 66,161, 88, 36, 18,165, 61,120,240, 0, 74,165,178,142,157,157,221, +143, 52, 77, 35, 45, 45, 13,215,174, 93,251,202,198,198, 38, 1, 0,164, 82, 41,196, 98,137,163, 78,167,163, 1,164,214,246,158, +191,206, 26, 83,174,174,174,222, 22, 22, 22,203,231,205,155,235,223,162, 69, 75,100,101,101,129,101, 89, 88, 90, 90, 66,173, 86, +195,198,198, 6,237,219,183,127,177,124,249,114, 5,199, 97, 82, 77, 98, 48, 51, 51, 51, 75, 32, 16, 76,159, 60,121,242,183,126, +126,126,245, 56,142, 67,195,134, 13,209,187,119,111,156, 59,119, 14,177,177,177, 80,169, 84,204,157, 59,119,246, 43, 20,138,211, +252,235,150, 7, 15, 30, 60,254,115,120,197, 55,171,130, 69,235,239, 68,102,102,102, 86,116,116,244,249,208,208,208,192, 17, 35, + 70, 32, 36, 36,100, 28,128, 47, 1, 64, 34,145,140, 27, 49, 98, 4, 66, 67, 67, 17, 29, 29,125, 62, 51, 51, 51,235, 77,252,167, + 88, 44,214,234,245,197,198, 41,169, 84, 42, 53,243,242, 58, 37, 67,134, 0, 80,167,154, 99, 85,155, 70, 4, 2,183,102,125,251, + 10,242, 30, 61, 82,238,184,123,247,219,189,123,247, 10, 58,118,236, 72, 24, 13, 6, 48, 44, 11, 95, 95, 95,162, 71,207,158,150, +191,239,221,235,192,168, 84,215,190,155, 55,239,250,246, 9, 19,138,158,150,248,129,213, 4,157, 78,183, 97,218,212, 79,123, 94, + 9,185,238,209,164,113,125,135,243, 23,175, 60,116,116,180,149,249, 53,104, 96,153,147,151,203, 44,156,255,149, 64,167,211,253, + 82, 19,143, 70,163, 57, 30, 28, 28, 60,216,203,203, 75, 30, 30, 30, 14,189, 94, 15,134, 97,208,163, 71, 15,112, 28, 39, 1,192, + 10, 4, 2, 68, 71, 71,195, 96, 48,100, 62,125,250, 52,237,217,179,103, 18, 0, 43,107, 72, 95,162, 78,167, 67, 84, 84,241,168, +157,167,167,103,175, 1, 3, 6,128,166,105,244,237,219, 23, 39, 79,158,236, 21, 21, 21,181,182,188,230,123,221, 50, 47,177,144, +249,187,187,187, 31, 43, 57,100,146, 19,188,135,135, 71,128,175,175,239,214,149, 43, 87,138, 60, 61, 61,193,113, 28,236,237,237, +160, 86,171,145,157,157,131, 38, 77,154,192,203,203, 11, 43, 87,174, 4,128,253,166, 90,220,210,210,210,158,165,165,165,141,200, +204,204, 20,229,231,231,183,238,213,171,215,250,158, 61,123,226,225,195,135,184,126,253,250, 40,137, 68,146,105, 48, 24,104, 87, + 87,215, 73, 4, 65,216, 24, 12,134,125, 57, 57, 57, 10,254,221,197,131, 7, 15, 30,255, 9,148,250,104,161,220,222, 60,139,150, +191,191,191,101, 66, 66,194,199,117,234,212, 17, 3,128,133,133, 69, 19, 95, 95,223, 57,241,241,241,133,230,166, 70,173, 86, 31, +218,187,119,111,239,159,126,250, 73,212,191,127,255,250,199,142, 29,107, 11, 0,253,251,247,175,111,109,109,141,189,123,247, 26, +212,106,245, 27,139,137,100, 52, 26, 59,183,105,211, 6,185,185,185, 72, 72, 72, 48,107, 88,230,244,233,211, 50, 20,251,101, 85, +123,172, 58,208,122,189,189,157,135, 7,153,122,229,138, 33, 87,169,116,235,220,165, 11, 97, 52, 24, 64,146, 36,114,114,114,144, +148,148, 4, 91, 59, 59, 34,250,233, 83,171,157,115,231,158,174,211,162,133,152,209,235, 29,205, 72,166, 42, 59, 51, 99,252,231, +211, 63, 59,190,111,223,126,121,190, 82, 25,103, 97, 33,211, 73, 36, 34,215, 25,159,127,206,228,230,230,142, 5, 80,100, 2,207, +202,125,251,246,245,237,219,183,239, 19,111,111,111,231,172,172, 44,215,252,252,124, 38, 55, 55,151, 66,177,175, 21, 1, 0, 87, +174, 92,129, 82,169,164, 25,134,185,134,226, 88, 88,122, 83, 19,234,227,227, 99,219,186,117,235,174,114,185, 28, 5, 5, 5,112, +116,116, 68,203,150, 45,187, 82, 20,245,107, 98, 98, 98,193,155,172,245,151, 46, 93,178,230, 56,238, 93,142,227,208,183,111, 95, +147,174, 97, 24,230,147, 1, 3, 6,136, 8,130,128, 70,163,134, 84,106, 1, 75, 75, 43, 88, 91,219,192,207,175, 17,210,210,210, +208,167, 79, 31,125, 92, 92,220,102,133, 66, 97,118, 29, 45, 40, 40, 24,212,190,125,251,217, 83,167, 78, 5, 77,211, 24, 52,104, + 16,146,147,147,215,190,120,241,226,160,187,187,251,232, 79, 62,249, 68,238,232,232,136,217,179,103, 91, 0,248,134,127,119,241, +224,193,131,199,127, 2, 47,251,104,189,106,209,170,110, 76,212,213,213,181, 19, 65, 16,139, 52, 26,141,184,116, 72,134, 32, 8, +177, 92, 46, 63,169,209,104, 86, 40, 20, 10,179,156,226,242,243,243,149,207,159, 63, 63,121,251,246,237,225, 67,135, 14,197,165, + 75,151,198, 2,192,208,161, 67,113,251,246,109, 60,127,254,252,100,126,126,190,242, 77,228,220,195,195,163, 95,151, 46, 93,134, +182,105,211, 6, 65, 65, 65, 96, 24,230,150, 57,215,151,159, 97,136, 74,102, 29,150, 30, 51,137,140,162, 64, 16, 4,104,154, 6, + 0,100,103,101, 33, 54, 38, 6,185,121,121,208,105,181, 80,169,213,140, 95,221,186,154, 2,189, 94, 72, 0,230,142,125, 37,134, +222,191,147,164, 86,169,156, 29,237, 29, 52, 50,153, 4,249,202, 2,209,131,251,119,138, 0,196,153,200,161,231, 56,174,203,185, +115,231,150, 80, 20, 53,194,202,202, 10,211,166, 77,163,186,118,237, 10,145, 72, 4,157, 78,135,252,252,124,236,221,187, 55,139, + 97,152,122, 37,215, 88,201,100,178,221, 20, 69,165, 20, 22, 22, 46,170,241, 15,244,250,254,129,129,129, 2,189, 94,143,239,190, +251, 14, 75,151, 46, 69,223,190,125, 5,247,239,223,239, 15, 96,223,155,170,241, 44,203,162, 87,175, 94,229,157,225,163, 76,185, + 78, 40, 20, 6, 52,104,208, 0, 89, 89, 89,200,202,202,130, 92, 46,135,187,187, 59, 92, 93, 93,177,118,237, 90,110,253,250,245, +231, 13, 6,195,230,236,236,236,140, 90,212,197, 73, 99,199,142,157, 52,124,248,112, 20, 21, 21,225,246,237,219,232,208,161, 3, + 86,175, 94,237,118,237,218,181, 47,219,180,105, 3,161, 80,136,144,144, 16,208, 52,157,204,191,183,120,240,224,241,255, 13,255, + 81,255,172,106, 81,173, 69,203,203,203,203,142, 97,152,175, 6, 12, 24,208,107,240,224,193,232,211,167, 79,133,223,247,237,219, +103,125,244,232,209, 21, 27, 54,108,232,107, 48, 24, 86,154, 51,212,199,178,236,241,125,251,246,245,127,239,189,247,100,221,186, +117,243, 5, 0,137, 68,162,223,183,111,159,154,101,217,227,181,200, 75,105,112,199, 12, 0,112,119,119,111, 46, 16, 8,134,246, +235,215,175,249,248,241,227, 17, 17, 17,129,189,123,247, 62,243,243,243,187,145,145, 97, 86, 27,153, 80,195,172,195, 21, 53, 89, +183, 40,177, 56, 39, 63, 61,221,206,202,219, 91,104,111,109,173, 8, 10, 10,242,234,217,179, 39,145,156,156,140,188,188, 60,104, +181, 90,220,191,127,159, 21, 0,137, 2,123,123, 34,241,246,109,130, 18,139,115, 80,113, 38, 95,141,240,114,179,111,184,120,254, +148, 58, 90,157,182,105, 65, 65, 1, 45, 16, 10,133,158,174,118,201, 49,113,102,141,196,233,100, 50, 89,107, 0, 2,150,101,213, + 14, 14, 14,178,139, 23, 47, 66, 44, 22,131, 32, 8, 52,107,214, 12, 82,169, 84,196,113, 92, 18, 0, 88, 91, 91,139,183,109,219, +102, 59,122,244,232,235, 53, 17,183,106,213, 74, 40,145, 72,222,247,243,243,195,237,219,183, 17, 30, 30,158,120,251,246,109,159, + 86,173, 90,193,219,219,251,125, 55, 55,183,195, 15, 31, 62, 52,190,137,138, 93, 60, 99,213,124,103,120,134, 97, 88,130, 32, 64, +146, 36, 88,150, 69, 86, 86, 22,234,213,171,135, 77,155, 54, 97,221,186,117,223, 41, 20,138, 83,181, 73,143,191,191,191,168, 94, +189,122, 99,135, 15, 31,142,248,248,120,172, 88,177, 34, 91,161, 80, 92,185,112,225,194, 7, 83,167, 78,165, 58,116,232,128,156, +156, 28,252,254,251,239,244,131, 7, 15,126, 75, 79, 79,223,195,191,114,121,240,224,193,227, 45, 22, 90, 94, 94, 94,195, 69, 34, +209,236,145, 35, 71, 82,141, 26, 53, 66, 70, 70, 6,108,108,108,140, 4, 65, 8, 1,192,206,206,206,104, 97, 97,129, 41, 83,166, +160, 69,139, 22,157,230,206,157,219, 65, 32, 16,108, 74, 75, 75,219,109,202, 31,103,102,102,170, 73,146, 60, 50,109,218,180,149, +143, 30, 61,172, 7, 0,247,238,221,123,158,150,150, 54, 63, 51, 51, 83,109,102, 62, 74,131, 98, 18, 18,137,244,110,195,134, 13, + 95,180,110,221,218,102,240,224,193,144,203,229, 8, 13, 13,197,170, 85,171,158,234,245,250, 37, 87,175, 94,165,255,238,155, 76, +235,116,233, 15, 78,156,176,238,250,209, 71, 54, 51, 6, 12, 88,243,217,180,105, 63, 45, 94,188, 88,208,168, 81, 35, 66,173, 86, +227,238,221,187,220,209,163, 71,141,191,127,251,237, 58, 88, 90, 10,111, 31, 61, 42,214,235,245,137,102, 90, 75,186,116,236,220, +169,209,154,159, 54, 64,171, 41,194,221, 91,103,144,151,151,133,109,219,143, 53,242,240,224,186,164,166,166, 94, 53,149,139, 32, + 8,191, 75,151, 46, 57,115, 28, 7,177, 88,140,229,203,151,195,221,221, 29, 54, 54, 54, 40, 44, 44,196,151, 95,126,105, 59,115, +230, 76, 91, 0,136,136,136, 40, 11,207, 80, 19,210,210,210,218, 79,153, 50,197,154,166,105,156, 63,127, 94, 79, 16,196,162,224, +224,224, 95,155, 53,107, 38,238,212,169,147,245,158, 61,123, 58, 0, 8,121, 83, 66,171,150,215, 61,187,120,241, 98,155, 17, 35, + 70,112, 66,161,144,200,207,207,135,157,157, 29, 54,109,218,164, 82, 40, 20,103,106, 93, 7,104, 90, 44,147,201,196, 28,199,225, +200,145, 35, 72, 76, 76,252, 36, 39, 39, 39,157, 97,152, 99, 95,125,245,213,156, 70,141, 26,213,141,137,137, 73, 44, 44, 44, 92, +157,153,153,249,130,127, 53,241,224,193,131,199,127, 10,165, 78,240,165,179, 15,207,160,120, 56,177,106,161,197, 48,204,148, 11, + 23, 46, 80, 44,203, 98,251,246,237,120,240,224, 1, 39,147,201, 22,201,100,178,141, 22, 22, 22,140, 70,163,153, 60,113,226,196, +209, 75,151, 46, 37, 59,117,234,132,219,183,111,147,245,234,213, 27, 11,160,188,208,234,137,106, 98,109, 20, 20, 20,220,207,200, + 72,175, 87, 46, 64,101, 61,137, 68,122,191,134,204,188,204,249,114, 80,204,118,203,151, 47, 87,185,185,185,233,195,195,195,177, +117,235, 86,246,193,131, 7, 87,196, 98,241, 54,133, 66,161, 51,145,243, 77,160,140, 83, 76,211,161,127,204,153,227,255,206,160, + 65,236,167,179,103, 23,137, 44, 44,190, 88,179, 97,195,220,252,194, 66,119, 16, 4,231,104,107,155,184,125,249,242, 21,125,223, +127,191, 40,226,234, 85,233,163, 75,151,132,114,163,241,177, 57,233, 76, 77, 77,189, 26, 18,114, 29,187,118,252, 4,131, 65, 7, + 69,106,177, 78,203,206, 41, 64, 13, 34,235, 21, 78,154,166, 11, 62,248,224, 3, 17, 0,139, 49, 99,198,136, 51, 51, 51, 81,191, +126,125, 0,128, 82,169,196,153, 51,103,208,184,113, 99, 0, 64, 88, 88, 88,217,231,154,210,105,105,105,249,126,135, 14, 29,144, +152,152,136,136,136,136,203, 10,133, 34, 7,192,229,228,228,228,254,109,218,180,193,241,227,199, 7, 86, 35,180,204, 42, 35, 19, +133,214, 43,156, 22, 22, 22,243,143, 29, 59,246,201,173, 91,183, 70,204,153, 51, 71,216,163, 71, 15, 0, 64, 97, 97,161, 26, 0, + 83, 27,206,242,105, 50, 26,141, 96, 89, 22, 14, 14, 14,170,156,156, 28,100,102,102,190,200,204,204,156, 22, 23, 23, 87, 43,206, + 55, 81, 63,121, 78,158,147,231,228, 57,255, 37,156,111, 3, 76,143, 12,207,113, 28,205,178, 44, 66, 66, 66,112,236,216, 49,198, + 96, 48, 76, 82, 40, 20, 97,229, 78,217, 16, 26, 26,122,233,131, 15, 62,216, 29, 19, 19, 67, 69, 70, 70,130,227, 56,198,156,212, +104,181, 90, 35, 65,188,122,236,117,115,185,107,215, 46,164,167,167, 27,146,147,147,131,105,154, 62,254,154,179, 23, 95,123,214, +225, 46, 64,247,161, 94, 31,188,180, 99,199, 94, 75, 46, 93,146,124,250,245,215,186,113,227,199,127,197,232,245, 70, 74, 36, 98, +197,150,150, 36, 35,145, 8, 35,174, 94,149,174,159, 58,213, 65,163,211,157,223,107,134,131,121,169, 69,171,107,215, 78, 24,247, +233, 44,104,202, 89,180,110,223,143,133,206, 0,179, 44, 90, 58,157,174,169, 66,161,128, 84, 42, 77, 2,224,250,241,199, 31,131, +101, 89,104, 52, 26, 20, 22, 22, 34, 45, 45,173, 96,252,248,241, 76,137,120, 18, 12, 29, 58,212,198, 20, 94, 95, 95, 95,119,161, + 80,136,243,231,207, 67, 40, 20,158, 1, 0,161, 80,120,230,210,165, 75,253, 71,141, 26, 5, 15, 15, 15,223,248,248,120, 2, 53, +248,167, 57, 55, 29,116,136, 3, 26,130, 64,131, 98, 19, 28, 26,200,155, 14,122, 66, 0, 79, 75,162,198, 71,181,106,213, 10, 48, +209, 47,171, 60, 74, 38,119,172, 51, 26,141,135,231,206,157, 59,173, 93,187,118,189,151, 46, 93, 74, 0,160,222,196, 19, 72,211, +244,107,133,158,224,193,131, 7, 15, 30,255,106,171,214, 43,168, 82,104, 17, 4,177,189, 75,151, 46,147, 0, 80, 4, 65,108, 77, + 75, 75, 11,123,249, 28,133, 66, 17,235,238,238,254, 99,221,186,117, 39, 3,224, 8,130,216,110,102,162, 50, 56, 14,171, 72,146, +152, 91, 44,238,106, 21,160,178,116,169,147,185, 0, 8,146,164,118, 63,124,248,240,235,164,164,164, 44, 19, 45, 16,213,226, 77, +204, 58, 4,128,253,192,139,145,137,137, 23,102, 7, 4,244,236, 59,117, 42,154,247,237,107,227,238,227,195,104, 12, 6, 54,236, +198, 13,226,214,145, 35,162, 71,151, 46, 9, 53, 58,221,249,227, 64,146,185,233, 76, 77, 77,189,250,231,149,171, 23,135, 13,237, +223,219,183,174,123,177,104,120,145,134,236,220,130,139,230,136,172,151, 68,239,160, 77,155, 54,157, 18,137, 68,130,242, 75,217, + 24, 12,134, 92,157, 78,215, 20, 0,242,242,242,220,183,111,223,126,128, 36,201,196,154,248, 34, 35, 35, 79, 46, 89,178,100,104, + 66, 66,194,197,228,228,228, 4, 0, 72, 74, 74, 74, 48, 26,141,187, 21, 10,197,208,196,196,196,163, 48, 97, 18, 0, 7, 52,140, +184,113,184, 25, 0, 52,237, 56, 28, 17, 55, 14, 75, 1, 52,107,218,113, 56, 0,160,182,107, 25,150, 71, 73,104,133, 69,183,111, +223,222,215,187,119,239,137,120,141,152, 94, 0,160,215,235,141, 26,141,134,102, 24, 70, 96, 48, 24, 56,189, 94,111,228,223, 73, + 60,120,240,224, 97, 58, 56,142,107, 3, 64, 94,242,181,212,128, 34,127,233,179, 30, 37,203, 5,150,190,126, 75,190,103, 17, 4, +113,191, 28, 71,217,113, 19,174, 5,128,108, 0, 79, 8,130,168,202, 8,178,189,170,239, 85, 10,173,180,180,180,163, 48, 97,209, +104, 83,207,171, 6, 11, 74,214,137, 3,106,191,182, 91, 25, 7,195, 48, 25, 73, 73, 73,175, 93,160, 36, 73,190, 24, 56,112,160, + 89,231,215,116,206, 65, 32,241,115,157,110, 79,208, 47,191,180, 60,191,117,171, 7, 67,211,142, 4,192, 81, 98,113,142, 94,175, + 79,144, 27,141,143,205,181,100, 85,176,198, 60, 79,237, 19,255, 60, 21, 13, 26, 52,224,158, 61,123, 86,108,235,121, 61, 60, 86, +169, 84, 94, 53, 85, 1,181, 90,221,201, 68, 49,184, 63, 53, 53,117,127, 37,130,253,128, 66,161, 56, 96,106,162,202, 22,149, 6, + 72,150, 96,135, 53,237, 56,252, 8, 0,182,116, 81,233, 55,137,244,244,244, 24,148,196,121,123, 29, 36, 38, 38,234, 8,130,248, + 99,213,170, 85, 99, 30, 61,122,116, 48, 45, 45, 77,199,191, 54,121,240,224,193,195, 60,145, 69, 16, 68, 80,201,247,192, 18,163, + 80,208,203,159, 75,207, 41, 61,175,252, 57,165, 28, 47, 31,175,238, 90, 0,152, 63,127,254,215, 43, 86,172,144, 1, 48,117, 49, +230, 90, 47, 42,253, 87, 33,227, 95,194, 81, 94, 20,236,248, 43, 50,250, 11,160, 7, 77,223, 1, 93,206, 39,223,248,102,141, 27, +207,158, 61, 35,222,230, 7,174,116, 81,233,114, 8,248, 47,164, 59, 33, 33, 97,147,183,183,247,182,180,180, 52, 26, 60,120,240, +224,193,195, 28,200, 43, 19, 70, 85,136,178,192,234,126,175,208,113,175,228,188,202,190, 19, 4, 17,180, 98,197,138, 64, 51,210, + 91,102,209, 34,249,178,227,193,227,239,195, 63, 49,235,149, 7, 15, 30, 60,120, 84,142,151,173, 88,165,226,235,229,239,243,231, +207,255, 26,213,143, 56,185,161,216,138,229, 86,242,189,204, 95,139, 64,241,204,129,202, 96,206,108,130,158,181,200, 95, 48,207, +201,115,242,156, 60, 39,207,201,115,242,156,255,239, 56,107,226, 14,174, 68, 16, 13,168,106,168,175,186, 97,196,151, 63,215,116, +109, 77,231, 18, 4, 81, 85,152,159,210,161,194,178, 61,199,113,219,241, 55,160, 39,207,201,115,242,156, 60, 39,207,201,115,242, +156, 60,231,235,128,227,184, 54, 28,199, 13, 64,241,132, 41,142,227,184, 1, 28,199,245,157, 63,127,254,130,210, 99,243,231,207, + 95,192,113, 92,143,210,243, 74,206, 41,187,166,244,216,203,251,151,143, 85,119,110, 53, 73,156,244,210,231, 73,165,147,200,254, + 45, 62, 90, 60,120,240,224,193,131, 7, 15, 30,149,162,116,198, 96, 57,107, 83, 22,128,176, 21, 43, 86,228,149,243,157,202, 2, +240, 24, 64,139,146,243,178, 74, 68, 90,121,223, 42,125,201,119,125, 37,231,232, 77, 57,183, 10,108,175,226, 51, 47,180,170, 66, + 11, 87,242, 91,111, 79,231,214, 37, 5, 0,142,101, 1, 0,108, 73, 12, 36,174, 52, 24, 18,203,130,227, 56,164,101,230,135,134, +101, 98,113,109,255,207,207, 29, 14,206, 82,233, 58,150,227, 58,150, 28,186, 90,144,163,155, 21,161, 68,190,169, 28,141, 93,224, + 47, 37,241, 21,203,161, 57, 0,144, 4,158,104, 89,252, 24,157, 97,126, 60,169,202,234,121, 83, 57, 38,137, 45,100, 35,109,237, +236, 27,228,229,101, 63, 53,104,117,135, 35,179,176, 13,230,175,203, 8, 95,123,188,203,114,248, 26, 0, 41, 36,177,246,105,174, +201, 51, 57,120,240,224,193,227,117,173, 35,175, 21, 23,143, 32, 8,166, 18, 78,226, 53, 57,249, 0,123, 38,136,173, 74, 14,223, +171,228,216,253,127, 83,186,205, 18, 90, 77,228,152, 10, 2,203, 0,112,224,240, 77,100, 22,182,152,117,189, 27,122, 74, 41,106, + 39, 0, 74,107, 96,102,115, 44,174, 85,122, 51, 73,116,150,138,168,181, 0, 88, 45,195, 76,136, 84,152,238, 47,214,212, 3,125, + 5, 44,249, 7,203,113, 66,134,229,118,131, 67,144,149, 8, 55,239,164, 66,107, 78, 90,189, 61,157, 91,159,184,167,232,125,101, +203, 12,180,107, 94, 31, 28, 67, 3,172, 17,178, 78, 95,225,242,207, 31,163,157,191, 55, 56,214, 8,176, 52,172,250,173, 65,191, + 0, 91, 46, 44,179,118,235, 96,251,185,195,193,199,201, 57,124,199,142,157,174,238,190, 77, 8,150, 54, 32,230,222,197,209, 51, +231, 46,233,222, 20, 5, 1,166,136,173,230,110,248,212,187, 78,163,175,102, 45,251,137,114,115,247,178,100,141, 58, 58,253, 69, + 84,171, 13,171,151, 28, 21,145,137,107,159, 40,176,211,212,186,220, 68,142,201, 2,137,120,184,133,212,178,129, 90, 93,248,140, + 49, 24, 15,147, 66, 65,223, 31,215,172,107,217,181, 87,127, 43,166, 48,157, 52,178,104,114,232,224, 1,159, 95, 54,109,238, 31, +174, 96,222, 7,192,154,147,103,150,195,220,216, 61,147,250, 11, 5, 20,225,255,201, 14, 10,160,107, 37,180,252,157,241, 33,193, +161,198,240, 18, 28,129,235, 81,153,216, 95,155,255,104,236,140, 95, 9, 14,126, 32,112,132,224,112, 32, 50, 11,153,252, 43,143, + 7,143,183, 11, 36, 73, 94, 97, 89,182,219, 27, 22, 6,239,114, 28,119,135,191,187,255,191, 97,158, 69,139,192,119, 17,113,201, +246, 96, 12,104,234,231,251, 45, 96,158,208,146, 82,212,238,251, 79, 51, 92, 65, 27,176,227,251,105, 7,245, 70,128, 54, 26,192, +208, 70, 48,180, 17, 52,109, 0, 99, 52,130, 51,234,176,228,183, 43,128,190, 16,173, 3, 26,238, 6, 24, 55, 83,255, 67,200,145, +127,132,222,184,232, 64,232, 11,176,127,203,138,207,147,179,138, 62, 15,126,146,150,221,196, 89,179, 32, 50, 19,191,155, 35, 8, +174,108,157,129,189,199,207,164,172,255, 85, 21,205,114, 28, 28,108, 44, 26,141, 14,140,240,218,115,242, 74,242,186,221,218,104, + 0,176,181, 20, 55, 26,251,228,169,247,235, 20,130,179, 84,186,110,219,230, 95, 92,221, 28, 45, 8,250,214, 74,208, 12, 3, 47, +159, 1,212,130,233,163,221,190,251,121,231,207, 80,234,198, 85,119,125, 35,103, 52,169, 83,215,127,246,238, 51,183,188, 85,202, + 76,253,197,125, 95,199, 65, 7,163,171,135,191,240,219, 21, 63, 81, 11,231,205,248, 82,207,164,220,141,201, 68,100, 77,239, 26, +127,103,156, 92,177,114, 77,243,238,253, 2,173,216,162, 44, 74,171, 42,242,219,241,219,206,101,141,155,183,149,117, 10,240, 20, +101, 30,158, 66,104, 10,115, 97, 32,165,146,238, 77,123,218,104,198,140, 50,238,216,181,119,122,100, 38, 54,152,147,103,166,220, +176, 53,203,214, 62,234, 58,193,161,211,163, 59, 87, 38, 51,105,247,193, 49, 70,128, 49,148,237,193, 24,193,177,197,251,118, 83, +126, 3, 80, 59,161, 69,114,232, 29,124,227,190, 91, 70,186,162,205,207,107,126, 88,192,221,191,127, 14, 12,254,136,202,197, 85, +115, 5, 38, 15, 30, 60,254,213, 22, 19,154,227, 56,193, 27,230,236,207,113,220,217,215,164,249, 10,192,167, 37,159,119, 2,248, +241, 13, 36,205, 19,128,107,201,231,116, 0, 41,124, 13,120, 45,148,197,205,122,249,187,185, 21, 74, 10,142, 5,142, 12, 6, 0, + 11,115, 83,193, 1, 82, 16, 20, 96, 84, 97, 80,191, 94,112,114,118, 5,140,106,192,160, 6,140, 26,192,168, 2,140, 26,100, 43, + 18, 1,131, 10,136, 63, 7,154,227, 36,102,103, 87, 87, 0,196, 30, 70,143, 86,222,144,219, 74, 49, 99, 80, 19,167,237,231, 99, +119,238,188, 24,211, 51, 50, 19, 35, 77, 74, 43,199,161, 93,179, 6, 88,191, 83, 21,125,250, 97, 86, 31, 0,232,223,194,241,124, +187, 38, 62, 94,235,118,107,163,207,134,229,245, 5,128,190, 77,109,206,181,109,228,230,205,162,246, 86, 95,150,227, 58,185,215, +105, 64, 48,143,182,129, 85,166, 64,169,212, 32,229,197, 30,216,123,188, 67, 50, 44,186,212,116,189, 5,133,249, 95, 44, 92, 37, + 84, 43, 51,244,172, 33,139,145, 83,121,148, 64,204, 18, 72,189,170, 43, 98,243,153, 89,147, 62,166,103, 47,254,126, 62,128,209, +213,241, 52,113,198,244,181,107,215, 53,235,208,186,177,115,250,209, 25, 68, 81, 94, 6,104, 74, 38, 25,244, 94, 7,216, 53,108, +194,102,132,172, 37,196,190, 61, 97,231,232,139,212, 91,251,144,112,231, 24,209,177,213, 80,201,239,251, 69, 99, 0, 67,165, 66, +171,129, 19, 58,246,233,220,246,160,175,183,187, 27,199,177, 96, 89, 14, 28,203,160, 72,107,196,130, 67,241, 96, 24, 6, 31,244, +233,216,195, 82, 76,112, 44,203,130,227, 88, 36,167,231,168,255,188, 27,221, 35, 62, 15,119, 77,177, 84,181,120,183, 91,199, 39, +161,119, 26, 27, 99, 79,163,245,232, 21,209, 4,112,163, 92,157,235,248,240,194,239,141,129,223,106,175,229, 8, 48, 9,231, 87, +194,187,243, 36,106,219,254,243,242,130,172,212,177, 71,247,108, 30,182,101,219,182,189,209,153,152,194,191, 95,120,240,120, 59, +192,113,220, 27, 23, 91,137,137,137,105,175, 35,182, 60, 60, 60, 58,167,166,166,174, 46,245, 86, 33, 8, 98,117,157, 58,117,150, +252,175,163, 90,161,175, 87,192, 48,204,232,212,212,212,107,213,113, 14, 24, 48,192,253,204,153, 51,117,203,113,214, 5, 80,183, +178,115,237,236,236,152,246,237,219, 39,156, 57,115, 38,141,175, 33,181, 18, 92,102, 11,173,232,164,195, 51, 90,233, 20, 69, 0, + 16,109,194,249, 21,134,252,180, 70,102,229,174,101, 31,175,108, 90,199, 1,133, 42, 61, 46, 62, 72, 0,195, 24,193,208,116,137, +101,139, 6, 67, 27,209,167,133, 19,218,107,167, 96, 67, 80, 12,104,134, 93, 81, 29,231,203, 48,112,236,135, 45,123,142, 56,196, +178,156, 88, 34, 36, 11,252,188, 28,157,103,127,208,130,156, 49,168, 41, 52, 6,122,196,190,144,184, 63,163, 50,177,195, 36, 78, +246,213,144, 71, 92,101,199, 24,186,198,188, 87, 99,141,106,215,179,107, 39, 27, 78, 87, 0, 99,118, 60, 10,213, 70,196,231, 24, +145,174,205,135,132, 80,152,196,201,114,104,238,233,225, 38,187,121,112,222, 11, 71, 74, 41,112,166,104,145,152,164,193,176, 28, +197,229, 71,234, 28, 26,247, 18,150,250,109, 85,151, 78, 11,153,245,199,157,123, 15,176, 77,218, 55,137,176,240,235, 3,231, 86, + 94,120,113,109, 23, 50, 31, 4, 33, 39, 45,129,176,209,230,195,197,177, 62,250,141, 30,137, 31, 71,182, 65,161,178, 16,148, 34, +206, 86, 44,148,216, 1,134, 74, 57, 57, 6,163,215,174,250,222, 77, 64,145,197,247,179,116, 99,140,208,232,116, 0, 67, 67, 42, + 96, 65,112,165,191, 25,193, 24, 13,178,230, 67,231, 77, 3,152,187, 53,229, 61, 42, 19,251,155,200,209, 9,172,177, 49,103,212, +128, 0,110, 68,102,253, 79,252,248, 59,227,195,119,250,140,239,196, 17,184, 94,155, 50, 10,112, 68, 96,235,186, 86,150,150,202, +104,164, 28,249, 28,113,144,114, 46, 29, 62,197,135,159, 76,151,109,223,190,125, 32,192, 77, 69, 69, 31,181,191, 98,145, 85,158, +147,231,252, 79,114,218,216,216,212,171, 83,167,206, 18,163,209,216, 89, 36, 18,185, 24, 12, 6,176, 44,155, 46, 22,139,175, 39, + 36, 36, 44, 87, 42,149,207,255,109,121,127,242,228,137, 57, 98,171, 70, 78,161, 80,136,152,152,152,103,102,136,173,224,151,174, +255,227,198,141, 27, 56,116,232, 16, 0, 32, 54, 54, 22, 13, 27, 54,180,172,236,194, 23, 47, 94, 88,118,237,218,245, 15, 0, 94, +213,113,134,133,133,213, 59,125,250, 52,142, 28, 57, 2, 0,136,137,137,129,159,159, 95,165,137,185,113,227, 6,245,209, 71, 31, +213, 3,144,246, 55,148,209,219, 32,178,202,239,255, 39,180,130,130,130,184,192,192, 64,226,229,207,149, 32,222,219, 94,220, 10, + 90, 6, 0,226,205, 77, 65, 84, 6, 86,173,223,115,161,239,229, 35,155, 58, 75, 69, 36,150,238,152,157,156,149, 91,248,174,128, + 40, 30,126,161, 57,144,246, 86,226,219, 43,198,182,240,206, 43,210,226,212,189,212,107,145,153,230,153, 72, 35, 21,184, 4,176, +118,197,223, 24,104, 53,153,126, 99,127,188,116,224,192,252,190,205,103, 13,106,142,147,183, 18,102, 1,116,141, 81,223, 57,150, + 5,199,210,101,206,239, 37, 93, 7,128,173,184, 40, 48, 11,174,248, 24,107,158, 69,171, 11, 32,200,115, 70, 63,107,153,120,227, +228,201, 19,109,140, 89, 79,145,171, 23, 33, 57, 79,139,116,141, 16, 69, 2,103,164, 70,135, 49, 36,129, 75, 53,154, 92, 8, 40, + 57, 90,107,103, 47,182, 34, 3,122, 77,243, 80,158,255, 58, 79, 76,208,148,205,144,239,236,178, 47,255,148, 64,171,178, 84, 4, +129, 26,195,207,219,218,218, 53,212,230, 36, 80, 5,121,217,176,115,109,138,190, 35, 2,241,205,128, 38, 40, 84,170,144,149,123, +155,107,224,102, 67, 36, 94,223,139,133,253,252,145,147,161,128,206, 8, 16, 42, 93,174, 86,175, 45,170,242, 62,146,216, 54,115, +206,220, 15,125,220,228,150,165,147, 10, 56,150, 65, 11,127, 95,244,234,220, 14,151,110,220,196,253,176, 88,176, 37,147, 10, 56, +150, 69, 74,102, 94,134,214,192,236, 50,235,134, 50, 52, 56,163,182, 82, 33,134, 90, 12, 25, 6, 56, 67,198, 0,139,219,212,179, +158, 48, 63,208,199,218, 82, 66, 64,107,100,160,213, 27, 81,120,115, 35, 28,235, 52,131, 76, 42, 37, 90, 65, 35,120, 8,240,235, + 22,242,224, 81, 14,195,134, 13,147,102,100,100,132,120,121,121, 53,233,213,171,151,172, 83,167, 78, 80,169, 84,184,120,241, 34, + 84, 42,149,143,151,151,151,207,197,139, 23,135, 38, 37, 37, 69,122,122,122,118, 61,114,228,136,201, 62,180, 37, 2,136, 42,123, + 5, 3, 52, 65, 16, 40, 57, 70,148, 28,171,245, 58,183, 98,177, 24,137,137,137,111,220,178,149,154,154,250,172, 54,150,173,162, +162, 34,145,135,135, 7,228,114, 57, 24,134,129, 74,165,194,137, 19, 39, 80, 80, 80, 0,150,101, 97, 97, 97,129,239,214,238, 64, +244,195, 16,220,189,123, 23, 5, 5, 5,162,154, 56, 83, 82, 82,136, 22, 45, 90, 64,167,211,129,166,105,104,181, 90, 4, 7, 7, +151,125, 23, 8, 4,152,251,237,207,136,125, 16,130, 71,143, 30, 33, 37, 37,229,111, 89,109,196, 12, 45,242,111, 68,149, 49,179, +254,246, 89,135, 12, 67, 47,216,190,251,192,237, 5, 83, 70, 98,250,168,158, 94,203, 55, 29,235, 25,149,141,221, 0,224,239,132, +177, 99,186, 53,240,182,147, 9,241,205,190, 7, 0,199, 45,120,221,255,139,200, 69,108, 19, 23,118,214,241,187,137, 33, 95,143, +108, 5, 95, 55,155,134,121,226, 92,113,124,188, 9,107, 10,178, 52,236,173, 36,141,250,183,112, 60, 15,150,133,157,181,164, 49, + 24, 26,118, 86,146, 70,125,155,218,156, 3, 0, 27,153,176,113,101,150,175,170,208,218, 75, 56, 73, 38, 17, 76,178,180,182,243, + 30, 55,176,151, 69,255,129, 67, 45,172,132, 52,114,238, 94,132, 82,232, 9,163,131, 15,116,198, 92,164, 60,143, 99, 46,223,137, + 74,205, 46,212,205,174, 49,153, 28,174,165, 62,143,145,215,107,222,203, 62, 59,104, 97,102,189,241,251,234,146, 96,201,194,189, + 67, 50, 44,157,219, 90,220,139,127, 94,196,114,149, 90,116, 42, 64, 89, 80,144, 96,100,224,166, 97, 4,214,113, 87,126,199,252, +126,205,144,151,155, 9,173,129, 70,129,134, 54,184,218, 73, 37,186,231,225,208, 25,104,232,141, 44,132,118, 30,184,120, 59, 44, +155, 53, 26,207, 85,197, 25,159,131, 71,241, 39, 30, 89,149, 63,230,235,132, 22,243,108, 44, 30,193,168, 65, 98, 74, 26,118,159, +185,221, 42, 62, 7,143, 94,167,156, 57,150, 46, 30,126, 46,103,201, 34, 56,116,170,141, 19,124, 99,103,180, 21, 73, 69,191,172, +158,245, 81,147,247,252, 28, 36,108,202,109, 16,172, 1,150,140, 0, 26, 49, 3, 91, 47, 95,176,250, 66, 78,173,213,230, 71, 0, +124,164,119, 30, 60,202,161, 81,163, 70,174,169,169,169, 17,115,230,204,113, 24, 50,100, 8,142, 31, 63, 14,165, 82,137, 93,187, +118, 97,221,186,117, 88,182,108, 25,140, 70, 35,182,111,223, 46, 59,122,244,104,219,205,155, 55,167,120,123,123, 55, 77, 74, 74, + 74,175, 65, 96, 17, 0, 36, 0,132, 37,109, 23, 1,128, 61,123,246, 44,250,247,239,143,179,103,207,178, 37,199, 24, 20,119,126, +106,181,158,168, 88, 44,134, 88, 44, 70, 65, 65,193, 27, 17, 91, 66,161, 16, 86, 86, 86, 16,139,197, 40, 44, 44, 52, 91,108,209, + 52, 77,165,164,164,160,160,160, 0,189, 6, 14,196,207, 43, 86,160, 91,183,110,232,213,171, 23, 56,142, 67,112,112, 48,122,118, + 8,192,200,247,187, 34, 42, 42, 10, 52, 77,155,148,222,244,244,116,100,100,100,160,239,192,129,216,177,121, 51,218,181,107,135, + 70,141, 26,129,166,105,132,132,132, 96, 88,159, 14,144, 14,238,137,216,216, 88,190, 82,155,110,205,122, 35, 62, 90,175,141,136, + 44,220, 97, 79, 94, 13, 26,213,167,109,224,192,142, 77,176,227,224,229,239, 33, 87, 30, 0, 0, 71,157,228,187,143,187,249, 34, + 50, 41, 15,151, 31,165, 5, 69,101,227,141,204,214, 96, 25, 56, 57,218,200, 0, 74, 12,141,129,165,109,226,107,118, 96,102, 57, + 14,178,206,243, 48,102, 96,164, 87,187, 38, 94, 94,165,179, 14,173,250,255,132,177, 97,207,188,219, 52,114,245, 6, 99, 4, 24, + 35,108, 70,238, 3,190,181,172, 49, 29, 29,234,138, 47,205,156, 49,163,125,191,193, 35, 44,196, 50, 91, 48,202,100, 24,211,195, +144,243,244, 26, 84,178,134, 72, 79,140,199,161, 11,119, 11,158,166,228, 40, 73, 18, 23, 51, 10,116, 95,197,231,161,168, 38, 94, +173, 17, 43,150, 44,156, 61,224,208,129,131,214, 18,223,142, 68,220,198,254, 5, 98, 1, 45,145,215,125,135, 84, 75,157,184, 31, +118, 29,180, 81,233,177,178, 38, 30,181, 74,121, 44,248,226,249,145, 13,234,117,180,126,113,255, 12, 52, 90, 29,116, 70,160,105, +219,174, 96, 24, 78, 76,144, 4,107, 67, 81, 68,102, 78, 30, 8, 35,147,113,253,241, 11,197,141,199,241,148,206, 26, 43,171,141, + 46,242,178,186, 39,168, 47, 6,118,109, 9, 24, 53,120,191,115, 51,252,188,247,242,231, 0, 51,254,245, 10,185,216,162,197, 1, + 29,155,200,177,149,227,208,241,193,137,117,141, 91, 15,158, 9,115, 44, 90, 77,157,208,207,191,158,251,239, 63,127, 55,207,193, +209,179, 33, 69,176, 70,112,174,205, 1,101, 10, 71,164,220,134,173, 71, 59, 48,238, 29,176,125,195,154, 34,150,229, 14, 0,224, +167,100,243,224, 81,254,125,164,213, 30, 91,181,106,149, 67, 96, 96, 96,169, 69, 6,183,111,223,198,206,157, 59, 97,105, 89,241, + 61,217,191,127,127,112, 28,231,176,116,233,210, 99, 0,222,171,138,179,125,251,246, 3, 31, 61,122,148,214,178,101,203,248, 18, +177, 37, 2, 64,134,135,135,147,201,201,201,132,189,189, 61,231,238,238,110, 76, 75, 75, 99, 1, 48,159,124,242, 9,117,248,240, +225, 6, 42,149,234,106,109,133,150, 88, 44,126, 35, 62, 91, 66,161, 16, 4, 65, 64, 44, 22, 67, 36, 18,129,227, 56,179,196, 22, +195, 48,130,179,103,207,226,193,131, 7, 88,214,178, 37,102,121,120,192,193,193, 1, 33, 33, 33,224, 56, 14,150,150,150,200,205, +205,197,129, 3, 7,208,189,123,119,208, 52, 45, 50,133,247,200,145, 35, 8, 13, 13,197,183,173, 91, 99,150,173, 45,172,172,172, + 16, 28, 92, 60, 26, 40,145, 72,144,152,152,136,224,224, 96,116,237,218,149,175,212,175, 9,147, 43, 79, 23, 64,144, 75,192,213, +160,215,128,163, 57,128,128,187,191, 63, 68, 81, 81, 21,157,115, 76, 1, 73, 98,225,134,221, 65, 3,126,154, 57,144,152, 52,168, +149,251,242,223,175, 76, 5,128, 9, 31,248,121,200, 36, 2,172, 63, 25,201,145, 36, 22,190,137, 12,250,251, 67, 68,228, 96,106, +175,118,141,144,150,175, 71, 92, 90,254,159, 81, 38, 14,245, 92,254,105, 12,246,156, 10, 73, 94,183, 71, 27,205,113, 28,236,172, + 36,141,198, 62,137,243,254,253,108,104,210,218, 67,218,104,142,229, 96, 39, 19, 54, 30, 31,213,161,198, 89,135,173,189,132,147, +190,156, 61,187,195,160,241,115,164,116,244, 97,232,227, 46,128, 53,104,160, 52,136,144, 79,185, 34, 37, 41, 9, 63,108, 15, 74, + 86,170,244, 35, 35,178,204, 19,152, 79,115, 80, 36, 32,148, 67,126,248,230,235, 75, 43,190, 91,106,165,137, 15, 41,162, 8, 90, + 67,213,233, 34,248,110,217, 79, 68,161, 78, 63, 34, 62, 15,133, 53,241,232,172,177,114,213,218, 13, 3, 38,142, 30, 26,237,215, +176,139, 35,147,246,220, 81,171, 84,102,238, 59, 31,234, 90,210, 83, 36, 0, 32, 46, 37, 7, 89, 5, 42,154,161,141, 87,173,133, + 88, 30,105,138,117,176, 4,245,156, 33, 15,236,216,244, 35,185,181, 8,154,162,124, 56, 91, 11,209,167, 93,253,143,140,247, 98, +231, 61,207, 52, 71,174,189, 44,180,140,224,140, 26,220, 89,217,189, 49,199, 24, 27,131, 49,194,240,228, 15,243, 45, 99, 4,102, + 77,239,108,101, 99,175,127, 65, 66,101, 9, 88, 56,129,176,241, 1,108,235, 18, 66,255, 17, 72,139,143,160, 63,255,104,116,206, +243,132,148, 95,157, 44,222,200,204, 31, 30, 60,222, 42, 36, 38, 38,126,188, 96,193,130, 27,237,218,181,115,113,114,114, 66,179, +102,205,112,234,212, 41,204,153, 51,167,236,156,150, 45, 91,130,227, 56,228,230,230, 98,213,170, 85,233,105,105,105, 31, 87,219, + 65,143,136,136,222,179,103, 79,231, 38, 77,154, 24, 68, 34, 81, 62, 0, 73,126,126,190, 52, 55, 55,151,208,106,181, 96, 89,150, +181,181,181,101,210,210,210,140, 35, 71,142,212,221,186,117,171,190, 74,165, 74,124, 29,139,150,151,151, 87,120, 78, 78, 78, 1, + 65, 16,175, 29,250,161, 84,100, 57, 57, 57,201,139,138,138, 88, 0,121,181, 9,253, 64,211, 52, 90,183,110,141, 11,215, 30,226, +236,229, 91, 80,166,197, 96,234,196,143,209,172, 89, 51, 92,184,112,161,214,101,214,162, 69, 11,156, 15,190,129, 27, 15, 30, 35, + 49,246, 9, 62,159, 58, 17, 77,155, 54,197,249,243,231,249, 10,109, 58,206,160,162,111,214,153,151,133, 86,215,160,160,160,210, +158,249, 43,242,181,177, 19, 90, 8,237,196,127, 44,237, 87,223, 95,216,107, 41, 8,161, 5, 14, 55, 60,223, 97,225, 15, 27,163, + 41,231,196,209,225,153, 53,207, 14,171,240,208,100, 34,130,187, 27,189,255,113, 84,227,143,222,111,231,133, 29,167,100,139, 1, + 96, 68,167,122,184,247, 52, 11,119, 99, 51,247, 71,102, 33,226,117,115, 29,224, 12, 25,147,141,253,171,190, 24,212,213,199,211, + 21, 59,143,223, 0, 65,224,152, 73, 13, 46,199,113,237,154,248, 96,221,158,151,103, 24,186,122,175, 61,164,141,190, 24, 81,216, + 15, 0,122, 53,150,157,107, 83,223,222,155, 43,239,184, 85, 9, 44,196,130,201,253,134,142,145,210,177,167,128,132, 96, 16,180, + 14, 26, 3, 11, 69,118, 33,212,182, 94, 8,185,253, 88, 83,160,213,207,140,204,170,157, 21, 47, 42, 27,241,162,251,143,147,138, + 84, 26, 55,153,188,190,150, 34, 89,182, 72,199,225, 94,100,130, 50, 50, 29, 49,166,112,196,199, 67,255,174, 7,221,105,235,238, + 67, 75,132, 34,241, 8,138, 0,225,108,103, 41,223,250,211,183,176,182,182, 2,171, 47, 2, 84, 89, 24,242,217, 15, 89,225,105, +198,122, 0,208,208, 17, 86,157,234, 9,119, 11, 72, 34,229, 74,156, 97, 81, 77,255, 65, 24, 49,101,116,159,150, 66, 86,175,194, + 23,171, 14, 98,219,188, 65, 24,211,195, 95,120,230,102,236, 20, 0,203,107, 91,214, 28, 67,131, 51,106,240,222,215,215,162, 9, +224, 6, 7,116,124,112,232,187,198,192, 67,147, 57, 90, 1, 66, 70, 64,248, 55,247,182, 20,177, 41, 55,193,166,220,228, 40,175, + 14, 32,188, 59, 19,132,107,107,238,151,213,203, 84, 59,118,236,188,200,146,248,198,132, 80, 25, 60,120,252,127, 69,124, 90, 90, + 90,223,254,253,251, 95,190,112,225,130, 67, 64, 64, 0, 0,224,193,131, 7,197,157,206,214,173,225,231,231,135,140,140, 12,140, + 26, 53, 42, 91,161, 80,244, 69, 13, 62,191,133,133,133,207,143, 28, 57,226,162, 82,169, 90, 46, 90,180, 40,211,199,199, 71,169, +213,106,137,252,252,124,150,166,105,216,219,219,139, 91,182,108,137,246,237,219, 23,221,190,125,187, 78,114,114,114, 33,128,132, +218, 36,126,208,160, 65,184,118,173,120,210,222,155,136,171, 37, 18,137, 16, 16, 16,224, 17, 31, 31,159, 90,210,182,152,253,142, + 47,223,188, 60,126,252, 24, 87, 31,166, 64,160,215, 64,156,149,134, 59,199,143, 96,224,228,105,160,233,218,123, 49, 60,126,252, + 24, 39,130,239,192, 82, 34, 64, 76, 76, 4,142, 28, 57,130,169, 83,167,190, 22,103, 45, 81,173, 22,249,151, 67,129, 42,252,180, + 4, 0, 16, 24, 24,120,181,212, 90, 81, 30,190,190, 16, 75,138,176,180, 87, 43,143,185, 35, 58,214,167,140,202, 52,176, 12, 11, + 74, 8, 56, 59,217,224,143, 63,246,215,219,127,240,224,237,205,155, 54,111, 96,105,122, 97,120, 38,212,102, 36,106,233, 79, 7, +111,140,248, 99,118, 87,193,212,126,141, 29, 0, 64, 36, 32,177,254, 84, 4, 13, 96,233,235,228,246, 93, 15, 72,139,140,152,228, +236,104,187,120,193,167, 3, 28,186,182,246,195,213,187,225,216,112,228,246, 53,113, 38,246,152, 92,185, 89, 35, 94,214, 79,149, +205, 58, 4, 91,179,223, 37,195,112,174, 34, 75,123, 24, 18,174, 0, 6, 45,180, 58, 3,146,115, 24, 36,231,106, 33,144,137,240, + 32, 54, 69,227,152,142,160,215,200, 54, 97, 41,147,186, 47,249,126,173,167, 86, 83, 68, 43,243,178,105,145,248,142, 80,102, 33, + 81,152,227,170,112, 39, 21,218,206,117,133,239, 0, 44, 37,150,114,234,175,191, 28,103,153, 26,121, 1, 13,200, 52, 16, 28, 7, + 11,255, 1,176,182,160, 68, 29,235, 8,147, 0,192,210, 82, 38, 94,245,205, 28,219,153,243,190,169,209, 7,204, 31, 16,249,249, +186,206, 12,240,177,199,181,208,104, 92, 11, 75,140,184,246, 32,166,105,183,102,238,240,243,180,155, 33,206,203, 95, 25, 5,243, + 45,164,197, 5, 67, 3, 70,109,217,172, 67,127,103,124,216,102,196,162,170,102, 27, 86,138,186, 0, 27,203,112, 32, 40, 10, 32, +200,226, 25,144,201, 55, 33,176,243,229,246, 31, 58,161,222,185,115,207,183, 81,217,188, 21,139, 7,143,154, 80, 80, 80,240, 36, + 42, 42,170, 79,243,230,205,119,125,241,197, 23,214,163, 71,143,118,159, 56,113, 34, 9, 0, 25, 25, 25,236,186,117,235,210,126, +249,229,151,130,236,236,236,241, 70,163, 49,204,148, 39, 92,161, 80,220,250,245,215, 95,179,174, 95,191,222,180,109,219,182,146, +119,222,121,135,181,183,183, 23, 72, 36, 18, 70,175,215,107, 99, 99, 99,153,248,248,120,183,252,252,252,103, 0,226, 80,139, 97, +253, 18,235,213,114,138,162,150,112, 28, 23,240, 38,124,180,100, 50,153, 59,128,103, 4, 65, 52, 48,119,216,240,149, 6, 91, 32, + 64, 94, 94, 30,212,233, 17,144,166, 60, 69,115, 75, 18, 77,236,173, 96, 99, 99,243, 90,162,168,160,160, 0, 80,165,226,198,141, +199, 0, 77,195,214,214, 22,182,182,182,127,187,208,170, 74,139,252, 71, 48,169,146, 99,213,251,104, 53,145, 99,170,133, 30,235, + 38, 15,168, 47,170,235,237, 9, 93,202, 3, 60, 78, 46,194,194,119,219, 70, 82, 18,107,237,228,143, 7,181, 30, 58,172, 14,186, +182,111, 67,212,117,179,157,177,242,167, 45,159, 53, 65,246,156,200, 76,172, 55, 37, 69,145, 89,120,206, 34,115,231,149, 39, 41, + 83, 60,101, 26,176, 44,135, 43, 97, 10,132, 37,228,237,140,206,194,115,115,114,215,196, 13, 61, 5, 32, 15,114, 28, 39,181,181, +180, 44,108,226,231,233,212,243,189, 22,100,223, 46,173, 33,162,128, 27,247, 30, 99,214, 79,199,238,176, 44, 55,192,228, 25, 98, + 44,251,138,128, 42,158, 97,104,172, 48,195,144,227, 56,174,120,214, 97,245,110, 95, 20, 69,164,171, 19,239,187, 10, 29, 27, 66, + 19,119, 5, 9,121, 44, 18, 51, 11,161, 20,184, 66,151,154, 10,112,108,210,213,215,112,172,118,114,114,114,174,215,196,175,254, +198,221, 71, 96, 80, 23,224,121,200, 46, 20,229, 41,240,221,214, 83,245, 61, 60, 28,187,164,166,166, 94, 53,227,101,227,119, 57, +104,191, 51, 56,128, 18, 74,112,102,243, 33,100, 59, 90,192, 73, 38, 2,171,201,194,228,153,163,109,251,245, 26,109, 11, 0,137, + 49,143,224, 35,211,152,196,107,112,196,208, 17,221, 26,217,193,168,193,238,243,143,180, 36,208,119,207,197,136,184,110,141,237, +164, 35, 58,250,216, 47, 79,203,255, 0, 57,181, 11, 42, 90,106,209, 42,179,240,213, 98,182,225, 17,128,105,204, 34,238,224,173, + 76,203, 97,189,222,145,137, 4, 4,193, 21,165,130,179,112,194,150,221,135,139,196, 70,108, 7, 15, 30, 60, 76,130, 70,163, 9, +213,104, 52,205,190,250,234,171, 15,191,254,250,235,206,150,150,150,245, 0, 64,165, 82, 61, 55, 26,141,215, 74,158, 79,115,102, + 7,114, 0,158,197,197,197, 61,143,139,139,115,217,187,119,175, 29, 0,105,201,111, 90, 0,249, 0, 50,240, 26, 51, 14, 75, 69, + 21, 65, 16, 75,222,212,125, 40, 21, 85, 4, 65, 52,168,205,245, 36, 73, 50, 4, 65,128, 32, 8, 72, 36, 18, 92,191,126, 29,195, + 7,244, 66,212,153,124, 4,216, 89,161,237,248,201, 56,120,233, 18, 40,138, 2, 65, 16,160, 40,202,172,118, 68, 32, 16,224,198, +141, 27, 24, 51,106, 24, 36, 2,192,214,214, 22, 95,125,245, 21, 78,158, 60, 9,129,128, 95,165,207, 12,108, 47, 39,184, 76,140, +163, 69, 96,249,165, 93, 63,136,192, 24,113,122,215, 26, 4,133, 23,233, 99,178,176,176, 81, 22,214, 29, 65, 33,155,245,211,158, + 41,151,110,132,255,248,201,200, 64, 89,247,110,189,208,189,107, 55, 65,211, 54, 93, 22, 3, 21,132, 86, 79, 84, 19,107,131, 97, +241,237,246,243,209,147, 15,134,196, 18, 48, 20, 98,100,239, 54, 28,195,226,219, 26, 50,243, 10,167,173,133,213,193, 27,183,111, +219,195, 80,132,132, 71,127, 74,235,212,171, 15, 48, 6, 60,123,246, 20,191,236, 62,206,134,220,139,249, 67, 79,227,139,248, 60, +168, 76,229, 44, 86, 86, 52,108, 45,197,141,250, 54,181, 57,199,130,131,157, 76,212,152, 99, 25,216,201,132,141,123, 53,150,157, +227, 56,142,179,182, 16, 54,230, 24, 99,141,156, 26, 61,189,109,247,111, 59,215, 78,152, 48,193, 50, 59, 37, 29,105,202,112, 20, +137, 61, 96,148,121, 33,238,209, 53,141, 90, 71,155,210,136, 87,121, 63,179,179,179, 51, 67,239,230,226,224,214, 21, 48,234,117, +200, 76, 41,214,170,105,217, 74,216, 56,121,220, 78, 77, 77, 53,153,211, 64,179, 5, 67, 71, 79, 18, 89, 88,195, 98,204,208, 64, +113, 92,142, 14,173,220,173,139, 95, 26, 69, 89,136, 10,190,129,174, 37, 62,166,241,201, 36,124, 90,184,155,148, 78,107,169,232, +139,126,239,120,224,121,146, 2,215, 35, 82,119, 63,207, 69, 26, 19,173,216, 29,151,150, 63,101,208,187,222,248,249,100,228,231, +128,113,191, 57,121,247,119,198,135, 28,135,142,197,206,240, 26,112, 64, 71,127,103,124,104,226, 76,195, 87, 56, 5, 34,124,180, +246, 92,226,162,195,247,179, 7,205,253,168,147, 77,251,246,253,197,160,245, 40,212,232,140, 81,249, 80,190, 78, 25,189, 6,120, + 78,158,243,191,202,201, 0,248,195,104, 52,254,145,159,159,255, 38, 57,211,240,106, 92,167,215,202,123,249, 97, 66,142,227, 4, + 37,214,172,154,156,225,171,229, 44, 63, 76,200,113,220,217, 18,107, 86, 77, 86,173, 10,156, 44,203,166,181,110,221,218, 97,224, +192,129, 96, 24, 6, 79,159, 62, 69, 98,114, 50,122, 78,249, 28,118,118,118,184,246,228, 9, 98, 98, 98,176,100,201, 18, 24,141, + 70,156, 56,113, 34,165, 38, 78,129, 64, 96,168, 95,191,190,104,240,224,193,160,105, 26,241,241,241, 72, 77, 77,197,172, 89,179, + 96,107,107,139,208,208,208, 50,206,236,236,108, 8, 4, 2, 67, 37,214,173,191,162, 46,253,215,241,138,200,170, 94,104, 1, 12, + 24, 35, 10, 46, 45,197,250,235, 48, 24,140,104, 28,153,133, 23,145,255,179, 72,109,161,238, 62, 57,253, 36, 60,250,121,232,205, +238, 98,100,134,193,220,158,196,211, 28, 40,172,165,133,133, 48, 20,218, 32,254, 28, 94,100, 20, 22, 61,205,129,194,236, 30, 3, +203, 16, 48,168, 1,197, 3,220,186,118, 21, 33,119, 30,227,126, 88, 52,115, 43, 52,246, 32,201,226,219,168, 28, 60,173, 69, 47, + 4, 86, 3,126,198,184,176,103,222,109,252, 92,188,193,208,224, 88, 35,108, 71,238,199,248,200,246,222,109,124,237,188,139, 45, + 89, 70,216,127,250, 39,176, 86, 90, 45,223,131,100,227,118,241,201, 11, 31, 20,230,231,188,219,163,203,123,150,182,254,253,144, +253, 44, 22, 79, 31,223,208,132,134,199,221,122,144,108,124, 45,107,137,135,135, 71,231, 30, 93, 26, 97,228,228, 5, 48,168, 11, + 16, 31,242, 27,138,114,211,113,253,182, 21,162,149,202,247, 0,152,108,209,186,157, 68, 55, 69, 82, 30, 58,212, 17, 38, 89, 67, +231,250,113,224, 64, 72, 8, 45, 88,157, 18,132, 58, 27,113,169,250,130, 15,182, 38, 51, 0, 32,147, 16, 2, 75,174,192,198, 36, +203,163,143, 99, 67, 25,101,196,158, 75, 17, 96,217,226,229,155, 88, 22, 91,246,252, 25, 55,229,219, 49,173,208,196,219,190,197, +163,212, 76, 2,102,152,252, 9, 14,157,238, 31,252,166,177,246,242, 98,128, 53,224,198, 12,135,198,157,214,231,118, 66, 45,151, +219, 9, 79, 67, 42,128, 41, 16,168,183,205, 88,127,126,113,235, 75,145, 29,103,127, 58,200, 6, 28,191, 0, 59, 15, 30, 60,254, +126, 20, 21, 21, 77, 30, 63,126,252, 54,161, 80, 40, 7, 64,176, 44, 11,150,101, 5, 63,254,248,163,144, 97, 24,146, 36, 73,134, +162, 40,250,236,217,179, 70,134, 97,178,180, 90,237,228,154, 56,105,154,142,155, 54,109, 90,253,154,102, 40, 30, 56,112,160, 84, +100,197,241, 37, 97,146,200, 42,191, 47,179,114, 85,221,120,112,248,166,195,152,165, 75, 1, 16,224,176, 44, 50, 11, 47, 94, 62, + 37, 44, 23,105, 77, 40,195,172,166,109,186, 44, 45,189,198,220,148,105, 25,102, 88,155,102,126, 7, 0, 64,199, 49, 99,106,147, + 59,165, 78, 51,162,101,155,247, 14,178, 28, 39,160, 57,110, 39,201,226,168,150, 70,148, 41, 51,237,170, 66, 90,102,126,104,191, + 0, 91, 14, 40, 30, 50, 44, 27, 46, 44, 9,227,192,113, 28, 87, 54, 92,184, 70,138,236, 2, 93,141,113,160,110,190,208,247,210, +211,247, 39, 93,188,249,104, 50,195,112,174, 20, 69,164,107,244,244,182,215, 21, 89, 0,144,154,154,122, 53,248, 82,234,197, 39, + 45, 92,122, 59,201, 74,172, 92,106, 32, 91,141,139,169, 89, 69, 87,107,195,153,167, 50, 14,250,122,221,201, 83, 98, 33, 37, 0, +199, 21, 7, 20,229, 56,104, 13, 76,238,237, 36,186, 41, 0, 52,115,128,251, 87, 39,232, 3, 20, 69, 36,214,196,119, 55, 70,241, +243,200,149,193,115, 34, 18,242,118, 38,228, 35, 28, 0, 18,242, 17,126,232,198,139,197,113,233,133,115,194, 19,243,214,192, 76, +191, 10,142,192,245, 54, 35,151,190,114,236,117,239,103,180, 2,143, 1, 12, 1, 82,122,141,156,253,203,108,130, 0,191,252, 4, + 15, 30,255,143, 80,106,213, 34, 73,114,249, 27,228, 60, 75, 16, 68,127, 0,207,204,184,236,110, 81, 81, 81,179, 55,156,189, 28, +154,166,115, 76, 57,241, 31,112,136,255,175,226, 31,115, 45,233,201,115,254,253,156, 13, 26, 52,224,204, 16, 44,252,253,228, 57, +121, 78,158,243,255, 21, 39,199,113,212,235,108, 85,112, 18,175,179,241,101,244,159,199,203,206,240,147, 74,141, 19,252,112,200, + 91,136,103,207,158, 17,252, 93,224,193,131, 7,143,202, 65, 16, 4,243, 23,112,242,193,139,121,148, 10,174, 10,214, 45,146,191, + 39, 60,120,240,224,193,131, 7, 15, 30,111, 68,100,149,223, 23,139,112, 84,109,254, 51,103, 54, 65,109, 76,136,193, 60, 39,207, +201,115,242,156, 60, 39,207,201,115,254,191,227,172,137,251,173,152,205, 88, 67, 28,243, 55, 6,222, 31,128,231,228, 57,121, 78, +158,147,231,228, 57,121,206,183, 29, 85,250,104,241, 67,135, 60,120,240,224,193,131, 7, 15, 30,127, 17,120,103,120, 30, 60,120, +240,224,193,131, 7,143,215, 67,141,139, 74,243,224,193,131, 7, 15, 30, 60,120,240,168, 29,170, 95, 84,154, 7, 15, 30, 60,120, +240,224,193,131, 71,173, 97,254,162,210, 60,120,240,224,193,131, 7, 15, 30, 60, 76,194,118,254, 22,240,224,193,131, 7, 15, 30, + 60,120,252, 61,168, 56,235, 48, 40, 40,136, 43,191,231,193,131, 7, 15, 30, 60,120,240,248, 59,241,182,106, 17,126,232,144, 7, + 15, 30, 60,120,240,224,193,227,245, 48,137, 23, 90, 60,120,240,224,193,131, 7, 15, 30,127, 13,170,244,209, 42, 13, 88,218,181, +196, 84,215,149,191, 87, 60,120,240,224,193,131, 7,143,127, 0,111,183, 22,225,253,179,120,240,224,193,131, 7, 15, 30,188, 22, +121, 51, 40,117,134,231,193,131, 7, 15, 30, 60,120,240,224,241,122,224,215, 58,228,193,131, 7, 15, 30, 60,120,240,248,155, 5, +215, 95, 46,180,248,149,205,121, 78,158,147,231,228, 57,121, 78,158,147,231,252,255, 36,178, 42,136, 45,126,214, 33, 15, 30, 60, +120,240,224,193,131,199,235,161,198, 89,135, 60,120,240,224,193,131, 7, 15, 30, 60,106,135, 73, 0, 2, 75, 62, 7,162,156, 85, +139,183,104,241,224,193,131, 7, 15, 30, 60,120,188, 30,182, 3,112, 43, 17, 88,103, 0, 40,120,161,197,131, 7, 15, 30, 60,120, +240,224,241,102, 80,222, 47,107, 64, 57,241,197, 11, 45, 30, 60,120,240,224,193,131, 7,143,215, 68,149, 62, 90, 4,170,158, 57, + 16,108,198, 31,212,102,246, 65, 48,207,201,115,242,156, 60, 39,207,201,115,242,156,255,239, 56,107,226, 14,198,127, 15,175,132, +117,224, 56,110,251,223,241,199,252,212, 87,158,147,231,228, 57,121, 78,158,147,231,228, 57,255,223,225, 47, 11, 88,218, 10,176, +224,111,239, 91, 9,151,146,141, 7, 15, 30, 60,120,240,224, 81, 61,254,154, 89,135,254,192,167,163, 3,228, 91,141,225, 89, 54, +225,128,186,186,115,229,114,249, 54,153, 76, 54, 90,173, 86,171, 8,130, 96,203, 43, 64, 0,229, 23, 7,138,207,202,202,234, 84, +211,127,139,197,226,117, 46, 46, 46,159, 22, 21, 21,169, 9,130,224, 8,130, 0, 65, 16, 0,240,202,158, 97,152,148,156,156,156, +214,255,113,169, 76, 57,185,184,220, 19, 82,148,135,185,151, 50, 44,251, 34, 51, 35,227, 61, 51, 46, 89, 65, 16,152, 91,252,183, + 88, 13, 96,193, 91,215,243, 0, 40, 83,206, 11, 0,172, 99,129,145, 12, 73,126, 46, 4, 54,233, 88,118, 43, 0, 16, 0, 83,219, +255,214,221, 69,125,130, 67, 11,130,128, 45,199,161,128, 35,240, 88,210, 14,113,255,208,173, 24, 42, 20, 10, 7,217,216,216, 88, +229,228,228, 92, 5,112, 0,192, 40, 71, 71,199, 46, 74,165,178,200,104, 52,158, 4,112,172, 54,196,157, 90, 96,158, 88, 36,252, + 68,107, 48,174,186,249, 24,191,117,105, 5, 71,154,197, 74,169, 72,208, 73,167,167, 87,223,120,130,157,102, 82, 18, 37, 91,233, + 59,195,236, 69,197, 14,155, 88,238, 0,112,194,222,222, 79, 34,183,185, 44, 20, 83, 47,242, 51,138, 70, 15,203,204, 76, 30,254, + 26,229,254,111,132,147,147,211, 56,146, 36,191,231, 56, 14, 12,195, 44,204,205,205,221,245,134,168, 23, 2,176, 43,249,156, 15, +224,251,215,228, 75, 4,224, 93,242, 57, 9,128, 15,223,174,215, 26, 91,142, 31, 63, 62,165, 91,183,110,248,249,231,159,177,101, +203,150,132,172,172,172,149, 0,118, 3,208,255, 3, 60, 60,170, 66, 19,160,255,143,125,218, 49,198,223,191,101,203, 29,238, 89, +197,195,252,235,199, 31,127,108,224, 56,142,139,137,137,225,244,122, 61,103, 52, 26, 57,154,166, 57,154,166, 57,163,209, 88,182, +121,120,120,164,190,116,249, 43,156, 36, 73,174,255,224,131, 15, 10, 57,142,227, 30, 60,120,192,105, 52, 26, 78,167,211,113,122, +189,158,211,106,181,156, 70,163,169,176,185,184,184,100, 84,199,105, 99, 99,243,192,222,222, 62,195,222,222, 62,195,193,193, 33, +195,193,193, 33,195,209,209,177,108,115,114,114, 42,219,228,114,121,134, 92, 46,207,112,112,112,120, 80, 83, 58, 75,208, 7,192, + 85, 19,182, 62,149, 92,219,179,188,208,114,115,115,203,224,106, 1, 79, 79,207,100, 19,210, 89, 10, 23,130, 0, 83,122, 45, 65, +128,149, 72, 36,222,229,127,199,171,150,174, 26, 77,202,238,238,238, 31,184,185,185, 5,187,185,185, 93,114,119,119,255,192,132, + 42, 86,129,211,218,218,250,129,147,147, 83,134,171,171,107,102,233,230,230,230, 86, 97,115,119,119, 47,219, 92, 92, 92, 50,236, +237,237,171, 44, 35, 14,160,170,218, 66, 0,129, 4,232, 46,160,168, 32, 23, 23, 23,101, 88, 88, 24,195,113, 28, 71,146,100,106, +233, 57,230,228,253,101,145,165,190,129,133,217, 87, 36,119,139, 94,172, 44,200,190, 34,185,171,190,129,133,186,187,168, 95, 91, + 78, 19, 81, 25,231,216,177, 99,199, 62,206,200,200, 72,205,207,207, 87,108,221,186, 53, 86, 42,149,222,216,186,117,107,108,126, +126,190, 34, 35, 35, 35,117,236,216,177,143, 1, 76, 51,131, 19, 0,240, 94, 11,188, 59, 97,168,155,250,241,137, 49,234,238,109, + 4,143, 58, 4, 32,176,215,123,162,212,141,243,253,213,215,118,116, 84,119,123,135, 12, 55,147,147, 16, 8, 4,237,189,189,189, + 63,145,203,229, 31,151,108, 99, 74, 55, 87, 87,215, 49,174,174,174, 99,236,237,237,135, 87,199,121, 24,160, 76,217,188,164,210, +246,195,235,121,171, 19,151, 47,227,194,102,126,206,125,226,235,165, 28,230,236, 92,231, 31, 40,163,191,148,211,217,217, 57,205, +104, 52,114, 6,131,129,115,116,116, 76,123,131,233, 92,195,113,220, 26,142,227,214, 0, 88,243, 6, 56,203,222,103,102, 8,236, +234, 56,165, 2,146,156, 45, 19,139, 47, 73, 4,130, 76,137, 64,144, 41, 19,139, 47, 9, 72,114, 14, 0,233,191,169,140,254, 2, + 78, 43,185, 92,254,124,221,186,117,156, 90,173,230,212,106, 53,183,110,221, 58, 78, 46,151, 63, 7, 96,101, 6,103,109,121,222, + 38, 11, 86,133,173,116,232,240,141, 88,180,252,129,214,221, 91, 52, 56, 58, 99,220, 72,176, 71,214, 17, 53,244,152,126,125,175, +117,235, 79,118,239,222, 13, 0, 24, 61,104, 16,122,183,109, 11,107, 43, 75,136,197,197,201, 33, 56, 2, 34,161, 8,131,103,125, +105,202,223,175, 30, 60,120,240, 71, 71,142, 28,177, 2,128, 45, 91,182, 96,232,208,161,112,112,112,128, 76, 38,131, 72, 36,130, + 80, 40,172,176,175, 9, 20, 69,121,166,166,166, 58, 75,165,210, 50, 43, 27,203,178, 21,182,242,171,114,211, 52,141,134, 13, 27, +154,122,187,230, 23, 20, 20,116, 86,169, 84,101, 28,149,109,245,234,213, 3,128, 11,166, 16,126,255,221,183, 96,105, 21, 4, 2, +128,166, 1,157,129, 4,203, 85, 42,110, 48,109,218,180,215, 90, 77,124,192,128, 64,130, 32,136, 35,161,161,161, 71, 51, 51, 51, +235,178, 44, 51,177,150,150,174,207,158, 62,125,106, 5, 0,126,126,126,211, 0, 28, 53, 39, 29, 2,129,192,243,201,147, 39,206, + 18,137,164, 74,203,101, 57, 11, 38, 12, 6, 3, 90,181,106, 69,155,243, 31, 46,128,119, 46, 73, 78,108,249,206, 59,147,150, 14, + 30, 44,189,119,239,158,148, 36, 73,208, 52,141, 31,127,252,145,230, 56,206,174, 9, 96, 19, 9, 40,171,161,249, 26,192,184,146, +198, 96, 39,128, 31, 43,168, 5, 14, 45, 52, 70, 73, 96,124,209,224,182,237,234,204, 67,100, 68, 88, 91, 95,171, 19,176, 22,232, +226,128,191,215,170,101, 99, 99, 51,232,231,159,127,150,239,220,185, 83, 25, 19, 19, 99,216,186,117,171,124,242,228,201,214, 6, +131, 1, 83,166, 76,201,106,212,168,145,232,231,159,127,150, 31, 59,118,172,187, 74,165,218,108, 86,121, 17,248,118,212,160,222, +208, 26, 73, 24,141,180,220, 77,110,253,199,140,177, 93,133, 28,167,199,158,147,161, 48,210,236,111,102, 90,178,222, 27, 54,108, +152,239,254,253,251, 5,209,209,209,130,198,141, 27,131,101, 89, 48, 12, 3,163,209, 8, 0, 96, 89, 22, 13, 26, 52,120,237,251, +242, 9,224,231,228,226,112,233,189,254,253, 44,220,164, 18, 56,228,101, 97,130, 72, 96,189, 75,166,219, 11,160,253, 91,101,217, +229, 56, 8, 4, 2, 36, 39, 39,195,217,217,217,130,101, 89, 5,128,101,121,121,121,219,241,246,162,173, 88, 32, 56,186,231,183, +245,174,237,218,183,167, 92,220,156, 17,251, 52, 9, 2,130,233,249,228,126,104,215, 79,166,206,158,161,167,233, 15, 0,220,123, +219, 50,238,218,126,218, 16,130,164,182, 16, 28,139,111, 54,158, 42, 92,177,122,157,108,202,196,177,212,172, 89,179,224,229,229, + 85,119,200,144, 33,171, 1, 76,173,145,167,221,180, 33,160,200, 45,224, 56, 44,253,229, 84,225, 15,171,215,201,166,214,130,231, + 63,142, 42,159,145,215, 22, 90,254,128,111, 83, 47,231,139, 43,230, 78, 21,114,231,126, 39,213, 57,153, 85,158, 43,151,203,183, +245,237,219,119,244,174, 93,255,179, 70,191, 23, 16,128, 33,221, 59,194,217,209, 22, 50, 75,113,113,115,196, 18,120, 28,243,194, + 36, 65,224,229,229, 53,229,232,209,163, 86,229,197,132, 72, 36, 42,219,202,139,172,210,173,180, 1,174, 14, 82,169, 20,193,193, +193, 16, 8, 4,160, 40, 10, 2,129,160,108, 43,255,157,162, 40,184,184,152,229,186,180,210,214,214,182,121, 97, 97,161, 77,126, +126, 62,188,189,189,149, 0,158,148,251,189,121, 86, 86,150,141, 57,132, 44,173,194,172, 9,254, 16,234,239, 64, 47,108, 11,141, +160, 3,110,221,143, 66,208,133,171, 72, 77, 75, 71,199,119, 91,226,227, 15,135,225,210,165, 75, 96, 24,179, 71, 58, 50, 56, 14, +171, 7, 14, 12,156, 7, 16, 68,207,158, 61,243,167, 79,159, 78, 70, 71, 71,127, 52,100,200,224,128,167, 79,159,149, 88, 21,137, +185, 28,135,245, 0, 50, 76,228, 21, 3,192,181,107,215, 0, 64, 82,155,186, 39,145, 72,112,251,246,109,148, 14, 19,147, 36, 9, +146, 36, 65, 81, 20, 78, 63,115,130, 74, 79, 66,157, 17,142,207, 3,189, 81,175, 94, 61,144,100,205, 46,137, 93, 1,233, 45, 96, + 8, 33, 20,206,114,115,119,175,219,197,215, 87, 22, 28, 28, 76, 1,128,143,143, 15,167, 80, 40,242, 79,158, 60, 89, 40, 0,182, +248,112,220,238,234, 68,150,151,151, 87,135,212,212,212,239, 75,239, 57, 65, 16,171,235,212,169,179,164,172,220, 88, 22,203,126, + 83, 9,103,204,152, 41,106,215,117, 17, 0,160,221,192,253, 80,198,175,240, 39,114,191,182,253,187,223, 18, 74,165,242, 96,131, + 6, 13,168,156,156,156, 91, 0, 18,141, 70,227,252, 63,254,248,195,121,194,132, 9,153,123,247,238, 93, 9,192,125,213,170, 85, + 93, 85, 42,213, 33,115,120, 59, 54, 71,255,119,154, 7,188,235,237,229,133,171,183,238, 65, 36, 22,218, 77, 27, 23, 8, 43, 43, + 1,214,236, 60,195, 38,166,228, 78,191,241, 4,187,205, 16, 89,109,135, 13, 27, 86,119,255,254,253, 98, 0,120,242,228, 9,210, +211,211, 33,151,203, 97, 97, 97, 1,161, 80, 8,138,162, 32, 20, 10,223,136,200,178,245,114,188,123,226,196, 73, 11, 7, 7, 59, +108,252,114, 6, 62,206,204,128,157,181, 21,140, 69,170,186,111, 89, 67,225,215,169, 83, 39, 41,195, 48, 80,169, 84, 8, 9, 9, +177,181,176,176,176,245,244,244, 92, 90, 93, 35, 82,201,187, 51, 67,171,213, 58,151,124,206,212,106,181, 46, 0,148, 18,137,164, +244, 61, 93, 84,178, 55,117, 56, 49, 17,175, 14, 19, 38, 17, 4, 81,254, 88,109,209,166,109,155,230,193,199,142,236,179, 42, 40, + 76,135,157,125, 38, 72, 20, 96,251,246, 77,176,176,176,193,210,165, 95, 11, 94,244,236,238,209,167,255, 7,193, 17, 81,177, 61, +223, 58,177,197, 17,219,123, 14, 28,237, 96, 33,179, 46,105, 75,140,216,181, 99, 6, 72,146,196,146, 37, 75,208,180,105,211, 73, + 17, 17, 17,139, 0,228, 86, 79,131,237,205, 58,143,112, 16, 75,139,139,152,101,140,216,122, 96, 78, 49,207,130,201, 24, 53,176, +222,164,175,134, 61, 63,223,212, 23,133, 37, 29,115,141,144, 68, 18,209, 14,101,130, 33, 40, 40,168, 75, 96, 96,224,213,170,190, +255, 7,224,134,255,197,207,170, 32,190, 4, 65, 65, 65, 92, 96, 96, 32, 81, 46,115, 21,190, 87,135, 22,128,147,189,173, 44,120, +203,178, 25, 86,130, 59,103, 40, 77,210, 51,164,105, 43, 52,228, 21,166,104,202,100,178,209,187,118,237,170, 96, 82,242,118,113, +134, 72, 36,132, 80, 68,192,174, 83,113,244,250,252,235, 65, 32,136, 42, 69, 86, 5, 78,149, 74,165,125,244,232,145,213,206,157, + 59,225,236,236,140,186,117,235, 66, 38,147, 65, 42,149, 86, 16, 87,229, 5, 87, 37, 66,171, 2,103,233,239, 2,129, 0, 36, 73, +226,210,165, 75,160,105, 26,195,134, 13,123, 69,100, 9, 4,130,170,132, 91, 85,211, 83, 47, 0,120,194,113, 92,231,146, 6,248, + 9,128, 46,229,126,239, 35,151,203,231, 3, 88,105, 42, 39, 69,113,160,180,183,192,122,174,131, 32,121, 6,244,194, 22,184,114, + 35, 20,187,182,253, 12, 0,168,219,184, 13,134, 15, 9, 44,179,198,153,152,206, 50,120,120,120, 28,200,202,202,238,215,189,123, +119,228,229,229, 25,151, 45, 91,134,230,205,155,195,207,207,207,164, 50,170,162,231,156,241,228,201, 19, 47,141, 70, 3,142,227, + 76, 17,103,175,112, 18, 4,129, 63,254,248, 3, 90,173,246,149,147,237,187,252,128, 57, 67,125, 48,254,243,221, 88, 29,115, 8, +155, 55,111,174, 54,239, 50,160,185,214,182,193,122, 49, 69, 55, 95,249,245,103,146,143, 63,254,152, 26, 63,126, 60,146,146,146, + 48, 97,194, 4,237,165, 75,151,244,233, 10,197, 73, 49,203,110, 52, 84, 20,198, 85,114, 74, 36,146, 61, 23, 46, 92,192,161, 67, +197,186, 36, 54, 54, 22, 13, 27, 54,180,172, 32,146,115, 15,163, 48,113, 35,238,158,142, 70,187,129,251,113,247,244,135, 96,242, +207, 8, 91, 55, 68,129, 57,247,179, 22,168,140,243, 80, 78, 78, 78,153,136,218,187,119,175,197,222,189,123, 7, 3, 56, 5,224, + 16, 0,228,230,230,254,100, 38, 39, 64, 96,252,136,161,131, 33, 16, 89, 35,250, 89, 10,186,188,215, 10, 46,206,206,120, 18, 21, +135,196,212,220, 12,130,192,184, 62,237,197, 43, 53, 26,253,162,235,143,241,107, 13,156,132,167,167,167,223,225,195,135, 69,229, + 44,208,101,207, 56, 69, 81,101,223, 75,133,119,109,234,103,169,200,178,246,180,186,251,237,166, 14,150,119,195,246,162,161, 79, +127,216,247, 15,196,175, 23, 47,226,105, 68,164, 86,175,166,123,252, 3,101,244, 87,113,250, 13, 29, 58,244,214,190,125,251,236, +146,147,147,113,237,218, 53,212,173, 91, 23,106,181,218,148, 14,111, 5, 78,173, 86,235, 92,122, 13, 65, 16,206,165,134,119,189, + 94, 95, 90, 24,165, 15,162, 93,185,243,236,170,225,244, 46,119, 94,169,184,242,121, 3,121, 23, 75, 69,162,195, 39,142, 29,176, +138,140,190,134,150, 45,222,133,149,109, 19,176, 76, 58,114,114,139,144,247, 44, 13,223,125,183, 26, 75,151, 45,196,169,227, 71, +172, 26,249,183, 56,170,167,233, 6, 0,180,111, 77,185, 19,220,164,224,211,123,183, 16, 28, 11, 77, 70,180, 68,168,122, 46, 27, +253,225, 7,212,200,145, 35,113,234,212, 41, 68, 68, 68,108,169, 70,100, 5,151,179,204, 79, 10,191,118,104, 11, 56, 14,154,204, +104,137, 72,243, 92, 54,246,163,225,212,199,163,122,227,206,159,235,209,187,229,243,112,119,103, 12,201, 43,145,216, 2, 10, 57, + 18, 41,110,114,119,113,167,156,216, 10, 1, 64,148, 19, 88, 33,248,159, 15,230,127, 1, 3, 74,132,213,164,151, 59, 38,130,218, + 8, 44, 0,104, 8, 88, 17, 98,209,221, 93, 75, 63,115,151, 37, 69, 8,116,225,183,145,166, 99,185,173, 9, 52,219, 10,176,120, + 8,104, 94,190, 70,173, 86,171,226,226,226, 44,198, 13, 25,130,246, 1, 1,112,115,116, 68, 3, 79, 79, 88, 72,196, 16,139,132, + 21,186,172, 38,143, 33, 16, 4,215,168, 81, 35, 12, 28, 56, 16, 66,161, 16, 50,153, 12, 86, 86, 86, 16,139,197,149, 90,179, 76, +237,229,114, 28, 7,138,162, 16, 30, 30,142,196,196, 68,216,217,217,225,230,205,155,232,209,163,199, 43, 86,173,242,226,204, 28, + 19,125, 37, 13,127,169, 16,187, 96, 14, 23,195, 16, 40,226, 90, 64,154, 48, 29,106,162, 21,116, 58, 26, 58,157, 14,191,222, 48, +224, 94,156, 10, 6,131, 30, 58,157,174,186,255,172, 10,164,187,187,251,232, 6, 13, 26, 76,251,240,195, 15,141, 98,177, 24, 42, +149, 10,106,181, 26, 17, 17, 17,198,126,253,250,231, 15, 28, 24,104,123,230,204, 25,174,100,232, 48,195, 12,238, 28, 15, 15, 15, +175,146,225,217,156,218,212,106,130, 32,202, 68,204,203, 24,247, 83, 36, 4, 84,113,153,108,217,178, 5, 12,195,128,227,184, 42, + 11, 73, 75, 16,151,151,253,176,214,118,213,186,223, 96,235,224,130,171, 87,175, 50,231,207,159, 47, 36,128,216,167, 17, 17, 63, +189, 15,156, 61, 12, 24,204, 73, 95, 94, 94,158, 69,221,186,117,225,233,233, 9,150,101, 97, 52, 26,203,172, 47, 57, 57, 57,208, +104, 52,112,176,204, 71,125, 71, 79,208,133, 33, 80,132,127, 3, 55,171,104,236,190,160, 55,190,227,135,199,255,130, 23,199,239, + 37,219,107,246,154,225,225,236,234, 5,146, 51, 34, 45, 51, 7,131, 7,244, 6, 37,178,194,139,228,108,180,104,226,235,246,209, +251, 29,220, 40,130,198,220,149,251,167, 1,236,175, 53,209, 21, 21, 21, 49,209,209,209,120,242,164, 88,239,218,216,216,192,210, +210,178,194, 51, 78,146,228,107, 89,180, 74, 69,214, 15, 91,122, 88,146, 66, 21,148, 76, 48,118,254, 17,138, 22,141, 2,177,245, +238,125, 45,147,145,219,115,141, 86, 27,123,224, 63,108,204,112,117,117,157,204,178,236, 82,142,227,242, 59,118,236,232,178,127, +255,126,251,212,212, 84,132,134,134, 98,201,146, 37, 89, 12,195,208, 28,199, 17, 28,199,125,243, 6,254,142, 45, 39,176,222, 36, +132, 50, 41, 62,119,178, 33, 6, 9, 72,155,186,180,178,232, 69,182,158, 59,169,166,217, 95, 0, 24,171,125,185,145,228,167, 71, + 14,110,113,119,146,179,232, 42,239, 14, 69,134, 1, 63,124, 57, 22, 57, 57,133,248,117,199, 10, 0, 98, 24,104, 10,157,187,126, + 0,103,103, 15, 76,154, 56,201,117,203,182,173,159,209, 44,187, 6,111, 9,210,111,109, 62, 14, 32, 88, 46,151, 71,124, 54,105, +146,188,110,221, 49,144, 74,165, 56,112,224, 0,246,111,220,200,172, 3,134, 75,128, 43, 83,128,227,213,242,220,253, 31,207,140, + 41, 83,228,254,254, 83, 32,145, 72,240,231,249,223,161, 77,255,163,112, 64,123, 24,212, 90, 12,168, 51,144,115, 72, 56, 77,228, + 10,133,120, 6, 0, 66, 41, 20, 0, 94, 30, 6,251,175, 9,172, 82,156,193,255,102, 26, 78,170, 96,209,170,245,187, 83, 40, 14, +219, 49,115,148,143, 11,116,132,254,198,105,164,234, 88,102,213, 83, 3,245,176,128,155, 19, 85,137,200, 42,169,216,172,183,183, + 55,186,183,110,141, 33,157, 58, 65, 32, 16, 64, 42, 22,193, 90,106, 1,142, 41,182,100,149, 14, 29, 86,211, 38,162, 50,235,147, +163,163, 35, 68, 34, 81,153,192, 50,195,154, 85, 41, 39,203,178, 16, 8, 4,120,242,228, 9, 58,118,236, 8, 47, 47, 47, 28, 58, +116, 8,125,250,244,121,101, 40,209, 92,145, 85, 42,180, 94, 26,198,235, 3,160,212,146,101,150,208,210,234, 9,100,235, 91,128, + 32, 2, 64,211, 0,195, 1, 58,173, 22, 28, 7,112, 28, 96, 52,232,161,213,106,203,254,211,148, 33, 89, 87, 87, 87,111, 11, 11, +139,229,243,230,205,245,111,209,162, 37,178,178,178,192,178, 44, 44, 45, 45,161, 86,171, 97, 99, 99,131,246,237,219,191, 88,190, +124,185,130,227, 48,201, 76,145,245,218, 40,189,231, 23, 47, 94,172, 48,108, 88,186,169, 20, 41, 24,255,197, 94,136, 5,197, 67, + 75,165, 62, 60,213,189,119,187,117,238,128, 91, 15, 99,233, 79,231,174,215, 9,115, 66, 87,186,178,236,174,148,215,200, 23,199, +113,200,206,206, 70, 70, 70, 6, 6, 13, 30,140,253,251,246, 33, 33, 33, 1, 77,154, 52, 65,183,110,221,224,236,236,140,132,132, + 4,220,187,174,131, 46, 47, 23,185,250, 80,200,172,219,225,196,213, 56,221,146, 45,134,184,127,240,133, 49, 8,192, 88, 27, 27, +155,122,106,181, 90, 65,211,244, 97, 0,135, 1, 12, 23, 8, 4,195,101, 50,153,155, 82,169,124,142,226,217, 68, 39,107, 34,179, +144, 74, 29, 37, 82, 27,176,180, 14, 2,129, 0, 94, 94,117,193, 49,122,228, 41, 53, 24, 55,114, 32, 30, 62,137,194,249, 43,119, +104,163,145,221, 96,202,109,165, 40,138,243,243,243, 67,102,102, 38,132, 66, 33, 44, 44, 44, 96,101,101,133, 5, 11, 22, 96,227, +198,141,101, 34,171,182, 66,235, 19,192,207,198,219,234,206,247,155,138, 69, 86,122,154, 2, 25, 41, 66,200, 29, 93,176, 97,227, + 58, 85, 94, 66,122,187,223,128,216,255,122, 35,203,178,236, 55,169,169,169,206, 2,129,192,149,166,105, 36, 39, 39,227,193,131, + 7,152, 62,125,122, 70, 78, 78, 78, 87,212, 50,143, 82,169, 52,179,212,146, 85, 50,116, 88,213,112, 98,126, 57, 75, 86,126, 53, +148, 85, 13, 19,250,214,245,180,190,180,227,231, 89,222,109,218,181, 39,101, 2,155,188,162,103,233, 29,111, 92,187,218,126,250, +207,191,126,150,152, 87,212, 27, 64,124, 85,164, 18,161,176,223,187, 29, 58, 8,192,101, 64, 32,238,136,213,171, 70, 34, 43, 91, +137,188,220, 66,136, 68,150,208, 27, 41, 48, 44,129,246, 29, 59,225,247,221, 7,209,116,226, 4, 74, 44, 20,246,162,245,250,183, + 70,104,149, 96,197, 47,191,252,226,221,168, 81, 35,236,218,181, 11, 87,246,236,193,199, 5, 5,184, 74,146,148, 81, 40,116, 58, +107, 52,110, 71, 13, 66,171, 60, 79,211,166, 77,241,219,111,191,225,143, 63,254, 72, 26,221, 35,243,232,172,209,112, 54, 24,208, + 55, 52, 6, 14,117, 6, 2,161, 49,112,120,167, 17, 26,208, 2, 60, 35,136,138,225,160,130,130,130,186,148,223,255,199,160, 64, + 21, 67,236, 2, 0, 93,131,130,130,184,242,251, 26, 95,156,242,134, 83, 86,244,174,231, 19, 80,223,155, 48, 30, 90,143,100, 21, +173, 95, 20, 99, 16, 63, 45,226,102, 69, 1,235,170,233, 65,112, 20, 69,193,218,194, 2,114, 59,187, 98, 51, 63, 73, 2, 44,192, + 26, 1,130, 41, 22, 0, 28, 75,128, 99,204,122, 97, 64, 44, 22, 87,234,248,110,174,111, 86,121,206,194,194, 66,188,120,241, 2, +147, 38, 77,130, 76, 38, 43, 86,238,233,233,240,241,241,129, 64, 32, 64,106,106, 42,254,252,243, 79,212,171, 87, 15, 18,137,196, + 44,181, 85,206,186,212, 28,197,179, 12,155, 43, 20, 10, 27, 55, 55, 55,152,109,209, 98, 57,168,117, 4,244,122, 6, 79,159, 62, + 69, 90, 90, 26, 94, 60,127,134, 54, 42, 37, 56, 80,224, 56,206, 44,139,150,135,135, 71,128,175,175,239,214,149, 43, 87,138, 60, + 61, 61,193,113, 28,236,237,237,160, 86,171,145,157,157,131, 38, 77,154,192,203,203, 11, 43, 87,174, 4,128,253,127,183,200,122, +169, 78,149, 9,173,242,130,235,139,247,189,145,155,107, 5,138, 34,203,132,115, 13, 62, 90, 34, 0,232,218,123,168,224,210,249, +179,150, 52,176, 60,157,162,150, 11,106, 46, 71, 35,195,178,178,170,126, 79, 78, 78,134, 80, 40,196,145,195,135,145,155,145,129, + 22, 45, 90,160,109,219,182,120,246,236, 25, 30, 62,124, 8, 71, 71, 71,200, 61,223,195,213,231, 6, 68,166,105, 96,107,107,139, +184, 20,242,159, 12, 25, 48,177,103,207,158, 75,126,250,233, 39,103, 87, 87, 87, 97, 86, 86, 86,163, 77,155, 54,181,216,180,105, +211,140,207, 62,251,204,229,179,207, 62,179,151,203,229,130,244,244,116,191, 47,191,252,242,157,224,224,224,122, 0,214, 86, 71, +104,105,105,237, 64,137, 44, 65, 16, 2,216,217,218, 67, 32,182, 4, 75, 11,192,176,128,141,173, 28,183, 30, 30,193,205,176,194, +201,153, 57, 56,108,146,125,172,164,220, 29, 29, 29, 95,177, 84, 79,159, 62, 29, 59,118,236, 40, 27, 70,172,173,200,250, 97, 83, + 15, 43,162, 68,100,165, 39, 11, 64,232,234,225,244,241,219,249,121, 9,233, 29,223, 6,145, 85,250,142,227, 56, 14,207,159, 63, +135, 90,173,198,245,235,215,241,205, 55,223,100,189, 44,178,156,157,157, 39,218,216,216, 44, 43, 42, 42, 90,157,158,158,190,190, +198,142, 95,177,136, 42,253, 92,186,175,116, 56,209,196,164,250, 84,102,201,242,114,147, 94,120,120,125,175,143, 45,247,152, 64, +226, 36,224,169, 50,194,250,174,115,231,254,109, 6,144,173, 54,127, 91,167,237,228, 5, 23,146,149,218, 70, 85, 89,182, 88,134, +105,101,105,101, 13, 32, 19,161, 15, 66,202, 68, 86, 78,110, 1,116, 6, 10, 58, 61, 1,173,129, 68,247,158,125,177,113,235, 31, + 72,205,204, 5,195, 48,205,222, 50,145,229, 16, 16, 16, 48,101,248,240,225, 88,190,124, 57,130,127,250, 73, 63,149, 32,148, 2, +128, 59,195, 48, 96, 57,142, 32, 77,115, 98,175,192,179,102,205,154,227, 0, 70,173,156,142,247,242,138, 48,206,125, 32,231, 80, +103, 96,241,137,195,230,113, 0,224,144, 21, 92,177,201, 12, 12, 12, 36, 74, 71,214,204, 29, 97,251,183, 67, 16, 24, 24,120, 53, + 40, 40, 8,229,247,213, 93, 96,237,210,168,255, 87,179,167,173,106,211,167, 19,161,152,221, 11,185, 74, 45,253,117,164, 65,156, +162,169, 94,100,149,199, 87,155, 54,225, 97,108,241,115,236,233,236,140,185, 31,125, 4,142, 6,110, 70, 68,226, 96,112, 48, 70, +246,236, 9, 75,169,212,100,203, 6,203,178,149, 90,177,202, 91,179,204,181, 58,229,231,231,227,240,225,195,104,219,182, 45,100, + 50, 25, 4, 2, 1,154, 55,111,142,168,168, 40,248,250,250,130, 32, 8,156, 56,113, 2, 67,134, 12, 65,124,124, 60,222,123,239, + 61,171,196,196, 68,179,133, 86,100,100,164, 13,199,113,157, 75,173, 31,181,133, 78,167, 67,116,116, 52, 6, 14, 28, 8,123,123, +123,120,120,236, 71,240,133,189,144, 5,124, 12,130,128, 89, 66,139, 97,152, 79, 6, 12, 24, 32, 34, 8, 2, 26,141, 26, 82,169, + 5, 44, 45,173, 96,109,109, 3, 63,191, 70, 72, 75, 75, 67,159, 62,125,244,113,113,113,155, 21, 10,197, 33,115,211,234,239,239, +111,153,144,144,240,113,157, 58,117,196, 0, 96, 97, 97,209,196,215,215,119, 78,124,124,124,161,185, 86,173, 82,129, 69, 16, 4, + 40,138, 42, 19, 90, 2,146,132,155,171,115,217,247, 18,255, 52,162, 26, 46,101,106,142, 78, 2, 0,222,222,222,216,184,237, 20, + 57, 96,192, 0,204,152, 49, 3, 70,163, 17,155, 55, 23, 79,178,251,240,195, 15, 97, 48, 24,112,244,104,241, 36, 73,129, 64, 80, +173,217,228,193,131, 7, 8, 13, 13,133,209,104, 68, 65, 65, 1,206,157, 59,135,171,215,174,225,192,137,203, 72,120,254, 12,205, + 27,249, 96,194,132, 79, 32, 20, 10,177,123,247,110,116,236,216,241, 31,125, 33, 8,133,194,209, 59,118,236,112,219,181,107, 87, +254,137, 19, 39, 84,239,190,251,174,100,221,186,117,206, 27, 55,110,148,235,245,122,204,156, 57, 51,243,206,157, 59,186,193,131, + 7, 91,110,223,190,221,173,126,253,250,189,104,154,174, 76,104, 89, 2, 24, 9, 96, 76, 94,161, 94,144, 95,168, 1, 75,235,241, + 60,225, 5, 10,138,244, 96, 25, 3,146, 82,210, 80,164,101,144,147, 91,136,230,173,122,255, 18, 18, 18,178,208, 96, 48,124, 13, + 32,168,166,116, 70, 68, 68,224,206,157, 59, 72, 72, 72,192,243,231,207, 43, 42,197,137, 19,241,199, 31,127,152,109,209,170, 92, +100, 81, 32,116,190, 8, 58,113, 55, 63,243,153,226,173, 17, 89, 37,239,160,165,110,110,110, 75,221,220,220,164, 23, 47, 94,180, +173, 83,167, 14,104,154,214,191,108,201,234,218,181,235,162, 29, 59,118,184,249,250,250, 78, 7,176,254,223,144,118,146,196,196, +213, 91,166, 56, 89,139,147,210,240,116,109, 73, 44, 65, 10, 80, 43,129,144,125, 16,116, 88,252, 98,250,224,121,246,243,119, 45, +159,200,130,173,114,134,108, 92,124, 50,182,108,217,136, 89, 51,199,225,247, 95, 87,131,101, 5,208, 25, 41,120,215,125, 23, 58, + 3, 11,130, 20,160, 69,171,214,184, 18,114, 29, 66, 18, 56,188,107,203, 91,166,179,144, 27, 30, 30,190,249,196,137, 19,159,207, +152, 49, 3, 44,203,138,151,109,217,162,201,202,202, 90, 1,243,226, 95,189,204, 51,100,203,150, 45,177,243, 55,102, 29,159, 53, + 26, 84,194,105, 34, 55, 52, 6, 14,195,230,113, 56,178,138,192, 59,141,144, 43,171,188,137,191,246,210,254,237, 16, 90,165, 74, +178,252,190, 50,180,106, 88,239, 91, 91, 7,251, 79, 72,107, 15,167,185, 51,166, 10,226,211,181, 56, 90,231,163,162, 63,247,108, +176, 76,167, 37,191,196, 65,187,206,156, 63, 62,248,231,159,101,159,127,220,191,191,210,223, 20,195,134,153,220, 51,171,202,138, +101,174, 37, 11, 0,100, 50,153, 93,175, 94,189,208,163, 71, 15,124,240,193, 7,101, 62, 89, 45, 91,182,196,129, 3, 7, 48,116, +232, 80, 60,122,244, 8,110,110,110,104,220,184, 49, 26, 55,110,140,179,103,207,154,251,146, 3,195, 48, 8, 8, 8, 40,157,117, +216, 60, 37, 37,197,166,182, 5,169,211,233,144,147,147, 3, 7, 7, 7,136,197, 98,180,107,215, 22,159,127,209, 14, 78,110,191, + 33,192,191, 17, 84, 42, 85,217,244,119, 19, 26,219,128, 6, 13, 26, 32, 43, 43, 11, 89, 89, 89,144,203,229,112,119,119,135,171, +171, 43,214,174, 93,203,173, 95,191,254,188,193, 96,216,156,157,157,109,182, 37,203,213,213,181, 19, 65, 16,139, 52, 26,141,184, + 92, 15, 87, 44,151,203, 79,106, 52,154, 21, 10,133,194,100, 71, 80,130, 32, 96, 48, 24, 64, 16, 4,206, 60,119,135, 74, 79, 64, +153, 18,138, 25,239,251, 84, 16, 94, 66,161,176,198,225, 82,142,227, 84,163, 70,141,114,246,242,242, 68,114, 92, 4,142, 28,225, +240,211, 79, 63,149,206,138, 68,108, 73,199,160,244,123,183,110,221, 80,183,110, 93,112,102,196,202, 96, 89, 22, 79,158, 60,193, +254,147, 87,225,230,227,143,164,167,209,120,120,246, 52,234,200, 29,208,180, 85,107, 24,141,198,215, 10,189,241, 38, 96, 52, 26, +119, 54,108,216,144,211,235,245, 87, 1,108, 12, 11, 11, 27,167, 80, 40,102,158, 58,117,202,125,248,240,225,105,167, 79,159, 94, + 7, 96, 87, 88, 88,216,148,239,190,251,174, 7, 77,211,149,206, 22,164, 40,234,247, 47,191,252,178,235,240,225,195, 9, 17,105, +212, 95,188,176, 91, 64,211, 70,226,171,175,119, 50, 33, 55,174,146, 52,109, 36, 62, 24,245, 37,123,246,207, 48,114,242, 23, 63, + 50, 45,223, 29,128,240,240,112,215,192,192,192,239,140, 70, 99,181, 66,171,212, 82, 85,149,133,146,162, 40,140, 27, 55, 14, 7, + 14,152,238, 65, 53, 1,240,181,241,177,186,243,195,166,158, 86,132,160,168,156,200,170,143,160, 19,119,243, 51,158,166,189, 85, + 34, 11, 0,114,114,114,182, 1,216,198,178,108,134,165,165, 37, 10, 11, 11, 43,171,127,210,176,176, 48,169, 88, 44, 70,239,222, +189, 29,130,131,131, 99, 73,146, 92,159,150,150, 86,165,226,168,108,152,176,178,225, 68,188,198,172, 67,123, 57, 2,219,117,106, +101, 29, 99,187,220, 90, 42,208, 62,170, 19, 43,181, 33, 0, 20,232, 92,158,223, 74, 28,169, 36, 50, 37, 45, 91,119,123, 7, 54, + 2,203,192,124,186,176, 82,161, 69, 82,212,195,130,188,252,126,202, 66, 61,110,220, 12,199,168,145, 13,160, 51, 16, 96, 89, 18, + 69, 42, 29, 64, 9, 65, 2,248,240,163,177,224, 8, 1,114, 51,210, 64, 81, 84, 24,104, 26,111, 25, 22, 76,153, 50,165,223,215, + 95,127, 93,111,238,220,185,152, 59,119,174,207,142, 29, 59,182,253,240,195, 15,115,179,178,178,154,161,134,224,227,213,240,212, + 57,125, 96,241,236,147,215,183, 22, 12,104,175,121,250, 78,163, 98,203,215, 59,141,144, 43, 20,226,153,128, 66, 14,199, 85,116, + 51, 10, 12, 12,236, 82,126,255, 31,195,203, 78,240,101,223, 77,242,209,106, 80,207,163,111,171,150, 1, 95, 44,252,122,161,117, +212,173, 16,204,255,118, 35,215,176,117,175,194,109,215, 31,234,139, 44,235,246, 43,202,126,118,211, 84,125, 1, 0,125,187, 15, + 69,243, 38,109, 95,249,177, 99,183,226, 96,237, 55,174, 60, 64, 70, 86,170,201,141,109,137, 56,168,212, 39,203,148, 41,253, 47, + 67,163,209,228,135,135,135, 59,167,164,164, 84,112,124,175, 91,183, 46, 8,130,192,221,187,119,113,231,206, 29,140, 26, 53, 10, + 2,129, 0, 66,161, 16, 87,175, 94, 53,203, 26, 83,206,186,244, 4,197,179, 14,251,120,122,122, 86, 53,219,176, 70, 46,141, 70, +131,130,130, 2, 92,184,112, 1, 13, 26, 52,192, 15, 63,252, 0,119, 55, 23, 44, 92, 56, 27, 44,203, 66,169, 84,130, 97, 24, 83, + 45, 90,108,169,181,136,101, 89,100,101,101,161, 94,189,122,216,180,105, 19,214,173, 91,247,157, 66,161, 56,101,110, 26,189,188, +188,236, 24,134,249,106,192,128, 1,189, 6, 15, 30,140, 62,125, 42,198, 99,221,183,111,159,245,209,163, 71, 87,108,216,176,161, +175,193, 96, 88,153,153,153,153,101, 10,239,111,191, 21,135, 95,146,189,187, 20,243,135,215,193,152,105,187,177,118,237, 49, 72, + 36,146, 10, 13,239,242,229,203,171, 21, 49, 44,199, 53, 20,101,223, 74,155, 61,111,141,243,138, 21,193, 8, 14,206, 4, 73,146, +112,115,115, 3, 73,146,120,241,226, 5, 72,146,132,143,143, 15, 72,146, 68,106,106,106,169, 79, 96, 30, 42,153,245, 88,121, 47, +156,132, 86,171, 69,114, 82, 2, 82,226, 98, 97,165, 76,135,220, 70,134,188,136, 39,104, 62, 97, 98, 89,252,167,127, 24,127,232, +245,250, 63,202,125, 95,115,250,244,105, 61, 65, 16, 31,160,216, 79,163,212,162,241, 29, 77,211,223, 85, 69,242,238,187,239,182, +252,250,235,175,133,165,225, 54,220,189,191,167, 13, 6, 3, 11, 0,141,154,119,174,160,246,159, 61,123,134,181,107,215, 66,165, + 82, 65, 36, 18,137, 76,185, 15, 44,203,150,205, 48,172, 76,132,153, 35,178, 0,192,209,199,243,151,187,161, 87,153,199,113, 91, + 53, 97, 49,231, 44, 20, 73, 36, 72,253,219, 43,178, 94,182,108,121,122,122, 46,101, 89,150,227, 56,110,113,185,159, 36,222,222, +222,215, 47, 94,188,232, 72,211, 52, 54,108,216, 96,151,158,158,110,215,185,115,231,249, 0,170, 20, 90,149, 13, 19, 86, 54,156, +136,114,179, 14, 37, 18,137,131, 94, 95,165,241,228,149, 89,135, 12, 3, 63, 27,107, 59,228, 33, 5, 58, 39, 99,203,124, 71, 58, +247,146, 98,226, 35,247,196, 86, 77, 44, 25, 99, 61, 82,169,135,135,204, 14, 44,199, 85, 57, 53, 90,103, 52,158,123, 20,250,176, +183,183, 87, 3,234, 84,208, 53, 12, 26, 50, 28, 58, 29, 9,173,145, 0, 65, 9, 65, 80, 34, 52,107,222, 10,141,155, 54, 7, 7, +224,193,189, 91,180,222,104,188,244, 54,149,189, 91,135,207, 71, 17, 4,214,131, 99,185, 74,226,104,213, 27, 50,100,200, 10, 0, + 95,212,196,227,252,238,231,163, 72,178,152,167,124, 28,173, 47, 63,159,130,136,123, 66,219,107,161,171, 68,125,222,197,153,172, + 96, 2, 50,233,255,102, 29, 10,201,215, 10,205,241, 95, 17, 92, 53, 11, 45, 47, 47, 47, 59, 27,137,244,183,207, 38,124, 98,157, +248,248, 54,210, 35,239,226,230,181,216,188,131, 71,143,229,170,114, 50, 39,152, 33,178,202,134,249, 28, 93,235,160,174,255,171, + 66, 75,106, 37, 7, 0,212,245,111, 11,202,210,214,220, 33,143, 87,172, 89,181, 17, 89,229, 95,216,149,197,208,154, 60,121, 50, +118,236,216,129, 14, 29, 58,160, 97,195,134,101, 47,123,115,173,102,149, 88,151,204,158,109, 88, 30,133,133,133,240,241,241,193, +246,237,219, 17, 22, 22, 6,107,107,107,140, 26, 53, 10,133,133,133,101, 2,203, 84,103,120,142,227,158, 93,188,120,177,205,136, + 17, 35, 56,161, 80, 72,228,231,231,195,206,206, 14,155, 54,109, 82, 41, 20,138, 51,181, 16, 89,195, 69, 34,209,236,145, 35, 71, + 82,141, 26, 53, 66, 70, 70, 6,108,108,108,140, 4, 65, 8, 1,192,206,206,206,104, 97, 97,129, 41, 83,166,160, 69,139, 22,157, +230,206,157,219, 65, 32, 16,108, 74, 75, 75,219, 93, 93, 93, 34, 8,162,172, 65,157,176, 62, 26,122,125,113, 3,189,121,243,102, +148,248,186,253,111,136, 32, 46, 14, 48, 97, 38,139,149,149, 21, 26, 54,108, 88,105,217,119,234,212, 9, 15, 30, 60, 40, 30,154, + 20, 8,224,236,236,140,155, 55,111,154, 52,147,170, 52, 16,100,120,120, 56,252,235, 58, 33, 44,248, 34,156,100, 66,180,112,119, +133,103,167, 46,136,141,141,253, 39,173, 89, 4,138,253, 48,122,150,212,193,157, 0, 38,151,251,190, 9,192, 47,230, 16,210, 52, +205,145, 36, 73, 36, 39, 39, 27,100, 50, 25,225,224,224, 32,144, 72, 36,208,233,116,101,130,235,217,179,103, 8, 10, 10, 66, 74, + 74, 10, 28, 28, 28, 72, 91, 91, 91, 24, 12,134, 60, 83,248,253,252,252,224,234,234, 90,193,241,125,194,132, 9,181, 18, 89,227, +128,128, 29,223,175,172, 35, 33, 41, 91,127,167,190,120, 30,253, 66, 75,234, 33,253,255, 32,178, 0, 32, 63, 63,127, 27,128,109, +165,223,157,156,156,198, 83, 20,181, 80,167,211,217, 94,189,122,213, 78, 46,151, 19,187,119,239, 54, 46, 94,188, 56,159,162,168, + 60,130, 32,126,254,231,197, 33, 34,179, 11,226,124,132,246,238,236, 99, 45,119,107,102,242,252,198,121,194, 6,114,162,105, 0, +134,100, 70,221, 24, 79,199,181,207, 80,164,147, 28,216,200,106,222,193, 59,231,127,189,252,171,216,232,135,222, 82, 27, 41, 38, + 79,249, 26,103,206, 95, 1, 65, 10,113,253,214, 93,232, 13, 12,178,115, 11, 48,242,195,209,240,116,115, 66,228,157, 11, 89, 52, +203,110,122,187, 68, 54,187,177,247,160,241,246, 18, 11, 89,201, 61, 97,240,199,175,179, 65,146,235,177,100,201, 18, 4, 4, 4, + 76, 11, 15, 15,255, 6, 53,196,209, 34, 8,118, 99,179, 46, 31,218,139, 36,197, 60, 28,203, 96,251,225,249, 37,113,180,102, 97, +211,182,163,205,154,214,125,190,172,186, 56, 90,111,145,200, 42,191,175, 94,104,249,248,248, 72, 44,133,152, 36,164, 4,115, 63, +251,104,176, 60, 51, 46, 2, 41, 81, 15,139,135, 23, 12, 26, 67,250,211, 40, 83, 66,161,247, 68,197,248, 29, 92,117, 67, 87, 90, +173, 73, 61,250, 10,156,165, 13,238,203,214, 44, 51, 69,214, 43,156,229,197, 86,249,184, 89, 94, 94, 94, 88,177, 98,133, 41,113, +180, 94,206,123, 41,250,160,216, 1,190,188, 51,124, 31, 19, 69, 86,165,156,114,185, 28, 57, 57,197, 17, 18,186,118,237,138,174, + 93,255, 55,159,193, 96, 48,148, 89,177,172,173,173, 43,179,104,189,194,105, 97, 97, 49,255,216,177, 99,159,220,186,117,107,196, +156, 57,115,132, 61,122,244, 40, 21,115,106,152,182,182, 91, 5, 78,134, 97,166, 92,184,112,129, 98, 89, 22,219,183,111,199,131, + 7, 15, 56,153, 76,182, 72, 38,147,109,180,176,176, 96, 52, 26,205,228,137, 19, 39,142, 94,182,108, 25,217,169, 83, 39,220,190, +125,155,172, 87,175,222, 88,160, 66, 16,203, 74,243,126,247,238, 93,144, 36, 9, 58, 55, 9,211,230, 31,132,165,133, 0,209,209, +209,200,205,205,125, 37,136,169, 41,247,179,188,165,164,116,235,212,169, 83,217, 48,100,187,118,237, 64, 81, 20, 30, 61,122, 84, +213, 48,108,121, 78,206,209,209,177,172,126,136, 68, 34, 92,185,114, 5,223,126,251, 45,188, 29,236,144, 23, 21, 6,215,174,221, +209,235,147,137, 24, 53,106, 20, 40,138,130,131,131, 67,153,229,215,132,186,244, 58, 40,207,249,137,191,191,255,216,200,200, 72, +207,102,205,154,185,133,135,135,119, 11, 8, 8,240, 9, 11, 11, 43,253, 46,129,105,190, 57,101,156,247,239,223, 63,178,113,227, +198, 41,227,198,141, 19,177, 44,203, 36, 38, 38, 26, 1, 16,174,174,174,212,253,251,247,217, 83,167, 78, 65,163,209,192,211,211, +147,244,240,240, 32, 46, 93,186,196, 70, 69, 69,221,229, 56,238,107, 83,242,206, 48, 76,133, 48, 14,165,159,247,237,219,103,246, +243, 94,167,177,223, 15, 61, 58, 55,242,202, 78,123, 4, 69,106, 28,152, 2,185, 33,232,196,105,157,153, 34,235,175, 46,163,191, +147,115,249,211,167, 79, 61,116, 58, 29,196, 98, 49, 54,111,222,108, 88,177, 98, 69,100,118,118,118, 71, 84, 62,163,188, 2,103, + 45,103, 29,230, 86,195,249,202,172,195,130, 28,156, 57,113,242,126, 27,171, 33, 59, 49, 45, 45,171,204,177,145, 35, 8,135, 99, + 46, 77, 58,202,218, 54, 75, 37,207, 46, 37, 11, 25,245,153,106,242,174,215,232,245,195,135, 12,253,240,242,129, 3,251,173, 22, + 47, 93,138,155,119,195,144,147, 95, 4,150,163,192, 18, 4, 22, 46, 92, 12, 87, 39, 7, 40,211,158,170,117, 6,195, 16, 84,140, +161,245,159, 47,119,130, 32,167, 95, 58,181,123, 61, 73,128, 85,101,196, 72,168,194, 56,217,152, 81, 67, 4,195,135, 15,199,177, + 99,199, 16, 30, 30,190,181, 26,145, 85,198,201,113,228,244,176,171, 7,215, 19, 0,171,201,138,145, 8,138,158,203,198,126, 52, + 68, 48,106,212, 40, 28, 15,186,133, 3,167,159,111, 57,112, 26,167,241,118,195,252,200,240,214, 2,132,119,108,226,235,209,169, + 85, 83,169,128,209, 32, 37, 42, 14,185, 42, 45, 46, 69, 36,230,147, 28, 89,235,216, 58,197, 47, 72, 17,146,146,158, 86,210,179, +146,150, 52,232, 90,179, 56, 73,146,172, 96,205,122, 29, 75, 86,249,116,186,184,184, 84, 88,206,165,124,195, 93,234, 3, 84,139, +208, 14,243,147,146,146,108,146,146,146,192,113, 28,238,222,189,107,211,174, 93,187,249,175, 99,205,154, 61,123,118,153,213,234, +229,125,101,199,106, 66,137, 83,250, 58,163,209,120,120,238,220,185,211,218,181,107,215,123,233,210,165, 4,204, 88,128,247, 37, +107, 14,205,178, 44, 66, 66, 66,112,236,216, 49,198, 96, 48, 76, 82, 40, 20, 97,229, 78,217, 16, 26, 26,122,105,232,208,161,187, + 99, 98, 98,168,200,200, 72,112, 92,205,243, 78, 53, 26, 13, 26, 54,108, 8,154,166,177,106,154, 23, 10, 11,155,129,166,105, 48, + 12, 3, 75, 75,203, 50, 43, 94,121,241, 92, 83, 61, 98, 24,230, 21,161,117,247,238, 93, 80, 20,133,142, 29, 59,226,225,195,135, +101, 22,173,154, 44, 80, 6,131, 33,201,197,197,197,101,249,242,229,101,233,202,202,202,194,197,139, 23,241,238,123,237,209,100, +210,100,164,165,165,225,231,159,127,134,187,187, 59,126,248,225, 7,228,230,230,130,166,233,191,219,156,222, 47, 50, 50,210,243, +163,143, 62,202, 12, 11, 11,243, 12, 10, 10,178, 11, 12, 12,180,252,240,195, 15, 51,195,194,194, 60, 9,130,104, 15, 51,157,160, + 89,150, 93,176,112,225,194,243, 63,252,240,195,252, 47,190,248,162,221,184,113,227,132, 66,161,144, 77, 77, 77,165,247,239,223, + 79, 52,108,216,144, 20,137, 68,196,133, 11, 23,216,123,247,238,221,161,105,122, 21,128,235,230, 88,156,203,139, 44,138,162, 76, + 21, 89, 21, 48,211, 89, 50,214,154,204,234,184,113,243, 10,178, 81, 93, 79,195,158,253, 23,147,175,223,126, 26, 79,233,232,153, +191, 85, 19, 26,224,109, 6, 69, 81,135,252,253,253,199, 79,159, 62,221,162, 79,159, 62,146,101,203,150, 21, 20, 22, 22, 86, 37, +178, 42,233, 48,255, 45,179, 14,127, 93, 48, 39,104,230,151,205,198,251,126,234, 90, 7,193,170, 76,228, 9, 40,210,198,142, 68, + 43, 31, 10,133,217,207,228,167, 47,239,122, 1,160,166,184,108,247, 67,159,132,247,108,218,172,229,209, 85, 63,172,114, 94, 52, +111,174,240,104,208, 57,112,180, 1,119,175, 94,133,149,136,225,162, 66,131, 51,116, 6,253, 96,188,133, 75,240, 40,110,254,114, + 0,192, 73, 7, 7,135,199,159,140, 27,215,208,223,255, 67,200,100, 50, 28, 57,114, 4,127,108,216,192,172, 3, 70, 72,128,135, + 83,106,136,167,151,121,167,140,231,209,196, 79, 62,241,107,213,234, 83,200,100, 50, 28, 62,124, 24,187,215,173, 51,153,231, 63, +142,210,200,240,103,240,191, 8,241, 53,248,104,145, 68,225,157,167,137, 69,119,159, 38, 22,129,229, 56,150,227,116, 36,137,100, +149,193,240,195,211,231,169,181, 18, 5,165, 67,135,223,125, 63,253,205,141,121,148, 19, 63,181,157,210, 93,137,200, 74, 41,191, + 70, 90,249, 70,186,170,207, 70,163, 49,197, 68,250,149,222,222,222,175, 28,171,189,233,151, 51, 75,100,153, 26, 71, 11, 0,114, +114,114, 20, 0, 22,221,190,125,123, 95,239,222,189, 39, 2, 72,173,101, 25,109,239,210,165,203, 36, 0, 20, 65, 16, 91,211,210, +210,194, 94,121,224, 21,138, 88,119,119,247, 31,235,214,173, 59,185,184, 99, 74,108,175,161, 33,127,222,172, 89, 51, 67,101,101, + 81,213,119,150,101,107, 44,163,252,252,124,180,109,219,246,149, 53, 45, 57,142, 67, 98, 98, 98,169,197,169,236,222, 87, 39,224, +138,138,138, 38,127,254,249,231,219,132, 66,161, 55, 0,162, 84,228, 50, 12, 67,253,242,203, 47, 82,134, 97, 40, 0, 4, 73,146, +180, 80, 40,212, 30, 59,118,140,166,105, 58, 73,167,211, 77,254,155, 95, 16,135,137,226,165, 24, 84,145,145,145,141, 74, 44, 89, + 41,225,225,225,143, 14, 28, 56, 32, 7,112,176,150,188,215,213,106,245,245, 21, 43, 86,116,218,188,121,243,130,201,147, 39,183, + 29, 53,106,148,160,107,215,174, 56,115,230, 12, 19, 18, 18,114, 87,163,209,172, 52, 71, 96,149,148,101,129,151,151, 87,153,224, +170,225, 89,174,214,145,215,209, 71,178,113,244, 84,119,233,246,149, 23,139,178,211,244,183,140, 69,250,175,119, 1,225,248,127, +140,140,140,140, 57, 0, 22,255,252,243,207,105, 45, 90,180,144,136, 68, 34,189,169, 34,235,111, 4,205,230, 23,245,255,169,215, +176,147, 93, 22,126, 94,183, 87,183,142, 50,175, 58,206, 30, 81,113, 25,120,118,251,140,234,241,233,239, 19, 56, 93,222, 32, 0, +166,120,174,223,211, 25, 12, 13,102,207,157, 61, 77, 44, 20,246,102, 24,166,121,143, 75, 39, 56,138,162,194,244, 70,227,165,146, +225, 66,237, 91, 92,228,223,253,248,227,143, 13,253,253,253,113,228,200, 17, 92,218,187, 23, 35,179,179,113,133,162, 40, 82, 36, +114, 60,109, 48,172,129,105, 2,233,187,181,107,215,250, 5, 4, 4,224,208,161, 67,184,176,123, 55, 70,212,142,167,170,182,174, + 13, 0,121,201,215,108, 0, 49, 0,222, 1, 96, 1, 64,135,226,165,157,156,202, 55, 97, 37,191,149,254,126,141, 32,136,191,210, + 17,182,230,200,240, 47, 35,252, 89,194, 59,111, 58, 21, 26,141, 38,183, 97,195,134,102,205,185, 54, 26,141,213,142,225,210, 52, +157,226,235,235,107,178,213,194, 20, 81,148,155,155,219,250, 47, 44,140,215,242,197,170,208,136,176,108,130,155,155, 27, 91,218, +232, 87, 38,194, 42, 59,198, 1, 47,204,249,159,244,244,244, 24, 0, 95,214, 54,157,105,105,105, 71, 97,194,162,209,166,158, 7, + 0,121,121,121,111,124, 49, 95,130,227, 82,151, 45, 91,102,150,192, 6,199, 85, 39, 62,195,138,138,138,218,153,242,223, 6,131, + 1,255, 32, 14,149,108,100,120,120,248, 68,130, 32,250,160,120, 72, 96, 43,222, 76, 52,239,235, 74,165,242,250,234,213,171, 59, +109,223,190,125, 38,199,113, 80, 42,149,235,204, 21, 88,101,189,231,204,204, 51,111, 42,227,185, 25,250, 63,247,111, 77,233,174, +201, 55,204,220, 81,164,223, 13, 30,101,198, 40,142,227,126, 31, 51,102,204,187, 0,118,189, 46, 89, 21,179, 14, 95, 23, 47,216, +188,130, 22, 87,102,127,251,201, 21, 59,235, 1, 96, 4,141,160, 39, 79, 67,159,115, 6,192,111, 48,205,205,161, 44,191, 52,203, +174,165,245,250,181,229, 26,151,255, 15,229,236, 16, 16, 16, 48,115,252,248,241, 88,188,120, 49, 46,172, 89, 99,152, 74, 16, 5, + 66,128, 59, 95,220,209, 36, 9, 96,158,169, 60, 99,199,142,197,226,197,139,113,118,213,170,218,242, 84, 7, 57, 65, 16, 65, 0, + 48,127,254,252,175, 87,172, 88, 97,191, 96,193,130,230, 43, 87,174,252,161,228,123, 68,233,239, 37,109, 93,224,130, 5, 11,154, +150,251,189, 16,192,253,191,248,126, 86, 26, 25,254,175, 70, 79,158,147,231,228, 57,121, 78,158,147,231,228, 57,121,206,215, 1, +199,113, 3,138,119, 85,239,171,250, 92,110,143,191, 57,205,197, 19,161,248,142, 27, 15, 30, 60,120,240,224,193,227,191,136,242, + 86,172,218,252,254, 6, 81,234,163, 85, 30,219,129,226,105,221, 85,169, 82,115,102, 61,212, 70,217, 6,243,156, 60, 39,207,201, +115,242,156, 60, 39,207,249,255,142,179, 38,238, 87,174,231, 56,110, 0, 65, 16, 65, 28,199, 5, 86,181, 47, 21, 86, 47,127, 46, +183,127, 99,110, 7,149,160,212, 55,171,204, 71,235,239, 10,217,195,155, 85,121, 78,158,147,231,228, 57,121, 78,158,147,231,124, + 45,148, 14, 1, 2,224,230,207,159,191,224, 95, 56,116,232, 86, 34,178,202,182, 26,135, 14, 57,238, 48,149,154, 10, 27,177, 88, + 38, 2, 0,189, 94,109,240,240,128,146, 32,134,255,147, 11,222,242,248,111,162,116,186,119,198, 27, 62,151, 7, 15, 30, 60,120, +252,255, 64, 86,169,165, 10, 64, 22, 0,162,228,187,190,100,159, 85, 34,200, 94,254, 92,225,247,191, 16, 10, 84,225,252, 46,168, + 74,100,101,103,203,156, 4,130, 60, 63,134,209, 54, 6, 0,129,128,140,206,206,182,143,229,184,195,217,181, 17, 91, 78,206,206, +161, 66,138,242, 48,229, 92, 35,195,164,102,103,100, 84, 12, 29, 79, 16,111,131,192, 51, 85, 68,188,142,216,248,203,133,138,147, +147,147,139,139,139,203,251, 54, 54, 54,239,229,231,231,223,203,202,202, 58, 94,205,186,135, 43, 8, 2,115,139,235, 21, 86, 3, + 88, 80, 13,181, 57,231,190,140,134, 50,153,108, 26, 65, 16, 1, 37, 15, 88,184, 90,173,222, 12,224,233,255,195, 23,146, 5,128, +193, 2,129, 96,172,147,147, 83,219,244,244,244,101, 0,106, 27,205, 91, 0, 96,182,157,157,221, 72, 59, 59, 59,223,220,220,220, +120,165, 82,121, 8,192, 90, 0, 53, 78,149, 94,246,133,219,123, 93,251,116, 93, 20,114, 33,228,187,101, 27, 20,183, 95,249,125, +182,155, 99,239, 94, 29, 22,135,156,190,181,252,235, 77,105,185,102,166,141, 44,217,128,226,217,145, 28, 94, 13,246,250,186, 16, + 2, 24, 8,160, 43,128, 16, 0,167, 77,201,119, 21,120, 23,192,215, 37,105, 94, 11,224,202,191,188, 30, 89,186,184,184,172, 2, + 48, 80, 32, 16, 68,166,166,166, 78, 2,144,242, 15,167, 73, 0,160, 13,128, 0, 20,135,225,184, 15,211, 66, 56,212, 8, 71, 71, +199, 64,129, 64, 48,173, 36,180,203,230,156,156,156,160,127,107,193,136,197,226,117,174,174,174,159,106, 52, 26, 53, 65, 16, 92, +249,120,143, 52, 77,167,100,103,103,183,126,219, 94,106, 4, 65,220,255,151, 39,113, 82, 37,199,170,142,163,149,154, 10, 27,129, + 32,207, 47, 51, 61,108,100,154,226,201, 8, 0,112,119,107,126,200,217,181,217,193,212, 84,177,193,181,209, 16, 43,161, 76,176, +153,162,132, 45,181,122,157,147, 80, 32,204, 54,208,198, 71,164,158,155,150, 30,115,188,210, 96,139, 66,138,242, 72,136,189,226, + 76, 27,114, 33,148,186, 67,104,225, 93,101,106,221,221,221,107,149, 75,123,123, 95,107,131, 68, 58, 83, 40,164,122,177, 28, 29, +192,177, 0, 73, 8,195,105,198,120, 89,164,211,253,148,151, 23, 95, 88,219, 59,216,200, 17,174, 28, 48, 10, 4,122,129,195, 37, + 2, 56, 16,147,131,116, 51, 40, 76, 21, 17,175, 35, 54,202, 95,251, 51,128, 57,111,186, 38,121,120,120,216, 7, 6, 6,174,251, +246,219,111, 45,172,172,172,136,164,164,164, 62,243,230,205,235,252,224,193,131, 47, 83, 83, 83,211, 94, 22,125, 4,129,185, 44, +203,145, 0, 64,146,196, 60,185,220, 89, 70, 81,212, 43,177,141, 24,134,145,101,101,101, 78,103, 89,142, 40, 57,119, 46,199, 97, +189, 41,130, 81, 42,149,126, 24,208,172,229,151,171,126, 92,107,229,226,236,108, 73, 51,172,225, 69, 98,130,108,209,252, 57,237, +226,158, 61, 93,175,213,106,247,215,230,185,166, 40,106,164, 68, 34, 9, 4,224, 95,114, 44, 74,167,211, 5, 49, 12,115,208,212, + 6,221,197,197,229, 26, 69, 81,117,204,249, 99,134, 97,146, 50, 50, 50, 58,214,178,136,134,123,123,123,255,214,165, 75, 23, 89, +219,182,109, 33, 22,139,177,120,241,226,217, 10,133,162, 38,161, 37, 0, 48, 91, 38,147,141,180,180,180,244, 45, 42, 42,138,211, +104, 52, 71,197, 98,113,207,245,235,215,123,117,232,208,193, 58, 35, 35,131,160, 40,202,229,236,217,179, 31,175, 91,183,174, 15, + 77,211, 61,106,106,228, 10,226,184, 69,146,129,254,157, 10,226,174, 44, 2,208,239,229,223,105,173,116, 44, 71,121, 5,106,184, +135,201, 37,226,195,100,145, 37, 20, 10,215,187,186,186,142,215, 22,199, 10,224, 94,110,112, 0, 64,175,215,231,229,231,231, 55, +170,205, 35, 15, 96,130,157,157,221,248,175,190,250,202,190, 95,191,126,216,187,119,239,103, 59,118,236,200, 83, 42,149,191,163, + 56, 16,102,140,153,156,115,211,211,211,251, 11,133, 66,194,203,203,139,210,104, 52,230, 8, 45, 63, 20, 47,194,124, 31,192,102, + 20,135, 46,232, 6, 20, 63,239, 0, 86,151, 10, 55,146, 36, 55, 55,106,212,232,253,168,168,168, 45, 0,190,171,237,179,238,234, +234,186,109,211,166, 77, 35, 6, 13, 26, 68,101,101,101,121,180,104,209, 98, 95,122,122,122,167, 55,240, 26,249, 68, 34,145,204, +106,222,188,121,147,152,152,152, 88,165, 82,185,182,228,126, 86,247, 76,121, 2,232,105,103,103,215, 99,225,194,133, 86,129,129, +129,216,190,125,123,255, 29, 59,118, 20, 21, 22, 22, 94, 70,177, 79,207,107,137, 64,129, 64, 48, 45, 37, 37,197,137,227, 56,184, +185,185, 77, 3,240,175, 20, 90, 36, 73,174, 31, 58,116,232,248,125,251,246,201, 18, 18, 18,100, 30, 30, 30,101,193,179, 9,130, +168,117,251,201,227,181,177,189,156,224,170, 57,142,150, 88, 44, 19, 49,140,182,113,154,226,201,136,206, 93,126,177, 5,128,107, + 87, 63, 31,225,236,218, 52, 92, 44,150,197, 74,108,164,199,134, 14,236,217,114, 88, 96, 23,194,211,205, 25, 41,138, 76,151, 95, + 15, 92,232, 27,116,225,202, 49, 20, 7, 16,171, 20,180, 33, 23, 22,134, 96,196,220,216, 0,167,174,105,216,120, 54, 5,183, 31, +191,128,186, 32, 27,117, 92, 45,240,227,204,222,112,181,151,213,174,235,229,220,176, 27, 45,144, 28,252,232,195, 49,182,239, 15, +246, 23,250,184,186,130,227, 36,136,141, 43,106,127,238,226,149, 54, 71, 15,239,159,102, 41,108, 56, 82,149,249,212,228,151, 91, + 43, 55, 88,168, 12, 24, 44,160,136,143, 59,180,110,210,227,195,254,157,200, 38,254, 13, 16, 25, 17,213,251,228,159,119,127, 36, +111, 69, 92,166, 25,110,143,165, 8, 39, 30, 42,170, 13,232,247,138,224,232,209,163,103, 39,137, 68, 82, 33,120,146, 78,167, 19, + 93,190, 28,252,110,109,196, 70,233,127,232,245, 58, 82, 40, 20,131, 36,137, 47, 3, 2,154,249,103,103,103, 95, 33, 8,226,183, +180, 52,243,172, 5,159, 3,226, 60,129,224, 29, 82, 34,113, 99,244,122, 71, 0, 32,196,226,188, 23, 36,217,108,225,215, 95, 91, + 81, 20,197,230,228,228, 64,173, 86, 19, 19, 39, 78,148,198,197,197, 13, 77, 77, 77,221, 80, 67,143, 4, 59,118,236,240,115,115, +115,123,101,245, 88,133, 66, 33, 30, 52,232,253,218, 20,189, 95,243, 22,173,102, 93,184,112,222, 95,153,155,167,221,241,243,182, + 80,163, 84,166,171,231,223, 72,184,121,251,110,219, 73,227, 71,127, 30, 29, 29,241, 8,230,173, 87,231,109, 97, 97,113,108,205, +154, 53, 1,221,186,117, 19, 58, 59, 59, 35, 35, 35, 3, 81, 81, 81, 1,127,254,249,231,224,221,187,119,207,214,104, 52, 67, 1, +147, 22, 68,109,120,121,207,111,206,150, 14,142, 96,140, 70,184, 55,111, 85,230, 32,249,236,207,139,160, 13, 6,176, 70, 35,252, + 3, 7,151, 88,147, 57,248,251,251,215, 54,234,174,123,211,166, 77,255,248,225,135, 31, 68, 58,157, 14,119,239,222,197,149, 43, + 87, 88,133, 66, 81, 83, 64, 92, 1, 65, 16, 23,151, 46, 93,234,217,177, 99, 71,235,236,236,108, 48, 12,227,116,226,196,137,105, + 45, 91,182,180,241,242,242, 18,239,217,179, 7, 69, 69, 69,160,105,218,193,215,215,215,225,195, 15, 63,212,239,217,179,103, 54, +128, 85, 85, 89,178,148,113,220, 34, 5,225,219,183,209, 59, 99,145, 78,156,239, 59,171, 47,206,217,212, 39,202, 44, 91,125,125, +125,173,149,169,178,121, 86, 54,205, 28,148,169,193,243,250,250,250,238, 56, 31,111, 82,103,136, 44,105,108, 62, 58,112,224,128, + 44, 42, 42, 74,230,239,239, 15,150,101,203, 34,240,151, 6,156,109,216,176, 97,109,238,227,202, 41, 83,166,204, 27, 49, 98, 4, +154, 55,111, 94, 22, 20,117,201,146, 37,152, 55,111,158,253,181,107,215,102,239,223,191,127,246,241,227,199, 87, 1,152,111,166, + 53,166, 20,230,150,241, 55,207,159, 63, 31,126,236,216,177,209,115,231,206,109, 8, 96, 58,128,197, 57, 57, 57, 93, 74,172, 49, +226, 18,161,245,201,236,217,179,167,206,159, 63, 31,253,251,247, 95,124,247,238,221,239,107,105,229,163,104,154,238, 63,104,208, + 32,202,104, 52,194,210,210, 18, 70,163,177,254,235, 26, 37, 0,108,154, 60,121,242,212, 41, 83,166,192,222,222, 30, 70,163,209, +239,192,129, 3, 59, 22, 47, 94,252, 30,128, 9, 85,164,117,236,212,169, 83, 63, 24, 51,102, 12, 90,183,110, 13,129,160,248, 54, +174, 89,179, 6,203,151, 47,183,186,120,241,226,224, 61,123,246, 12, 62,121,242,228, 81, 84, 92,182,203, 44,176, 44, 11,129, 64, +128,228,228,100, 56, 59, 59, 75, 88,150,189, 64, 16,196,246,220,220,220,227,255,162,198,124,245,240,225,195, 63,218,183,111,159, + 21, 0,252,248,227,143,152, 53,107, 22, 92, 92, 92, 96,101,101,197, 75,157,127,143, 69,107, 82,141, 22,173,154,160, 86,171, 91, + 45,248,226, 99,144,100,113,175,177, 65, 61,111,172,248,122, 18,113, 50,232, 66,171,106,109,240, 82,119,196,220,216, 0,137,215, + 76,232,140, 52,238, 60,126,142, 75, 63,246, 41,110, 45,251, 45,132,206,208,163,180,177,113, 16, 91, 88,172,214, 51,204, 77,184, +186,222, 69, 98, 98, 86, 77, 34, 75,238,234, 18,180,117,235, 42,139,128,250,141, 96,160,141, 72,205, 76, 5, 65, 72,224,233, 97, +141, 79,198,246, 19,118,233,226,238,244,205, 55,219,206,164,179, 24,162,206,126, 90, 99,192, 80, 63, 39,236,106, 21,208,112,196, +135, 3, 58, 74,154, 5, 52,133, 72, 98, 81,246,219, 59,173, 91,227,157,214,173,201,249, 69,133,189,238,221, 15,237,117,228,226, + 29,157,218,152,120, 40, 54, 27,227,106,120,201,148, 9,142, 25, 51,102,192,197,197,165,194, 9, 25, 25, 25,248,243,207,203,149, + 94, 99,198,139,172,236, 63,190,255,254,123,235,188,188,188,126, 59,119,238,236,206,178,236,247,233,233,233, 55, 76, 33, 25, 3, +212, 41,144, 72,122,140, 95,187,150,109,249,254,251,148,157,171, 43,201, 50, 12,145, 22, 31,239,248,243,134, 13, 93,115,159, 61, +179, 80, 57, 56,228,230,105, 52,234,216,216, 88, 72,165, 82, 66, 32, 16,180,169,132, 42,131,227,176,154, 36,137,121, 4, 65, 64, + 34,145,198, 78,153, 50,229, 97,201,111,117, 78,159, 62, 45, 27, 56,112,160, 26, 64, 2, 0, 72, 36, 82, 15,138, 34,253,138, 29, + 8,177,218, 20,129,105,105,105,249,197,119, 63,172,178, 84,230,230,107, 12, 42,149, 81,110, 99, 69, 16, 86,214,148,178,160,176, + 48, 85,145,165, 91,184,108, 57, 53,249,147, 49, 95,168, 84,170,105,166,138,172, 22, 45, 90,220, 59,118,236,152,179,163,163, 35, +242,243,243,145,147,147,131,123,247,238,129,101, 89, 12, 29, 58, 84,210,190, 93,219, 86, 95, 47, 92,116, 59, 57, 53,245, 61, 83, +196,150,165,131, 19,126,236,216,178,184,177, 78,200, 41, 43,159,237,195, 3,203,206, 89,158, 82, 80,106,157,123,157, 37,164,222, +235,209,163,135, 8, 0, 38, 76,152,160, 44, 44, 44, 92, 1, 96, 31,106,142,232, 63,123,209,162, 69, 30,245,234,213,243,217,183, +111, 31,138,138,138, 0,192,185, 94,189,122,240,243,243, 99, 66, 66, 66,224,231,231, 7,107,107,107, 92,187,118, 13,183,111,223, + 70,235,214,173,173, 69, 34,209, 8,131,193, 80,169,208,234,218,167,235, 34,201, 64,255, 78,141,222, 25, 11, 43, 27, 55,236,216, +127, 16, 49,161,187, 59,233, 12, 81,139, 68,204,213, 49, 26, 78, 50, 46, 43,201,106,126,157,214, 93, 28, 27, 52,125, 31, 62,239, + 60,116,210, 50,215,159, 47,234, 85,111,165, 64,170,221,189,108,173, 34,167, 42,145, 5,224,199,161, 67,135, 14, 63,112,224,128, + 29, 0,132,133,133, 33, 35, 35, 3,114,185, 28, 82,169, 20, 66,161,176,108,125,210, 90, 98,220,230,205,155,203, 68, 27, 77,211, +101,171, 0,200,100, 50,116,238,220, 25, 45, 91,182,196,241,227,199,199, 85, 33,180, 58,182,107,215,110,175,143,143,143, 87,249, +131, 42,149, 10,163, 70,141, 2, 0,116,233,210,165,135,133,133, 5, 87, 42, 8, 21, 10, 69,209,253,251,247,123, 1,184, 91,133, +178,212,164,166,166,226,171,175,190,194,139, 23, 47, 62,219,186,117,107, 34, 0,169, 88, 44, 46,235, 31, 3,240,107,218,180,233, +250, 89,179,102, 33, 46, 46, 14,145,145,145,247, 80,251,161, 84,198,210,210,242,153,209,104,108, 77,211, 52, 52, 26, 13,134, 12, + 25, 34, 61,122,244,104, 6, 69, 81,209,217,217,217,163, 81,236,147, 98, 42,164, 0,214, 78,153, 50,101,234,220,185,115,113,249, +242,101,156, 60,121, 18, 99,198,140,193,204,153, 51, 97,101,101, 53,126,230,204,153,183, 81,188,160,249,203,232,177,121,243,102, + 48, 12,243,202,179, 33,149, 74,209,177, 99, 71, 52,105,210, 4, 39, 79,158,236,241, 26, 66,203,167, 99,199,142, 98,150,101,161, + 82,169, 16, 18, 18, 98,101, 97, 97, 97,229,233,233, 57, 17,192,191, 70,104,249,248,248, 76, 57,112,224,128, 85,249,209, 31,137, + 68,130,114,245,128,199, 63,111,209,170,182,135, 85, 6,189, 94,109, 16, 8,200,104,119,183,230,135,174, 93,253,188,108,232, 16, + 32,163,245,122,181, 1, 0, 24,150,131, 82, 77,195, 66, 66, 34, 33,189, 16, 17,241,217,149, 81, 85,152,162, 41,180,240,134,164, +109, 2, 56,142,131,222,192, 64, 87,144,142, 21,103,212,136, 74,209, 66,175,202,131,222, 80,236,134,229,228,228, 36,184,112,225, +220,172,224,224, 63,167,254,254,251,239, 84,138,173,109,100, 33,208,170, 50, 78,123,123, 95,107, 86, 44, 62,180,101,235, 98, 11, +142,138, 71,108,146, 10, 13, 60,219,194,201,206, 11,233,217, 42,220,140, 60,139,232,167, 65,168,231,230,131,153, 95,244,149,126, +247,195,190,131, 34,186,174,119,126,254, 11,101, 85,233, 44,237, 69,109, 59, 31, 11, 58, 55, 30, 76, 78, 28,152,194,180, 87, 78, +176,146,123,227,157,110, 30,144,123,213,151,140,155,185,124, 44, 80, 65,104,149,231,204, 32, 8,114, 11, 73, 18, 83, 9,130, 64, +243,230, 45, 82,214,174, 93, 91, 89, 40,112, 67,243,230, 45, 82, 40,138,244, 44,126,177,147,155, 57,142,205,168, 33,157, 21, 68, +141, 88, 44,153, 91,108,246,119, 75, 62,115,230,140, 97,248,240,225, 88,179,102,141,120,222,188,121, 11, 41,138,154, 80,201,240, + 94, 5,206, 33,128,183, 93,253,250,189,191,191,121,147, 19, 26,141, 68,238,189,123,202,124,133,130, 78, 47, 44, 20, 31,142,142, +238,255,233,156, 57, 98, 47, 47, 47,220, 8, 10,114,204, 82,169,184,124,157, 78,147,159,159,207,209, 52,125,175, 10,206, 5,114, +185,179,108,199,142, 29,126, 83,166, 76,121,168, 80, 40, 22, 0,128,155,155,219, 10, 0, 77, 0, 36,148, 59,134,173, 91, 15,166, + 78,156, 56, 49, 54, 51, 51,115, 65,117,233, 44,135,166,206,114,103,217,254,109,123,158, 56, 88, 91,144,114, 79,119, 82,104,103, + 39,160,197, 22, 34, 22,208,212,243,170,111, 9,160,105, 21,215,190,204, 73, 88, 88, 88, 28, 59,117,234,148,179, 80, 40, 4,195, + 48,144,203,229,120,241,226, 5,242,243,243, 81, 88, 88,136,231,209, 81,168,235,229,133,111,230,207,115,155, 62,111,254, 49,181, + 90,221,250,165,198,236,213, 5,144,141,134, 87, 44,123,149,173, 98,240,242,176,151,137,229, 94, 30, 47,146,146,146, 96,101,101, +133,128,128, 0,171,155, 55,111, 94,175, 70,100,149, 95, 4,120, 68,135, 14, 29,172,247,237,219,135,214,173, 91,195,214,214, 22, + 33, 33, 33, 8, 11, 11,131,193, 96, 32,139,138,138, 96,101,101,133,149, 43, 87,194,219,219, 27,133,133,133, 72, 72, 72,112, 20, + 10,133, 78, 47, 69,180, 47,227, 12,185, 16,242, 93, 65,220,149, 69,233,196,249,190, 59,246, 31,196,196, 15, 71,194,149,139,191, +110, 91,159,248,174,247,192, 14, 75, 56,202, 43,208,210,186,185,125,195,128,129, 16,137,173, 48,125,238,114,196,134,159,182, 87, + 23, 62,249,140, 96,146,189,150,173, 61, 60,163,146,188, 19, 0, 72, 47, 47,175, 79, 15, 31, 62,108, 93,102,122,161,168,178, 53, + 15,203, 47, 2, 95,205,130,239, 53,222, 79,130, 32,240,226,197, 11, 56, 59, 59,195,202,202,170,108, 1,241,168,168, 40,220,185, +115, 7,165,171, 81, 84,193, 57, 58, 56, 56,216,203,210,210,178,194, 9, 28,199, 33, 59, 59, 27, 52, 77, 67, 38,147,129, 97, 24, + 24, 12, 6, 24,141, 70,104,181, 90,171, 38, 77,154, 76, 51, 26,141,119, 43,227,100, 89,246,203, 17, 35, 70,116,184,123,247,174, +239,134, 13, 27,160,215,235,127, 76, 79, 79,199, 7, 31,124, 0,150,101,209,163, 71,143,119, 57,142,139, 89,184,112, 33, 0, 96, +214,172, 89, 70,149, 74, 53,165, 54,121, 47, 65,147,119,222,121,199,247,242,229,203,232,212,169, 19,116, 58, 29,214,172, 89, 99, +179,117,235, 86,155, 61,123,246,200,231,206,157,251, 91, 86, 86, 86,159, 26, 56, 9, 0, 63,186,186,186, 78,237,218,181,171, 69, +201, 26,166,216,189,123, 55,190,249,230,155, 3, 0, 22,158, 59,119,110,233,201,147, 39,199,126,250,233,167,248,230,155,111,102, +230,231,231,239,172,138,243,249,243,231,144,203,229,176,177,177, 41,126, 89, 26, 12,120,244,232, 17, 46, 93,186,132,198,141, 27, +155,146,167,170,210,233, 51,116,232,208,223,246,239,223,111,157,156,156,140,107,215,174,161,110,221,186, 80,171,213,166,172, 13, + 27,252, 23, 52,216, 85,114,106, 52, 26,109, 82, 82,146,213,170, 85,171,224,230,230, 6, 31, 31, 31, 72,165, 82, 16, 4, 1,163, +209, 88, 93, 56,129, 26,211,217,165, 11, 4,217,169,246,131,108,237,236, 63,227, 56, 78, 80, 80,144,183,205,128,252, 35,241,241, +208,255,141,121,255, 47,163, 21,128,135,168,184,230,161,162, 76,104, 5, 5, 5,113,129,129,129, 68,233,222,195, 3,202,236,108, +251, 88,103,215,102, 7,157, 93,155,150,172,251, 69, 70, 83,148,125,172,139,139, 90, 9, 0, 6,154,195,173,232,124, 60,121,150, +142,176,103,233,176,148,152,102,124,209, 25,232, 98,143, 85,142,131,182,232,127,157, 86,131, 58, 15, 58, 67,177,187,135, 94,167, + 70, 65, 86, 36, 49,124, 72, 47,233,212,169,147,225,230,230, 33,175,138,207, 32,145,206,156, 62,171,191,157,131,157, 16, 65, 55, +207,227,221,198, 67, 32,149, 8,145, 83,160, 5, 8,224,105,252, 37,128,181, 70,120,108, 18,218, 53,149,161, 79,111,127,171,227, + 71, 98,230, 0, 88,108, 74,122,233,148,123, 16, 53,236, 7, 33, 99,132, 49, 59, 6,108,126, 34, 96,233, 10, 13, 97,133, 28, 69, + 34,162,175, 31, 53,169,207,200,178,236,103, 78, 78, 78,249, 11, 23, 46,236,218,160, 65, 3,195,180,105,211, 30, 39, 38, 38,126, +249, 82,111,229,167,205,155, 55,227,217,179,103,169,223,127,255,125, 72,118,118,246, 34, 51, 11,122, 62,199, 97, 93,201, 80, 92, +246,137, 19, 39,222,185,122,245,234,204,117,235,214,185,124,254,249,231,226,207, 63,255,252, 19, 0,223, 86, 55, 92,168,148, 72, +122,126,127,237, 26, 71,167,164,232,254,248,229, 23,241,166, 91,183, 22, 26, 88,214,221,201,217,153,104,223,174,157, 74, 70,146, +217, 57, 25, 25,180,220,215,151,122,113,233,146, 35,103, 97,145,118,238,220, 57,101, 81, 81, 81,149, 75,231, 80, 20,165,174,108, +184,176, 50,184,185,185,233, 43,243,225,170,166, 65, 84,178, 28,103,176,171, 87,143,235,221,227,189, 6,207, 98,226,227,165,118, +118, 84,195, 6,117, 27, 69, 68,191,184,199, 49,140,150, 32, 8,165, 73, 99, 37, 20, 53,114,221,186,117,205,108,108,108,192,178, + 44,108,109,109,145,149,149, 5,189, 94, 15,165, 82, 9,125, 97, 1,244, 5, 5, 8, 75,124,129, 14, 93,187,226,255,216,187,234, +240, 40,174,246,123,102,125, 55,187,113, 23, 8, 16, 8, 16, 8, 4,183, 64, 8, 78, 9, 20,247,162,133, 82,130, 67, 9, 80,138, + 20, 8, 45,238, 78,113,183, 18, 92,131, 4,143, 19, 72, 32, 46, 27,247,245, 29,249,253, 17,105, 8,145, 77,160,223,239,251,218, + 61,207,179,207,202,204,156,189,115,239,157,185,103,222,247,189,239, 29,209,175,143,203,177,203,127,142,162, 40,234,116,149,254, +188,150,173, 75, 45, 89,171,235,153,255,229, 11, 74,204, 45, 21, 93,191,181,118, 6, 79, 34, 65,239,249, 62, 95,114,161, 7, 94, +187,118,237,250,208,161, 67,191, 89,184,112, 33, 75, 42,149,222,140,141,141,237, 2,224,109, 85, 7, 73, 36,146,134,153,153,153, + 40, 44, 44,132,177,177, 49,182,110,221, 10,107,107,107,200,229,114,188,122,245,138,113,112,112, 32, 30, 62,124, 8, 7, 7, 7, +100,101,101, 65,163,209, 64,161, 80,164,170,213,234, 74,221,229,197,238,193,254,243,250,225,198,251, 55, 71,187,218, 19, 49,175, + 70, 46,240,248,240, 62,244, 93,194,237, 59, 79,127, 37,149,194,196,220,164,187,139, 27,180, 11,180,152,185,104, 21,118,110, 88, +129,247, 47, 30,101, 91,215,205,223, 37, 34, 84, 71,170, 42,175, 76, 38, 83,190,123,247,206, 48, 56, 56, 24, 4, 65,192,216,216, + 24, 6, 6, 6, 21,138,173, 90,128, 85,214, 2, 37,147,201,192,227,241, 96,110,110,142,131, 7, 15,150, 14,188,245,235,215,175, +138, 99, 95,239,222,189, 71,213,173, 91,215,176,236,143,237,218,181,195,244,233,211,177,103,207, 30, 4, 4, 4,124,178,158,102, +106,106,170, 84,171,213, 86,117,222,185,105,105,105,253,134, 12, 25,242,230,241,227,199, 70, 7, 15, 30, 4, 73,146, 21,190, 14, + 28, 56,128,231,207,159, 47, 7,240,174,150,253,168,233,176, 97,195, 30,157, 56,113,194, 36, 35, 35, 3, 37,125, 67, 38,147,129, +162, 40, 52,105,210,132, 32, 73,178,186,184, 55, 22,155,205,190,188, 99,199,142,129,223,127,255, 61, 56, 28, 14,212,106, 53,118, +236,216,129,197,139, 23,167, 21, 63,148,106, 0, 44, 59,114,228,200,132, 65,131, 6,193,205,205,205,229,193,131,202, 35, 59, 10, + 11, 11, 81, 88, 88, 8, 46,151, 11, 27, 27, 27,172, 89,179, 6,106,117,209,109,165,113,227,198,165,151, 49,128,125,141, 27, 55, + 30, 24, 25, 25,185, 17, 69,177,107,159,193,198,198,102, 8,195, 48,211, 40,138, 42,232,218,181,171,249,169, 83,167, 12,147,147, +147,241,230,205, 27, 44, 95,190, 60,135,166,105,138,166,105, 66,161, 80,196, 88, 89, 89,189, 17, 8, 4, 34,185, 92,158,157,149, +149,181, 14,192,205,255,175,145,156, 32, 8,130,203,229, 98,202,148, 41,224,112, 56, 16,137, 68, 80, 42,149,208,106,181,165, 98, + 30, 53,116, 75, 55,106, 36, 49,231,128,247,189,169, 97,179,185, 35,230,120, 89,218,218,217,195,196, 72,128,136,136,183, 93,238, +223,187,179,131,207,121,191,151, 86,107,247,190,143,203,251,219, 23,187, 47,175, 69,254, 71,133,214,103,107, 30,114, 42,110,204, + 17, 20,195,156,203, 76, 78,230,107,248,124,131,200, 18, 43,151,181,181, 60,159, 32, 70, 80,150,205,191, 5,169,209, 22,223, 40, +152,226,151,142, 66, 75, 75,225,195,251, 48, 60,190,253, 39, 44,228,201,200,140,105, 5,240, 90, 64,173,200,131, 82,173, 41, 22, + 37, 20,130,223,220, 67,126, 94, 54, 92,219,122, 1, 44,214,243,202,248,140,205, 9,175,206,109, 90,178, 63, 36,132,161, 93,227, +225,112,114,232,138,120,105, 62,114, 11, 85,200,201, 87,162,149,171, 15, 50,114, 20,200,151, 43,241,246,195, 49,216,219, 57,177, + 8, 78,116, 79, 93,133,150,234,237, 69,168,222, 93, 1,207,177, 11,248, 77, 6,129,237,232,142,132,144, 7, 8,190,177, 5, 73, +225, 79,192,208, 20,108, 27,183,215,245, 34,217,113,243,230,205,246, 93,186,116,225,244,234,213,203,237,250,245,235,110, 82,169, + 52,184, 88, 96,184,245,234,213,203,205,210,210, 18,219,182,109, 83, 16, 4,177,163,150,141, 93,106, 1, 75, 79, 79,127, 9, 96, +237,197,139, 23,119, 76,159, 62, 29, 86, 86, 86, 45, 82, 82, 82, 42, 61, 48,131,203,117,155,184,110, 29,195,101,179,153,211, 59, +119,242, 86,221,188,185,233,143, 35, 71,120, 61, 60, 61, 9,134, 97, 16, 20, 20,100,240,219,206,157, 6, 99,191,253, 54, 46, 62, + 61,157,244, 15, 8,208, 72,147,146, 10,210,101,178, 85, 82,169, 52,245,255,163,103,107,181,218,103, 49,177, 49,246,109, 59,180, +178, 12,140,136, 9,239,219,163,115,103, 22,139,197,122, 31, 29, 31, 96,105,105,100,112,231,246, 29,141, 86,171,125,166, 11,151, + 64, 32,240,234,209,163, 7, 39, 39, 39, 7,118,118,118,200,200,200, 64,114,114,114,145,197, 33, 47, 7,154,188, 60,104,243,115, + 65,201, 10, 17,243,234, 37, 90, 57, 53, 16,156, 19, 8,188,228,114,121,149, 66,171,228, 41,179,162,133,174, 75,126,227, 27, 26, +130, 47,145,128,168,185,219,240, 91, 19, 19,147,197,185,185,185,215, 1,172,209,104, 52,222,139, 23, 47,110,183,125,251,118,139, +181,107,215, 26, 77,155, 54,237, 92, 97, 97, 97, 43, 20, 45,170, 90,217, 0,246,145, 36, 73,115, 0,214,247,238,221,131,149,149, + 21,242,242,242, 74, 44, 45,106,185, 92, 46,204,202,202,130, 74,165,130, 90,173,134,145,145, 17, 94,191,126,157, 77,146,228,213, +234, 10,103,212,144, 88,163,210, 68,252,108,238, 34, 78,209,144,166, 30,233,217,116,206,202, 77,210,213, 0, 54,245,115,114, 58, +160,161, 31,197, 68,133, 93, 53,141,125,245, 48, 59, 37, 74,230,116,240,122, 76, 85, 49, 90, 12, 0,154, 32, 8,166,113,227,198, +200,200,200, 0,155,205,134,129,129, 1, 36, 18, 9,150, 44, 89,130, 29, 59,118,212, 70,104, 9,197, 98,241, 58, 22,139, 53,138, +197, 98, 89, 82, 20, 5, 31, 31, 31, 12, 28, 56, 16,124, 62, 31, 26,141,166,212,162, 89, 98,165,170,198,210, 17,244,252,249,115, +163,231,207, 63,185,109,121, 90, 88, 88,220, 87,169, 84,136,142,142,198,229,203,151,187, 3,240,175, 97, 91, 71, 7, 5, 5,245, +115,119,119, 63,218,166, 77,155,134, 12,195,160, 69,139, 22, 24, 61,122, 52,142, 29, 59,134,224,224, 96,228,229,229,209,119,238, +220,249, 3,192,198,154,142,225,197,245,219,100,216,176, 97, 79, 78,158, 60,105,154,149,149, 5,133, 66, 1,153, 76,134,115,231, +206,161, 75,151, 46,176,176,176,192,137, 19, 39, 72,134, 97,170,106,123, 22,139,197, 58,184,119,239,222,129, 83,167, 78,197,174, + 93,187,112,250,244,105, 12, 26, 52, 8,163, 70,141, 66, 70, 70,134,245,134, 13, 27, 38, 20,187, 9, 87,140, 30, 61, 26,133,133, +133,120,245,234, 85,132,142,215, 60,114,115,115,145,155,155, 11,145, 72, 84,246, 26, 35, 0, 28,219,178,101,203,152,185,115,231, +194,201,201,105, 69, 76, 76,204, 22, 84, 48, 75,148,166,233, 31,146,147,147, 77, 57, 28,142, 57, 73,146, 72, 76, 76,196,235,215, +175, 49,115,230,204,236,236,236,236,233, 0,226, 1, 44,155, 50,101,202,154,249,243,231,151,246,165,249,243,231,251, 93,191,126, +189,223,127,218,154,211,184,177, 73,115, 62, 91, 48, 39,167,128,109,158,147,147, 83,122,239, 80,171,213, 80,169, 84,159, 88,178, +120, 60,174,121,187, 86,117,175, 41,228, 5, 75,223, 70,229, 86,186, 64,186, 75, 67,227,150, 6, 98,227,185, 93,186,246, 24,215, +167,223, 96, 54,169,213,226,214,173,171, 56,116,104, 55, 60,221, 27,195,169, 81, 11,204,154, 61,199, 88,165, 38,125,238,220,185, +185,216,228,249,227,155, 5,249,185, 75,170,226,252,151,227, 90,177,184,186, 86,161,235,176, 34, 5, 89,156,194, 33,167,248,171, +133,169,169,233, 78,138,162, 60,141,140,140, 64,231, 70,226,237,235, 23,200,206,225, 66,165,160, 64, 51, 69, 98, 75, 39,225,162, + 82,227,209,173, 43,216,186,101, 19,178,178,178,224,222,173, 59, 10, 57,117, 80,183, 78, 93, 40, 21,242,226,139, 6,208,168,181, +176,180,118, 68, 96, 96,176, 54, 95, 38,171,244,134,196, 19,106, 92,234, 90, 55,134, 74,211, 9, 66, 62, 31,121, 5,106,228, 20, +139,172, 19,231, 71, 66, 37, 87,128, 84,107, 64,170,181,176,172, 59, 12, 77,173,123,128,166,174, 54,175, 81,245,209, 20, 52,177, +143,160,137,125, 4, 81,167,217,248,211,119, 76,185,129, 84,183,117,119, 51, 50, 50,210,195,195,195,175, 6, 5, 5, 13, 25, 57, +114, 36, 30, 60,120, 48, 13,192,140, 98,247,205,180,145, 35, 71, 34, 40, 40, 8,225,225,225, 87, 51, 50, 50,210,191, 70,203,243, +249,124,133, 74, 85, 52,198, 26, 24, 24, 8,171,217,215,190,221,208,161,172,188,192,192,252, 45, 79,159,174, 56,112,240, 32,175, + 87,207,158,132,150, 36, 65, 83, 20, 26, 57, 59, 19,125,250,244, 17, 31, 59,123,214,156,173,213, 62, 95,228,237,125,111,207,248, +241, 5, 47,101, 50, 93, 3,205,235, 21,187, 12, 1,160, 94, 21,191,233, 12,149, 74,181,253,135,239, 39,245,242,127,244,164, 78, +221, 58,246, 70,183,238,248, 7, 11, 68,124,150, 83,253,134,236,156,188,108,206,234, 21, 75, 69, 42,149, 74, 87,209,234, 98, 97, + 97,129,212,212, 84,124,248,240, 1, 42,149, 10, 90,173, 22,180, 92, 6,117, 78, 46,212,121,217, 32,148, 10, 8, 40, 10,202,204, + 52,212,115,106, 0,252, 53, 35,177, 90, 87, 84, 69, 66,171,228, 93,104,100, 4,158, 88, 2, 22,151,171,243,226,232, 0,218,180, +111,223,254,236,133, 11, 23,120,147, 39, 79,238,112,247,238,221,157, 0,226,147,147,147,123, 46, 95,190,252,229,206,157, 59, 5, +211,167, 79,111,178,113,227,198, 9, 0,246, 85, 70,162, 84, 42,207, 94,187,118,109,172,163,163,163,117,104,104, 40,148, 74, 37, +104,154, 70,255,254,253,129,162,216, 26, 0,192,251,247,239, 21, 74,165, 50, 61, 44, 44, 44, 63, 62, 62, 94, 3, 29,102, 9,174, +220, 46,125,150,159,250,104,168,181,141,253,115,161,168, 94,125,166, 48,112,200,188,225,246, 27,182,156, 79, 86,222,140,142, 46, +248,185,119,131,245,178,130,144,153, 38, 14,133,187,110,250,197,232, 18, 8, 95, 58,187,208,220,220, 28, 28, 14, 7, 92, 46, 23, + 60, 30, 15, 4, 65, 96,246,236,217,216,191,127,127,117,174,195, 79, 68,150,161,161, 97,248,170, 85,171, 28,166, 79,159,206, 19, + 10,133,200,201,201,193,137, 19, 39, 48,101,202, 20, 28, 58,116,168,194,248, 23, 29, 92, 74,229,173,165,115,199,143, 31, 15,181, + 90,141,209,163, 71,227,192,129, 3,115, 41,138,242,175,197, 37,253, 60, 56, 56,216, 57, 56, 56,216, 8,192,160, 81,163, 70, 29, + 25, 54,108, 24,252,253,253,113,245,234,213,238, 40,154,244,161, 0,224, 11,192,170,248,189,170,235, 83,108,109,109,189,155,166, +233, 65,150,150,150,193,141, 27, 55,118, 61,121,242,164, 73,122,122,122,201,228, 7,196,198,198,226,240,225,195,210,131, 7, 15, +230, 83, 20,101,206, 98,177,174,229,230,230, 46,169, 66,176, 29,220,178,101,203,164, 98,119, 32, 46, 92,184,192,108,218,180,137, + 88,190,124, 57,114,114,114,224,233,233,137,189,123,247,206, 41, 44, 44,116,219,180,105,211,247, 35, 70,140,192,234,213,171, 33, +147,201,182, 84,247,176, 82,133,248, 34, 0,116,222,178,101,139,227,220,185,115,113,225,194, 5,180,105,211, 70, 20, 19, 19,179, + 7,192,212,138,218,143, 97, 24,196,196,196, 64, 46,151,227,201,147, 39, 88,177, 98, 69, 78, 25,145, 53,103,198,140, 25,107,230, +204,153,131,117,235,214, 49,161,161,161,233,195,134, 13,179,222,191,127, 63,187, 81,163, 70,115,228,114,249,127, 76,104, 53,105, +100,182,190, 93,155,174,139,109,237, 27,225,196,201, 83,200,206,206, 46,173,147,146,122, 97, 24, 6, 5, 5, 5, 72, 77, 77,133, +177,145, 33, 54,108, 92,243,205,143,211, 38,213, 65, 81, 26,140,207, 77,150, 78,166, 27,135,141,154,188, 96,244,216, 73, 8, 13, +126,131, 99, 71,246, 33, 44, 52,168,148,143,212,106, 16, 25,241, 26,145, 17,175, 97,109,227,136, 62,189,186, 19, 99,198,140,233, + 63,126,236, 40, 75, 0,127, 91,234,136,255, 97,107, 22,240,121, 30,173,253,159, 8,173,106,204,117, 22,166,166,166,225,103,206, +156, 49,119,119,119,103,147, 36,137,155,183,110, 97,230,140,239, 48, 97,188, 15, 52, 48, 5,169,230,129,230, 9,117, 42,137, 66, + 33, 7, 3, 6, 50,153, 12, 1, 1, 1, 96,104, 18,199,246,111, 2,195,208,165, 66, 11, 96,160,214,104, 96, 95,183, 9,118, 31, + 88, 75,130,203,125, 9,109,197,169,107,242,179,216,148,150,100,144,156,158,128, 4,105, 24,140, 13,235,130,195,173,139,172, 92, + 57, 56, 44, 27,104,149,239, 65, 21, 31, 43,151, 37, 65,161,249,178,246,163, 42,176,158, 50, 53,184,233, 42, 20,138,227,199,143, + 31,255,102,243,230,205,252, 1, 3, 6, 52, 62,127,254,124,103, 0, 24, 48, 96, 64, 99, 35, 35, 35, 28, 63,126, 92,173, 80, 40, +142,127, 69,139, 79,143,246,237,219, 35, 39, 39, 7,177,177,177,193, 85,158,155, 90,109, 46,177,178, 98,167, 63,120,160,205,200, +201,169,211,163, 71, 15, 66, 75,146, 96, 17, 4,178,243,242, 16, 31, 23, 7, 19, 19, 19, 34,252,253,123,201,142, 89,179, 46, 53, +118,117,229,148,204, 72,212, 5, 87,175, 94, 53, 64, 81, 92, 86,149,191,213, 16,178,244,180,212, 73,222,222,222,151,142, 31, 63, + 97,156,150,158, 22, 41,224,243, 73,137, 68,104, 55,126,220,143,156,220,220,220,177, 0, 10,117, 37,203,201,201, 65, 76, 76, 12, + 68, 34, 17,120, 92, 46,104,133, 28,148,172, 16,202,236, 12,176, 53,106,240, 41, 10,102, 6, 2,212,177,182, 70, 93, 75, 11,157, + 56, 63,220,191, 93, 26,248, 94,214, 93,184,161,189, 11,248, 98, 9,248,134, 18,252,232,247,176,248,105,148, 7, 44,255, 85, 23, + 90, 11,123,123,251, 63, 79,158, 60,201,203,200,200, 64, 80, 80, 80, 48,128, 60, 0,134, 0,232,136,136,136,187, 97, 97, 97, 94, +197,179,238,170,155, 45,182,233,226,197,139,189,221,221,221,201,250,245,235,139,211,211,211,235,228,228,228,208, 82,169,244, 19, +147,208,237,219,183, 5, 5, 5, 5, 50,154,166, 47, 21,139,172,106,243, 23,205, 27,110, 47, 12, 8,196,108,143,190,245, 90, 24, + 89,180, 68, 54, 25,216,226,121,176,116,246,188,225,246,219,183,156, 79, 86,138, 8,213, 17,130, 74,172,195, 17, 42,117, 13, 98, +102,128,162, 88,169,128,128, 0,196,199,199, 35, 38, 38,230, 19, 65, 53,109,218, 52, 28, 59,118, 76, 39,139,150, 88, 44, 94,183, +114,229, 74,135,185,115,231,242,202,136, 34,120,123,123, 35, 47, 47, 15, 7, 14, 28,128,183,183,119,141, 7,254,114,104,208,163, + 71,143, 1,182,182,182,200,202,202,130,141,141, 13,220,221,221, 7,250,251,251,215, 7, 16, 91,203,126,255, 99,223,190,125,215, +172, 90,181, 10, 90,173, 22, 83,166, 76, 65, 84, 84,212,217,168,168,168,173,117,235,214,157,253,211, 79, 63, 89, 91, 91, 91, 99, +228,200,145, 98,146, 36,135, 86, 70, 98,102,102,230,187,111,223,190,177, 3, 6, 12, 96,105, 52,154,110,247,239,223, 71, 92, 92, + 28,212,106, 53, 72,146,196,199,143, 31,225,237,237, 45, 45,158,221,248, 81,135,114, 77, 94,182,108,217,164,217,179,103,227,183, +223,126,195,202,149, 43,255, 48, 54, 54,118,109,213,170, 85,235,149, 43, 87, 98,209,162, 69,112,116,116,132,185,185,121,211,229, +203,151,187,204,159, 63, 31,219,183,111,199,138, 21, 43,254, 0,112,184, 54, 21, 65,211, 52,177,126,253,122,183, 45, 91,182,216, +150,136, 44, 22,139,133, 51,103,206, 32, 48, 48,112, 96,116,116,116, 69,199,236,181,177,177,153,102,107,107,203,191,115,231,142, +196,209,209, 17, 36, 73,106,139, 69,214,142,186,117,235,206,252,248,241, 35, 6, 12, 24,128,232,232,232,227, 0, 38, 24, 27, 27, +203,230,207,159,111, 32, 18,137,140,229,114, 57,254, 83, 96,179,136,137,235, 86, 47,194,171,192,247,184,120,145,135, 87,175, 94, +193,218,218, 26, 2,129, 0, 12,195, 64,165, 82, 33, 35, 35, 3, 90,141, 10, 45,154, 55,192,209,131,235,145,158,158, 1,176,136, + 74, 67,110, 8, 22, 49,110,210,119, 67,240,248,201, 45,236,217,179, 15,133,133,178, 74, 30,190,133,104,212,216, 5,246,118, 86, + 72, 76, 74, 4,193,130,197,223,121,174,255,227,174,195,210, 91, 16,116, 73,239, 80, 22, 38, 38, 38, 91, 79,159, 62,109,238,233, +233,201,150,201,100,160,105, 26, 93,221,221, 49,123,238, 92, 92, 61,121, 18,206, 29, 70,131, 80, 75, 64, 26,232, 54,235, 65,169, +144,163, 89,235,206, 24, 49,114, 20, 18,226,227,209,215,107, 24,148, 74,121,233, 19, 70,137, 69, 75,173,214,192,194,170, 14,110, +223,190,205,198,148, 41,111,177,163, 98,163, 4,165,225,135, 68,126, 84,118,201, 85, 4, 34,224,213, 49,104, 84, 26,180,104,177, + 28, 26,218, 28, 86, 14,211,160,213, 94, 70,126,198,253, 34, 55,134,185, 39,146, 18, 18,192, 98,243,194,107, 91,131,180, 44,227, +139,110,186,121,121,121,121, 49, 49, 49,231, 3, 2, 2,198, 13, 29, 58, 20,183,111,223,254, 30, 0,134, 14, 29,138,128,128, 0, +196,196,196,156,207,203,203,203,251, 26,173,109,107,107, 59,168,123,247,238,163,219,181,107, 7, 63, 63, 63, 48, 12,243, 88,167, + 11,155,203,101, 88, 44, 22,104,154, 6, 1, 32, 43, 55, 23, 81, 81, 81,200,202,204,132, 86,171,133,172,176,144,118,105,220,184, +144,161,105,195,154,148,167,236, 12, 67, 84, 48,235,176,228,183, 90,156,106,252,203,231, 79, 19, 10, 10, 11, 45, 77, 77, 76, 11, +248,124, 62,149,147,155,155,247, 54, 60, 84,173,227,224, 80,130,136,176,176, 48,215,148,148, 20, 36, 36, 36,128,148, 21,128,173, + 82,131,165,146,163,103,231, 78, 16,129,129, 16, 52,184,180, 22, 92, 54, 23, 5, 69,179,243,170,117,119, 80,101, 30, 18, 74, 68, + 22, 65, 16, 69,238, 66,177, 24,124,137,225, 39, 22, 46, 93,250,147, 64, 32, 56,121,238,220, 57, 91,123,123,123,172, 94,189, 26, + 14, 14, 14, 77,237,236,236,228,198,198,198, 34,107,107,107, 52,107,214, 12,157, 59,119,198,141, 27, 55,160, 67, 29,144, 12,195, +244,121,252,248,241,130,167, 79,159,142, 16,139,197,196,172, 89,179, 56,253,251,247,135, 64, 32,128, 92, 46, 71, 78, 78, 14, 78, +157, 58,149, 73,211,116,201,164, 20,115, 3, 3,131,195, 4, 65,196,202,100,178,185,229, 9,143,110,110, 97,151,158, 77, 79, 97, + 10, 13,134,120,244,173,215,162, 71,223, 94,104,224,220, 3, 61,250, 38, 0,192,122, 51, 78,220,232,223,151,153, 92, 50, 49, 36, + 14,223,190,121,103,133,187, 71,143,101,139, 11, 31,172,249,109,127,110,181,241,116, 4, 65,128,166,233, 79,114, 7,149,223, 62, + 97,194, 4,156, 57,115,166,218,122,100,177, 88,163,166, 79,159,206, 43,103,121, 70,114,114, 50,188,188,188, 48,116,232,208, 79, +132,150,133,133, 5,108,108,108, 16, 23, 23, 7, 0, 89, 58,246,171,217,147, 39, 79, 38, 20, 10, 5,166, 78,157,138, 3, 7, 14, + 96,244,232,209,132,191,191,255,108, 0,115,107,218,217, 89, 44,214,134,159,126,250,105,129,183,183, 55,178,179,179,113,253,250, +117,244,239,223, 31,103,206,156,177,188,126,253,250, 58, 79, 79, 79,176,217,108,248,249,249,129, 36,201, 42,115,125,241,120,188, + 65, 3, 6, 12, 96, 37, 38, 38,130,199,227,161,109,219,182, 72, 74, 74,130, 92, 46, 71,114,114, 50,230,204,153,147,154,149,149, +213, 93,215,235,136,199,227,205,157, 61,123, 54, 78,159, 62, 13, 31, 31,159, 35, 0,166,230,229,229,141,120,250,244,233,233,111, +191,253, 22,201,201,201,184,116,233, 18, 86,172, 88, 65, 76,152, 48, 1,187,118,237,194,156, 57,115,254, 40,182, 58, 85,214,241, + 11,210,211,211,141, 27, 54,108,136,180,180, 52, 20, 22, 22,226,210,165, 75, 86, 55,110,220,168,111,111,111,111, 20, 19, 19, 67, +253,250,235,175,252,185,115,231, 98,235,214,173, 8, 10, 10,194,177, 99,199,208,163, 71, 15, 50, 58, 58,186, 66, 43, 89,113,202, +134, 75, 12,195,220, 17,139,197, 40, 40, 40, 40,185,238, 22,250,248,248,120,251,250, 22, 25,217, 83, 82, 82, 48,113,226,196,241, +247,238,221,163, 61, 61, 61, 13,120, 60, 30,148, 74,165,236, 63, 57,106,211, 20, 13,128, 70,253, 58, 18,220,186,122, 16,111,130, +163,241, 38, 56, 12,124, 65, 81, 16,188, 66, 33, 71,235, 22,141,208,161,109,123,164, 72,147,113,252,216, 65,152, 89,216, 87,121, + 31, 97, 24, 6, 60, 14, 5,151,198, 54, 56,121,108, 31,252,174,223,195,177,227,167, 74, 99,222, 56, 28, 46, 90,181,238,128,182, +109,221, 17, 29,243, 17, 7, 15,238,129,165, 85, 29,189,115,176,150, 40,117, 29,150,125, 47,167,252,123,184,187,187,179, 11, 11, + 11,161, 84, 42,145,154,154,138,184,184, 56,152,152,154, 32, 58, 37, 22,221, 13, 52, 72,165,243, 17, 17, 28, 78, 17,108,110, 80, +117,127, 56,192,163, 21,224,209, 10, 51, 39,143,174,226,145,149,129,216,200,162,200,117, 67,146, 31,176,125, 59, 89,153,208, 34, + 41,237,221, 91,119,238,183,159, 60, 97, 16,247,246,253, 3,208,170,105, 40,180,198,144, 41,213,144,105,184, 96, 25,247, 7, 50, +253,193,230, 8,208,209,173, 17, 46, 93,188,161, 97, 72,237, 61,157, 43,200,218, 21,100, 90, 88, 25,161,149, 94,206,239, 96,166, +179,235,176,116,224,165,168, 51, 39, 78,156, 24,220,169, 83, 39, 3, 79, 79,207,134,197, 3,167,230,196,137, 19,242,226,100,152, + 53,197, 39,217,224,109,108,108, 90,243,120,188,209,253,251,247,111, 61,105,210, 36,188,125,251, 22,199,143, 31,143,108,212,168, +209, 3,169,180,242, 25,217,108, 62, 63,171, 48, 61,221, 68, 82,191, 62,199,212,208, 48,229,198,245,235,142,189,122,247, 38, 18, + 18, 18,144,149,149, 5,165, 82,137,160,224, 96,134,203,102, 39, 17, 70, 70,172,247,129,129, 44, 54,159,159, 85,153,181,177, 2, +196, 85, 51,235,208,183,182,214,173, 58,182,166, 13, 87,248,252,208, 64,169, 82,186,230,231,231,147, 28, 46,151,235, 96, 99, 18, +255,254,163,238,247, 68,149, 74,229,119,247,238,221,193,189,122,245, 18, 68,134, 4,129,204,203,131, 58, 47, 7, 60,154,130, 89, +107, 55,176, 53, 42, 64,173,133,189, 11, 3,101,174, 1,252, 95,188,215,170, 84,170,106,147, 26,150, 8, 45, 86, 57, 97,192,151, + 72, 32, 48, 52,130, 64, 34, 41, 47, 24,170,123,146, 51,232,211,167, 79,207,142, 29, 59,130, 97, 24,236,223,191, 31, 26,141,134, +175,209,104,160, 86,171,161,209,104,144,159,159,143, 99,199,142, 97,247,238,221, 79, 1,252,161,195,233,147, 34,145,232, 91,130, + 32,172, 56, 28,142,220,210,210, 82,124,230,204,153,210,116, 19,173, 90,181,130,161,161, 33, 15,197, 73, 33,173,172,172,184,135, + 14, 29, 50, 25, 56,112,224,163, 10,221, 29, 45,154, 46,106, 64,154,122, 8, 69,245,234, 27, 89,180, 68, 3,231, 30, 0,128,222, + 94,147,209,160, 81, 93,228,103,134,212, 87, 42,226,134,240, 56, 57,166,225,219,147,223,138, 6,184, 78,146,165, 63,140, 66,197, +211,251, 43, 28, 40, 88, 44, 86,165,238, 88, 93, 68, 86,145,102, 97, 89,150,196,249, 0, 64, 86, 86, 22,164, 82, 41, 34, 34, 34, +208,164, 73, 19,100,103,103,195,222,222, 30,106,181, 26,237,218,181,131, 66,161,192,150, 45, 91,240,228,201,147,167, 0,230,232, +240, 31, 34,103,103,231,137,173, 91,183,198,245,235,215,241,234,213,171,228, 91,183,110,217,187,187,187,163,126,253,250,147, 98, + 99, 99,151, 22,187,250,116,133,216,221,221,125,150,183,183, 55,194,194,194,240,195, 15, 63,100, 37, 38, 38, 94, 58,123,246,236, +212, 21, 43, 86,176,250,246,237, 11,169, 84,138, 13, 27, 54, 80, 79,158, 60,217, 8, 96,117, 53,245,248, 46, 49, 49,209, 65,169, + 84, 34, 59, 59, 27, 36, 73, 66, 46,151,227,198,141, 27, 56,118,236, 88, 90,177,200,250,160,107,225,220,220,220,154,177, 88, 44, +156, 62,125, 26, 0,126, 70, 81,198,254, 75, 67,134, 12, 73,254,245,215, 95,237,151, 44, 89,130,239,191,255, 30, 26,141, 6,191, +253,246, 27,150, 44, 89,114,173, 88,100, 85,117, 19,221,108, 99, 99, 51,237,135, 31,126,104, 58,127,254,124, 4, 4, 4, 88,189, +126,253,186,109, 80, 80, 16,234,212,169,131,172,172, 44,142,185,185, 57,182,110,221,138,121,243,230, 93, 0,144,249,236,217,179, + 81, 49, 49, 49,190, 0, 54, 84, 35,218,247,218,219,219, 79, 99, 24,134,145,203,229,113, 62, 62, 62, 27,214,174, 93,139,121,243, +230, 33, 60, 60, 28,121,121,121, 48, 52, 52, 36,126,250,233,167,137, 63,255,252, 51,166, 76,153,194,200,100,178,221,255,233,129, +154, 97, 40,200,115,194, 64,169, 76,209,170, 69, 19,180,114,173,135, 91,247,223, 0, 0,122, 14,115,135, 92, 86,128, 35, 71,246, +227,195,135, 40,112,184, 92,152,152,217,232, 98, 9,132, 58,255, 29,114, 53, 82,244,242,108,139,254,125,187,227,143,163,103, 64, +106, 53,152, 58,121, 44,114,114,115,113,244,232, 65, 68,199,124, 4,135,203,133,185,197,223,159, 8,181, 42, 45,242, 63, 47,180, +116,112, 63,129,166,105, 36, 39, 39,227,245,235,215,136,141,141,133,129,129, 1, 20, 36, 69,239,185,251,132, 38, 8, 94, 18,205, + 48, 79, 25,178, 52, 75,241,231, 28, 20,149, 92, 38, 99,173,177,169,169, 41, 95,165, 82,128, 36,181,101, 70, 21, 2, 32, 0, 30, + 7,176,181,107,128,196,132, 68, 70,169, 84, 62,172,242, 9, 74,165,220,122,229,210, 57,239,206, 93,220, 45,250,247, 92,133, 75, +151,151, 35, 39, 63, 31, 74, 13, 23, 50,165, 6,114, 37, 96, 98,214, 24,237, 90,180, 68, 74, 74, 22, 66, 94,249, 23,114, 84,114, + 93, 2, 69,163,118, 44,155,236, 60,121,230, 34,136, 28,187, 64, 21,113, 9,116, 97, 90,169, 69, 75, 40, 49,133, 89, 93, 23,228, +202, 84, 56,119,239, 13, 80,131,165, 94,210,211,211,229,108, 54,251,132,183,183,247,111,111,222,188,118, 0,128, 55,111,222, 36, + 73,165,210,197,233,233,233, 53,181, 73,151,100,131, 39,132, 66,209,155, 70,141, 26,165,180,109,219,214,120,200,144, 33,176,176, +176, 64, 80, 80, 16,124,125,125,223,105, 52,154, 69,254,254,254, 85,186,122,212,106,117,242,155,203,151,141,186,127,247,157,201, +162,129, 3, 55,120,123,123,111, 93,189,122, 53,215,217,217,153,208,106, 52, 8, 13, 13,101, 78,158, 56,161,221,189,100,201, 22, +190, 88,204,121,121,229, 10,151, 84,169,146,255,191, 59,177,189,189,189,135,123,183,174, 46, 27, 55,111,135, 82, 81,136, 23, 1, +215,144,147,147,129,125,251, 47,186,216,219, 51, 30,201,201,201,254,186, 10,224,195,135, 15, 47,232,208,186,117,107,167, 58,117, + 16, 26, 31, 11, 62, 77,129, 71,146, 96,107, 84, 96,145, 74,212,113,101, 64,176, 12, 33, 77,205,199,218,211,231,195,116, 17,198, + 77,191, 25,132,213, 73,121, 32, 8, 2,155, 58,185,130,111, 40, 1, 79, 44,193,143,127,222, 47, 21, 6,126,171,151,128, 47,145, +160, 97, 7,157, 18,194,203, 31, 60,120,240, 58, 52, 52,180,157,171,171, 43, 22, 44, 88,128,184,184, 56,208, 52,141,180,180, 52, +165, 84, 42, 77,206,200,200,136, 67, 81,254,159, 3,213, 12, 98,101, 85,135,189,191,191,127,169,187,225,222,189,123,176,179,179, +131,177,177, 49,242,243,243, 49,125,250,116,147, 95,126,249, 5, 0,240,250,245,107,148, 21, 40,229, 17,250, 38, 98, 99,110, 1, +147,195, 20, 6, 14,201, 38, 3, 91,244,232,155,136,222, 94,147,112,199,239, 15,220,191,117, 23,102,156,184, 88,136, 11,110,100, +198,102,230, 39,201,156,247,186,180,153,202,150,202,110,237,157, 53, 40,146,109,107, 75,159, 91,178, 39, 63,183,170,178, 58, 59, + 59,195,218,218,186, 52, 70,139,195,225, 96,202,148, 41, 96, 24, 70, 87,145, 85, 60,214,208, 25, 74,165,210, 90, 40, 20, 34, 53, + 53, 21, 31, 63,126, 68,116,116,116,105,234, 0,154,166,181, 11, 23, 46,228,206,154, 53, 11,123,246,236,193,195,135, 15,159, 2, + 88, 5, 64,215,135,181,177, 35, 71,142, 52, 84,171,213, 56,117,234, 20, 9,192,235,220,185,115,175,219,181,107,199,233,215,175, +159,225,174, 93,187,198, 22,183,145,206, 66,203,200,200,136,167,209,104,176,107,215, 46, 36, 38, 38,122, 0,136,120,249,242,229, +222,145, 35, 71,238,118,117,117,109, 20, 22, 22, 22, 85, 88, 88,248, 35,128,144,234,200,210,210,210, 38,183,109,219,246, 28, 77, +211,142,189,122,245, 18,111,222,188,217,232,253,251,247,112,112,112, 0, 77,211,161,168,225, 18, 86, 81, 81, 81, 17, 82,169,212, +165,123,247,238,184,113,227,198,122,138,162,214, 1,248,109,198,140, 25,246,241,241,241,104,221,186, 53,204,204,204,240,254,253, +251, 2,169, 84,186, 27, 69, 75, 18, 85,103,194,141, 1,176,120,239,222,189, 45,247,238,221, 59,218,204,204,172, 99, 80, 80, 16, + 30, 63,126,140,141, 27, 55,226,151, 95,126, 65,215,174, 93,177, 96,193,130, 76, 0,163, 1,144, 49, 49, 49, 58,229,205, 43,177, +108, 1, 64,155, 54,109, 82,124,125,125, 49,117,234, 84,230,208,161, 67,219, 78,156, 56, 49,119,236,216,177,165, 99,224,196,137, + 19,153,227,199,143, 79, 68,209, 50, 76,255, 73,104, 53, 26, 53,140,204, 26,160, 48, 55, 1, 25,137, 1, 48, 48,180, 65,223, 30, +110,144, 43,212,184,122,229, 2, 66, 66,131,193, 98,177, 96,109, 83, 7, 38,166, 22,136,140,140, 2,170,158,109,172,213,104, 52, + 48, 52,173,135,194,188, 68,168,211,223, 64, 36,177,194,164,239,134, 64,174,208,224,226,165, 11, 8, 11, 11, 1,155,205,134,141, +109, 29, 24,155, 20,113, 18, 76,213, 51,152,245, 0, 80, 65, 62,173,106,133, 22,155,205,126,112,243,230,205,225, 29, 58,116,224, +124,248,240, 1, 31, 62, 20, 61,220,228,228,228,144, 4,168,243,233,161, 87,198, 84,113,120, 47, 20,207,206, 40,187,118,161,196, +208, 48,249,253,187, 8,235,156,236, 52, 4, 7, 62,193,135,200, 80,196, 70, 71, 64,163, 81,130,205, 98,129,197,102,161, 94,131, +230,120,242, 52, 64,173, 36,201,128,202, 56,139,202, 17, 93, 32,182,114, 30,181,102,245, 82,191,121,139, 86,138, 70, 12,223,131, +144,247,111, 81, 72,218,128, 97, 0, 27,115, 49, 90, 57,253,132,228,148, 12,156,254, 99,151,156,214,104,198,149,203,161,245, 25, + 39, 0, 88,103,162,217,238,253,127, 76, 57,112,236,228,202, 69,179,166, 91,127, 59,116, 28,248,217,111,161, 77,121,131, 6,237, +250,131, 16,152,224,250,237,251,240,127,253, 54,141,166,152,149,214, 89, 56, 20, 89, 13,103, 89,228,230,230, 62, 75, 77,149, 58, +148,201, 2,239, 32, 16, 8,171,155, 29, 87,158,243,147,140,243,108, 54,171,205,154, 53,107,180,214,214,214,154,176,176, 48,236, +217,179,135,126,243,230,205,109, 22,139,181, 67, 42,149, 42,171,227,180,212,106,131, 79,250,248, 52,107, 63,116, 40, 51,102,214, + 44, 57, 4,130,217, 27, 54,109,242,201,200,201,177, 99,104, 26,150,102,102, 73, 27,150, 44,241, 29, 62,114,100, 78,248,147, 39, +162,128,203,151, 69,124,146,124,163, 67, 57,191, 6, 42,229, 76, 78, 78,246,127,248,240, 49,142, 28,216, 12,141, 70, 5,105,114, + 60, 0, 32, 51, 43, 15,213,136,172,242,156,140, 92, 46, 31,250,243, 47,191, 60,255,121,222, 92,155,110, 61,123, 33, 33, 56, 8, +154,236, 12, 16, 90, 18, 92,130, 3, 89,186, 1,210,211, 10,177,248,248,217,244, 66,185,124,104, 5,131, 68,133,229, 44,177, 88, + 9,140, 12,193, 19, 75,192,151, 24,126, 98,197, 18, 26, 25,129, 47,150,128,195,231, 87, 20,192,253, 25,103, 97, 97,225,176,225, +195,135,135,188,124,249,210,116,234,212,169,232,220,185,115,160, 66,161,240, 4, 80, 80,219,250,164,105, 58,185, 91,183,110, 44, +130, 32, 36,227,198,141, 19,100,100,100,148,102, 86, 47, 44, 44,196,141, 27, 55,208,164, 73,209,172,254,240,240,112, 52,111,222, +188, 82,206,239, 23,135, 37, 3, 88, 61,111,184,253,134,231,193,210,217, 0,214, 55,104, 84, 7,247,111,221,197,227,251, 1, 62, + 29, 93,233,237,223,140,107,247,171,129,231,200, 69, 46,109,166,178, 37, 70,182, 56,122,241, 2, 59,226,205,193,181,114,121,104, + 67,236,185,180,176,178,114, 18, 4, 1,134, 97, 62, 75,229,192,102,179,113,226,196,137,154,158,251,217, 3, 7, 14,204,248,225, +135, 31,120, 82,169, 20,239,222,189,131, 76, 38,131, 80, 40,196,173, 91,183, 72, 0,187, 78,156, 56,113,235,196,137, 19,253, 80, + 52,155,232, 94, 77,250,167, 88, 44,246,238,219,183, 47,222,189,123,135, 87,175, 94, 93, 0, 16, 18, 24, 24,120,225,195,135, 15, +163,186,118,237,138, 63,254,248,195, 91,161, 80, 28,168, 9, 39, 77,211,101,115, 38,149,172,248, 16, 92, 88, 88,216, 49, 32, 32, +160,166,237, 46,205,202,202,234, 82, 44,172, 19,173,173,173,141,130,131,131, 81,183,110, 93,104, 52,154, 14, 53,237, 75,121,121, +121,155,119,236,216,113,104,242,228,201,248,245,215, 95,199,157, 61,123,118,220, 55,223,124,131, 1, 3, 6,224,240,225,195, 8, + 9, 9, 89, 15,221,150, 21,171,232,220, 67, 0,132, 88, 91, 91,207,172, 83,167, 14, 54,110,220,136,208,208, 80,223,213,171, 87, + 47, 9, 9, 9, 65,147, 38, 77, 4, 17, 17, 17,100,109,238, 33, 0, 96,100,100,100,164,213,106,113,249,242,229, 23, 0,230,141, + 27, 55,206,106,235,214,173,163, 37, 18, 9,178,179,179, 21, 97, 97, 97, 99, 1, 92,249, 79,223,235, 24,130, 88, 54,245,251,217, +123,191,159, 58, 86,216,182, 77, 43,200,243,147,160, 40, 76,131,188, 32, 21, 59, 14,220, 6, 65,176, 96,105,105, 11, 43, 27, 7, +196,199, 39,224,233,181,235,106,153, 92,177,149,175,165,215, 87,205, 57,171,136,179,117, 17,167, 92,150, 14, 69, 97,122, 41,167, +149,149, 93, 49,103, 60,158, 4, 92, 87, 42,100,178,205,106,134,248,253,111, 62,247,255,101,212,108,173,195,178,200,201,201,153, + 51,125,250,116,207,197,139, 23,155,147, 36,201, 54, 51, 51, 67,124,124, 60,121,254,252,249,236,194,194,194, 57,181, 41, 13,135, +203, 13,113,110,220,196,243,219,111,191, 37, 7, 13, 26,200, 27, 63,185, 31,199,210,202, 10,121,185, 89,136,124, 23,132,247,111, +223,192,185,137, 27, 86,172,222, 2,152,152, 84,187,144,100,241,178, 58, 94,171,126, 94,120,166,139, 71, 31,163, 38,205,221,120, +173, 26, 26, 67,163, 37,145,148,148,132, 43,151,131, 53, 97,175, 31,231,211,164,122,148, 60, 83,183, 37,120,252, 1, 18, 89,216, +231,106,165, 57,177,110,195,142, 5,187,246, 29, 89,180,120,246, 84,113, 87,247,222, 8,189,251, 7, 46,248,157,145, 41, 85,234, + 13, 60, 54, 54,133,101, 65, 30, 89,195, 58, 80, 42,149,154,242,227,169, 82,169,212,124,105, 75, 31, 62,124, 24,105,105,105,234, +184,184,184,155, 36, 73,158,173, 98,177,231,207,176, 3, 80, 15, 81,169,238,254,236,238,222,239,231, 91,183,132, 19,127,250, 73, + 61,110,252,248,133, 80,169, 52,224,243, 25,142, 88,204,130, 64,192, 13,127,242, 68,180,109,198, 12, 51, 66,173,190,115,164,138, +180, 1, 21,224,171,207, 58, 44,177,104,117,239,222, 21, 19,167,206,131,162,140, 69,235,217,171, 72,168, 52,208,217,162, 85,140, +132,184,196,196,142,179,151,253,124,113, 84,223,158, 46,174,142,245, 4,150,245,235, 65, 98, 99,131,172,140, 12, 60,121,245, 94, +187,250,204,197,176, 98,145,165, 83, 94, 25,154,166,139,130,220, 1,244,156,179, 24, 4,155, 13, 20,167,113, 40,153, 57, 84,191, + 93,103, 16, 28, 14, 40,134,134, 74,165,210, 37,232, 47,233,227,199,143,195,198,141, 27,119,207,207,207,143,213,183,111,223, 86, +151, 46, 93,162,191,164,239, 40, 20,138,142, 0, 32, 20, 10, 99, 77, 76, 76,236, 39, 79,158, 12,173, 86, 11,185, 92,142,188,188, + 60, 36, 37, 37,229, 78,158, 60, 89, 3, 0, 34,145,136, 63,124,248,112,163,234, 56,183,156, 79, 86,206, 27,110,191,221,140, 19, + 55, 58, 63, 51,164,190, 25, 39, 46,182,163, 43,189,125,203,249,100,165,145,157,108, 77,102,156,127,164, 84,118,107,239,209,139, + 23,216, 19,134, 12,163, 28, 36, 81, 62, 66, 43,230,124,117,188, 4, 65,124,150,156, 84, 71,145,245, 9, 10, 10, 10,150, 44, 95, +190,124, 64, 78, 78,142, 67,191,126,253,120, 46, 46, 46,120,254,252, 57,252,252,252,200,103,207,158, 37,202,100,178,165, 0,148, + 0,110,215,166, 78, 27, 55,110, 92,159,195,225,148,184,210,118, 22,255,188,243,210,165, 75,163,166, 78,157,138,122,245,234, 53, +139,136,136, 16,160, 6,215, 17,195, 48,165, 94,134,175, 9,130, 32,162,183,109,219,102,111, 99, 99, 67,220,184,113,131,100,179, +217,181,177,220, 28, 62,120,240, 96, 7,173, 86,251,253,180,105,211,224,225,225, 1,146, 36,113,252,248,113, 28, 60,120, 80, 87, +145, 85, 37, 34, 35, 35,223, 36, 38, 38,118, 91,184,112, 33, 54,110,220,184,100,225,194,133, 72, 76, 76, 68,100,100,100,208,151, +240,230,231,231, 43, 18, 18, 18, 12, 58,117,234,212, 54, 44, 44, 44,204,211,211,179,249,212,169, 83,177,126,253,122,230,225,195, +135,195, 1,220,248,255, 24,189,223,127,200, 62,198,165, 56,183, 86,175,217,252, 75, 67,167,250, 63, 76,153, 52,146,221,216,185, + 57,100,121, 73, 48,183,176,134, 67,157, 6,200, 72,207,196,205,155, 55,168,204,204,220,195, 20,139, 88,245,225, 67,118,202,151, +112,218, 59, 52, 64,122,122, 58,174, 95,191, 78,229,230,228,239,135,150,181, 58, 34, 62, 55, 13,122,232, 98,201,154,134, 42,178, +196, 87, 5, 11, 83, 83,211, 83, 70, 70, 70,105, 70, 70, 70,105,166,166,166,167, 0,157,102, 31,244, 42,115,119, 96,127,242, 26, + 62, 92, 8,161,176, 35, 56,156,249, 38,166,166, 55,140,141,141,179,186,119,239,174,222,187,119,175, 50, 34, 34,156, 78, 78, 78, +100,140,141,141,243, 74,247,175,136,179, 28, 76, 77,157, 12,197,182,205,127, 49,118,104,245, 68, 98,219,172, 64, 98,219,172,192, +216,193,237,169,216,182,217, 74, 83, 83, 39, 67,157,202, 89, 9, 26, 88,193,210,217, 2,187,154, 88, 18, 10,103, 11,236,106, 96, + 5, 75,157,207,189,106,183, 31, 69, 16,160, 80, 52, 13, 27,181,224, 44,225,160,217,108,246, 17, 7, 7, 7, 91,212, 44, 97,221, +103,156,227,129,122,227, 5,130,239,207,249,248, 76,140,125,248,112, 92,126, 76,204,152,188,232,232,145, 65,103,206,140,218, 57, +106,212,248, 49, 2,193,180,225,128,147,174,156,182,182,182,190,111,222,188,241,211,245, 85, 70,120,233, 92,159, 78, 13,236,111, +245,237,213,129,241,158, 62,148,241,158, 62,148,233,219,171, 3,227,212,192,254,214, 23,180, 17,193,102,179, 71, 27, 24, 24,156, + 18, 27, 24,132,138, 13, 12, 66, 13, 12, 12, 78,177,217,236,209,168, 58,134,234, 19, 78,115,115,243,215,214,214,214,105, 53,121, + 89, 88, 88, 4,214,160,156, 99,234,215,175,159,200, 98,177,182,212,240,154,174,138,211, 89, 36, 18, 69,139,197,226,164,178, 47, +145, 72, 84, 54, 49,148,185,129,129,193, 85,177, 88,188, 85, 23,206,223,151, 53,255,229,233,237,153, 33,191, 47,107,254, 75,249, +109,179, 6,155, 78,126,126,111, 85,214,172,193,166,147,117, 41,167,149,149,213, 67, 43, 43, 43,169,149,149,149,212,218,218,186, +202,151,133,133,197,107, 29, 56,133,134,134,134, 91, 13, 13, 13,211,196, 98, 49, 37,145, 72,210,196, 98,241, 22,148, 73,109, 81, +219,250,100,177, 88,235,155, 53,107,166,100,179,217,135,202,109,218,216,176, 97, 67, 37,135,195,217, 80, 67, 78,163,174, 93,187, + 82,193,193,193,140,135,135, 7, 3,192,244, 43,182,187,141,169,169,233, 13, 35, 35,163, 4, 67, 67,195, 29, 0,196,181,228, 36, + 0,140,182,183,183, 15,234,209,163,135,220,222,222, 62, 0,192,183, 95,177,156, 3, 6, 15, 30, 76, 39, 36, 36, 48, 12,195, 48, + 9, 9, 9,204,224,193,131,105, 20, 37,138,252,146,123,242,178, 25, 51,102, 48,207,158, 61, 99,158, 61,123,198, 4, 4, 4, 48, + 3, 6, 12,160, 1,124,247,133,247,121,124,173,115,119,105, 96,225,212,180,145,233,217,177,195,220,233,219, 87,182, 48, 43,150, +254,192,244,246,104,206, 52,105,104,122,209,217,217,220,249,107,112,254,178,116, 58,211,171, 91, 51,218,197,201,244,140, 75, 3, + 11,167,255,240,185,255,163,172, 90, 37, 15,210,127,119,192,217, 95,166,197, 79,197, 82,197,176,179,179, 67, 86, 86, 7, 33,135, +227, 46, 16, 8, 60, 89,108,246,131,236,140,140,185,197,143, 91,212,127,202, 84, 91,229,128,238, 4,126, 21, 75, 18,212,134,243, +147, 64,246, 90,114,214,132, 67, 39,206,202, 22,149,166, 85,170, 20,115,146,124,189, 3, 85,214,193, 39,156,246,246,246,223,211, + 52, 93, 95,215, 2,177, 88,172,216,228,228,228, 3,181,169,207, 70,141, 26, 49,197,238,109,226,107,182,251,223,209,151,254, 77, +156, 71, 55,183,176,107,210,162,233,162,208, 55, 17, 27,139,221,138,165, 88, 57,203,212,208,189, 71,247,229, 79,238, 63,252,117, +229,142,156,130,255,231,115,103, 65,199,152,182,175,192, 89,146, 36,180, 70,156, 92, 46,119,111,251,246,237,191,127,254,252,249, + 33,138,162,166,253, 75,251,231, 0, 54,155,189,176,113,227,198,173, 34, 35, 35,131, 40,138,218,136, 10, 18, 69,214,162,156, 75, +235,215,175,255, 35,143,199, 19, 20, 22, 22,230,164,164,164, 44, 7,112,246,191,173, 62, 93, 26,153,181,101,152,210,164,219,107, +223,125,204,126,249,213, 56, 25,154,162, 25,246,154,200,152,172,192,255,135,118,255,199,136,172, 98,161,181,255, 63,241,199,189, +244,156,122, 78, 61,167,158, 83,207,249,213, 57, 69,250,250,212,115,254, 3, 57,255, 81, 40,177,104,113,244, 85,161,135, 30,122, +232,241, 63, 7,133,190, 10,244,208,227,191, 14,101,173, 90,165,214, 44,162, 10, 85, 90, 19,147, 96,109,148,237, 93, 61,167,158, + 83,207,169,231,212,115,234, 57,245,156,255, 58,206,127,170,200, 42,235, 42,156,166,119, 29,234, 57,245,156,122, 78, 61,167,158, + 83,207,169,231,252,111,226,252, 95, 23, 90, 40, 39,180,244,174, 67, 61,254, 51,216, 62, 4,246, 0, 48,251, 18,146,255,142,253, +245,208, 67, 15, 61,244,208,227,255, 25,251, 81,137,235,240,191, 65,104,217, 1,232,136,162,133,111,223, 3,120, 12, 32,231, 11, +248, 44, 0,140, 36, 8, 98, 4, 0, 48, 12,115, 14, 69,179, 70, 50,117, 57, 88, 40, 20,166, 41,149, 74,171,226,207,233, 74,165, +178,236, 90, 6, 4, 62,159,205,198,148,121, 85,136,250,245,235,167,169, 84, 42, 43, 29,254, 62,143, 97,152, 16, 22,139, 21, 42, +145, 72,238, 71, 70, 70,250,213,228,196, 61, 61, 61, 39,178,217,236,181, 0, 64, 81,212,178, 7, 15, 30, 28,249, 27,219,173, 67, + 29, 59,155, 63, 52, 90, 13,153,150,145,189, 28,159, 39,242, 3, 0,236,242,130, 47, 65, 98, 81,241,231, 13, 51,253,170,206,163, + 83,211,253,171, 64, 91, 46,151,235,109,109,109,221, 63, 41, 41,233, 53,128,159,128,234,179, 26,215,169, 83,231, 59, 14,135, 51, +142,162, 40, 39, 54,155, 29, 77,146,228,137,196,196,196, 99,250,123,136, 30,122,232,161,135, 30, 58,136,173,207, 80, 35,161,213, +196, 28, 54, 12, 48, 26, 4,122,131,193, 29, 2, 56,253, 62, 11,169,186, 30,255, 77, 19,104,181,100,209,127,242, 88,160,110,124, +100,237,239,223,191,191,195,172, 89,179,208,185,115,103, 60,127,254,188,211,225,195,135, 39,159, 61,123, 54,132,166,233, 7, 0, +158, 3, 58,165, 82, 16,163, 40, 79,203,216,254,253,251,247, 90,187,118, 45,187,121,243,230, 80, 40, 20,120,248,240,161,251,134, + 13, 27,182, 62,125,250,244, 46,128,147,197,130,160,210, 5,240,148, 74,165, 85,201, 98,156, 4, 65, 88, 13, 31, 62,252,101, 89, +113, 85,188,190, 26,193, 48,204, 51,130, 32, 2, 40,138,122,126,254,252,249,196, 38, 64,135,233,245,121,231,231,198,106, 28,202, +115,170, 84, 42,171,203,191,175, 3, 71, 32,128,170, 32, 31,157, 38,253, 37,122,239,252,178, 8, 4, 77,130, 13, 38,199,115,205, +214, 16, 0,161, 41, 41, 41, 33, 30, 30, 30,177, 53,109, 97, 54,155,189,246,230,205,155,182, 12,195,160,111,223,190,107, 1,252, + 93, 66, 75,208,177,173,219,131,171, 23, 78, 9, 11,179,211,208,239,219, 81, 39,162, 18,211, 39, 2,184,240,137,104,234, 15,107, +130,192,162, 25,235, 78,178, 1, 96,247,210,177, 63,109,233,131,237,243,110, 35, 21,128,103,177,248, 1,128,223, 1, 60,216,213, + 31,214, 0, 22,207, 88,119,146, 0,128, 61, 75,199, 46,218,213, 31,219,102,222,168,113,218,138, 31, 39, 78,156,184,125,237,218, +181,108, 91, 91, 91, 36, 39, 39,247,107,214,172, 89,227,252,252,252,102,168, 34,136,184, 94,189,122,103,186,246, 24,216, 96,232, +136,209, 6,150, 22,166, 72,145,102, 26,157, 57,117,104, 58,251,217,195,254,113,113,113,163,244,247, 16, 61,244,208, 67, 15, 61, + 42, 65,237, 51,195,183,182,133, 72,166,193, 96, 14,155,248,174, 75,219,102, 61,199,124,211,149,213,204,165, 17,222,134, 71,244, +185,114,255,197, 6, 86, 64,248, 61,146, 98,142,137,121,184, 28, 40,173,122, 38,140,150, 4,231,246,229,147, 69, 35,225,228,177, +236,151, 47, 95, 54,106,211,166, 77,233,210, 48, 61,123,246, 68,207,158, 61,137,221,187,119,187,221,190,125,219,237,224,193,131, +154,123,247,238,253,129,170,243,163,120, 55,108,216,112,195,246,237,219, 5, 30, 30, 30, 16, 8, 4,165, 27, 36, 18, 9, 6, 14, + 28,136,129, 3, 7,178, 83, 82, 82,250, 94,189,122,181,239,239,191,255,174,142,143,143, 95,136,191,178, 52, 87,137,229,203,151, +183,173,224,231,155, 4, 65,124, 36, 73, 50,200,205,205, 45,177, 49,208,104,250, 55,157,239,252,216,197, 89, 60,119,201,225, 10, +121, 56,124, 62,142, 78, 44, 26,171,203, 10,173,216,251, 55, 32, 49, 50,204, 50, 48, 52, 12, 1, 16, 10, 32,132, 97,152,208,232, +232,232,136,166,128, 91, 71, 83,214, 31,135,114,232,150, 53, 16, 91, 72, 76, 76,132,177,177,177,200,195,195, 67, 74, 16,196,202, +135, 15, 31,126,237,128,188, 14, 43, 23,253,200,203,137, 11, 65,234,187,103,152, 63,194,221, 96,238,142, 63,127, 85,170,181, 23, +170, 58,136, 32, 88,172,223, 3,104, 31, 20, 45,198,187, 60, 43, 43,203, 3, 0,204,205,205,249, 0, 30,108,121,129,111,230,117, + 33,190, 36,183, 27,143,205,102,239, 58,124,248,240,212,239,190,251,174,104,233,136, 39, 79, 32,145, 72,176,122,245,234,122, 11, + 22, 44,240, 37, 73,114, 78,101,150,172,174, 61, 6, 54,216,182,241,215,102, 5,217,121,170,125,187,206,190,178,115,109,194,154, +225,189,192,112,155, 70,101, 67, 81,212,119,122,203,150, 30,122,232,161,135, 30, 53,177,102, 85, 43,180, 26, 91,224, 72,107, 87, +231,145, 99, 6,184, 11, 90,184, 54, 7, 79,240, 87,234,150, 54,109,219,162, 77,219,182, 44,159,194,130,222, 47, 95,189,233,125, +254,246,115,149, 92, 27,127, 54, 50, 19, 19,117, 45, 85,201,162,180,107,191,181,238, 33,203, 77, 23, 2,128,216,196, 74,185,244, +114,234,253, 46, 93,186,192,193,193,129,119,239,222,189, 41,213, 8,173,165,239,223,191, 23,176,217, 85,231, 67,181,179,179,195, +240,225,195,209,164, 73, 19,126,247,238,221,151, 86, 38,180,132, 66, 97, 58, 65, 16, 86, 0, 96,102,102, 70,173, 92,185, 50,136, + 41, 2, 0, 48, 12,195, 60, 99,177, 88,207,105,154,126,241,231,159,127, 38, 53, 3,172,250,181,105,242,248,199,241,195, 13,152, +243, 91, 43, 21, 9,202,252,252, 10,127, 55,144,136, 51, 68, 98,113,136,192, 64, 24,138,162,181,188, 66, 29, 28, 28, 34,154, 1, + 14,237,155,212,191,189,123,222, 88,195, 67,211,126,173,182, 46, 91,183,110,221,184,101,203,150, 66,138,162, 32,147,201,176,103, +207, 30, 99,145, 72,100,220,191,127,255, 21,101, 59,128, 11,208, 98,152, 29,123,218,170, 20,106,102, 45, 58,146, 73,215, 78,109, +227,134, 15,236,111,212,182, 99, 87, 68, 61, 56,142,236,236, 2,228,229, 22,130,166,233,207,242,250,204,188,129,180, 93, 94,216, +176,123,201,216,197, 4,139, 69,184, 13,249, 9,131,108,242,102,239,221,187, 55, 28, 0,151,207,231,151,237,135,118, 34,123,215, + 13,141,250,116,197,158,101,227,193,208, 52, 3, 96, 67, 13,172, 89, 86,134,134,134, 87,110,223,190,221,161, 93,187,118,120,254, +252, 57, 98, 98, 98,240,227,143, 63,170,103,206,156,201,155, 48, 97, 2, 49,127,254,252, 89,191,255,254,251,121, 0, 79, 63,187, + 16, 56,156,113,223, 14, 29,197, 47,204,205, 87,170, 85, 26,181,153,133, 9,173,146, 41,229,153, 57,249,202, 81, 99,191, 87,135, + 7,190, 24, 7,224, 51,161,245,133,245,169,135, 30,122,232,161,135, 14, 96, 24,166, 29, 0, 75, 0, 25, 4, 65,188, 42,251,189, +120,151,146,213, 90,202,127,207, 68,145, 87,202,188, 12, 93, 38,138,194,125, 44, 1, 80, 0, 94, 18, 4,145,243,133, 69,172,122, +233, 29, 63, 63, 63,166,236,123, 25,161,197, 48, 12,195,104,179, 62, 50,170,200, 27,140,252,213,129,207, 94,138,240, 11,140,244, +229, 89,230,197,201, 95,152,198, 22, 85,175,194,254, 77, 19,104,199,182, 4, 51,163, 29,152, 57,221, 77,148, 47, 95,190,188, 71, +211,180,159, 79, 87, 48,204,219,147, 12,243,246, 36, 51,175, 19,152,243,231,207,223,244,245,245,245, 59,118,236,152, 31,128,234, +226,148,210, 10, 94, 5, 48, 47,172,192, 84,134,247,239,223, 51,123,247,238,101,150, 44, 89,194, 28, 58,116,136, 65, 53, 25,212, +251,246,237,251, 48, 44, 44,140,153, 48, 97, 66, 16,170, 72, 12,232, 2,136,199,213,179,121,167, 58,179, 85,163,254,174, 5,147, +211, 77, 88,225,249,219,218,218,126, 82,158,245,206, 54,204,206,246,206,204,145,222,109, 82, 25,134,185,201, 48,204,122,134, 97, + 70, 49, 12,211, 4, 0, 90, 3, 70,223,218,154,127, 80,158,221,166, 80, 79,235, 88,237,186,119,173, 91,183,110,188,112,225,194, +108,181, 90,205,196,198,198, 50,251,246,237, 99,238,220,185,195, 92,190,124,153,113,119,119, 79, 41, 83, 94,235,201, 77, 28,211, +212, 7, 87,169,106,211,139,184,108,246,206, 87,119,206, 51, 31, 30,159, 99, 94,158,246,101, 78,252, 60,134,153,245,109, 7,141, +145, 72,160, 4,208,163,178,227,102,118, 65,163, 38,245, 44, 35,227,227,227, 25,141, 70,195, 76,154, 52,137,233,219,183, 47,211, +167, 79, 31,166, 87,175, 94, 76,207,158, 61,153, 30, 61,122, 48,247,239,223,103, 82, 82, 82,152, 94, 93,219,200,188, 92,208,182, + 6, 69,115,117,116,116, 76,141,141,141,101, 52, 26, 13,115,239,222, 61,230,248,241,227,204,189,123,247, 24, 31, 31, 31, 6,192, +145, 25, 51,102, 40,114,114,114,152,190,125,251, 38,161,130,172,241,142,142,142, 17, 97,145,137,137, 91,214, 29,184,127,116,231, +169,251, 23,207,223,185,127,229,214,203,107,151,111,189, 58,251, 34, 56,250,178,163,163, 99, 68, 5,237,255, 69,245,169,135, 30, +122,232,161, 71,245, 90,164, 88,104, 13, 40, 54,118, 12, 96, 24,166, 87,185,239, 3,138,133,211,103,223,125,124,124,150,148,253, + 94,178,143,143,143,207, 18, 0, 76,167, 78,157, 78, 49, 12,211,232, 43, 20,127, 90,249, 87,141,102, 29,146, 73, 47,193,115,238, + 15, 46,165,133, 54,243, 61,232,220,120, 64,108, 3, 5, 33, 65,150, 52, 30,239, 30, 95,168,122, 33,137, 98, 92,127, 15, 46,128, +123, 17, 17, 17,120,247,238, 29, 18, 19, 19, 97, 96, 96,240,217,126, 79,158, 60,129, 72, 36,130,173,173,173,110, 74, 87,253,233, + 56, 23,210,198, 17,146, 78, 30,200, 28,243, 3,238,221,187,135,244,244,116,240,120, 60,240,249,124,144, 36, 89, 45, 31,139, 85, +180,226,111,137, 21,171,162,125, 60, 0,142,192, 76,114,117,247,138, 57,245, 89,207,252,184,138,132, 15, 72, 81, 82,186, 89,242, + 36, 98, 24,136, 13,164, 34,145, 65, 8,138,221,133, 0, 66, 9,130,136,106, 13,112,197, 18,225,213, 63,214,204,183, 97, 7,222, + 19, 42, 62,132, 84,200,209,171, 87,175,233, 0, 86, 48, 12,147,219,178,101, 75,235,181,107,215,154, 38, 39, 39,227,237,219,183, + 56,123,246,108, 6, 89,116,162, 4,195, 48,171, 0,160, 35, 32, 52,177, 52,185,181,243,151, 57,134,120,112,134, 95,155, 94,100, +236, 50,240,218,176, 9, 51,102,110,159, 51, 16,178, 2, 5, 78,222, 9,196,205, 55, 31, 7, 1,120,130, 42,226,222,118, 61,197, + 7, 32,163,231,208,161, 67,131, 30, 61,122,100,113,240,224, 65,144, 36, 89,225,235,224,193,131,184,251,248,205,108, 0,175,117, + 44,150, 93,253,250,245,239,190,120,241,194,210,192,192, 0,119,238,220, 65,110,110,110,169, 37,107,226,196,137, 68,110,110,238, +232, 61,123,246, 12,139,139,139,219,248,248,241,227, 44, 20,173, 5,249, 73, 71, 96,179,217, 31, 73, 82,211,212,214,165, 17,103, +196,192,174, 93, 11,179, 66, 32, 49,111,137,103,193, 31,175,230,230,100, 41,216,108,246,199,178,251,127,141,250,212, 67, 15, 61, +244,208,163,102, 32, 8,194,143, 97, 24, 47,130, 32,252,202,255, 86,254,115,201,126,190,190,190,165,223, 75,142, 89,191,126,253, +186, 50,223,229, 95,169,120, 85, 6,195,119, 47, 86,144,221, 43,218, 73,245,246, 34, 84,239,174,128,231,216, 5,252, 38,131,192, +118,116, 71, 66,200, 3, 4,223,216,130,164,240, 39, 96,104, 10,182,141,219,235, 90, 16,101,211,166, 77,161, 84, 22,133,102,169, + 84, 42,240,196,166,202,249,211,198, 10, 1,128,230, 8, 85,101, 20,172, 78,132,134, 93, 60,209, 62,141,193, 75,235, 34, 67, 69, +251,180,162,227,214, 76,154, 4, 30,143, 7, 30,143, 7,162, 56,244, 71, 23,161, 69, 20,239, 76, 23,185,175, 42, 42, 4, 33, 23, +112, 79,158, 94,225,221, 94, 16, 23,202, 87,133, 61, 67,138,138,102,174,166, 81,215,116, 41,175,129,216, 32, 89,100, 96, 16, 42, +146,136, 75,133, 22, 65, 16, 31, 1,128,225,114,143, 29, 95,229,221, 82,156, 22, 45, 86,190,186, 7,169,146,214, 84, 66,179,234, +198,141, 27, 86, 28, 14,199,134,162, 40, 36, 36, 36, 32, 60, 60, 28,219,182,109, 75, 43, 40, 40,232, 30, 24, 24, 24, 89, 86, 59, + 82, 34,254,217, 99,171,231, 52,224,132,248, 11, 85, 31,195,106,220,123, 44, 92, 7,247, 29,212,221,237,218,244,241,203, 48,248, +155, 62,152,208,189, 25, 19,155,146,173, 4,112,167,216,244, 90, 29,146, 3, 3, 3,123,119,235,214,237, 68,171, 86,173, 92, 24, +134, 65,139, 22, 45, 48,122,244,104, 28, 59,118, 12,193,193,193,200,207,207,215,220,190,125,123, 43,128,195, 58, 22,203,192,212, +212,244,230,253,251,247, 45, 13, 12, 12,112,251,246,109, 40, 20, 10,216,218,218, 98,230,204,153,252,245,235,215, 31,205,207,207, + 31,225,235,235, 43,140,141,141,221,121,235,214,173,122, 40, 90,119,238,179, 78,160, 86,171,247,159, 60,118,100,251, 76,239, 89, +246,247,159,191,189,167, 42, 44, 48,118,116, 76,204,183, 52,149, 24,110,253,109, 85, 93,181, 90, 61,189,226,250,124, 88,171,250, +212, 67, 15, 61,244,208,227, 51, 84,169, 69,202,138,167,242, 98,171, 38, 34, 13,128,194,199,199,103, 41, 65, 16,126, 62, 62, 62, + 75,125,125,125, 21, 0, 82,254, 14,145, 85, 42,180,188,188,188,252,253,252,252,224,229,229,229, 95, 41, 5, 77, 65, 19,251, 8, +154,216, 71, 16,117,154,141, 63,125,199,148, 59,121,186,214,165, 27,184,250,206,125,149, 74,197, 57,114,228, 72,105,220, 22, 0, + 80, 20,245,213, 91,177, 38, 66,171, 88,232,125, 86,136,250, 2,137,255,254,121, 35, 58,154, 83,114,174,250,201, 85, 36,171,104, +114,227, 7,141,252, 85, 46,243,123,101,156,151,231, 78, 71,226,227,187, 48,144, 72, 18,167, 62, 10, 45,181, 98, 21,139,172, 24, + 0,168, 39, 48,188,183,119,206, 96,119, 27, 30,120,234,107,231,144,162,162, 85,123,227,180,135, 43,233,108, 96, 24, 6, 49, 49, + 49,144,203,229, 8, 8, 8,192,133, 11, 23, 50, 42, 16, 89,168, 47,144, 60, 60,244,211,184, 14, 70, 5,169, 60,245,171,187, 72, + 81,209, 58,185,186, 44, 90, 12,238,194, 99, 17,183, 9, 22, 91,212,179, 99, 99,204,253,126, 8,182, 28,250,147, 84, 91,117,245, +218,126,229,250,200, 66,149,102,169,142, 34,171,212,216, 24, 24, 24,216, 44, 48, 48, 80, 0,192,115,244,232,209,215,135, 13, 27, + 6,127,127,127, 92,189,122,213, 25,128,180,120,191,213, 40, 90, 40,251,119, 0,209,149, 25, 30,121, 60,222,233,187,119,239, 54, +183,179,179,195,221,187,119,161, 80, 40, 48, 99,198, 12,181,183,183, 55,111,226,196,137, 68, 94, 94, 94,169, 37, 43, 32, 32, 32, +171, 50,145, 5, 0,201,201,201, 55, 46,156, 61,222,185, 91,183,110, 67, 26, 56, 55, 49,138, 46,200, 79, 55, 48, 16,138, 30,251, + 63,224,189,122,241,116,103,114,114,242,203,138,235,243,158,206,245,169,135, 30,122,232,161, 71,229,208, 73,139,148,179, 76,213, + 4,101,142,227,250,250,250,134,251,250,250,126, 98,241,250, 66,148,159,117,120,173,100, 76,171, 85, 30, 45, 42, 47,225,243, 19, +160,233,154,156,236,103,191,153,154,154,146, 34,145,232, 19,161, 69,235,200,153,125,233, 20,162,127, 28, 91,106,201, 42,177,108, +161,223,196, 47, 18, 90, 52, 77, 7, 0,248,164, 16, 6, 86,141,199,108, 29,232,210,165, 89, 3,123,150,246,236, 54, 36,201, 73, +229,138,247, 26,229,187, 2,102, 80, 68, 5, 65,214,165,156,164, 22, 66,177, 40, 94, 36, 17,151, 23, 89,113, 0, 32,182,118, 30, +182,177,127,147,238,110, 77, 26,178,200, 51,155,145, 44,215, 22,250, 68,104, 52,209, 50,230, 98, 37,117,184,162, 79,159, 62, 43, +204,205,205,133,219,183,111, 55,118,116,116, 4, 73,146,234,242, 34,203,192,170,241,152,109,131, 93,187, 52,182, 49,101,105,207, +239, 64,162,130,146,111,139,214, 30,213, 69,100, 89, 24, 75,110,237, 93,247,163,200, 64,192,133, 82,169,196,250,221,231,113,251, +105,152, 87,102,216,229, 91, 0,110,125, 65,135,156,234,229,229,181,101,245,234,213,208,106,181,152, 50,101, 10, 62,126,252,120, +251,253,251,247,219,234,214,173,187,240,167,159,126,178,179,177,177,193,200,145, 35,121, 90,173,118, 98, 37, 28,191,157, 60,121, +210,203,205,205, 13,254,254,254,200,205,205,133,173,173, 45,188,189,189,249,190,190,190, 71,243,243,243, 71,172, 91,183, 78, 24, + 19, 19, 83,165, 37,235,147,126, 77, 81,107,246,109,249,113, 97,187,142,238,172, 15, 31, 34,201,132,246, 30,172, 7,119,175, 62, + 50, 55, 55, 63,154,144,144,240, 87,125, 14,105, 81,227,250,212, 67, 15, 61,244,208,227,235,128, 32,136,107,197,113, 87,159, 88, +185,202,139,176, 18,139, 85,217,239,229,247, 47,222,254, 53, 30,150,247, 87, 32,188, 62, 77,239,224,229,229,165,243,180,122, 90, +150,161,147,120, 42,143,111,154, 64,107, 47, 1,103,169, 7, 11, 60,177,169,114,224,234, 59,247, 43,219, 87, 44, 22,235,108,209, +162, 85,202,234, 26,165, 70, 66,171, 56, 70,235, 38,195, 48,159, 8, 45, 99,235,198, 30,139,127,154,179,213,125, 88, 63, 86,218, +247,157,144, 91,168, 82,253,244,150,164,147,228, 85,139,172,162, 81, 92, 27,107, 32,150,132, 10,197, 6,101, 69, 86, 2, 0, 8, +173, 26,182, 95, 52,119,230,238, 30, 99, 6, 18, 25, 51,220,145,147,171, 80, 45, 12, 39,137,100, 5, 51, 34, 2,120, 80, 17,221, +253,251,247,247, 1,216,231,225,225,145, 38, 22,139, 81, 88, 88,248, 89, 27,148,148,183,203,176,126,172,180,169, 29,144, 45,211, +168,126, 10, 39,145,162,160, 79, 87, 39,178, 44, 77, 12,111,237, 93,251,163, 65, 74, 82, 28,120, 60, 30, 36, 18, 9,238, 60, 9, + 69,102,248,149, 47, 17, 88, 96,177, 88, 43,125,124,124, 86,204,156, 57, 19, 89, 89, 89,184,122,245, 42,190,249,230, 27,156, 58, +117,202,241,250,245,235, 91, 60, 61, 61,193,102,179,225,231,231, 7,173, 86, 27, 85, 9,205,144,105,211,166, 45, 28, 54,108, 24, + 94,190,124, 9,169, 84,250,137, 37, 43, 55, 55,119,244,238,221,187,135,197,198,198, 86,107,201, 42,135,246,245, 27,182,230, 45, + 89,190, 9, 42,121, 58, 39, 35,249,185,255,189, 59,172,103,217,217,217, 6, 0,242,106, 91,159,122,232,161,135, 30,122,232,108, +213,170, 76,139,100, 20,139,168,140,138,190,151, 17, 88, 21,125, 39,202, 89,193,212,229,182, 7,255,157,231,164,147, 69,139, 99, +237, 10, 50, 45,172,140,208, 74,255,100,187,208,208, 76, 39,215,161,150, 4,103,239,225,210, 60, 90,194,172,172, 44,161,133,133, +133,178,172, 64, 48, 48, 48,128,157,157, 29,114,114,114,176,127,255,126,160,250,160,104,210,104,216,120,180, 31, 51, 5,175, 28, +248, 96,180,154, 82,203,214,222, 73,147, 62, 17, 91, 60, 30,175, 36, 54,172,186, 65,247, 69,177,165,233, 25, 0,166,181,115,131, + 95,133, 98,241, 36,161, 69, 29,139,185, 63, 78,229,198,166,171,112,223,125, 73,238,249,223, 22, 75, 18, 25,201,204, 4,228, 61, +173,134, 47,250,219, 61,199,203, 91,178,146, 90, 57, 55, 88, 38, 52, 16,126,207, 55,171,103,227, 51,255, 71,110,108,154,138,184, +223,254,167,252, 11,191,255,100, 16, 3,195,133, 73,200,125,160, 67,243,172,248,230,155,111, 86, 48, 12,195,208, 52,189, 28, 0, +202,150,119,190,247,247,220,232, 84, 37,238,185, 47,203,185,240,219, 98,195, 68, 84, 93, 94,139, 22,131,187, 88,155, 26,221,218, +187,110,166,129, 52, 57, 30, 2,129, 0,134,134,134, 72, 76,203, 3,151,195, 86,124, 97,127, 19,116,237,218,117,241,143, 63,254, +136,208,208, 80,204,152, 49, 67,154,144,144,112,241,204,153, 51, 51,126,249,229, 23, 78,223,190,125, 33,149, 74,177, 97,195, 6, +237,147, 39, 79,214, 1,216, 80, 97,127,228,112,166,254,250,235,175, 76, 74, 74, 10, 17, 19, 19, 3, 91, 91, 91,204,154, 53,139, +191,110,221,186,210,152,172,154, 88,178, 74,144,156,156,236,127,251,238, 51, 12,186,177, 21,164, 86,229,159,155,149,240,232, 93, +116,142,191, 25,159,191,192,190,117,139, 90,213,167, 30,122,232,161,135, 30, 95,197,138,245,170,170,239,255, 5,168,200,117,168, +147,208,138,218,177,108,178,243,228,153,139, 32,114,236, 2, 85,196, 37,208,133,105,165, 22, 45,161,196, 20,102,117, 93,144, 43, + 83,225,220,189, 55, 0, 16, 85,147, 82, 21, 20, 20,160, 77,155, 54,216, 53,177,113, 15,101, 65,150, 80, 4, 64, 37, 48, 82, 94, +230,119,189,127,253,250,117, 57, 77,211,167, 1, 92,175,134,102,101,243,230,205,119,110,218,180,137,239, 50,102, 50, 10,159, 63, + 46,111, 65,129, 72, 36,130, 64, 32, 64, 72, 72, 8,238,223,191,175, 6,176,178,154, 6,125, 65,146,100,240,153, 51,103,146, 26, + 53,176,239,215,166, 85,203,217, 75,151,248, 24,190,125,124, 27,203,215,237,164, 27,181,237,155,183,254,212,229,130, 60, 73,221, +158, 10,233,251, 32, 29, 78, 53,184,156,200, 74,105, 90,191, 78,143, 86,174,205, 23, 45, 95,190,204, 40,252,241, 29,252,242,251, + 94,198,217,173, 87,222,239, 23,174,228,103, 26,212,235,163, 76,127,247, 82,151, 58,244,247,247,223, 7, 96, 95,201,247,242,229, +245, 89,189,141,110,220,174, 95,206,250, 83, 23,100,249,134,117,123, 85, 85, 94, 75,151, 33,157, 29, 44, 77,111,237, 88,243,131, + 65,106,114, 2, 4, 2, 1, 36, 18, 9, 18,164,185, 88,177,245,172, 76, 67,211,253,190, 84,104, 25, 26, 26, 10, 52, 26, 13,118, +237,218,133,132,132,132, 78, 0, 18, 94,191,126,189,119,212,168, 81,219, 91,180,104,209, 52, 60, 60, 60,170,176,176,112, 38,128, +119,149,145,152,152,152,116,178,180,180, 36,158, 61,123,134, 31,126,248, 65, 61,107,214, 44,222,132, 9, 19,136,156,156,156,218, + 90,178, 0, 0,246,246,246, 30,189,123,118, 68,151,222, 51,252,213,202,220, 71,177,239,142,250,179,152,167,194,218,214,167, 30, +122,232,161,135, 30,255, 26,212, 46, 49,184, 7,192,105,108,142,233,205,237,121,169,199,126,155,197, 20, 68, 7, 48,138,151,251, +152,252, 75,223, 51,215, 54, 76, 96,174,239,152,203,204, 24,208,156,105,106, 69,164, 54, 54,199,116,143,207,133,219, 39,171,123, +127,211, 4,218,222, 13,193,244,110, 8,102, 64, 99,104, 1, 44,109,221,186,245,101,239,246,127,229,209,242,110, 15, 6,192, 15, + 0, 36,149, 20,171,162, 21,195,109, 1,236,111,211,166, 13,249,224,193, 3,230,253,136, 94, 76, 96, 83, 11,102,230,204,153,204, + 47,191,252,194,140, 29, 59,150,177,180,180, 36,139, 43,194,182, 58,206, 65,131, 6, 57, 0, 64,157, 58,117, 76,218,186, 52, 74, + 13,185,119,149,121,116,108, 59,115,200,123, 40,211,161,133, 75,166, 77,211,110,193, 34,219, 38,173,170,169,190, 82, 78, 27, 27, +155, 37, 12,195,244, 99, 24,198, 22, 0,156,157,205, 37,173,155, 54, 74, 9,190,123,149,121,124,124, 39,115,200,123, 40,211,177, +101,179, 44, 7, 23,207,119, 66,171,166,237,117,225,172, 8, 21,150,215,181,105,166,117,163,206, 65, 85,148,183,148,179, 65,251, +145, 87,146, 82,210,152, 23, 47, 94, 48,215,175, 95,103, 30, 63,126,204, 28, 59,115,133,169,219,110, 68,161, 69,139,193, 93,106, +208,117, 42, 43,167,241,128, 1, 3,152,168,168, 40,166,127,255,254, 12, 0,227, 90,114, 94,142,141,141,101,194,194,194,152,165, + 75,151, 50, 0,142,252,248,227,143,138,188,188, 60,166, 87,175, 94, 9,197, 2,139, 83,155,114, 58,213,183, 95, 63,100, 96,215, +149,222, 63, 12,243,248,210,250,252,138,208,115,234, 57,245,156,122,206,127, 3,231,255, 50,108,139,173, 90, 37,239,173,117,202, +163,229, 15,144,200,194, 62, 87, 43,205,137,117, 27,118, 44,216,181,239,200,162,197,179,167,138,187,186,247, 70,232,221, 63,112, +193,239,140, 76,169, 82,111,224,177,177, 41, 44, 11,242,200,106, 74, 81,156, 71,235, 19, 4, 6, 6, 26,152, 53,252, 43, 7,211, +135,162,220,172,123,107,120,130, 82, 0,211,222,188,121,179,201,211,211,115,237,247, 93,218, 15,245,238,220, 3, 90,173, 22,199, +142, 29, 67,124,124,252, 69, 0,203,116,181,184,133,134,134,102, 54,107,232, 56,135,203,230, 44,154, 57,118,136,101,198,199,183, + 72,138, 8, 4, 0,168, 84, 10,109,106,212, 35,183,154, 20, 78, 36, 18,189,176,180,180,124,111,105,105,153,211,184, 65,157,105, + 2,112,151,207, 24,253,173, 85, 86,236, 59, 36,134, 23,121, 70, 85, 74,185, 38, 41,234, 65,211,218,180,174,163,163,163, 64,204, +197,244, 10,203,171, 86,106,211, 62,188,107,165, 11,143, 92,165, 94,183,106,203,177, 62,107, 22, 77, 18, 24, 25, 25,225, 77,216, + 7, 44,223,124, 74,166, 80,107,251,101,134, 94,254, 42,238, 49,134, 97,160,213,106,117,158,232, 80, 9, 22,187,185,185, 53, 89, +187,118,173,243,196,137, 19,241,165,150,172,178,136,142, 77,246,177,175,227,212,236,195,251, 55,158,102, 34,222,137, 47,169, 79, + 61,244,208, 67, 15, 61,254, 53, 24, 80,108,204,153, 86,230, 61, 16, 58, 62,245, 35, 44, 29,114, 0,171, 27,176, 11,247, 46, 89, +187,101, 5,139,216, 58,137,102,152, 63, 72, 22, 86,197,100, 33,227, 11, 11, 39,231,114, 64,246, 25, 60,150, 3, 0, 92, 78,237, + 6,200, 98, 68, 1, 24,118,224,233,203,118, 7,158,190,252,185,248,183, 53, 0,106,228,203, 53,228, 32,204,189,153,147,125,215, +214,205,133,108, 74,129,164,136,143,200,150, 41,113, 39, 60, 62,151,197,176,254,168,105,161, 98, 98, 98, 30, 2,128,181,177, 65, + 68,215,102, 13,235,118,107,211,220,128, 75,168,145,244,246, 13,242, 20,106,220, 14,143,207, 3, 65,212, 58,160,250,107,149, 55, + 45,244,202,171, 63, 65,244, 34, 8,226,238, 82,239, 49,130, 21,155, 79,127, 85,145, 5, 64,158,156,156,156, 37,151,203,205, 83, + 82, 82,212,168,125,146,184, 15,249,249,249, 45,230,206,157,187,122,225,194,133,139,126,251,237, 55, 94,109, 98,178, 42, 67, 78, +114,252,165,110,205,191, 94,251,235,161,135, 30,122,232,241,175,192,180,114,239,208, 89,104,149, 10,134,116,100, 0,152,233,228, +196,204,143,142,134,250,107,149,172, 34, 75,215, 23,226, 21,128,129,181, 62,154, 69, 20, 60,143,138, 47,124, 17, 21, 95, 8,154, + 97,104,134, 81,177, 88, 72,148,105, 52,235,162, 98,146,107, 63,235,142, 32,168, 87, 31, 18, 20,175, 63, 38, 42, 25,154,102,104, +134, 81, 19, 4, 82,181, 90,122, 93,120, 76,252,149,255,134,242,102,134, 94,126,234, 71, 18, 93,159,190, 8,155, 47,147,105,118, +102, 70, 92, 14,248,138,237,162, 13, 13, 13, 29,215,169, 83,167,201, 20, 69,237, 5,160,253, 2, 46, 53, 73,146,139,215,175, 95, +127, 49, 52, 52,244,108, 64, 64,128,244,107,136,172,191,181,253,245,208, 67, 15, 61,244,248,167,162,118,139, 74, 87,134,175, 41, +178,254, 27, 17,246, 33,174,205,223,193, 27,254, 33,206,245,127,161,188,105, 17,151, 94,167, 1,163,255,166,234,189, 77, 81,212, +237,175, 41,170,111,222,188, 89, 31, 21, 44,171,243,223,214,254,122,232,161,135, 30,122,252, 99, 49,173, 50,241,197,209,215,141, + 30,255, 0, 48, 95, 75,100,233,161,135, 30,122,232,161, 71, 45, 80,169, 69,139, 64,229, 51, 7,238,214,224, 15,106, 51,251,224, +174,158, 83,207,169,231,212,115,234, 57,245,156,122,206,127, 29,231, 63, 17,182, 40, 10,136,191, 86,252, 14,134, 97,246,255, 39, +254, 88, 63,245, 85,207,169,231,212,115,234, 57,245,156,122, 78, 61,231, 63, 29,159, 5,194,151,164,119, 96,233,235, 70, 15, 61, +244,208, 67,143,191, 17,130,226, 87,109,183,235,161,199,255,162,216, 42, 21, 92,181,137,209,106, 84,252,254,225,111, 44,172,183, +173,173,237,180,150, 45, 91,186,240,120, 60, 86, 65, 65,193,170, 7, 15, 30,172, 44,191, 83,215,102,156,215,108, 22, 28,254,250, +133, 0, 8, 54,192, 98,129, 98,144,244, 56, 68,209, 86,223,238,255,213,112, 20, 25, 89,254, 73,176,216,124,138,212,128,210,106, + 80, 20,110, 85, 4,154, 38,227, 41,141,170,111,101, 7,219,184, 13,169, 75, 82,244,111, 0,179, 11, 96,253, 8,208,187, 9,112, +102, 48, 32,247, 16, 96,255, 0, 54,243, 59, 40,226, 39, 14,151,189, 68, 26,120, 62,241,159, 80, 97,231,206,157, 99,127,201,241, + 35, 70,140,168,112, 1, 81, 59, 59, 59, 63, 3, 3,131,134,149, 29, 39,147,201,164, 82,169,212,243, 31,222, 31,187, 1,216, 1, +160,121,185,223,223, 1,152, 3,224,222,151,254,129, 7,192,177, 6,166,243,128,159, 0, 64, 3,252,158, 6,236,243,255, 47,138, + 49,180,180,180,124,196,225,112,156,101, 50,153,172,160,160,192,201,208,208, 48, 90, 44, 22,139, 73,146,140,202,200,200,232, 86, + 67,186, 31,241,215, 82, 90,139, 0,236,174,225,118, 61,244,248, 95,193, 23,205, 58,108, 92,116,127,128, 7,128,110,237,218,181, +179,150,201,100,120,247,238, 93, 26,128, 71, 0,252,139, 95,145, 95,163,164, 44, 22,107,227,150, 45, 91, 22,204,154, 53,171,116, + 49,232,144,144, 16,184,185,125,158, 35,148,205,130,195,131,171,119,173, 94,133, 70,162, 93,175,225,197, 66,139, 5,200,164,240, +236,221,190,182, 69, 48, 52, 53, 53, 93, 69, 16,196, 8, 22,139, 85,237,160, 70,211, 52,197, 48,204,185,156,156,156, 21, 0, 10, +106,242, 71, 98, 3,129,150,164,168, 10,255,131,195,102, 83, 50,185,170,210,180, 23,102,102,102, 1, 44, 22,171, 65,217, 5,179, +129, 79, 23,208,174,108, 27, 73,146, 73,153,153,153,186,136, 80, 33,139,195,155, 67, 16,188,222, 96,209,141, 1, 2, 4, 88,145, + 52,165,190, 67,147,154,109, 0,148, 95, 34,178,108,235, 56, 61,158,183,108,189, 67, 88,196, 59, 44,245, 30,139,223,118, 28,193, +146, 57,147,177,109,255, 41,204,153, 54, 6,205,154, 53, 71, 85,203,138,211,224,173, 91, 54,123, 68, 47,223, 93,103,221,151,204, + 28, 33,240,221,117,174,235, 82,239, 81,252,117, 59,207,118, 93,234, 61, 82,224,187,243,172,251,146,217, 35, 68,235,118,159,167, + 1,140,175, 77, 33,199, 56,219,201, 8,146,172,240,105,155,225,112, 84,167,162, 82,196,255, 31, 87,244,196,137, 19, 91, 42, 20, +138, 55, 99,123,183, 94,223,170,177,125,114, 69,251,100,165, 38,219, 71,191, 15,244,225,242, 68,109,190,245, 57, 18, 82,165,201, + 65, 32,104,240,238,221, 59,103,154,166, 65, 81, 20, 72,146, 44,125, 87,171,213,232,214,173,219,215,154, 56, 51, 16,192,170,162, +139, 21,190, 0,206,126, 1,151,132,195,225,204,227,243,249, 30, 36, 73,186, 0, 0,151,203,141, 80,169, 84,254, 36, 73,110, 1, + 80, 88, 67,190,173,201,201,201,205, 36, 18, 9, 52, 26, 77,233, 2,244,108, 54,187,105,221,186,117,119, 41,149, 74,231, 47, 61, +121,107, 96,122,103,119,247,109, 19, 22, 44, 96, 43, 30, 61,194,182,195,135,183, 34, 63, 31, 0,118, 85,119, 44,159,207,191,197, + 98,177, 28,107,242,127, 52, 77,199,171,213,234,190, 53, 57,134,195,225, 56,167,164,164, 88,217,217,217,161,160,160, 0, 98,177, + 88, 92,242,189, 22,150,172, 13, 12,195,136,138,239,237,219, 58,118,236,216,137, 32, 8, 18, 0, 67,211, 52,235,197,139, 23, 99, +104,154,230, 20,223,159, 54, 0, 56, 12, 64,165, 31,179,245,248, 31,181,102,237,175,169,208,186, 14,192,163, 93,187,118,162,209, +163, 71,195,195,195, 3,206,206,206, 16, 10,133, 69, 55,241,172, 44,235,160,160,160,145,143, 30, 61, 26,121,245,234, 85,188,125, +251, 86, 1,224, 9,128, 10, 47,234,158, 94,238,179,132, 18,193,118, 0,200, 72,202,146, 38,197,164,111,151, 74,165, 27, 0,148, + 77, 17,238, 52,126,252,248,249,179,103,207,134,159,159, 31, 78,157, 58, 5,149, 74,133,130,130, 42,244,139, 60, 29, 57,247,215, + 3,226, 88, 32,193, 31, 48,176, 2,196,214,181,174, 41, 83, 83,211, 85,115,230,204,153,219,172, 89,179,210, 44,230, 90,173, 22, + 36, 73, 66,171,213, 34, 39, 39, 7,243,231,207, 47, 26,104, 25, 6, 52, 77,227,198,141, 27,179,166, 77,155,134,156,156,156,121, + 21,113,118,108, 83,231, 53,139, 96, 57,148,216,106, 24,138, 74,122, 30,148,212,150,164, 40,182, 82,169,169,112,165,114,161,144, + 87,165,200,227,114,185, 14,111,255,252,211,138,197,231,131,161, 40,128,166,193,208,116,113,117, 22,191,152,162,223, 24,138, 6, +163,165, 64,147, 52, 72,133, 10,237,127,252, 81,151,170,232,204,229,139, 78,141,251,126,129, 77,135,142, 29,185,245,234,216,129, +164,104,124,140, 77,178,121,243,250,121,151,115, 71,119,205, 80, 43, 10,198, 0,168, 85,158, 45,190,129,209,237,157,123, 14, 56, +188, 10, 10,195,189, 7,143,112,247,190, 63, 0,224,214,131,128, 18,193, 93,109, 83,129, 44,108, 49,103,202, 96,193,250,157,167, +185,115,166, 12, 97,255,182,243, 12,119,246,228,111,217,235,183,159,226,205,158,252, 45,123,253,142, 83,188,217, 83, 6,179,125, +183, 29,106, 9,192, 20, 64, 78,101,100,149,181, 17, 65,146,130, 19,209,105,108, 0,200,216,187, 23,218,244,116,216,173, 88, 1, + 0, 24,231,100,173,179,187,195,194,194,226, 53,151,203,117,168,110, 63,173, 86, 91,173, 8,158, 56,113,162,155, 66,161,120, 77, +146, 36,195,225,112,124,198, 14,233,115,185, 95, 87,183,172,178,251,132,132, 4,155,175, 91,247,231,224,179,111, 10,152,145,109, + 12,223,248,109,156,216,214,107,225,145,224, 42, 6,100,150, 74,165, 66, 84, 84, 20,202, 46,242, 94, 6, 84,109,159,157, 0,108, + 51, 55, 55,239,144,149,149, 53, 14,192,210,252,252,252,150,108, 54, 27,102,102,102, 75,213,106,245, 71, 99, 99,227,131,121,121, +121, 1,197, 86, 35, 93,151, 12,232,102,100,100,116,236,210,165, 75,166,173, 91,183,102,101,102,102,162,126,253,250,200,206,206, +110,255,232,209,163, 54, 83,166, 76,153, 82, 80, 80,240, 93,241,195,160,174,104, 98, 96, 96,192, 76,152, 48,129,160,168,191, 78, +247,208,161, 67,232,235, 74, 54,180, 52, 49,144, 43,213, 76,222,189, 40,227, 31,120, 60,222,147,248,248,248,188,154, 86, 6, 15, +248,105,194,130, 5,108, 73, 92, 28, 36,193,193, 24,151,159,207,249,173,200,186, 85,173,208, 98,177, 88,142,199, 78,253,225,204, +231,243, 65,146,100,169, 24, 44,185, 71,105,181, 90,104, 52, 26,104,181, 90, 80, 20, 5,173, 70, 11,223, 53,191,215,250, 94,104, + 96, 96, 96, 96,107,107,155,102, 96, 96, 96,240, 53, 70, 33,129, 64,192, 57,122,244,232, 24, 62,159, 15, 0, 80,171,213,112,117, +117, 37,244,227,179, 30,255, 48,177,245,153,149,171, 42,161,213, 63, 63, 63, 31, 20, 69,193,208,208, 16,108,246,167,227,190,185, +185, 57,122,247,238,141,110,221,186, 97,244,232,209,120,251,246,173,104,244,232,209,189, 43, 35, 27,187,192, 11,117,156,173,139, + 7, 19,218,246,233,181,160,245,135,126, 61,111,153,154,154,186,160,204,110, 83,166, 79,159, 78,100,101,101, 97,196,136, 17,143, + 84, 42,213, 32, 0,249,149,113, 82, 52,146, 60, 71,143, 3,205, 16,162, 45, 47, 14, 16,106,165,130, 97,177, 88,138, 18,215, 97, +109,106,137, 32,136, 17,118,118,118, 56,125,250, 52,212,234,207,211,133, 25, 25, 25, 33, 60, 60,252, 47,171, 26,155,141,142, 29, + 59,178, 9,130, 24, 1, 96, 94,197,156, 44,135,167,175,226,172, 74,190,123,245,110,206,235,216,134,149,150,146, 38, 99, 0, 16, +203,150, 45, 43, 21,110, 0,176,106,213, 42, 93,202, 9, 22,151,139, 12,127,255,191,110,196, 28, 22, 88, 60, 2, 4, 23, 96,113, +138,188,168, 96, 0,134, 2,104, 18,160,181,128,208,182,142, 46,213,208,222,190,174,179,223,186,205,187, 77, 84, 90, 6,167,175, +220, 67,108,108, 12,216, 44, 22,156, 26, 58,163, 79,247,174,220, 54,237, 58,213,249,125,229,130,171, 41, 9, 31,250, 3,120, 89, +227,138,166, 25, 97,195,186, 22, 56,120,232, 13, 44, 77, 37, 24, 49,248, 27,136,132, 2,252,182,227, 15,172, 89,226, 13,103, 39, + 71,236,219,186,182,210,195,141,141,141, 87,187, 56, 55,116,220,125,244, 26, 92,154, 54,101,239, 62,118, 13, 46,205,138,223,155, +187,176,119, 31,187,134,102,205,155,177,119, 31,187,134,150,205,155,212,123, 45,125,177, 58, 59, 59,219,187,242,250, 44,215, 70, +125,138,218,136, 91, 72,151, 14, 4,113, 51,102, 0, 64,169,208,170, 9,184, 92,174, 67, 74, 74,138, 85,117,251, 85,103, 53, 40, +182,100,189, 38, 73, 18,233,233,233, 68,110,110, 46, 99, 98, 98, 50,248,230,190,165,151,250,186,187,101, 3, 64,112,112,176,153, +175,239,186,193,103, 94,231, 67,241,124, 39,113,226, 79,127,122,220, 32,143,215, 87,214, 79,108,131,226, 37, 33,202, 67,165, 82, +197,182,106,213,138, 41,254,108, 47, 16, 8,120,229,250,155, 93,163, 70,141, 62,179, 90,235,224, 82,220,246,236,217, 51,239,102, +205,154,161,105,211,166, 1, 29, 58,116, 48, 18,139,197,184,121,243, 38, 92, 92, 92,154, 27, 25, 25,189, 56,119,238, 28,119,241, +226,197,110,135, 15, 31, 6,128, 89, 58, 84,103, 47, 79, 79,207,211,126,126,126, 66, 30,143, 7,133, 66,129,240,240,112, 24, 27, + 27,131,207,231,227,219,111,191,101,119,233,210,197,188,123,247,238, 23, 34, 35, 35,199,160, 6, 51,160,148, 74, 37,179,116,233, + 82, 24, 24, 24,192,192,192, 0, 98,177, 24, 98,177, 24, 18, 33,136,189,115,234,138,102,239,207, 21,205, 91,177,119,253,177,221, + 43, 31,212,169, 67,255,146,152,152,152, 91,211,190,160,120,244, 8,146,224, 96,160,204,181,171, 43,140,197,102,240,241,241,169, +206, 34, 5, 30,143,135,206,157, 59, 87,203,103,102,102,118,145,195,225,124,242,100, 74,146,164,208,199,199,135,138,140,140, 20, +179, 88, 44, 49, 77,211,240,241,241,161, 72,146, 20, 90, 89, 89, 5,208, 52,157,150,153,153, 57, 84,135,226,170, 0, 44, 98,177, + 88,219, 4, 2, 1,167, 94,189,122,241,203,151, 47,127, 86,108,205, 4,195, 48,172,122,245,234,181, 23,137, 68,142, 42,149,138, + 68,145,235, 80,111,205,210,163, 66, 48, 12,211,166,200, 40, 92, 10, 53, 0,126,241,231,172,162,209, 14, 22,229,126, 7,128,204, +226, 7, 69,235, 74,190,103, 1,120, 11,160, 9, 0,171,226,109,175, 8,130,200,174, 69, 49, 43,183,104,249,249,249,149, 62,194, +122,121,121,149, 14, 44,134,134,134,120,245,234, 21, 8,130,128,161,161, 33,140,140,140, 96,108,108,140,252,252,124,188,125,251, + 22,239,222,189, 67, 92, 92, 28, 8,130,128,147,147, 19, 74, 46,160, 50, 40,189,193,157,220,228, 7,161, 68, 0,130, 0, 90,247, +104,137,150,221, 92,209,238,101,244,156,215,119,137,253, 82,169, 52, 10, 0,199,213,213,117, 74,199,142, 29,177,121,243,102,168, + 84,170,205,149,136,172, 82,206,199,111,201,182, 0, 96,107,107,187,240,248,205,143, 6,227,251, 53,148, 75,165,210,141,181,168, +156, 79,110,196,153,153,153, 58,175,197, 71,211, 52,114,114,114,170,228, 44,111, 33,216,178,109,167, 73, 65, 94, 26,126,253,237, + 56,180, 90, 45, 22, 44, 88, 0,154,166, 75, 95,185,185,185, 58,149,147,161,168,207,109, 7,172, 34,239, 41,193, 1,234,142, 42, +210, 21, 9,167,119,130, 96, 0,130, 2,240,249,121,149, 31,132,132,108,158,232,204,202,223,182,155, 4,190, 75,194,149,123,129, +208,228, 39, 67, 26,124,169,200,228,216,121, 12,206,170,216,232,208,178, 33,230, 46,251,221,244,231,185,223,157, 81, 43, 10,154, +226, 83, 55,226,221,234, 47, 26, 10,191,174, 94,141,253,219, 55,227,247,205,219,145,159,151, 11, 46,215,162,248, 70, 79,129,162, +168,170,207,157, 97,250,249,204,153, 68,252,182,231, 34,218, 55,179,197,133,155, 47,225,222,202, 17,151,110,191, 70,183, 54,245, +113,229,110, 32,122,116,104,136,235,254, 97,152, 59,125, 12, 49,230,214,225,126, 53,105,163,173, 91,119,154, 20,228,167,193,111, +237, 81,164,239,218,133,120,111,111,180, 47,222,231, 37, 65,128,231,224, 0,240,170,111,163,242,136,136,136,128, 74,165,170,232, +105, 31, 46, 46, 46,213,182,187, 66,161,120, 67,146, 36,147,150,150, 70,164,165,165, 65, 44, 22, 19,225,225, 97, 84,243,230,174, + 67,152,119,231, 15, 0,128,175,239,186, 33,103,223,228, 67, 30,176, 29,138,103, 59,192,171, 31,194,218,191,106,186,102,218,138, +125,111,202, 92,163,159,148, 51, 53, 53,181,127,106,106, 42, 0,160, 65,131, 6,239, 34, 35, 35,155,148,184,154,139, 93,136, 60, +146, 36,157, 75,220,137, 36, 73, 66,165, 82,161, 87,175, 94,236,170,206,221,212,212,180,163,139,139, 11, 2, 3, 3,177,125,251, +118, 51, 79, 79, 79,124,248,240, 1, 4, 65, 96,221,186,117, 68,179,102,205,184,153,153,153,232,219,183, 47, 46, 94,188,216, 57, + 63, 63,191,186,250, 52, 20,139,197,135,175, 94,189, 42,100,177, 88, 40, 40, 40, 0, 77,211,232,210,165, 11, 88, 44, 22,194,194, +194,176,108,217, 50, 92,188,120, 17,151, 47, 95, 22,181,105,211,230,176, 92, 46,119,193,167,110,253,202,218,136, 81, 42,149,140, + 64, 32,128, 64, 32,128, 80, 40,132, 80, 40, 4,159,207, 71,161, 18,152,182, 37, 94,197, 22, 90,208,205, 91,185, 55,156, 52,123, + 29,107,227,242,201,247, 1, 92,209,181,207, 3, 69, 49, 89,219,254,248, 99,251,184,188, 60, 22, 0, 28, 36, 8, 90,195, 48,191, +235,114,189, 3, 64,161, 50, 15,142, 78, 14,184,112,230, 50,134,141, 26, 92,161,200,226,114,121,224,113,185, 48, 50, 19, 87,203, +201,227,241,172,223,189,123,103,206,229,114,193, 48, 12, 40,138,130, 70,163, 73,251,249,231,159, 45, 7, 12, 24, 96,120,227,198, + 13,214,128, 1, 3,104, 83, 83, 83,217,203,151, 47,211, 73,146, 52,239,218,181,107, 77,250,252,238,150, 45, 91,182,190,116,233, +210,100, 31, 31,159,215, 11, 23, 46,252,181,236,198, 13, 27, 54,172,190,126,253,186,227,144, 33, 67,142, 5, 7, 7,239,174,201, + 61,228, 75,239,243,122,206,255, 62,206,202,180, 72, 49,172, 9,130,240, 43,115,207,246, 42,249,238,227,227,179,212,215,215, 55, +156, 32, 8,191,178,191,151,236, 87,252,176,232, 87,209,247,226, 99,205,150, 44, 89,226,186,126,253,250,117,157, 58,117, 58, 29, + 16, 16, 16, 3,160,166, 66,171,234, 24,173,146, 19, 42,123,146,229, 6, 53,228,231,231, 35, 63, 63, 31,137,137,137,216,187,119, +111,241, 5,205, 5,135,195, 1,135,195, 41,141,103,168, 12,247,252,158,236, 0,176,163,117,235,214,220,208,103,231,110,252,180, +127,118,207,182,189, 90,179,223,220, 11, 29,142,162,245, 8,251, 79,152, 48,193, 2, 0,142, 30, 61,154, 9,224,198,255,147,106, + 62, 23, 21, 21, 53,215,214,214,182, 52, 70,165,172,251,144, 36, 73, 8,133, 66,148,196,178, 40,149, 74,236,221,187,151,100, 24, +230, 92, 21,156,136, 12,191,143,168,240, 7, 69,199,209, 52,104,234,175,227, 87,174, 92, 89, 58, 13, 20, 0,102, 20, 91, 78,170, + 21,121, 21,213, 57, 83,238,189,220,239, 12, 69, 85,227,158,224,205, 30,254,157,183, 45, 77,112,240,231,253, 32,112,185, 92,208, +101,172,153, 92,118,209,211,114,248,135, 20,216, 89, 55,199,160, 49,211,109, 46, 29,219, 57,155,212, 40,127,171,105, 93, 55,109, +217, 9,115,230,206,197,129,253,251,177,108,197,234, 82, 5, 64, 82, 20,200,106,203,201, 98,245,234,226, 10,178, 48, 5,108, 54, + 27, 61,218, 55, 4,155,205, 70,239, 78,141,193,102,179,209,183, 75, 83,112, 56, 28,244,115,111,134, 70,141, 26,129,195,225,176, +170,105,119, 68,134,223, 67, 84,248,195, 50,162,151, 1, 3, 64, 35,149,126,182,191, 86, 42, 5, 83,215,188,166,125, 11, 83,166, + 76,201, 77, 76, 76,212,148,223, 86,167, 78, 29,222,163, 71,143, 76, 42,113,219,149, 66, 36, 18,181,225,112, 56,111,178,179,179, +105, 3, 3, 3, 22, 77, 83,116,243,230,174,236,155,251,150, 94, 42,217,103,201,146,165,151, 70,182, 49, 26,114,252,156, 31,195, +171,231, 78, 16, 92, 1,249,253,138,125, 60, 46, 79,212, 6, 80,232,242,240,192, 82,169, 84,120,255,254, 61,170, 43, 15,195, 48, + 85,186,126,114,114,114, 38,184,184,184, 60,218,177, 99,135, 25, 65, 16,120,252,248, 49,216,108,118,233, 43, 58, 58, 26, 44, 22, + 11, 63,253,244,147, 38, 63, 63,127,106,117,101,227,112, 56,115, 47, 92,184, 96,204,231,243, 81, 80, 80, 80,122,221,176,217,108, +188,123,247, 14, 27, 55,110,196,132, 9, 19,144,144,144, 0, 59, 59, 59, 44, 88,176, 64,178,126,253,250,185, 26,141,102,181, 14, + 77, 20,162, 86,171,219, 26, 24, 24, 64, 40, 20,162, 68,112, 1,192,237,112,110,152, 66,161,104, 97,110, 46,183,177,244,247,251, +179,179,231, 32, 55,115, 75,219, 78, 82,169,244, 74, 77,250,192, 71, 96,127, 44, 69,253,220,255,210, 37,171,167,151, 46,209,207, +175, 94, 77, 18, 20, 20,236,211,185, 15,105, 89,136,143, 78, 66,155, 54,109,240,230,205, 27,180,105,211,166,172,104, 2,159,207, + 7,143,199, 3,143,199,131,133,169, 78, 33, 20, 12,139,197,194,211,167, 79, 65, 81, 20,212,106, 53,212,106, 53,154, 53,107,150, +253,224,193, 3, 9, 0, 68, 71, 71, 51,227,199,143,207,125,241,226, 5, 90,181,170,122, 61,117,107,107,235, 71,108, 54,187, 94, +217,223,178,178,178, 76,135, 14, 29,138,156,156,156,111,134, 14, 29,234, 94,124,253, 38,159, 63,127,126, 60, 0,240,249,124,176, + 88, 44, 10,122,252,235, 81,157, 22, 41, 43,148,202, 11, 46, 95, 95, 95,175,242,191,149, 21, 85, 21,125, 46,123,236,250,245,235, +215,149,225, 86,212,162,248,213,199,104,249,249,249, 49, 21, 40, 72,157, 81,157,208, 42, 65, 96, 96,160,214,206,206,238, 64, 84, + 80, 92,207,134, 45,157, 32, 18, 11,250, 0,216, 33, 16, 8,230,127,247,221,119,120,254,252, 57,194,194,194, 14,225, 11,103,225, +184,186,186,222, 18, 8, 4,142,149,184, 73,226,195,194,194,250, 86, 50, 48,172,184,122,245, 42,170, 10,134,191,127,255,126,217, + 65,169,108, 48,124,197, 29,131,102,160,213,104, 33,147, 43,254, 26,196,139,133,150, 76, 38,195,168, 81,163, 62,177,104,165,167, +167, 87,123,126, 4, 65, 96,227,149, 43,184,115,238, 28,190,113,115,195,197,151, 47,177,254,187,177,104,234,104, 15,134, 34,192, + 16, 64,194,169,157,200,202, 47,196,201,123, 79,145, 93, 32,199,184,174, 93,225,108,100, 81, 53, 47,151,215,187,125,199, 78,188, +187, 1,111,193,229,114,192, 2, 13, 70, 43,135,157, 75,119,176, 89, 44, 24, 91,215, 7,143,203, 5,151,203, 65,116, 98, 38, 92, + 92,219,241,253,248,194,222,181, 17, 90,117, 28,235,131,162, 40, 76,152, 48, 1,167, 79,159,134,185,141, 35,140,235,184, 98,205, +230,253,248,166, 87,215,106,207,191,228, 9,158,195,225,128,205,102,127,246, 94,242, 89, 23,235, 36, 67, 51,208,148,111, 35,154, + 1, 24, 6, 14,107,215,194, 97,237, 90,188, 44,254,207,102, 50, 25, 20, 10, 5,208,161,121,141, 68,150, 90,173, 70, 98, 98,162, + 38, 53, 53,213,186,130,237,105,106,181,186, 90, 97,115,228,200,145,144,137, 19, 39,182, 53, 51, 51,123, 29, 18, 28,172,109,233, +230,198,189,177,119,233,229, 18,183, 33, 0,184,185,185,101, 47, 93,186,244,242,248, 17, 94,131,119,251,140,166,126, 92,125,140, + 35, 16,137,218,122, 45, 60, 18,114,106,196,136,234,253, 61, 42, 85,108,203,150, 45, 25, 93,206, 75, 46,151,167, 86,177,121, 32, +128, 85,173, 91,183, 54,242,244,244,196,163, 71,143, 48,108,216, 48,149, 70,163,137, 2,128, 1, 3, 6, 52, 62,121,242, 36,255, +237,219,183,176,180,180,228,198,199,199, 31, 70, 53, 1,242,124, 62,191,123,187,118,237, 88, 42,149,234, 51,145,181,126,253,122, +140, 25, 51, 6,141, 27, 55, 6, 77,211, 40, 44, 44,132,167,167, 39,119,251,246,237,221,117, 20, 90,115,154, 54,109,186, 17, 69, +179, 14,203,222, 11, 35, 80,228,214, 66, 86, 86, 86,106,208,139,123,225, 93,123, 13,109, 91,175,145,171,109, 88,200,155, 42, 9, +173,172,172,150,176, 88,172,145, 52, 77,179,243,243,243, 19,131,212,234, 70,205, 28, 29,173,187, 12, 30,140, 60, 46,151,189,237, +222, 61, 86, 90, 65,129, 4,128, 78, 46, 72,165, 86, 6, 71,167,162, 80,191, 97,163, 6,227,205,155, 55, 24, 62,122, 8,120, 60, + 30, 56, 28,110,209,181,201, 43,178,104,153, 88, 24,233,212, 55,181, 90,109,233, 61,188, 36,206, 75,163,209,160, 36, 52,203,192, +192,160,116,155, 74,165, 2, 65, 16, 85,245, 13,231,179,171,151, 91,137,140,140, 65,105,181,104, 62,120,120,105,159,126,113,112, +183, 8, 52, 45,202,141,143,197,172,115, 87,185,208, 67,143, 74,172, 90, 85,105,145,178, 66,233, 75, 65, 16,132,159,143,143,207, + 82, 0,140,143,143,207,210,146,239,190,190,190, 10, 0,201,181, 20, 91,159, 89,185, 56, 95, 67,100,149,184, 23,170,130,167,167, +231, 44, 67, 67,195,237, 37,223, 19,159, 39, 35,241,121, 50, 92,154, 52,239,210,218,173,109,222,152, 49, 99, 96,110,110,142,133, + 11, 23, 50, 0, 14,213,244,255,163, 35,195, 37, 0, 24, 91, 91,219,133,197, 55,100,183,151, 47, 95, 90,190,122,245, 10,237,218, +181,251,203,116,175,209,192,221,221,189, 42,170,130,226,160,246,121, 95,207, 74, 70, 67,163,209, 64, 46, 87, 64,173,214,128,212, +210, 32, 73, 18,109,154, 27,226,216,126,159,162,223,200, 18,235, 89,145,213,204,193,198, 16,134, 18,174,150,197, 34, 20,175, 67, + 82, 43,188, 99,170,213,106,132,196,199, 35, 56, 46, 14, 0, 48,200,183,234,192,215, 99,247, 30,161, 89,179,102,213,149,182,161, +131,157, 13, 82,238,132, 20,221,188, 21,137,120,245,228, 44, 12, 13, 37, 0,128,230, 30,227,192,227, 21, 9, 45,153, 66, 3,139, + 38,117, 64, 48, 76,165,105, 1, 12, 76,109,110,113,120, 66, 71,134,162,193, 48, 52, 24,154, 2,195,208, 96,115,121, 6,179,102, + 76, 6, 77, 83,104,223,190, 61, 8, 54, 27,148, 86,133, 17, 3,123, 35, 39,175, 0,230, 38,186, 13, 18, 60, 30, 15, 30, 30, 30, +162,202,182,127,248,240, 65, 81, 86,152, 85,221, 70, 90,200,100, 10,168, 84, 42,104,212, 36, 52, 90, 18, 84, 3, 30,126,253,121, + 44, 72, 13, 9,249,232, 78,208,104, 73,208,115,135, 64,163,214, 34,193,128,197,106,233, 98,161,101,129, 80, 4, 69,100, 24, 85, + 39,180, 74,196, 65,101,168, 40, 38,176, 18,177, 21, 60,113,226,196, 54, 45,221,220,222,140,236,229,182, 41, 52, 44, 60, 37, 52, + 44,252,179,253, 28, 27,187,197,254,184,254,244, 2, 46, 79,212,198,107, 97,213,179, 14,203,162,172, 27,241, 11,177,180,160,160, +160,165, 68, 34, 65,100,100, 36,216,108, 54, 8,130,248, 0,160, 37, 0,216,218,218,126,228,112, 56, 78,108, 54, 27,187,118,237, + 34, 56, 28, 78,139, 78,157, 58, 45, 85, 42,149,103,171,120,160,115, 49, 52, 52,252,196,154,197,227,241,224,227,227,131,241,227, +199,151,138, 44, 30,143,135, 35, 71,142,160,109,219,182, 80,171,213, 46, 58,150,247, 21,128,174, 58, 88,252,136, 98,113, 94,173, + 24, 37, 73,114, 98,214,200,145,141,224,239,143, 46, 78, 78,205,218,180,105, 3,141,230, 47,131,166,147,147, 83,157,130,130,130, + 84,133, 66,113, 2, 69,169, 13,130,170, 20, 69, 74, 26,241,209, 69,225,167,111,222,188, 65,251,246,237, 75, 45, 88,101,173, 89, + 60, 30, 15, 34,190,164, 70, 66,139,166,139,238, 75, 5, 5, 5, 44,127,127,127,139,166, 77,155, 18, 0,208,180,105, 83, 34, 40, + 40,200,204,192,192, 32,179, 97,195,134,213, 62, 0,139,140,140,113,100,226, 40, 0,192, 47,189,250,149, 62, 24,221, 92,181, 20, + 92, 46, 23, 61, 23, 46,253,172,223,211, 52,205,134, 30,122,145,165,131, 22,249, 90, 34,171,188, 69,203,215,215, 55,220,215,215, +247, 51,235, 88, 13, 81,189, 69,171,172,233,174,166, 40,185, 88, 43,195,230,205,155,209,162, 69,139, 42, 7,162,237,219,183,227, +248,241,227,155, 1, 68,215,216,228,216,179,117,115,108,185, 20,238,212,184, 57, 1, 0,171,231, 14,100,201,100, 50, 60,125,250, + 20,198,198,198,248,240, 65,231,180, 95,134,198,198,198,171, 88, 44,214, 8,118,249, 25, 0, 21, 11, 76,138,166,233,115,121,121, +121,149,166,119, 96, 24, 64,163, 37, 33,147, 43,161, 86,171, 49,247,167,157,213, 22,194, 23, 32, 52,234, 2,142, 71,183, 78,162, +202, 44, 58,237, 91,116,199,204,239, 36,159, 13,222,108, 22,192, 98, 1,173,218, 23, 89, 92,130, 94,134,131,166, 1,138, 6, 44, +172, 76,113,232,212,166, 42, 69, 62, 73,209,197, 79,199, 20, 10, 85, 20, 92, 58,122, 33, 41,194,191,212,130,196,231, 21,185,140, +121, 92, 46,104,134, 40,202,250, 80,153, 16,226,139, 28,115,164,209,206,251,253, 66, 49,205,171, 5,206,223, 13,193,240, 94, 45, +241,224,197, 91,120,118,104,134,240,168, 56, 52,119,174,135, 93,135,207,129, 97, 80,176,103,203,154,212,191, 6, 52, 50, 94, 23, +139,214,243,231,207, 21,229,173, 88,101,223,153,234,199, 67, 48,204, 95, 22, 45,133, 82,133,133, 75,116, 74,231, 83,212, 70, 93, + 59,138,116,217,185, 42,139,149, 46, 66,172,188,101, 11,213,164,103,105, 0,160, 45,176,248,255,243,198, 73, 81, 20,174, 93,187, + 86,218, 30, 21,181, 99,217,182,211, 65,228, 32, 62, 62, 30,225,225,225,232,216,177, 35,242,242,242,192,101,177,176, 32, 52, 20, +205,190,251, 14,106, 30, 15, 52, 77,131,207,231, 99,250,244,233, 58,215,103, 13,239,206,197,193,220, 84,117,228,155, 58,117,234, +212, 40, 82, 38, 67,248,187,119,232,181,114, 37, 0,224,250,245,235,159,244,137,249,243,231,243,223,190,125, 59,229,245,235,215, + 83, 82, 82, 82, 54, 3, 88, 80,233,125,150, 81,149,198,104,141, 28, 59, 12,141,154, 54,192,241, 63, 78,149,110,159,191,104, 14, +184, 92, 30,184, 60, 46, 76,140, 77,116, 58, 27,173, 86, 91, 42, 90,229,114, 57,235,250,245,235, 14,189,123,247,230,205,153, 51, +135, 0,128,227,199,143,179,118,236,216, 33,190,115,231, 14,207,222,222, 94, 90,173,184,212,104, 62,107, 99,130, 32,192,229,114, +193,227,243, 0,154, 6, 65, 16,226, 13, 27, 54,172, 14, 15, 15,111,215,180,105, 83,168, 84,170,239, 80, 52, 81, 67,159, 71, 75, + 47,182,170,212, 34, 21,197, 90, 21, 91,165, 42, 67, 70,217,184,173,202,132, 90,217,152, 45,212,110, 82,134,110, 49, 90, 21,129, +205,102, 87,107,173, 98,177, 88,213,186, 14,231,207,159, 15, 67, 67,195,202, 6, 32, 38, 52, 52,244,173, 84, 42,221, 15, 96,103, +173, 26,231, 94, 96,248,170,121, 67, 10, 80,236, 91, 53, 49, 49,201,236,209,163, 71, 33, 0,205,217,179,159, 62, 32,171, 84,170, + 74, 7,112, 99, 99,227, 85, 7, 15, 30,156, 61,120,240, 96, 86,249, 20, 3,101,221,123, 37, 47,173, 86,139,179,103,207,206, 94, +188,120, 49,242,242,242,230, 85, 53,136,203,101, 10, 40,138, 3,161, 63,134,157,215,245,166, 94,233, 38,137,137, 45, 28, 26,180, +172,116, 48, 97,241,138, 98,136,172,235,254, 53,128, 25, 26, 10, 65, 85,193, 73, 16,172,232,184,132, 20,251, 58, 54,102,248,152, +152, 1,235,122, 45,144,147,252, 87, 61,112, 56,108,112,139, 93,135, 38, 70, 98,100,164,167,131,197, 98, 87, 41,140,215,156, 12, +196,139,176, 56, 92,184, 27, 4,141, 82,134, 45, 71,111, 66,163, 42,132, 70, 41,131, 70, 89,244,190,110,241,247, 32, 8,164,106, + 85,178,198, 53,105,119, 14,135,131, 14, 29, 58, 84, 42,116,146,147,147,117,180,104, 49,165, 22, 45,133,178,134,109,164,219,147, + 83,149, 22,171,146,237,181, 21, 6, 37, 41, 31, 68, 34, 81,219, 35, 71, 42, 79,227, 80, 17,108,108,108,110, 72, 36,146,250,186, +238, 95,131,228,165,235, 76, 76, 76, 86, 53,109,218,212,101,203,150, 45, 92, 54,155,141,158, 61,123, 54,182,177,177,137, 7,128, +230,205,155,219,149,220, 99,126,252,241, 71,230,249,243,231, 97, 69,207, 24,149,131,207,231,191, 51, 54, 54,110,235,233,233,137, +188,188, 60, 36, 38, 38, 66, 44, 22,163,217,166, 77, 8,253,241, 71,184,237,221, 11, 86,143, 30, 32, 8, 2,124, 62, 31,161,161, +161, 16,137, 68,239,148,202, 74, 83,190,117, 0,240, 59,128, 46,248,203, 93,200, 0,120,138,162,180, 11, 47, 42,184,223,177, 0, +128,162,233,234, 26,107,236,194,133, 11,145,203,229, 2, 3, 6,128, 23, 29, 13,141, 70,131,142, 29, 59,150, 90,217, 59,118,236, + 8, 14,135,131,150, 45, 91,194,206,206, 14,187,118,237, 26, 91,149,208, 82, 22,106, 16, 31,157,132, 78,157, 58,149, 90,174, 6, + 12, 24, 80,106,209,226,114,185,165,150, 45,130,170, 94,184, 18, 4,193,148,125, 72,166, 40,138,224,112, 56,156,121,243,230, 17, +195,134, 13, 99,212,106, 53,205,231,243, 89, 23, 46, 92, 32, 30, 60,120,192,145,201,100,213, 62,136,187, 14, 25,129, 95,122,247, + 47,186,246,235, 91,130,203,227,130,207,227, 97,225,187,164,210,118, 49, 58,114,154,191,126,253,250,225, 77,155, 54, 45,114,195, + 3, 28,125, 30, 45, 61,170, 49,244,100,148, 19, 73,234, 50,223, 51, 0, 16,197,223, 51,202, 8,170, 12,130, 32, 94, 49, 12,211, +174,220,190, 37,219,213,229,222, 75,182, 7,215,162,248, 37,107, 29,126, 38,190,170,122, 34,142,122,246,236,153,115,155, 54,109, +144,144,144,240,217, 76,184,146,129, 75, 44, 22, 67, 36, 18, 33, 32, 32, 0, 0,162, 42, 35,123,240,224,193, 14, 20,101, 93, 46, + 42,145,173,109, 39,207,145,221, 3,218,247,107,135,147,190,167,242,164, 82,105, 75,252,149, 67,135,176,179,179, 27,207,229,115, + 70, 57,185,214,245, 0, 77,255,126,239,234,211,149, 85,157,161, 83,227,230,133, 0, 20, 37,179, 14,107, 57,251, 16, 44, 22,107, +196,224,193,131, 89,111,223,190,197,168, 81,163,112,252,248,241, 74,247, 29, 63,126, 60, 78,159, 62,141,193,131, 7,179,150, 44, + 89, 82,105,122,135, 79,173, 37,234,175,214, 41, 35, 63, 4,227,216,233,131,149,198, 32, 89, 89, 21,197, 99,165,167,103,150,254, +214,174, 77,213,158, 17,154, 84,223, 9,124,253,178, 83,231,110, 61,121,137,105,185,160, 73, 21,148, 5,127, 29, 47,207, 77, 3, + 67, 42,193, 51, 48,131,141,133, 49,222, 60,187,173,214,168,149,119,170,226,156, 61,184, 57,126, 28,232, 2, 48, 52,134, 44, 56, + 4,191,157,179, 74,159,160,221,135,205,193,189,179,219,116,142,241, 43, 15, 46,151,139,208,208, 80, 69,101,214, 44, 54,155,173, + 75, 78,174, 98,171,163, 22,114,185, 2,114,133,242,107,222, 59, 44,173,173,173,247,152,154,154, 10, 43, 17, 82,150,150,150,150, +123,204,205,205,133,186,186, 14, 43, 19, 89,197,121,181, 94, 79,156, 56,177, 70, 98, 75, 32, 16,212,143,138,138, 42, 77, 86, 90, +213,187, 90,173,134,167,167,167,174,201, 75,175, 2,136,177,181,181,125,218,172, 89, 51,227,143, 31, 63,226,212,169, 83, 60, 46, +151, 91,183,228,254, 81, 80, 80, 0, 54,155,141,244,244,116, 45,128,201,168,198,117,166, 82,169,252,253,253,253, 91, 13, 28, 56, +144,253,238,221, 59,176,217,236,162,114,117,234, 4,183,189,123, 17, 54,111, 30, 60,226,226,160,212,104, 32, 20, 10,113,235,214, + 45,141, 92, 46,247,175,140, 79, 36, 18,237,143,141,141,109, 46, 20, 10,161,209,104, 64,211, 52, 88, 44, 22,193,225,112,220, 77, + 76, 76,182, 3,104, 87,174,177,172,220,218,121, 54,161, 72,146,146, 38,124,204,168,174, 2,178,178,178,112,245,234, 85,116,236, +216, 17, 30, 30, 30, 72, 78, 78, 70,116,116, 52,190,249,230,155,210,125,130,131,131, 17, 24, 24,136,134, 13, 27, 86,111,209, 99, +105,209,176, 73,125,240,120,188, 34, 11, 17,151, 87,252,224,195, 45,181,100,241,184, 60,112, 57, 92, 8, 69, 66,157, 45, 90, 4, + 65,128,197, 98,129, 32, 8,136, 68,162,146,135,108,218,193,193, 65,154,157,157,109, 11,128, 45, 18,137, 64, 81,148, 78, 15, 45, + 37, 99, 68,137,200,226,241,121,165,150, 45, 0,200,205,205, 85, 14, 30, 60,248,132, 74,165,154,132,218,173, 80,162,199,191, 12, + 4, 65,188,250,255, 56,182, 6, 24, 80, 44,172, 62, 11,138,175,170,131,127,211,185,115,231,189, 99,198,140,233,185,117,235, 86, + 72, 36, 18, 72,165,210,210, 1,145,207,231,163, 78,157, 58,200,206,206,198,190,125,251,144,148,148,116, 31,192,116, 93, 75, 36, +149, 74,159,127, 8,138,202,242, 28,222,217,188,121,231, 38, 38,137, 81, 73, 29,165, 82,105, 64,177,200, 58, 52,102,254, 55,147, + 60,135,182, 7,143,207, 69,226,135, 84,220,187,250,244, 63,210,152,108, 54,155, 77, 16, 4, 70,141, 26,165,211,254,163, 71,143, +134,191,191, 63,170,114, 51,210, 37, 22, 45,185, 18, 50,197,215,123, 88,155, 57,107, 60,102,206, 26, 95, 42, 38,116,113,189, 0, +128,157,221,153, 42,132,150,102,171,223,153,125,211, 90,183,239,228,216,182,121,125,188,120, 29,132,147,123,255, 50, 50, 28,222, +177, 26,191, 29,190,143, 58,214,166,208,168,100,184,113,254, 64,170, 70, 37,223, 90, 75,163, 92,145,184, 37, 8, 48, 12, 93,163, +115, 47, 17, 79, 92, 46, 23,174,174,174,149, 90,180,178,179,179, 21,213, 13, 12,165,109,164,214,162, 80,166,128, 66,254,213,132, +150,155,187,187,251,157,115,231,206,153, 91, 89, 89, 33, 37, 37,165,188,208,114,235,210,165,203,157,115,231,206,153, 91, 91, 91, + 35, 49, 49, 81,231,180, 34, 21,136, 44,100,100,100, 16, 57, 57, 57,180,169,169,105,141,196, 22,139,197,130, 74,165, 66, 68, 68, +132,174,127,171,243, 12, 49, 99, 99,227, 35,167, 79,159, 54,206,204,204, 4,155,205, 70, 68, 68,196, 39,179, 14, 75, 94,135, 14, + 29,226, 13, 25, 50,228, 96,110,110,110,149,211,218, 72,146,220, 60,126,252,248, 41,201,201,201,166, 86, 86, 86,144, 74,165,224, +243,249, 96, 24, 6,132,167, 39,186,198,196, 64, 67, 81, 16,137, 68,136,140,140,196,254,253,251,101,197,169, 98, 42, 52,144, 17, + 4,225,204,227,241, 48,110,220,184, 79, 54, 28, 61,122, 20,131,218,178,219, 90, 26,115, 10, 73, 8, 85,105,162,254, 55,216,108, + 54,225,214,161, 71,227, 14,221, 6,184,190, 15,123,241, 49, 35, 45,169,186,155,146, 86,173, 86,163,105,211,166,120,245,234, 21, +238,222,189,139, 30, 61,122,192,195,195, 3, 33, 33, 33,184,125,251, 54, 2, 3, 3, 65, 16, 4,204,205,205, 75,194, 47,170,140, +193, 80,203, 73,164,167,100,125,102,189, 42,255,157,199,227, 65,165,208,232,212, 70,239,222,189,195,171, 87,175, 74, 83,203,176, +217,108,242,187,239,190, 3,195, 48, 76,108,108, 44, 12, 13, 13,153,137, 19, 39, 82, 28, 14,135, 76, 78,214, 45, 62,184, 68, 84, +149,136, 44, 14,143,251,137, 64,163,105,186, 32, 36, 36,100, 26,128,144, 98, 75, 22,160,207,163,165,199,255, 54,174,225,243,133, +165,171,181,104,197, 0,232,117,234,212,169,177,151, 47, 95,222,188,125,251,118, 75, 47, 47, 47,228,228,228,192,209,209, 17,182, +182,182,240,243,243,195,245,235,215, 51, 41,138, 90, 0,160, 34,211, 79, 47, 84,145,179, 38,249,163,244,156,170,176,240,199, 54, + 30, 46,184,127,246,177,175,141,141,205,116, 54,155, 61,119,226,210,111, 39,117, 31,220, 14,145,129,177,120,126, 59, 20,105, 9, +153,213,114,150, 15,134, 55, 49, 49,153, 98, 96, 96,192, 7,160,169,224,169,184,252,172,195, 82, 78,138,162, 40,181, 90,141, 51, +103,206,232, 36,182, 78,157, 58, 5,165, 82, 9,234,115,255,106, 41, 39, 67, 51, 4,135, 43,128, 93,157,166,208,104,100,160,233, + 90, 79,168, 44,229, 44,121, 2,253,200,231,195, 42, 51, 19, 47, 94,188,208, 77,114, 15, 24, 80, 93, 27, 41,213,202,130,113,219, +214, 46,244,243,246,249,221,164, 71,231, 86,248,101,211, 81,104, 52,135,193, 98,179, 32, 18,240,208,166,125, 23,176,161,194,158, +245,139,114,229,249, 57,227,240,249, 82, 60,159,112, 50, 85,121, 88, 24,128,162,105,220,125,244, 82,231,115, 47, 29,237, 41, 10, + 28, 14, 7, 31, 62,124, 80, 84, 52,219,144,205, 46,114,115,150, 60,169, 87,197,201,208, 52,193,229, 9, 81,199,177, 25,212,170, +194,175,210, 70, 86, 86, 86,139, 46, 93,186,100, 94,146, 42, 33, 36, 36, 4, 4, 65, 68,252,101,113, 44,218,174, 80, 40, 16, 22, + 22,134,144,144, 16,160,104,134,155,206,215, 81,137, 37, 43, 35, 35,131,144, 74,165, 48, 48, 48, 96,133,132,132,168, 90,182,108, +249,186,154,235,187,148, 83,169, 84,198, 85, 22, 63,169, 84, 42,237,133, 66, 33,183,220, 32,106,215,168, 81,163,200, 10, 92,136, +159,149, 51, 47, 47,239,197,226,197,139,219,244,235,215, 15,139, 22, 45,202, 54, 53, 53, 53,220,179,103, 15,135,205,102, 19,222, +222,222, 84,122,122,122,225,129, 3, 7,140, 47, 95,190,140,220,220,220, 0, 29,206,189, 64,169, 84, 78,235,220,185,243,209,155, + 55,111, 26, 56, 59, 59, 35, 63, 63, 31, 12,195,224,200,145, 35,240,246,246,134, 80, 40, 68,100,100, 36, 6, 13, 26, 36,151,203, +229,211,240,121,236,100, 9, 39, 65, 16, 4, 67,211, 52,150, 47, 95, 94,154,156,180, 36, 89,169,161,136,192,254,249, 13,196,115, + 14,228,137,199,254,114,224, 59, 0,160, 72,146,122, 31,246,226,227,145,157,191, 60,224,241,120,143,170,105,163,101,115,230,204, +217, 51, 96,192, 0,145, 68, 34, 65,118,118, 54,158, 62,125,138,103,207,158,225,249,243,231, 80,171,213, 48, 55, 55,135,169,169, + 41,164, 82, 41,222,189,123,167, 0,176,172, 42, 78,190, 1, 23, 78,141, 75,102,254, 22, 89,176,184,101,102, 27,150,181,110,241, +184, 92,157,174,163,110,221,186,161, 67,135, 14, 37, 2,136,138,143,143,151,170, 84, 42,162,140,232, 79, 46, 17,228,117,235,214, + 37,143, 31, 63,206, 84,197,249,124,255, 46,220,252,117, 25,248, 60, 30, 22, 68, 36,150,138,174,163, 61, 90,131,203,231,193,101, +224,176,178,199,238, 70,145,187, 16,229, 68, 86, 85, 99,199, 23, 95,155,122,206,255, 90,206,255,101, 72, 81,139, 37,120, 74,112, + 82,169, 84,222,248,254,251,239,215,187,185,185,125,191,101,203, 22,130,199,227, 97,229,202,149, 76, 74, 74,202, 31,197, 79, 33, + 57,181, 41, 21,195, 48,127, 60,188, 24, 48, 99,130,207, 96, 98,254,214,137,238,175,239,133,189,107,209,217, 25, 45, 58, 59,227, +245,253,183,216,185,244,212,113, 74, 75, 45, 79, 77, 77, 77,168,134, 74,213,171, 75,147,242,193,240,230,254, 15,238,153,215,116, +214, 33, 77,211,231, 78,157, 58, 53,123,232,208,161,172,151, 47, 95,126, 22,147, 85,178,236, 14, 77,211,184,115,231, 14, 52, 26, + 13,254,248,227, 15,154,166,233,202,243,104,129,185,178,109,235,250, 9,127, 28,187,194,231,243, 8, 60,123,116, 1,121, 57, 85, +207,234,226,241,184, 56,116,228,162,134,199,227,190,175,104,187, 70,163, 73,188,119,239,158,117, 95,138,226,178, 88,172,138, 4, + 84,133, 56,119,238,156,150,166,233,248,106,118, 11, 72, 75, 74, 24,184,102,209,228, 83, 3, 70,126,111,221,185,179, 59,215,194, +202, 26, 4, 65, 32, 61, 45, 29,145, 97, 47,181, 55, 46, 28, 76,147,201,117, 91,130,103,242,198,135,165, 49, 89, 0,224,229,189, +189, 52, 62, 11, 0, 6, 78, 92, 12,207,142,205, 65,232, 98,122,250, 75,100,209, 36, 73, 66, 44, 22,131, 36,201, 10, 83, 60, 24, + 27, 27,139,148, 74,165,162, 56, 17, 99,149,166, 34, 6,248,234,109, 68, 81,148, 75, 78, 78, 14,100, 50, 25,158, 61,123,198,172, + 93,187, 54, 35, 35, 35,163, 52,104, 83,171,213,186,100,103,103,163,176,176, 16, 1, 1, 1,204,250,245,235, 51,178,178,178,150, +214,228, 26, 18,137, 68,109, 57, 28,206,235,156,156, 28,218,192,192,128,165,213,106,181, 45, 91,182, 20,136, 68, 34,157, 23, 84, +151, 74,165,253, 42,219,230,228,228, 20, 21, 21, 21,213,136,162,168,178,107, 32,242,148, 74,165,115,231,206,157,117,185,127,204, + 57,124,248, 48, 46, 94,188,216, 62, 63, 63,127,124,124,124,252, 81, 0,237, 57, 28, 14,130,130,130, 34,148, 74,229,152,161, 67, +135, 30,201,201,201,121,129,162, 37,120,116,193,205,200,200,200,113, 46, 46, 46,135, 87,173, 90, 37,241,240,240,224,216,217,217, +161, 93,187,118,136,140,140,196,181,107,215,180,187,119,239,150,201,229,242,201, 0,238, 84,221,236, 32, 72,146, 4,159,207, 47, +125, 9, 4, 2,240,120, 60, 20, 40, 24, 76,221, 20,173, 32, 33, 82,108, 94, 57,237, 26, 3, 16,169,137,209,153,233,169,137, 47, + 8,130,120, 36,149, 74,243, 42,169, 51,190, 82,169,108,197, 48, 12,155, 32,136,173, 26,141,102,226,172, 89,179,108,215,173, 91, +135, 38, 77,154, 32, 51, 51, 19, 98,177, 24,206,206,206,200,200,200,192,203,151, 47, 41,185, 92,190, 23,192,106, 20,199,143, 84, +134,220,204,124, 56,216,212,253,196,242,201, 48, 12, 24, 10,208,170, 40, 80, 26, 6,106, 66, 11, 46, 87, 11, 30,143,167,139,229, +137,161,105, 26, 57,182,182,160,195,194,240,252,249,115, 48, 12, 83,169, 85,173,105,211,166, 58,220,216,105,240, 5,252, 79,220, +133, 4, 65,128,199,231,131,203,231, 85, 52,115, 70,111,197,210,227, 31, 13, 93,125,227,185, 0,166, 7, 7, 7, 31,237,222,189, +187, 31,195, 48, 92, 20,249, 35, 31,127,201,159,167,166,166,190, 9,184,246,102,137,181,131,233,250,254,227,221,209,164,149, 35, + 40,146,194,211,235, 65,248, 99,221,229,211,201,137,201, 19,161,195,218,103, 52, 77, 63,232,210,182, 9, 11,101,114,117,219,217, +217,209,181,153,117,152,151,151,183, 98,193,130, 5, 88,180,104, 81,109,102, 29, 86,136,208,119, 25,211, 9, 48, 14, 3,251,119, +237, 11,130,197,168,213,170, 42,110,124, 40,205, 92,202,227,113,223,191, 10,145,182,172,104,191,140,140,140,190,147, 38, 77,186, +195,225,112,234,215,164,206,105,154,142, 79, 75, 75,235, 89,253,158,228, 83,149, 34,223,249,234,233,125,243,110, 94, 60,220,151, +166,169,134, 4, 0, 54,135,247, 81,171,209,220, 82, 41,242,183, 64,199, 69,165, 55, 76,239,132, 57,219,110, 99,215,162,129,152, +181,254, 44, 14, 46,159,138, 37,155, 78,225,247, 69,115,176,118,251, 9,252, 50,103, 28,134,143,157, 68, 51, 4,235,137,174,231, +193,102,179,111,238,219,183,111,194,212,169, 83, 75, 39, 45, 48, 12,243,201,141, 93,171,213, 42,104,154,198,222,189,123,105, 0, + 55,171,226,251,180,141, 8,166,170,120, 41, 93,219, 40, 63, 63,127,114,167, 78,157,142, 0, 16, 48, 12,243, 33, 39, 39,231, 7, +224,175,165,161, 10, 11, 11, 39,119,238,220,249, 8,195, 48, 2,130, 32, 62,219,174, 11,138, 83, 61,180, 53, 53, 53,125, 93,108, +201, 18,212, 38, 32,190,170,170,174,194,173,168,139, 11,145, 6, 48,171, 76,198,247,117,237,219,183, 47,187,168,116, 68, 78, 78, + 78,219, 90,148,235,142, 66,161,104,190,124,249,242,121, 66,161,208, 83, 46,151, 55, 6, 0,177, 88, 28,169, 82,169, 30, 40, 20, +138, 45,168, 62, 55,149,154,166,233, 72,146, 36, 93, 45, 45, 45,139,102,212, 22,139, 45, 0,248,243, 53,245, 26,160,218, 21, 25, +197, 79,234, 92,176,235,215,175,215, 51, 53, 53,237, 67, 16,196,112,134, 97,154, 22, 20, 20,168,150, 47, 95, 30,112,238,220,185, +188,250,245,235,247, 31, 48, 96, 0, 97,102,102,134, 87,175, 94, 49, 89, 89, 89, 23, 0, 44,133, 14, 51,173,105,154,142,223,176, + 97, 3,106,122,189, 87,181, 93,163,209,164, 94,191,126,221,162, 95,122, 58,135,166,105, 12, 28, 56,240, 19, 1, 87, 30,239,223, +191,135, 74,165,170, 50,153,163, 42, 47, 7, 61,230, 45, 6,138,103,127,150,160,200,146,197,128, 81,235,117,149, 30,255, 46,252, +221, 11,122,234,100, 90,180,181,181, 29, 37, 20, 11,102, 58, 54,182,109,153, 18,157,254,182, 32, 79,126, 92, 42,149,238,171,228, + 70,174, 19,103, 13, 19,150,234,205,191,127, 19,231, 95,121,180, 40, 48, 12, 5,134,102,192, 48, 52,104,154, 42, 90,240,154,161, +193, 80, 20, 65, 16,120,162, 86, 84,153, 25,188,124, 57, 77, 45, 44, 44, 86, 51, 12,211,143,205,102,179,202, 26,195,202,126, 46, +182,100,221,204,200,200,248,165, 2,203,235,255, 92,125,158, 59,119,174, 66,241,175,235,172,195, 17, 35, 70, 80, 53,188, 54, 31, +136,197, 98,219,138,182,201,100,178, 4,169, 84,218,231,191,164, 62,203,206, 24,172, 9,103,141,103, 29, 86,199,233,232,232, 40, +208,104, 52,173, 1, 56, 19, 4, 97, 2, 32, 91,163,209,220,202,204,204, 76, 3,208, 22,192,242,226, 99,126, 5,240,250,255,249, +122, 23, 89, 88, 88, 28,102,177, 88, 14,186, 28, 76,146,164, 58, 59, 59,123, 66,185, 7,130, 82, 78,115,115,243,215, 28, 14,199, + 65, 7,158,164,172,172,172,182,250,251,167,158,243, 31,132,242, 65,240,211, 24,134,217,255,159,248,227, 94,122, 78, 61,167,158, + 83,207,169,231,212,115,234, 57,245,156,255, 2,161,133,114, 66, 11, 12,195,232,167,213,234,161,135, 30,122,232,161,135, 30,122, +124, 33,174,149, 19, 91,215, 74, 62, 16, 85,168,210,154,152, 4,107,163,108,239,234, 57,245,156,122, 78, 61,167,158, 83,207,169, +231,252,215,113,254, 43,240,183,172, 76,241,149, 26, 72,207,169,231,212,115,234, 57,245,156,122, 78, 61,231,191,143,243,127, 25, +149,186, 14, 89,250,186,209, 67, 15, 61,244,208, 67, 15, 61,244,248,123,160,179,208, 18, 91, 55,117,177,112,108,121,196,212,161, + 69,136,169, 67,139, 16, 11,199,150, 71,196,214, 77, 93,254,165,245, 38, 2, 48,150,195,225,220,177,177,177,201, 71, 37, 75,239, +252, 3, 96, 4, 96, 56,138,242,251, 12, 1, 96,240, 53,201, 61, 0,206, 40, 96,230,119, 64,194,119, 64,194, 40, 96,166,199, 63, +112, 57,142,149,179,109, 59, 61,186, 49,246,198,202,217,182,157, 42,220,190,192,214,252,249,237, 17,219,214,205,180, 51,251, 74, +127,105,104,101,101,181,223,218,218, 58,206,202,202, 42,222,202,202,234, 48, 0, 99,253,237, 78, 15, 61,244,208,227,111, 67, 73, +140, 86,201,171, 52, 70,139, 3, 0,126,126,126, 30, 0, 30, 2,232,238,229,229,229, 95,254,104,211,186,174, 83, 27, 54,104,184, +104,205,202,165,132,141,149,133, 1, 73,209,154,216,184,196,102, 43,214,172, 63,159,194,231,108,206, 73, 8, 59, 88,139, 66, 17, +108, 54,123,148, 64, 32,240, 2, 80, 34,216, 34, 84, 42,149, 31, 69, 81,103,160,219, 52,109, 88, 91, 91, 63, 98,179,217,245,106, +242,199, 20, 69, 37,164,165,165,185,215,178, 50, 71,212,173, 91,247,176,135,135,135, 65,251,246,237,193,231,243,177,124,249,242, + 5, 82,169,116,139,174, 4,166,166, 78,134, 26,129,112, 46,135,207,239,205,104,213,174, 12, 24,128, 37, 8,163, 73,213, 61,158, + 74,181, 57, 39, 39,186, 64, 71,170,165, 0, 38, 22,215,213, 65, 0, 27,190,164,151, 76,104, 5,173,150, 42,234, 19, 60, 14,168, + 43, 49,198, 15,151, 45, 91,198,241,242,242,194,193,131, 7,221,247,239,223, 63,173,160,160,224, 30,128, 63, 1,124,252,210, 94, +105, 13, 76,239,236,238,190,109,194,130, 5,108,197,163, 71,216,118,248,240, 86, 20,229, 91,218, 85,211,190,196,227, 97,184,133, + 5,215,139, 97,208,154, 0, 8, 2, 8,202,200,162,175,107, 52,212, 25,232,144,139,173, 10,140,197,167,211,241, 79,214,148, 32, +239, 35,243,179, 96,160, 75,215,188,143, 15,126, 6,208,191,252,118, 82, 41,156,192,176,235,120, 41,152,192, 68, 0,155,190,176, + 90, 13, 44, 45, 45, 67,174, 92,185,226,208,190,125,123, 14, 0,188,126,253,250, 59, 47, 47,175, 30, 25, 25, 25,174, 0,242,255, +159,110, 66, 66, 14,139, 53,147,207,229,246,166, 40,170, 5, 0,176,217,236, 80,181, 86,123,135,164,233, 93,208, 49, 39,155, 30, +122,232,241,207, 69,117, 90,228,191, 28,149,102,134, 47, 57, 57,166,236,123, 89,136,173,154, 52,235,216,115,216,251,188, 2,185, + 50, 46, 46, 57,103,254,204,181,119,166,205,217,120,121,211, 1,191,235,254, 47, 34,158,187,180,239,243, 86,108,213,164, 89, 37, +212,149,249,112,235,138, 68,162, 55,187,119,239,214, 68, 70, 70, 50,185,185,185,204,251,247,239,153, 11, 23, 46, 48, 51,102,204, + 80,138, 68,162, 55, 0,234,234,194,105,109,109,157,246,254,254,109, 38, 41, 36,144,137,127,253,130,209,106,181,140, 70,163, 97, + 52, 26, 13,243,246,166, 31, 19,242,231, 69, 38,232,194, 25, 70,173, 86, 51,106,181,154, 81,169, 84, 76,131, 6, 13, 82,116, 44, +103,121,216, 53,111,222, 92,237,231,231,199,156, 63,127,158, 89,176, 96, 1,227,230,230, 70, 1,240,214,245,220,197, 86,206,158, +134,246, 45, 51,166,250,236,210, 92, 11,184,197,132,199, 4, 49,225, 49, 81,204,185,187, 17,204,196,133,219, 53,134,246,110, 25, + 98, 43,103,207,234,206,221,212,212,180, 35, 65, 16, 76, 9, 0, 48,245,234,213, 43, 44,251,170, 91,183,238, 39,175, 58,117,234, + 20,214,175, 95,255,163,185,185,121,235,138, 56,199,180, 0,195,188, 61,201, 48,111, 79, 50,203,186,129, 9, 15, 15,127,206, 48, +204,195,146,151, 66,161,120,120,233,210,165,135,223,126,251,237, 67, 0,131,170,168, 39,157,234,243, 59, 32,161,224,202, 21,134, +217,178,133, 97, 60, 60,152, 8,128,249, 14, 72,168, 33,103, 3, 27, 27,110,208,198, 13,211,212, 87,174,252,193,220,184,113,141, +185,126,221,143,185,124,233, 48,179,117,203, 76,141,181, 53, 55, 12, 64,163, 26,112,114, 0,172, 5,176, 25, 69,150,203,200,140, +140, 12, 38, 53, 53,149, 1, 16, 89,252,219,102, 75, 75,203, 77,168,216,250,214,171,172, 37,107, 94, 63,155, 27, 35,251,187, 51, + 5,121, 41,204,200,254,238,204,188,126, 54,159, 88,182,250, 57, 57, 25,206, 26,216, 34, 35,252,245,113,106,214,192, 22, 25,253, +156,156, 12,107, 89,159, 4,138,214, 9,221,125,255,254,125,146, 41, 3,173, 86,203, 28, 61,122,148, 50, 53, 53,253,163, 6,156, +141, 45, 45, 45,227,205,204,204, 34,203,254,104,217,114, 72,231,166, 93,191, 91, 97,222,236, 91,143, 26,148,179,189,144,199, 75, +186,115,118, 15,149,149, 16,202,168, 21,105, 76,222,135, 64, 38, 41,226, 57,115,116,223,102, 45,159,195, 73, 2,208,254, 75,250, + 82, 13,161,231,212,115,234, 57,255, 11, 57,171,210, 34,255,139,248, 44,189, 67,101, 39, 38, 16,240,125, 86, 44, 91, 76,228,102, +229, 42,148,249, 5,106,173, 82,169,100,241, 24,101,232,219,152,116, 22,135,157, 59,111,206,108, 67,159, 37,203,124,100,192, 56, + 29,255,187,174,155,155,219,203,139, 23, 47, 90,153,153,153, 33, 47, 47, 15, 89, 89, 89,120,249,242, 37, 24,134,193,208,161, 67, + 5, 29,218,181,107,253,243,242,229,207,146,146,147, 59,161,242,129,247, 47,241, 98,102,129, 13,238, 69,107,209,254, 18,151, 85, + 52,234, 16, 4,246,143,240, 42,221,103,117, 82, 94,209, 99,181, 80, 88,186, 32,113, 45,208,169,103,207,158, 60, 0,152, 50,101, + 74,126, 65, 65,129,111,177,133, 67,167,149, 86,197, 86,206,158, 22,182,118,126,123,246,110, 16,181,104,232, 12,141,150, 68,124, +106, 10, 56, 92, 19, 56, 56,240, 48,105, 92,111,110,183,206,102, 22,107,127,221,127, 45,149,198, 16,121,102,212,173,202,184, 76, + 76, 76,142,158, 57,115, 6,103,207,158, 5, 0, 68, 70, 70,194,217,217, 89, 92, 93, 25,194,194,194,156, 6, 13, 26,116, 58, 43, + 43,171, 81,117,251,150, 79,140, 47, 16, 8,224,238,238,142,102,205,154,225,202,149, 43,221,139, 45, 91, 95, 4,197,163, 71,144, + 4, 7, 3,254,181,122,120,105,208,166,141,227,243,235,215,142, 91, 92,187, 30,129, 77,155, 14,227,227,199, 34, 67,155,147,147, + 19,198,142, 25,193, 13, 13, 13,104, 62,124,248,216,128,199,143, 63,186, 23, 11,165,234,176,234,192,129, 3, 75,235,215,175,143, +225,195,135,143,104,222,188,185,141,145,145, 17,246,237,219, 7, 91, 91, 91, 39,181, 90,253,225,202,149, 43,118,169,169,169,152, + 61,123, 54,210,210,210, 22, 84, 70,212,189,111,247,159, 5, 3, 93,186, 54,105, 51, 1, 18, 35, 91, 28, 56,117, 6,239,223, 28, +237,170,210, 68,252,204,163,252,199, 43, 24,193,196,140, 4,137, 79,189,182, 30,230,141,154, 15,130, 99,155, 64, 11, 37,245, 56, +230,231,222, 13,214,115,132,202,163, 43, 55, 73,179, 62, 35, 29,126,142,237,154,255,206, 44,236, 14,178,128,149,116,137,192, 42, +181,214, 50, 24,212,173, 91,183,210,134,139,139,139,131, 74,165,130,139,139, 11, 75,173, 86,123,234, 88,175,141,251,244,233,243, +228,250,245,235,230,141, 27, 55,206,200,206,206, 46,221, 96, 99,110,210,215,255,226,214,217,107,183,157,104,122,140, 33,114, 51, + 34, 46,135, 86,195,213,190, 75,199, 54,119,111, 92, 60, 46, 33, 10, 19,193, 55,201, 4,232, 44, 68,159, 62, 4,194,192, 12,163, +102,204,231,120,246,236, 97,223,187,255,176,187,239,163, 62,246, 4,240, 74,255, 92,175,135, 30,255,106,171, 22,243, 79, 59,167, + 82,161,229,229,229, 69, 84,116,130, 52, 67,183,180,182, 50, 23,109,221,120,228, 21, 91,163, 86,139, 77,140,213, 92, 99, 35,154, + 48, 52,102,107,212,218, 66, 71, 39, 71, 62,205,208, 45, 43,225, 47, 63,197,147, 16,137, 68, 23,255,252,243, 79, 43, 46,151, 11, +154,166, 97,105,105,137,216,216, 88,228,230,230,162,160,160, 0, 31, 35, 34, 80,191,110, 29,172,244, 89,108, 59,123,177,207, 69, +185, 92,222, 22,159,186, 17, 63,155, 54, 74,105, 63, 93, 55,186,100, 9,150,207, 30,249,139,127,171, 96,155,174, 83, 81, 99, 19, + 18, 18, 32,145, 72,224,234,234, 42,121,250,244,233,227, 42, 68,214, 39,156,166,166, 78,134,180,128,127,118,247,158,229, 34,141, + 54, 12,111,163,179,209,164,126, 87, 88,155,215, 69, 74,182, 26,207, 95,254,137,176,144,147,104,104, 95, 23,222, 51,122, 8,215, +111, 56,127,134, 71,214,175,155,155, 27,155, 95, 17,103,126,126,190,164, 65,131, 6,168, 91,183,104,221, 51,138,162,240,246,237, + 91, 80, 20, 85,250,189,236,251,145, 11,247, 65,230,199, 99,194,119,223, 33, 43, 43, 75, 82, 17, 39,151, 13,114,254,180,177, 28, + 17, 23,224,139,205,212,133,133,133,165,211, 83, 53, 26, 13,130,130,130,208,169, 83, 39,143,115,231,206, 85,167,138,116,170, 79, + 13,240,251,182, 63,254,216, 62, 46, 47,143, 5, 0, 7, 9,130,214, 48,204,239,186,246, 37, 43, 43,238,133,155, 55,142, 89,176, + 89,239, 96,102,252, 27, 94,190,140,135, 70, 83, 84,222,172,172,116,204,154,153, 15, 30,215, 16, 87,174,156, 48,119,113,113,191, +144,154,170,113,197,167,110,196,138,202, 41,188,113,227, 6,102,205,154,133,183,111,223,218,177,217,108,188,120,241, 2, 34,145, + 8, 27, 55,110,100,187,184,184,216,137,197, 98,220,188,121, 19,105,105,105, 68, 85,229,124,120,235,225,154,188,143, 15,126, 78, + 37,110,246, 59,112,234, 12,190, 31, 51, 10, 54, 76,244, 99,227,134,196,154, 62, 3,187,252,194,176,235,120,137, 13, 91,154, 58, +187, 14, 4,143, 47,129,247, 79,171, 17, 25,118,213, 84, 94, 16, 50,147,160, 18,235,172,220,116,110,206,103,229, 60, 63,130,154, +114,242,105,155, 59,117, 95, 57, 6, 7, 77,123, 33, 13,220, 31,242,151,208,114,226, 16, 44,202,184,228, 73,234,195,135, 15,248, +248,241, 35, 56, 28, 14, 20, 10, 5, 72,146,172,176,156,118,118,118,211, 73,146,252,165,184,157,143, 8,133,194,201,199,143, 31, + 55, 47, 43,180, 45, 91, 14,233,108,110, 40,238,153,150,158,149, 19,240, 42,252,253,252,233,195,187, 63,122, 30,150,168,225,126, +155,144, 23,114, 37,175,146,250, 20,138,248,252, 11, 55, 47,157,144,104, 99,238, 67,236,210, 29, 92,137, 51, 40,109, 50,228, 57, + 50, 20,124,148, 66,181,103, 39, 90,205,156,135,171,151,207, 75,154,183,104,123, 78,165,213, 58, 3, 80,215,226,218,172, 9,244, +156,122, 78, 61,231,127, 39,103,165, 90,132, 97,152, 54, 0,172,139,191,102, 21,235, 2, 11, 0,153, 40, 90, 69,198,186,248,222, +193, 47,115, 88,249,239,101,247, 45,255,189,236,231,172,226,207, 86,197,239,175, 8,130,200,174,166,232,182, 40, 90,154,240, 90, +241, 59, 80,236, 74,172, 54,240,152, 32, 88,249, 20, 69, 11,120,150, 86,202, 41, 35,123,182,184,125,247,117,144,129,133, 17,167, +111,247,214, 30, 47, 67, 99,158, 17, 44, 66, 75, 16, 44,157,226, 62,216,108,246,168,173, 91,183,182, 48, 50, 50, 2, 77,211, 48, + 54, 54, 70, 70, 70, 6,212,106, 53,242,242,242,160, 42,200,135,166, 32, 31,193,137,113,232,226,209, 29,195,250,245,113, 57,113, +249,207, 81, 20, 69,157,174,138,215,174,101,235, 82, 75,214,234,122,230,127,153, 38, 18,115, 75, 69,215,111,173,157,193,147, 72, +208,123,190,207,151,244,129,192,107,215,174,221, 24, 58,116,104,255,133, 11, 23,178,164, 82,233,205,216,216,216, 46, 0,222, 86, + 43, 42, 4,194,185, 63,206,245, 50, 53,149, 48, 56,119,231, 79,116,107, 61, 6, 6,124, 54,178,242, 53, 32, 8, 32, 34,252, 34, + 8,194, 12, 33,145, 82,116,109,101,132, 62,125, 93, 36,151,207, 71, 44,196, 95,241, 65,159, 53, 77, 78, 78, 14,210,211,211,161, +213,106,161,213,106, 49,124,196, 8, 28, 59,122, 20, 50,153, 12, 10,133, 2,106,181, 26, 20, 69,129,197, 98,225,142,223, 57, 36, +198, 68,160,115,167, 78, 64, 37, 75, 47, 29, 13, 2, 23,192,243,247,239,223, 35, 34, 34, 2, 73, 73, 73, 16, 10,133,176,177,177, +193,234,213,171,161, 82, 21,173, 81, 54, 98,196, 8, 15, 0,161, 95,122, 65,125, 4,246,199, 82,212,207,253, 47, 93,178,122,122, +233, 18,253,252,234,213, 36, 65, 65,193, 62, 93,142,229,241, 48,124,195,239, 51,154,136,197, 98, 36, 37,108, 69,211,166, 60, 44, +152,103, 14,223,223, 50, 1, 0,179,103, 57,160, 93, 91, 11,228,231,158,135,133,213, 82,108,223, 62,167,225,196,137,155,191,147, +203,169, 35,213, 80,255,252,231,159,127, 14,115,118,118,182, 15, 12, 12, 36,248,124, 62, 68, 34, 17, 68, 34, 17,132, 66, 33,210, +211,211, 17, 27, 27,203,108,216,176, 33, 25,192,207, 85, 17,173,220, 46,125, 6,160,255,188,126,184,241,254,205,209,174,246,236, +152,224, 97,222,238,113, 33,207, 3, 11,110,223,121,250, 43,169, 20, 38,230, 38,221, 93,220,160, 93,160,197,204, 69,171,176,115, +195, 10,188,127,241, 40,219,186,110,254, 46, 17,161,170,176,156, 30, 30, 43, 57,182,214,102,228,244,137,195, 76,174, 90, 7, 76, +191,206, 33, 50, 82, 51,223,108, 68,108,160, 66,208,168,245,248,198, 78, 44,245,253,251,247, 69,221,186,117,131, 82,169, 44,181, + 76, 30, 63,126,156, 38, 73,242, 65,133,125, 83,163,249, 37, 57, 57,217, 86,161, 80,160, 95,191,126,179, 55,110,220, 40, 46, 89, +163,142,162,168, 79, 44, 89,107,182, 28,187, 53,247,151, 93, 15,110,157,254,205,110,141,207,228,238,227,188,215, 62, 64, 37,235, + 72,114, 88,172,153, 87, 47, 29,182, 17,154,106, 33, 50,235, 3,101,154, 2,239,247,127, 15,121,190, 18,237,214,172, 2,192,135, + 90,203,194,190,129,195,193, 53,183,195,138,169,147,237,150,237, 59, 48,131,166,233,173,250,231,122, 61,244,208,163, 28,172, 9, +130,240, 3, 0, 31, 31,159,165,190,190,190,225, 4, 65,248, 49, 12,227, 85,108, 64,241, 99, 24,198,171,100,159, 98,113,246,217, +247,146,125,203,127, 47,255,121,201,146, 37,205,215,175, 95,191,174, 83,167, 78,167, 3, 2, 2, 98, 0, 84, 39,180, 6, 20, 11, +171,242, 75,241, 20,205, 58,244,242,242, 34,202,190,127, 98,209,162,233, 71, 31, 98,226,228,125,122,117,112,240,243, 15,125, 53, +105,210,128,158,163, 6,118,235, 27,155,144, 21,209,208,209,198, 34, 60, 60,212,136,166,233, 71,186,212,146, 64, 32,240,234,209, +163, 7, 39, 39, 39, 7, 6, 6, 6,200,200,200, 64,114,114, 50, 52, 26, 13,148,121,185, 80,229,229, 66,153,155, 3, 77, 94, 14, + 62,190,126,137,150, 13,157, 4,197,193,242, 85,162,196,234, 82,222, 82, 85,214,178,197, 55, 52,132,192,208, 16, 68,205,221,134, +223,154,152,152, 60, 47, 25, 84, 53, 26,205,204,197,139, 23,103,210, 52,141,181,107,215, 26, 73, 36,146,115, 0, 4,213,145, 24, + 90,178,189, 58,181,114,101,189,139, 13,129,187,219, 4, 52,110,240, 13, 98,211, 20,200, 44,208, 32, 61, 87,131,118,221,118,160, +158,219, 42,212,105,229,139,136,248,108,216,217, 59,179,192, 17, 84,185,248,115, 98, 98,226, 39,223, 79,159, 58, 5,185, 92,142, +134, 13, 27, 98,204,152, 49, 88,188,120, 49,198,140, 25, 3, 59, 59, 59,140, 27, 57, 8, 43, 86,172, 64,106,106,106,117, 69, 85, + 53,110,220, 88,229,232,232,168,114,116,116, 84,105, 52, 26, 20, 22, 22, 34, 55, 55,183,124,125,207,169,105, 69, 90, 89, 89, 45, +177,177,177, 9,177,178,178, 10, 23, 8, 4,215,131, 8,226,157,210,209,209,186,203,224,193, 68,179,145, 35,217,241, 34, 17,225, + 15, 72,116,225,178, 48,227, 14,240,236,209,159,159,155,115,184,212, 72, 53,121,146, 37,158,248, 55,199,211,199,109, 49,107,102, + 67, 16, 44, 33, 8, 22, 31,114,217,125,116,104,223,137,103, 98, 66, 84,215,151,198, 2, 8,234,210,165,139,157,183,183, 55, 33, + 16, 8, 48,123,246,108,205,212,169, 83,163,198,140, 25, 19,117,239,222, 61,202,209,209, 17,117,234,212, 33,234,212,169, 99, 11, + 32,168,248,152, 42, 97,212,144, 88,163,210, 68, 60, 54,113, 22,199, 80,176,232, 92,168, 21, 12, 95,185, 73,154,181,102,119,204, +166,216,247,114,167,247, 47, 30,101, 69,133, 93,165, 99, 95, 61,204, 76,137, 42,112, 90,179, 59,102,211,210, 93, 41, 21, 94,212, +254,254,160, 47,250,249,107,228, 50, 57,103,240, 64, 79,249,244, 41,163, 26,155, 73,154, 31,135,125, 31,183,122,117, 29,198,173, + 88,183, 93, 51,117,198, 92,205,193, 67,135,153,130,130, 2,228,231,231, 99,251,246,237,228,213,171, 87,147, 41,138,154, 91,217, + 51, 16, 0,104,181, 90, 76,159, 62, 93,108,100,100,132,196,196,196, 82,139, 40, 0, 72, 51,178, 66,159,190, 10,123, 55,255,135, + 17, 30, 50,149, 74,117,235,225,235,136,102,206,142, 14, 4,193, 84, 58, 17,133,207,229,246,110,219,161, 3,155, 97,114, 65,112, +234,226,227,209, 13,200, 79,205, 70,126,122, 54,216, 92, 49, 72, 8,160,165,249, 48,105,217, 30,145,175, 2, 97,111,105,205, 17, +112,185,125,245,227,137, 30,122,252, 59, 81,149, 22, 41, 43,150,214,175, 95,191,174,170,237,101,222,213,229,190,151, 10,169,242, + 34,172,236,103, 0, 88,191,126,253, 58,134, 97,188, 2, 2, 2, 78, 1, 80,232,120, 10,211,202,188, 79,251, 68,104, 85,105,133, + 82,170,125, 23, 46,254, 25,166,198, 34,227,246,173,157,109,174,220,244,127,253, 40,224,117, 68,189, 58, 22,150,140, 86,109,250, +251,230,157, 14,132, 92,177, 94,199, 66,184, 88, 88, 88, 64,163,209,224,195,135, 15, 72, 74, 74,130, 70,163, 1, 41,147, 65,149, +155, 11,101, 78, 14, 40, 89, 1,120, 20, 5, 69, 70, 58,204, 13,132,192, 95, 51, 18,171,177,188, 17, 21, 10,173,146,119,161,145, + 17, 4,134, 70, 96,113,185, 21,186, 21, 43, 65,155,246,237,219,159, 13, 11, 11,235,208,171, 87,175, 95, 81, 52, 69, 62, 62, 57, + 57,185,231,242,229,203, 85,214,214,214,152, 62,125,122, 19, 0, 19,170, 21,153,124,181,139,163, 77, 19, 52,118,154,128,122,117, +122, 32, 87,166, 69, 70,190, 22,233,185, 26,236,219,209, 9, 23, 14,182,199,147, 11, 93, 17,118,171, 55,114,181, 54,144,216,125, + 11,134, 82, 55,175,138,243,206,157, 59, 88,189,122, 53,126,253,245, 87,172, 93,187, 22,191,254,250, 43,146,147,147,225,234,234, +138,132,132, 4,220,184,113, 3, 82,169, 20, 22, 22, 22,120,249,242, 37,182,108,217,130, 39, 79,158, 84,123,210,186,100,179, 45, +222,167, 70,190,116,146, 36, 39, 74, 7, 15,110,145,102,102,214,172,117,235,214,253,103,207,158,237,212,165, 75,151,210,237, 78, + 78, 78,117, 69, 34, 81, 42,138,102, 80,182,170,138,139, 6, 90, 91, 90,186, 66,173,122, 87,220,198, 92, 16,132, 16, 61,122, 71, +160, 75,215,215,208,104,121, 96, 17, 2,176, 88, 66,144,100, 22, 76, 77,237,192, 48,132,107, 53, 69, 92,158,145,145,225,124,247, +238, 93, 86,108,108, 44,132, 66, 33, 0,196,173, 92,185,114,231,166, 77,155,222,154,155,155, 83,126,126,126,184,124,249, 50,188, +188,188,216, 83,167, 78,117,174, 83,167,206,222,234,206,123,229,118,233,179,147,155,111,140,230,106, 77, 91, 9, 69,245,234, 67, + 38,249,246, 71, 15, 11, 49, 0,220,140,142, 46,176,170,155,191, 94, 86, 16,146, 96,226, 80,248,219,205,232,234,102,156,174,164, +223, 68,189,123,126,242,210,205,188,244,180, 28,110,235, 22,205, 21,190,171, 23,241,234,213,111,244,251,138,197, 63,216, 36,231, + 11,115,123,207,190,241,238,226,205,151,133,227, 39,125, 79, 78,153,230,173,188,113,243,206, 37,154,166, 91,160,146, 25,135, 52, + 77, 67, 42,149, 34, 60, 60, 28,209,209,209,200,200,200, 64,102,102, 38, 10, 10, 10, 74,221,141, 6, 5,249,215,118,254,113, 53, + 88, 44, 18, 25,116,104,225, 92,247, 69,224,219,116,177, 72,100,224, 92,191,110, 99, 96,101,133,247, 17,138,162, 90, 8, 13, 68, + 0, 8,228,134, 61, 66, 97, 78, 33, 10,115, 11, 81,144, 93, 8,149,134, 13,165,138, 5,133,154, 5, 71,143, 62, 40,148, 41, 81, +152,149, 7,154,162,220,244,195,141, 30,122,232, 81,197, 88,239,231,227,227,179, 84,199,125,117,118,111,150, 23, 94, 62, 62, 62, + 75, 9,130,240, 91,178,100, 73,115, 84, 62,161,170, 44,246, 87,240, 2,160, 67,122,135,172,172,168, 66, 67,194,101,232,188,159, +126,185,113,234,208, 14, 43,149, 74,158, 96,110, 42,161, 36, 6,124,139, 41,211,215,162,160, 48,103,136, 76,247,116, 4,200,201, +201, 65, 76, 76, 12, 68, 34, 17,120, 92, 46, 40,133, 2,148, 66, 6, 69, 78, 22, 88, 26, 21,120, 20, 5, 51, 3, 17, 28,237,108, + 80,207,218, 70, 39,206, 15,247,111,151, 6,190,151,117, 23,110,104,239, 2,190, 88, 2,190,161, 4, 63,250, 61, 4, 0,240,120, + 60, 96,249,175, 58, 25, 77,236,237,237,255, 60,121,242, 36, 47, 35, 35, 3, 65, 65, 65,193, 0,242, 0, 24, 2,160, 35, 34, 34, +238,134,133,133,121, 57, 59, 59, 3, 64,195,234,200,242, 51, 89,148,150,100,144,152, 26,135,216,164, 64,152, 25, 55, 0,215,160, + 49,210,115, 53, 16,136, 26, 64,171,250,203,251,168,204,143,135, 66,195,214,233,220,213,106, 53, 72,146, 4, 73,146, 80,171,213, +152, 54,109, 26,158, 6, 4,224,244,229,123,136,249, 24,137, 38,245,109,240,221,119,227,209,190,125,123, 4, 4, 4, 84,201, 53, +161, 21,180,246, 18,112, 54,247,103,129, 47, 49, 87,117, 92,124,235, 69,117, 98,139, 32, 8, 6,149,184, 34,203, 97, 83,167, 78, +157, 26, 69,202,100, 8,127,247, 14,189, 86,174, 4, 0, 92,191,126,253,147,115,153, 63,127, 62,255,237,219,183, 83, 94,191,126, + 61, 37, 37, 37,101, 51,128,138,131,205, 25,224,218,181,103,248,225,135,183,200,200,200, 0, 0,156, 57,245,151, 46,141,141,209, +160,223,128, 34,143,150,137,137, 9, 54,111,118,213,169, 62, 41,138,194,254,253,251, 75,221,133, 0,192,225,112,186,204,159, 63, +127,104, 69,251, 55,106,212,136, 87, 29,231,188,225,246,194, 39,193,204, 76,227, 70,245,154, 27, 89,180, 68,150, 54,208, 53, 48, + 89, 58,107,222,112,251,173, 91,206, 39, 43, 69,132,234, 8, 65, 37,214,225, 8,149, 71,117, 41, 99,244,205, 29,234, 44,199,137, + 71, 83, 51,242,151,121,127, 63,214,220,200,196, 74,118,112,167,175, 41,139,205, 98,254,124,173,201,109,238,100,110,242,109,199, +109,133, 63,204, 91, 30,168, 38, 19,189,145,248,103, 36,170, 72,113, 65, 81, 20, 82, 82, 82,144,145,145,129,132,132, 4,100,102, + 22,185, 95, 51, 51, 51, 65,211,244,151,220, 16,161, 72, 72, 64,252,165,131,168, 55,126, 60,218,253,186, 26, 20,205,129, 66, 78, + 97,115,231,158,200,201, 83, 64, 69, 19,176,107,211, 25,223, 95,127, 12, 22, 67, 1,251,118,233, 71, 18, 61,244,248,151, 66,151, +244, 14, 37,130,200,215,215,215,235,107,255,127, 89,177,229,235,235, 27,238,235,235, 91,147,255, 42,239, 50, 44,253, 94, 18,163, +245,176, 76, 0,218,103,131,102, 65,102, 68,244,219,183,156, 20,153, 66,102, 96,109,101,169, 50, 16, 10,232,188,252, 2,118, 96, +104,176, 70,150,250,241,125, 13,206, 35, 34, 44, 44,204, 53, 37, 37, 5, 9,241,241, 32, 21, 50,176, 84,106, 48, 74, 57,122,185, +119,134, 16,128,144, 69,128, 71,107,192, 97,243, 81, 80,152, 15, 0, 17,213, 14,142, 90,237,103,150, 45,130, 32,192, 55, 52, 4, + 95, 44, 6, 95, 98,248,137,133, 75, 23,139,141, 64, 32, 56,121,238,220, 57, 91,123,123,123,172, 94,189, 26, 14, 14, 14, 77,237, +236,236,228,198,198,198, 34,107,107,107, 52,107,214, 12,157, 59,119,198,141, 27, 55, 0, 29,114, 74,105, 73, 97,200,251, 56,116, +201,204, 14,192,227,135,123,160, 86,168,208,218, 99, 15, 52,156,122,176,108,190, 10,244,135,227,144,167, 94, 41,178, 30,216, 12, + 68, 82, 66, 28, 8, 54, 63, 92, 87,203, 83,201,231,224,224, 96,156,186,226, 15, 91, 71, 23, 36, 68,189,195,187, 7,119,241,212, +210, 28,142, 46,205, 74,221, 64,149,150,145, 2,103,205,174,162, 52, 81, 63,207, 28, 43,200,206,206, 22,152,153,153,169, 74,234, +206,214,214,246, 75,196,214,216,133, 11, 23, 34,151,203, 5, 6, 12, 0, 47, 58, 26, 26,141, 6, 29, 59,118, 68,187,118,237, 0, + 0, 29, 59,118, 4,135,195, 65,203,150, 45, 97,103,103,135, 93,187,118,141,173, 76,104,177, 8, 4,145,100, 86, 83, 39, 39,167, + 82,161,117,244, 88, 6, 2, 95,247, 6, 1, 62,182,239,252, 80,186,111,221,186,117,145, 42,141, 6, 65, 48, 97,213,148,241, 87, + 27, 27,155,229,182,182,182, 78,155, 54,109, 98, 11,133, 66,204,152, 49,163, 65, 97, 97, 97,189, 98, 83, 50,150, 44, 89, 2, 0, + 88,177, 98, 5, 86,174, 92, 9,149, 74, 37,175,140,236,232,230, 22,118,233,217,244, 20,166,208, 96,136,167, 69,189, 22, 61,250, +246, 66, 3,231, 30,232,209, 55, 1, 0,214,153,113,226, 70,254,190,204,228,146,137, 33,113,248,246,205, 59, 43,220, 61,122, 44, + 91, 92,248, 96,205,111,251,115,171,141,121,204,139, 63, 82,240,158, 63,106,203,142,189,199,182,252,178,100,142, 48, 33, 67,157, +147,156,195, 20, 74, 4, 28, 73, 67,107, 66, 50,235,167, 95, 99, 82, 82,162, 23, 32,241,102,181, 51, 45,105,154, 70,116,116,116, +105, 76,159, 82,169,132, 76, 38, 67, 98, 98, 98,105,159, 81,136,141,250,121, 79, 26,232, 38, 83, 40,228, 47, 66,163, 18,126,158, + 61,174,147, 76,161,144, 71,197, 38, 68, 2,219, 43, 84, 99, 44, 22, 43, 84, 94, 32,239, 37,207, 85, 34, 35,232, 61, 28,122, 58, + 66, 75, 18, 80,147, 20, 50,178, 10,160, 34, 1,138,197, 69,243,145,223,129, 34, 56,200, 76, 73, 6,139,205, 14,198,167, 65,251, +122,232,161,199,191, 7, 85,106,145, 18,139, 86,167, 78,157, 78,151,181, 58,149,124, 6,160, 66,213,161, 60, 25,101,197, 84,137, + 59,177,178,255, 41,199,171, 43, 62,139,209,170, 54,189, 67,201,127,214, 49,206,183,219,176, 98,156, 3, 77,146, 77,210, 51,211, + 72, 14, 71,192,173, 99,172,144,102, 39,232,254,239, 42,149,202,239,238,221,187,131,123,247,238, 45,136, 10, 13,134, 58, 47, 15, +234,188, 92,112,105, 18,102,162,182, 96,105, 84, 32,212,106,216, 55,165,161, 44, 16,193,255,105,152, 86,165, 82,249,233, 42,180, + 88,108,246,167,113, 89, 18, 9, 4,134, 70, 16, 72, 36,229, 93,139,213,137, 2,131, 62,125,250,244,236,216,177, 35, 24,134,193, +254,253,251,161,209,104,248, 26,141, 6,106,181, 26, 26,141, 6,249,249,249, 56,118,236, 24,118,239,222,253, 20,192, 31,213, 14, +102,164,250,238,173, 59,247,219, 79, 30,231,197,189,238,183, 25,164,154,130,130,112,128, 76,166, 69,161,218, 0,148,249,120, 32, +237, 26,216, 28, 33, 58,181,108,128, 43,231, 47,106, 64,170,238,233,168,194, 63,177, 10, 37, 38,196, 33,233, 99, 36, 36,249,169, +176, 52, 50,128, 60, 58, 18,173,191,155, 80, 43,235, 68,157, 58,117, 64,211, 52, 60, 61, 61, 75,131,171,107, 43,182,178,178,178, +112,245,234, 85,116,236,216, 17, 30, 30, 30, 72, 78, 78, 70,116,116, 52,190,249,230,155,210,125,130,131,131, 17, 24, 24,136,134, + 13,171, 54, 18,102,102,107,175, 39, 37, 6,141,248,246,219,111,121,207,159, 63, 7,195, 48,112,118, 54,130,145,161, 24, 4, 75, + 0, 23, 23, 43, 0, 69,207, 0,221,187,119, 71,126,126, 52,153,147,195, 92,175,230,116, 79, 2,184,172, 86,171, 63,116,235,214, +205,238,227,199,143,152, 55,111, 30,231,204,153, 51, 37,166,100,248,248,124, 58,153, 66,161,168,220,117,223,164, 69,211, 69, 13, + 72, 83, 15,161,168, 94,125, 35,139,150,104,224,220, 3, 0,208,219,107, 50, 26, 52,170,139,252,204,144,250, 74, 69,220, 16, 30, + 39,199, 52,100,123,242, 91,209, 0,215, 73,202,244,135, 81, 40,114,157, 86,219,236,138,168, 51,105, 9,220,241,103, 47,255,121, + 99,250, 55, 94,131,184, 90,138, 36, 93, 29,185, 38,231, 46, 93, 75, 79,142, 79,216,134,132,155, 97,127,217,255,170,180,226, 81, +249,249,249, 16,139,197, 8, 11, 11, 83, 13, 24, 48, 64,192, 98,177,240,225,195,135, 82,161,101,101, 97,214,172, 75, 59,215,166, +107,182, 28,187, 37, 22, 8, 4,125,187,183,117,121, 27, 21,159,196, 48, 68, 92,165,214, 86,173,246, 78,104, 80,176,167,165, 93, + 35,118,244,195,231, 48,239,250, 13, 84, 42, 22, 20,106, 26, 42, 18, 32,217, 60,216,182,234, 0,147,134, 46, 96, 0,188,122,254, + 84,171,210,106,111,233,199, 26, 61,244,248, 87, 91,181,152,170, 68, 82,241,231,108, 0,113,190,190,190,153,101,172, 77, 25, 0, +130, 1,184, 21,239,151, 81,238,184, 12,130, 32, 94, 49, 12,211,174, 12, 79, 70, 25,193, 85,246,179,186,220, 62,193, 53, 16, 89, +101,223, 63, 21, 90,149, 77,169, 4, 0, 11, 11, 11,171,214,173,219, 54, 60,112,232, 44, 24,134,193,251,192,141,200, 73,127,135, +229,235,158, 53,180,183,183,247, 72, 78, 78,246,215,165, 4, 20, 69,157, 57,124,248,240,130, 14,109, 90,183,174,239,224,128,224, +184, 88,240, 24, 10, 60,138, 2, 75,163, 2,135, 82,195,193,149, 2,139,144, 32, 37, 37, 15,235, 79,158, 13, 43,206, 18, 95, 37, +154,126, 51, 8,171,147,242, 64, 16, 4, 54,117,114, 5,223, 80, 2,158, 88,130, 31,255,188, 95, 42,174,252, 86, 47, 1, 95, 34, + 65,195, 14, 58, 37,132,151, 63,120,240,224,117,104,104,104, 59, 87, 87, 87, 44, 88,176, 0,113,113,113,160,105, 26,105,105,105, + 74,169, 84,154,156,145,145, 17, 7,224, 18,128, 3,208, 33,243, 56, 79,165,220,234,119,225,168,119, 39,119, 15,139,111,135,236, +198,229,243,243,145,155,151, 15, 57, 41,130, 76, 73, 66,166, 98,195,204,188, 5, 58,180,108,137,148,228,116,132, 63,191, 85,200, + 81,201, 55,214,164,131, 18, 4,129,192,192, 64, 56,217, 25, 34,242,177, 63, 44, 12,184,112,179,179,129, 93, 23,247,210,252, 82, + 85,129,203, 6, 57,118,236,216,210,204,240,125,250,244,137, 29, 63,126,188,237,252,249,243,113,232,208, 33, 60,125,250,244,179, + 0,109, 15, 15, 15, 60,122,244,104, 21,128, 21,213, 25,245,212,106, 53,154, 54,109,138, 87,175, 94,225,238,221,187,232,209,163, + 7, 60, 60, 60, 16, 18, 18,130,219,183,111, 35, 48, 48, 16, 4, 65,192,220,220, 28,218, 34,241,172,173,140, 76,163,193,185,223, +126, 63,188,116,203,150,221,205,199,141, 27,135, 11, 23, 78, 99,242,164, 38, 32, 88, 2, 16,132, 0,131, 6, 54,193,234, 95, 95, +161, 67,135,238,176,176,224, 98,203,230, 43, 49, 10, 5,117, 76,135,106, 92,115,251,246,109, 59,165, 82,137,220,220, 92, 70, 34, +145, 16, 89, 89, 69, 51, 90, 43,178,104,201,229,114, 97,101, 68,161,111, 34, 54,230, 22, 48, 57, 76, 97,224,144,108, 50,176, 69, +143,190,137,232,237, 53, 9,119,252,254,192,253, 91,119, 97,198,137,139,133,184,224, 70,102,108,102,190, 84,230,188,215,165,205, + 84,118,146,236,214,222, 89,131, 34,217,182,182,244,185, 37,123,242,115,171, 18, 90, 0,136,236,183,199,255,188,196, 96, 80,231, + 78, 29, 26,185,214,181,229,231,100,166, 51,231,175,220, 8,211,196, 94,184, 90, 70, 96, 49,213, 8,245,213, 62, 62, 62,191, 20, +127, 62,242,243,207, 63, 79, 93,191,126,189,101,106,106,106,105,140, 86,122,102,246,253,206, 3,102, 81, 89,185,121,234,195, 91, +126, 26, 46, 18, 10,248, 63,175, 63,252, 80,203,198,243,202,120, 73,154,222, 53,114,222,242, 57, 81,239, 3,237,235,137,248,184, +242,211, 10, 4,223,126, 0, 45,139,135, 31,238,190,128, 74, 67, 33, 55, 51, 11,247,166,204,132,196,218, 20,187, 31, 94, 72,163, +105,122,143,126,168,209, 67,143,127, 47, 42,211, 34, 4, 65, 84,148, 99, 47,173,130,223, 94, 85,117, 92, 37, 60, 95, 3,149,102, +133,215,105, 10, 94,102,102,102,250,163, 71, 47,240,208,111, 13,252,253,214, 32, 60, 48, 24, 41,201,106, 36,167, 41, 97,100,100, +244,172,138, 67,203,103,142,101,228,114,249,208,159,151,255,146, 42, 20, 25,160, 91,207,158,176,177,180,130, 1,143, 11, 54, 73, +131, 77,112, 81,152, 97,130,200, 16, 57, 22, 31, 62,158, 94, 40,151, 15,173, 96,144,232, 85,153,200, 32, 8, 2, 2, 35, 67,240, + 37,134, 16, 24, 26,125,226, 70, 20, 26, 25, 65,104,104, 4, 14,159, 95, 81, 48,252,103,156,133,133,133,195,134, 15, 31,158,147, +151,151,135,169, 83,167,194,223,223, 63,240,214,173, 91, 70, 33, 33, 33,162,140,140,140, 70, 0,250, 0,216, 87,133,200,250,132, + 51, 39, 39,186,128, 33, 85,163,124,127,153,171, 80,146,230, 24, 49,225, 12,196,172, 68,144, 20, 13, 6,128,157, 25, 31, 93,122, +253,138,116,117,103,156,217,187, 86, 78,107,148,227,202,229,208,250,132,147, 97, 24,198,218,218,250,179, 58,184,123,247, 46, 70, + 12, 31,134,190, 67, 6,195,178,190, 19,172,122,125,131,190, 83,127,192,222,189,123,193, 98,177, 96, 97, 97, 81,126,224, 45,229, + 60, 26, 4,238,169, 80, 16,167, 66, 65, 28, 9, 4, 7,192,119,199,143, 31,255,205,205,205,237,193,211,167, 79, 55, 2, 24, 85, +246,191,202, 96,101, 57,107, 86, 69,109,180,108,206,156, 57,138,168,168, 40,136,197, 98,144, 36,137,167, 79,159, 98,247,238,221, +216,180,105, 19, 2, 3, 3, 97,110,110,142,134, 13, 27, 66,165, 82,225,213,171, 87, 10, 0,203,170,224,164, 51, 50,200, 97,219, +183,175,207,242,242,234,138,195,135,119,194,198,166, 51,184, 28, 27,112,184,150, 16, 75,154,226,224,129,223,208,191,127,107,252, +121,229,108,118,102, 22, 57, 12, 0,169, 67, 95, 82,190,120,241, 2,123,247,238,197,240,225,195,147, 71,140, 24, 65,229,229,229, +149, 90,180, 74, 50,253,174, 44,142, 49, 83,169, 84,130,202, 56,191, 95, 28,150,252,211,218,240,213,105,169,201, 29,253, 31, 60, + 27,123,255,214, 93,196, 68,221,199,253, 91,119,241,248,126,128, 79, 90,106,114,199,214,237, 27,243,134, 78,245, 94,116,244,226, + 5,182,196,200, 22, 71, 47, 94, 96,143,153, 53,119,109,219,190, 61,150, 85,215,231,139,219,145, 41, 76, 79, 91,178,110,227,142, + 66, 82,163,100,109,216,182, 43, 69,145, 33, 93, 86,166, 95, 50,213,245, 79,133, 66,177, 79,169, 84,218, 41,149, 74, 59,149, 74, +181, 44, 46, 46,174,219,130, 5, 11, 50, 40,138, 42,181,150,102,188,253,243,217,187, 39, 71,214, 89, 89,152,138, 58,183,107,222, +100,243,190,243, 15, 19, 18,211, 78,148,201,161, 85, 81, 57,149,133, 10,229,176,193, 67,199,203,114,115, 84,232, 52,215, 7,180, + 80, 2, 21, 5,104, 25, 54, 72,130,131,208, 53,155, 33, 50, 51,196,201,216, 55,242, 60,173,102, 24, 62,205,161, 85,213,185,127, + 9,244,156,122, 78, 61,231,127, 39,231,255, 50,108,241,233, 90,135,182,159, 88,180,170,155, 82,105,111,111,223,237,219, 65,189, +208,221,235,103, 48, 12,131,119,111,126, 71, 78,198,123,216,219, 8, 16,157,144,223, 9,128,127, 13, 10,147, 16,151,152,216,113, +206,178,159, 47,142,232,211,211,197,181,126,125, 65,189,122,142, 16, 91, 89, 33, 51, 51, 3, 79,158,191,213,174, 61,117, 46,172, + 88,100,233,228,152,164,105,186, 40,200, 29, 64,207, 57,139, 65,176,217, 64,113, 26,135,146,129,177,126,187,206, 32, 56, 28, 80, + 12, 13,149, 74,165,203,108,185,164,143, 31, 63, 14, 27, 55,110,220, 61, 63, 63, 63, 86,223,190,125, 91, 93,186,116,233, 75,214, +204,131, 44, 61,234, 1, 0,175,181, 75,166,159,233,216, 99,176,145,115,243,182,188,182,245,216,208,104, 9,164, 36,199,195,239, +226, 75,205,219, 23,183,242, 25, 82, 57, 74,158, 25,245,160, 42, 46,141, 70,147,208,168, 81, 35,235,189,123,247,150, 6,195, 83, + 20,133,204,204, 76, 60,123,246, 12, 45,218,117,128,203,164, 41,200,200,200,192,246,237,219, 81,183,110, 93, 12, 28, 56, 16,217, +217,217, 32, 73, 82, 87,135, 47, 5,224, 86,241, 11,229, 68, 22, 81,188, 4, 80,149,110, 67, 39, 39, 39,190, 82,169,108,197, 48, + 12,155, 32,136,173,106,181,122,226,146, 37, 75,108,215,173, 91,135, 38, 77,154, 32, 51, 51, 19, 98,177, 24,206,206,206,200,200, +200,192,203,151, 47, 41,185, 92,190, 23, 69, 11, 89,103, 84, 83,190, 15, 47, 95,198,118,156, 61,251,199,139,191,173,159,238,172, + 84,117,231,155,153,185,131, 97, 72,100,100,196,161, 32,255,169,230,215,213,127,124, 76, 75,215, 14, 5, 16,165,227, 57,175,240, +246,246, 6, 0, 33,128,159,163,163,163,131, 92, 92, 92,156, 43,179,104,233,130, 45,231,147,149, 0, 78, 13,235,107, 55, 47, 63, + 51,196,217,140, 19, 23,219,209,149,222,190,229,124,178,210,200, 78,182, 38, 51,206, 63, 82, 42,187,181,247,232,197, 11,236, 9, + 67,134, 81, 14,146, 40, 31,161, 21,115, 94, 7,106,198,205,205,173, 14, 65,100, 55, 72,207,122,255,122,242,212,233, 35,141,121, +138,235,110, 14, 89, 13, 89,117, 91, 11, 3, 3, 3, 99, 81,195,153,161,197,136, 76, 78, 78,238,182,100,201,146, 91, 12,195,124, + 18,155,144,158,153,125,191,147,151, 55,147,155,155, 23,148, 17,241,167, 46,185,212, 94,190,124, 19,216,211,181, 69,235, 11,191, +173, 91,111,221,125,206, 2, 78,228,131,135, 0,165, 69,188,255, 67, 80, 2, 53,189, 57,224, 78, 90,158, 70, 51, 4,250,172,240, +122,232,241,175,183,102, 85,165, 69,254,203, 49, 0,149, 4,195,235,124, 50, 78, 13,236,111, 53,113,174,215,167,174,131, 37, 0, + 32, 58, 54, 5,209,177,201,183,163, 99,146,251, 86,163,120, 43,155, 94, 89,186,168, 52, 81,156,194,129,209,109, 81,233, 79, 56, +205,205,205, 95,115, 56, 28,135,154,212, 6, 69, 81, 41,153,153,153,173,117, 44,231,152,250,245,235,175,143,143,143,191, 72,211, +244,188, 26,170,253, 10, 57, 75, 22,149,102,113,248,189, 24, 82,221, 2, 0, 8, 14, 95,151, 69,165,203,114,182,144, 72, 36,251, +184, 92,110,221,146,118, 44,137,193,162, 40,138,173,209,104,132, 20, 69,177, 1, 16, 44, 22,139,228,114,185, 74,130, 32, 72,146, + 36, 19, 84, 42,213,116,252,149,112,180,170,115,175,118,160, 47, 22, 90,168,192,162,117, 23, 0,162,162,162, 26,155,154,154,142, + 34, 8, 98, 56,195, 48, 77, 11, 10, 10, 84,203,151, 47, 15, 60,119,238, 92,126,253,250,245,251, 13, 24, 48,128, 8, 9, 9, 65, + 88, 88, 24,147,149,149,117,190,216,138, 21, 93,195,190,196, 18, 8,216,163,205,204, 88, 3, 24, 6,110, 96, 64, 16, 44,132,230, +229,209,215,229,114,234, 68,177, 96,172,105,255, 44,193,216,122,245,234,253, 17, 27, 27,203,173,204,146, 90,217,185,151,199,239, +203,154,255,220,169,107,215, 97,207, 30, 63,190,244,211,218,240,213,101,183,205, 26,108, 58,121,204,204, 57,191,159,218,181,237, +167, 29,151,115, 14,235, 82,206, 86,173, 90, 57, 17, 4, 49, 10,128, 43,195, 48,141, 24,134, 16, 18, 4,147, 67, 16, 68, 56,128, + 16,181, 90,237,247,246,237,219,164, 47, 56,247,218, 60,225, 86,198, 89,186,168, 52, 40,170, 37, 5, 48, 58, 46, 42,253,159, 46, +167,158, 83,207,169,231,252,255,227,252, 95,198,180, 10, 6, 72,221, 50,195,151, 32, 58, 38,185,111,116, 76, 50, 26, 53,106,196, +124,248,240,161, 70, 34,173,178, 65,154,162,168,211,114,185,252,244,151,144,100,101,101,181,253,155, 43,239, 84,108,108,236,169, +175, 73, 88, 44,164, 86, 23,191,106,139,208,194,194,194, 14,186,238,172,209,104,254,142,186, 33,138,173, 89,171, 42,219,161, 79, +159, 62,241, 26,141,230, 46,128, 68,130, 32, 76, 0,100,107, 52,154, 91, 36, 73,166,125,248,240,161,237,230,205,155, 75, 50,223, +255, 10,224,117, 45,203, 65,171, 84,212,201,148, 20,234,228,223,112,142, 39,213,106,245,124,115,115,243,134, 74,165,146,175, 84, + 42,121,101, 39, 31,136, 68,162,140,170, 2,226,203,194,196,144, 56,194,227,228,152,155, 24, 18,229,133, 20,204,236,113, 65, 33, + 11,107, 98,102,143, 11,186, 22, 44, 40, 40, 40,218,205,205,237, 56,139,197,170,207, 48,140, 53,192, 24, 51, 12, 50, 24,134,201, +228,112, 56,201,111,223,190, 77,254, 47,186, 9, 41, 73,154,222, 72,170,213,127,197, 29,234,103, 23,234,161,135, 30,255, 28, 84, + 26,163,197,169, 41,211,135, 15, 31, 8,125,125,234, 81, 86,108, 85,181, 49, 62, 62, 94, 5, 32,160,248, 85, 30,175, 1, 12,252, +111, 63, 65,169, 84,218,186,178,109,186,138, 44,160, 40,102, 11, 8,155, 91,209,182,149, 59,114, 10,176,227,226,162,154,150, 45, + 56, 56, 56, 1, 58,186,216,245,208, 67, 15, 61,244,248,219, 48,173, 50,241,197,209,215,141, 30,122,232,161,135, 30,122,232,161, +199, 23, 97,127, 25,193,245,137,117,139, 64,229, 51, 7,106,226,123,173,205,236,131,187,122, 78, 61,167,158, 83,207,169,231,212, +115,234, 57,255,117,156,255, 84,124, 34,178,116, 73,142,254, 53,160,159,250,170,231,212,115,234, 57,245,156,122, 78, 61,167,158, +243,223, 32,178, 62,121,149,100, 61,208,187, 14,245,208, 67,143,127, 45,206,157, 59,167,211,162,162,163,127, 58,232, 37,145,152, + 46, 47,204,207, 91,127,122,227,228, 75, 37,191,143, 24, 49,130,210,215,162, 30,122,232,129,218, 4,195, 55,104,224,208,140, 69, +209, 93, 24,134,197,102, 88,140,150,200, 87,156,137,206,201,249, 36,237, 64,157, 58,117, 76,184, 44, 12, 36, 24, 70, 76, 16, 52, + 69,179, 89, 79, 99, 98,146,222,214,160, 96,124, 83, 83, 83,111, 30,143,215, 75,173, 86, 59,176, 88,172, 36,149, 74,117, 87, 46, +151,239,196,231,137, 11,255,223,208,184,113,227, 49, 15, 31, 62, 52,113,119,119, 87,137, 68, 34, 82,161, 80,112,110,222,188,249, +127,236, 93,119, 88, 20,215,219, 61, 51,179,189,194,210,171, 40, 40,138,162, 2,246, 94, 19,141, 93, 99,137,177, 23,212,152, 24, + 53,209,104,162,137,221,104, 76,172,137, 37,118,163,198, 26,123, 55, 98,111,216, 80,177, 75,239, 44,176,176,108,159,153,239, 15, +216,205,138,148, 93,196, 68,127, 31,231,121,134,101,118,103,207,222,153,185,115,239,185,239,125,239,251, 10, 62,250,232,163,236, +103,207,158,149,107, 69,162,151,151, 87,251,245,235,215,251,119,234,212, 9, 53,106,212, 80, 15, 24, 48,128,215,172, 89, 51,222, +168, 81,163, 94, 36, 37, 37,157,181,147,174, 14, 65, 16, 91, 9,130,160, 24,134, 25,130,127, 66, 55, 84, 52, 72,146, 36,199, 16, + 4,209,155,101,217, 0,130, 32,158,179, 44,187,159, 97,152,210, 2,183,150,134,143, 1,116, 33, 73, 50, 12, 0, 24,134,185, 5, +224, 40, 96,251,202,187,127,147, 83, 44, 22,135, 2, 64,126,126,254,237,138,226, 36, 8, 34, 20, 0, 88,150, 45, 47,231,112,145, + 72, 52, 26, 0, 52, 26,205,239,176, 33, 29, 84, 81,176,107,130,216,176,217,209, 0,128, 91, 63, 4, 1, 0,236,217, 39,198, 70, + 19,246,252, 86,113,124,246,112, 20,131, 46,131, 6, 13, 90,240,199, 31,127,252, 0,224,192,219,168,248, 30, 30,190,171,126, 94, +190,206,107,226,231, 35,127, 68, 65, 70,136,210, 31, 72,224, 3, 62, 69,245,208,211,244,133, 7,192,110, 0, 28, 39, 39,167,129, +124, 62,191,181, 94,175,247,228,112, 56,201,122,189,254,124, 78, 78,206, 14,148,146, 1,193,230,235,250, 16, 10, 67, 62, 60, 8, +230,159, 60,111, 44, 9, 29, 79,140, 20,162, 54,178,222,129,102,148, 4,240,101,225,185,110, 64,201,225, 60, 74,107,124, 38,122, +121,121,245, 86,169, 84,249, 20, 69,177, 40, 88,245, 92,240,167,224,115,130, 97,152, 52,165, 82, 57,164, 44, 46, 73, 21,212,226, + 75,136,173,180, 17, 26,147,142, 29,167,142, 71,180,212, 23,205, 89, 96, 8, 11, 84, 35, 41,210,149, 97,152,100, 0,103, 73, 19, + 14,229, 37,225,233, 59,218,185,251, 21, 94,215,170,133,251, 92, 0,238, 0,238, 2,152, 8, 32,175, 82,255,252,107, 40,234, 12, +127, 4, 64,178, 69,104, 89,133,187,111,219,173, 91,183, 8,127,127,159, 58,125,123,245, 89, 48,118,204, 56,130,162, 72, 68,221, +191,207,249,116,200,240, 15, 21, 10,133,183, 84,167,171, 13,130, 96,242,133,194, 40,149, 42, 39,113,247,142, 63,100, 65,181,106, +209, 52,205, 96,205,218,213, 31,237,249,107,223,183, 54,138,173,154, 30, 30, 30, 91,167, 77,155,230,209,163, 71, 15,202,195,195, + 3, 49, 49, 49,142, 59,119,238,172,181,114,229,202,254, 89, 89, 89, 67, 0, 60, 46,199,201,182,242,112, 34, 63,148,137,136, 14, +200,165,145,107,196,153, 20, 13, 78, 2,184, 80,222,171,151,159,159,255, 69,126,126,126,147, 70,141, 26,177, 27, 54,108, 32,134, + 13, 27,198, 18, 4, 65,104, 52,154,205, 0,202, 37,180, 36, 18,201,175,157, 58,117, 10, 12, 12, 12,124,254,236,217,179, 46,187, +118,237, 58, 58,116,232,208, 0,137, 68,242, 4, 64, 77, 59,233, 54,101,102,102,134,104, 52, 26,248,248,248,108, 0,208,224, 45, + 84, 34,130,162,168,253,222,222,222,236,226,197,139, 15,132,132,132,184, 43,149, 74,211,148, 41, 83, 58, 94,189,122,245, 35,154, +166,123,216, 33,182, 20, 4, 65,172,117,119,119,119,249,241,199, 31,159, 54,108,216,240,174, 64, 32,224, 63,121,242, 68, 60,121, +242,228, 73,143, 31, 63,238,207,178,236, 24,192,174, 14, 66, 65, 16,196, 90, 47, 47, 47,151, 5, 11, 22,196,132,133,133, 69,241, +120, 60,222,147, 39, 79, 36,223,124,243,205,196,232,232,232,114,113,146, 36,185,166, 73,147, 38,138, 31,126,248,225, 97,173, 90, +181, 46, 83, 20,197, 79, 72, 72, 32,103,205,154,245,249,169, 83,167,250, 49, 12, 51,182, 60,229,116,115,115, 83,204,154, 53,235, + 97,179,102,205,174,242,120, 60,222,163, 71,143,200,105,211,166,125,254,244,233, 83,155,203,233,228,228,212,142, 32,136,117, 41, + 41, 41, 28, 0,240,244,244,108, 44,151,203, 87, 90,231,180, 52,251, 8, 24,141,198, 92,173, 86, 59, 72,169, 84, 22, 27, 8,119, +216,244, 21,221, 1, 96,165,193,188, 95,240, 90,214, 62,176,230,144, 45, 39, 29,234, 81, 16, 23,239,103,245,136, 94, 0, 48,176, + 48, 85,248,207,106,128,195,225, 48,161, 30, 19,217,219, 41,118,133,140,233,217,190,125,251, 89,103,207,158, 93,221,182,109,219, +111,182,109,219,230, 22, 31, 31,191,232,194,133, 11,190,159,124,242,201,176, 51,103,206, 44,204,200,200,216, 83, 81,149,159,207, + 19, 8, 8,146,128, 72, 40,150,219,114, 60,151, 36,187, 93,238,217,115,244,239,143, 30,133,173,140,142,246, 87,123,122, 54,153, + 48, 97,130,123,159, 62,125, 72, 95, 95, 95, 60,125,250,212,121,219,182,109,181,127,255,253,247,222,217,217,217, 95, 2,136,125, + 19,145,165,206, 70, 61,157, 30, 97, 44, 11, 71,203, 3, 75, 32, 91, 96,192, 45,246, 33,238,189, 3, 98,235,251, 77,155, 54,253, +240,244,233, 83, 44, 92,184, 16, 0, 86,217,249,253,201, 61,123,246,236,186,111,223, 62,209,238,221,187, 69,141, 26, 53,130,135, +135, 7, 10, 7, 83,150,192,212,254,254,254,182, 93, 51, 6, 63, 47, 59, 58,162, 65,148,242, 24,126,237,147,178, 80,228, 3, 83, +243,158,129,189,187, 13, 11,131,131,171, 24, 66, 41, 7,217,153,170,186,143,110,197,119,250,123,215,211, 69, 79, 35,211,127, 84, +199,225,123,148, 28,147,239, 63,129,179,179,243,134, 23, 47, 94,180,147, 72, 36,175,188,255,252,249,243,208,192,192,192, 28, 0, + 95,217, 43,220, 92, 93, 93,183, 51, 12,163,203,204,204, 28, 9, 0, 50,153,236, 15,137, 68,162, 72, 78, 78,254,246,109, 13,100, +204, 40,170, 69,222,115,139,150,197, 95,171,184, 92,135, 4, 73, 51, 45,198,142, 25, 71, 12, 24,248, 73,202,211,231, 47, 24, 14, +151, 63,240,248,137, 19,226, 58,117,234,144,186, 85,171, 96, 74, 79,135,113,210,164,230,167, 79,159, 54,246, 27, 56, 88,195,165, +136, 77, 1,254,213,196,127,238,216,233,177,111,239,158, 22, 0,202, 18, 90,124, 15, 15,143,173,231,206,157,243,246,247,247, 71, +118,118, 54, 98, 98, 98,160, 86,171,209,191,127,127,110,139, 22, 45,188,251,246,237,187, 53, 39, 39,167,165, 29,150, 45,247, 26, + 62,156,195, 99,134,247,169,249,209,135, 45, 36,222,190,213,193,166,104, 17,255, 44,186,209,225,115, 87, 39,108,218,123,244,241, +211, 28,182, 27,138,207,141, 84, 42, 50, 50, 50,166,246,238,221,123,111,187,118,237, 92, 5, 2, 1,188,188,188,136, 30, 61,122, +164, 37, 37, 37,205, 46,183,106, 41, 76, 97, 67,146, 36,109,253, 90, 76,122, 32, 91,224,163, 80, 40,160, 80, 40, 0,192,251, 77, + 71,158,142,142,142,171,100, 50, 89, 95,149, 74,165, 33, 73,146, 37, 8,130,213,235,245, 34,133, 66,113,231, 97,244, 99, 47,157, + 78, 87, 99,201,178,223,151,183,111, 21, 34, 63,117,234, 20,250,244,233,195,158, 60,121,114,140,173,121,234, 8,130, 88,219,187, +119,239,252,153, 51,103,106,159, 62,143,241,126,248,248, 57, 33, 17,242, 25, 23, 23, 23,238,245,235,215, 57, 75,151, 46, 21,206, +154, 53,107, 45,203,178,125,237,184,158,107, 63,249,228, 19,195,215, 95,127,157,252,232,233, 11,183,123, 15,159,178, 82, 33,215, +228,226,226, 76, 93,189,122,149, 41, 15, 39, 73,146,107,166, 78,157,170, 26, 51,102, 76, 86,166, 50,199, 35, 75,149,199, 10,184, +148,209,195,195,131,115,224,192, 1,221,246,237,219,201,209,163, 71,175, 97, 24,166,159, 29,215,119, 77,143, 30, 61,114,167, 77, +155,150,253,228,249, 75,143,123, 15, 30, 67, 44,224, 26,221,221,221,168, 27, 55,110, 24,150, 44, 89, 66,206,155, 55,207,166,114, + 74, 36,146, 45,187,118,237,226, 28, 56, 80,208,246, 93,185,114,133, 12, 8, 8, 16, 91, 31,163,209,234, 64, 18, 64, 70, 70,134, +184, 89,179,102, 91, 0,188, 22,220, 55,108,118, 52,134, 77, 7,190,248,226,139,100,123, 43, 75,152,231,132, 50,143,161, 87, 7, +177, 75,243, 71,244,226,112, 56,204,232,209,163, 83,138,126,174,213,106, 9, 0, 61,176,200,118,177,213,165, 75,151,239,142, 28, + 57, 82,125,219,182,109,191,108,223,190, 93, 15, 0, 66,161,208,101,231,206,157, 11,251,247,239,143,254,253,251,207,220,179,103, + 79,133, 9, 45,154,165, 13, 0, 32, 16, 10, 4,209,209,209, 68, 80, 80, 80,169, 94,174, 6,134,185,249,251,163, 71, 13, 63, 11, + 10,106,164,100,152, 26,188,143, 62,202,155, 60,121,114,134, 74,165, 66, 76, 76, 12, 12, 6, 3,134, 13, 27, 70,181,109,219,214, +171,127,255,254, 43,114,115,115, 63, 6, 96,176,161, 78, 46,241,246,246, 14,207,201,201,201, 51, 91,117, 90, 14,161, 57,173, 67, + 77,130,250, 53,140,124, 30,101,226,117,159,196, 16, 39, 87, 17,234, 32,127, 92, 4, 0, 94, 62,210,237, 28, 12, 20, 11,185, 15, +252,105, 46,230,185,250,136,218,167,199,106,230,168,227, 74, 21, 75, 31, 75, 36,146, 94,106,181,122, 79, 97,231, 92,179, 91,183, +110,184,122,245, 42, 0,180, 40, 20, 90,237, 73,146,252,148, 97,152,245, 0, 74, 75,229, 54,161,103,207,158, 31,236,219,183, 79, + 6, 0,123,246,236,129,209,104, 68, 64, 64, 0,120, 60, 30,248,124, 62,184, 92,174, 37, 59,136,141,240,116,117,117,129,139, 3, + 23, 10, 39,201, 71,223,252,214,147, 83,165,142, 28,105,244,125, 40,217,108,152, 88, 29,120,206, 18,212,234,228,136,176, 15,219, +147,135,214, 68,125,123,232,215,135, 13,243, 73,116, 71, 44,116,239, 74,207, 78,146,164,224,238,221,187,240,242,242,122,229,125, +138,162, 0,160,117, 57, 40,103, 62,127,254,188, 89,100,100, 36,218,181,107, 55,179, 94,189,122,157, 35, 34, 34, 60, 50, 51, 51, +209,174, 93,187, 21, 9, 9, 9, 7,222,246, 57, 89,107,145,255, 21, 83, 23, 89, 68, 73,182, 45, 24, 5,147, 20, 69,145,120,241, + 60,198,216,174, 93,135,161,113,113,113,210, 38, 77,154,144, 92, 46, 23,234,179,103,161,189,113, 3, 82,169, 20,189,123,247,230, +158, 63,127, 94, 46,151,202, 71,189,124,241, 50,151,162, 72,176, 44, 89,166,207,131, 66,161,248,252,219,111,191,245, 8, 12, 12, +132,201,100,178, 68, 52, 55,153, 76,136,143,143,135, 84, 42,197,144, 33, 67,220,196, 98,241,231, 54,158, 71,213,154, 1,110,183, +206, 29, 93,219, 96,242,216, 46,146,154,226, 83,144,196,127, 9,233,158,207, 80, 59,233, 56,166,245,106, 34, 57,249,235,204,176, +234, 94, 78,183,172, 76,172, 54, 67,167,211, 93,140,138,138, 26, 21, 17, 17,193, 0,192,223,127,255,205, 62,124,248,112,204,155, +140, 66, 25,134, 65,118,118, 54, 24,134,161, 10,247,205,175,255,105,125,144,203,229,107, 58,119,238,252, 73,108,108,172,232,216, +177, 99,206,113,113,113, 46, 47, 95,190,116,173, 89,179, 38,103,225,194,133, 71,180, 58, 3,101,164, 89,189,137, 54,230, 38,223, +191,255, 60, 43, 53,245,214,198,141, 27, 53, 4, 65,244,182,241, 55, 62,246,244,244,116,158, 62,125, 58, 8,174,184,113,173,218, +245, 2, 41,174,200,129,228,242, 29, 52, 26, 45,253,226,197,139,248,233,211,167, 87, 11, 9, 9,241, 66,193,244,154, 77,156, 94, + 94, 94, 46, 95,127,253, 53, 56, 2, 89,104,253,144,176,234,124,129, 68, 70,113, 69,178, 38, 77,154,180,125,254,252,121,210,180, +105,211, 60, 27, 53,106,100, 23,103,163, 70,141, 20,163, 71,143, 54, 9, 69,178,102,254,254, 1,181,235, 7,215,238, 90,179,102, +205, 94, 28, 14,199,148,158,158, 30, 59,100,200, 16,207,238,221,187,187,219,195,233,230,230,166,152, 54,109,154,201,215, 47,160, + 83,167, 15, 62,108,202, 19,201, 28, 56,124,137, 99,126,190,150,126,244,232, 81,236,140, 25, 51, 60, 67, 67, 67,221,108,225,204, +207,207,231,186,184,184,160,110,221,186,168, 19, 16,128,156,156, 28,236,219,183, 15,155, 54,109,194,250,245,235,177, 99,199, 14, + 52,108,249, 33,100, 50, 25,146,146,146,160, 82,169,184,255,118,133,162, 87, 7,177, 43,245,225, 61,198,141, 27,151, 52,122,244, +232, 20,145, 72,196, 20,221,156,156,156,232, 65,131, 6,165, 14,249,102, 89, 15,243,212, 98, 25,150,172,187, 71,143, 30,125,182, +109,219, 54,212,169, 83, 7,157, 58,117,226, 3,192,231,159,127,206,239,223,191, 63,118,237,218,133, 61,123,246, 60, 8, 12, 12, +188, 4,160,167, 45,229, 28, 50,100, 72,203,126,253,250, 93,232,215,175,223,237, 1, 3, 6,172, 27, 51,102,204, 43, 61, 87,114, + 82,194, 77,189, 94,143,144,176, 70,226,185, 27,174, 13, 42,139,239, 33,176,109, 93,116,244,166, 31,239,223,143,157, 89,167,142, +163,223,203,151, 78,155,151, 44,113, 49, 39,233, 54, 26,141,136,143,143,135, 66,161,192,160, 65,131, 92, 4, 2,193, 16, 27,138, +185,180,103,207,158,195,227,226,226,164,191,255,254,187,231,237,219,183,189,146,147,147, 61,207,156, 62,225, 58,229,171,207,101, + 14, 82, 62, 63, 41,157, 37, 0,224,101, 18, 36,209, 47,208,146,101,225,104, 61,157, 88, 46,120, 66, 36,242,193,202,234, 45, 29, + 31,127,189, 43,116,192,180,195, 97, 46, 10, 79,193,244, 82,190, 81,127,241,226,197,187, 15, 29, 58, 52,176,101,203,150,123, 1, +136,138, 57, 70,216,176, 97,195,125,187,118,237, 26,222,170, 85,171,139, 0,234,150, 56,138,244,241,233,253,215, 95,127, 57,155, +247, 93, 92, 92, 32, 20, 10, 95, 19, 89, 60, 30, 15, 36, 73,218,125,122,243,119, 14,228, 56,213,214, 33, 42,235, 40,118, 45,190, +139,197, 31, 61, 98, 22, 52,127,169, 91, 53, 36, 26, 39,119,221, 69, 26,238,162,203,103,213, 49,112, 70, 72, 71, 49,141,121,239, + 82, 7,158,158,158,254,105,235,214,173,119,119,233,210, 69, 23, 25, 25,137,244,244,116,120,123, 91,198,218, 41,229,160,116, 18, +139,197,240,245,245, 69, 96, 96,224,192,243,231,207,123, 24,141, 70,188,124,249, 18,105,105,105,183,254,141,115,178,214, 34,239, + 25,138, 58,195, 31,121, 77,104, 21,230, 22, 58, 7, 0, 44, 65,168,239, 70, 69,113, 41, 62,127,240, 31,219,183, 11,120, 60, 30, + 98, 99, 99,241,224,193, 3,228,159, 57, 3,205,229,203, 72, 77, 77, 69, 94, 94, 30,220,221,221,177,118,195, 6,137,158,102, 71, + 60,122,252,152, 98, 73,214,218,223,160,216, 37,158, 2,129,160, 99,159, 62,125, 74, 20,100, 73, 73, 73,232,210,165, 11,151,162, +168,226, 86, 53, 20,229, 36,188, 92,137, 67,103,246,206,245,244,228, 63, 0,158, 78, 6,114,111, 1,172, 14, 48,233,129,196,123, +192,145,217,240,203,139, 38, 78,204, 29,234,225, 45,230, 28, 42, 70, 41,151,181, 20, 53, 32, 40, 40,104,253,224,193,131, 73, 0, +104,223,190, 61, 17, 20, 20,180, 14, 64, 64, 41,223, 57, 93, 70, 39,121, 53, 43, 43, 11,253,251,247,119,174, 94,189,250,233,254, +253,251, 59,155,223, 47, 47,167,217,154, 92,167, 78,157, 76,161, 80,184, 3,176,169,129,181,112, 58, 58, 58,174,234,210,165, 75, +223,237,219,183,243, 0,224,220,185,115, 56,116,232, 16,238,223,191,143, 39, 79,158, 48, 97, 97, 97,174,203,214,239, 94,179,106, +245,150,165,189, 90,132,120,181,109, 28, 86, 91,154,151,149,231,238,238,222,130,101,217, 0, 27,203,217,101,246,236,217, 15, 30, + 62,139,117, 32, 57, 92, 14,143,203, 17,200,229, 18,119,133, 76,226,227, 36, 22,122, 11, 72, 66,154,159,159,159,178, 99,199, 14, + 6, 64, 23, 91, 57,231,206,157,251,226,225,211, 88, 71,130,228,112,184, 28, 46, 79, 42, 21, 59,126,212,169, 93, 35, 0,224,129, +229,169, 84,170,212, 77,155, 54, 25,236,225,252,225,135, 31,162,148,217,121, 10, 14,151,203,229,112, 40,203,181,148,136, 68,174, + 98,129,128,175,211,233, 18,151, 47, 95,174,177,135,115,246,236,217, 15, 30, 61,139,115, 34, 9,130, 34, 8,146, 35,151, 73,156, +157, 29,196,174,174, 82,145,139,152, 67,241, 85, 42, 85,226,214,173, 91,109,226, 52, 24, 12,188,212,212, 84, 60,124,248, 16,190, +141, 26,225,212,169, 83,168, 82,165, 10,250,247,239,143, 79, 62,249, 4, 34,145, 8,237,155,213,195,244,233,211,241,236,217, 51, + 24, 12, 6, 65,113,156,102, 63,169,162,240,242,242,138, 44,171,242, 20,249,238, 43,229, 12,245, 0,187, 82, 31,222,195, 90, 96, +149,196,239,228,228, 68, 23,103,237, 42,202,217,165, 75,151,239,206,156, 57, 83,125,235,214,173, 61,134, 12, 25,114,113,235,214, +173,104,218,180, 41, 30, 62,124,136,106,213,170, 97,243,230,205,248,228,147, 79, 46,174, 88,177,162, 71,100,100,100,136,191,191, +255,183,101,113, 14, 24, 48, 96,124,104,104,232,217,148,148,148,102, 74,165,178,238,190,125,251, 70,244,238,221,251,197,192,129, + 3, 59, 88, 4,163,209,184,253,200,193,189,232,218,163, 15,106, 5,215, 93, 51,236,219,109,245,202,120, 54,217,251,192,186, 77, +201,201,233,219,181,218,252,254, 92,174, 88,124,237,154,211,158,213,171, 93,172,151,124, 39, 38, 38,162,123,247,238, 92, 30,143, +215,170,140,114, 46,238,213,171, 87,255,125,251,246, 41,204, 86,157,203,151, 47,227,222,189,123,136,137,137, 65,118,118, 54, 58, +140,201,195,184,133, 5,220,227, 22,178,248,240,115, 86, 82,206, 54,196, 2, 81, 21,120, 56,203, 57,151, 70, 44,175,245,121,248, +154, 58, 28,169, 19, 23,127,124,243, 4, 25, 47,117,123, 74,224, 36,154, 53,107,182,173, 95,191,126,132, 94,175,135, 94,175,215, + 3, 40, 54,170,175,183,183,183,176,126,253,250, 24, 51,102, 12, 41,151,203, 87,148, 84, 78,181, 90,173, 59,122,244, 40,134, 12, + 25,130, 47,191,252, 18, 53,106,212,128, 66,161, 0,151,203,197,150,109,127,186,124, 50, 98,108,205, 6, 45, 91,135,212,105,208, +180,126,174,142,106,196, 21, 41, 70,151, 96, 13, 41,246,220,243,220, 34, 17,245,242, 10, 86,246, 72, 96,174,111,206,207,155,242, +233, 79,209,143, 34, 82,239,127,219,111, 93, 20,123,165,121,198,182,137,113, 72, 53, 62, 68,171,254,126,240, 15, 85, 76,146,248, + 34,168,188,215,211, 70,216,197, 89,175, 94,189,150,215,175, 95, 23,180,110,221, 26,177,177,177,224,114, 45,227, 41,250, 77,202, + 57,123,246,108,129, 86,171,197,157, 59,119, 48,116,232,208, 68,131,193, 48,233, 77,202,105,143, 69,203,172, 69,222, 51,172, 43, +178, 37,151,100,209,154, 13, 0, 70, 6,135, 6, 15, 29,145,127,248,240, 97, 49,159,207, 71,108,108, 44,146,147,147,177,101,211, + 38,186,189,155, 91,110, 39,111,111,213,150, 77,155, 88,189, 94, 15,150,101, 17, 20, 20,132,190,125,251,138, 62,238, 63, 48,141, + 80,105,254,180, 97,154,199,211, 60,191, 62, 98,196,136,215, 62,159, 50,101, 10,228,114, 57, 8,130,240,176,225,228,250, 77,152, +221,203, 71,225,239,152,202,166,108, 81,130, 18, 2, 28, 25,192,145, 3, 66, 7, 64, 32, 3,248, 98,232, 34,207, 42, 73,182, 83, + 76,159, 86, 35,189, 1,216, 51,213, 3, 47, 47,175,153,103,207,158,117,141,140,140,100, 85, 42, 21,146,147,147,217, 5, 11, 22, +184,122,121,121,205, 44,239, 29, 73, 74, 74,154,219,181,107,215,212,161, 67,135, 58, 28, 63,126,220,119,232,208,161, 14, 93,187, +118, 77, 77, 74, 74,154,251, 38,119,154,199,227, 81,247,239,223,119,154, 55,111,222, 39, 0,110, 6, 7, 7,103,122,123,123,223, + 68,129,211,100,169,144,201,100, 22,145,101,182,174,113, 56, 28,112,185, 92,120,121,121,233,149, 74, 37,221,170, 65,128, 40,200, +129, 52,122, 9,120, 34, 39,145,208, 71, 38,119,104,146,153,153,121,151, 32,136,231, 54, 78,241,133, 54,110,220,152, 75,179, 92, +102,220,224,246, 94,159, 15,111,231,246,219,188,209, 85,150,207, 13,247, 94, 60,107, 84,208,220,169,131,218,145, 12,163,173, 86, +173,154,135,217,161,221, 6,243,121, 88,195,134, 13, 57, 12,184,120,248, 56, 38, 53, 54, 33, 49,247,131,182,205, 44,150,203, 58, +161, 97,157, 92, 93, 93, 91, 7, 5, 5, 53, 36, 8,194,166, 37,201, 34,145, 40,180, 86,173, 90, 28,146,226, 18,206, 10,153,175, + 76, 42,114,183, 76,161, 56, 58, 54,119,114,117,237, 71,178,108,142,167,167,167,155, 72, 36, 10,181,227,220, 57, 12,120,112,119, +115,114,112,117,113,148,118,106,215,162, 70,179,230,205,106,214,107,210,180, 89,112,131,134, 31, 19, 38,147, 42, 32, 32,192,205, +236, 36, 95,134,165, 85,184,125,251,118,204,155, 55, 15,245,253,252,224,237,237, 13, 55, 55, 55, 92,190,124, 25,215,175, 95,135, + 66,161, 64, 90, 90, 26,150, 44, 89,130,253,251,247,195, 96, 48,200,236,173, 79,182,136,173,210, 96, 50,153,200,162, 2,171, 36, +126,145, 72,196,152,157,228, 75,194,209,163, 71,183,153, 45, 89, 19, 39, 78,108,185,108,217,178,139,209,209,209,144, 74,165,184, +126,253, 58, 70,140, 24,113,113,197,138, 21, 45,199,142, 29,139, 77,155, 54,225,197,139, 23, 27, 74,227, 27, 48, 96,192,172, 81, +163, 70, 45,143,136,136, 32,221,221,221,161, 80, 40,208,171, 87, 47,108,216,176,129, 99, 50,153, 54,246,235,215,239,118,191,126, +253,110,211,241, 39,191,219,189,126,193,229,168,187,183, 49,126,194,215,124,189,201, 56,205,134,211,103, 53, 82,105,174,169,117, +107,229, 46,163, 49,127, 0,143, 39,118,184,125,219,233,208,198,141, 22,177, 53,125,250,116, 56, 56, 56, 0, 5, 14,204, 40,197, +170, 19,190,127,255,126, 75,123,232,236,236, 12, 62,159, 15, 30,143, 7, 46,151, 11,138,162,112,122,141, 4,171,167, 23,232,139, +213,211, 9,156, 92, 69,168,223,228,222,137,189, 81, 87,225,206,191,253,217,230,224,144,186, 29,156,113,121,103, 10, 22,116,141, + 76,184,190, 43,125,178, 54, 13, 63,151,240,181, 6, 83,166, 76,169,147,150,150,134, 27, 55,110,224,198,141, 27, 37, 89,128,180, + 7, 15, 30, 92,148,151,151, 7,127,127,127,244,236,217,179, 53,128, 70, 37, 60, 55,104,216,176, 33,186,119,239,142,118,237,218, +161,126,253,250,208, 27, 76,220,126,131,195,107,221,127,145,238,189, 96,201, 2,241,217,191,247,145, 23, 47, 70, 80,219,246,158, +116,104,214,238,195,229, 60,153,231, 85,136,156, 61,109, 57,207,124, 58, 19,161,158, 31, 97,221,153, 9,228,202,115, 67,165, 91, + 14,173, 12,144,201,100,196,173, 27,183,141, 91,126,221, 21, 87, 87,210, 51,237,234,206, 76,228, 19, 41,232, 48,220,159,100,128, +190,239, 74,207, 46, 20, 10,151, 69, 68, 68,120, 24, 12, 6, 68, 69, 69,225,203, 47,191,212,190, 33,165,197, 0,226,235,235,139, +115,231,206, 97,208,160, 65,218,212,212,212, 43,255,214, 57, 89,107,145,255, 21,112,172, 20,164, 5,241,241,241,217, 10,133,194, +187, 86,173, 90,164, 94,175, 47,152,146,216,179,135, 94,191,113,227, 17,173, 86, 59, 1, 0,111,213,111,191,173,241,246,241,105, + 55,120,200, 16,194,104, 52,162,107,215,174,252,195,135, 15, 59, 63, 79, 75,203,181,161,195,121,229,247,134, 13, 27,134,101,203, +150, 1, 0,190,248,226, 11,139,105,157,176,193, 97, 73,234,128, 46,157,186, 53,148,199, 75, 86,202, 13,205,141,121, 85,159,201, +174, 74,242, 68, 13, 65,242, 57, 16, 82, 96, 12, 70,211,147,180,222, 55,159, 61,169, 93, 71,164,204,172,214, 49,184, 13,214,159, +218,218, 37,159,214,238,178,185,193, 17,139, 27, 75,165, 82,220,188,121, 83,217,176, 97,195,108,150,101, 29,230,206,157,235, 34, + 22,139, 27,191,193,181,127,249,248,241,227,214, 45, 90,180,248,156, 36,201,142, 12,195,156, 78, 77, 77, 93, 5,224,165,141,223, + 31, 7,224, 7, 0,150,145,165, 94,175, 7, 73,146, 96, 89, 22, 3, 6, 12,192,244,233,211,235,220,187,119, 15,103,207,158,117, +234,216,177,227, 85, 0,217, 0, 70, 2, 40,214,106,166, 82,169, 52,215,175, 95, 23,157, 61,123, 22, 12,195,192,201,201, 9,114, +185, 28, 2,129, 0,189,122,245,146, 78,155, 54,173,195,137, 19, 39,210, 84, 85,171, 80,194,228, 68,181, 64, 42,149,193,195,187, +213,216,129,159, 70,179, 44,187,223,142,198,129, 47,226,152,180, 4,173, 35, 23,127,191,130, 20,243,120,132,144,199,129,128,201, +199,119,139,230, 19, 60,150,230,192,206,249,121, 30,143,199,147, 9,160,167,248,148, 81, 76,160, 66,162,196, 81, 20,197, 23,242, + 74,246,199,224,146, 36, 73,146, 36, 15,128,205, 73,251, 4, 2, 1, 79, 38, 96, 75,228, 20, 81, 4, 69, 16, 4, 31, 37,172, 68, + 11,245, 0,107,182, 34,241, 39, 60,215, 89,139,226, 86,173, 90,225,200,217,155,216,115,232, 52, 50, 98,239, 98,198, 55, 19,209, +168, 81, 35, 28, 62,124,184,212, 50,153,125,180, 74,178, 46,123,121,121, 69, 38, 37, 37, 53, 40,233,187,165, 77, 25,150, 96,165, +122,157,255,123, 7,132,205,142, 70, 25, 62, 90, 61, 91,181,106, 53,126,251,246,237,250,206,157, 59,243, 7, 12, 24,128,186,117, +235,182, 28, 62,124, 56, 0,160, 99,199,142, 88,182,108, 89,203,225,195,135,227,207, 63,255,196,190,125,251,116,109,219,182,253, +230,220,185,115,137, 40, 88,209,249, 26, 24,134,233,190,118,237,218,162,150, 66,152, 76, 38, 24,141, 70, 79,147,201,228, 89,216, + 22, 97,249,242, 21, 25, 39, 79, 28,198, 55,223,206,134,155,171, 71,168,141,117,136, 24,246,245,215, 25,155,151, 44,193,146, 63, +255,196,215,213,170,137,183, 62,120,128,147, 90, 45,118,157, 61,155, 81,248, 59,101,250,102,170,213,106,205,209,163, 71,229,187, +118,237,130,163,163, 35,106,212,168, 1, 39, 39, 39,112,185, 92,144,148, 8, 20, 79,129, 90,193,141, 1, 92, 7, 0, 84,243,130, + 58,200, 31, 23, 9, 2,217, 44,105,191, 79,145,160, 10,170,186,248, 8, 35,198,111,170,235, 40,119,227,225,248,170, 56,156, 88, + 25,191, 95,155,129, 95, 96,194, 35,148,236,243,213,208,223,223, 31,105,105,105, 56,122,244,168, 26, 40, 81,144,129, 97,152, 69, +191,253,246,219,148,111,191,253, 86, 16, 20, 20, 4, 0,161, 0,110, 20,119,172, 68, 34,129,183,183,183, 69, 88, 14, 24, 58, 54, + 96,204,228,177,162,222, 31,182, 3,135,227,130,108,181, 17,153,185, 70, 40, 92,164,248,102,114, 63,225,233,134,222,141,214,174, +248,227,160, 70,131, 70,192,235,237, 1, 65,224,198,181,187, 23,235, 9,131, 0,130, 4,226,201,191, 65,128, 64, 30, 97, 4, 65, + 81, 44, 77,211,136,139,139, 3,203,178, 24,212,123, 68,124,248,130,125,110, 45, 7,169,224, 91,203, 11, 4,139, 54,239,138, 16, +112,118,118, 14,205,204,204,196,203,151, 47, 49,116,232,208,196,140,140,140, 83,106,181,122, 68, 82, 82, 18, 0, 40,203, 65,105, + 17,243,161,161,161,104,220,184, 49,250,247,239, 47,204,207,207,239, 23, 16, 16,224,157,158,158,222,252,109,158, 79, 81, 45,242, + 63, 37,180,138,125,208,140,198, 90,186, 53,107,160, 62,125, 26,252,147, 39,177,203,203, 43, 79,171,213,126, 5, 32,190,240,193, +159,184,105,243,230, 75, 61,174, 92,145,235,163,163, 17,112,239, 30,184,142,142,161,246, 22, 96,227,198,141, 80,169, 84,200,201, +201, 1, 0,172, 92,185, 18, 42,149, 10, 38, 27, 19,206,114,120,104,233,225, 86, 13, 41,120, 2,134, 67, 74, 99,106,229, 55,149, +106,101, 73,222,113,238,234, 28,210, 27,209,177, 77, 36,154, 76,125, 83,130,210, 67,155,145, 15,239, 22, 53,192, 1,167,165, 61, +101, 52,207,251,115, 56, 28,229,227,199,143,187,215,172, 89,243, 16, 0,151,242,248, 3, 20,193,211,212,212,212, 9,229,249, 34, + 69, 81, 63,188,120,241,194,109,195,134, 13,159,207,157, 59,151,181, 22, 90,230,255, 57, 28, 14, 88,150,133,131,131, 3,184, 92, +174,251,229,203,151,221,155, 52,105,242, 43,195, 48,161, 37,156, 39, 91,183,110, 93,188,120,241, 2, 28, 14, 7, 14, 14, 14, 96, + 76, 6,204,158, 60, 22, 52, 37,224, 76,157, 58, 53,180, 79,159, 62, 81, 27, 54,108, 48,202,155,181,104,158,153,153,121,127,252, +160,193, 81, 7, 14, 28,208, 23,134,120, 40,123,136,207,178,183,159, 60,121, 66,249,120,185, 83,172, 41,159,145,240, 0,225,221, +229, 44, 95,234, 1, 33,135, 98,121, 4, 9,129, 80,228,240, 50, 33, 33,147, 97,152,135,182,112, 50, 12,115,235,197,139, 23, 34, +119, 55,103, 78,190, 70,159, 39,226,178,252,152, 91, 55,159, 87, 13,107, 24, 0, 0,218, 91,215,207, 9,106,213, 22,197,164,166, + 75,170, 85,171,102, 19,167, 70,163,185,157,152,152, 72,185,187,187,115, 98,227, 19, 14, 58, 74, 37,174,114, 71,199,166, 0, 96, +200,205,185, 78,234,116,233, 20,151,227,158,158,153,169,212,104, 52, 47,108, 61,247,103,207,158,113, 60, 61,221,168,227, 39,207, + 28,114, 23, 11,220,100,124,142, 92, 64, 16,132,152, 34, 84, 60, 19,147, 33, 20,139,221, 94, 38, 36, 40, 89,150, 45,209, 66,248, + 99,246,224,222, 5,247,107,246,159, 86,220,184,123,247, 46,142, 93,124, 8, 9,171, 7,161,205,193,201, 77,191, 99,208,212,111, +223,216,239,175, 44,177, 85, 46,107,214,218,218,145, 69,248,145, 92,134, 35,252,160, 65,131,102,111,219,182,205,226,128,242,240, +225, 67,180,111,223,222, 60,205,129, 78,157, 58,161, 73,147, 38,120,248,240, 33, 2, 3, 3,113,246,236, 89, 1, 69, 81,130,193, +131, 7, 47,248,227,143, 63,142,150,105,247, 95,183, 14, 35, 70,140, 40,206,177,250, 25, 0, 45,161, 8,202,155,254,227, 22, 23, +101,102, 6,210,210, 83,110,219,122, 29, 8,130,192,176,175,191,206, 88,171,215, 99,251,181,107, 24, 34,145,136, 55, 63,125,138, +174, 77,154,160, 94,251,246, 25,182,180,117,102,171,142, 86,171, 5,151,203,133, 92, 46,135,179,179, 51,120, 60, 30, 40,174, 23, + 56,252, 16,144, 60, 30,194, 90,133, 96,201, 87,146,252,161, 31, 97, 5, 65, 32, 91,192,199, 45,158,184, 68, 95, 29, 66, 82, 5, +189, 88, 22,170,252,120,252,109, 22, 36, 14,126,112,224,202,184, 39, 71,253, 26,228, 40,119,227,225,216,138, 88,156,252, 53, 97, +175, 54, 5, 51, 10,175, 5, 83,202, 64,162,158,163,163, 35,226,227,227, 17, 23, 23,247, 0,165, 59,248,231, 63,124,248,240,185, + 64, 32,168,227,234,234, 10, 0,254, 37, 13,204, 25,134,177,248, 97,109,221,190,219, 37,180,117,128,240,131,150,117,176,229,208, +124,124,214,111, 5,184, 20, 1,154, 54,224,151,101,221, 64,235,242,208,175, 71, 56,209,166, 99, 96,200,233, 67,250, 81, 70, 77, +214,239,175, 13, 4, 56,152,247,211, 39,151, 29, 5, 82,178, 30, 24,194,209,197,197, 77,194,227,241,224, 44,247,212,127, 59,102, + 82, 50,203,178,150,231,134, 75,241,140,100,174,147, 38, 51, 37, 79,228,200,213, 0, 44, 89,181,124,209,108, 42, 30, 9, 9, 9, + 19, 90,183,110,189, 32, 55, 55, 55, 75,173, 86, 15, 2, 0,127,127,127, 63,146, 36, 5, 0, 74,155, 29,241, 67,241, 97, 33,120, +247,238,221,131, 76, 38, 67, 98, 98,162,181,241, 5, 12,195,188, 51,139, 0,222, 81,132, 1,184, 5,192, 19, 64, 87, 88,133,119, + 32, 11, 77,117,109, 14, 31, 62,204, 30, 62,124,184,141,165,243, 98, 89,198,164, 84,130,213, 21, 92, 91, 46,151,203, 2,176, 94, +209, 36,118,116,116, 36,184, 62, 62, 32, 4, 5,174, 31,108, 5, 46,125, 53, 26,109, 11, 45,195,208,160, 64, 24,192, 90, 13, 90, +212, 66, 2,243, 93, 58, 96, 2,127, 38, 82,248,142,214, 61, 29, 96, 98, 65,131,161,236, 44, 14,171, 86,171, 97, 50,153, 20,213, +171, 87, 63, 98, 50,153, 20,133,157, 27,251, 95,221, 81,154,166,159, 83, 20,133,207, 63,255, 28,102,235,143, 94,175, 71, 74, 74, + 10,116, 58, 29,244,122, 61, 94,188,120,129,156,156, 28,232,245,122,220,191,127, 31,254,254,254,160, 40,202,179,148,198,156,101, + 89, 22,190,190,190,168, 90,181, 42, 40,130,197,250,197,179,240,221,151, 99,241,137, 63,131,141,171,126, 65,219,182,109,107, 87, +171, 86,173, 25,135,195,161, 61, 60, 60,120,251,246,237, 59, 72,211,116, 47,216,222,242, 28,157, 62,125,122,213,224,224, 96, 55, + 71,185,204, 40,224, 83,224, 27,213,172, 64,151,201,114,242, 51,224,235,235,103,130, 72, 28, 56,100,200, 16,186, 36, 43, 68,113, +156, 95,125,245,149,103, 80, 80,144,131,194, 81,166,230,115,169, 52, 30,216,140,156,187, 55,174, 2, 0,223,213, 77, 11,161,184, +206,208,161, 67, 77,246,112,206,156, 57,211,223,213,213,213,145, 4,155, 75, 27, 12,255,204,183,235,244,153, 4,151,171, 1,143, +223,240,139, 47,190, 32,236,225,156, 50,101, 74,181, 58,117,234, 56, 58,202, 37,121, 28, 46,149,204, 99,152,100, 33,152, 20,174, +222,144, 37,116,117,201,135, 88, 26, 54,100,200,144, 18, 57,205,214,172,105,211,166,197, 23, 17,222, 80, 42,149,208,166, 68,129, +151, 24,141, 16, 41, 23,141, 92, 21, 16, 8, 4,150,165,239, 37, 85,215,146,124,180,138, 19, 91,182,126,183,225,156, 82,166, 0, +215,214,142, 44, 26, 55, 43, 41, 41, 9,158,158,158,165, 62, 79,127,252,241,199,183,237,218,181, 75,235,212,169,147,254,200,145, + 35, 32, 8, 2,103,207,158, 69, 98, 98, 34, 58,117,234, 4,150,101,205,171,218,112,251,246,109,116,236,216, 81,223,186,117,235, +196,194,248, 90,101, 98,196,136, 17, 48, 26,141,200,203,203,131, 82,169,196,225,195,135, 17, 18, 18,194,138,197,226, 62,148,239, +135,243,251,141,250,182,121,221,250,161,248,117,197, 18, 61,159,195,253,209,158,231,149, 32, 8, 12,253,234,171,140,156,176, 48, +229, 86,181, 58,127,152, 92, 46,174, 30, 31,239,116,243,196, 9, 23,131,193, 96, 19,135,217,170,227,227,227, 99, 17, 89, 60, 30, + 15, 28,190, 43, 40, 73, 61,240,157, 59, 65,236,209, 7,127,223, 18,232, 28, 36,216, 47,147,226,184,196,177,228,208, 14, 98, 95, +204,111, 62,192,115, 95,139, 79, 60,207,136,171, 96, 67, 97,127, 64,178, 28, 98,223,240, 95,106, 86,119,173, 42,194,149,221, 41, + 56,249,107,194, 95,218, 20,204, 2,240,180,172,231,220, 96, 48,104,105,154, 6, 73,146,224,112, 56,214, 62,129,151,254,250,235, + 47,220,188,121, 19,176, 10,219,147,155,155, 75, 83, 20, 5,161, 80, 8, 0,210, 82,218, 59,112,185, 92,112,185, 92,156,187,122, +222,249,147,143,187, 17,151,239,156, 66,139,144,129,200,204, 51, 32, 53,199,128,236,124, 32,184,209, 12,212,237,184, 31,119, 95, +228, 34,180,126, 93,138,226, 75,134, 22,199,167,125,137,120,117, 28,250,102, 62, 96,106,232, 19, 68,199,174, 28,120,248,224,252, +158,187,247,119,254,118,232,105,243, 70,173,213,133,198, 4,228,229,229,177, 4, 65,176,147, 70,127,251,124,235,136, 44,122,197, +160,187, 12, 71, 39,124,246, 47, 54,245,126,174,174,174,151,157,157,157,207, 22,138, 35, 63,153, 76,118,201,211,211, 51, 26, 5, + 11, 61, 14, 36, 39, 39, 7,169,213,234, 22, 40, 88,156, 21,155,153,153,217,190,208,242, 20, 91,138, 37,108,131, 74,165,154, 72, +211,116,143,194,237, 35,154,166, 67,159, 60,121, 82, 39, 52, 52,244, 65, 64, 64,192,237,128,128,128, 99, 1, 1, 1, 7, 3, 2, + 2, 14,182,107,215,110,153, 57,220,195, 91,158, 54,124, 77,139,188,103, 66, 11,133, 34,107, 93,225, 43, 44, 66, 11,192,185,162, + 14,104, 38,129,224,190,105,252,120, 56, 30, 60, 8,238,147, 39, 24, 62,116,168, 92, 44, 22,175, 64, 65,140,166, 22, 82,169,244, +215, 89,179,102,201, 92, 22, 46,132,215,249,243,136, 57,124, 24, 70, 46,247, 70,121, 74,167,209,104,192,225,112, 44,150, 24,137, + 68, 2,154,166, 81,156,201,247,181, 7,208,132, 43,137,169,209,224,163, 42, 24,176,121,199, 85,173,175, 13,124, 62,195,237,176, +202, 63,240,169,154, 23, 56,199,181,169,219, 10,191,150,215,212, 4, 39,143,239, 40, 68, 92, 92, 60,104, 48,118,205, 55,107,181, +218, 28,181, 90,141,208,208, 80,231,155, 55,111, 86, 15, 9, 9,113, 42,124,255,250, 27,222,152,102, 94, 94, 94,187,189,189,189, + 95,122,121,121,237, 6,208,204,142,239,110,184,112,225, 2, 40,138,194,172, 89,179,144,155,155, 11,131,193,128,204,204, 76,196, +197,197, 65,175,215, 35, 33, 33, 1,143, 30, 61,130, 94,175, 71, 76, 76, 12,116,186,178, 7, 36, 12,195, 64, 46,151, 67,171,201, +195,234,249,223, 97,230,180,201,200,121, 22,137,132,164, 84, 56, 58, 72, 48, 97,194, 4, 74,161, 80, 48, 12,195, 84,165,105,186, + 35,195, 48,107,108,185, 79, 86,245,237,162,175,175,111,221,197,139, 23,215,249,110,254, 26,158,156,147,199, 10,100, 66,134, 47, + 19,176,252,218, 77, 49, 98,198, 10,222,242,165, 63, 63,190,114,229, 74, 34,108, 11,222, 73, 2,184, 24, 22, 22, 86, 51, 49, 49, + 49, 36, 40, 40,168,150,139, 95, 53,129,192,211, 59,155,231, 89, 69,197,234,180,215, 8,239, 42,173,214,172, 89, 19,117,233,210, +165, 36,123, 56, 37, 18, 73,237, 45, 91,182,212,117,119,119,175,203, 21,137,132,249, 57, 57,187, 76,249,234,221,148,163, 66, 72, +202, 29, 63,218,191,127,127,228,222,189,123, 83,236,225, 12, 12, 12, 12,154, 63,127,126,112,189,122,245,130, 61,252,171, 11, 68, +222,190,153, 66, 31,191, 76, 81,189, 16, 1,124,170,118,254,245,215, 95,111, 95,185,114,197, 38, 78,138,162, 76, 36, 73,130,203, +229, 66, 44, 22,227,248,241,227, 24, 63,106, 32,124,189,157, 81, 43, 40, 8, 29, 62,155,136,189,123,247, 90,124,120, 40,138, 42, +177, 71,223,188,112,194,161, 48, 79, 34, 18,107,107, 71, 98,109,237,200, 48, 79, 34,178, 68,177, 85,248,121,113,199,216,212, 26, +149, 48,221,104,131,216, 58,122,238,220,185, 69,195,134, 13,227,119,233,210, 5,215,174, 93,195,136, 17, 35, 46,238,219,183, 15, + 0,112,237,218, 53, 76,154, 52,233,226,153, 51,103, 48,118,236, 88,180,111,223,158,127,225,194,133, 95, 97, 67,236, 31,147,201, +132,141, 27, 55,194,100, 50, 65, 42,149,194,201,201, 9,221,186,117, 67, 84, 84,212,216, 77,155, 54, 69, 83, 92,238,167, 93,123, +124,140, 35, 7,247,225,209,253,168,177,155, 23, 12,182, 59, 40, 48, 73,146,232, 50,116,104, 70, 70,112,176,114,179, 74,149, 63, + 82,161, 16, 7,165,164, 56,253,189,123,183,139, 13, 66,141,160,105,218, 34,174,204,162,195,188,113,248,174,224, 72,234,130, 35, +107,132,187, 79,121, 70, 94, 19,220,226, 55,194,195,210,226,103,113,249,228,136, 62,223,249,163,207,119,254,232, 57,181,218,112, +113, 21,172,151, 84,193,184, 46, 95, 86,109, 23,208,200, 1,170, 52, 3, 14,255, 18, 19,171,205,196, 66, 0,143,108,121,206, 25, +134,121,144,152,152, 8, 62,159,143, 42, 85,170,212, 4, 96,246, 11,220, 48,122,244,232, 47,230,204,153, 51, 25,192,156,194,247, +164,237,218,181, 11,206,203,203,195,147, 39, 79, 0,224,102, 41,214, 96,203, 42, 67,165, 42, 70, 80,205,171, 30, 66,106,143,129, + 66, 81, 31,137, 74, 61,146,148,122,172, 95,221, 11,145, 23,230,225,230,201, 33,136, 77, 73,129,200,163, 55,104,147,174,174, 13, +131,122,175, 59,119,238, 16, 23, 46, 92, 32, 24,134,129,209,104,100,115, 85, 42,246,214,197,139,208, 68, 68, 16,114,185,156,104, +217,184,117,222,230,121, 71,174,239, 95,117,241,166, 33,223,238,129,250,155, 96,230,243,231,207,155,237,222,189,187, 29,128,153, +245,234,213,187, 18, 23, 23,215,252,252,249,243,181,124,124,124, 86,148,151,212, 28, 22, 34, 38, 38,230,149,173, 48, 44,132,190, + 80, 52,116, 41, 20,115, 61, 1, 76,194, 27,172,178,183, 3,231,222, 99,103,248, 35, 40,178,218,176,168,208,178, 14, 20,134, 0, +133, 66,102, 52, 26, 18, 78,157, 58,101, 32, 73, 18, 98,177, 24,195, 70,140, 32, 87,255,246, 91,171,129,205,154,157, 13,255,224, +131, 99,103,207,156, 9,107,210,164, 9, 88,150, 5, 73,146,248,243,207, 63, 53, 90,173, 38,211,215,215,215,209,150, 70,195,250, + 1, 82,169, 84, 22,161,149,147,147, 3,119,119,119,155,167, 14,213, 42,156, 62,115, 60, 50,139,165, 63,139,235,242,116,169,225, +199,148, 94, 77,178, 25,154,147, 67, 27,145,163, 97,145,171, 5,231, 26,233,212,100, 88, 96,111,195,139,142, 77, 30, 69, 68, 95, +206,212,210, 90,187, 86, 75,164,165,165,125,215,175, 95,191, 76, 79, 79, 79, 66, 46,151,195,219,219,155,236,217,179,103, 70,124, +124,252,156,242,222, 17,103,103,231, 79,218,181,107,119, 40, 49, 49,177,111, 68, 68, 68,213,243,231,207,247,109,215,174,221, 33, +103,103,231, 79,108,164,216,245,237,183,223,170,249,124, 62,154, 54,109,138,220,220, 92, 20,174,242, 41,117,179,101,138,148,199, +227, 97,237,226, 31, 48,115,218,100, 40,163,175,225,238,197, 83, 56,151, 66, 96,198,252,159,193,227,241,202, 21,235,171,134,171, +184, 94, 61, 47,217,195, 73, 35, 6, 36, 77,159, 54, 77,118,251,246,109,238, 23, 95, 78, 98, 99,146,149,224,119, 89, 66,161,205, +119,228, 29,181, 43,186,126,212, 1,179,102,126, 93,175, 48,104,103,169,168,237, 42,174, 87,215, 75,246,224,235,240,129,207,191, +252,242, 75,209,143, 63,254,168,109,214,172,153, 38, 53, 53, 85, 36, 81, 56, 5,113, 28, 28,235,198, 36,167, 72,155, 53,107,246, +226,179,207, 62,203,182,151,115,198,140, 25,226, 19, 39, 78,112,250,245,235,103,202,202,202,146,114, 69,162, 80, 66, 32,108,156, +158,149,229,208,183, 95,191,167,125,251,246,205, 47, 12, 88,106, 51,231,247,223,127, 47,126,244,232, 17,167, 89,179,102,198,148, +148, 20,153,196,217, 37,132,114,116,106,244, 50, 57, 85,222,184, 73,147,103, 95,124,241,133,186,180,114, 90,139, 20,153, 76,150, +216,162, 69, 11,252,242,203, 47, 88,190,124, 57, 58,119,238,140,168,251, 81,232,250,197,100,212, 25, 55, 9, 7, 47, 95, 69, 98, + 98, 34,230,206,157,139,144,144, 16,240,120,188, 71,197, 62,143, 99,163,137,219, 41, 32,110,167,128, 32,198, 70, 19,230,253, 18, + 45, 91,115,114, 96,125,124,113,199,221,252,190,120, 75, 87,152, 39, 17, 89,154, 31, 86, 89, 98,171,111,223,190,227,205, 33, 28, + 70,142, 28,121,113,197,138, 21, 45, 71,142, 44, 24,104, 55,109,218, 20,243,230,205,107, 57, 99,198,140,139,243,231,207, 71,135, + 14, 29, 16, 16, 16, 80,230,194, 23,154,166, 97, 50,153, 48,112,224, 64,152, 76, 38,164,167,167,227,241,227,199, 88,183,110, 29, + 88,150, 21, 2,128,167,151, 79, 67, 62,159,143, 59,183,110,228,207, 28,217,228, 15, 59, 44, 89,132,245, 32, 38, 47, 47, 15,125, +199,141,203, 72,168, 81, 67,185, 38, 35, 35,127,148, 66, 33,174, 22, 27,235, 36,211,235,189, 81,138, 95, 34, 65, 16, 96, 24,198, + 34,172,204,130,171,232, 86,216, 81,218, 4, 67, 62,115,244,252,182, 36, 0, 64,235,193, 94,232, 57,181,218,112,207, 64,241,202, + 86,131, 10,140,222,123,231, 61,103,115,147,232, 31, 97,196, 3, 59, 44,214,215,174, 93,187, 6, 71, 71, 71,244,235,215, 79, 64, +146,228, 66,243,120, 21, 5,177,179,150,154,185, 4, 2,193,146, 33, 67,134,144,217,217,217,184,123,247, 46, 0,156, 41,169, 93, + 98, 89,214,114,238,121, 74, 2, 52,195,199,165, 91,199,113,242,252, 30,188, 76, 76, 71,108,154, 22,224, 56, 64,171, 78,128, 65, +147, 8,125,246, 45,168,116, 98,155, 10,204,227,241,210,235,213,171,199, 54,106,212,136,101, 89, 22,207,158, 61, 51,197,196,198, +154,110, 44, 91,198,222, 27, 51,134,144, 61,126,204, 19,137, 68,132,191,191, 63,132, 66, 33, 35, 20, 10, 51,255,197,206,251,173, +132, 91,120, 11, 97, 33, 42,210,170,197,226,253, 68, 50, 94, 93,109,104, 9, 96, 90, 92,192, 82,176,114,209,128, 61,191,174,118, +232, 55,112,176, 58, 36, 36, 68,225,237,237, 13,130, 32,208,171,119,111,162, 93, 68,132,140,235,229, 5,231, 6, 13, 44,211, 17, +167, 79,157,194,241,227,199,213, 71,254,218,239, 61, 98,212,168,238, 0,182,148, 82, 24,142, 64, 32,176,252,110,114,114, 50, 4, + 2,129,197, 39, 66,165, 82,193,213,213, 21,201,201,201,182,102,190,222, 58,125,218,213,105,105, 77,190,243,111, 34,227, 18,199, +212, 41,160, 89, 22, 92,130, 6, 52, 44,140, 52,160, 51,178,104, 88,141,114, 58,169, 49, 41, 14, 95,219,247, 2,192, 86,123,174, +158, 78,167,251,251,246,237,219, 99, 24,134,217, 3,128,140,136,136, 96, 30, 60,120, 48, 30,182, 59,174,191,110,182, 23,139,167, +158, 61,123,214,105,234,212,169, 89,135, 15, 31,206,233,214,173,155,195,186,117,235,156,218,183,111, 63, 53, 51, 51,115,167, 45, +134,192,184,184,184, 45,241,241,241,227, 27, 53,106, 4,165, 82, 9,131,193,128,200,200, 72, 4, 6, 6,226,230,205,155,168, 89, +179, 38,110,220,184,129, 90,181,106,129,166,105,104,181, 90, 48, 12, 67,151,213,152, 43, 51,210,129,204, 56, 36, 93, 59,134,199, +247, 34,113, 54,137,192,170,157,135, 80,165,170,127,185,226,212,212,116, 19, 7,123,186, 58,159,252,113,246,247,110, 49,127,255, +137,125, 27, 87, 49,231,142, 29,171,195,151, 97, 76,155,129, 19, 63,214, 27,225, 7,128,223,188, 73, 35,116, 81, 60,162,197, 85, +145,114,246, 65,233, 1, 22,107,186,137,131,221, 93,156, 79,252,180,112,142,236,217,241,205,216,181,246, 23,118,239,182, 29, 33, + 90,160, 73,112,112,112, 23,146, 36, 29, 1,104, 11,253,188,108, 74,109, 83, 28,231,233, 67,135,194,180, 64,147, 3, 7, 14,116, + 17,139,197, 30, 0,140,249,249,249,207,223,132,243,204,225,195, 97,230,114, 18, 4,225, 6,192,192,178,236, 51,216,153,130,167, +127,255,254,243, 38, 77,154, 52,141,166,105, 87,171,209, 57,181,100,201, 18, 14,195, 48, 20,203,178, 6,146, 36, 13, 39, 78,156, +160, 77, 38, 83,146, 86,171, 29,247, 38,173,200,199, 31,127,140,171, 87,175,206, 70,193, 34, 12, 91,173,213,175,248,105, 21,166, +236, 41, 55,127, 68, 68,196,220, 79, 63,253,116,250,206,157, 59, 31,175, 88,177,162,199,216,177, 99,241,231,159,127,162, 70,141, + 26,184,115,231, 14,190,251,238, 59, 0,104, 57, 99,198,140,131, 27, 54,108, 8,136,137,137, 89, 98,131, 69, 3, 38,147, 9, 59, +118,236, 64,175, 94,189,224,234,234, 10, 47, 47, 47, 16, 4,241,247,168, 81,163,126, 3, 0,138,160,120, 0,160,211,234,116, 65, + 65,141,108,182,224,242,120, 60, 75, 91,151,146,146, 98, 89, 41,248,225,167,159,102,172,255,241, 71,252,161,209, 96,148, 66, 33, + 78,240,241,241, 60,248,236, 89,248,253,130,198,153, 45,205,170, 83,150,200,178,213,165, 65,147,140,111,255, 90,240,210, 3, 64, +231,214,131,189,208,122,176, 23, 26,245,116, 35, 72,138,192,189,147,153,136, 58,173,220,107, 84,225,111,216,151, 46,231,193,194, +133, 11, 15,182,105,211,166, 71,237,218,181, 49,122,244,232,207, 54,110,220,200, 51, 26,141, 95,226,159, 48, 15, 14, 36, 73,206, + 89,187,118,109,184,147,147, 19, 46, 92,184,128,243,231,207,255, 13, 32,174,164,118, 9,128, 37,102, 86, 21,223,154,218, 71, 49, +121,226,180,196, 75,184,120,225, 47,212, 8,153, 8,145, 71,119, 56, 5,205,135, 33,122, 57,244,153, 39,225,228,219, 13, 9, 49, +207, 64,113, 4, 81,101, 57,161,176, 44,123, 63, 33, 33, 33, 32, 32, 32,128,120,249,242,165, 9, 0, 75,211, 52,107,104,213,202, + 88,231,199, 31,185, 81,159,125, 70, 52,127,244,136, 98, 9,130,137,140,140, 4,128,135,255, 69, 47,110, 14,183, 16, 21, 21, 85, + 82,184, 5,187, 80,175, 94,189,150,231,207,159, 23,104,181, 90,156, 59,119, 14,141, 27, 91,214,118,253,167,209,239,173,181,200, +123,134,240, 98,222, 91,247,138, 69,235,149,138,205, 16,220, 90, 53,107,210, 60, 18,155,122,117,239,158,127,251,246,109,203,168, + 79,123,253, 58,212,199,143,131,166,105,176, 44,139,243, 17, 17, 24, 50,120,112, 30,151, 34,214, 87,171, 86,149, 37,216, 87, 98, +183,116, 44,102,244,208,175, 95,191,126,150,198, 39, 62, 62, 30, 18,137, 4,124, 62, 31, 12,195,192,100, 50,129,162, 40, 56, 56, + 56,192,100, 50, 21,103,130, 41,202,105,164,149,234,190, 27,186, 14, 74,246,202, 51,176, 99, 28,171,193,143, 39,178, 60,156, 30, +114, 2, 61, 66,184,112,225,164,177,103,150,124,144,196,232, 50,251,226,245, 21, 93,101, 45,249,175, 89,191,126,253,223,134, 12, + 25, 66, 2, 64,199,142, 29,201,250,245,235,175, 68,233,169,114, 74,229, 20, 10,133, 2, 0, 56,116,232,144,242,241,227,199,157, + 15, 29, 58,164,180,126,223, 70,206,117,139, 23, 47,134, 88, 44,134,201,100,130, 94,175,183,248,103, 89,191, 26, 12, 6,184,184, +184,224,200,145, 35,160,105,250, 72, 89,229,244,245,171, 10,194,181, 58,182, 28, 58,139,243, 25,188,242,136, 44, 11,103,117, 15, + 73, 45, 15, 23,231, 83, 63, 45,152,235,154,245, 52, 18, 9, 9, 9,236,137,227, 71,174,104,129,196,156, 92,204,204, 86,163,150, + 70, 15, 97,227, 0,196,157, 90,251, 13, 59,163, 53,140, 40,126,213,160,133,179,142,135,164,150,183,171,243,137,159,127, 90, 32, +203,126, 26,137,228,148, 20, 28, 61,114,232,182, 22, 48, 79, 55, 14,103, 24,166, 46,195, 48,117, 1, 12, 47, 69,188,216,197,153, +159,159, 95, 47, 63, 63,191, 94, 69,114,178, 44, 91,143,101, 89,155, 57,173,125,162,150, 46, 93, 26,157,156,156, 60, 36, 45, 45, +173,147,121,203,202,202,234,152,151,151,215, 54, 63, 63,191,149,102,105, 85,135,252,252,124,183,188,188, 60, 79,173, 86,219, 16, + 64,164, 29,117,222, 2,235,168,211,201,201,201,179,146,147,147,137,178,202, 73,141,139, 38,182,255,252,245, 95,107,215,174,245, +124, 67,254, 87,202,153,145,145,177,103,231,206,157,161,254,254,254, 1,195,135, 15,199,154, 53,107,176, 98,197, 10, 29, 0,108, +216,176, 65,103,101,201,242,141,137,137,105, 84,194,180, 97, 71, 43,107,201,214, 15, 63,252,144, 61,127,254, 60,122,245,234,101, + 9, 36,250,251,239,191,195,100, 50,169, 58,116,232,192, 0,128, 70,155,175, 98, 25, 22,122, 67,137,243,239,175, 93, 79, 62,159, +255,145,117,188, 64,115, 48,102, 62,159, 15,150,101, 81,171,101,203,140,236,144, 16,229,198,156,156,252, 89,245,234,201,195,131, +130,134,215, 6, 6, 23,199, 73, 16,196, 43, 86,157,162,155, 29,150, 44,235,114,166,105,146, 48,250,175, 5, 47,143,155, 45, 91, + 66, 41, 7,218, 92, 19,246,255,248, 50, 93,155,142,223, 75, 18, 63,165,157,187, 82,169,252,226,199, 31,127,212, 41, 20, 10,124, +252,241,199,152, 63,127,254,168,150, 45, 91,230,184,185,185, 93,173, 81,163,198,189, 1, 3, 6, 36, 71, 70, 70,126,209,174, 93, + 59, 60,121,242, 4, 63,255,252,115,118, 86, 86,214,160,210, 56, 9,130,176, 88,242,122,118,237,168, 92,189,242, 23,166, 67,155, +241, 16,139,228, 48,114,125,161,204, 51, 34, 75,205, 66, 47,104, 2, 62, 79,128, 78,205,130,113,245,196,230,124, 90,175,222, 82, + 86,157,207,203,203,219, 59,108,216, 48, 21,143,199,131, 94,175,103,185, 92, 46, 4, 5,126,199, 12,183,115,103, 67,243, 7, 15, + 76, 52,203, 50, 4, 65,224,171,175,190, 82,103,101,101,237, 44,207,115,100, 7,172, 57, 43, 42,220, 66,199, 34,253, 79, 69,132, +133,120, 27,231,254, 62, 99, 93, 49,219, 63, 22, 45,243,146, 74,243, 43, 65, 48, 52, 77, 51,168,230, 95, 77, 22,243, 50,110, 85, +255,254,253, 70,118,233,210, 85,220,181,107, 87, 97,112,116,193,104,244,208,161, 67,216,183,111, 95,254,201,147, 39, 85, 2, 46, +181,193,183,138,175, 59, 77, 51, 32, 8,166, 84, 53, 44,147,201,190,252,246,219,111, 69, 57, 57, 57, 88,177, 98, 5, 19, 26, 26, + 74, 74, 36, 18, 24, 12, 6,108,216,176,193, 24, 28, 28,204, 37, 73, 18, 57, 57, 57, 32, 73,242,145,141, 39,120, 55, 39, 46,177, +211,111,237,250,236,107,244,249, 8,231, 58,237,154, 43,218,250,122,195,216,128, 69, 82,252, 75, 60, 62,115, 50,235,254,137,101, +153,208,166,246, 65,217,233,129,138,235, 8,126, 56,121,242,164,219, 23, 95,124,193,106,181, 90, 34, 46, 46,142, 93,176, 96,129, +219,232,209,163,127, 72, 74, 74,250,164,156, 55,133,200,206,206, 6, 65, 16, 76, 97, 67, 98, 30,245,219, 51, 47, 23,181,101,203, +150, 3,189,123,247,238,217,161, 67, 7, 68, 71, 71, 91,166, 8,173,133,150,121,245,225,194,133, 11,179, 1, 76, 47,139,148,203, +229, 98,197,150, 61,200,206,202,128,187,187, 23,132, 34, 17,202,187,194,146, 79,146,179, 22,205,253,222, 45,227,225, 85, 34,234, +202, 89,102,247,221,212, 52, 19,205, 22, 31,241, 63, 55,137, 45, 84,255,165,143,102, 72,106,214,162, 5,115, 28,204,211,154, 59, +111, 37,171, 8,154,253,226,141, 30,145,247,133,243, 95,134,151,151, 23,146,147,147, 9, 47, 47, 47,182,208, 71,139, 45, 69,104, +189, 90,193, 11,166,203,136,210,166, 13,203,203,255,226,197,139, 5, 13, 26, 52,248,250,201,147, 39,187,235,212,169, 51, 22, 64, + 21,157, 78,151, 61, 99,198,140,159, 54,108,216, 48,210, 22, 75, 22, 0,252,249,231,159,203, 70,140, 24,113,188,123,247,238,223, + 48, 12, 83,223,170, 99,127,225,230,230,102,153,194, 77, 79, 77,153, 54,102,228,192,105,121,121, 89, 54,199,185,147, 74,165,225, + 51,102,204, 16,170,213,106,252,250,235,175, 76,112,112, 48,105, 30, 20,109,219,182,205, 84,179,102, 77, 78,191,241,227, 51,150, +166,164, 96,222,133, 11,234,105,117,235,134,110,124,252,184, 33, 24,102,107, 73, 86,157,226, 44, 89,102,183,139,114, 34,169, 80, +108,253, 14,160,115,243,254, 30, 56,176,248, 37,178, 98,244, 63,193,132,103,176, 33, 45, 80, 49, 72,216,187,119,111,167,212,212, +212, 3,223,127,255,189, 67,195,134, 13, 81,183,110, 93,174, 84, 42,109, 98, 14, 23,147,147,147,131,211,167, 79, 99,205,154, 53, +250,251,247,239,247, 46,109,186,138,166,233,180,154, 53,107,154,175, 3, 75, 16, 68,166, 74, 71, 56,236,170,221, 68, 58,124,204, +110,226,226,141,203, 72, 50, 48,208, 25, 25, 84,243, 15, 67,219,206, 75,113,240,216, 61, 58, 41,230,193, 3,163, 38,107,189, 13, +229,125,246,244,233,211,253,115,231,206,237,255,205, 55,223,136, 50, 50, 50,104,157, 78,199,236,217,179,135, 26, 62,124, 56,205, +114, 56, 12,143,195,193,151, 95,126,169,201,206,206,254, 11,248, 87, 19, 76,191,149,112, 11,111, 33, 44, 68,133, 89,179,172, 95, +255, 87, 80,236, 19,202, 80,228,165, 53,107, 87,127,244,231,142,157, 30, 20, 69,122, 60,123,254,252, 70,143, 62,125, 19, 79,157, + 58,229,196,115,112,104, 12,128,209,143, 29,123,197,160,211, 40, 15, 31, 56,224, 87,173, 90,213,144,194,164,210, 44, 67,145,151, + 74,251,193,188,188, 60,245,133, 11, 23,242,167, 79,159, 78,196,199,199,111,119,119,119, 31,112,236,216, 49,105,159, 62,125, 52, +209,209,209,123, 61, 60, 60,122,182,107,215, 78,246,245,215, 95,235,242,242,242,236, 73, 60,250,128, 77,207,170,125,253,251, 37, +159, 94, 95,188,250, 3,112,168, 22,208,113, 1,198,120, 9,134,220, 83, 0,182,195,142,120, 71,214,144, 72, 36, 33, 98,177, 24, +183,111,223,206,106,210,164,137, 94,171,213,242,230,207,159,239, 44,145, 72, 66,202,123,225, 89,150,101,179,178,178,192, 48, 12, + 7, 0, 81,248, 10,198,254,181,248,159,244,232,209,227,192,174, 93,187, 62,236,218,181, 43, 2, 2, 2, 96, 52, 26, 81,179,102, + 77,232,245,122, 4, 6, 6, 66,167,211, 97,246,236,217,200,201,201,153,140, 82,114,158, 17, 4, 1,147,201,100,113,182,245,246, +241, 43,136,211,243, 6, 97, 44, 36, 92, 50,224,209,225,141, 72,203,204, 96,118,221, 73, 77,205, 55,208,157,158,166,231,223, 47, +122, 92, 62, 13,117,187,225, 19, 18, 1, 64,199,148,158,113, 94,194, 71,192,227, 35,191, 35, 53, 45, 3,127,222, 74,206, 86, 27, +152,206,143,139,225,180,171,156,239, 9,103,216,236,104,244,157, 96,251,177,111, 2, 91, 5, 85, 73,184,157, 2,226,166,120, 35, +139,181, 27,139,141,145,245,134,252, 7,158, 60,121,114, 0, 0, 30, 60,120, 16, 63,112,224,192,105, 47, 95,190,156, 11,224,104, + 76, 76,204, 90,123,136, 54,110,220,248, 4,192,136,210,142,217,185,100,196,126, 0,251,237,225,205,205,205,213, 70, 70, 70,106, +191,254,250,107, 34, 62, 62,254,152,135,135,199,135,199,143, 31, 23,247,233,211, 71, 23, 21, 21,117,198,203,203,171,117,199,142, + 29,165, 71,175, 93, 75,204,127,246,236,240,225,151, 47,125,140, 12,115,184,180,231,179,130, 69,214, 43, 98,107,255,188,151,139, + 14, 44,122,217,145,209, 97,175, 62, 11, 87, 0, 36,188, 1,231,249, 75,151, 46,213, 25, 60,120,240,174,110,221,186, 53,175, 83, +167, 14,170, 84,169,130,199,143, 31, 35, 61, 61, 29,119,239,222,197,161, 67,135, 14,105,181,218, 50, 19,106, 43,149,202,215,211, + 19, 9,157,188, 54,255, 58,235,208,141,139,141,107,182,234, 58, 76, 84,215,139,129,222,192, 34, 62,246, 25,102,207, 92,159,159, + 28,251,228,129,193,100,232, 13, 27, 23,234,104, 52,154,117,203,151, 47,231, 30, 62,124,184,235,170, 85,171,100,126,126,126, 20, +143,199, 35, 1,176, 55,111,222,100, 39, 76,152,160,206,200,200, 56,162, 82,169,214,253,203,125,244,249,231,207,159,135, 81, 20, + 85,161,225, 22,222, 32, 44, 68, 37, 42, 18,254,254, 62,117,170,251,121,141, 13,168,226, 51,222,223,207,119,104,113, 78,238, 1, + 10,133,204,191,170,119,120, 64, 21,159,241,213,253,188,198,250,251,251,212,177,193,180, 24, 32,151,203,143,121,122,122,134, 2, +128,131,131, 67, 79, 71, 71,199,251, 14, 14, 14, 61, 11, 71,129, 61,165, 82,233,195,224,224,224,209,255,162,185,178, 84,206,154, + 53,107, 14,204,203,203,251,172,102,205,154, 3,205,251,207,158, 61,179,236,151,135,211,215,215,183,195,205,155, 55, 63, 89,178, +100,201,199, 53,106,212,232,185, 96,193,130,143,255,250,235,175, 79,124,124,124, 26,150,131, 83, 0,224, 15, 46,151,155,202,231, +243,211,184, 92,110,170,121,227,112, 56,169, 20, 69,165, 2, 88, 91,130,181,172,163,213, 40,231,162,187,187,123,140,187,187,123, +140,135,135, 71,140,135,135, 71,140,167,167,231,107,155,139,139,203, 69, 91,175,103,144,135,180,101,147, 42,178, 75,245, 60,165, + 23,107,187, 75,130, 42,226, 30, 5,121, 72, 91, 54,174,226,112,169,158,167,236,194,255, 55,206, 80, 15,176,236,154, 32,150, 93, + 19,196,134,122,128, 45,107,191, 34,205,254,158,158,158,172,167,167,231,172,183, 53,149, 80, 2,255,191,254,188, 87, 32,103,128, + 76, 38,219, 89,165, 74, 21,115, 91,215, 93, 46,151,255, 45,149, 74,187, 23,182,117,221, 37, 18, 73, 68,112,112,240,176,178, 56, +157,156,156,110,186,185,185,165, 20,110,201,238,238,238,201,238,238,238,201,110,110,110, 73,110,110,110, 73,174,174,174,137,230, +205,209,209,241,106, 57,207,221, 13, 64, 83, 0, 13, 1,200, 43,240,122,250, 3, 24, 83,216, 6,253, 8, 96, 52,128,250, 21,112, +143, 8,174,200,105,156,192,209,247, 18, 87,234,154,203,149,186,230, 10, 28,124, 46,149,146,130,199, 22,206, 90, 78, 78, 78,243, +229,114,249, 95, 50,153,236,130, 76, 38, 59,224,226,226,178, 0, 64,173,255,168, 46, 73, 1,108, 64, 65,124,166,163, 40,152, 10, + 63,128,130, 69, 5,126,239, 96,157,255,255,140,240, 98, 12, 42,248, 55,162, 64,117,172,228,172,228,172,228,172,228,172,228,172, +228,124, 15, 57,201,202,235, 89, 41,180,236, 20, 90,175,108,102,161,197,169,188, 54,149,168, 68, 37, 42, 81,137, 74,188, 6,166, +242, 18, 84,194, 78, 20, 59,181, 76,148,162, 74,237,137, 53, 85, 30,101,123,186,146,179,146,179,146,179,146,179,146,179,146,179, +146,243,255, 29,231,255, 11,252, 91,201, 99, 42,205,170,149,156,149,156,149,156,149,156,149,156,149,156,149,156,255,235,168,156, + 58,172, 68, 37, 42, 81,137, 74, 84,162, 18,149,120, 75, 88,103, 37,184, 94,153, 66,172, 20, 90,246,131, 4,240, 25,128,190, 0, +170,163, 32,155,253, 30, 0,191,161,124,115,250,114, 0,211, 0,180, 64,193,234,156, 23, 0, 46,160, 96,117, 78, 94,229,229, 46, + 30, 46, 46, 46,223,114,185, 92, 71,160, 32,181,137,249,213,250,127,154,166,179, 85, 42,213,130,183, 84, 4, 10, 54, 70, 80, 54, +151,213,186,108,214,175, 70,163,241,109,150,179, 18,239, 38,106, 58, 57, 57,253,161, 84, 42, 7,193, 42,201,114, 37, 42,241,191, + 0, 87, 87,215,177, 6,131, 97, 6,143,199,155,159,158,158,190,250,255,209,169,191, 38,178, 94, 17, 90,135, 15, 31,142, 0,128, +110,221,186,181, 1, 0, 71, 71,199,203, 36, 73,250,219,243, 11, 12,195,188,200,206,206, 46, 49,128,154,163,163,227,101,138,162, + 94,227, 52, 26,141, 50, 14,135,147, 91,220,119, 76, 38, 83,130, 74,165,106,248,142, 92, 68, 2,192, 97,133, 66,161,157, 59,119, +238,111,109,219,182,245, 77, 74, 74, 50, 77,157, 58,181,245,157, 59,119,186, 2,248,200, 78,177,213,140, 32,136,205,161,161,161, +251,135, 14, 29,186,171, 73,147, 38,252,204,204, 76,217,158, 61,123,188,183,108,217, 18,201, 48,204, 32,148,146,104,245,125, 4, +203,178, 37,230, 74, 44,237,179,162,224,114,185,142, 9, 9, 9, 50,243,247, 10,133, 21,140, 70, 35,140, 70, 35,212,106, 53, 66, + 66, 66, 42,188,252, 30, 30, 30, 97, 4, 65,172,146, 74,165, 13,243,242,242,110, 0, 24,159,156,156,124,199,158,178,154, 76, 38, +176, 44,107, 41,103,157, 58,117, 42, 91,102,251, 48,138,207,231,119, 14, 12, 12,108,172,211,233,178, 94,188,120,113,157,166,233, +239, 81,113, 57,218, 28, 0,124, 47, 16, 8,154, 84,175, 94,221,247,201,147, 39,241, 6,131,225, 26, 10,146, 33,231, 84,132,200, +106,211,166,205,197, 95,127,253,213,121,220,184,113, 23, 47, 92,184,208,178, 82,108, 85,226,191,130,175,175,175,163, 90,173, 94, + 15, 32,140,203,229,122, 8,133, 66,136, 68,162, 20,129, 64,112, 91, 36, 18,141,188,116,233, 82,182,189,156, 52, 77,127, 31, 19, + 19,227,209,180,105,211,197,110,110,110,179, 51, 50, 50,180, 6,131,225, 76, 86, 86,214,100, 0,170,210,190, 91, 84,139,188,103, + 34,203,250, 21,102,209,197, 41, 60, 49, 22, 64,219, 87, 20, 24,135,227, 19, 27, 27,235, 38, 20, 10,193, 48,140,165, 51, 43,186, +153,223,215,235,245,168, 91,183,174,161,140, 14,199, 55, 62, 62,222,141,207,231, 91,222,211,235,245,240,246,246,102, 18, 18, 18, +220, 10,211, 30, 88,160,211,233,224,227,227,243, 46,229, 60,250,204,201,201, 41, 39, 46, 46, 62, 68,171, 51,204, 25,253,197,244, +111, 7,245,253, 64,113,249,242,101,230,163,143, 62,210, 69, 68, 68,124,134,130,196,169, 54, 53,230, 4, 65,108,153, 58,117,234, +108,161, 88,238,124,246,242, 3,221,150, 61, 71, 18, 67,107, 86, 35, 38, 79,158, 76, 77,152, 48,225,124, 88, 88,216, 31, 12,195, + 52,128, 29,150, 45,133, 66,113, 92, 32, 16, 84, 45,188,126,113, 89, 89, 89, 31,190, 75, 53,177, 80, 72,113,240,122,240, 88, 14, + 65, 16,118, 7,148,205,204,204,132, 70,163,121,109,171, 83,167,206,219,112, 68,228,112,185,220, 3, 11, 23, 46,244, 78, 73, 78, +198, 47, 75,151, 54, 69,129, 37,179,169, 45, 95, 78, 75, 75,123,173,156, 65, 65, 65,168,132, 93,152, 54,123,246,236,133,159,126, +250, 41,104,154,134, 70,163,241,122,250,244,105,240,140, 25, 51,122, 63,123,246,172, 49,128,231,111, 58, 24, 15, 12, 12,140,158, + 56,113,162, 83,227,198,141, 81,152,165,194,235,194,133, 11, 77, 55,108,216, 48, 36, 46, 46, 46, 8, 64,250,155,252,128,147,147, +211, 31,191,255,254,187,179, 88, 44,198,193,131, 7,157, 59,116,232,112,225,214,173, 91,173,222, 64,108,145,206,206,206, 19, 0, +180,103, 24,134, 15,224, 90, 86, 86,214, 60,216, 31,213,221, 83, 42,149,238, 37, 73,178,154,213,179, 10,146, 36, 93, 8,130,200, + 48,191, 71, 16,132, 27,195, 48, 87,148, 74,101,243,202,234,248,126,195,217,217,121, 84,106,106,234,175, 2,129,128,167, 80, 40, + 32, 22,139,193,225,112,192,225,112,170, 8, 4,130, 42, 2,129,160, 75,187,118,237,198,255,253,247,223,165, 70,216,111, 22,234, + 62, 28, 36, 49,135, 34, 72, 10, 0, 72,174, 68,238,224,224,128, 57,115,230, 72,122,246,236, 41, 1,128,139, 23, 47, 14, 29, 54, +108, 88,135,132,132,132,186, 37,137,173,226,180,200,123,132, 18,131,217, 90, 39,149,142,120,229,201, 37, 73,240,249,124, 92,189, +122, 21,182, 4, 43, 55,167, 72, 40,181, 53, 40,140, 48,126,231,206, 63, 6, 0,115, 71,195,231,243,113,233,210,171, 65,229,155, + 53,107,102,179,133,163,162,208,183, 78, 65,144,199,221,159, 23,148,171,223,170,130,232,218,187, 63, 15, 66,235,159, 99,209,119, +194,172, 1,249, 90, 67, 35, 0,234,236,172,172,172, 27,251,246, 37,133,214,172,201,251,227,143, 63, 26,123,123,123,247,181, 67, +104, 77,107,208,160,193, 94, 74,228,224, 50,116,216,240,161, 35, 57,164, 97,200,152,175,231,199, 39,103,168,195,195,195,247, 29, + 60,120,112,232,162, 69,139, 30, 78,153, 50,101, 26,128,239,108, 45,191, 80, 40,172,250,232,209,163, 64,154,166, 81,167, 78,157, +119, 49,141, 65, 40, 10,130,239,125, 10, 96, 71,225,123, 3, 81, 16,185, 63, 12,192,109,123, 44, 91,102, 11, 86,113, 91, 69,195, +219,219, 59,104,240,224,193, 46,202,140, 12,252,178,116,169,249,237,134, 40, 99, 26,209,252,252,232,245,122,124,252,241,199,131, +105,154,230,152, 69,160, 78,167,211,231,228,228,104,241,143, 99,105, 58,128, 15,108, 40,142,191, 68, 34,249, 9, 64,152, 70,163, +241, 6, 0,137, 68,146,200, 48,204,126,181, 90,253, 29,254, 73,224,107,247, 0, 23, 64, 48, 74, 78, 5,197, 46, 92,184,240,201, +244,233,211,159,255, 7,156, 85,221,221,221, 23,244,235,215, 15, 71,142, 28,193,209,163, 71,141, 34,145,136, 51,108,216, 48, 98, +252,248,241,138,137, 19, 39,118, 1,176,252, 13,111,115,151,217,179,103, 59,213,174, 93, 27,123,246,236,193,221,187,119, 53,129, +129,129,162,182,109,219,130,195,225, 56,125,251,237,183, 31, 1,216,252, 38, 63,160, 84, 42,231,125,253,245,215, 91,118,236,216, + 33,123,241,226, 5, 86,173, 90,229, 50, 96,192,128,136,184,184,184, 54,118,136, 45, 1,128, 9, 0,218, 81, 20,213,106,216,176, + 97,166, 47,190,248,130, 75,146,164,113,233,210,165,174, 27, 54,108, 24,192,229,114,195, 50, 51, 51,109, 25,164,145, 0,230,140, + 28, 57,114,196,223,127,255,173,184,126,253, 58,223,217,217, 25, 52, 77, 91, 44,197, 12,195,184,153,235,172,201,100, 66, 80, 80, +144,143,213,247, 69,239,171,208, 32, 73,210,192, 48, 12, 23,128, 16,128,174,172,253,255, 37,145,229,228,228, 52, 78,169, 84,254, +230,225,225, 1,119,119,247,215,218, 92,157, 78, 7,161, 80,200,243,240,240,248,189,103,207,158,220, 3, 7, 14,148, 56, 5, 72, + 80,196,247, 7,119,206,245,118, 82,200, 0, 0,203,214,156,200, 7,128,191,254,250, 11, 73, 73, 73, 80, 40, 20,168, 91,183, 46, + 53,119,238, 92,207,201,147, 39,255,146,149,149, 53,178, 36,174,162, 90,228, 61,179,104,173, 43,110,191, 84, 31, 45,150,101, 45, +121,242,108,172,180, 69,223, 58, 93,132,143,208,235,245, 40,106,209, 50, 63,188, 92, 46,183,168,249, 17, 4, 65,176,165,113, 22, +131, 97, 18,137, 36, 68,173, 86,175,180, 99,116,107,225,220,253,121, 16,182, 8,166, 14, 52,103, 34,237,242,117,193,235, 22, 0, +151, 95,142, 92,245,107,155, 54,222, 19,102,174,152,165,201, 76,202,248,118,112,247,170,129, 30,206, 34, 73,118, 90,142, 83,173, + 90,157,138, 88,105,202, 42,103,235,161, 67,135,110, 61,121, 53,134, 16, 10,121, 60, 14, 69,113, 91,214,171,233,236,235, 64, 57, +200, 0,135,248,231, 79, 46, 15, 31, 62,188,222,148, 41, 83, 90,217,193,137,194, 14, 23,219,182,109, 3, 65, 16,164, 61,231, 94, +129, 40,122,223,205, 15,113, 40,128, 91,133,251,219,173, 58,149,237,133,239,221, 50,139,173, 98,172, 94,167,139,138, 23,243,244, +155,209,104,196,176, 97,195, 6,155, 76, 38,142, 85, 35, 81, 84,192, 20, 39, 98,108, 58,119, 79, 79,207,147, 0, 62, 32, 8, 2, +122,173, 86,255,211,207, 63, 91,127,124,179,136,200, 58, 93,210,179,100, 52, 26, 65,211, 52,231,214,173, 91, 92,171,186,206, 5, + 32, 1,224,194,178, 44, 72,146,188,103,195, 61, 10, 18,139,197,151, 15, 29, 58, 36,111,216,176, 33,193,231,243, 97, 50,153, 16, + 21, 21,229,187,104,209,162, 49,167, 79,159,254, 72,173, 86,215,193,235,201,211,109,185,239,193, 23, 46, 92, 80, 7, 4, 4, 20, + 43, 28, 85, 42, 21,167,102,205,154,109, 74, 16, 69,111,155, 51, 33, 53, 53,181,215, 7, 31,124, 48, 54, 37, 37, 37,218,100, 50, +125, 3,160,174,139,139,203,173, 62,125,250, 64, 36, 18,181,211,104, 52,203,223,164,206,187,185,185,245,108,222,188, 57, 86,173, + 90,133, 69,139, 22,117, 4,112, 6, 64, 7,149, 74,117,186, 71,143, 30,112,116,116,236,149,157,157,189,249, 13,158,163,154,173, + 91,183,254,125,206,156, 57,178, 35, 71,142, 32, 48, 48, 16,185,185,185,248,234,171,175,220,126,248,225,135,115,217,217,217,109, +173,158,139,146, 56,235, 8, 4,130,205, 59,118,236,144, 6, 4, 4, 4,240,120, 60, 50, 32, 32, 0, 74,165, 18, 90,173, 86, 48, +127,254,252,122, 34,145,232,206,242,229,203, 55, 3,232, 83, 70, 57, 73, 0,243,214,174, 93, 59, 54, 60, 60,220,113,240,224,193, +180, 94,175,199,174, 93,187, 64, 81, 20,184, 92, 46,196, 98,177, 37,121, 53,143,199, 67,173, 90,175, 5, 73, 63, 88,202,249,230, +160,192, 15,213, 17,246, 77,187,158, 46,133,207, 50,245,193,229,114, 33, 20, 10, 33, 20, 10, 33, 16, 8,240,232,209,163,153, 66, +161,112,105, 9,214,241,215, 56,137,127,212, 69, 8,128,235,101,237,227,117,215,144,183,222,126, 22, 3, 31,130, 32,150, 1,104, + 87,208,237,146, 17, 46, 46, 46, 95,166,166,166,198,218,202,233,233,233,233,156,153,153,185,220,211,211, 19,238,238,238,150,254, +219,219,219, 27, 70,163, 17,169,169,169, 96, 89, 22,217,217,217, 16,139,197,240,242,242, 90, 30, 30, 30,190,103,221,186,117,153, +197,114, 50, 88,212, 99,192,140,239, 41,138, 34, 1,128,226, 72,165, 19,167, 3, 85,171, 86, 69,203,150, 45,161,213,106,145,147, +147,131,224,224, 96, 14, 65, 16, 67, 9,130,144,179, 44,187, 26,192,217,255, 65, 67, 97,137,206,240,179,139,206,139,154,179,197, +243,120, 60,155,132, 86,225,241,101,153, 33, 72,163,209, 8, 30,143,247,138, 69,130, 32, 8,208, 52,253,202,251,102,161, 85, 30, +161, 62,126,252,120,230,247,223,127, 31,155,149,149,181, 6,229,156, 74, 24, 58,116,232,107,254, 30,147, 39, 79, 78, 72, 75, 75, + 99, 63,238, 20, 34,137, 62,150,148, 92, 93, 33, 21,185,202,100,213,132, 10, 39,199,204,204,204, 43,133,141,137,173,168,209,160, + 65, 3,209,150,125, 23, 18, 70, 79, 90, 56,183, 97,128,179,188,190,143,139,194,195, 65,196,151,146,132, 90,104, 50, 38, 56, 57, + 57, 5,218, 91,110,115,187, 32, 22,139, 65,146,228, 59, 97,209,178,154, 46,188,197,178, 44,148, 74, 37,142, 28, 57,130,174, 93, +187,222, 50,139, 16,149, 74,133,228,228,100,120,122,122,222, 42,180,124,148, 57,141,200, 48, 12, 12, 6, 3, 12, 6,131, 69,192, + 88,213, 33,139,128, 49, 31, 75, 81,212,189,114,158,194, 92,133, 66,209,186, 93,187,118,252,157,187,118,241, 89,150, 85,163, 32, +135, 90, 30,203,150,144, 32,187, 8, 76, 38,147,197,202,198,229,114, 17, 23, 23,103,233,184,204,185, 37,133, 66,161,109,166, 12, +129,224,235, 63,255,252, 83,222,184,113, 99, 34, 51, 51, 19, 12,195, 88, 26,201,223,126,251, 77,216,183,111, 95,239,200,200,200, +111,117, 58,221,236,242,220,174,146, 4, 17, 0,200,229,114, 19,108,139,152, 93, 38,167,201,100, 34, 90,180,104, 49, 37, 35, 35, +163,158, 70,163,153,111,203,101, 4,112, 48, 33, 33,193,186, 99,191, 19, 29, 29,173,233,223,191,191,168, 90,181,106, 77, 30, 60, +120,240, 70,117,181,102,205,154,205,184, 92, 46,174, 93,187,166, 3, 96, 30, 89, 71,220,189,123, 87,215,167, 79, 31,129,175,175, +111,179,236,108,155, 93, 86,106, 6, 5, 5,157,114,115,115, 19,153,219, 80, 87, 87, 87,238,186,117,235,100,137,137,137, 48, 24, + 12,152, 54,109, 26,186,117,235, 6, 23, 23, 23, 76,158, 60,217,125,241,226,197,127,228,229,229, 53, 40,205,104,205,231,243,183, + 62,125,250, 52,208,211,211, 83,116,245,234, 85,212,175, 95, 31, 25, 25, 25, 72, 73, 73, 65, 94, 94, 30, 82, 82, 82, 48,114,228, + 72,183, 95,126,249,197,203, 6, 75,150, 69,100,173, 91,183, 46,123,239,222,189,212,250,245,235,101, 92, 46,215, 34,180, 56, 28, +142, 69,104,153,115, 43,150, 99,166, 33,187, 80,180, 57,230,228,228,228,188,193, 45, 18, 0,224, 91,139, 44,129, 64, 0,129, 64, + 0,161, 80,248, 70,121, 89,223, 19,120, 19, 4,241,128,199,227, 9,196, 98, 49,143, 36, 73, 8, 4,130, 78, 78, 78, 78,247,235, +214,173, 91,247,212,169, 83, 49,182,144,104,181,218,173, 2,129,128,235,230,230, 6, 0, 8, 12, 12, 68,253,250,245,161, 86,171, +153,156,156, 28, 56, 58, 58,146,177,177,177,208,104, 52, 72, 78, 78,134,159,159, 31,151, 36,201,173, 40,240, 67,126, 13,151,111, +165,172, 1,176,198,188,239,226,226,146,106,109,233, 20, 10,133,240,246,246, 70, 98, 98, 34,100, 50, 25,245,195, 15, 63,244,217, +181,107, 87,239,203,151, 47, 15, 5,176,205,138,106,246,123,236,163,101, 22, 89,214,175,255, 8,173,110,221,186,205, 58,124,248, +112,155,226, 70,225, 92, 46,183,194,124, 93,204,130, 74, 46,151, 23,181, 90,129, 97,152,146, 44, 90,118,255,142, 80, 40, 20,141, + 27, 55, 46,119,245,234,213,118,139,173,126,171,162, 45, 86,172,215,134,145,117,234, 92,254,246,219,111,123,254,253,247,223,137, + 13, 3,170,113, 36, 73,177,121, 66,185,163, 35,124,170,116, 29,214,171,207, 93, 20,172, 62,180, 21, 79,115,115,115, 69,213,125, +196,122,146,212, 18, 85, 4, 28,153,167,132, 39,240, 80, 40,188,121,122, 93,154, 92,161,224,235,116,186,108,148,146, 4, 26, 0, +220,221,221, 79,136, 68, 34, 63,243,190, 66,161,112, 96, 89, 22, 98,177, 24,158,158,158, 82,138,162, 30, 91, 61, 92,177,169,169, +169,157,202, 42,152,163,163,227, 9,129, 64,224, 71,146, 36, 8,130, 0, 69, 81, 32, 73, 18, 36, 73, 90,254,167, 40, 10, 4, 65, + 32, 63, 63, 63, 54, 38, 38,166,147, 13,231,107, 2, 16, 70, 16,196,173, 35, 71,142,160, 73,147, 38, 56,118,236, 24, 58,119,238, +140,156,156, 28, 68, 69, 69,161,117,235,214, 0,240,169,173,247,220,218,249,221, 60, 40,120,244,232,145, 69,184, 88,111, 50,153, +236, 77, 76,236, 23,251,245,235,135,223,127,255,157, 45, 28, 76, 72, 8,130,168,239,224,224,240,232,225,195,135, 54,249,193,176, + 44, 11,131,225,159, 67,205,157, 87,161, 63,132, 93,201,129, 41,138,234,212,160, 65, 3, 34, 39, 39,199, 44, 32,193,225,112, 64, + 81, 20, 40,138,194,175,191,254, 42,106,220,184,241, 12,129, 64, 48,133,199,227,169,140, 70,227, 78,173, 86, 59, 31, 64,246,187, +212, 34,181,106,213,106, 82,124,124,124, 55, 63, 63,191, 67,111, 64,195, 26,141, 70, 61, 0, 17, 69, 81,220, 10,104,163,168,194, +186,165,181, 18,251,166,194,125, 1, 10,166,137,109,130,139,139,203, 31, 71,143, 30,245,241,243,243,131,209,104,132,201,100, 66, + 94, 94, 30, 34, 34, 34,160,211,233, 96, 50,153, 16, 24, 24,136,239,191,255, 94,251,229,151, 95, 10,215,174, 93,155,150,151,151, + 55,168, 12,218, 47,247,236,217, 35,241,244,244, 20,105, 52, 26, 60,127,254, 28, 13, 26, 52, 64,110,110, 46,212,106, 53,242,243, +243, 97, 48, 24,160, 82,169, 28,105,154,214,151,193, 53,211, 90,100,141, 25, 51,230, 30,159,207,111,240,197, 23, 95, 32, 33, 33, +193,242,204,143, 30, 61, 26,238,238,238,150,103,169,240,249,180,171, 97,230,112, 56, 16, 8, 4,224,241,120,217, 85,170, 84, 1, + 65, 16,194,216,216,216,242, 76,197,201, 1,168,184, 92, 46,223, 90, 96, 9, 4, 2, 92,187,118,237, 91, 62,159,191,212, 30, 95, + 79,182, 72,231, 86,214,254, 59, 48,104, 93,198,227,241, 4, 78, 78, 78, 60,171, 1, 39, 79, 42,149,194,205,205,109, 21,128, 46, + 54,158,119,168,147,147,147,165,125, 15, 9, 9, 65,124,124,252,254,156,156,156, 33,105,105,105, 32, 73,114, 43, 73,146,189,205, +131,212,172,172, 44,248,250,250,134,150,196,215, 60,204, 99, 44, 8,246, 21,139, 86,145, 1, 26,228,114, 57, 94,190,124, 9,181, + 90,205, 62,121,242,132, 24, 55,110, 28,161,215,235, 55, 69, 70, 70, 94, 65,193,106,251, 18,181,200,123, 2,251,125,180,204, 22, + 45, 91, 59, 0,130, 32,202, 28, 77, 24,141, 70,105,112,112,112,113, 14, 95, 68,113, 66,171,112, 58,169, 92, 21,157,203,229,202, +202, 43,182,138,226,208,222, 29,238,139,190,159,246,189,147, 87,181,234, 83,166,204,228,116,239,222,253,234,150, 45, 91,104,167, +218, 93, 58,156, 61,177,205,125,249, 87, 83,143, 29, 61,122, 20, 40,112,140,182, 21, 23, 15, 31, 62,236, 49,121,194,120,124,255, +245,151,199,229,129, 46,124, 41,225, 36, 17,234,212,233, 82,176, 26, 65,141,160,110,251, 14, 29, 74, 6, 16, 89, 26,137, 88, 44, +246,123,240,224, 65,160,245, 66, 2,189, 94, 15,177, 88,140,179,103,207,186,138, 68, 34, 87, 0,208,104, 52,168, 91,183,174,173, + 22, 19,191,199,143, 31, 7,202,100, 50,228,231,231, 67,167,211,193,104, 52,130, 97, 24, 16, 4, 1, 46,151, 11, 62,159, 15,137, + 68, 98,239,202,190,219, 0, 62,237,218,181,235,246, 99,199,142, 33, 56, 56, 24, 89, 89, 89,136,142,142, 54,139, 44,243,180,161, + 77, 48, 91,137,172,253,177, 56, 28, 14,254, 8, 8,192,232,164, 36,139,128, 89,230,224,128,239,153,242,101,211,168, 91,183, 46, +123,241,226, 69, 28, 63,126, 28, 61,122,244, 32, 14, 28, 56, 96,160,105,154,151,148,148,116, 47, 41, 41,201, 38, 14,134, 97, 44, +101, 53,183,219,214, 2,203, 94,161,101, 50,153,100,124, 62, 31, 90,173, 22,102,203,131,245,230,239,239, 15,165, 82,201, 81,169, + 84,156,164,164, 36,241,188,121,243,190, 56,119,238,156,103,110,110,238,192,255,178, 21, 90,189,122,181,223,232,209,163,227, 56, + 28, 14,219,185,115,231,193,177,177,177,189, 60, 61, 61,207,252,253,247,223, 63, 3,168,105, 47,159,139,139,203, 77, 14,135,227, +163, 82,169,120,187,119,239, 54,230,230,230,242, 92, 93, 93, 83,205,109,135,249, 90, 27,141, 70,155, 86, 46,187,184,184,220,204, +200,200,224,173, 92,185,210,152,153,153,201,115,119,119, 79, 53,243,100,103,103,243,118,239,222,109, 84,169, 84, 60, 7, 7,135, +155, 57, 57, 57,101,242,101,100,100, 12, 26, 58,116,232,133, 51,103,206,184, 80, 20,133,216,216, 88,100,102,102,194,209,209, 17, + 91,183,110,133,159,159, 31,246,236,217,163, 84, 42,149,163,126,250,233,167, 25,133, 34,171, 44, 31,173,214, 77,154, 52,241,203, +206,206,134,163,163, 35,212,106, 53,110,222,188,137, 58,117,234, 32, 41, 41, 9, 36, 73,194,209,209, 17,191,253,246, 91, 62, 65, + 16,202,210,136, 68, 34, 81,175,240,240,112, 71, 0, 8, 15, 15,119, 12, 15, 15, 47,182,131,107,214,172, 25, 86,173, 90, 85, 84, +104,217, 51, 48,176, 88,157,172,196,145,182,105,211,166, 56,119,238,220, 84, 59,197,145,222, 44,218,138, 90,179, 4, 2,129,221, +139,105, 24,134,225,161,192,165,129,176,101,255, 29, 64, 27,145, 72,196, 43,250,102,126,126, 62,207,211,211,179,149, 29,194,215, + 89, 36, 42, 48, 56,249,249,249, 33, 39, 39,135,214,235,245, 3,182,109,219,102, 4,128,176,176,176, 1, 52, 77,107, 77, 38, 19, +197,231,243,161, 86,171,225,230,230,230, 92,138,109,244,155,131, 59,231,121, 20,245,209,242,244,244, 68, 88, 88, 24,116, 58, 29, +146,147,147, 17, 17, 17, 97,164,105,122,251,234,213,171, 25, 87, 87,215, 17, 31,127,252, 49, 21, 25, 25,249, 57,128, 73, 37,105, +145,247,204,154,181,174, 68,161, 85,168, 32,207, 1,104, 91,244, 36,139,138,159,210,132, 86, 89, 83,135,124, 62, 63, 59, 46, 46, + 78, 98,221,169,152, 76, 38,120,121,121, 49, 44,203, 18,197, 9,173, 55, 49, 5,115,185, 92,217,244,233,211,179, 87,175, 94, 61, +232,229,203,151,179,108,249,206,238,207,131,176,165,136,200, 90,179,104,206,170,149,139,230, 57, 61, 59,190, 9,235, 87, 44,161, +105, 26,145,245,234,213,107,149,151,151,199,113,144, 24,145,145,141, 99,133, 34,203, 86, 81, 72, 2,216,120,253,250,245,200, 46, + 93,186, 92,218,248,231, 62,167,164,231,207,175, 8, 84, 25,201,242, 26,129, 28,158,183, 95,239, 92,173,150, 55, 96,192, 0, 87, + 0, 31,151,213,136,101,103,103, 35, 37, 37,165,168, 0,195,163, 71,143, 94, 59,214,166,194,145, 36,104,154,198,222,189,123, 33, + 22,139, 33,145, 72, 94,217,204, 34,171,156, 11, 21, 30, 3, 64,231,206,157,161, 84, 42, 33,149, 74,109, 46, 87, 81,241,194,178, + 44,244,122, 61,244,122, 61, 12, 6, 3, 13,128,203,225,112, 48, 50, 33,193, 98,229,177, 71,192, 20, 69,189,122,245,216,203,151, + 47,227,210,165, 75, 80,171,213, 88,185,114, 37, 60, 61, 61,219, 3,152,105, 47,151,149,147, 62,173, 82,169,184, 42,149,202, 98, + 29,228,114,185, 22,235,129,141,150, 60, 30,135,195,177,140, 70,205,155,181, 85,139,162, 40,184,187,187,195,195,195, 3,107,214, +172,225, 85,171, 86,173,219,127,217, 2, 45, 94,188,184,198,178,101,203, 54,108,217,178,229,216,160, 65,131,118, 69, 69, 69, 13, +119,112,112,184,119,246,236,217,121, 2,129,128, 41,231,243,237,147,148,148,228,102,253, 22,195, 48, 98,147,201,100, 17,182,249, +249,249, 54, 15, 48,184, 92,174,207,131, 7, 15,196, 0, 48,111,222, 60, 46, 0,177,217, 25,220,204,153,159,159,207,173, 83,167, +142,143,173,117,253,194,133, 11,173, 58,118,236,120,249,212,169, 83, 10, 63, 63, 63, 36, 38, 38, 34, 49, 49, 17, 53,106,212,192, +130, 5, 11,212, 42,149,170, 5,128,199,121,121,121, 7,108,228,244, 82, 40, 20,220,184,184, 56,152, 76, 38,132,134,134,226,183, +223,126,195,128, 1, 3, 80,183,110, 93,168, 84, 42, 60,120,240, 0,155, 55,111, 86,240,120,188, 82,219, 14,141, 70,115, 96,221, +186,117,190, 69, 45, 90,131, 7, 15,150,164,166,166, 90,234,228,156, 57,115, 94,153, 66,180,167, 77, 46,156,218, 42,113, 43, 15, + 76, 38,147, 92, 40, 20,170, 4, 2, 1,223,236,159, 21, 17, 17, 97,183, 53,171,200, 0,208,158,253,255, 12,102,209, 90, 76,223, + 10, 15, 15, 15,155,121, 4, 2, 1, 97,110, 27, 77, 38, 19,114,114,114,104, 79, 79, 79,203,244,254,173, 91,183,232,170, 85,171, +210, 20, 69, 81,124, 62, 31, 4, 65, 64, 44, 22,151,216,224,179, 52, 59,167,251,128,153,175,172, 58,156, 56, 29, 48, 24, 12,184, +117,235, 22, 12, 6, 3, 34, 34, 34,140, 63,253,244, 83, 82,118,118,246, 68, 0,156, 19, 39, 78, 12,157, 58,117, 42,229,230,230, +214, 49, 45, 45, 13,101,105,145,247, 72,108,189,102,229, 50,247, 66,231,186,117,235, 70, 20, 46,173, 36,204,194,201, 30,161, 85, +248,240,149,217,243, 18, 4,129,228,228,100,203,190,155,155,155,221,191,101, 43,156,157,157,213,205,154, 53,147,101,100,100, 28, + 88,188,120,113,185, 44, 89,107, 22,205, 89,181,112,238, 15, 78,202,135, 87,145,144,148, 12,101,154, 49,242,226,189,151,251, 1, +236, 7, 0,172,173,125,142, 24, 27,253,171,173,156, 65, 46,162, 16, 46,143,179,255,131, 46,221,124,251,135, 79, 34, 63,251,236, +179,150, 67,135, 14,205, 25, 52,104,208, 4,169, 84, 90,211, 96, 48,100,237, 59,114, 36,166,127,255,254,213,104,154, 30,138, 50, + 98,142,104, 52,154,216,182,109,219, 90, 95, 79,249,233,211,167,221, 99, 98, 98, 48,126,252,248,244,196,196,196,108,235, 99,109, + 41,163,193, 96,136, 13, 9, 9, 41,113,186,208, 60,165, 8, 0,185,185,185,177,118, 92,210,129, 40,116,124,207,204,204,196,163, + 71,143,192,225,112,208,180,105, 83, 92,188,120, 17, 45, 91,182,188,101,143, 85, 75,171,213,194,207,207, 15, 90,173, 22,106,181, + 58, 31,128, 96,107,181,106, 0,128,207, 51, 51,113,243,167,159,112,117,225, 66, 88,215,103, 91, 81,191,126,125,246,234,213,171, +184,119,239, 30,116, 58, 29, 70,141, 26, 5, 0, 68, 97,221,181, 39,100, 70, 0, 69, 81,157,187,116,233,226, 5, 0,106,181,154, +184,126,253, 58,132, 66,161,229, 89, 56,116,232, 16, 18, 19, 19, 65, 16, 4, 20, 10,133, 79, 86, 86, 86, 53, 0, 47, 75, 49,251, + 19, 47, 95,190,196,143, 63,254, 8,134, 97, 48,117,234, 84, 4, 6, 6, 90, 4, 86,108,108, 44,230,205,155, 7,154,166,241,195, + 15, 63,160, 70,141, 26, 48, 26,141, 66, 20, 31, 86,227, 95,193,228,201,147,159,237,223,191,255, 88,124,124,252, 71,139, 22, 45, +106, 67, 16, 4, 51,101,202,148, 31,229,114, 57,253, 38,188, 89, 57,185,120,244, 52,214, 34,132,138,110,174, 46, 78,118,243, 61, +121, 30,111,249, 62, 77, 91,243,209,112,118, 82,216, 91,196,124,163,209,168,238,221,187,183,227,222,189,123,137, 26, 53,106,224, +197,139, 23,102,203, 80, 62,236, 15,233,144,168, 84, 42, 3, 41,138,226, 61,125,250, 20, 85,171, 86, 69,147, 38, 77, 48,127,254, +124,100,100,100,192,100, 50,193,205,205,141, 49, 26,141,183, 12, 6,195,249, 50,184,230,140, 25, 51,134, 7, 96,108,161,101,171, +222,196,137, 19,153, 37, 75,150,224,214,173, 91, 22, 11,150,181, 51,188,189, 83,135,214, 86, 39,235, 45, 34, 34, 98, 42,159,207, +103, 1, 92,131,253,129,158,245, 69, 45, 90,229,177,102,189, 45,188,205,149,140,158,158,158, 17, 50,153,172, 91, 86, 86,214, 43, + 86,173, 22, 45, 90, 24,220,221,221, 47,216,202, 35,149, 74,179, 40,138,114, 6,128,196,196, 68, 72, 36, 18,222,243,231,207, 23, +162, 32,120, 54,170, 85,171,182, 80,169, 84,242,170, 21,182,167, 30, 30, 30,208,235,245, 37,186,177, 92,185,157,186, 9,192, 38, +243,190,147,147, 83,114, 78, 78,142,104,201,146, 37,121, 11, 23, 46,212,208, 52,173, 3,112, 54, 59, 59,219, 18, 71, 43, 37, 37, + 37,135,203,229, 58, 57, 58, 58,122,155,133, 86,113, 90,228, 61, 67,201, 22,173, 66, 37,201, 22, 21, 68, 4, 65,188,230,160, 94, +134,208, 42, 83,100,209, 52,253,138,149,193,236,240, 94,220,111, 21,118,234,229,154, 58, 44, 20, 89,194,125,251,246,109, 93,188, +120,241, 53, 91,191,103,237,163,181,246,231,185,139,204, 34,235,238,165, 83, 56, 16,157,147, 49,117,225,210,101,229,189, 3,181, + 93,196,245,221,221,157,207,253,180, 96,142,252,217,241,205,216,181,246, 23,246,238,141, 27,141,111,220,184, 49,100,252,248,241, + 85, 10, 43,150, 18,192, 29, 0,253, 97,195, 42,157,196,196,196, 78, 69, 58,225,199, 60, 30,207, 93, 44, 22, 35, 49, 49, 49,239, +201,147, 39,118, 79,201,100,100,100,116,122, 11, 21,144, 99, 22, 89, 25, 25, 25,120,240,224, 1,218,181,107, 7, 0,184,120,241, + 34, 90,180,104,129,200,200, 72, 52,104,208,224, 22,128, 70, 40, 35, 80,171,209,104,204,174, 93,187,182,197,186,149,147,147,195, + 0, 64,120,114, 50,214,121,122,130,195,225,224,234,194,133,248,206,104,196,124, 59, 5,124, 72, 72, 8,123,253,250,117,196,196, +196,192,100, 50,161,103,207,158, 40,231, 67, 95, 55, 40, 40,232,244,217,179,103, 93,165, 82, 41,212,106, 53,242,242,242, 48,108, +216, 48, 12, 24, 48, 0, 58,157, 14,187,119,239,198,193,131, 7, 33,147,201,160, 86,171,161, 86,171, 21, 93,187,118,189,252,248, +241,227,214, 0,158,150, 32,180,216, 78,157, 58,225,194,133, 11,160, 40, 10,141, 27, 55, 70,102,230, 63,139,129,220,221,221,139, +251,140,250, 47,133, 22,135,195, 97, 35, 34, 34, 22,181,105,211, 6,241,241,241, 31, 53,104,208, 96,229,240,225,195, 19,223,148, + 87,225, 32, 67, 72,157, 0,232,116, 58,232,116, 58,120,121,121, 33, 55, 55, 23,207,158, 61,131, 78,167,131,187,155,163,221,124, + 97,117,107, 88,248,220,220,220,160, 86,171,241,242,229, 75,232,245,122,184,184,216, 37,180,124, 59,117,234,244,247,246,237,219, +157, 55,111,222,172,111,219,182, 45,127,229,202,149,132, 92, 46,135, 85,199, 98, 47, 34, 46, 94,188,232,215,177, 99,199, 90, 15, + 31, 62, 68, 68, 68, 4,244,122, 61,194,194,194,240,228,201, 19, 52,107,214, 12,121,121,121,215,110,220,184,113,208, 22,195, 48, +128, 25, 99,198,140,129, 89,108, 93,184,112, 1,201,201,201,144,201,100,175, 9, 45,179,239, 99,225,170,113, 47, 91, 10,107, 22, + 68, 86,150,167,239, 28, 29, 29, 13, 0,150,149,211,250, 4, 0,136,143,143, 23,212,171, 87, 79, 39, 20, 10,249,133,162,109,233, +155,240, 85, 36, 42, 96, 37, 99,137,240,240,240,152,232,226,226,210,209,223,223, 31,169,169,169, 60, 62,159,143, 22, 45, 90, 24, + 26, 53,106,100,240,240,240,248,220, 86, 30,129, 64,240,144,199,227,181, 46, 24, 76,208,136,139,139, 3,203,178, 83,235,214,173, +251,101,110,110, 46, 50, 51, 51,249,114,185,220, 50,168,174, 85,171, 22,116, 58,221, 67, 59, 44,111,115,170, 86,173, 58,131,199, +227,205,207,200,200, 40, 46, 44, 4,223,209,209, 81,206,227,241, 96, 48, 24, 94, 17,155, 69,181,200,251, 46,178, 94, 17, 90, 86, + 42,242, 21,161, 99,143, 69,203, 22,171,129,217,193,222,122,223, 44,234,138,254, 86,121, 99,104, 57, 56, 56,232,204, 34,107,254, +252,249,215,202,195,177,103,251, 54, 79, 7, 38,223, 55,233,218, 81, 60,190, 23,137,253, 15,178, 51,166, 46, 92, 58,161,251,199, + 3, 83,139, 10, 51, 91, 16,232, 42,174,235,238,230,124,238,231,197, 11,229,202,135, 87,145,156,146,130,163,215,110, 68, 26,128, + 7, 0,166, 86,164,105, 25, 40,152, 58,164, 40,234,157,168,176,133,247,216,226, 12,159,156,156,108, 22, 89, 97, 0,208,178,101, +203, 91,133, 34,203,252, 94,153,177,180,178,179,179,139,166,172,233, 8,192,197,124,254, 28, 14, 7, 45,102,204,176, 91,100, 1, + 96, 35, 35, 35,161, 84, 42,205, 35,197,242,138, 44,120,120,120,124,125,246,236, 89,215,141, 27, 55,170,182,108,217,146,201, 48, + 12, 55, 36, 36,196,167, 97,195,134,196,214,173, 91, 1, 0,253,251,247,199,212,169, 83,113,255,254,125, 72, 36, 18,180,108,217, +146,158, 53,107,150,219,196,137, 19, 63, 79, 77, 77,157, 80,108,239,200, 48, 60,161, 80,120, 6, 64,251,135, 15, 31, 2,192,101, + 20,164,112, 50, 91, 17, 74,252,204,150,206, 55, 55, 55,151, 43,147,201,138, 13, 13,193, 43, 24, 13,217,107,129,176,112, 94,186, +116,233,199,159,127,254,121,255, 87, 95,125,245,244, 13, 57,139,181,104,117,235,214, 13, 26,157, 1, 9,169, 57,160,105, 19, 52, +134, 52,187,249,172, 45, 90,221,186,117, 67,190, 86,143,184,100, 37, 76, 38, 26,185, 26,155,251,114,241, 7, 31,124,112, 98,231, +206,157, 30, 87,174, 92, 1, 77,211,204,147, 39, 79, 94,246,238,221, 91, 62,101,202, 20,231, 55, 88,100,180, 98,224,192,129,125, + 47, 93,186,164,172, 85,171,150,211,181,107,215,144,150,150, 6,147,201,132,246,237,219,131,207,231,199, 45, 92,184,144, 7, 96, +133,173,247,166, 80,108, 25,110,220,184, 49,250,234,213,171, 78, 78, 78, 78,124, 38, 40, 8,201,167, 78, 97,239,222,189,175,125, + 97,237,218,181,128,141, 81,248,205, 22,167,235,215,175, 87,136,192,122,165,167,230,243,203, 61,253,248,190,226,250,245,235,137, +159,125,246, 89, 29,185, 92,190,172, 85,171, 86,237,156,157,157, 73,133, 66, 17,225,237,237,253,101, 72, 72,136,205,179, 11, 92, + 46,119,184, 68, 34,121,102, 50,153,168,188,188, 60,168,213,106, 0,128,201,100,226,147, 36,137,106,213,170, 89,250,146,198,141, + 27,195,195,195,131,142,142,142, 30,110, 43,127,122,122,250, 43,171, 16,139,193,152, 22, 45, 90,112,116, 58, 29, 98, 98, 98, 46, + 90,127, 80,156, 22,121, 79, 16, 94,170,248, 50,159,148,245,201,121,123,123,199, 27,141, 70,246, 1,192,222,185,115,135, 13, 15, + 15, 47,117,211,106,181,172,155,155, 91,114, 49,157, 31,172, 57,117, 58,221, 43,223,211,233,116,172,187,187, 59,173,209,104, 94, +227,212,104, 52,172,143,143, 79, 98,105,156,197, 96,216,237,219,183, 87,127,247,221,119, 77,236,184, 64, 22, 78,118, 77, 16,187, +121,243,230, 79, 88,150,109,211,170,142,223,189,126, 33,238,108,139, 64,183,164,131,123,182, 15, 96, 89,182, 77,209,205, 28,224, +180, 52,206, 32,119, 73,237, 14,193, 85,178,238, 30,223,193,158, 93,242, 5,251,115,207, 64,182,129,143, 44, 59,200, 69,100,111, +142,152, 50,179,165, 7, 7, 7, 63,102, 24,134,213,235,245,108,112,112,240,147,138,224, 44, 7, 74,227, 12, 69,129, 47,219,192, + 98,222, 11,125,131,114,222,101, 89,150, 85, 42,149,108, 94, 94, 30,171,211,233, 88,154,166, 89,107, 0,184,107, 3, 39,107, 48, + 24,216,172,172, 44, 22,182,251,220, 21,203,233,233,233,249,242,249,243,231,108,245,234,213,227, 11,205,241, 19,213,106, 53, 91, + 20,106,181,154,109,215,174, 29,251,228,201, 19,182,106,213,170,218, 39, 79,158,176,158,158,158,143,202, 40,167,191,175,175,239, + 25, 23, 23,151, 8, 0,129,118,124, 86,234,245,220,189,123,119, 0,203,178,163, 88,150, 13, 47, 97, 27,197,178,108,208,127,205, + 89,120,125, 83, 89,150,101,243,243,243, 89,165, 82,201, 38, 37, 37,177,249,249,249,108, 94, 94, 30,123,251,246,109,246,202,149, + 43,236,189,123,247, 88, 39, 39,167, 84, 91, 56,205,124,122,189,158, 85,169, 84,108, 90, 90, 26,171,209,104, 88,181, 90,205, 70, + 69, 69,177, 55,111,222,100, 31, 62,124, 88, 28,223,107,156,206,206,206,107, 83, 82, 82,242, 46, 95,190,156,191,102,205,154,124, + 15, 15,143,135, 0,252, 0,212, 84, 40, 20, 41, 95,124,241, 5, 43,149, 74, 99,203,249, 28,213,225,114,185,183, 23, 45, 90,116, +253,240,225,195,169, 7, 15, 30,212,111,216,176, 33, 97,252,248,241,231, 57, 28,206,109, 0,117,202,249, 28,185, 57, 58, 58, 94, +190,118,237,154, 41, 43, 43,139,205,206,206,102, 85, 42, 21,171, 86,171, 89,141, 70,195,234,245,122,214,104, 52,178,231,207,159, +103,221,221,221,173,167, 37,191, 41,101,144, 53,137,101,217,175, 89,150,229, 84,116, 91,103,197,221,170,162, 56, 43,162,173, 35, + 73,210, 80,216,118, 52, 45,216, 45,125,255,191, 42,103,135, 14, 29,126, 24, 48, 96, 0,219,185,115,103, 54, 44, 44,236,181,173, + 65,131, 6,236,184,113,227,216,195,135, 15,179, 63,253,244,211, 15, 21, 80, 78, 14, 10, 22,189, 44,232,208,161,131,241,194,133, + 11,108,255,254,253, 89, 0,157, 74,211, 34,239,179,224, 50, 47,166, 49,135,119, 32,172, 95, 1,192, 96, 48,196, 63,126,252,216, +179,150,201, 68, 1,192,175,191,254,250,154,149,194, 26, 23, 46, 92, 48, 17, 4,241,172,180, 95, 55, 24, 12,241,103,207,158,117, + 95,181,106, 21,215,202, 4, 12,147,201,196, 36, 37, 37,145, 43, 87,174,124,229,248,115,231,206,153, 76, 38, 83,156,157, 39,185, + 57, 52, 52,116,115, 69, 92,173,243,247, 99,190, 60,113,244, 47,151,166, 77, 90,101,203,157,156,138, 29,133,237,254, 60, 8,196, +216,210,173, 90, 4,135,156,191,104,193, 28, 71,243, 20,228,159,183, 82,178,181, 58,186, 93,116,134,230,110, 69,223,225,188,188, +188, 24,243, 74, 64,181, 90, 29,247, 14, 86,194,219, 40,136,113,101, 42,242, 94, 35,188,161,211, 41,195, 48,112,112,112,176, 88, + 67,203, 97, 17,101,139, 88,210,222,200, 71,128,101,217, 75, 81, 81, 81, 85,135, 13, 27, 38,219,178,101,203,115,154,166,185, 35, + 71,142, 52,120,120,120,240, 46, 94,188,104, 4, 64,180,105,211,134,147,146,146,194, 38, 38, 38, 42,123,244,232,145, 59,122,244, +104,231, 59,119,238,240, 25,134, 41, 43,104,225,139,248,248,248, 14,229,248,172, 84,244,235,215,239, 57,222, 60,141,205, 91,231, + 52, 67,153,173,194,243,152,196,194, 8,230, 12,232,216, 84,139, 95,149,209,104,130, 82,149,105,183, 69,235,217,203,196,194, 20, + 99, 52,104, 58,169,144,175,192, 33,158,205,202, 47,187, 55,225,112, 90,206,154, 53,171, 11, 73,146,228,213,171, 87,117,139, 23, + 47,142, 79, 79, 79,239, 9, 32, 14, 0,178,178,178,218,110,222,188,249, 15, 27, 66, 57,148,132, 7, 70,163,177,217, 55,223,124, + 51, 1, 64, 75, 0, 85, 10,185, 47, 22, 90,178,202, 27,193, 60, 45, 59, 59,251,195, 46, 93,186,156,162, 40,170,154,213,115,228, + 2, 32,195,252, 92,176, 44,235,150,154,154,250,145, 45,132, 4, 65, 44,125, 91, 13,201,219,228,126,195,118,232,189, 88,201,120, +230,204,153,217, 61,123,246,228,248,249,249,125,235,231,231, 71,102,101,101, 33, 47, 47, 15, 36, 73,194,195,195, 3,193,193,193, +240,240,240, 96, 30, 62,124,184, 96,218,180,105,101,198,228,171, 93,187,118,128,209,104,172, 78,146,100, 0,128, 0,150,101, 3, + 8,130, 8, 0,224, 4, 0,114,185, 92, 94,181,106, 85, 78,211,166, 77,209,164, 73, 19,156, 59,119, 14,123,246,236,217, 4,224, +132,181, 53,171,168, 22,121, 23,240, 32, 20,108,157,219, 32,238, 55, 64, 27,130,193, 57,150, 68,219,224, 72, 75,156,189,162, 34, +171,228,164,210,197,152,254, 58,181,111,223,222,242,192,217,208,169,196,148,245,240,165,167,167,119, 26, 62,124,248, 43,156, 52, + 77,235, 50, 51, 51, 63,107,222,188,249,111, 20, 69, 9,138, 84,216,216,180,180,180,127, 53, 87, 95,209, 56, 90,157,186,244,202, +120, 83, 78, 41,143,172,254,248,200,239, 72, 77,203,192,159,183, 82,178,114,245,116,219, 39, 25,249, 81,111,163,252,177,177,177, +157,223,101,169,111, 53,141, 88, 20, 55,237, 73,189, 83, 92,245,178, 33, 32,105, 89, 57,234,136,194,112, 34, 21,242,144,167,164, +164, 44,153, 49, 99,198,135, 11, 22, 44,112, 61,118,236,152,220,124,254,125,250,244, 73,139,138,138,106, 5, 64,160,213,106, 79, + 47, 88,176,192,117,206,156, 57,206, 0,156, 1,160,107,215,174,169,169,169,169,171, 80,137, 82, 97, 52, 26, 19,130,107,215,122, +101,228,104, 30, 0, 90,255,111, 50,153, 18,236,225, 43,142,199,122,159,166,233, 82,249, 40,138,250,170, 73,147, 38,212, 87, 95, +125,149,122,236,216, 49,115, 34, 93,107,133,246,184,140,160,164,182, 64, 7, 96,113,225, 86,145, 80, 43,149,202,102,118,126,135, +174,172,141,197, 14, 40,237,217,255, 79,112,224,192,129,153,253,251,247,223,236,228,228,180, 45, 32, 32,160,150,187,187,187, 92, + 36, 18, 65,167,211,229,234,245,250, 71,143, 31, 63, 30, 52,115,230,204, 23, 54, 89, 56, 54,111,166, 0,240, 24,134, 17,146, 36, + 41, 1, 32, 39, 8, 66, 97, 22, 90, 4, 65,192, 96, 48, 32, 38, 38, 6,223,125,247, 29,125,230,204,153,159, 0,252, 96, 71,223, +209, 8,128,171, 85, 59,238, 10, 64,143,130, 0,182,233, 4, 65,220,120,219,215,139, 96,112,174,206,109, 16, 15, 66, 81, 92, 63, + 81,122, 82,233,146, 30,184,244,244,244,102, 21,253, 16,151,196,153,158,158,238,247,174, 60, 33, 67,117,139,119, 96,237,226, 87, +242, 28,154, 69, 88,113,251,101, 33, 71, 99, 26,191,226,196,253, 37, 58, 19,203, 24, 76,204,136, 39,233,249, 15,254,191,182, 62, +165, 9,169, 55,204,107,249, 65, 69, 21,177, 2, 79, 55, 42, 58, 58,186,249,248,241,227,103,138,197,226,198, 0,144,159,159,127, + 53, 41, 41,105, 46, 10, 87, 21,150,245,121, 37, 74, 70, 70, 70, 70,195,119,145, 79,175,215,127,217,188,121,243,229, 52, 77,255, +108, 50,153, 46,254, 63,184, 21,218,202,218,248,254, 98,215,174, 93, 47, 0, 52, 3,128,190,125,251, 82, 0,176,103,207, 30,187, +197,243,176, 97,195,104,150,101, 13,133,245, 65,141,130,213,133, 89,230, 54, 85,173, 86,103, 37, 37, 37, 61,164,105,250, 33,128, + 63, 96,255,138, 91, 87,130, 32, 14,179, 44,219,173,176,191, 56,204,178,108, 55,235,247,222,182, 85,171,140, 67,202,118,134,175, + 68, 1,246, 60, 0, 81,116, 42,176,172,253,178,240, 56, 85, 29, 1,160, 65,229,213,253,127,137,231, 73, 73, 73, 67,223,224,243, + 74,188,127,136,211,235,245, 61,255, 31,157,111, 78,229, 45,255, 31,233,255,202, 33,176,204,120,248,240,225, 91,115, 17,248,175, + 81,231,246,171, 3,240,162,251, 86, 8, 47, 78,120, 85, 10,173, 74, 84,162, 18,149,168,196,155, 32,187,242, 18, 84,226,127, 25, +102,223, 44,243,126, 9, 62, 90, 69,253,179, 44,251, 4, 74, 94, 57, 96, 79, 86,242,242,172,146, 56, 93,201, 89,201, 89,201, 89, +201, 89,201,249,159,115, 58, 2,168, 10, 96, 81, 25,199, 21, 93, 93,152, 10, 32, 3,128,177,242,122, 86,114,190,129,126,176, 9, + 44,203,118, 45,109,234,144, 32,136, 35,111, 75,104, 89,156,225, 67, 49, 43,248, 54,102,153,247,203, 18, 90, 44,203,174,251, 55, +132, 96,199, 74,206, 74,206, 74,206, 74,206, 74,206, 74,206, 74,206, 74,206, 55, 20, 90,237,166, 77,155, 54, 29, 5,161, 49,216, +105,211,166, 77,103, 89,182,107,193, 71,108,215,183,249,219,247, 27,160,205,131, 80,176,230,237,126, 3,180, 41,225,208,112,171, +237,213,240, 14,149,168, 68, 37, 42, 81,137, 74, 84,162, 18,239, 48, 46, 47, 92,184, 48,127,225,194,133,102,199,247,116, 0, 68, +161,133, 43,253,109,254,112,225, 52,161, 45, 11,165, 74, 79,193,243, 31,192,139,228,240, 6,115,121,130,118, 96,153, 96, 0, 0, + 73,221,167,245,218,191, 77, 38,195, 54, 0, 73,229, 37, 14, 2,106,215,112, 20, 29,212,209, 52, 47, 62, 87,223, 55,186, 32,205, +129,221,232, 11,180, 16,240,249, 39, 5,142,142,162,226, 62,215,101,103,107,116,122,253,135,123,128, 75,149,207, 64, 37, 42, 81, +137, 74, 84,226, 61,129, 68,161, 80,156, 33, 73,210,207,252,134,245,170,239,162, 43,192,105,154, 78, 86, 42,149, 31,162, 96,170, +248,223,228,180,254,190, 30,229,236,203, 43, 26,182, 78, 29,194, 58,188,131, 85, 20,214, 50, 51,102,215,242,144,180,170, 21,224, +183, 61, 41, 37,245,150, 74,171, 31,249, 56, 41, 79,105,111, 33, 41,174, 96,180,204,193,113,254, 39,195,191,116, 14,172, 89,139, +240,245,245, 6, 88, 32, 46, 62,193,253,217,211, 39, 29,118,109, 89, 49, 89,149,163,252,206,168,211,253,110, 47,119,109, 64, 82, + 69, 42,184,248,251,180, 79, 29, 57, 48, 97,224,188,237,199,137, 60,131,239,195,130,229,166,118,137, 44, 71,103,231, 19, 11, 79, +159, 22, 41,234,215,127,229, 51,150,101, 11,242,235,221,189, 43,250,246,195, 15, 79,244, 85, 42, 59, 85,138,173,255, 73,120,200, +229,242,137, 92, 46,183,173,193, 96,240,227,243,249,241, 52, 77, 71,100,101,101, 45, 3,144, 88,121,121, 42, 81,137, 50, 81, 90, +126,205,255, 44,247, 38, 0, 72,165,210,155, 36, 73,250, 88,139, 0,115,206, 94,243,126,209, 87,134, 97, 94, 40,149,202,230,165, +208, 6, 56, 57, 57,253, 6,160, 81, 89,225,106, 10, 99,179,221, 80, 42,149,159,161,228,213,122, 50,133, 66, 49,155, 32,136,126, + 36, 73, 82,101,157, 19,195, 48, 52,203,178,187,179,178,178,126, 0,144, 91,210,113, 10,133,226,116,116,116,116, 35, 55, 55,183, + 50,173, 52, 38,147, 9,113,113,113,174,141, 27, 55, 62,175, 84, 42,131,222, 38,167, 61, 90,228,191, 68, 41,171, 14, 75,172,232, + 0, 94,201, 47, 68,148,126, 35, 49,120,227,252,207,188,147, 99,159,122,143, 89,176,163, 38,225, 76,183,125,148,169, 73,177,245, + 7,121, 66,233,193,102,173, 59,181, 27, 55,225, 43,201,237,168, 71, 56,121,238, 10, 84,106, 29, 40,146,132,163, 76,140,154, 53, +171, 19, 75,215,237,117,217,180,102,233,207, 87, 47,156,234,170, 85,231,244,176, 75,166,139, 57,223, 77,237,221, 88,226,236, 68, + 3, 12,141,175,187,132, 72,190, 61,124,235, 59,228,155,166,219, 45,178,206,156, 17,167,165,166, 98,142,151, 23, 56, 38, 19,132, + 36, 9, 33, 65, 64, 72,146,144, 8,133,232,188, 97, 3,230, 30, 59, 38,158,249,209, 71,149, 98,235,127, 12, 82,169,116,184,151, +151,215,226,245,235,215, 59,251,251,251, 67, 34,145, 64,169, 84,186, 60,126,252, 56,116,210,164, 73, 67,147,147,147,103,168, 84, +170,181,149, 87,170, 18,149, 40, 17,161, 0,110,161, 48,127,169, 29,159,149, 8,161, 80,152,170,213,106,221, 74, 59,134,207,231, +167,233,245,122,247,178,184, 72,146,244, 73, 76, 76,116, 19,139,197,160,105,186, 48, 27, 0, 99, 25, 72, 91,103, 63, 41, 12, 84, +139,160,160, 32, 67,105,156, 50,153,236,215,180,180,180,142,230, 60,129, 86,130,170, 88, 36, 38, 38,118,172, 83,167,206,175,185, +185,185, 31,150, 32, 94,102, 79,152, 48, 97, 98,221,186,117,205, 86,160,194, 44, 8, 5,175, 25, 25, 25, 24, 63,126,188,229, 55, + 24,134,193,169, 83,167, 38, 12, 31, 62, 28, 89, 89, 89,147, 74, 57,119, 63, 55, 55, 55,162, 48,161,120,137,152, 53,107, 22,102, +205,154,133, 21, 43, 86, 16, 92, 46,215,177,140,235, 89, 33,156,182,106,145,255,194,130, 85, 70,100,248, 35,120, 53,188,195,145, +215,132,150,173, 32, 89,230,232,188,101,235, 71,206, 25,214,146,216, 56,169, 99,224,216, 21,167,175,144, 60,182,245,195,100,109, +188, 13,150,172, 17,141,154,119,108, 59,126,226, 84,201,142,191,206,226,241,195,187,136,190,184,243,149, 99, 26,126, 56, 28, 41, + 25,185, 24, 62,238,107, 41, 65,113,218, 94, 56,125, 96,132, 81,167,217,104,163, 53,203,221, 79,192,255,162,105,227, 96,110,162, +232, 49, 60, 20, 34,180,108, 80,131,235,123,226,222, 23,106,152,150, 63, 44, 88, 37, 99,151,200, 90,255,233,167,104,101, 52,194, +141,162, 64, 17, 4, 40, 0, 36, 65, 64,171,211,225,198,224,193,104,188,117, 43,126, 56,116, 72, 60,187,123,119,187,196,150, 68, + 34,185, 77, 16,132, 34, 47, 47,175, 43, 10, 18, 75,191, 15,168, 35,149, 74,143,176, 44,155,165, 86,171, 67,223,161,114,121,162, + 96,142,190,232,232,152,135,130, 21, 85,118,101, 22, 22, 8, 4,163,251,246,237,187,116,213,170, 85,226,212,212, 84, 36, 37, 37, +129,166,105, 8,133, 66, 4, 6, 6, 18,167, 79,159,118,158, 58,117,234,146, 35, 71,142, 8,114,115,115,151,219, 51,176,225,114, +185,235,156,156,156, 62,114,119,119,151,164,165,165,229,103,103,103,159,210,233,116,163, 81,254,180, 41, 36,151,203, 29, 84,181, +106,213, 94, 94, 94, 94,238,137,137,137, 25, 9, 9, 9, 7,117, 58,221, 38,148, 51, 81,179,213, 53,173,143,194,104,245, 0,146, +171, 86,173,122, 63, 38, 38, 38,173, 2, 57,147,170, 86,173,250,160, 28,156, 18, 0,187, 0,120,149,113, 92, 18,128,254,176,211, +154, 93,137,138, 19, 89,133,217, 30,138, 10,170,210, 62, 43, 21, 58,157,206,213, 96, 48,128, 91, 66,178,120,181, 90, 13,153, 76, +230,106,107, 33, 69, 34, 17,118,238,220, 9, 46,151, 11, 46,151,139,172,172, 44,248,248,248, 88,246,121, 60,158,229,255, 42, 85, +170,148,201, 71,211,116, 99,138,162,144,151,151, 7,154,166, 45, 91,118,118, 54, 88,150,133, 64, 32, 0, 77, 23,164,115,178,250, +188,113, 73,124, 4, 65,244,243,242,242,194,142, 29, 59,160,215,235, 95,251, 92, 46,151, 35, 42,234,159, 36, 35, 20, 69,161, 73, +147, 38, 36, 65, 16,253, 0, 76, 42,133,151, 5,128,240,240,112, 80, 20, 5,138,162, 64,146,164,229,127,243, 70,211, 52,102,205, +154, 5, 91,178,118,188, 13,206,119, 13,101, 68,134, 79, 70, 9, 62, 90,100,105,164,181,220, 37,159, 77, 26,216, 49,255,187, 17, + 93,216,233, 67, 62, 96,167, 14,108,195,126,212,186,222, 95, 20,135, 67, 92,123, 16, 7, 31, 7, 96,211,248, 70,126,190, 46,146, +168, 96, 39,105,205, 98, 40,172,151,120,122,137, 37,242, 31, 63,251,242,107,233,145,243,247, 16, 23, 31,247,154,200, 2,128,155, + 39, 55, 33, 57, 41, 17,183,162, 19, 48,104,196,231, 82,185,220,241,199, 34, 13,106,137,203, 70, 29,100,188,159,166,245,111, 41, +204, 51, 38, 33, 87, 1, 80, 1,124,112,197,106, 76,237, 86, 95, 32,151,241, 74, 75, 85, 97,225, 20,240,249, 39, 23,158, 62,109, + 17, 89, 45,116, 58, 8,104, 26, 38,154,182,136, 44,189,201, 4,141, 94, 15,207,188, 60, 60, 27, 62, 28,172,209,136, 25,251,247, +139, 5,124,254, 73, 91,202, 9, 0, 60, 30,207,243,224,193,131, 85,234,213,171,119, 14,182, 7, 51, 61,253, 22,234,142,173,156, + 13, 66, 66, 66, 34,182,110,221, 90,133,199,227,121, 86, 4,167, 80, 40,252, 88, 34,145,164, 11,133,194,143,203, 89, 78, 18,192, +188,145, 35, 71, 70, 86,175, 94,253,108,161,176,178,136,154,234,213,171,159, 30, 57,114,228,109, 0,179, 74,168,235,197,113,122, +123,121,121,205, 95,181,106,149,248,201,147, 39, 72, 76, 76,132,209,104,196,192,129, 3, 65,211, 52, 52, 26, 13,244,122, 61, 22, + 45, 90, 36,113,118,118,254, 14, 5,137,130,109, 57,119,158,131,131,195,147, 45, 91,182,244,125,249,242,165,244,236,217,179, 68, + 84, 84,148,100,201,146, 37, 61,157,157,157, 31, 3, 16,148,227,122,146,158,158,158, 27, 15, 28, 56,240, 89, 84, 84,148,207,190, +125,251,184, 87,175, 94,245, 92,179,102,205, 40, 79, 79,207,173, 0,168,114,222,163, 80,177, 88,220, 97,202,148, 41,204,229,203, +151, 19, 47, 95,190,156,184,116,233, 82,180,106,213,170,197,156, 57,115,194,202,201,217, 64, 38,147,181,159, 50,101, 10,115,225, +194,133,164,107,215,174, 37, 44, 89,178,132,108,223,190,125,203,249,243,231,215,183,147,115,215,229,203,151,219,196,199,199,251, + 39, 36, 36, 84, 75, 72, 72,168,154,144,144, 80, 53, 49, 49,209, 47, 57, 57,185, 74, 74, 74,138,111, 90, 90,154,111, 68, 68, 68, + 75, 0,219,223,177,231,232,255, 3, 39,199, 44,164,148, 74, 37,142, 28, 57,130, 66,235, 85,168,181,200, 82,169, 84, 72, 78, 78, + 54,127,198,177,165,156,114,185,252,204,250,245,235, 89,173, 86,139,156,156, 28,164,165,165, 33, 62, 62, 30,207,158, 61, 67,102, +102, 38, 30, 61,122, 4,177, 88,124,198,150,114, 18, 4, 1,154,166, 45, 66,234,212,169, 83, 24, 57,114, 36,148, 74,165,229, 61, + 14,135, 99,249,223,252,157,178, 56,205,150, 39,154,166,113,237,218, 53,140, 25, 51, 6, 75,151, 46,197,246,237,219,113,248,240, + 97, 40,149, 74,139,216, 50,153, 76,101,114,102,100,100,128, 97,108, 27, 51,177, 44,139,156,156, 28,155,239,187,181, 0,226,112, + 56,175,137, 34,243,102, 79, 93,122, 67,206,119, 22, 54, 68,134, 47,121,132,109,254,167,208, 84,215,246, 21,161, 85,213,227,187, +197, 19,251,137, 64, 27,192, 26, 53,128, 33, 31, 48,228,129,209,231,131,224,137, 0,163, 6,174, 2, 37,118,141,171, 37,255,102, +199,243,135,244, 35,162,107,116, 70,238,241, 98,123, 4, 14,111, 80,191, 97, 19,156, 19,210, 84, 72, 76,205, 1, 69,254,211,239, +133,117, 28, 6, 14, 69,226,250,137, 2,195, 21, 73, 81,200, 81,235,144,157,103, 64,223, 97, 19,157,126, 95,250,253, 32,147, 65, + 91,106,140,151,186, 64, 96,176, 84,218,187, 78,157, 42,228, 67, 65, 52,194, 62,186, 8,154, 1,216, 11,221, 17,154,229, 70, 5, +157,228,247, 86,231, 26,230, 71, 1, 79, 74,181,102, 56, 58,138, 20,245,235, 99,142,151, 23, 90, 27,141,224,177, 44, 62, 72, 77, +197,221,137, 19,161,219,187, 23, 36, 0,222,199, 31,163,221,178,101, 56,239,229, 5, 15,141, 6,217,147, 39,195,245,248,113,240, +228,114, 17,210,109, 91,252, 64, 16, 4,218,182,109,139,211,167, 79, 59,119,238,220,249,196,189,123,247,250,152, 76,166,243,229, +185,137, 14, 14, 14, 55, 57, 28,142, 79, 89,199,153, 76,166,132,156,156, 28,187,211,140,112, 56,156,214, 77,154, 52,217,191,111, +223, 62,133,193, 96,168,144, 81, 8,159,207,239,220,179,103,207,245,171, 87,175,150,143, 26, 53,106,253,225,195,135,243,245,122, +253,113,123, 44, 57, 0,230,173, 93,187,118,108,120,120,184,227,168, 81,163,216,103,207,158, 89, 91,175, 92, 91,181,106, 85,125, +253,250,245, 30,141, 26, 53,154, 48,102,204, 24, 30,128, 25,101, 89,121,164, 82,233,184,245,235,215,187,100,100,100, 32, 47, 47, +207,210,200, 38, 36, 36, 64, 36, 18,129, 36, 73,144, 36, 9, 46,151,139, 31,127,252,209,121,220,184,113, 19,149, 74,229, 68, 27, +172,100,235,126,251,237, 55,215, 15, 63,252,144,124,249,242, 37, 72,146,132, 80, 40,196,167,159,126, 74,106, 52, 26,197,156, 57, +115, 54,171,213,234, 1,246, 92, 67, 46,151, 59,104,221,186,117, 53, 91,180,104,193,137,142,142, 70,179,102,205,112,253,250,117, +124,252,241,199,220,220,220,220,106, 83,167, 78, 29,169,211,233,236,141,227,226, 41, 22,139,235,254,253,247,223,241,190,190,190, +150,134,165, 90,181,106,116,215,174, 93,149,209,209,209,181, 46, 95,190,156,217,188,121,115,123, 18,150,123,139,197,226,160,163, + 71,143, 38,207,153, 51,167,195,218,181,107,123, 2, 64,227,198,141, 15,206,157, 59,247,172, 82,169, 12, 62,127,254,188,178,117, +235,214, 9, 54,242,121,121,122,122,210,227,199,143,151,150,118,208,134, 13, 27,178, 81,144,112,217, 31,192, 11, 84,226,223,130, + 9, 64, 24, 65, 16,183,142, 28, 57,130, 38, 77,154,224,200,145, 35,232,218,181,235, 45,107, 49, 16, 21, 21,133,214,173, 91,163, +208,162,101,147,175, 86, 78, 78,206,180, 89,179,102, 93, 24, 52,104,144,248,149,198,128, 36,225,232,232,136, 46, 93,186,104,213, +106,245, 52, 91, 11, 74,211, 52, 56, 28, 14, 18, 18, 18,176, 97,195, 6, 44, 88,176, 0,129,129,129, 48, 26,141,175,137,173,194, +118,207,166,198,207,100, 50,225,198,141, 27,216,182,117, 43,102,124,247, 29,100, 50, 25, 0,192, 96, 48, 64,153,149, 5,161, 80, +104, 17, 99,101, 8,167,221, 79,159, 62,157,232,227,227,243,202,148,161,249,181,176,205, 2,195, 48, 48,153, 76,208,106,181, 88, +186,116,169,137,101,217,221,101,245, 63,102, 81, 52,113,226, 68,232,116,255, 24,212,235, 23,250, 36, 87,173, 90, 21, 33, 33, 33, +150,125,146, 36, 89, 91, 57,127,111, 94, 23, 26,171,163,107,205, 90, 2, 0,240,241,241, 65,173, 90,181,224,233,233, 89, 34,103, +113, 90,228,191,134, 29,145,225, 75, 22, 90, 37,101,202,126,248, 50,101,209,168,169, 75,150, 72,132, 20,247,203, 94,245, 80,197, +145, 7,136,156,192,107,253, 13, 8,199,130,129, 60,171,124, 1,156,252, 6, 63,247, 86,146,225,127,104,255, 50,208, 10,215,231, + 89, 89,175, 57,225,113,121,194,118, 1, 53,106, 18,113,201, 74,112, 56, 28, 72, 28, 92,208,188,215, 36, 80, 20, 9,169,163, 11, + 8, 90,243,143, 34, 38, 41,112, 40, 14,148,185, 26, 84,245,175, 65, 10,132,162,118,234, 50,132,150,220,129,251,219,148, 1,205, +133,153,166, 4,136,170, 8, 65,155,187, 83, 47, 62, 72,231, 92,124,213, 57, 80, 20,126,240,222,111,200, 49,182,183,229,194, 80, + 38, 19,220, 40, 10, 6,150,197,221,137, 19, 17,182,110, 29,110,153,133,225,186,117,184, 21, 30, 14, 39, 46, 23, 2,146, 4,107, + 52,190, 54,167,111,139,208, 2,128,248,248,120,236,221,187,215,169, 95,191,126,251,163,162,162, 6,217, 41, 54,204, 92, 46,215, +174, 93,115,243,247,247, 47,241,152, 23, 47, 94,160, 97,195,134,118, 79, 79,241,249,252,206,237,219,183,223,177,119,239, 94,135, + 7, 15, 30,192,205,205,237,141,133,150, 64, 32,104,221,177, 99,199, 29, 91,182,108,145,167,167,167, 99,221,186,117,242,238,221, +187,111,143,140,140,236,165,211,233,108, 17,155,175,136,172,117,235,214,101,111,216,176,225,119,188, 58, 69,152,188, 97,195,134, +141,141, 26, 53,250, 44, 60, 60,220, 17,192,216, 66,223,129, 82,197,150, 64, 32,104, 27, 16, 16,240,202,168, 86, 32, 40, 48, 54, + 73, 36, 18, 56, 56, 56,128,199,227, 65,167,211, 33, 44, 44,140,224,243,249, 45,109, 57,103,153, 76,214,177,119,239,222,228,197, +139, 23,145,146,146, 2, 71, 71, 71, 72,165, 82,208, 52,141, 81,163, 70, 81, 75,151, 46,109,171, 86,219, 55,195,229,235,235,219, +179, 67,135, 14,156,251,247,239,227,229,203,151,208,233,116,120,252,248, 49,228,114, 57,134, 12, 25,194, 91,188,120,113,247,196, +196, 68,123,133, 86,221,240,240,240, 84,107,145,101,134, 68, 34, 33,106,214,172,169,116,118,118,110, 0,192, 30,161, 85,247,243, +207, 63, 79, 91,184,112, 97,235,211,167, 79, 91,130, 94,158, 62,125,122, 42, 0, 44, 95,190,252,130,171,171,107, 3, 0,182, 10, + 45,176, 44,203,124,242,201, 39,177,124, 62, 31, 92, 46, 23,124, 62,255,149,141,199,227,129, 36, 73,153,249,113,254, 31, 22, 53, +141, 0,252,130,130,228,186,223, 1,184,246,142,148,235, 54,128,176,174, 93,187, 90,196,214,177, 99,199,208,185,115,103,100,103, +103,227,254,253,251,214, 34,203,158, 4,203,183,141, 70,227,157,157, 59,119, 54,239,215,175, 31, 97,245,124,225,193,131, 7,120, +244,232,209, 45, 91,249, 72,146, 4,195, 48,224,114,185, 88,178,100, 9, 12, 6, 3,254,248,227, 15,236,217,179, 7, 36, 73,130, + 32, 8, 16, 4, 1,185, 92,142, 21, 43, 86,216,213,238,209, 52,141,205,155, 55,227,155,169, 83, 45, 34,171,112, 38, 3, 30,238, +238,112,118,113,193,243,231,207,203, 20, 90, 89, 89, 89, 63, 28, 58,116, 8,165, 57,195, 31, 58,116,200,242,127, 17,103,248,178, +251, 57,138,130, 78,167,195, 7, 31,252,147, 42,246,243,207, 63,183,252,175, 84, 42, 65, 81,148,249, 90, 16,182,114,106, 88,160, +151,240,159,247,186,124,245,213, 43, 22,186,146, 56, 75,210, 34,239,162,117,171, 24,177, 21, 86,104,157,245, 4,208, 21, 5, 62, + 90,201, 64, 25, 62, 90, 79,210,212,171, 56, 68,114,200,194,241, 31, 14,171,226,230, 0, 54, 47, 21,188,246, 63,224, 78,186, 8, + 75,150, 30, 5, 0,124,253,105, 67,212,239, 56, 15,250, 77, 31, 98, 98, 51,138, 63, 56, 65, 55, 5,192,204,215, 27, 70, 38,200, +199,219, 11,119,158, 69,129, 67, 81,224, 59,184,192,193,201, 29,140, 73,143,156,180,151, 56,183,239, 87, 0,192,218,205,187, 65, +146, 36, 56, 28, 10, 58, 61,141,192, 42, 94, 96, 24, 38,168,180,114,214, 6,154,183,117,119,105,226,235,231, 72,220, 87,188, 68, + 77, 55,231, 34, 19, 33, 2, 4, 38, 73,137,102, 82, 81,227,172, 28, 85,243,135,192,229, 50,197, 0, 73,130, 36, 8,136,121, 60, +232,246,238, 45,240,218, 92, 87,208,103,221, 10, 15, 7,249,215, 95,144, 9, 4,160, 8, 2,156, 66, 19,116,121,160, 82,169, 64, + 16, 4,182,109,219,166, 24, 50,100,200,246,251,247,239,135,107,181,218,189,246,112,100,103,103,119,109,209,162,197,217,205,155, + 55,187,122,120,120,188,246,121, 74, 74, 10,134, 13, 27,150,158,157,157,109, 87, 80, 55,161, 80,248,113,207,158, 61,215,111,218, +180, 73,254,244,233, 83,228,229,229,193,213,213,245, 77,235,104,131,166, 77,155,238,223,187,119,175, 67, 74, 74, 10,114,114,114, +160,211,233,176,109,219, 54,199, 46, 93,186,236,141,142,142,238, 12, 32,178, 12,142,153,214, 34,107,204,152, 49,247, 0,184, 1, +248,173,168, 6, 45,252,172,158,149,216,202, 1,176,184,148,145,168,159, 68, 34, 65, 90, 90, 26,134, 13, 27,134, 39, 79,254, 49, +128,122,121,121, 89, 70,122,207,159, 63,135,171,171, 43, 8,130,112,179,229,164, 93, 93, 93,165,122,189, 30, 35, 71,142, 68,124, +124,252, 43,156, 9, 9, 9, 32, 8, 66,108,239,133,116,119,119,119,215,104, 52,104,213,170, 21,180,218,130,188,190,253,251,247, + 7,151,203, 69, 90, 90, 26,184, 92,174, 75, 57,238,143, 75,215,174, 93, 75, 12,173, 34,151,203, 13, 10,133,162,182,157,156,206, +221,187,119, 79, 92,183,110,221,107, 11, 91,174, 95,191,222,195,201,201,233,180,147,147, 83, 77, 59, 57, 25,107, 81,197,227,241, + 94, 17, 90, 92, 46, 23, 36, 73, 50,248,223,199, 79, 0,204,171,224, 86, 3, 8,121,135,202,102, 17, 91,199,142, 29, 67,112,112, + 48,178,178,178, 16, 29, 29, 93, 94,145,101,110,239,190,153, 61,123,246,201, 62,125,250, 72,204,131, 86,145, 72,132,201,147, 39, +107,242,242,242,190,177,171, 18, 49, 12, 56, 28,142,101,144, 44, 20, 10, 17, 22, 22,102, 17, 89, 4, 65, 32, 63, 63, 31, 28, 14, +199,188, 34,145,176,177,140,240,244,240,128, 76, 38, 67,141,192, 64, 60, 45,108, 71,204,255, 11, 4, 2, 16, 4, 1,147,169, 76, + 67, 94,110,161, 83,251,164, 10,190, 55,172, 89, 20,149,106, 58,246,242, 2,195, 48,102,145,201, 86, 4,167,139,139, 11,242,242, +242,108,229,124, 39, 81,130, 69,203, 44,180,186,162,192, 87,235,181,240, 14,109, 0,156,195,171, 75, 42,201,218,238,210, 13, 11, +199,117, 24,246, 97,176, 11, 52,233, 47, 33,148,185,128,112,172,138, 37, 75,143,226,254,139, 76, 0,192,146,237, 55,177, 99, 78, + 23, 64,228,132, 90, 14, 25,240,144,113,122, 63, 74,123, 93,104, 17, 96, 9,134,101,193,161,200,194,185, 91, 10, 20, 69, 66,153, +158,140,101, 63,140, 45, 20, 89,123,112,228, 66, 52,124, 2,130,255,153,199, 37, 8,128, 45,189,114,187, 58,240,214,141,235,211, + 84,148, 74, 36,195,209, 75, 12,161,176,136,126, 84,240, 64, 84, 37, 49,190,173,143,248,198, 33,237,186,135, 57,134, 50, 59, 10, + 33, 73, 22, 56,191, 19, 68,177,206, 61,100,225,103, 20, 65, 20, 68,127,101,236,107,211,205, 66, 94, 36, 18,193, 96, 48,128,162, + 40,172, 92,185,210,177, 99,199,142,191,217, 43,180, 0, 60, 72, 77, 77,237, 50,106,212,168, 99,187,119,239,118,113,113,113,121, +101,244, 48,106,212,168,140,212,212,212, 46,176,211,233,158,203,229,254,182,122,245,106,121, 76, 76, 12,242,243,243, 33, 18,137, + 44,141, 79,121,235,103,227,198,141, 79, 28, 63,126, 92,145,147,147, 3,131,193, 0,145, 72, 4,150,101, 65, 81, 20,254,252,243, + 79,231,110,221,186, 29,141,139,139,107, 95, 90, 89, 69, 34, 81,175, 66,225,132,240,240,112,199,240,240,240, 54, 64,137,145,122, + 45, 8, 15, 15,119,156, 52,105, 82,119,141, 70,179,184,148,115,142, 87, 42,149, 30, 34,145, 8,251,246,237,131, 84, 42,133, 88, + 44,134,151,151, 23,148, 74, 37,196, 98, 49, 88,150,133,209,104, 52, 55, 22,153,182,156,120,122,122,122,158,201,100,114, 56,118, +236, 24, 50, 51,255,249, 74,149, 42, 85,144,157,157, 13,134, 97,242,237,189,152, 73, 73, 73,169, 4, 65,248,222,185,115, 7, 49, + 49, 49,232,220,185, 51,254,250,235, 47, 52,108, 88, 48, 59,172,215,235,203, 19,196,143,166, 40,138, 45,165,222, 18, 0, 20, 21, +201, 89,216,121,217,197,201, 48, 12, 99, 22, 89,214,175,214,226,171,140,223,252, 95,129,131,245, 56,225, 93, 45,100,231,206,157, +161, 84, 42, 33,149, 74, 43,194, 63,231,138, 70,163,121,124,224,192,129, 6, 93,187,118, 5,159,207,199,227,199,143, 17, 25, 25, + 25, 13,224,138,189, 66,139,203,229, 98,246,236,217, 24, 59,118, 44,220,221,221,241,205, 55,223,128,195,225, 88, 54,130, 32, 44, + 22, 46,123,224,230, 94,250,194, 71,179, 67,124, 89,198,112, 7, 7,135,217, 36, 73,246,163,108,184,112, 52, 77,211, 12,195,236, +206,201,201, 41, 53,188,131,217,113,221,150,123, 97,125, 13,202,232,211,222,152,179, 4, 45,242,159,163,232,106,195, 18, 44, 90, +230, 85,135,175,165, 2, 50,159,229,185, 66,147,221, 57,107,145,245,227,216,118,195, 62, 12, 86,224,224,153,107,224, 25,178, 1, +125,110, 41,119,216, 8,130, 39,129,187, 3,183, 88, 95, 33,130,164, 30, 37, 36, 38,193, 89, 33, 45, 20, 89,133, 27, 73,162,126, +112,193, 96,246,200,133,104,248,248, 7,131, 67, 81,224, 80, 20,164, 34, 1, 82, 83,146,193,225,144,143, 74,250,217,186, 20,250, +244,169,233, 91, 85,225,204, 69,134,171, 30,158,238, 37, 24, 6, 26,200,224,227,201, 71, 39,103,161, 95, 93, 10,125, 74,149,229, + 44,107, 17, 90, 6,147, 9,188,143, 63,182, 76, 23,222, 10, 15, 71,216,186,117,160,123,246,132,218, 96,120,197, 84, 92, 94,161, + 37, 18,137,144,155,155,139, 65,131, 6, 41,141, 70,227,103,229,172, 11,145,153,153,153,125, 7, 15, 30,156,105, 22, 48, 6,131, + 1,131, 7, 15,206,204,204,204,236,107,131,149,232, 53, 24,141,198,207, 26, 54,108,168,204,200,200,176,148,179, 60, 13,142, 25, + 78, 78, 78, 71, 54,108,216,224,164,211,233, 96, 50,153, 44,156, 34,145, 8, 20, 69,193,213,213, 21, 59,118,236,112,117,114,114, + 42, 53,103,149, 70,163, 57,176,110,221,186,108, 0, 88,183,110, 93, 54, 65, 16, 17, 4, 65,172, 33, 8, 98,117,145,109, 13, 65, + 16, 17,214,199,106, 52,154,253,165,113,235,245,250,136,232,232,104, 86, 44, 22,131,162, 40, 24, 12, 6, 8,133, 66,139, 73, 92, +165, 82, 65,163, 41,152,230,142,140,140,132,209,104,188,104,203,185,231,230,230,158,217,188,121, 51, 83,165, 74, 21, 4, 7, 7, + 35, 44, 44, 12, 77,155, 54,133,159,159, 31,230,206,157, 75,171,213,234,115,229, 16, 90, 71,118,237,218,101,244,245,245, 69,131, + 6, 13, 32, 16, 8, 80,191,126,125,120,121,121, 97,193,130, 5,250,156,156,156, 99,229,184, 77,113, 81, 81, 81, 84, 41, 34, 87, + 14, 27, 86,239, 22, 65,252,141, 27, 55,168,166, 77,155, 30, 44,250, 65,227,198,141, 15, 74,165, 82, 7,179,137,221,158, 17,185, +181,184, 18, 8, 4,150,205,252, 62,135,195,249,255, 96,209,154, 8,224, 30, 10,226, 48,125,243,142,149,205,226,248,158,153,153, +137,232,232,104, 68, 70, 70,162,105,211,166,184,120,241, 34,240,143,131,188,221,200,201,201,249,102,206,156, 57,106,243, 74,190, +239,190,251, 78,147,155,155,251,141,189,109, 48,203,178,224,114,185,168, 85,171, 22, 38, 77,154,132,163, 71,143,226,241,227,199, + 48, 26,141, 22, 33,100,246,201,180,199,162,197,227,241,224,238,238, 14,163,209,104,177,102, 1,192,211, 39, 79,192,225,112,192, + 48, 12,244,122,125,153, 22, 45, 7, 7,135,217,235,215,175,159,144,145,145,225,153,158,158,238,102,189,165,166,166,186, 37, 39, + 39,187, 37, 38, 38,186,197,199,199,187,197,198,198,186,189,124,249,210,115,209,162, 69, 19, 28, 28, 28,102,219, 82, 78,138,162, + 80,191,126,125,124,254,249,231,150,109,213,170, 85,150,237,220,185,115,118, 59,175, 83, 20,133, 90,179,150,160, 75, 58,107,217, +142,186, 18,150,237,254,215, 99, 74,227, 44,170, 69,222, 9,152, 87, 27, 90, 39,150, 46, 6,230, 85,135,230,182,204,226,182, 81, +212, 25, 30, 0, 16,228, 33,158,247,227,232,214,195, 62,168,237,128, 3,103,110, 98,206,254, 23,143, 2,135,185,214,170,174, 72, + 7,147, 30,141,175, 63,109,136, 37,219,111, 2, 40,152, 58,100,210,238,131,205,122, 14, 86,230,139,151,202,140, 98,167, 29, 76, +122,237,217, 23,207,158,180,171, 85,183, 17,153,146,145,247,202,242,207,176,182,125, 65, 16, 4,188,253,131, 65,113, 56,160, 40, + 18, 28,138,130,163, 92,136,232, 59,119, 24,157, 70,115,182, 56,206, 54, 0,135, 47,226,175,250,180, 83,125, 97, 18, 63, 13,174, +158, 18,240,184, 5,218,145,125,209,183, 72, 15,193, 1,234,202, 48, 60,209, 89,116, 54, 85,187, 74,161, 54, 28,140, 40, 97, 4, +200, 48, 12,164, 2, 1,180, 58, 29, 52, 38, 19,218, 46, 91,102,153, 46, 36, 9, 2,183, 1,212, 91,182, 12,151,247,238,133,156, +207, 7, 4, 2,155, 87,133, 20, 39,180, 50, 50, 50, 48,116,232,208,204,228,228,228, 33,229,241,209, 50, 67,167,211,157, 79, 73, + 73, 25,210,183,111,223,109,251,246,237,115,234,219,183,175, 50, 37, 37,101,136,141,126, 79,175, 65,171,213,238,141,143,143,207, + 31, 58,116,232,214,237,219,183, 59,187,184,184, 88, 70, 34,229,170,172, 4,145,209,161, 67, 7,129, 45,199,149,113,200,156, 66, +231,246,177,133,150,173,122, 99,198,140,185,140, 2,255, 43,107,204, 90,187,118,109,127,171, 41,198, 53, 0,150,149, 70,172, 82, +169, 86, 79,154, 52,105,196,249,243,231, 93,132, 66, 33, 8,130, 0,143,199, 67,141, 26, 53, 44,171,104,184, 92, 46, 88,150,197, + 87, 95,125,149,145,150,150,182,220,198,123, 51,102,206,156, 57,173,181, 90,173, 98,232,208,161,148, 80, 40, 68,106,106, 42,150, + 46, 93, 74,111,218,180, 41, 91,173, 86, 15, 43,135, 16,222,252,253,247,223,183,205,203,203,243, 31, 53,106, 20, 47, 39, 39, 7, + 26,141, 6, 83,166, 76,209,111,220,184, 49, 65,163,209,216, 29,240,183, 89,179,102,207, 98, 99, 99, 91,230,231,231,103,137,197, +226,162,214, 62, 66, 34,145, 52, 2,176,213, 30,206,176,176,176,231,113,113,113, 77,231,205,155, 23, 97, 52, 26,185,215,175, 95, +239,105, 22, 89, 43, 87,174, 60, 39, 20, 10, 59,160,132,101,209,165,212, 17, 70, 32, 16,188, 98,193, 42,250, 63,135,195,249,255, + 96,209, 58,135,130,144, 25,239, 26, 94, 17, 89,247,239,223, 71,187,118,237, 0, 0, 23, 47, 94, 68,139, 22, 45,112,241,226, 69, +180,108,217,210,238, 88, 90,133,248, 91,165, 82,197,158, 59,119,174,142,175,175, 47,174, 92,185,242, 18,192,223,246, 22,210, 44, +180, 56, 28, 14, 6, 14, 28,136,142, 29, 59,162, 74,149, 42,175,172, 54, 52,255,111,143,216, 48,153, 76,168, 91,183, 46,116,122, + 61,120, 60,158,101,106,146,195,225,192,213,205, 13,207,158, 61,179,201,162, 69,146,100,191, 94,189,122,145, 15, 30, 60,192,128, + 1, 3,176,109,219,182, 18,143, 29, 60,120, 48,118,238,220,137, 94,189,122,145,211,167, 79, 47, 53,188,131,217, 9,221,150,115, + 50,247,211,101,181,251, 21,197,105,173, 69,222, 53, 88,133,118, 40, 14,225,197,188,183,238, 21,161,101, 21, 36, 12,254,174,226, +225, 29,107,112,112,224,236, 77,204, 57, 16,183,153,102,217,125,251,110,101, 29,254,166, 5, 96,216,253, 41,234,247,221, 90, 48, + 93, 8,128, 73,187, 15,195,238,193, 32,196, 46,184,144,200, 69,142,198,112,164,248,138,103,216,246,215, 31,191, 78,106,250, 91, + 75, 87, 79, 55, 7, 40,115, 52, 22,177,117,235,220, 30, 0, 64,159, 49,243,193,161, 10,166, 20,229, 82, 33, 68, 60, 10,123,183, + 44,207, 48, 24,180,197,214,174, 92, 46, 57,118,122,243, 26, 14,124,137, 17, 42, 15, 22,193,174,255,100,202, 33,252,247,188, 46, +184, 66, 21,112,185,159,133, 79,171, 75,229,203, 31,100,143,133,145, 89,245, 90,135,152,157,173,201,190,115, 71,212,121,253,122, + 92, 31, 50, 4,222, 52,141, 8, 47, 47, 56,113,185,112, 16, 8, 64, 18, 4, 52,135, 15,227,242,190,125,112, 23, 8, 0,153, 12, +166,185,115,161,139,142,134, 49, 55, 87, 83,142,145, 25,250,247,239,159,145,145,145,209, 87,175,215,159,127,211,138,160,209,104, +142,199,199,199,143,109,214,172,217,111, 70,163,241, 51,141, 70,115,252, 77,248,244,122,253,241,148,148,148,143,251,247,239,191, +103,255,254,253, 46,142,142,142,229,230,202,204,204,108, 88, 65,245,157, 1, 48,163,208,185,125,108,120,120,184,227,141, 27, 55, + 70,108,216,176,225, 55,171,209,132,219,200,145, 35, 71, 23, 17, 89,101,174, 58, 4, 16,151,150,150, 54,119,242,228,201,243,127, +254,249,103,169,217,241,253,238,221,187, 48,153, 76,224,114,185,160,105, 26, 35, 71,142,204,203,204,204, 92,130,146, 35, 58,191, + 86,181, 84, 42, 85,141,121,243,230,109, 88,182,108, 89, 71,138,162, 36, 52, 77,171,243,243,243, 35,180, 90,237, 48,148, 47,142, + 22,147,158,158, 62,116,230,204,153, 67,151, 46, 93,218,139, 36, 73, 55,147,201,148,145,155,155,123, 72,163,209,108, 68, 57,166, +146,174, 92,185,146,254,233,167,159,190, 72, 79, 79, 15,242,241,241,201,145, 74,165,122,189, 94, 79,137, 68, 34,185, 68, 34, 9, + 3,112,133, 32,136,135,246,112,222,186,117, 43,101,212,168, 81, 49, 58,157,174,214,154, 53,107, 46,200,229,242, 51, 4, 65, 16, + 60, 30, 79, 33, 18,137,218, 1,136, 32, 8,226,169, 61,156, 36, 73, 50,214,214,171,162,254, 89,124, 62,255,255,139,143,214,187, + 8, 75,120,135,140,140, 12, 60,120,240,192, 44,178,194, 0,160,101,203,150,183,204, 98, 43, 50, 50, 18, 13, 26, 52,184, 5,128, +107,111,125, 85,169, 84,147, 7, 13, 26,116,188,112,112, 60,185, 28, 3, 63,139,208, 50, 11,170, 42, 85,170, 88,246,173, 55, 43, + 31, 45,155, 64,211, 52,120, 60, 30, 56, 28, 14, 60,189,188, 44,191,197,178, 44,158, 61,123, 6,165, 82,105,147,208,162, 40,138, + 34, 8, 2, 3, 6,216,182, 32,249,147, 79, 62, 65, 68, 68, 4, 40, 27, 85, 33, 69, 81,168, 90,181,106,153,199,152,117,169,173, +156, 62, 62, 62,229,230,180,214, 34,239,146,192, 42,238,255,226, 68, 85, 73, 15,196,107,120,158,166,153, 55,248,151, 75,211, 31, +166,104,247, 69,167,230, 79, 2,192,238,190, 47, 62, 89,223,149,250,240,195,154, 9,208,173,107, 9, 66, 94, 16,188,141,205, 75, + 6, 33,113, 71, 2,227,141, 89, 7, 31,165,152, 64,148,228,255,146,148,151,151, 51, 99,203,250,149, 63,143, 28,247,149,244,254, +243, 84,228,228,233, 64, 81,164,117,227, 9, 14,135,130, 92, 34,132,175,135, 3,182,255,254, 75,110,174, 42,123, 38, 74,200,123, + 88, 69,198, 27,211,161, 81,117, 1,207, 83,141, 90,245,250,131, 18,254, 35, 2,216,148, 18,102, 7, 91,156,196, 71,113,106,225, + 95,113,234, 49,183,179,244,175, 11, 45,189,254,195,239, 58,117, 58, 49,231,232, 81,113,227,205,155,241,124,228, 72,120,105, 52, + 16, 20, 78, 37,146, 4, 1, 41,143, 7, 41,143, 87, 32,178,150, 46,133,198,100,194,178, 33, 67,242,117,122,125, 39,123, 30,242, +204,204, 76,244,236,217, 51, 61, 41, 41,169, 11,202, 49,181, 87, 18,212,106,245, 94, 0,123, 43,138, 79,167,211,157, 79, 72, 72, +248,168,103,207,158, 71,143, 31, 63,238,250,142, 4,153, 51,139, 45,195,141, 27, 55, 70, 95,184,112,225, 57, 94, 77, 44,154,125, +225,194,133,231,163, 70,141, 34, 54,108,216,176, 17,192,247,176, 49,128,167, 90,173, 94,121,234,212, 41,180,110,221,250,251,133, + 11, 23, 58, 55,108,216, 16,110,110,110,200,205,205, 69,100,100, 36, 38, 78,156,168, 84,169, 84, 11,179,179,179,127,182,179,204, + 6,157, 78, 55,216,122, 41,117, 69, 92, 7,157, 78,183, 41, 57, 57,121, 83, 69, 17,142, 31, 63,254,238,179,103,207, 50, 93, 93, + 93,155,240,120,188,122, 40,240, 3, 74, 1,176,209, 94, 65,100,198,184,113,227,238, 60,123,246, 44,195,219,219,187,105, 33,167, + 35, 10,210, 24,173, 47, 7,103,210,205,155, 55,125, 26, 53,106, 68,114,185, 92,150,162, 40,112,185, 92,150,195,225,176,133,126, + 53, 44, 0, 28, 58,116, 72, 0, 64,137, 74,252,219,176,132,119, 72, 78, 78,182, 22, 89,102,171, 85, 88,203,150, 45,111, 21,138, + 44,243,103,229,241, 47, 59,205, 48,204, 27,229,235,101, 89, 22,115,230,204,193,218,181,107, 81, 86, 68,243,194,213,125, 68, 89, +124,102,139, 22, 77,211, 48, 24, 12,184,127,255,190, 37,102,151,121,186,208, 28,218,193,100, 50,149,186, 90,157,166,105, 90,175, +215,227,207, 63,255,180, 73,108,237,216,177, 3, 90,173, 22,116, 25, 10,206, 58, 20, 67, 72, 72, 8,148, 74,165,101,177, 79, 88, +216, 63,161,242, 12, 6,131, 93,194,213,204, 89,171, 86, 45,100,100,100,192,236, 47,236, 59,228, 31, 99,143, 73,253, 63, 27, 63, +184, 68,139,150,205, 61,102,125, 7, 7, 7, 29,223,184,191, 71,176,160,109,191, 48, 7,248,123,200,192,229, 9,145,164, 50,225, +244, 67, 21,214,159, 75,137,215, 24,233,110, 79,210,243,163, 74,227, 17,136,229,199, 27, 54,239,216, 98,200,232,137,146, 60, 29, +141,152,152, 88,164,167, 37,131, 36, 72,120,122,251,192,207,175, 42, 68,124, 18,219,214,253,172,190,117,249,204,165,188,220,172, +206, 37,113,117,117,224, 93, 94,250,113,139,166, 1, 1, 50, 2, 38, 35, 64, 27, 1,147, 17, 96, 10, 95,205,239, 49,175,214,185, + 7, 15,178,217,233,183,149, 87,143,228, 24,138,205, 89,213, 23,104,225,232,228,116, 98,214,161, 67, 98,198, 96, 64,230,228,201, + 16,155, 76, 16, 22,142, 74, 10, 78, 68, 0,211,220,185, 5, 34,107,240,224,252,156,236,108,187, 82,240,184,184,184,220, 36, 8, +194, 37, 61, 61,253,189,138, 12,239,234,234,122,132,101,217,140,140,140,140,134,239, 80,185,220, 0,100, 3, 48, 20, 51,144,112, +133,253,254, 63,102, 84,117,117,117,157, 78,146,100, 51,150,101,157, 73,146,204, 98, 24,230, 74, 90, 90,218, 34, 0,207, 42,251, +211,255, 12,230,200,240,213,202, 56, 46, 13,192,151, 40,112, 10,142,169,188,108,255, 58, 42, 60, 5, 79, 69,194,201,201,233,218, +137, 19, 39, 26,250,251,251,147,214, 14,239,230, 88,121,230,233, 45, 14,167, 64,203,157, 63,127,222, 52, 96,192,128, 43,169,169, +169,173, 75,226,148,201,100, 39,239,221,187,247, 65, 78, 78,206,107,130,202, 58, 82,188,121, 95,173, 86, 99,220,184,113,167, 74, + 74,193,227,224,224,176,244,231,159,127,158,208,167, 79, 31,210, 28,142,194,122, 51,167, 11, 50,111, 6,131, 1, 91,183,110,101, +150, 47, 95,190, 34, 39, 39,167,196,169, 67, 79, 79,207,248,164,164, 36, 31,115,168, 5, 91,130,138, 86,173, 90, 53, 57, 54, 54, +214,235,223,228,124,143, 5,215, 58,107,225,109,175,105,130,168,229, 38,233,207, 2,253, 72, 48,117, 73,130,224,155, 88, 60, 6, +139,147, 98, 78,254,111,183,146, 97,211,212, 25, 87, 36, 26, 47,147, 42,126,232, 51,232,115,231,170, 1,129,132,187,167, 55, 8, +144, 72, 77, 73, 68,236,139, 39,236,254, 63,126,205, 84,171,148,179, 53, 26,245,175,165,241,212, 6, 2,170,201,121,187,249, 52, +106,194, 44,128,138,228,167,122,109,196, 1,192,192, 37, 31,197,228, 26,251, 63, 44,101,218,199, 44,182,102,236,223, 47,230,215, +172,249, 90,160, 56,134, 97,160,139,142,198,178, 33, 67,236, 22, 89,149,168, 68, 37, 42, 4,254, 40, 59, 70,150, 17, 5,241,185, + 76,149,151,235, 63,193, 59,155, 84, 26,128,196,201,201,233, 12, 69, 81,126,102,139,140,181,181,190,152,132,210, 49,169,169,169, + 29, 0,148,182, 66, 56, 64, 38,147,253, 74,211,116, 99, 91,146, 74, 83, 20,117, 61, 55, 55,119, 60, 74, 73, 42,253, 54, 86, 29, + 58, 59, 59, 63,139,141,141, 13, 48,175,162,182,238, 43,139, 91, 89,254,244,233, 83,180,105,211, 38, 54, 37, 37,165,234,191,201, +249,174,162,132, 85,135,225,197,220, 99,251, 44, 90,111, 1, 94, 60,129,116, 40, 95, 36,108,207, 24, 77,181, 64, 0, 28, 46,247, +145, 94,171, 57,171,211,228,109, 65, 9,211,133,255, 38,250, 2, 45, 4,124,254, 73,158, 92, 46, 42, 78,180, 25,115,115, 53, 58, +189,254,195, 74,145, 85,137, 74, 84,162, 18,149,120,143, 80,211,201,201,233, 4,151,203, 21, 88,139,201,162,255,155, 97, 50,153, +180,233,233,233,157, 1, 60,254,151, 57,223,107,216, 19,196,252, 21,216,233,164,214,209, 86,206,194,173,205,187,206,249, 22,207, +157,173, 64,206, 54,133,156,179,222,147,114,182,121, 87, 57,205,231,107, 7,111, 71,123,234, 81, 69, 93, 79,171,114,178, 21, 93, +206,183,197, 89, 81,207, 81, 49,229,100,223,194,125,159,245,158,148,179,205,187,198, 89,180,254,216,200,107, 23,167,141,117,202, +222,114,178, 21, 93,206,183,197,249,166,207, 81, 41,229,100,223,180, 46,149,112,239,103,225, 61,196,131, 80,176, 15, 66,193,222, +111, 80,108,220,198,226, 44, 90, 96, 89, 22,118, 57, 18,190,173,149, 0,230,176,251,133,252,196,187,202,105,125, 29, 42, 50, 85, +192, 91, 72, 59,112,174,162, 57,139, 92,207,138,194,172,194, 21, 38, 17,176, 33,224,168, 61,231, 94, 17,247,189,200,185, 86, 8, +111, 57, 68,150, 93,156, 21, 85,239,223, 54,103, 69, 61, 75, 69, 57, 43,162,222, 23,119,223,223,226, 61,170,168,114, 86,200,179, +244, 54,234,124, 49,245,231,141,121,139,114, 86,196,179, 84,148,179, 34,234,253,191,193, 89, 17,207, 82,113,156, 21, 81,239, 75, +186,247,239,171,133,202, 60, 93, 88, 24,226,129,176, 65,108,173, 3, 0,178, 60, 23,237,109,224,109, 36,146,172,104, 65,244,182, +196,166, 29, 22,152,255,156,179,130,239,209,172, 66,206,138, 28,221,180,173,168,123,244, 54,234,187, 53,103, 69,241, 23,229,169, +136,251, 84, 28,231,155,150,183,132,114, 86,248,185,191,105,189,255,183, 56, 43,248, 30, 85,200,179, 84,132,179,109, 5, 15, 6, +218, 90,237,207,170, 72,206,138,122,150,138, 41,231, 27,223,167,226, 56,223,180,188, 37,148,179,194,207,189, 34,250,144,183,197, +251, 95, 90,180, 88,178,196, 58,177,174,200,246,175, 8,141,255,108, 74,206, 78,238,255, 41, 78, 59,167,103, 58,190,133,123,255, +159,150,179, 34, 57,139,150,177, 34,167,123,222,102, 57, 43,146,211,142,178,254,207,113,190,111,247,253, 93,188,158, 37,241,189, +201,180, 84, 73,214,209,183, 81,206,138,228,180,145,251,127,130,243, 13,238,253,255, 12,202, 53,117,248, 54, 97,190,240, 21, 60, + 50, 65, 5, 91, 96,222,218,121, 87,112, 57,219,190, 13, 11,225, 91, 64,133,151,179,112,164,252,195, 91, 56,247,247,229,154, 86, + 62, 75,149,207,210, 59,247, 44, 21,169,147,109, 43,208, 82, 84,161,150,231,162,156, 21,241, 27,214, 28, 21, 85, 71,223,246,185, + 87,228,179,244, 54,238,253,251,134,255, 27, 0,133,106,237, 30,181,247, 74, 74, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, 0}; diff --git a/source/blender/editors/datafiles/splash.png.c b/source/blender/editors/datafiles/splash.png.c index 353f547dc17..589fc124f4d 100644 --- a/source/blender/editors/datafiles/splash.png.c +++ b/source/blender/editors/datafiles/splash.png.c @@ -1,6610 +1,6389 @@ /* DataToC output of file <splash_png> */ -int datatoc_splash_png_size= 211350; +int datatoc_splash_png_size= 204235; char datatoc_splash_png[]= { -137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, - 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 0, 1,115, 82, 71, 66, 0,174,206, 28,233, 0, 0, 0, 6, 98, 75, 71, 68, - 0, 1, 0, 1, 0, 1,178,230,200,110, 0, 0, 0, 9,112, 72, 89,115, 0, 0, 11, 19, 0, 0, 11, 19, 1, 0,154,156, 24, 0, - 0, 0, 7,116, 73, 77, 69, 7,218, 3, 2, 19, 20, 24,177,122,117,152, 0, 0, 32, 0, 73, 68, 65, 84,120,218,236,189,119,188, - 93, 85,157,254,255, 94,107,151, 83,111, 77, 15, 36,144,144, 16, 32, 16, 32,161, 36,128,212,208, 65, 65, 64,197,138,232, 87, 29, - 44,140, 12, 58, 40,138,131,140, 35,234,111,116,196, 2, 72, 19, 29, 20,140, 12, 85,144, 58, 8,130, 6, 12, 37,210, 33,180,144, -158, 91, 79,221,109,173,223, 31,123,175,125,247, 57,247, 6,226,232,188, 70,244,174,215,235,230,150,236,179,203,218,107,173,231, -243, 60,159,178, 4,160,249,179,154, 13, 40, 4, 10, 0, 43,115,194, 8, 64, 0,200,248, 24, 13, 78,242, 9, 7, 8,129, 58,160, - 37,160, 36, 32, 17, 8, 36, 26,139, 16, 32, 57, 43,104, 17,127, 87,233,221, 58,241,223,137, 50, 71,141,183,241,246,247,212,100, - 50,227,226,249,133,208,241,228, 19, 97, 58, 9,197,152,159, 49,255,173,210,255,215,230, 96, 45,147, 15, 89, 45,199,163, 51,231, - 79,230,187, 70,130,144,230,131, 35,199, 65,242,247,236,121, 84,124,140, 14,177,146,191, 42, 32, 20,201, 26,162,227,153,111, 33, -145, 40, 32, 66, 17,162,129, 72, 36,151, 48,151,209, 54,232, 92,114,134, 32, 89, 73,222,170,239, 79,182,189, 37,141, 64, 97,161, -210,126,202,190,163, 8,136,146, 21, 82,141,175,127,227,109, 11,136,252,103,182,214, 1,165,199, 28, 98,170,229,167,104,100,138, - 35,129, 72,143, 28,163,145, 40, 20,106,100, 57,201,172, 58,217, 31,245,248,219, 27,111,227,109,212, 28,252, 51, 22,120, 13, 8, - 51,243,218, 64,154, 17, 64, 31,185,134, 74, 62, 35, 51,199,169,204,185,228, 22, 87, 3,209, 50,131,227,107,106, 84,178,126,168, -150,207, 9, 64,235,246,117, 64,181,221,203, 91,248,189, 9,217,242, 55,173, 19, 66,148,105,162, 5,212,199, 87,191,241,182,229, - 38,254,220,241,209,102,135,199, 11,130, 24,153,216, 98, 20, 46,103,173, 83,141, 75,136, 76,108,237,200,176,118,115,156, 30,185, - 59,171,229, 26,201, 68, 16, 42, 94, 76,198, 71,248,120,251,187,101,234,178,141,203,189, 25,208,201,204,247,228,216,246, 85, 64, -180, 76,196,182, 5, 67,181,124, 90,211,170, 8,200, 49,215,131,204,185,180,218,178, 66,208,118, 29, 57,134,210, 16, 37,134,255, -136, 38,248, 22, 6,118,209,246,128,162,205,112,201,188, 19,161, 71,212,202,184, 63,147,231, 87,111,117,195,102,188,253, 85, 49, -117, 49,106,210,153, 9,108,228, 64,133,212,173, 19, 18, 44,144, 46, 8, 7,116, 8,170, 58, 50,223,179, 43,131, 54,192, 46, 32, - 17,228,210,165, 66, 40,144, 42,195, 14,198,219,120,251,123,110,186,141,189,254, 15, 63,222,242,187, 26, 67,186, 31,219, 60,104, -199,164, 86,208, 31,203,232,142, 89,249, 40,133, 32,115, 2,173, 99, 5,207,102, 44,129, 58,214,242,254,166,108,121, 1, 99,118, -184, 24,233,143,150, 78, 78, 93, 45,227,180,125,188,253, 5, 65, 61, 59,177,163,148, 61,139,140,213,173, 90,199, 97, 10,220, 22, -136, 28, 96,225, 19, 96,227,141,120,197, 68,150,129,144, 57,143,108, 93, 4,198, 1,125,188,253,221,183, 54,137,122,171, 1, 93, -182,126,207, 40,107, 99,177,238,173,193,163,118,150, 46, 90,126, 87, 25,149,142, 17,195, 95,143,196,226,232,118, 96, 75, 72,184, -214,217,245, 32,246, 53, 71, 99, 40, 5,111,105, 91, 44,141, 21,216, 2,115,111,249, 57, 19,227,208, 54, 6,198,219,120,251,139, -128,250,232,129,106, 2,109, 12,184,171,150,197, 33,212, 17, 16,100,128,223,142, 1,221, 88,234, 90,103,228,167, 17,163, 64, 38, - 60, 63, 93, 32,244, 22, 88,198,120, 27,111,127, 71, 77,180, 1,251, 27, 79,137, 49, 96, 58, 43,141,139, 17, 86, 45,199,192, 21, - 61, 6,140,200, 12, 22,169, 55,184,106,202,218,179,103,110,241,197,143, 13,106,145,182, 33, 9,159,149,153,171,136,191, 17, 96, - 23,153,142,213,217, 62,208, 25,227,103,140,247,147,246,219,248,250, 55,222,254,210,160,174,218, 23, 18,161, 50,192, 30, 51,120, - 17,115,243,228, 75,161,117, 3, 21, 53, 98,111,186,116, 64,216,153, 21,195, 72,136, 81,234, 87, 27,147, 61,232,145,235,143,143, -235,241,246,247,220,100,219, 92,108, 81,100, 69,198,216,110,153,181,114,244, 25,244,104,230,167,199,152,239,250, 13,230,191,216, -130, 9, 49, 54, 0, 11, 52,178,197, 48, 25, 61,153, 5, 81, 42,194,135, 9,184,255,109,176, 83, 1, 72, 61,218, 24, 83, 26,116, -146, 17,208,250,118,101,178, 38,142,184, 70,198,131,230,198,219, 95, 28,212, 91, 6,148, 86, 35,211,215,200,102, 66, 17,233,248, -175,217,116, 54, 9, 4, 40,134,149, 71, 36, 3,208, 86,178,240,100,124,242, 99, 44, 20, 34,179, 76,232, 81, 75,203,120, 27,111, -127, 79, 44,125,108,224,220,122,115,188, 45,200, 78,200, 36,200, 93,109,241, 60,186, 13,174,117, 27,227,215, 25, 22, 25, 37,105, - 89,217,251,139,210,136,121, 43, 51,143,227,116, 87,195, 82, 91,131, 97,179,129,118, 18,173,101,124,222,191, 25, 36,147,201, 99, -171, 12,113,145,173,129,134, 25, 85,198,202, 16, 36,115, 76, 52, 62, 21,198, 91,166, 89,192,191,252,121,160, 46,209, 45, 78, 33, -149, 73,139, 1,164, 13, 68, 88, 64,135, 5, 57, 13,239,216,119, 18, 95,252,200,209,188,231,168,189,176,104,178,234,165,205,184, -105,110,170, 64, 74, 7,215, 45, 16, 70, 17,150,165,176,172,120,157,144,201, 60,143, 21,122, 11,133, 68,103, 67,228,183,208,114, -185, 28, 90,107,180,214, 72, 41,145, 82,162,245,214,173, 10, 66,196, 83,205,124,198,113, 28,148, 82, 88,150,149,158,195,252,156, -203,229,226, 62,209,127,155,182,179,235,186, 68, 81,148,246,201, 88,125,225, 56, 78,218, 7,185, 92,142, 40,250,191, 93,114,108, -219, 70, 41, 53,234,125,102,223, 91,246,111,237,199,164, 75,175,148, 8, 33, 90,222,109,246,185,183,230, 62,108,219, 78,251,195, -244,229,214,142,193,177,142,119,109, 7,173,212,152, 18,185, 65,125,203,182,227, 99, 4, 72, 41, 64, 43, 44,145, 17,203,133, 0, -105,141, 56,194, 45, 43,113,100,139,228,191, 44, 84, 50,111,180, 78,156,222, 50,201,158,182,237, 17,153, 88, 58, 49, 80, 27,229, - 45, 49, 18,116,155,251,173,197,128,200, 88,233, 86, 18,211,238,100, 0, 11,172,248,126,156,120, 13, 65, 42, 16, 49, 55,181,237, -183, 86,226,139, 16, 2, 41,101,235, 24, 19, 22, 10, 39, 93,203,192,194, 18, 14, 82, 88,104, 4, 26,176, 44, 23,173, 99,248, 22, -104,138,150,133,165,227,113,144,179,192,215,227, 76,125,188,253, 69, 65, 93,198, 19, 88, 10, 68, 44, 24, 33, 77,180,166,208,241, - 36, 23, 86,146,218, 22, 91,215, 7,236, 92,228, 59,231,253, 19,157, 97, 63,243,182,237,229,152, 67,247,103,187,201, 14,191,255, -253, 42, 58, 11,208, 12, 21,161, 86,132, 81, 4, 82,162,148, 66, 41,157,250,238,140,101,170,176,144, 78, 14,173,130, 55, 4,117, - 33, 4, 97, 24,166,139,183, 1,119,179, 40, 11, 33,222,240,203,117, 93,148, 82,233,103,148, 82, 72, 41,177, 44,171, 5,208,180, -214, 68, 81,212, 2,110,142,227,252,159,131,218,159, 61, 64, 44, 43, 5, 70,243, 44,249,124, 30,219,182,241,125,127,148, 17,147, - 5,208,191,134,103, 55,239,200,117,221, 81,247,151,189,239,177,128,221, 24,128, 66,136,116, 12,228,243,249,150,243,102,207, 55, - 86, 51,134,143,233, 63, 99, 28,154,190, 49,231,223,210,151,185,199,108, 95,154,123, 85,109,128,222, 34,133,155,121,168, 20,182, -227,224,216, 54, 81, 24, 38, 56, 26,139,222,174,109, 19,170, 4,205, 83,205, 94, 39, 64, 47, 65, 90, 49,233, 22, 18, 45, 5,194, -182,146,227, 18,142,168, 20,150,157, 24, 54, 58,169, 58,161,147, 96, 89,203, 78, 28,237, 10,147,132, 54, 42,192, 91,136, 12, 53, - 16,216, 9, 61, 72,204,232, 56,122, 70, 16, 3,185,107,129, 37, 64, 5,241,179, 70, 99, 24, 49,127,165, 96,222,190,238,180, 44, -191,118, 46, 54,132,180, 70,163, 81,132, 40, 84,188,158,218, 14,161,138,192, 18, 88,142,131,214,138, 72,249, 41,127, 15,244,184, -251,113,188,253,197, 65, 93, 36, 50,154, 70,232,168, 37,102, 93,165,242,187,133,219,209,137, 10,234,148, 4,236, 56,189,200,158, - 59, 76, 35, 26,120, 29,171,182,137,104,227,171,236,183,223, 66,142, 61, 96, 39,238,185,231, 49, 34, 9,181, 80, 33,114, 14, 90, -218,137, 81, 16, 79,115,219,178,208,210, 70,233,152, 45,104,173,120,179, 97,109, 22,192,118,182, 99,128,202, 76,182, 45,125,101, - 23,223, 92, 46,151, 26, 8, 74, 41,242,249, 60, 65, 16,164,172,212,178,172,244, 90, 81, 20,189,229, 1, 61, 11,206, 66, 8,242, -249, 60, 97, 24,166, 95, 89, 80, 50, 6,210,150,152,238,255,165, 81,162,148, 74,223, 91,214, 80,105, 7,229,118, 5, 39,171,238, -100,159,221,128,117, 16, 4,127,242,194, 94, 42,149, 82, 99, 40, 59,158,182,244,101, 89, 86,122,159,165, 82,169,229,154,237, 32, -169,219, 13,110, 4, 8,141,237, 56,248,158,135, 0, 28, 57,162,111, 43,165,176,208, 88, 66,101,230, 18, 72,215, 69,171, 76, 97, -153,228,228,150,109,161,163,216,164,150, 86, 18,189,174, 34, 3,191, 96,187,180, 68,184, 43, 5, 58, 74,140,136,214,123,214,105, -168,189,206,220,173,133, 72, 87,145,216, 9, 32,115, 54, 58,242, 65, 7,160,226, 74,121,210,149, 72, 5,142, 99, 19, 69,127,221, -174,183, 44, 59, 31, 61, 48, 50,249,230, 90,129,140,176,164, 70, 74,141,210,154, 72,135,105, 31,105, 34,144, 2,173, 35, 34, 1, -110, 14,162,104, 92,122, 31,111,255, 91,160,174, 69, 26,206, 98, 38,173, 50, 51,216,206, 17, 53, 27,104, 21, 33, 52,108,222,224, -225,134, 27, 88,122,224,126,108, 90,253, 18,229,168, 78,125,221,107,204,152, 57,131,247,159,118, 34, 43, 30,255, 61, 27,251, 3, -148, 14, 9, 2, 63,161,231,241, 68, 15,181, 68, 41, 1,182,140,153, 4, 81,194, 16,244, 86, 45,172,102, 65,206, 50,182,173, 97, -234,134,129, 71, 81,212, 34,185,134, 97,152,254,191,249, 50,108, 46,203,202,222,202, 45, 43, 95,103, 65, 48,151,203,145,203,229, -240,125, 63, 53,114,204,179,106,173, 41, 22,139,233,223,255,175,153,146,185, 47,219,182,145, 82, 18, 69, 81,202,158,219, 23, 96, - 99,164,152,223, 45,203, 34,138, 34,194, 48, 68, 8,129,109,219,169,209,182, 53,239,214,128,179,185,143,236,231,140,177,244, 70, - 95,217,251,204,142, 95,243, 44, 74,169, 84,193,210, 45,128, 78, 10, 8, 81, 24,165,193,170,182, 37, 64,141, 68,174,152, 50,164, - 86, 6,108,165,144, 35,121,209,210, 78, 24,178,138,129, 56, 1, 86, 75,104,108, 5,157, 54, 88, 42,185, 78, 20,101,210, 90, 69, - 2,216, 42, 13,120,205,212,169, 75,190,139,196, 85,167,211,149, 35,214,252,226, 59,177,208, 16, 69,104,192,182,210,186, 53,232, - 80,163, 21,168,232,175, 63,150,166,125,140, 24, 5, 72, 36, 46, 16, 65,128,208, 1,130,216,248,137, 69, 15, 1, 66,140,244,134, - 86,177, 4,106,130, 40,116,156, 71, 16,141, 75,239,227,237,127, 7,212,227, 72,119,187,189, 2,148, 0,149,149,244, 16,184, 82, -147, 19,240,199, 85, 85,158,127,118, 5,135, 47, 93, 74,193, 82, 84, 6, 6, 80, 2,234,205, 26, 39,159,116, 2,229,124,192,239, - 31,126,141, 9, 29, 16,248, 70, 30,204,101,236,253, 8, 28, 11, 34,239, 79, 22,159, 12, 75,219,210,164, 27,139,165, 26,201, 57, -203,246, 10,133, 2, 97, 24,166, 50,108, 59,147,109, 7,193,183,106, 51,128,148, 53,138, 28,199,193,247,253,148, 53, 26, 23,133, -235,186, 41,208,252,181, 40, 21, 89, 64, 55, 96,108, 90, 46,151, 75, 1,188,157, 33,155,191,153,231, 50,159, 51, 32,171, 83, 63, -243,214, 25,148,134,117, 71, 81,148, 94,119,107,198,134,145,239,219, 85, 38, 51,246, 68,150,149,183,115,119, 1,210,146,104,165, -145, 2, 28, 91,160,194, 24, 50,243, 54,216, 10,242,201, 39,138,118,108, 39,107, 5,145,138,226,105,101, 59,160, 52,210,182,209, - 81,132,227, 72,116,152,196,162,107,200, 1,174, 50,187, 48,196,243, 60,210, 42,246,185,107, 53, 34,211,103,214,134,145, 50,210, - 50,117, 5, 88, 9,188,105, 36,134,247,139, 36, 14, 39, 7,228, 53, 20,162,248, 90,174,142,149,248,216,214,183, 19,133,225,173, -209,218, 93, 42,127,210,103,147, 56, 7, 92, 23,162, 16, 61,142,230,227,237,127, 13,212,147,201, 44,218, 42, 60,169,216,160, 68, - 56,110,172, 19, 73, 65,168, 20, 97,226, 38,123,105, 51, 60,240,224, 74,246,218, 99, 14, 51,103,109, 71,223,192, 0,181,202, 32, - 57, 66, 14, 88,184,128, 3,247,153,203,221,119, 60, 70, 61,132, 16, 69, 36,192,202, 23, 80,145, 15, 40,108, 2,116,180,117, 11, -106,150,221, 24,198,179,181, 19,203, 44,166, 74, 41,108,219,198,117,221, 22,224,206,250, 91, 23, 46, 92,200,206, 59,239,204,188, -121,243,240,125,159, 74,165,242,150, 7,245,177,250,209, 0,222,226,197,139,153, 59,119, 46, 59,238,184, 35,245,122,157,193,193, -193, 22, 67,224,175, 73,130, 55,239, 48,235, 50, 48,192,216, 62, 22, 92,215,197,182,109,180,214,216,182, 77, 16, 4, 8, 33,232, -232,232,192,247,125,164,148,116,119,119,211,104, 52,182,234,218,237, 62,213,236,189,188, 89,107, 87, 73, 76,208,103,170, 52,181, -100,129,180,202,238, 96, 64, 93, 97,219, 18, 21,234,145,220,146,132,173,231, 13,188,170,248,111,138, 56, 46, 45, 84, 25, 26, 40, - 37, 68, 1, 66,135, 72, 13,121, 43, 62,253,162,157, 38, 48,119, 66,196,220,105, 57, 80, 1,195,245, 24,237,133,101,161, 84,212, - 2,227,217,152,152,148,165,163, 82,117, 79, 9, 29, 27, 3, 66,164,235,137, 11, 20,128,157, 38,195,206,219, 20,153,214,109,163, -252,144,170, 23,111,227, 18,141,212,152,253,171,159, 59, 70,134,255,115,230,134, 72,203,236,217, 16, 69,177,122, 63, 14,238,227, -109, 12, 84,214,127,222,128,181, 16, 90,165, 49,240,233,162, 47, 70,138, 86,230,138,101,188,122, 51, 57, 30, 80,113,189,247,137, - 14,116,135,240,153,247,238,204,225,123,237, 74,153, 6,225,208, 38,166, 76,157,142, 59,113, 27,154,133, 41,124,232,139,223,226, -191,159, 26,102, 83, 68, 18, 85, 27, 7,203,148,146,115,251,188,177, 95, 41,151,203,225,121, 30,142,227,164, 96, 62, 99,198, 12, - 22, 44, 88,144, 46,234,111,212, 54,108,216,192,171,175,190,202,208,208, 80,202, 66, 13, 83, 50, 0, 97, 36,247,101,203,150,113, -236,177,199, 2,112,206, 57,231,240,141,111,124,227, 45, 63, 64,178,207,154,101, 25, 29, 29, 29, 44, 91,182,140, 35,143, 60, 18, -223,247, 57,239,188,243,248,254,247,191, 79,173, 86,107,145,179,255,154,140,154,246,251,113, 93,151, 32, 8, 88,180,104, 17, 7, - 30,120, 32,243,231,207,103,234,212,169,184,174, 75, 95, 95, 31,107,215,174,229,153,103,158,225,166,155,110, 98,227,198,141,233, - 88,106,239,139,173,109,229,114,153,195, 15, 63,156,122,189, 78,179,217,164, 80, 40,188,169,154, 33,132,160, 82,169,240,187,223, -253,110,212,117,227,251, 9,198,144,220, 71, 76,107, 33, 65, 71, 10, 87, 10,148,210,105, 58, 41,192,158, 59, 78,163,195,242,104, - 84, 6,113,138, 93,172, 90, 51,192,134, 90, 92,197,185, 17, 9,194,200, 74,100, 95, 1,145, 31,203,247,196,160,158,147,240,201, - 15, 30,205,241,251,238, 76,179, 62,204,181,183,220,195,181,247,188, 76, 21,240,128, 72,216,216,249, 2, 97,163,214, 82,199, 61, - 77,193, 18, 54,232,144, 92,114, 47,158, 76,164,126,105,197, 81,112, 81, 72,167,134,201,192,231,255,223, 17, 28,182,255,254, 12, -215,155,252,248,151,183,241,179,123,159,160, 2,248,150,131,138,254,250,119, 41, 51,160,110, 12,200, 63,199,224,213,218,198,205, -229,240,189, 38, 82,130, 82, 33,227,109,188,181,172,217,163,214,129,148,123, 39, 11,133, 48,245,215,117, 98, 89,143,228, 74,218, - 64,167,142, 90,114, 81, 83, 85,222, 88,229, 22,132,126,149,208, 1, 47,128,174, 78,135, 74, 5, 74, 57, 80,245, 56, 99,229,182, - 95, 63,195, 54, 69,201,146,249, 59, 96, 89, 54,149, 13,235,233,182, 92,242, 86,158,203,254,191,175,112,193, 37,215,240,211, 95, - 61, 74, 95, 51,108, 41, 58, 37, 90, 76, 19,147,165,219,250,221, 4, 37, 25,240,149, 82,242,145,143,124,132, 47,159,251, 37,164, -109,109, 21, 83, 82, 74,113,219,109,183,113,227,141, 55,114,213, 85, 87, 97, 89, 22, 97, 24,166, 19, 85, 74, 73,179,217, 76,149, - 0,223,247, 71,129,255, 91,181,101, 93, 9,150,101,165,253, 89,169, 84,112, 93, 23,173,117, 42,191, 27, 64, 55,224,247,215, 0, -232, 89, 32,118, 28, 39,253,121,201,146, 37, 28,125,244,209,124,240,131, 31,100,234,212,169,105,208,154,145,199, 13,163,182, 44, -139, 31,253,232, 71,252,224, 7, 63,224, 43, 95,249, 74,106, 32, 6, 65, 64, 62,159,167,217,108,110,149, 81,148,203,229, 88,178, -100, 9,215, 93,119, 93,250,121,147,254,247,102,237,174,187,238,226,200, 35,143, 76, 85, 33, 51,238,124, 63,204,200,216, 97,106, - 76,199, 63, 56,128,131,214, 35, 46,147,166,231,227, 75,112, 20,204,233,130, 11, 62,249, 65,122,243,113,160,156, 39,108,254,243, -166,219,249,201,175,158,160,234,199,217,211, 18, 29, 7,165,106, 5,216, 72, 59,132, 16,194,100,171,176,109, 38,247, 82,162, 70, - 57,167, 40, 90, 35,249,211,182, 1,155,160,145,108, 16, 58,178,166,164,219,168, 50, 70, 69, 52, 65,124, 98, 97,242,220,227, 86, - 84, 17,229,234, 70,240, 34,156,100, 59, 86,203, 6, 21, 5,163,236,152, 49, 55,148, 73,114,192, 91, 54,148, 74,162,248,205,253, - 69, 38,194, 64, 36,123, 75,168,214, 28,251, 40,251, 89,218,202,219,182, 83,164, 49,168,146, 72, 29, 12,127,190, 9,162,147, 61, -173, 99, 53,228, 47,113,198,241,246, 55, 6,234,173,165, 92, 69,203,228, 75,188, 90,182, 3, 97,136,208, 13,114, 40,122,172, 56, -203,228, 61, 7, 79,229,164, 3, 22, 49,115, 98, 47,145,144,212, 26,117, 10,121, 11,215,141, 32,170,199, 64,106,231,240,237, 60, -158, 40,163,237, 2, 57,183,136,173, 35,108,191,129, 77,147, 66, 94,209,168, 14, 97, 41, 73, 57, 95,192,154, 52, 45, 73,169,177, -241,155, 30, 50, 90,199, 5,103,156,202,210,197,123,112,246, 87,175,100, 77, 37,158, 96,117,108, 34, 44, 52, 17,185, 98, 62, 86, - 2, 52, 20,138,101, 26,245, 42,144,228,163, 43,133, 37, 44,124,207,195, 18,241, 98,216,108,212,144, 86, 44,255,133,161, 74,193, -120,172,133,214,128,243, 49,199, 28,195,241,199, 31,207,251,223,255,126, 78, 62,249,228, 22, 9, 63, 43,235,154, 5,180, 61, 48, - 47, 27, 45, 45,132, 32,151,203,209,108, 54, 91,148,132, 32, 8, 82,169,184,157, 37,143, 5, 82,230,122, 82,202, 81,202,129, 1, - 91, 19,152,213, 46,227,154,123, 55,192,100, 82,190,124,223, 79,217,160,137,106, 55, 96,151,149,146,205,223,219,131,185, 76, 32, -218, 88,242,119,251, 51,153, 32,188,172, 11, 35,123,124, 22, 16,205, 51,155,251,205, 50, 86, 3,114,217,251, 53,159,245, 60, 47, -253,188,231,121,105,240,227,157,119,222, 73,185, 92,110,121,207, 66,136,150,247,111,250, 55,138, 34, 62,249,201, 79,114,204, 49, -199,112,226,137, 39,178,114,229, 74, 92,215, 77,239,233,141,153, 85,124,143,230,218, 70,214, 31,107,156,101,175,217,238, 14, 48, - 6,169, 57, 54,126,102, 13,216, 8, 34,220,100,222,250,105,216,137, 27,131,148,142,203, 47,215, 61, 31,105,187, 68, 90,227,138, -128,163,118,233, 97, 94,248, 18, 93,158, 29,247,141,235,242,193,195,247,228,167,183, 62, 17,143, 87,226, 90,110,158,150, 96,185, - 16, 73,130,208,195, 38, 24, 41,126, 82,171, 83, 14, 45, 44,169,169, 14, 15,142,128,159, 2, 23,176,195, 48,173, 40, 25,136,216, -192, 79,237,237, 92, 44,179,105,131,203,150,157, 68,204,251, 9, 70,117, 16, 18,208,164, 73,111,177, 72, 79,117, 29,157,174,131, -227,106, 34, 1,205,182, 2,240, 70, 9, 48,105,181,161, 16, 4, 42,134, 81, 75, 72, 36, 97,236,250,179, 28,148,116,147, 69,174, -137,163, 99, 23, 64, 21, 55,150, 40,172, 0, 68,136, 8, 21,182, 74, 2, 8, 5,212,180, 76,130,130, 93,192,195, 73, 84,144,209, -121,226,173,101, 93, 5, 2,180,166,100, 89, 28,186, 99, 55,135,204,233,102,193, 54, 29,204,155, 84,164,183, 96, 19, 42, 77, 95, - 61,224,137,117, 53,238,124,190,159,171, 87,108,160,226,189,145,122, 35, 9,194, 96, 36,119,120, 28,207,199,219, 40, 80, 23, 35, - 21,224,172, 12,168,167, 46,181,114, 25,234, 77, 16,130, 66,190,136,108, 12, 19, 69,240,241,183,239,204,251,150,238,195,116,127, - 3,114,232,121,148,147,103, 74,161, 72, 24,122, 68,181, 42,229,130,132,142, 18,212,251,240,101,142, 40,215,141, 31, 88, 52,135, - 66,242,182, 69,167, 3, 42,244,208,145,196,182,108,172,124, 25, 37,108,106,126,132, 86, 2, 39,111, 99,187, 18,155, 6,245,141, - 47,113,208,238,219,113,211,143,191,194, 71,206, 58,159,149,175,130, 69,152,250,233,189,122, 61,206,233, 12, 20,141,122, 29,153, -200,114, 74,141, 86, 32, 36, 36, 59,199,197,171,139,109,219,220,120,227,141,148, 74,165,150, 52,183, 32, 8,144, 82,114,228,145, - 71, 82,171,213, 40,149, 74, 40,165, 56,244,208, 67,185,237,182,219, 56,252,240,195,169, 86,171,111,218,193, 70,246, 55, 6,131, - 73,129,107, 54,155, 72, 41, 83, 96, 48, 96,148, 13,168,202,178,100, 3,204, 89,214,153,141,226,238,234,234, 98,104,104, 40, 5, -203, 32, 8, 82, 86,221,217,217,201,240,240,112, 11, 96, 22,139, 69,124,223, 79,239,195, 28,107, 98, 6,140, 63,217,128,241, 88, -192,154, 85, 42, 12,187,205,102, 21,100, 13, 25,243,153, 48, 12, 83,163,167, 93, 69, 49,199,155,107,154,236, 2,207,243,210, 62, - 48,204,184, 80, 40, 16, 4,193, 40,163, 39,155,153, 96,158, 55,219,103, 65, 16,224,121, 30,229,114,153,102,179,137,101, 89, 60, -250,232,163,220,125,247,221,220,115,207, 61, 60,244,208, 67,120,158,199,180,105,211,216,103,159,125, 56,227,140, 51, 88,186,116, - 41,190,239, 51,107,214, 44,110,190,249,102,230,205,155,151,126,246,205,228,115,147, 5, 97,198,149,121,254, 48, 12,185,242,202, - 43,121,230,153,103,210,194, 52,217, 32, 67, 3,226, 74, 41,214,173, 91, 55,234, 92,113,191,219, 40, 37, 91, 29, 80, 98,180,244, -139, 86,216,150, 75, 16,134,224,218, 56, 17, 28,182,231, 44,166, 57,117,234, 67, 30, 61,157, 29, 12, 55,250,153, 80,236, 97,175, -185,176,226, 85,240,252, 86,126, 27, 43,118,178,165, 28,172,173, 67,116,109,136, 66,185, 72,222, 45, 16, 48, 16,215,144,176, 37, - 34, 84,132,201,167,243, 37,151, 70,205,143,111,211,182, 98,170,233,197,107, 78,148,146,105,145,174, 67,174, 13,126,232, 16,234, -216,165,215,168, 14, 34, 27, 18,173,242, 52, 26, 53, 26, 58,182, 89,132, 99,161, 27, 81,122, 67,165,188,139, 8,124,154, 1, 40, -173,113,108,151, 48, 84, 40, 29, 7,247, 89, 64, 24, 5,241,212,183,115, 41,211, 78, 70, 74, 18,233,175, 64, 7, 88,122,164, 16, - 78,164, 65, 90, 10, 37,108,136, 36,104,135, 64,132, 56,210,176,102, 70,247,127,162, 30, 10, 9,215,189,111,103,142,221,121, 2, - 5,103,180, 50,232, 2, 69,215, 98, 70,119,158,227,118,158,192, 5, 71,204,226, 31,111,121,145,171, 87,108,216,130,191, 52, 81, - 8,244, 22,182,205, 29,111,227,160,142, 21,111,188,162,162,216, 98,181, 51, 99,196,215, 26,106,149,120,210,217,130,122,179, 74, - 17,200, 75,216,105,231, 5, 8,165, 9,106, 27,177,106, 27, 33,223,139, 23,249,212, 27, 62,142,101, 83, 15, 97,232,181,213, 76, -152,216, 67,181,214,135,211, 17,210,217,219, 67,209, 17, 32, 3,132,235, 96,229,243, 84,125, 31,109,217, 88,194,138, 23,142,124, - 46,102,123, 66, 17, 42,159, 82,119,137,230,240, 16,149,234, 58, 38,246, 76,225,151,215,124,151,115,191,118, 17,255,117,251, 42, -234, 42,160, 80,128,106, 3,194,192, 27, 89,240,162, 24,176,165,144, 40,173, 70,188, 7, 9,148, 43, 65,154,127,219,104, 52,248, -192, 7, 62,208, 2,208,237, 81,236,167,158,122, 42, 23, 92,112, 1, 51,103,206, 68, 41,197,226,197,139, 57,235,172,179,248,234, - 87,191,250,166, 29, 28, 4, 1,165, 82,137, 90,173, 70, 16, 4, 20,139, 69,130, 32,192,117,221, 84,174,182, 44, 43, 5,171,118, -182,106, 24,105,187,156,223, 30,108, 53, 52, 52,148,130, 86, 54,135,222,117, 93,134,135,135, 41,149, 74,120,158,135,239,251,184, -174, 75,189, 94, 31, 37, 17, 27, 64, 49, 62,192,108, 78,116,150,149,102,239, 53, 11, 50,217,123,142,229,225,248, 90,190,239,183, -164, 3, 26,163,201,244,181,249,217,220,175,239,251,169, 17, 97, 64,211, 48,119,211, 15,230,254,179,126,242,246,170,129,217,130, - 57,134,229,186,174, 75,161, 80,160, 90,173,242,203, 95,254,146, 31,252,224, 7, 60,253,244,211,233,249,242,249, 60, 66, 8,214, -173, 91,199,109,183,221,198,205, 55,223,204,213, 87, 95,205, 7, 62,240, 1, 0,102,206,156,201,167, 62,245, 41, 46,190,248,226, -150,248,129,173,241,229, 27, 99,198,244,249,117,215, 93,199,131, 15, 62,216,146, 14,153,101,227,230,126,165,148,233, 59,202,250, - 99,227,177, 18,166, 12, 57,106, 1,244,196, 96, 82, 65, 82,191, 37,140,165,102,223,103,222, 20, 88,184,243, 28,162,104,136, 90, -174,192,211, 47,188,202,156,109, 39,210,237, 58,156,124,232,219,120,252,210, 7, 18,192,211, 32,194, 88,211,215,177,230,110, 46, - 17,179,245,128,156,204, 99, 41,137, 37,115, 68, 9, 35, 87, 88,113,245, 55, 0,199,198,111,106,100,105, 34,170,209,128, 72, 97, - 91,177,116,238, 58,121, 60, 21, 37, 5,110, 64,216, 17, 57, 32, 12, 0, 93,163, 96, 9,116, 4,194, 14,176,186,122,177,132,139, -101, 57, 49,172,233, 2,218, 79, 52,255,192, 35,210,154,225,186, 79, 86,255,208, 97, 68,185, 80,160,214,168,196,134,160, 37,240, -148, 34,208, 30, 58,240,176, 93, 7, 79, 37,157,167, 69,236, 87, 80, 30, 66,133, 35, 1,124, 73, 15,199,254,107, 31,132,139, 40, - 79, 68,215, 7,240,117,144, 68, 16,188,113, 59,121,193,228,150,223, 7, 27, 33,143,172, 30,102, 93,197, 39, 84,154, 29, 39, 22, - 89, 60,179, 19,219, 18,116, 21,108,174,122,215, 78,108,219,149,227,107,247,190, 54,218,157,132, 70,162, 80, 58, 54,154,198,107, -191,143,183,209, 90, 78,146, 7,110, 2, 88, 76,216,201,200,254,229,126, 60,177,133, 74, 11, 64, 69, 22,252,247,239, 31,163,110, -119,208, 40, 78,166,222,177, 45,141,142,109,168,119,108, 67,173,107,123,134,202,219,209,232,158, 67,105,214,238, 12, 83,130, 66, - 39, 81, 20,208,172, 14, 98, 41, 31, 41, 20, 94,189,201, 64,213,195,119, 58,241,236,110,134, 84,142,141,158,197, 64,100, 51,172, - 93, 6, 66, 73,159, 23,177,122,195, 70,100, 33,135,147,179,104,214, 54, 83,239,127,149, 11,206,249, 24, 63,252,250,187,153,228, -130,106, 64,193,138,141, 17,161, 20, 57, 55, 94, 20,109,203, 70,109, 33,221, 37,155,207,107, 22,120,179,128, 26,208, 10,195, 48, - 45, 38,115,195, 13, 55,176,116,233,210, 22,137,248,237,111,127,251, 86, 5,188,228,114, 57,106,181, 90,202,100,235,245, 58,150, -101, 81,171,213, 82, 9,214,124, 47, 20, 10, 45,121,210,237,160, 21,134, 33,133, 66, 97,148,244, 62, 86,121, 90, 3,164, 70,170, -246, 60, 47, 53, 8,124,223,167, 80, 40,164, 0,151,101,204, 6, 96,204, 53, 77, 5,181,124, 62,159, 94,211, 92,207,252,110, 12, - 9,147,170,149,101,175,230, 60,217,188,117,115,159,197, 98,145,102,179,153, 30,111,228,125,195,174,179,249,226,157,157,157, 45, -236, 59, 43,223, 91,150,149, 86,240, 51,215, 76, 83,190,146, 84, 67, 99,164,248,190, 79,173, 86,227, 29,239,120, 7, 31,254,240, -135, 89,177, 98, 5,141, 70, 35, 77,117,108, 54,155, 45,108, 95,107,205,105,167,157,198, 51,207, 60, 3, 64,181, 90,229,252,243, -207, 79,213,155, 55,107, 70,129, 49,207, 97, 89, 86,106,196, 24,151,192, 88,174, 28,211, 23, 70, 77, 49, 46,162,108,153, 94,173, - 35, 68, 50, 99,211,197, 93,155,170,110, 17, 22, 1,118,162,116,131,162,100, 9, 58,129,183,239,191, 39, 37, 91, 81,245, 61, 94, -236, 27,230, 39,191,122, 20,225,150,176,162,136, 3,118,154,199, 4, 32, 39,226, 8,243,152, 30,198,224,101, 17,166, 36, 84, 0, -182, 10,200, 89,177,107,139,164,108,140,237,216, 41,125, 21, 18, 44, 21,130, 10,176,130, 6,150,242, 40,171, 6,165,160, 65,175, - 10, 41,120, 85,138,186, 65, 89, 10, 92, 29, 33, 3,159, 48, 52,246,118, 64, 24, 53,227,167,115, 32, 82, 48,212,240,227, 74,120, - 38, 24, 40, 12,112,163, 26, 69, 17, 80, 38,164, 12, 49,233, 72,201, 73, 72,165, 81, 3,153, 35,192,162,158, 36,118,119, 58,208, - 5,184,126,128, 29,129, 43,161, 72,149, 14,134,232, 81, 1, 19,128, 78, 70,246,114,239,236,176,227, 56,130,132,104,235, 90, 29, -217, 53, 25,116,142, 55,220,160, 86, 36, 5,245,128,186, 31,113,213,195,235, 56,242,210, 71,153,112,254,131, 28,121,197, 31, 57, -237, 23,207,241,209, 95, 62,207,129,151, 60,206,142,223,122,152,251, 86, 13,166, 31,189,224,200, 89, 28, 56,171,107,172, 40,151, - 52, 70, 64,142,227,215,120, 27,147,169, 71, 35, 0, 23, 10,149,108,131, 74,186, 99,147,208, 26, 59, 20,136,192, 75,139, 85, 52, - 5, 92,251,155,231,121,232,143,207,179, 67,143,164,232,186, 84, 2,168, 7,154, 92,185, 11,219,145,120,149, 77, 80,139, 56,108, -209, 36,142,217,111, 1,243,166, 79, 37,108, 12, 17,161,241, 67, 69,128,139,236,152,204,186,134,166,119,230, 14, 76,158, 56, 29, -171,216, 1,185, 2,132, 33, 81,109, 16,161, 26, 12, 15,174,101,112, 96, 45,104,143,222,238, 46,242,104,188,234, 90, 14,222,115, - 59, 46,255,247, 15,241,137, 47, 92,205,186,106, 12,236, 94, 4,202,248,107, 29, 25, 79,196, 12,144,107, 49,178, 63,179,201,121, -247, 50,129, 78, 38,151,217,243,188, 84,122,118, 28,135,102,179,201, 43,175,188,194, 37,151, 92,194,153,103,158,137, 82,138, 69, -139, 22,109, 85,244,179, 97,184,198,207,107, 64,190,163,163,131, 74,165, 66,111,111, 47,187,238,186, 43,249,124, 30,223,247,121, -226,137, 39, 24, 24, 24,104, 97,168, 89, 54,219,206,228,180,214,120,158,151,250,213,141,124, 62,121,242,100, 22, 46, 92, 72,165, - 82, 97,227,198,141, 60,247,220,115, 41, 56, 71, 81, 52, 42, 29, 43,235,151, 55,242,240,188,121,243,152, 54,109, 26,249,124,158, - 21, 43, 86,176,121,243,230, 20,112,109,219, 78,153,170,227, 56,105,217,216,108,159, 20,139, 69,234,245, 56,182,162,209,104,160, -181,102,218,180,105,204,159, 63, 63,149,162,159,126,250,105, 54,109,218, 68,185, 92,166, 90,173,166, 18,115, 59, 83, 55,106, 67, -173, 86,107,233, 83,128, 57,115,230, 48,125,250,116, 6, 7, 7,217,176, 97, 3,107,215,174,109,113, 23, 24,101,193,168, 0,150, -101,113,239,189,247,110,177, 12,171,241,123,155,247, 31,134, 33,215, 95,127, 61,159,251,220,231, 40,149, 74, 8, 33, 88,176, 96, - 1, 43, 87,174,252,147, 38,155, 49,176, 76,235,234,234, 74, 1,220,184, 83,218, 51, 50,140,219, 98,172, 56,130,184, 60,171, 9, -216, 74,124,190,216,241,194, 47,130,212,165,150, 84, 78,199,137, 52, 83,128, 99,246,154, 79,212,232, 71, 20, 74, 92,251,223,119, -115,223,203,176,166,191,194,140, 94, 73, 47, 46, 39,238, 55,149, 43,151,175, 39, 82, 35,114,178, 1,114, 19, 42, 22, 75,211, 33, -182, 20, 68, 90, 32,172,152, 24, 40, 63,150,165, 93, 21, 7,228,105, 96, 90,175,195,230,254, 26,197, 4,116,231,244, 66,111,209, -198,178, 93,150,191, 82,167,166,234,212, 19,109,161,145,212, 51, 71,170,148, 60, 7,142,203,102,101, 33,156, 34,121,215,166, 12, - 20,130, 6, 46,113, 92,219,212, 18, 76,155,230,162, 20,172, 89,239,179,190,158,200,230,150, 96, 56,178, 80,185, 14,116, 24, 65, -216,196,214, 13,100, 16,223, 71,183, 3, 67, 1, 20, 5,204,152, 4, 93, 57,137,131,162, 25,193,154, 62, 88,227, 67, 13,232,175, -132,137,111, 50,169, 69,175, 5,170,127, 3,210, 74,140, 95, 49, 54, 95, 50,212,232,162,135,214,242,205,255, 94,205,250,161, 70, - 92, 63,110, 12, 50,240,202, 64,147,163,175, 92,201, 3,255,176, 39,123,109,219, 1,192, 87, 14,223,142,195,126, 52, 50,198,180, -208, 4, 73, 74,176,146, 73,213,206,113,154, 62,222,218, 65,125,100,183, 31,153, 6,119,100, 35,230,164,214, 20, 92, 11, 21,106, - 66,165,227,252,208, 32,142, 41, 89,221,132, 23, 86, 41,138, 78,147, 48,132, 80, 3,108,140,211, 94,128, 93,166,194, 62,251,238, - 71, 79,143,131, 87,171, 34,194, 0,145,207, 81,243, 5, 3, 81,158, 92,215, 4,118, 58,246, 88,232,153, 14, 86, 62, 30,160, 50, -182,244, 45,175, 10,110, 68,247,240,122, 74,235, 94, 98,245, 11, 79, 16, 40,135,218,224, 38, 38,118,119, 99, 9,159,253, 23,204, -225,188,179,223,199,185,223,184,134,161, 70,188,120, 5,201, 28,107, 38,236, 97,108,166, 62,178,121, 99, 46,159,167, 80, 40,208, -104, 52,168,215,235, 45, 1, 76, 89,153, 88, 74, 73, 95, 95,223, 22,131,193,222,200,167,158,245, 19, 71, 81, 68,185, 92,230,236, -179,207,102,233,210,165,236,183,223,126, 41,219, 53,215,126,249,229,151,185,242,202, 43,249,209,143,126,196,198,141, 27,105, 54, -155,233,121,106,181, 26,133, 66,129,115,207, 61,151,253,246,219,143, 70,163,193,221,119,223,205,119,190,243, 29,182,221,118, 91, -222,253,238,119,115,250,233,167,179,203, 46,187,180,184, 0, 94,127,253,117,254,227, 63,254,131,239,125,239,123,105, 89, 91, 3, -182,198,239, 62, 52, 52, 68, 20, 69,156,126,250,233,156,121,230,153,204,157, 59, 55,101,206, 0,207, 62,251, 44,151, 93,118, 25, -215, 92,115, 77, 10,196,198,167,158,141, 1, 48,128,106, 84,137,206,206, 78, 62,244,161, 15,241,241,143,127,156,153, 51,103, 82, - 44, 22, 91, 2,190, 30,123,236, 49,174,185,230, 26,126,246,179,159,165,254, 99, 3,190, 81, 20,241,173,111,125,139,253,246,219, - 15,223,247,185,238,186,235,184,242,202, 43,201,229,114,156,123,238,185,124,254,243,159,167,209,104,164,231,252,245,175,127,205, -177,199, 30,139,231,121,105, 89,213,172, 18,145, 13, 90,107, 47,111,107,228,250,172,159,222,176,232,223,254,246,183,124,241,139, - 95, 76, 93, 11, 83,166, 76, 73,141,132, 55,106, 6,160, 77,156,131, 25, 19,198, 21, 98,206,151,141,162,207, 6, 59,102,207,111, -130, 43,179, 57,239,169,253,109, 50, 64,116, 82,159, 93, 4,105,241, 39,157,128,169, 3, 44,153,237, 50,179,163,128, 8, 5, 3, -145,205,221,143,122, 12, 3,119,252,254, 9, 62,113,226,177,228,134,107,188,243,224,183,113,249, 67,203,176, 37,105, 93, 9, 82, -131, 56, 83,230, 70,107,106,245, 10,194,206,199,229,222,129, 9, 14,156,124,226,225,236,186,109, 55, 5, 2,158,123,234, 69,174, -191,227, 73,118,116,225,148,227,247,231,109,123,236,196,180,238, 18, 34,136, 99, 50, 74,221,147,185,253,129,229,252,215,189, 15, -242,251,151,171,120, 97,108,133, 8,219, 34,244,163, 88, 61,116,242, 80,232,166,232, 22, 81,213, 65,186,128, 41, 54, 44,217,103, - 6,199, 28,117, 0,147,122, 75, 20,243, 57,194, 80,225,107,139,213, 27, 7,185,241,142,251,185,225,161,215,240, 9,104, 54, 42, - 96, 21,192,113,201,135, 13,166,230, 97,241,108, 88, 52,127, 22,187, 45,216,131,174,142,110, 74,110, 25, 25,120,228,168, 99, 57, - 54, 67, 65,129,245, 53,197,127,222,114, 47, 15,172,124,129,215, 43,208,140, 34,132, 19,144,207, 59, 52,171, 53,164,138,213,140, -209,251,160,183, 2,251,153, 55,173, 2, 61, 82,215,222,210,154,104, 12, 96,247, 66,205, 87,238,124,133, 95,157,190, 27, 0, 7, -206,234,166,236, 90, 84,253, 68,135, 17, 25, 23, 75, 82, 93,118, 92,127, 31,111,163, 64, 61,202,142, 8, 45, 71,226, 98, 18,216, -115,243, 46,149,102,188,176, 56, 57, 73, 62, 87,100,120,184, 10,161,128, 32,222,176,165, 25, 40, 92, 2,186, 45,176,162,120, 1, - 57,121,191,153,156,249,193,147,232,240, 55, 83,106, 14, 32,162, 6,181,102,147, 87,215, 87, 9,122,102,178,195, 1, 71,145,223, -235, 48, 34,191,128,204, 79, 32, 84,177,176,100,153, 82,211, 82,145,179, 2,152, 48, 17, 39, 55,153,217, 83,103,243,226, 3,119, - 48,185, 99, 58,213,161,205, 76, 40,231,169,215,251,120,239,137,199,242,220, 75,171,185,248, 39,247,167,213,170,194, 24,145, 17, -142,131, 14,194, 45, 71,167, 2,245,122,179,197,223,107, 22,116, 19,208,100,130,217,148, 82,169, 92,252,167,212,255, 14,130, 32, - 53, 26, 28,199, 97,255,253,247,231,166,155,110, 34,138, 34,122,122,122, 82,153,223, 84,105,115, 93,151, 89,179,102,241,207,255, -252,207,156,118,218,105,124,240,131, 31,228,161,135, 30,106,241, 95,135, 97,200,194,133, 11, 57,228,144, 9,101, 17,251, 0, 0, - 32, 0, 73, 68, 65, 84, 67,208, 90,179,124,249,114,118,219,109, 55,126,244,163, 31,177,120,241,226, 22,101,192,176,205,105,211, -166,241,221,239,126,151, 57,115,230,240,153,207,124,166, 37, 64,175, 84, 42,209,223,223,207,212,169, 83,249,222,247,190,199,201, - 39,159,220, 18,232,213,104, 52, 40, 20, 10,204,158, 61,155,127,255,247,127,231,132, 19, 78,224,136, 35,142, 72,129,209, 60,167, - 1, 30, 3, 56,229,114,153, 37, 75,150,112,205, 53,215, 48,105,210, 36, 6, 7, 7, 83,240, 53, 6,148, 82,138, 61,247,220,147, -221,118,219,141,243,206, 59,143,253,247,223,159, 39,159,124,178,197, 63,191,251,238,187,179,112,225, 66,164,148,220,115,207, 61, -236,176,195, 14,252,238,119,191,163,171,171,171,197, 16, 51, 62,121,195,122,107,181, 90,106,144,152,247,104,216,110, 71, 71, 7, -195,195,195,163,210,238,204, 61,101,125,241,198, 37,145,117,121,100,141,133, 55,106, 89, 63,185,185, 23,243,179, 9,154, 52,198, - 69,251, 38, 47,237, 5,115,198,250, 89,183,248,148, 50,105, 98,118, 60,157,163,136, 52, 72,172, 0, 28,191,223, 66,236,230, 48, - 42, 95,226,254,199,158,102,125, 24,127,234,246,229,155, 56,249,168,136, 41, 82, 50,103, 74, 23,115, 38, 64,125, 0,106, 58,142, - 13, 67,196, 1, 99, 89,155, 95, 0,133, 82,142, 16,129,138, 60,220, 88, 53,103,193,196, 28, 75,103, 79,196, 13,107,172,190,247, - 89, 14,158, 8, 95,248,202,103,177,132,134, 70, 63,101,187,134,146, 17, 94,125,152,234,203,175,113,212,110, 83,217,115,238, 59, -249,201,157,247,115,233,189,175,160, 34,176,115, 22,158, 23,131,186,167, 36,117, 63,150,218,245,208, 58, 14,221, 30,142, 61,100, -111,246,221,107, 79,188,168, 74,193,105, 32,106, 27,105,212,170, 76, 40,119, 48,123, 70, 15,219, 31,191, 39,251,237, 56,133, 47, -253,248, 17,250,241,168, 32,192,143,235, 99, 28,127,208,108, 62,126,220, 98, 74,170, 78,211,139, 51,117, 8, 20, 54, 33, 69,134, -145,126, 64, 94, 91,244,228, 28,190,246,254,131,121,109,104, 9, 95,189,232, 39, 60,182, 22,134,131, 58,126, 80,103, 66, 1, 42, -141,204,122,211,238,223, 51,224,107, 59, 73,144, 0,216,142,131,142,212,200,110, 52, 99,180,223,190, 50, 52, 50, 70,164, 96, 70, -119,142,103, 54,214, 71, 44,134,108,238,158,102,124, 71,151,241, 54,134,252,222,178,111,185, 68,102, 64, 79,161,104, 52,125,114, - 5, 55,150,205,189, 0, 63,172,199,187, 10, 97,129,155, 56,187, 28,176, 27, 1, 50,130,217, 14,124,236,164,189, 57,122,201, 30, - 20,171,107,201,251, 3,248,149,205, 88,182, 34,144, 14, 29, 83,183, 99,218,129, 39,192,110, 7,227,235, 94,154,229, 34,253, 33, - 44, 95,241, 26,143,172,120,140,205,125,253, 56,182,197,188, 57, 51,217,127,209, 2,246,152, 61,129, 66, 71, 25,138,221,204,217, - 87,210,247,228, 67,148, 74,130,202,224,122,186, 38, 78,102,253,107, 47,240,201,211,223,199,157,119,222,207,139,235, 99,203, 89, - 2,218, 22,169, 20, 63,138, 61,137,145,121, 87, 44,142,108,202,146,101, 68, 6,200, 77,112,155, 82,138, 15,124,224, 3,228,243, -121, 60,207,227,142, 59,238,216,170, 13, 61,132, 16, 41, 27,126,247,187,223,205,213, 87, 95,157, 46,242,190,239,243,199, 63,254, -145,123,239,189,151,117,235,214,209,217,217,201,113,199, 29,199,194,133, 11, 41,151,203,148,203,101,110,189,245, 86,150, 46, 93, -202,163,143, 62,138,101, 89, 41,160, 24, 95,183,217, 36,228,214, 91,111,101,250,244,233, 0,252,242,151,191,100,249,242,229, 72, - 41,217,107,175,189, 56,229,148, 83, 82,224,251,244,167, 63,205,154, 53,107,248,246,183,191,157, 42, 8, 38,231,252,156,115,206, - 73,211,245, 12,131,189,249,230,155,121,228,145, 71,240, 60,143,247,189,239,125,236,182,219,110,188,237,109,111,227,246,219,111, -111,217,253,206,228,177, 27,255,186,235,186, 44, 93,186,148,235,175,191, 62, 5,212,174,174, 46, 86,174, 92,201, 45,183,220,146, -246,201,137, 39,158,200,162, 69,139,210, 84,179,135, 30,122,136,131, 15, 62,152, 71, 31,125, 52, 5, 96,219,182,211,231, 45,149, - 74, 60,252,240,195,169, 95,191,209,104,240,216, 99,143, 81,171,213,216,110,187,237, 82,247, 73, 54,253, 46, 27, 68,103,192,115, -120,120, 56, 5,240,108, 90,158,169, 30,151,221, 77, 45,159,207,115,216, 97,135,209,108, 54,211,251,120,244,209, 71, 83, 99,109, -107,128,221,184, 70,130, 32, 72,163,221,115,185, 28, 83,166, 76, 97,251,237,183,103,242,228,201, 12, 14, 14,242,194, 11, 47,176, -126,253,250, 22,240,143,162, 8,215,117, 83, 54,111,152,190,227, 56,113,122,147, 30, 49,194, 33, 66, 51, 34, 9,107, 41,208,241, -238, 74,108, 87,128,131, 22,206,199,242,135,168,217,157,220,249,200,115,212, 19, 92,120,161, 2, 43, 87,111,224,136, 25,147,200, -105,159,119, 28,186,136,167,151,173,136,165,123,157,241, 39,171, 44,118,197,241, 2,205, 48, 68,169,144,124,242,247, 73,118,200, -132,104, 16,217,172,176, 67,111,145, 83, 79, 60, 18,229,123,136, 66,129, 63, 60,253, 28,207, 61,255, 20,145,136, 56,112,241,190, -236, 51,103, 54,245,129, 62,102,116,247,240,254,163,247,163,223, 31,230, 23,191,237,103,184,230,227, 36,133,241,132, 6, 91, 7, -244, 20, 44,230, 76,237, 96,214, 65,243,217,107,209, 98,250, 6,135,249,237, 19,207,177,106,213,115,216, 94,149,189,231,207,101, -247, 93,119,198,174, 15, 51,217,241, 56,116,247, 25,124,232,224,215,184,234,190, 13,212,163, 38, 86,174, 68,228,133, 52, 2, 73, -232,148,104,120, 17,195,181, 6, 47,189,254, 42,207,172,222,192, 80,117,136, 46,171,198,140,137, 29,236, 58,119, 22,115,103,206, -162, 81,221,192,174, 19,167,112,206,251,143,229, 27,151,253,138, 71, 6,160,232,196,128,158,206,113,157,101,235, 42,169,153,145, - 90,197,105,217,220, 72,129, 82, 26, 75, 36,245,120,199, 96,235,237, 30, 61, 75,138, 86, 99,193,184, 68,148, 48,123, 80,143,183, -241, 54, 26,212, 77,253,104,201,200, 62,232, 42, 19,236,225, 53,125,144,144,239,238,161, 57, 84,141,171, 65,185, 5,240, 27, 96, - 53,177, 66, 29,203,237, 19,224,194,207, 28,195,142, 19, 10,200,225,231,200, 11,159,160, 58,136,101, 11, 66, 55, 71, 21,155,109, -247,216, 23,118,222, 3,109,247,176,145, 34,203, 95,108,114,229,117,183,240,210,203,175,146, 43,150,144,150,131, 68,177, 98,205, -147,220,248,192, 19, 28,180,231, 78,156,253,225, 35,233,177,166,192, 20,155, 9,131,131, 12,190,244, 4,174,221,129,223, 12, 40, -217, 57, 66,221,228,115,159, 57,157, 79,126,241,202,212, 36,209,166, 86,114,203,188,105,245,127,233,204,177, 38, 5,203,247,253, -148,137,103, 1,225, 23,191,248, 5,219,108,179, 13, 65, 16,144,203,229,248,225, 15,127,184,117, 29,156,248,103,167, 79,159,206, -247,191,255,253,148,129,173, 89,179,134,143,126,244,163,220,123,239,189, 45, 82,254,249,231,159,207,209, 71, 31,205,207,127,254, -115, 58, 58, 58, 40, 22,139,252,244,167, 63,101,254,252,249,169,162,208,238, 11,255,252,231, 63, 79, 16, 4, 44, 91,182,140, 51, -206, 56,131,161,161,161, 22,176,253,220,231, 62,199, 13, 55,220,192,158,123,238, 73, 20, 69,156,123,238,185, 92,114,201, 37,105, -154,155, 9, 6, 59,243,204, 51,211,223, 31,121,228, 17, 78, 61,245, 84, 86,175, 94,157, 26, 17,223,254,246,183, 57,234,168,163, -248,241,143,127,204,193, 7, 31,156,250,127,219,253,252, 0,179,103,207,230,242,203, 47, 79,127, 95,181,106, 21,231,156,115, 14, -183,220,114, 75, 11, 43,254,218,215,190,198,161,135, 30,202,178,101,203,232,237,237,197,178, 44, 46,190,248, 98,246,221,119,223, -212, 15,158,141,188, 63,235,172,179,112, 93,151,103,159,125,150,243,206, 59,143,101,203,150,181,108,147,106,128, 48,187, 3, 95, -246, 93,102,251, 58,171, 46,100,139, 9,101,175,105, 36,239,119,189,235, 93,105,108,195, 19, 79, 60,145, 6,176,109,173,251,197, -140,175,108,173,249,159,255,252,231,148,203,229, 52, 64,211,180,151, 94,122,137,235,174,187,142,203, 47,191,156, 87, 94,121, 37, -245,199,103,115,239,129,120, 91,206, 68,226,141,163,209, 21,224,225,155,152, 17, 9,126,104, 97, 39, 1,115, 7,238, 53,139,130, - 8,209,142,195,107,195,130,187,254, 24,196,234, 88,222, 98,168, 25,113,195,111, 30,225,232, 79,158, 74,189,127, 19, 7,239,185, - 11, 63, 92,182, 34,102,202, 9,243, 71,197, 88,226, 16,167,133, 70,161, 68, 8, 73,222,141, 3,198,162, 36, 40, 79,122, 85,220, - 40, 71,206, 86,156,112,194, 9,188, 90, 17, 60,179,166,159,239, 94,121, 45,175, 14,198,138,177,176,225,210,223,222,199, 65,219, -223,199,217,167,189,147, 57, 94,133,153, 69,193, 63,158,188,148,199, 31,249, 5,107, 20,244, 5,137,239, 62, 8,153,226, 70,232, -129,213,156,114,252, 33, 12, 89, 93,252,226,190,135,249,230,213, 15,177, 25,104, 38,129,109,229,135, 95, 96,146,124,129,175,125, -238,112,118,159, 86,162,100, 41, 78, 57,242, 64,110,126, 96, 25,235, 34,240, 67, 1,182,195, 90, 49,153,203,239,121,158,223,223, -243, 27,214,111,142, 63, 63,148,248,244,123,115,128,231,209,201,102,142, 94,184,146,143,189,243,104,114, 94,131,185, 19,203,124, -234,253,135,241,177,239,221, 67, 95, 0, 58, 39,169, 7,170,125, 73, 25,113, 97,166,185,127, 50, 1, 95,145, 84,191, 51,229,109, -101,178, 99,122,107,219,109, 90,169,197, 24,124,125,104,100,236,187, 73,105, 95,165, 37, 97, 96, 10,115,143, 39,170,143,183,182, -104, 14, 59, 13,126, 81,241,206, 63, 40, 34,204,206, 79,113, 36,173, 91, 40, 97,217,121,154,131, 67, 73, 2,123,136, 20, 1, 66, - 6,184,190,166, 43,128,195,119, 21,124,231,203,239, 97,146, 91,167,172,134,176,130,126, 26,195,155,176,115, 22,186,152,167, 34, -115,200,222, 25,176,211, 94,224, 78, 98, 64, 21, 88, 93,133,111, 94,254, 51,126,255,226, 90,134,115,221, 84, 11,189,212, 10,189, - 4, 61,211, 8,122,182,165, 94,154,204, 61,143,175,226,171, 63,188,137, 10,146,168,105,195, 54,115, 8,237, 2,110,177,140, 45, - 36, 34,170,147,211, 13,118,219,113,123,230,206, 72, 9, 69,188,117,100,251, 30,217,140, 45, 85,157,115,206, 57,156,117,214, 89, -124,250,211,159,230,179,159,253, 44, 95,252,226, 23, 57,251,236,179, 57,235,172,179,184,235,174,187,168,215,235, 28,124,240,193, -248,190,143,227, 56,156,126,250,233,220,113,199, 29,163, 0,118, 75,242,123, 24,134, 92,113,197, 21,116,117,117,161,148, 98, 96, - 96,128, 61,247,220,147,187,238,186,107, 84,228,119, 46,151,227,246,219,111,231,200, 35,143,164, 82,169,144,203,229,216,101,151, - 93,248,200, 71, 62,146, 50,117, 19,212,102,216,101, 24,134, 44, 95,190,156,143,126,244,163, 12, 14, 14,182,176,248, 48, 12, 89, -189,122, 53,231,157,119, 30,149, 74, 37,149,219, 15, 57,228,144, 22, 38,251,229, 47,127,153,102,179, 73, 16, 4,108,216,176,129, - 19, 78, 56,129, 87, 94,121, 37, 85, 42, 12,144,220,117,215, 93,188,235, 93,239,162, 94,175,167,140, 51,187,185,137, 41,153,251, -173,111,125,139,158,158, 30,132, 16, 12, 13, 13,177,223,126,251,241,235, 95,255, 58,237,151,238,238,238,148,181,222,119,223,125, - 28,115,204, 49,172, 95,191, 30,199,113,216,103,159,125,248,204,103, 62,147, 6,223, 25,208, 53,108,247,153,103,158, 97,233,210, -165, 44, 91,182,172,101, 1,204,110,182,178,181,205, 48,123, 83,135,192,188, 51, 83,152,198,243, 60,190,250,213,175, 50,123,246, -236, 20,164,191,247,189,239,165,121,250, 91,243,254,205,253, 85, 42,149,150,157,217,122,123,123, 83, 64, 31, 30, 30, 78,211,218, -182,217,102, 27,206, 57,231, 28, 86,173, 90,197,217,103,159,221, 18,188,152,117,121,104,147,228, 45, 70, 2,226,226,141,149,194, - 76, 56,155, 77, 87,161, 72, 55,112,204, 33,139,241, 26, 67, 84,253,144, 59, 30,122,140,122,226,146, 13, 66,168, 0,127, 88, 53, -192,154,161, 10,190,142,216,126, 98, 39,135,239,222, 29, 3,184,144, 73, 81,248,228,153,116,172,136,217,118, 9,161,108,208, 46, - 26, 39, 3, 47,241,238, 99, 90, 4, 12,250, 30, 21,219,230, 43, 63,184,150,149,131,208, 15, 12, 72, 88, 29, 65,159,132, 7, 94, -133, 11, 46,253, 47, 26, 88,212,134, 7,216,182, 36,249,224,113,219, 19, 5,201,134, 49,128, 21, 69,224, 55,226, 98, 56,145,226, -254, 21, 79,242,237,255,124,136,117, 64, 31, 37,106,118, 55,235,177, 89, 11,172,145,112,229, 77,191,161,234, 69, 72,191,193,164, - 66,200,254,187,216,116, 91, 49,107,246,149,228,191,238,122,136,139,174,251, 13, 43, 55,199,207, 93, 5,134,237,110,154,178,155, -181, 94,129,205,192, 90,224,134, 71, 61,190,121,197,141,244,123, 80,200,219,204,153, 57,153,109,187,226,117, 36,212,238,155, 71, -191,143, 90,111,222,124,188,156,182,104,106,250,243,163,107,170, 12, 54, 70,212,198, 64, 8, 60, 33, 8,132, 78,107,138,140,183, -241, 54,154, 72,182,196, 91,168,145,210, 76, 72, 80,177, 37, 30,212, 61,242,150, 69,160, 20,142,173,241, 67,141,106, 4, 20, 53, -204, 0, 62,112,228,108, 78, 57,250,109, 76,206,133, 16, 56, 12,245,109,162,163, 84,196, 42,119,224,133,138,193,166, 36, 40, 79, -166,119,187, 69,208, 49, 11,244, 4,124, 95,114,245, 85,183,241,196,170,213,120,197, 78, 10, 26,214, 15, 14,160, 53,116,118,118, - 83,202, 23,232, 46,118,226,228, 92, 30,124,122, 21,143,188,208,199, 65,115, 39, 64, 80,167,115,226, 68, 54, 62,255, 18,211,123, -138, 56, 42, 68,133,117,182,223,102, 26, 11,118,153,195,147,171, 95, 28, 25,236,105,100,143,106,153, 0,178,205,186,253,183,127, -251,183, 22, 6,149, 45,199,105, 10,158,116,116,116,112,245,213, 87,115,197, 21, 87,240,192, 3, 15,164,210,237,214,128,198,190, -251,238,219, 34,223,254,235,191,254, 43,253,253,253, 41,168,230,114,185,116, 65, 55, 69,111,150, 47, 95,206, 85, 87, 93,197, 25, -103,156,129,235,186,156,116,210, 73, 92,113,197, 21, 41, 91, 55,199,153, 0,187, 83, 79, 61, 53,205,181, 54,146,112,182,200,203, -173,183,222,202,171,175,190,202,252,249,243, 9,130,128, 37, 75,150,112,227,141, 55,226, 56, 14,239,126,247,187,217,118,219,109, -211,103,255,210,151,190,148, 6,172, 25,255,119,214,191,124,255,253,247,115,195, 13, 55,240,206,119,190,147, 66,161,144,246,149, - 97,146,115,231,206,229,184,227,142, 75, 13,150,207,125,238,115,105, 97, 28,211,167,102,243, 23,227,251, 95,190,124, 57, 63,251, -217,207, 56,235,172,179, 24, 30, 30,102,233,210,165, 92,116,209, 69, 88,150, 69, 46,151,107,201,209,191,232,162,139, 88,179,102, - 77, 11,160,103,107,106,255, 41,160,110, 2,216,178,145,252, 81, 20,165,105,142, 75,150, 44,225,203, 95,254, 50,141, 70, 3,223, -247,121,237,181,215,248,201, 79,126,210,146,145,176,181,108,189, 92, 46,167,110,131,135, 31,126,152,167,158,122,138, 39,159,124, - 50, 45, 60,115,232,161,135,178,199, 30,123, 48,105,210,164,180,111, 46,188,240, 66,118,218,105, 39, 78, 63,253,244, 84, 73, 48, -197,132,114,249,124, 92,251, 93,203,180,190,250,136,241,106, 96, 30,106,141, 26,243,138,176,221,148, 14, 68,189,137, 91,234,229, - 55,143,254, 10, 63, 81,213,163, 48, 66,184,130, 53, 21,205,239,158,126,142,195,118,157, 13,141, 33,142,218,119, 1,191,122,226, -126, 10, 66, 83, 83,128, 30,217, 62, 38,206,139, 79, 42,172,105,139, 72,151, 98,160, 7,124, 75,226,217,177,175,185,105,229,184, -242,167, 55,241,154, 23, 71,146,171,100, 87, 86, 45,109,154, 82,176,206, 15,248,221, 58,184,241,254, 71,121,239,210,189,169,215, -134, 57,242,109,251,115,241,245,175,208,151,172, 77,121, 39,143, 66, 19, 72, 7,191, 56,137,203,111,190,149,213, 17, 84,132,136, - 61,218,150,139, 14, 45,234, 40,250,148,226,191,159,245,121,125,211, 0, 19,166,231,152,232, 70,116, 4, 33,249, 8,138,118, 64, - 35, 84, 72,203,193,139, 34, 66, 20,205,228, 89,136, 66,144, 57, 4, 22,146, 46,116,206,102,163,215,199, 93, 47,195, 59,214, 87, - 89,178,125, 55,229, 82,142,221,247,216,150,103, 31,120,157,170,175, 16, 78, 9, 29, 84,226,117,115, 20,136,103, 10,195,108,229, -112,220,109,106,137,211,247, 30, 1,245, 31,254,110,237, 22,143, 13,133,122,203,111,235, 60,222,254,151,152,122, 90,123, 33,203, -100, 51, 3, 81, 39,192, 21, 69, 65,108,247,135,154,169,249,120,163,133,157, 74,112,209, 89,135,242,129,131, 23, 48, 81, 13, 83, - 93,255, 10, 97,109,152, 82,177, 8, 72, 42,213, 58, 74,228, 8,172, 60,190,211, 77,121,230, 78, 64,137,208,178, 89, 63, 12, 55, -222,249, 27,172, 66, 23, 50, 95,166,161, 65, 89, 54,218,205, 51, 52, 60,204,218, 53,235,120,105,221, 70, 42,161, 70,148,186,184, -253,190, 7,227,188, 89, 41,113,167, 78,161,238,213,193,142,200,217, 26, 17,214,209, 97,131, 93,119,153,151, 0, 71,242, 79,155, - 41, 43,245,232,186,241, 74,209,178, 56,103, 25,112,118,219, 81,227,255, 93,188,120, 49,147, 39, 79,110,137,104,127, 51,127,234, - 1, 7, 28,144,202,238,149, 74,133,239,126,247,187,105,106,148, 97,131,198,143,109,138,148, 72, 41,185,254,250,235, 83, 38,183, -100,201, 18,138,197, 98, 75, 52,186, 1,201, 21, 43, 86,240,250,235,175,167, 57,236, 89,223,123,118,226,255,225, 15,127, 72,203, -174,238,188,243,206, 41,227,223,119,223,125, 83,137, 56,138, 34,126,242,147,159,164,231, 50,215,111, 87, 37,174,184,226, 10, 10, -133, 66,139,159,218, 48,215,163,142, 58,170,133,157, 94,118,217,101,163,238,217, 40, 6,217,173,112,141,114,209,217,217,201,225, -135, 31,158,166,223, 25, 3,192,182,109, 94,120,225, 5, 46,185,228,146,244,254,218,251,250, 79, 93,232,178, 37,107,133, 16, 45, -125,182,203, 46,187,112,253,245,215, 19, 69, 81,250,172, 70, 49,217, 26,233,221, 60,171, 25, 95,107,214,172,225,204, 51,207,100, -198,140, 25,236,187,239,190,252,211, 63,253, 19,223,255,254,247,249,230, 55,191,201,133, 23, 94,200, 17, 71, 28,193,212,169, 83, - 57,255,252,243,121,233,165,151, 82, 21,228,195, 31,254, 48,167,156,114, 10, 74, 41, 74,165, 82,106,100,121,205,102,226,191, 29, -113,153,169, 54,255,171,235,196,108,247,253, 39,238,141, 21,212,208,150,228,209, 23,158,231,233,213,117, 4, 35, 85,211, 68,194, -190,111,184,251, 97,236,174, 46,162,102,133, 37,187,239,196,172, 14,144,145,142,209,216,211,105, 90,155, 0,252, 48,113,215,105, -139,184, 42,123,124,142, 80, 88,168,164, 84,107, 67, 43,126,245,251,205,148,186, 93, 34,105,199,113, 93,137,129, 64, 4,161,109, -209, 0,238,248,253,139, 12, 69, 14,210,202, 65, 20,178,100,143,237,226,113, 7,132, 74, 33,236, 2,161, 83,102,229,107,125, 60, -189, 57,182, 37,132,180,177, 69, 8,222, 64,172, 14, 56, 69,170, 42, 71, 13,120,230,149, 53, 8,233, 16, 5, 62,199, 31,187,127, -188,156,133, 33, 54, 10,162,128,188,109, 97, 19,167,194,118,218,144,211, 85,122,116, 31, 83,168,210,195, 16,121,175,159, 92,242, -156,143, 62,246, 48,205,198, 16,131,125,235,217,102,106, 79,178,195,157,194, 21,214, 86,176,116,149,137, 46, 84,109,255, 61,178, - 64, 21, 28,201, 79,223,179, 83,234, 67,127, 98,109,149,171, 87,172,127, 83,194, 48,222,198,219, 40,162,226, 91, 54,104,133, 72, - 54, 48,176, 18, 64,143, 72,114,214, 45, 27,108,129,239,135,148,128,178,134, 92, 19, 22, 78,128,175,159,253, 14,166,187, 67,116, - 58,155,169,213, 61, 44,221,164,163,220, 21,111,195,234,251,116, 20,138, 4,104,186,187,187,121,197, 15,160,187, 7,138,157,108, - 4,158, 30,172,227,151,203, 4, 50, 9,211,245, 67,172, 66, 30,183,144,167, 17, 42, 8, 26, 52,241,120,233,181, 97,230,245, 22, -240, 67,149, 84,146, 82, 80,204,211,213, 81,164, 81, 25,164, 80,204,145,147, 22, 3,149, 65,230,239, 52, 15,139, 95,197, 5, 31, -218,230,155, 76,144, 92,106,146, 93,229,146, 66,177, 18,254,229,130, 11,210, 2, 36,166,152,137,235,186, 52, 26, 13,118,216, 97, - 7,142, 57,230,152, 52, 21,235,235, 95,255, 58, 39,159,124, 50,111,127,251,219,233,235,235,219,170, 13, 91,142, 63,254,248, 52, -160,237,182,219,110, 75,101,217,108,213, 48,179, 9, 76,182,116,236,227,143, 63,158,166, 53,117,119,119, 51,111,222, 60,254,248, -199, 63,182,148, 11,181, 44,139,219,110,187,141, 9, 19, 38,164, 41,119, 38,183, 62, 11, 90,174,235,242,228,147, 79,166,192,107, -228,102, 41, 37, 59,236,176, 67,202, 80, 77,164,125,163,209, 72, 89,126,118,227, 18,115,221, 71, 30,121,164, 37,112, 44, 27, 13, -126,236,177,199, 82,175,215, 41, 22,139,105,148,250,208,208,208,168, 13, 73, 12, 59, 54,146,244,175,127,253,235, 20, 48,243,249, - 60,187,238,186, 43,143, 61,246, 88,202,110, 1, 30,121,228, 17,108,219,110,121, 95, 91, 2,242,173,217, 73,205, 40, 37, 89, 48, -119, 28,135, 82,169,196, 79,127,250, 83,166, 77,155,150,246,225,231, 63,255,249,244,250, 91,187, 89,143, 41,202, 19, 69, 17,143, - 61,246, 24, 47,190,248, 98,234, 31, 31, 24, 24,136, 23,244, 66, 1,207,243,210,235, 95,112,193, 5,220,120,227,141,172, 88,177, - 34,237,171,175,127,253,235, 44, 91,182,172, 69, 81,176, 44,135,102, 51,174,174, 62, 42, 8, 58,138, 11, 71,137, 40, 96,162, 5, - 7,238, 57,143,176,222, 71,113,226, 4,238,122,240,161,248,186, 86,108,212, 10, 29,107,234, 57, 96,229,107,176,122, 96,136,201, - 82, 97, 69, 85, 14, 93, 50,151,231,239,124, 1, 47,210,248,140, 84,156, 84,128,176, 21, 82,135, 40,105, 17,201,145,194, 85, 90, -200,212,169,247,252,139, 47, 99, 1,155, 6,125,164,101, 97, 37,184, 22, 69, 65, 26,193, 35,129, 39,214,130,239,246,226,245,247, -211, 53,113, 34,147, 39,245, 98,241, 42, 26, 8,162, 16,223,118, 9,117,129, 59,150, 47, 39,178,193,247,193, 21, 1,182, 54, 37, -178, 2,132,112, 81, 50, 71, 36, 60,214, 14, 54, 25, 86, 57,164,138,216, 80, 9,104, 0, 13,108,138, 34,222,148, 74,135, 1, 5, -192,141, 96,135, 73,208,219, 99, 49,123, 98, 15, 51, 45,240,106,117, 26,197, 78, 2, 25, 33, 85,133, 5, 83,109,102,116, 40,134, -154,138, 25, 19, 59,232,182,193, 11, 67,194,160, 49,106,203,105, 49,230, 24,139,223,144,214,180,250,192,245, 8,241,184,226,228, -121, 44,152, 22,187,124, 26, 65,196,123,127,254, 12,106,107,236,211,241, 50,177,227,173, 29,212, 17, 86,146,131, 58, 82,255,157, -148,185, 43,180,142,208, 65, 68, 57, 15,178, 17,167,171,189,251,128, 14, 62,114,220,161, 76,205,123,132, 3,107,241,109,192,238, - 64,184, 5, 26, 86, 1,191, 94,163,128,133, 37, 5,142,212,248,170,129,136,146,205, 26, 8,200,147,163,187, 35,135, 35, 53, 4, -138,124,161, 64,221,175, 19, 85, 26, 52,130, 68,163, 43,119,146, 67, 99,215, 21,175,188,188,154,206,189, 98, 22,142, 23,130, 16, -248, 94,131, 80,214,193, 5, 81, 42, 66, 51,100,234,180,201,113,105,105, 67, 7,132,213, 18, 78, 42,180, 73,197, 25,153, 88,129, -239,115,225,133, 23,182, 4, 74,101,129,214, 0,195,153,103,158,201,249,231,159, 79, 87, 87, 23,139, 22, 45,226,150, 91,110, 97, -159,125,246,217,170, 78,222,107,175,189,168, 84, 42,116,118,118,178,235,174,187,114,251,237,183,167,209,226,134, 29,230,243,121, -250,251,251, 41, 20, 10, 20, 10, 5,154,205, 38,245,122, 61,245,179, 3, 76,154, 52,169, 5,164, 13, 64, 14, 13, 13,209,215,215, -151,222,191, 1, 96,195,160, 13,104,101,217,180, 1, 96,173, 53, 71, 31,125,116, 10,142,203,151, 47,111,145,166,195, 48, 76,207, -103,130,189, 60,207,163, 90,173,178,114,229, 74, 22, 45, 90,212,242, 44, 90,107,230,207,159,159, 86,144,219, 97,135, 29,184,246, -218,107,211, 2, 53,213,106,149,142,142,142,150, 77, 96, 76, 77,251,206,206,206,150,200,254,114,185, 76, 20, 69,169, 1,100,138, -243,100,171,180,109, 9,188,183,150,197, 24,159,122,246,157,187,174,203,125,247,221,199,130, 5, 11,210,202,113,159,248,196, 39, -184,236,178,203,210,251, 53,234,194,214,180,108,160, 95,165, 82, 25,117,127, 99, 25, 40,207, 62,251, 44, 95,248,194, 23,248,198, - 55,190,129,239,251,236,176,195, 14,156,120,226,137,220,112,195, 13,169,145, 21, 4, 81,194,181,229, 72, 13, 41, 83, 44, 70, 71, - 56,196,245, 34, 14, 94,188, 45,157,110, 64,201, 17, 84,253, 38,203, 31,247,176,129,122,148,200,219,201, 71,243,196, 65, 99,191, -186,251, 62, 62,245,246,131, 9, 2,143, 3,247,217,153,159,221,249, 2, 77,192, 69, 98, 75,133, 86, 73, 25,247, 28, 32, 27,140, -212,163,204,244,171,142,183, 87,121,246,217, 87,113,147,114,239,145,178,176,146, 82,179, 89,239,178,121,147, 79, 63,191,138,195, -118,157,200,107,175,191,206,206, 59,206,196,186,235, 49, 34,160, 88,178,241,253, 6,190,204,209,196,166, 25,142,168,138,153,192, -124, 2,223, 7, 89,192,139,146, 96, 73,160, 88,238, 68, 89,195,148,138, 54, 3,117, 65,217,142, 37,137, 30,224,232, 3,166,243, -158,183, 31,206,180,201, 61,132, 73, 29,251, 9, 94, 3, 75, 43, 26,133, 14,148,235,146,183, 34,104,244,209,236,239,167,212, 53, - 25, 21, 70, 24, 55,119,164,189,173, 27, 99,109,223, 71,234,231,199,161,236,255,118,212, 44,222,179,199,228,116, 62,126,236,250, -231,147, 52,182,241, 54,222,254, 39,160,158,230,166,199, 59, 42,249,109, 3,207,181, 45,180, 31, 33, 27,176, 93, 9,190,112,250, -161, 44,153,221, 75,175,234, 35, 28,218, 76,103,105, 2, 67,195, 77, 84, 97, 42,170,216,193, 55,127,116, 45,219,109, 91,226,136, -197,187, 48,179,199, 69,134, 13,116, 99, 51,189, 57, 9,125, 47,195,196,237,233, 45,230, 89, 50,221,102,209,244, 73,220,253,204, - 16,118,222,161, 40, 11, 68,146,184,166,113,164,144, 10,188, 70, 3, 29, 68,168, 70,196,164,222, 41,241,228, 13, 53, 84, 27, 84, -135,134,153, 56, 41,151,164,119, 68, 56, 82,208,172,180,213,226,150,130, 22,115,215, 20,212,201,152,182,166, 2,155, 1, 65, 3, - 52, 89,208, 19, 66,112,245,213, 87,211,104, 52,184,244,210, 75,241,125,159,189,247,222,155, 79,124,226, 19, 92,114,201, 37,111, -234,179, 53,101, 78, 77, 69,181,153, 51,103,166,185,223, 0,131,131,131,116,119,119,167,215, 51,117,206,219,101, 98,243, 55,195, - 20,179, 27,208,152,133, 62, 43, 35, 27,247,128,169,244,102,234,154,123,158, 71, 62,159,111, 41,158, 98, 2,240, 54,109,218,148, -250,128,179,155,208,152, 10,120, 89,128,202,186, 45,178,236,213, 84, 74,107, 52, 26,204,157, 59,151,185,115,231,182, 68,238, 87, -171, 85,202,229,114,154, 99,158,205, 51, 55,138,129, 49, 70,140,187, 65, 74, 73, 62,159,199,182,227, 93,197, 76,181,186, 55, 98, -224, 91,211,180,214,233,230, 48,190,239, 51,117,234, 84,110,189,245, 86,118,219,109,183, 84,238,254,244,167, 63,205,143,127,252, -227, 22,255,120,182, 62,253, 27, 53, 83,255, 32, 91, 62,215, 24,100,166,236,111,163,209,104,201, 65, 23, 66,208,108, 54,185,236, -178,203, 56,255,252,243,201,231,243,212,106, 53,230,205,155,151,110,243, 27,187, 45, 92, 66,207, 4,184,218, 32, 99,180, 19, 10, - 28, 20, 57,226,220,244,131, 23,239,142, 27,213,137,130, 26, 15, 60,253, 20,235,227,100, 22, 74,201,124,207, 39,219,177,154, 90, -231,127,120,114, 61,125, 7, 13,210, 89,176,153, 57,173,155,125,231,231,184,231, 41,143, 8, 73,168, 70, 98,174, 35,209, 68,200, - 8,139, 16, 75, 52, 82,176,182,148,196, 82,113, 8,110,181, 18, 82,137,160, 80,156,140, 87,247, 9,164, 64, 43, 15,153,179, 80, - 65, 4, 74, 82,116, 52, 58,208,104,175, 70, 56, 28,209,237,120, 20,236, 56,185, 54, 2,164,244,177,116,128,163, 34,186,203, 5, - 20, 80,112, 28,106, 65,128, 7,184,133, 60, 97,195, 79, 44,246,184,126,188, 27,213, 41,138,128,102,101, 0,199,150, 12,215, 67, - 74,110, 17,225, 7,236,214, 13,255,113,238,251,153,217,155,167, 57, 52, 68,109, 83, 13,191,179, 27,237,148, 24,208, 14,142,101, - 83, 81, 2,191,238, 83,140,106,116, 42,176,195, 28, 90,150, 17,185,174,180,124,174,176,200,238, 72, 51,182,251, 37,171,218,180, -179,121, 33, 56,251,192,109, 57,231,144,153,233, 49,103,255,234, 37,174,121,108,227,214,175,224,227, 44,125,188,141, 2,117, 21, -164,190, 30, 45, 77, 85,184,152,213, 58, 64,222,247,201, 1,123,207,112,249,236,105, 39,176,125, 71,136, 93, 93, 67, 62,215,196, - 46, 58, 12,213,129,201,115,120,181, 98,113,225,119,174,101,213, 26,120,199,212, 34, 61,211,103, 49, 52,240, 10, 61, 57,143,142, -188,133,114,124,130,190, 87,113,156, 38,106,104, 29,221,221, 51,248,216, 73,199,179,226,171, 87, 16,214, 6,137,146,197, 53,148, - 18,229, 9,114, 14,104,165,137,134,135, 56, 96,143, 93, 56,230,160,157,112, 34,160,104,195,170,117,216, 82, 17, 5, 30,216, 69, -104,214, 81,178,200,250,245, 27,137,162,216,143,216,136,228,232, 1,223,134,239, 50, 1, 75,195,112, 77,240,153, 9, 68, 51, 12, - 80, 74,201,224,224, 32,151, 93,118, 25, 63,248,193, 15,210,122,233, 39,157,116,210,155,130,122, 24,134,105, 80,149,227, 56,188, -252,242,203,188,252,242,203,228,243,121, 26,141, 6,182,109, 99, 89, 86,202,214,204,130,111,192,216,176, 99, 41, 37,175,189,246, - 90, 10, 20,245,122, 61,101,234, 38,135,121,172,188,105, 3,246,237, 91,191, 26,105,221, 20,212, 49,236,216,244,195, 8, 27,140, - 83,248, 42,149, 74,234,227, 53,247, 48, 48, 48,208,178,163, 92,182, 98,154,137,154, 95,181,106, 85,154, 22, 23,134, 33,165, 82, -137, 40,138,232,239,239,103,202,148, 41, 0,244,245,245,209,211,211,131,239,251,233,245,108,219,102,211,166, 77, 45, 69,129,178, - 64,221,254, 76, 89,246,251,167,248,213, 77,223,155,118,235,173,183,178,104,209,162,244,125, 93,124,241,197, 92,122,233,165, 45, - 69,132,140,113,178, 53, 91,175,182,187, 7,204,150,188,230,221, 25, 55, 71,182,252,171,137,114, 31, 24, 24,224,233,167,159,102, -225,194,133,148, 74, 37,142, 56,226, 8, 46,188,240,194, 22,117, 67, 96,197,195, 90,170, 22, 4, 49,187,155,206,233,134,249,211, -123,232,148,125,136,188,197,236,153,211,249,234, 63,110, 67,195,235, 66, 91,157, 40, 75, 83,173, 12, 48,177,152, 71, 71, 30, 56, -146,124, 56,192,132,188,133,163, 61, 74,193, 16,251,207,159,197,253, 79, 61, 75, 64,152, 74,240, 14, 16,250, 53, 34,153,238,127, -134,101,252,237,218, 66,232,248,190, 92, 39, 46, 54, 52, 84,175,131,200,161,173, 28,232, 40,179, 47,131,164, 30,132,116, 17, 7, -100,250,190,100,194,228, 73,244, 63,247,122, 60,150,128,161,190,205,148,102,110, 75, 19,139,245,107, 95,167,224, 66,197, 15, 8, -113,208, 2,226,215, 96, 37, 17,191, 30, 69, 25, 27,142,150,176,200, 17,146, 19, 58,150,241,253, 58, 51,243,112,209,151, 62, 74, -183,232,163, 49, 48,140,167, 75,252,242,238,223,242,248,250, 77,188,182,161,201,198,245,241,218,208, 32,142, 69,232, 4,222,187, -127,142, 51, 79, 57,129,205, 3,195, 68, 65,132, 35,160,170, 65, 40,209, 6,215, 99,188,255, 55, 24, 27, 31,219,119, 26,223, 60, -118,135,244,247,127,189,231, 85,190,243,192,235,127,210, 2,190, 53, 46,166,241,246,119, 6,234, 78,178,207,176, 22,196, 69, 18, -132, 13, 97,132, 36,164, 64, 44, 83,189,103,201,100,254,223, 59, 15,163, 16,110,198,169,247, 49,177,219, 1,223, 99, 40,176,169, - 79,154,203,163,235, 3,254,237,210,101,188,176, 33,158,222,175, 15, 65,163, 97,211,161,226, 90,201, 66, 53,137, 68,157, 87, 54, -173, 98,110,117, 19,178,119, 42, 97,168, 56,124,241,182,124,229, 83,239,227,242, 95,220,198,115,171, 55,147,155, 60,131, 32, 16, -216, 74,227,134, 17,205,254, 77,236,191,211, 12,254,227,139,239,103,122, 1,100,208, 15,225, 38,214,190,242, 36, 22, 77,114,110, -137, 56,102,223,198,113,114,172, 93,187, 62,142,230, 13,146,103, 81,113, 45,197,100, 95, 35,164, 41,117,169, 69, 10,236,134,237, -102, 1,208, 4,171, 25,144,207,238, 5,126,239,189,247,114,248,225,135,227,186, 46, 7, 29,116,208, 86,119,180,137,150,191,242, -202, 43,249,214,183,190,213,178,177,135, 1,137,177, 2,239,198,218,222,211,200,232, 70, 74, 55,134,199, 88,133, 80, 76,234,149, -217,171, 61, 11,186, 89,127,118, 22,132,204,231,204,177, 89,240, 50,199, 71, 81, 68, 71, 71, 71, 11,195,206,250,153,205, 53, 46, -189,244, 82,190,253,237,111,183,196, 1,100,243,218,179,106, 65,214, 40,105,175,160,102,228,253,172,236,222, 30,125,190,165,197, -109,172,189,234,179,187,184, 25,214,127,201, 37,151,176,104,209,162,244, 51,151, 94,122, 41,103,156,113, 70,203,189,109,169,242, - 91,118,188,100,119,212, 51,129,132,102, 1,206, 86,137,203, 22,148, 49,199,183,215, 72,232,239,239, 79, 85,154,108,182, 69, 60, - 46,117,188,147,154,173, 99, 80, 79, 84,112, 39,137, 29,177,129, 67, 23,108,195,196,160,138, 21,212,193, 9,217, 97, 82, 7,219, - 76,233, 64, 70, 29, 16, 72, 92, 41,169, 85, 67,122, 38,228, 65,118, 50, 52,228,211,233,148, 41, 70,253,224, 85,153, 94,146, 28, -184,243,246, 92, 34,158,101, 80, 67, 93, 64, 78, 66, 46, 2, 11, 65,211,202,161, 68, 30, 45, 70,152,190,214,110,204, 16,100,132, -175,147,128, 66,171,158, 40,101, 26, 81, 44, 32,234, 21,108, 61,226,135,111, 0,158,204,225, 57, 93, 12, 4, 57,194, 66,103,204, -194,129,174,124, 7,126, 0,190, 16,244,116,245,226,249,155,227,109, 77,140,101,174, 35,108, 36, 22, 17, 17, 97,188,171,107,110, - 18, 1, 93,216,106, 51, 46,126,156,143,111,193,145, 11,103, 48,213, 86,104,145,227,245, 90,200, 63, 93,116, 45, 15,175,215, 24, -141,175, 35, 81, 55,250, 19,131,194, 7, 54,135, 46,161, 20,116,149,243,200, 96, 29,185,132,240, 68, 34, 79,164,107, 45,192,173, -199,208,221,157,164,232, 16, 90, 35, 45, 11,148,230,189,123, 76,226,226, 19,231,166,135,126,239,193, 53,156,119,231, 43,227,136, - 52,222,254,236, 38,109, 61, 18, 28, 23, 75,241, 54, 72,129, 13,148,129,147,151, 76,225, 31, 78, 89, 74,174,178,154, 9, 86,157, -137, 19, 58,169, 84,235,244, 7, 46,181,210,116,174,123,224,143,252,243,119,254,139,149, 27,226,148,149, 72,192, 75,235,250,233, -171,132, 20, 58,167,128,175,192,181, 41, 22, 4,118, 52,196,115,203,239,132,168, 31, 91,212,177, 61, 56,245,152, 57,124,247,252, -127,224, 19,239, 58,136,153,197, 97, 38,203,205, 76,162,143, 61,103,148,249,218, 89,167,113,245,119, 79, 99,102, 25,138,193, 32, -200, 77,168,167, 31,164,186,254,121, 38,149, 45, 26,213, 65,194,122, 3,217,217, 75, 35,136, 88,241,232, 74,194,100, 46, 9,105, -183,204, 48, 45, 70,172,102,149,113,183, 54, 26,141, 20,156,140,172,105, 64,208, 44,208,102, 55, 46, 83,134,212, 48,173,108,157, -248, 55,178,164, 31,126,248,225,116,211,149,227,142, 59, 46,101,195,165, 82,105, 84, 25,210,108,238,179,137,254, 54, 32,147,221, - 5,237, 47,101,157,123,158,199,115,207, 61,151, 94,231,248,227,143, 7,160,183,183,183, 5,176, 13,208, 56,142,147,150, 98, 93, -188,120,113,202,234,179, 37,118, 31,124,240,193,244,158,151, 44, 89,146,126,222,196, 6,100,141, 8, 83,227,221,188, 11, 83,147, -126,107,251,119,107, 90,214,128, 49,101,106,205,185, 77, 52,249, 85, 87, 93,197,105,167,157,150,246,235,133, 23, 94,200,103, 63, -251,217, 52,250,223, 24, 27, 70, 77,201,231,243, 45,229,100,179,227, 37, 11,252, 38, 72,206,168, 25,166, 66,158, 25,111,198,189, - 96, 20, 29,115, 79,230, 30,179,217, 23,166,250,221,228,201,147,211,243, 11, 41,147,250,173, 35,238, 37, 91, 75, 44,226,157,200, -222,113,200,219,152,212, 93, 70,219, 57,148,221, 65, 83, 22,168, 71,177, 74,227,196, 85,158,113, 10, 46, 85,191,193,112,208, 68, -230,139,212, 35,135, 74, 93, 64,105, 34, 4, 33, 83, 59, 75,236,191,247, 54, 56,153,121,228, 0, 5,237, 34,148,139, 80, 54,182, - 34,101,234,198, 7, 32, 8, 89,180, 71,188, 7,129, 21, 41,242, 93, 5,112, 93,116, 35, 68,234, 24,176, 93,108,114,196,177, 58, -251, 45, 90, 64, 87, 71,137,117, 27, 55,241,250,134,254,140,151,222, 38,194, 65, 37,241, 3,163,130,100,180,196, 70,225, 50,178, -101,106, 40, 28, 2,145,163,163, 88, 98,120,176, 15, 75,196, 6,207, 49,111,219, 27,215,175, 98, 75,193,178, 91,239,224,177,245, -154, 33,108,194, 92,158, 64, 57,227, 63, 0, 0, 32, 0, 73, 68, 65, 84,208,178,227, 13, 92, 0,223,202,227,137, 56,198, 96,219, - 89,179,241,188, 38, 94,163,138,107,137, 52,130, 32, 24, 67, 98, 31,229, 72, 55,190,126,157,108,113, 29,106, 78,216,101, 2, 63, -126,215, 78,233,123,189,234,145,245,156,121,243,139,255,227,241, 61, 30, 5, 63,222, 90,152,122,154,189, 38,236,248, 43, 94,189, -201, 11, 40, 11, 56,233,152,183, 97,251, 67, 76,232, 42,224, 56,146,161, 64,177, 81, 76,161, 52,125,123, 46,191,254,110,254,243, -206, 87,216,224,143, 4,187,248, 26, 94, 95, 31, 49,136,195,218,186,207,244, 98, 15,146, 10, 5,229,211,173,134, 88,187,122, 37, -205,199,239, 34, 63,251, 0,114,157, 51,129, 50,179,167,249,252,203,199, 15, 67,127,252, 48,214,246, 13,226, 22, 59,233, 40,196, -158,239, 66,164, 41, 91, 21, 80,235,224,153,251, 89,253,135, 95,211, 19,245, 83,202,119,227, 87, 35,236, 98, 23,253, 3, 53,124, -119, 50, 43, 30,127, 53, 94,188, 1, 29,134, 73,121, 70, 29, 7,164,232,196,197,158,153,134, 58, 97, 96,149, 74, 5, 33, 68, 90, - 15,220, 44,198,134,161,154, 96,169, 90,173,198,148, 41, 83, 82, 64,216,154,232,103,173, 53, 79, 61,245, 20,251,236,179, 15,149, - 74,229,255,103,239, 93,131,109,203,170, 50,193,111,140,185,246,222,231,156,123,111,230,189,153,121, 19, 80, 76, 4, 65,208, 20, - 50,161,178,144, 66, 48,149,135,160, 69,116,182, 85, 17, 21,109, 73,135, 73,180, 68,160,118,168, 88,218, 42, 24,104,208, 18,225, - 11,121, 4, 82, 88, 88,180,173, 72,118,241, 80, 40, 1, 5, 73, 72,168, 34,121, 36, 47,121, 35, 5,130, 36,228,139,204,251, 58, -175,189,247,154,115,244,143, 57,199,124,173,185,246, 62,231,102,218,213, 70,221, 77, 92, 86,158,253, 92,107,174, 57,231, 24,227, - 27,223,248, 6,158,240,132, 39,224,216,177, 99,216,222,222,142, 76,102,205,187,107, 20,167, 70, 97,127,127, 31,179,217, 44,194, -210,121,148, 86,171,144,157,239, 99, 58,157,226, 51,159,249, 12, 30,245,168, 71, 1, 0, 30,241,136, 71,196, 8,177, 54,138,121, -121,214,149, 87, 94, 25, 69, 97,116, 44, 52, 90,253,194, 23,190,128,199, 63,254,241, 88, 46,151,248,209, 31,253,209, 40, 1,187, -183,183, 87,136,212,104,234, 33, 71, 25,242, 46,101, 7,109,154,179,210,107,205,106,187,207,157, 59, 55,200,195,239,236,236,224, -213,175,126, 53,174,191,254,250,248,220, 75, 95,250, 82,252,230,111,254,102,129, 26,232,124,168,187,168,229,232,132, 62,159, 67, -162,154,255, 87,165,194, 35, 71,142, 20,154,241,185, 51,164,156,136,157,157,157,200,139,184,246,218,107, 99,186, 69,171, 33,238, -188,243,206, 48,142,132, 9, 77,177,112,228,245,196,201, 67,110, 4,139, 77, 0,255,236, 59, 46,194,241, 99, 51,156,222,219,195, -190,108,226,143,110,120, 11, 62,119, 10,232, 25,232,118,125,229,199,142, 35,240,102, 7, 43, 75,244, 22,216,156, 93, 4,217, 91, -224, 1, 83,139,167,125,239,149,248,193, 71, 61, 12,147,233, 17, 60,229, 95,124, 31,222,250,225,215, 99, 59,160,252, 27, 0,186, -253, 14,199,230, 4,199, 14, 91, 65, 44, 38,232,247,129,177, 4,203, 28, 15,126,192,113, 28, 3,176, 11, 96,251,238,187, 66,168, -176,129,141,110, 11,203,126, 59,246, 75,188,242, 18,224, 36,157,194, 61, 95,249, 28, 30,244,192,239,196, 98,241, 13, 44,161,223, -105, 96,169,131,165,212, 93,209, 0,176,210, 67, 27,203, 26,207, 42, 40,136,115,150, 8, 61, 8, 93,215, 97, 43,160,116, 15, 56, -177,129,249,185, 59, 48,157, 93,138,187,110, 59, 23, 58, 79,246,176,182, 7,109, 0, 91, 22, 88,236, 3,228,246,177,105,128,205, - 30,120,212,119, 93, 1, 67, 11, 56, 8,102, 71,102,216, 13,200,130,136, 23,249,161, 21, 32,187,233, 58,216,222,183, 75,101,102, - 60,253, 59,143,227,134,127,251, 93,177,116,237, 13,159,188, 11,207,126,211, 23, 46, 88,162, 11,143,251, 46, 82, 79,181,173,148, - 52,139,197, 55, 62,232, 0, 92,118,201, 69,184,251,244, 61,216,119,192, 29,219, 75,252,195,185, 14,124,255, 71,226,151, 94,254, - 38,188,226,173, 95,193,237, 11, 96,122,108,130, 37, 0, 51,243,222,235,221, 22,248,235,255,242, 33,208, 69,151, 97,219, 78,177, -232, 25,176,132,205,126, 31, 15,190,216,224,142,191,125, 47,206,125,228,237,192,233,207, 99, 38,223,192,183, 78,183,113, 12,119, -224, 34,220,133,111,157,220,131, 7,118,119,227, 36,182,113, 57,238,193, 49,250, 58,112,230,115,216,251,240, 91,241, 15, 31,121, - 23, 78,204, 22,184,228,232, 4,238,244, 93,152, 94,124, 49, 22, 61,195,205, 46,198, 77, 55,127, 20,183,126,179,232, 73,115,192, -204, 22, 34,123, 91, 13,186,146,181,114,104,124,103,103, 7,143,120,196, 35,240,240,135, 63, 60, 70,152,159,254,244,167, 15,228, - 69,255,213, 95,253, 85, 36,155,205,231,115,252,210, 47,253, 82,220,244,213, 40,104,255,115, 37,202, 49,115, 44,117,210,243,211, -243, 81,245,180,131,228,116,215, 61, 22,139, 5, 62,244,161, 15, 69,232,247,254,247,191, 63,174,187,238,186, 24,141, 3,192,137, - 19, 39, 10,164,226,200,145, 35,184,238,186,235,162, 34, 92,157,239,190,241,198, 27, 35,236,188, 92, 46,241,252,231, 63, 31,139, -197, 2, 93,215, 69,206,128, 66,233,243,249, 28,123,123,123,152, 78,167, 5,153,172,134,155,207,247,225,156,195,230,230,102,212, -122, 87, 7, 74,181,211, 95,249,202, 87,226, 89,207,122, 86, 52,224,127,248,135,127,136,231, 62,247,185,145,239,160,223,161,100, -182,188,223,185, 94,187, 70,239,138,178,228,196, 75,102,198,238,238,110,124,223,206,206, 78,193,240, 87,209,158,154,131, 49,157, - 78,241,236,103, 63, 59,190,182,177,177,129, 91,111,189, 53,222,147,216,122,213,134,194, 48, 59, 5, 92,232,115, 15,193, 81, 0, - 79,250,222,239,193,134, 17, 96,186,137,115, 91,151,225,134, 15, 2,127,243, 5,224, 93,159, 3,222,243, 85,224,166,191, 7,222, -251, 85,193, 77, 95, 92,226,166, 47, 2,239,253, 18,240,246,207,156,197,187,190,188,143,191,252,252, 18,239,248,212,109, 88,110, -120,229,191,239,121,208,253,241,160, 35,136,177, 50, 3,112,189, 68,109,118,159,230, 10,229,110,228,119, 21, 35, 75, 92,186, 57, -193,213, 15, 4,142, 7,115,126,108,131, 1, 44,176,211,251, 58,249,105,112, 64,158,252,207, 46,195,252,155, 95,193,183,156,216, -194,108,218,225,109,239,250, 68,140,136, 45,177, 15,116,193, 17,101,227, 16,168, 39, 49,122, 87, 68,205, 46,188,127,190,236, 65, - 36, 16,231,205,255,197,199, 54,113,226,146,139, 48,223,223,129,237,253,245, 28,219,152,248,237,111, 31,216,223, 15,234,124, 2, -160, 7, 30,243, 29,192, 21,151, 92,132, 13,244,216,156,116, 94,183, 93, 51,120,188,126,126, 50,115,208,230, 39,252,224, 67,142, -227, 77,255,235,149,152,118,254, 59,222,254,249,187,241,227, 7, 45, 93,187,240,184,240, 56,140, 81,143,120, 17,121, 9,216, 16, -172, 99,233,128,175,124,227, 14, 92,122,197, 67,113,183,219,192,252,216,183, 66, 78, 62, 12,207,121,225, 43,240,151, 31, 63,133, - 83,240,240,212,221,231,150,176,147, 41,118,104, 19,187, 4,204, 25,248,139,119,254, 55,220,113,102, 27,219,189,192, 76,143, 1, -188, 9,178, 6, 91,100,113,172,191, 11,253, 87,111,198,206,187,255, 4,248,248,141,192, 61, 95, 3,246,119,128,229, 18,199,142, - 28,195,148,123,224,236, 87,128,197, 87,128,175,127, 16,247,188,247, 6,220,241,185,247,227,136,217,199,209,163, 91,144, 73,135, -125,103,209, 47,123,220,189, 7,204,187,139,241,202,255,235,207,177, 11, 96,223, 1,108, 58, 31,134,136,245, 53,248, 25, 28,166, -245,188, 18, 55, 81, 23,141,169, 18,210,212,192,229,198,253,228,201,147,248,147, 63,249, 19, 48,115,148,139,125,243,155,223,124, - 32,163,254,134, 55,188, 1,119,221,117, 87, 36,229, 61,247,185,207, 45,186,169,229, 70, 91, 13, 90,222, 8, 38,207,235, 43,212, -173,132,178,123,251, 48,198,224, 15,254,224, 15, 10, 35,246,172,103, 61,171,104, 28,163,245,212, 26, 61, 47, 22, 11, 60,239,121, -207,139, 6,166,235,186, 24,165, 79,167, 83,188,238,117,175,139,157,214,136, 8, 63,243, 51, 63,131,107,174,185,166, 48,254,106, -108, 55, 54, 54,162,230,190,222, 3, 29,151,251, 2,141,152, 76, 38, 17,214,215,104, 89,171, 14, 94,254,242,151,227,167,126,234, -167, 96,140,193,230,230, 38, 62,250,209,143,226,215,126,237,215, 10, 3,155, 27, 94,117, 60,116, 28,244,222, 41,194,114,197, 21, - 87,224, 87,126,229, 87,240,188,231, 61, 15,191,252,203,191,140,107,175,189, 22,206, 57, 92,124,241,197,152, 78,167,133,144,143, - 58,100,234,220,108,108,108,196,121,160,176,252,203, 95,254,242,168, 95,112,247,221,119,227,207,254,236,207, 34, 82,162,231, 99, -177,244, 26,226,206,139,185, 24,242,206,248,131, 38,192, 19,174,124, 16, 54,177,196,222,210,226,141,239,254, 48,238, 4,112,118, - 2,156, 97, 47,141,186,111, 60,194,182,107,189, 51,190, 36,192,154, 14,123,152,224,110, 0,239,253,228, 29, 56, 53, 95,130,105, -129,227,221, 41, 60,253,251, 30,228, 73,114,198,175,123, 62,194,216,159, 8,118,102, 14,219, 83,135, 93, 0,115, 0,189,241,197, -239,157,244, 56,209, 9,254,205,211, 30, 27,123,169,219,253,179, 56,122,116, 14,225, 61, 56, 51,135, 65,143,135,108, 2, 63,244, -184, 43,113,242,248, 6,152, 25,239,185,249, 35,184,125,207, 71,195,182, 64,180, 93, 33, 32,133,136,203,217,216, 78,185, 48,179, -228,224,200,129, 57,118,153,199, 61,167,207, 2,166, 3,195,225,234,239,190, 31, 38,128,175,245, 95,250, 15,111, 77,128,139, 54, -189, 3,240,128, 45,224,223,252,203,167, 96,163,183,224,133,133, 89, 58,240,190,239, 70,103,170, 22,171, 18, 49,135,240, 47,108, - 50,174,247, 87,240,248, 7, 29,195,155,127,226,187,177, 49,241,235,252, 61, 95, 58,133,127,253,167,159, 65,127,193,162, 95,120, -220,215, 70, 61,234, 81, 57, 23,196,164,253,166,177,132,207,145,255,250, 75,222,134,215,191,251, 22,252,151,207,223,129,255,240, - 23, 55,225,127,249,153,151,227, 99, 95,245, 98, 14, 61,102, 88, 98, 2,161, 9, 48,221, 0,250,222,171,203,206,128,187, 0,252, -251, 27,222,140,157,201, 37, 88, 76, 79, 96,111, 78,152, 77, 55,177, 60,117, 39, 46, 57, 2,156,232,182,177,188,227, 51, 56,245, -201,247,224,203,111,250, 15,184,253,175,255, 20,123,183,188, 13,219, 31,254,207,216,254,208,159,227,244, 7, 95,143,255,246,167, -191,131, 47,191,245, 63, 98,247,182, 79,227,178, 35,132, 35, 51,198,185,221, 61, 44,164,195,244,232,101,216,199, 38, 54, 78, 94, -129, 87,254,223,111,192,103,191,238, 23,173, 3,176,180,206,231, 26, 67,241, 13,137, 39, 14,101,151, 29, 13,124,215,113,161,136, -150, 43,186, 45,151, 75, 60,252,225, 15,199, 79,254,228, 79,226,131, 31,252, 32,174,190,250,106,236,238,238, 98, 58,157,226,220, -185,115,248,189,223,251,189, 3, 69,138, 0,240, 19, 63,241, 19,177, 21,234,214,214, 22,222,246,182,183,225,201, 79,126,114,209, - 13, 44,135,110,245,115,223,249,157,223,137,231, 63,255,249,248,217,159,253, 89,108,109,109, 69,200,254,216,177, 99, 7, 86, 53, - 91,245,208, 46,100, 47,120,193, 11, 98,142,248,186,235,174,195, 75, 94,242,146, 88, 62,165,121, 94, 34,194,137, 19, 39,240,209, -143,126,180,200,179,171,113,203,161,250, 23,190,240,133,248,230, 55,191, 9,192,235,188,191,235, 93,239,194,147,158,244,164, 24, -177,107,158, 90, 25,246,147,201, 4,199,142, 29,195, 69, 23, 93,132, 95,253,213, 95,197,243,159,255,252, 3,165, 55, 14,146, 79, -215, 6, 45, 57,234,242,154,215,188, 6,207,121,206,115, 48,159,207, 97,173,197,167, 62,245, 41, 60,233, 73, 79,138, 14,140,138, -198,228, 6, 94, 29, 15, 53,190, 26,161,235,235, 15,125,232, 67,241,194, 23,190, 16, 47,122,209,139,240, 27,191,241, 27,120,252, -227, 31, 15, 0, 56,115,230, 12,158,240,132, 39,224, 13,111,120, 3,158,249,204,103, 70, 39, 82,243,237, 74,152,211,241,191,230, -154,107,112,203, 45,183,196,180, 5, 51,227,101, 47,123, 25,238,190,251,238,232,144,236,239,239, 99,177,216,135,133,197,116, 26, -186,173,200, 18, 76, 62,175,252,232,239,154,225, 91, 78,108,193,176, 3,207,182,240,159,223,243, 41,204, 13,208,243, 49, 0, 71, -176,136,198,156,225,192, 88, 4, 62,204,210, 2,224, 13,236, 99, 11,119,246,192, 71, 63,253,121,152,142, 96,150,167,241,244, 39, - 62, 18, 71, 9,232,200,175,160,110,214,193, 18, 65,208, 65,136,179,200, 58, 25,215,126,111,142,199, 93,245, 72,252,212,143, 94, -137,139, 0,220, 31,192,116,187,199,201, 9,112,145, 3,190,125, 11,248,185,159,124, 26,238,119,233,113,204,231, 75,156,182, 19, -188,241,111, 62,135,125, 0,189,105,181, 11,175, 90,206, 58, 7,146, 30, 22,140, 57,216, 43,218,165,228, 6,156, 8,166,155, 71, - 99, 14,252, 93, 31,250, 91,236,200, 4,221,198, 38,158,254,228,107,241,232,203, 59, 92, 10,135,203, 0,156, 20, 96,182,244,122, - 28, 15, 59, 1,252,187,103, 63, 3, 79,253,222,199, 98,185,179, 3, 80,135,197,210,161, 95,166, 86,182, 41,196,230, 70,102, 61, -145, 88,175,126,192, 81,188,245, 89,143,194,209,153,159,247, 31,252,234, 89,252, 79,127,252,105,204,251, 11, 6,253,194,227, 31, - 33,167,206, 81,146,168,135,115, 22,226,177, 52, 44,225, 59, 23,125,126, 23,248,253, 55,126, 30, 54, 44,150,142,125,215,166, 9, - 8,221,230, 12,251,182, 3,250, 5,176,183, 11, 51, 35,216, 37,176,187,239,191,241, 45,159,216,199, 35, 62,252,101, 60,229,170, - 7,226,219,166, 83,108,242, 46, 38,203,185, 95,173,221, 12,199,143, 79,177, 39,167,112,249,116, 10,119,250, 86,204,191,185, 15, - 54, 2,231,124, 68,251,173, 91, 51,184, 77, 3, 50,155,216,223,223,197, 2, 12,230, 13,236, 44,150,152,119, 19,208,214, 73,188, -231, 67,159,193,191,127,237, 7, 49,157, 1, 59,115,132,196, 57, 67, 92,143,131,118, 48, 58,125,250, 52,142, 30, 61,138,157,157, -157, 66,103, 60,135, 69,181, 31,186, 26,179,159,254,233,159,142, 6,118, 45,252, 6,224, 93,239,122, 23,126,225, 23,126, 1,191, -245, 91,191, 5,102,198, 37,151, 92,130,191,249,155,191,193,141, 55,222,136,119,188,227, 29,248,248,199, 63, 30,115,183,155,155, -155,120,236, 99, 31,139,167, 62,245,169,184,234,170,171,176,179,179,131, 23,188,224, 5,216,221,221,141,185,221,188, 12,237,222, - 62,182,183,183,113,195, 13, 55,224,250,235,175,199, 85, 87, 93, 5, 0,184,254,250,235,241,180,167, 61, 13,175,122,213,171,112, -203, 45,183,128,153,241,148,167, 60, 5,207,124,230, 51,241,192, 7, 62, 16,159,250,212,167,224,156,195, 85, 87, 93, 85, 16,192, -250,190,199,137, 19, 39,240,166, 55,189, 9, 87, 92,113, 5,126,255,247,127, 31,206, 57, 28, 59,118, 12, 55,222,120, 35,222,242, -150,183,224, 3, 31,248, 0, 62,255,249,207,199,104,245, 97, 15,123, 24, 46,191,252,114, 60,227, 25,207,192,213, 87, 95, 13, 0, -248,197, 95,252,197,251, 4,126,215, 20,131,242, 36, 0,224,145,143,124, 36,158,245,172,103, 97, 62,159,199,231,206,157, 59,135, - 55,190,241,141, 88, 44, 22,184,248,226,139,177,183,183, 23,175, 75,163,252,173,173, 45,204,102, 51,156, 61,123, 22,175,125,237, -107,241,186,215,189, 46,162, 41, 26, 57, 79, 38,147,168, 9,144, 87, 55,204,102, 51, 60,245,169, 79,197, 15,255,240, 15,227,119, -126,231,119,240,238,119,191, 27, 31,251,216,199,240,217,207,126, 54, 18,233, 30,243,152,199,224,218,107,175,197, 51,158,241, 12, -156, 62,125, 58,246,166,191,229,150, 91,240,162, 23,189, 8,179,217, 12,123,123,123,177, 74, 99,235,232, 38,118,119,247,176,164, - 61,128,124, 46,157, 28,112,241, 12,248,193,107,255, 57,156,221,195, 98,209,227,203,183,127, 3,119,220,227, 57,176,190,229, 26, - 97, 6, 10,117, 33,140, 57, 44,186, 25, 99,177,112, 48,232, 33,110, 15, 18, 50,211,239,184,233,131,248,254, 43, 31,128, 99, 52, -199,183, 95,118, 28,143,127,164,193,123, 63,105, 97, 0,184,197, 18,211,254, 24,156,235, 48,235, 61,185, 86, 35,235,165, 33, 44, -165,195,199,254,246,179,248,182, 71, 60, 6,255,250,135,158,138,239,187,230, 26,252,197,219,223,142,127,184,245, 46, 44,150,192, -119,127,247,165,248,193,239,127, 42,190,253,126,151, 96,185,184, 11,118,114, 63,188,241,198, 15,224,166,175, 0,115, 3, 44,221, - 20, 22, 11, 56,226,224, 60, 36,225,168, 62,236, 90,157,132,210, 84, 24, 88,204, 0, 94,160,115,203, 80,224,226,208,131,112,110, -110,177, 7,128,167,192, 77,159,249, 42,158,240,184,127,142,203,182, 58, 92,212, 89,188,252, 23,255, 45,110,188,249,163,248,200, - 23,255, 14,119,159, 90,226,242, 19,192,149, 87, 62, 28, 15,126,248, 35,241,176,135, 60, 24,183,125,249, 11, 56,243,149,191,199, -183,124,215,119, 96,225, 58,216,206, 37,244, 64, 60, 59, 81, 32,133, 33, 47,218, 89, 11,240,206,103, 63, 10,199, 55,211, 94,242, -165,123,246,240, 91, 63,252,144, 3,205,221,223,123,223,215,240,213, 83,243, 11,150,234,194,227,224, 70,221,128, 33, 65,229, 9, - 34,160,208,112, 97, 65, 64, 31,254,109,247,161,231, 19,123, 72,222, 75, 45, 8, 22,123,187, 0,109, 5, 67,218,131,123,207,215, -233, 54,128,237,125,223,205,233,183, 95,251, 97, 92,126,201, 9, 60,224,202,203,112,231,169, 47,225,242,251, 95, 10,183,115, 6, -203, 9, 99,178, 53, 3,220, 62, 54,205, 2,108,118, 32,178, 7,158,248,218, 24,235, 8, 16,139,165, 24,116,180, 1, 49, 4, 39, - 6,123, 11,135,133,108, 96, 65, 71,113,235,109,187,248,119,191,254, 39,176, 12,156,158,251,133,190,177,121, 20,139,157, 61, 68, -119, 62,195,234, 92, 67, 11,190,183, 14, 71,143, 30, 45, 88,238,170, 42,166,162, 33, 57,100,123,227,141, 55,226, 5, 47,120, 1, -110,190,249,230,162,236,106, 93,164,110,140,193, 75, 94,242, 18,156, 59,119, 14, 47,126,241,139,177,185,185,137,201,100,130,167, - 60,229, 41,120,242,147,159, 28,243,204, 57,251, 93, 35,183, 35, 71,142,196,174, 97,113, 63, 9,209,253, 65, 58,197,173,131,223, -173,181,184,243,206, 59,241,244,167, 63, 29, 31,249,200, 71,112,242,228, 73,108,108,108,224,193, 15,126, 48,126,251,183,127, 59, - 70,188,234,208,156, 58,117, 10,215, 95,127, 61,126,247,119,127, 55,166, 4, 52, 90,101,102,156, 58,117, 10,204, 92, 92,175,170, -200, 93,119,221,117,184,238,186,235, 34,249, 80,157, 39, 53,176,234, 60,105, 69,194,125,241,152, 78,167,176,214, 70,146,156,178, -199,149,232,103,140,137, 81,181,234, 19,228,249,116, 69,109,244,249,221,221, 93,188,255,253,239,143,247,246,232,209,163,216,222, -222,198,222,222, 94, 68, 89,148, 79,160,165,112,251,251,251,177,124,239,242,203, 47,199,143,253,216,143,225,199,127,252,199, 11, -199, 34,119, 64,142, 31, 63, 30,187,251, 61,239,121,207, 3,224, 73,119,121,217,223,238,206, 30, 96, 16, 91,122, 78,125,185, 56, -142, 95, 10, 60,242,209,143,193,233, 83,119, 96,235,200,101,184,233,157,239,192,210, 43, 49,195, 64,112,180,219, 68,223,111,123, -232, 25, 61,122, 48,100,225,213,103,102, 19, 2, 89,193,174,115,152, 3,248,240,151,129,219,247, 13, 46,186,236, 18,108,239,205, -241,189,143,123, 44,110,250,228, 7, 96, 0,156,153, 19, 22,116, 20, 14, 19,136,108, 36,165, 56,114,190, 87, 28, 77,240,241,207, -253, 29,222,243,177,175,224,217,207,126, 14,142, 78, 55,240,211,207,252, 49,236,237,222,131,147, 39,166, 56,115,238, 28,186,205, -139,176,189,183, 11, 59,189, 24, 31,252,219,207,226,149,111,249, 26,206, 0,152,219, 9, 0, 66, 15, 96,206,155,152,211, 17,244, -160, 72,148,115, 33,165,102, 68, 65,248,208,149,142, 8, 61,150,232,105,130,185,153,160,163, 99, 56,231, 58,204,142, 1,119,109, - 3,239,249,210, 28, 15,122,199,205,120,214,255,124, 45,142, 79,151, 56, 49,179,248,151,223,255,221,248,129, 39, 62, 10,211,205, - 45,244,203, 61, 44,133, 65, 71, 46,195,206,206, 14,110,120,243, 95,226,248,140,241,208,239,249, 30,204, 39,155,152,111,248,212, -131, 32,203,233, 13,180, 90,147, 24,141,136,224,228,209, 50,141,244,227,143,190,223,129,231,238,107, 63,126,199, 5,163,126,225, -113, 56,248, 61, 26,244,104, 44,194, 28,101,134,163, 14,251, 50,193,130, 39,216,199, 4,219,174, 67, 31,188,113,223, 12,162, 7, -100, 9,184, 5,140, 0,180,244,211,121, 62,247,243,122,206,190,181,225,175,189,252, 29,248,143,111,126, 31,228,248, 67,176, 61, -223,194,221,139, 45,236, 79, 79,224,172,157, 66, 96,224, 44,195, 78,142,194,110, 92,134,185, 57,142, 61, 62,142, 69,119, 49,150, -152,130,173,192,237,237, 98,139,122,204,183,207, 96,251,220, 62,120,243, 82,188,255, 83, 95,199,255,246, 11,127,140,187,231,192, -174, 67, 60,175,157,157,189, 80, 48, 43,190,172,134,124,102, 97, 50,241, 14,199,116,234,149,201,118,119,151,126, 83, 48, 28,141, -183,178,178, 53,218,210, 77,246,150, 91,110,193, 43, 94,241,138,168,249,126,243,205, 55, 23, 68, 46,149,114, 85, 57,211,186,158, - 90, 97,110, 0,120,205,107, 94,131, 39, 62,241,137,120,213,171, 94,133, 51,103,206, 20,239,175, 37, 92,137, 8,175,127,253,235, -241,156,231, 60, 7, 47,123,217,203,162,241,211,115, 85, 5, 60,102,142, 6, 55,111,116,162, 6, 63, 39,229,233,247, 42,113, 76, -115,196, 68,132,219,111,191, 29,215, 92,115, 13, 94,253,234, 87, 15, 74,230, 52,239,253,190,247,189, 15,143,126,244,163,241,177, -143,125, 44,190, 71,149,225,148, 4,167, 53,249, 68,132, 63,250,163, 63,194, 19,159,248, 68,188,244,165, 47,141,112,188,126,159, -158,147, 66,221,203,229, 18,127,253,215,127,141,159,255,249,159,199,139, 95,252,226,120, 93,103,207,158,141,231,169,215,112,208, -146, 62, 21,217,201, 37,114, 53, 50,174,199, 40,103,228,215,205, 97,114, 7, 78,225,115,157, 55,218,209, 77,101,110,213, 81,210, -116, 11, 0,124,246,179,159,197,115,159,251, 92,124,250,211,159,142,186, 2, 10,189,231,240,190, 58, 32, 55,220,112, 3,126,228, - 71,126, 4,207,121,206,115,138, 74,132, 66,139, 32, 91,184, 19,238, 32, 61,176, 49, 3,254,197, 19,190, 23,119,205, 25, 59,155, -151,227,214,126,134, 27,255,246, 43, 56,235,128,217,116,134, 9,122,244,189,239,152,231,216, 43,209, 9, 38, 0,207, 0, 98,204, -151, 18,250,180,123,198,250,237, 0,222,254,233, 59,113, 43, 46,197,233,233, 73, 60,230, 9, 79,193,244, 24,240, 77, 0,187,155, -247,199,238,209, 7,225, 78,123, 20,238,200, 37,209,135,238,200, 43,162,187,201, 12,115, 58,130,183,125,114,142, 95,127,241,171, -240,249, 91,239,129,157, 30,193,198,145,139,112,234,212, 41,204, 38, 6,196,140,219, 78,239,225, 21,111,184, 17,207,127,213,205, -248,178, 5,246,103,132,238,200,209, 16, 58, 0,223,220,103,156,157, 94,142,179,230, 98,204, 67,133,142,241, 18, 20,232,242,190, - 77,179, 13,223,177,174, 51,216,193, 12,167,236, 12,219,211, 75,112,143, 59,130, 61,204, 0,222,196, 46,128, 63,125,239,223,227, -119,255,248, 47,240,197,123,246,112,143,179,144,163, 83, 96, 54,195,153,249, 2,230,232, 9,208, 69,151,225, 29, 31,248, 4,126, -238,255,124, 37,254,211, 71, 23,248, 34, 54,112,247,229, 15,196, 87, 38, 71,240, 13,153,160, 15, 29,232,148,127,180,234, 33,255, - 31, 72,190, 93, 16,159,185,240, 40,246,188,141, 96,199,123,245,118, 13,135, 62,228, 93,138,118,149,101, 42, 46,104, 55,167,134, - 40,125,248, 47,237,203,174, 57, 53,104,196,233, 28,238,215, 1,155, 75,224,113,223, 6,252,220,179,127, 24, 87, 92,113, 25,110, -187,251, 14, 92,122,108, 19,199,250,109, 28, 49, 2,154, 76,225,216,192, 65, 96, 97, 1,219,195,217, 30, 19, 2,156, 16,206,236, - 89,200,236, 18,220,181, 55,193,235,222,114, 35,222,116,211, 41,108,195, 59, 13,243,232, 40,135,220, 86,252,219,203,102, 26, 2, -102,179, 14,123, 65,180, 89, 0,204,166, 71, 48, 95, 44,144,228, 47,214,195,232,218,223, 91,163,211, 90, 99, 93,137,117,106,164, -114, 37,180,220,105,200, 13,219, 15,252,192, 15,224,234,171,175,142, 13, 86,206,158, 61,139,219,111,191, 29, 95,253,234, 87,241, -129, 15,124, 32,150,210,169,129,211, 6, 47,250,251, 99,186,231,121,109,179, 74,188,230, 15,141,248,114, 65,152,173,173,173,104, -160,174,190,250,106, 92,117,213, 85, 56,113,226, 4,142, 31, 63,142, 59,238,184, 3,111,125,235, 91,241,245,175,127,189, 16, 77, - 81, 88, 59,103,226, 43,107,191, 46,241,218,216,216,192,163, 30,245, 40, 60,238,113,143,195,201,147, 39,177,187,187,139,253,253, -125,124,237,107, 95,195,233,211,167,113,243,205, 55, 23, 37,103, 26,217,182,148,242, 90,215, 52,246,216,216,216,136, 13, 83,148, -208,151,223,191,131, 58, 7,122, 31, 55, 54, 54, 10, 5, 61,173,117,207, 83, 16, 26,189,231, 14,150, 70,252, 91, 91, 91,120,244, -163, 31,141,107,174,185, 6,211,233, 52, 50,233,207,157, 59,135,207,126,246,179,248,196, 39, 62,129,187,238,186,107,189, 90,152, - 46, 83, 11,204,204, 6, 76,191,128, 19, 47, 15,123, 82,211,101, 29,112, 87,239, 69, 99,122, 24,204,132,176,101,166,216,182,187, - 1, 70,246, 53,224,190, 87,122,143,110,185, 68, 7, 96, 30,214,210, 6, 44,166, 16,156, 12, 41,185,109, 3,156,115, 30,229,218, -132,175,133,159,194,115,104,108,248,251, 37,255,199,143,224,218, 7,122, 17,171, 63,248,243,143,224,255,249,175,119,248,115, 1, -240,192,203,128, 71, 60,244, 82, 92,186, 5,136,157,227,214, 91,183,241,119,183, 1, 95,220,245,228,189,185, 1,122,199, 0, 25, - 76,186, 9,204, 98, 23,151, 79, 1, 89,248,223,217, 9,255,176, 53,193,246,238, 18, 27,225,119, 23,188, 9,152, 77,192, 46, 64, -110, 27, 39, 1, 92, 6, 79,220,227, 77,224,139,115, 6,120, 11, 27, 44,152, 44,118,112, 4,158,184,247,125, 87, 2,151, 93,114, - 4, 71,143,222, 15,219,187, 61,110,187,237, 54,124,253,206, 37,110, 59, 7,156,177, 30,221,235,197, 19,232,118,151,192,116, 11, - 56,179, 27, 64, 64, 54, 88, 58, 90, 81,109,227,130,192, 21,195,245,254,191,143,204, 38,216,159, 47,177,184, 15,107,203, 47, 24, -245, 11,143, 98, 91,240,162,141,236, 69, 30,137,125, 87,182, 56, 91, 28,224,122, 64, 44, 76,152,160,158,122,166, 76, 79, 23,159, - 87, 35,111, 85, 89,221,179,239, 48,155, 26,200,190,141, 27,192, 38,128, 31,250,129,203,241,175,126,244,105,120,208,177, 14, 15, -216,191, 7, 27,118, 15, 75, 11,236, 45,151,112,232,209, 77, 24,147, 14, 16,211,225,246,179,115,108, 94,254, 32,124,249,180,195, - 91,222,253, 97,188,243,253, 95,194,215,238, 81,200,205, 27,245, 62, 8, 80,164,166,144,145,219, 94, 68, 52, 19,227, 13,208,222, -238, 18, 78,124,175,120, 39,171,115,239,106,176, 21, 26,175,107,167,213,216,107,151, 47, 53, 22,185, 82, 90,110, 20,148, 96,149, - 71,139,181, 81,100,102, 28, 59,118, 12,103,206,156,137,239,205,141, 80,173,123,174,101, 90, 26, 29,107,228, 87, 47,118,141, 66, - 21,202,213,207,168,236,109,171, 46, 92, 13,170,166, 35,242,154,245,186,187,156, 26,243, 26,165,168,213,224,234,177, 1,188,216, -205, 61,247,220, 83, 84, 2, 44, 22,139,120,142, 10, 81, 43,235,252,192, 80, 84, 16,244,209,207, 28, 61,122, 20,243,249, 60,138, -255,172,227, 69, 28, 57,114,164,208,102,175,199,179,117, 46,122,125,185,132,111, 43,226,175,255,174,191,175, 53, 78, 3,163,206, - 29,224, 0, 35, 6, 91,102, 2,107,189, 35,177, 73, 94, 88,230,116, 31,214,199,198, 17, 96,190,128,113, 22,157, 97,204,165, 7, -102, 83,208,158,243, 45, 64, 39, 29,128, 37,166, 75, 79,180, 91,120, 19, 15,208, 20,144,125, 28, 11,235,124,159,124,219, 83,200, - 17, 44, 23, 11,108,208, 18,212, 1,115, 54,152,244, 22,151, 89,224,119,255,247,239,199,211, 30,114, 20,204, 83,252,222,159,127, - 28,127,252,190,175,122,131, 29, 86,230,230, 12, 96,235,165,234,143,134,231,239, 1, 48, 55, 27, 62,244, 94, 44, 0,233,209, 25, -130, 88,193, 52, 40,228,197,250,243,112,217, 11, 23, 0, 57, 6, 22, 54,210,215,208,113,143,153,179, 80,208,155,166,192, 61,214, - 11,231,146, 88, 24,183,192, 81,227, 73,129,121, 54,124,138,132,248, 45,209,133, 22,178, 61, 64, 22, 8, 85, 5, 36,128,113,137, -120,235,195,130, 46,124,143,107, 26,119,189, 14, 66, 86, 14, 8, 96,121, 31, 24,118, 17, 58, 48,119,232,194,227,127,144,156,186, - 45, 58, 60,113,105,208,165, 15, 18,140,190, 45,171,178, 91,189, 88,141,159,162, 14, 46,230,181, 60,223,156, 61,160, 47,158,193, - 50, 95, 88,108,108, 77,176,191,187, 68, 31,140,250,127,186,233, 78,188,225,166, 63,197, 67, 79, 0,255,234,177, 39,112,197,241, - 99,184,255, 3,191, 13,151,158,188,204,111,100,251,251, 56,125,230, 30,220,179,125, 14, 95, 63,189,141, 55,191,243,191,226,115, -119, 0,123,236,163,132, 30,192,214, 6,225,220,190, 4, 24, 44,103,159, 74,185,160, 58, 6, 27, 96,177,112, 88, 90,192,237,205, - 33, 66, 96,120, 3, 40,117,226,189,122,168,161,203,235,199,243, 8, 74, 13,169, 70,113,121, 71, 51,221,164, 53,194,238,251,190, - 48,230,106,240,114,153, 84,173, 63, 63,115,230, 76,252,125,173,171,214, 77, 94, 13,186,170,219,141, 25, 57,109,128,178,189,189, - 29, 85,203,234,238,102, 53, 28,237, 91,122,154,168, 59,223, 18,133,201,197,113,114,248, 58, 55,126,121, 23, 57,189, 62,117, 62, -244,187,183,182,182,226,103, 20, 98, 86,216, 90,157,142,188,231,124,237,104,213,209,240, 88,132,173, 61,228,251,190, 47,222,175, -186,235,171, 30,185,209, 87,199, 78,243,230,121,223,128, 35, 71,142,196, 38, 58,122,189,173,190,235, 57,122,161,206,160,166, 81, -244,222, 40, 18,176,210,160,135,169, 78, 78, 96,120, 10,103, 13,118,173,192,132,226,173, 51, 2,244, 22,192, 69, 23, 3,123, 11, -111, 1, 1, 76, 54,166,152, 47,247, 3, 34,215, 65, 16,206,143, 60, 94,103,145,243,184,125, 23, 49,179,113, 20,243,253,179, 56, - 50,243,109, 34, 22, 11,191, 63, 76, 38, 71,177,223,159,243,249, 45,199,232,173,245,171,110,105,177, 49,157, 66,120, 3,180,185, -137, 61, 0, 59, 96,200,236, 34,223,150,125,177,173, 46, 3,108,128,210,157,217, 10, 36,158, 30, 96,241, 56,161, 21, 88, 48,246, -196,160, 51, 29,140, 88,144, 91,132,249,168,197,108,161,104, 7,189, 7, 7,157, 64,156, 69, 79, 4, 51, 97, 44,172,197,124, 1, - 95,188, 59,241, 91, 90, 15,198,105, 27,174, 47,196, 1,100, 39,216, 67, 23,154,211,204, 32, 52,131, 19,235, 17, 12,218, 5,172, -151,154,165,192, 47, 50, 97,116, 60, 58,217, 50,170,233, 57,235, 66,133,173, 75,251,231,164,235,192,206,161,119, 12,129,131,131, - 11,123,234, 97,114,167, 4, 87,181,126,189,240,184,240,232, 98,100, 29, 22,117,130,219, 5, 16, 23, 13,250,160,109,111, 88, 12, - 34, 30,158,154, 5,153,200, 14, 14, 61, 12, 22, 8, 26,148,236,176,223,219, 40, 33, 41, 6,216,183,222, 48,127,113, 9,252,250, - 59, 79, 97,214,157, 66,199,255, 0, 18,160,119,126,143,232,157,110, 41,169,249,138, 56,239,119,240,100, 3,167,233, 40,196, 44, - 1,187,139, 36,216, 56, 60,207,222,101, 95, 36,254,187, 25,226, 57,171,174, 42,143, 89, 19,173,215,134, 62,207, 9,235,251,212, -136,183,186,153, 41, 4,171,155,187, 18,225,212,248,231, 16,115,173,137,190,179,179, 51,136, 22,245,123,149,168,166, 81,179, 58, - 25,185, 65,169,115,200,185,196,169,254,142,254,102, 30,141,231,117,216,122, 46,234,156,228,176,120,158, 90, 80, 53,180,250,161, -141, 74,244,253,154, 86,200, 17,131,220, 49, 80, 49,154,156, 64,152, 59, 32,235, 12,122,126,239,242,146,182, 58,125,178,206, 41, - 80,164, 65,127, 59, 63, 31, 77,201,168,241,215,223,104, 33, 53,250, 93,234,224,141,233,239,215,122,240, 43, 3,117,177,222, 56, -132, 4,152,193, 12,211,201, 6,246,101,215,175,233,189, 69, 74, 73, 89,193,124,127, 31, 98,130, 3,191, 92,122, 99, 71,136, 77, -157,108,232,177,206,161, 7, 56, 83, 15,183, 63,199, 36,112,101, 12,124,147, 19, 0,232,151,251,232, 96,176,180, 64,199, 51,108, -177,197,134,115,152,153, 14,189, 3, 78,239,156,197, 78,191,136,209,175,204,151,222, 28,210, 81, 76,197, 97, 66, 61,118,101, 23, -214, 2,189, 91,122, 5, 72, 6, 96, 45,172,243,196,220,141,233, 6,246,247, 45,122, 11,175, 14,199, 6, 91, 51,131,253,253, 5, -140, 1,200,116, 88, 46,250, 32,240,210,195,176,129,117,192, 92, 8,243,133, 0,221, 4, 52, 17,144,237, 33,139,189, 24,188, 76, - 55,142, 98,177,127, 22, 83, 7,108,116, 0, 19, 97, 41,115,104,105,160,145, 57, 4,140,126,238, 60, 89,104,226,199,100, 58,221, - 68,215, 19,196,237,198,110,117, 10,179, 23,123, 9,149,240, 56,153, 14,204,132,101, 31, 74,134,173, 11, 77,109, 76, 64, 62,189, -130,134, 17,221, 71, 19, 42,177,192, 4,210,113, 8,186,122,192, 90,108,193, 97, 54, 33,156, 93,212, 77,111, 47, 60,254,135, 55, -234,146, 71,230,240, 6,144, 50,187, 13,205,181, 71,232, 61,108, 0,170,228, 20,176, 36, 11,192,128, 65, 48, 32, 21, 95,112,234, -210, 58, 88,242, 18,178, 29, 1, 52, 35,204,231,130,221, 93,255,250, 57,117,108,245,100, 12,128,201,212, 63,185,232, 49, 51,201, - 67,118, 4,236, 47,122,127, 14,221, 20,176,187,225,124, 29, 50,229,105,191, 72, 8,224, 73,104,241, 8,159, 89,112,193,214, 76, -201,171, 83,205,215,176,215, 53, 90,172,235,199,235, 77, 87, 13,182, 70, 95, 90,158,166,125,192, 53,210,207, 29, 2,141,250,180, - 19, 91,222,229, 44,135,206,243,104, 57,135,196,115,227,158,127,175, 18,213,244,253,218, 25, 77,207, 69,141,142, 26, 19,101,128, -231,145,162, 70,248,122,158,202, 76,207,127, 55, 23,172,209,207,182,154,186,232,127,231,206,129,230,145,243,136, 92,191, 91, 63, -147,167, 43,242,243, 86,103,227, 32, 37,133, 74, 62, 83, 56,188,174,167, 63, 72,190, 50, 55,172, 74,126,203, 59,233,233,181,181, -154,239,228,136, 72, 75,145, 78, 81, 8,157, 7, 26,181,231,247,111,213, 99,102, 66, 95,111,233,130,129,112,216, 95, 46,209,251, -254,171,222, 98,237,247,232, 28,192, 33, 29,181,112,240,140,186,249, 34, 57,241, 46, 25, 34,143,182, 5, 67,229,230,222, 33,167, - 14,108, 28, 22,189, 67, 15, 96, 26,112, 59,130, 5,195,161,119,115, 44, 67,212, 72,232, 48,153,110, 97,134, 9, 22, 86,231, 5, -176, 12, 10,120, 93,128,140,151, 34, 32,222, 64,239, 22, 62,220, 54,228, 43,105,172, 55,114,189, 0,178,191, 11,160, 3,179,129, - 19, 66,239, 8,103,247, 22,209,226, 49, 4,196, 12,113, 14,126,104, 45, 8,126, 28, 45, 49,224, 44, 4, 61,102,236, 3,144,133, - 3,168,235,176, 88,248,186, 91, 7, 96,222, 3,132, 69,112,138,124,192,204,178, 12,193, 12,193,145, 71, 19, 22,115, 96,223,245, - 97,159,243,242,176,235, 2,130,110, 50, 65,191, 92,162,183, 61,152, 60, 95,201, 7, 66,126,191, 34,221,112, 41,236, 90, 65, 3, -204, 74, 74, 32, 10, 59,128, 39, 33,138, 50, 0,150, 62,232, 89, 92,128,221, 47, 60, 26,115, 46,184,240, 48, 1, 70,175,251,255, - 46, 49,129, 96,154,197,192, 11,159, 75, 23,237,200,228, 95,234, 49,131,197, 12,147, 0,255,117,216,133,117, 61,120, 22,186,166, - 77, 12,236,146,112,174,247,204,147,173, 41, 97,190,240, 11, 7,198, 11, 88,244, 78,162,175, 64,232,193,112,232, 24,176,125, 56, -203, 40,142, 33,224,141, 37,220,124, 27, 94, 62,163,132,188,242,169,238, 22, 54,110, 86,198, 76, 64,110, 9, 88,192,138,131, 4, -249,198, 21,232,123,220, 96,115, 57,207,214,166,171, 6,187,150, 22,173,115,187,121, 51,150,188,229,107, 30,229,181, 12, 78,158, -119,215,163,126,143,146,244,212,248,169, 1, 84, 99,163, 36,174,220,200,232,249,230, 29,226, 52,250,212, 72, 81,107,246,119,118, -118,138,107,209,154,236,253,253,253, 98, 12,212, 0,235,115, 42,252,146, 71,255, 57,159, 32, 79,103,212,237,110,107, 3,169,207, -231,149, 1, 7, 41, 41, 84, 98, 91,173,159,159, 27,232,149, 11, 36,180,155,213,223,207,175,119,107,107, 43,222,139,220, 96, 43, -227,190,206,153,231,165,114,185, 35,150, 55,117, 81, 72,255, 32, 45, 53, 67, 80,235, 35,181, 73, 15, 76, 54, 48, 93, 58,184,229, -158, 55,185, 22,192,238, 57, 79,164, 19,224, 40, 8,232, 4,231,122, 96,219,147,214, 92, 0, 0, 32, 0, 73, 68, 65, 84,119,103, - 7, 64,135,141, 0, 57,247, 75,191,178, 5,155, 0, 77, 0, 44, 33, 88, 98, 99,234,217,240,187, 54,160,120,129,153,182,176, 61, -152, 8, 34,193,176,201, 18, 75,237,186,198, 19, 44,123, 1,216, 96,107,211,151,186, 81,239, 96,204,110,209, 83, 92, 0, 44, 92, - 7,134,175,177,119,139, 5,132,217, 39,204, 13,195,245, 75,108,248, 46,238,232, 93, 31,224,246,206,159, 95, 55,241,192,119, 63, - 7, 4, 48,179, 13, 88, 43, 65,193,205,133, 77, 7,152,109, 78, 49,223,247,123,136,254,176,244,190, 90,103, 58, 97,236, 89,135, -158, 8,100,142, 0,112, 16,235, 83, 91,100,129,205, 9, 65,122,129, 19,192, 46,252,103,187,205, 45,244,203, 96,136,237,220,243, - 25, 86,100,181,157,166, 42,133,130,211, 65, 96, 99,124,129,142,235, 61,236,174,113, 82,224, 42,245,228,188, 83, 70, 30,188,128, -181,192,114,223, 71, 59,204,193,193,177,112,114, 33,155,126,225,209,222, 23, 74, 56, 15,165,132,130, 68,242, 25, 71, 87, 94,245, -158, 57, 66,245,254,171, 36, 40, 58,169,105, 53,136, 62,128,159,152, 93,104,237, 10,131,189,197, 50, 68, 2,128, 91, 10,250,165, - 64, 28, 5,223, 24,152,146,193, 20, 38, 26,121, 11,130,227, 73, 4,166,104,185,231,153,174, 43,160, 73,117,163,205,100, 10, 16, - 99, 49, 95,122,104,145, 61, 99,213,115, 0, 36, 66,199,173,127, 90,114,164,198, 87, 55, 99,141,190, 52,250,211,141, 56, 87, 87, -211, 28,178,126, 62,143,102,245,189,121, 39,178, 28,222,213,168,148,136, 98,158, 93,127, 71,235,160,213,112, 43,171, 90, 85,201, -212,129, 80,242,158, 26,201, 60, 71,157, 71,150, 57, 36,175,186,227,234, 60,236,236,236, 20,173, 67, 39,147, 9,250,190, 47,250, -185,251,210, 64, 19,207, 51,111, 56,163, 93,216,114,231, 33,255, 91,211, 0,154, 91,174,219,208,230,198, 93, 13,121,171,228,108, -213, 67, 53,253, 53, 77,145,215,213,139, 72,154, 3,141,227, 50, 68, 89,122,244,243,201,223,215,221, 61,239, 44, 45,251,208,214, - 54,140,131, 32, 68,221,147,174,128, 98,245,251, 20,130, 5,251,200, 84, 32,254,187, 67,174,201,137,131, 64,252,231, 9,229,191, -236,251,162,228, 49,133,152,110,177,141,189,229,190,239,162, 54, 73,101, 95, 27,161, 12,126, 31,130,253, 62,149,164,110, 24, 19, -215,187,129,210,204,184,224,168,236, 47,108,208, 57, 39, 31,110, 75,128, 7, 58,134,131,245,111, 13,231,166, 46,255,221,110, 3, -223,112, 23,227,116,119, 25,182,251, 73,218,104, 66, 10,155,179,235,240,249,100, 95, 86, 59,209, 60,159,115,193, 35, 9,156, 25, -202,134,128,148,192,211, 1,206,161, 11,235,199, 46, 22,128,181, 16, 31,167,251,255,103, 96,190,167, 78,160,114,129, 0, 54,254, - 4, 22, 75,141, 32, 12,164,183,144,222, 34,150,187, 79,128,189,165,248,136, 89, 82, 8,212,207,119, 35,121, 88,235,233, 92, 13, -189,231, 70,125,185, 4,119, 29,120, 50,137,247,205, 58,183,162,211, 34, 69,227,157,127, 55,177,231, 7,193, 57, 56,107,125,126, -127,146,174,169, 57, 79, 14,250,160,127,162,199, 11,143,177,219,217,137,207, 9,185,129,208,161,207, 60,119,144,130,192, 33,160, - 32, 3, 81, 68,197,146,216,167, 20,120,240, 40,224,169,144, 19, 74,250,142, 32, 56, 24, 40,225, 14,133, 59,145,104,111, 54, 62, - 67, 32,109,133, 30,156, 11,215, 80,115,170,175,161,244,155,235,212,130,110,140, 99,132,169, 58,194,173,159,187, 15,110,192,154, -215,199,223, 33, 20,206,229,208,139, 56, 87,228,185,183,215,194, 13,194,197, 97,206,101, 77,172, 33, 24,133,179, 35, 21, 36, 31, -139,131, 12, 48, 21, 9,207,116,254, 84,253, 46,141, 28,243,239,169, 63,223,122,223,202,235,103, 28,136,216,209, 60, 47, 23,197, -162,188,229,227, 64, 90,203, 32, 55,109,128, 18,242,228, 46,188, 95,200, 15, 26, 7,142, 9, 2, 18, 38, 20,184, 48,186, 58, 92, - 95,134, 0, 49,121,204,177,212,181,235,128,126,233, 87,255,253,142,205,240, 61, 15,251,118,124,219,229,199, 33, 34,248,240,167, -191,136,111,124,243, 52,206,206,253, 74,229, 80, 34,198,240, 61, 26,150,214,105,152,154,109,218,156, 82,130,217,244,142, 6,172, -224,144,187,116, 62,121, 62, 80,207,191, 78,118, 55,255,110,125, 95,137, 40, 20,215, 77,237,247,158,151,177, 25, 36,227,185,189, - 46,138,215, 27,215,133, 67,204,159,124, 47, 59,223,133,123, 64, 82, 31, 69, 37,192,240,211,245, 26, 21, 89,253,125,235,246, 90, - 89,191,188,215,157,223,170, 61,125,237,235,247,114,247,148,198,158, 54,102,127, 14, 16,151,235, 57,241,127, 87,242,228,127,111, -167, 75,254,145, 1,172,117,236,106,186,151,163, 31, 55,232,241,164,240,202, 5,152,255,126,107, 2,181,206,191,120, 31,153,161, - 49, 60,212,125,118, 16, 90, 49, 78, 78, 86,158,207,129,200,142,180,194, 72,255,163, 77,234,132,106, 9, 13,143,190, 22,171, 94, -148,116,160,117,146,198,223,157,223,226,202,157, 14, 25, 62, 53,216,148,243,243,150,106, 19, 17,155,148,228, 20, 1,232, 60, 87, -100,105, 5, 71, 54,167,216,221, 91,120,116,128, 0,230, 46,228,217, 25,196, 12, 39,146, 12,216,170, 13, 76, 52, 98,175,238,191, -220, 23, 55,209,173,156, 34,107,253,187,243,253, 48,225,208,140,247, 81,163,151,137, 72,149,183,199,173,156, 18,242, 79, 57,242, -149,245, 54,100,221,240,186, 3, 26,253,181,227,127, 47,141,250,125, 4,182,135, 45,153, 58,185, 55,145,231, 58,170,200,189, 53, -106,185, 39, 73,231, 49,251,214,253,126,125,254,131, 69,145, 49,186, 91,207,223,219,168,253,190,242,244,254, 9, 65, 67,135, 58, -247,123,131,100,228,142, 15,137,191,215,165, 61,119,163, 27, 0, 73,251,251, 15, 27,217, 28,196, 40,184,149, 88,211,122,251,124, -216,185,225, 50, 87,158,170,248,150,170,205,194, 69,242,155,126, 95,121,150,134, 12,172, 44,131,194,164, 39,148, 90,113, 35,231, -225,235, 78, 92, 72,126, 57,184, 67,205,131,182, 31,198,231,109, 79,243,251,175,215,175, 71, 19,240, 70, 10,110,127,253,122,142, - 7,156,255,239,175,119,204,152,120,176,199,172,154,131, 60,178, 62,232, 60,247,111, 28,112,253, 29,116, 93,196,243,201, 22,219, - 63,166,120,206,186,243,114, 43, 87,221,193,175,231,124,127,255, 48,223,219,250,174,182, 35,126, 31, 68,234,114,175, 6,229,255, - 47, 14,223,216,178, 93,125,204,181,218,207, 7, 62,225,193,182,122,184,163, 8, 65,200, 5, 88,112,120, 36,152,230,243,241,184, -230,188, 15,146,114, 56, 72,240,187,202,121,171,131, 45, 34, 26,125,191, 66,200, 38,176,146,173,179,135,244, 99,235,249,231,154, -206, 6,143, 44,180,250, 58,235,133, 86,111,162,235,156, 82, 87,189, 78,135,220,172,221,136, 81,112, 7, 88,171,116,128,241, 25, -235, 62,150,198,137,177, 68, 63, 24, 71, 14, 6,127, 25, 34,121,130,169,170,224,187,236,250,213,221, 26,206,111, 42, 42,194, 93, -112, 10, 28, 56,164,236,206,111,213,212, 87,229, 64,161,172,236,176,199,123,119, 6,174,233, 92,158,207,195,196,121, 87, 30,109, - 37, 3,126,144,245,251, 79,233,184,126, 92,204, 96, 29, 74,150, 58,150, 67,204, 35, 27, 37,215,112,159, 29,169,218,255,199,214, -193, 42,183,178, 30,135,238,241,143,125,252,121, 27, 36, 71, 7,136,132,215,177,147,207, 35,167,155,255,230, 58,246,242,170,243, -115, 33, 15, 75,154,152,172, 48, 82, 98,192,246,206,167,208, 26,175, 11,220,218,210,168,117, 99,104, 6, 77, 33, 14,126,116, 36, -112, 86,198, 49, 94, 18, 95, 94,216, 56,239,248,247,154,115, 30, 59,255,220,232, 31,196,168,183, 92, 71, 71, 24,117,138,116, 92, -234,215,245, 82, 56,240, 43, 56,144,209, 76, 21, 1,232,209,132,252,108, 46,157, 75,228,169, 84, 32, 23, 98,199,225,181,177, 12, -249, 20, 68,190,144, 9, 76,209, 25,171,127, 47, 18, 40,129, 65,131, 30, 61,255,114, 78,186,149,175,215,243,151,171,231,114, 61, -255,252,219, 6,200, 18,141, 59, 91,131, 72, 80,146, 91,211,187,154,208,149, 34, 71, 1,124,253, 52, 51, 12, 17, 68, 44,196,186, -129, 54, 62,216, 51,191, 23,125,239,133,159, 58, 95,246,234,156, 11,156,144, 52, 63,253,118,144,102,148,196, 22,202,158,105, 15, - 16,132, 4, 36,254,254,139,117, 99, 83, 63,166, 57,198,254,206,205, 26, 11,193,194,121, 65, 23,146,120, 52,224,226,239,250,232, -156,196,243, 35, 26,174, 99, 34, 30,172, 91,125, 31,139,248,244,133, 12,239,215,216,188,170,231, 49,113, 40,137,101, 19, 73,164, - 74,138,213,127, 53,198, 92,207,235, 85,227,183,110, 60, 13,113,241,124,254,186,131, 20,159,215,191,243,231,235,239, 59,236,177, -119,237,125, 74,255,206,171, 85,106,116, 85,200, 55, 29,203,207, 15, 78, 70,207,175,126,221, 65,214,206, 63,221,167, 70,175,131, -202,253, 95,234,249, 47, 67,183, 75,215,129, 27,217,191,187,218, 40,142, 77,174,209,141, 90,100,208,253,236,190,132,199, 91, 68, -181,226, 28,248,252,225, 19, 19,114, 42,113, 35,209,244,115,216, 1,197,165,239, 39,165,236,102, 76,102,130,193,230,198,228, 94, - 37,198, 89,232, 94, 57, 5, 34, 7,103, 5,140,166, 12, 72, 14,101,212, 87,157,147, 70,210, 92, 17,114,198, 38,117,220,248, 71, - 34,251, 92, 48,134, 2,174,164,223,239, 8, 62, 39, 27,238, 75, 52,186,193, 3,102,241,162, 34,138,136, 80,128,135,245,125, 68, - 38,116, 19, 47,175, 87, 2, 59,139,144, 12,147,126, 62,215, 45, 40,126,175,218,116, 89,218,112, 35,115,105,208,205, 8,146, 66, -194, 32, 18, 16,165, 72,213, 51,191, 3, 66, 4, 3, 33,192,245, 54,108, 30, 97,147, 13,248, 91,174,149, 40, 21,236,238, 90, 76, - 26, 73,177,140,191,191,254,175,153,153,120,231,221,249,117, 46, 46,149,128, 10, 1,231,246,118, 49,153, 78,125,126,220,122,242, -235, 70, 55, 73, 27, 42, 19, 32, 12,203, 2, 51,241,154,238,190,130, 67,208, 75, 15, 54, 60,152, 83,249,126, 34, 13, 84, 35, 39, -135,210,164, 59, 84, 80, 33, 92,174, 1,189,127, 34,130,201,136,113, 48, 97,126,181,142, 66, 50,106,136,117,127, 26,115,210, 56, - 32, 78,254,126, 87,206,106, 56, 26, 98,128, 3,114, 21,156, 73, 50, 28, 29, 1, 99,130,168, 81, 54, 39,243,127,214, 90, 63, 31, - 10, 35, 69,201, 88, 29,194,168,214, 70, 57,150, 24,229, 28,145,112,148,112,116,193,232,213,198,112,204,152,175, 53,130,131,253, - 35,145,167, 91,251, 86,199,156,173,235,114, 78, 57,132,230, 67, 4,144, 84,125,247, 68,113, 24,130, 85, 39, 95,247,177,176,207, - 73, 92,107,136, 21, 26,245,145,214,189, 14,206,198, 87,215, 49,197,251, 68,162, 71,196,163, 39,196, 74,216,195,134,198,189, 35, - 41, 39,220,112, 19,226,149,176,169,136,172,206, 5, 50, 29, 16,126, 62, 63,163,126, 80, 67, 54,118,254, 57,122,219, 52, 46,141, - 5, 25,191,147,220,129,234,164, 87, 62, 44,157,119,126, 66,199,223,172,249,253,129,135,154,157,255, 24, 87,224,124, 28,140,218, -120,143, 25,251,252, 56,246,157, 6,109,226, 15, 19,129,195,130, 96, 2,168, 43, 35,113,147, 25,110,170,224,252,226,245,248, 25, - 41, 12, 92, 94,206, 72, 85,230, 86, 35,239,220,112,115,195,152,107, 4,229, 29,195, 10,150, 46,156, 29, 6,137,141, 89, 73,228, -206,165,254,190,184, 16,241, 73,104,141, 44, 97,124,252,166,211,117, 93,145,142,200, 35, 47, 53, 6,146,149,192,213,240,115, 28, -127, 75,131, 10, 2, 47,182, 20, 16, 57,167,247,203,101, 6,147,112, 98,235, 24,132, 24,206,245,232, 21,144,119, 12, 97,194, 36, -116, 64, 20,241,247,140,141,143,234, 69, 4,142, 28, 38,147,105, 73,212,164,161,163,170,207,217,204,160, 75,110,148,121,181, 81, - 23,150,241, 72, 77, 4,134,199, 95, 59, 28,210,214, 54,234,181, 83, 90,238, 39,169, 76,175, 78, 43,233,177, 11, 34, 89, 6, 4, - 97, 42, 94, 7, 0,211,233,205, 13,243,214,185, 98,124, 98,201,108,101,212, 40,116,210, 59, 48,204, 45,226,231,122,118,212,249, - 93, 71,234,121,164, 43,153, 81, 87, 99, 47,185, 83, 32,222, 70,232,250,212, 35,135,121,172,231, 61,118, 94, 30,201,225, 2, 86, -207,157,190,126,217, 23,247,178,248,111, 0,206, 16, 92, 88,107,249,218, 31,204, 67,100,234,166,162,133,135, 94,115,224,222, 61, -124,221, 25, 19,188,243,208, 56,186,176,215,233, 49, 62, 79, 46, 56,122, 85,164,222,138,148,242,201, 39,107, 24,169,113,240,207, -215,168,157, 7,251,240,190, 34, 89,144, 12, 61,227,149, 48,138, 70,144,234, 73,129,209,145,129,176, 59, 47,248,200,111, 58,116, -175,145,140, 85,227,207,204, 43, 55, 43, 95,103,238,154,112, 89, 61, 46,245,235, 7,137,212, 91,198,190, 5,223,229,207, 55,239, -121,123,112,176,180,203,104,164,153,120, 16, 65,119, 1,126,215, 8,153,179,205, 67, 55, 20,245,154, 37, 84, 10, 20,146,183,209, - 25,144, 44,239,173, 81, 63, 48, 97, 83,108, 70,196, 1, 18,141,149,150, 38, 25,114,150, 80, 67,237, 35,114, 98,175,214, 66,112, - 69, 68, 94,112, 54, 48,140,212, 83,196,174,169, 2,191,197,249,104, 45,155, 55,182, 52,140, 6,229, 49,236,213, 80, 88,202, 27, - 3, 42, 54,180, 41, 7,194, 88, 48, 46,130, 12,102,101,160,183,190,175, 98,199,140,217,108, 35, 9, 42, 89, 11,129, 96, 50,157, - 97,105, 83,167, 66, 43,128,115,130,142, 59,175,124,184, 44,225, 81, 71,229, 57,187, 60,255, 41, 82, 70,235, 0,156, 91,191,105, -166,247,211,224,104, 50, 10,187,191,239,213,184,172, 9, 58, 52, 18, 92, 5,151,143, 31,195, 60, 83, 53,193,240,124,167,169,163, -108, 77, 9,188,204,156, 83,157, 9, 53,204,115, 91,124,167, 70,111,164,250, 24,189, 61, 47,103,229, 32, 72, 95,174,176, 57, 48, -152, 34, 43, 3,130,132, 42,135,190, 25,185, 19, 31, 68, 5,136, 40,104, 54, 12,124,222,112,100, 56, 1, 68,236,232,181,173, 66, - 26, 69, 4,174,247, 78,135, 20,105,153, 12,181,117,146,170, 46,194,126, 72, 1, 49,145,144, 62, 92,233,116, 56,183,250,117, 97, -228,197,152,121,144,204, 49, 85,168,243, 32, 56,244,113,126,152,184, 30,243,253,179,235, 40,229,228,114,168,104,204,168,231, 27, -174, 91, 65,130,138,239,147,131,211,112,206,103,194,117,102, 77,127,237,117,193, 61,115, 17, 57, 38,216, 37,192, 51,213,235, 28, -115,193,222, 83, 34, 17, 56,241, 34, 30, 90, 30,124,208, 99,216,233,207, 59,109,177, 42,210,173,157, 38,138, 11,166, 69,167,242, -158,162, 16, 13,137, 28, 58, 30,213,235,102,196,217,200,157,129, 26,230,108,230,232,196,134,250,101,138,199,218,105,203, 35,224, - 26,125,232, 12, 39, 56, 48,207,197,135,239,153,134,249,193, 85, 68, 85,212,183, 83, 70,152,203,210, 5, 30,204,176,213, 52,114, - 49,202, 98, 73,157,138, 57, 71, 8,136,253,249,178,148,223, 21,115,169,190, 67, 32,169,114, 83, 72,249, 16,115, 48,246, 20, 96, -120, 10, 68, 31, 10,185,108, 59,164, 8,137, 41,230,195, 74,196,134, 86, 44, 16,146,176,185,101, 70, 46, 68, 90, 68,222,249,225, - 16,160, 57,120, 1, 23, 27, 34,112, 53,248, 16,223,109,137, 1, 76,121, 18, 54, 77,139, 46,196, 56, 66, 4, 19,218, 50, 19,145, - 23,143,225, 36, 36, 36,217,140,140, 96, 82,232,173, 96,197,249, 84, 75,133,162,152, 53, 37,151,181,129,137,247, 55,156, 67,141, - 68, 30,118, 15, 98,208, 74, 84, 47,170, 9,162,218, 15, 67,138,195, 35,153,237, 61,119, 21,183, 34,138, 74,113,185, 86,108,180, -122,227, 1, 80,217,167,193,172, 69,228,234,207,229,159, 31,164, 55,100,164,104,191,129, 98, 20,231,166, 67, 66,228,123,124,132, -165,230,141,118,216, 31,116,169, 72,114,194,157,248, 68,232, 88, 52,158,183,188, 30,162,170, 4, 10, 72, 3,235,188, 22, 63, 55, - 56,114,198, 36, 34, 36,122,132,225,136,152, 0,237, 52, 69, 76, 47,100,156,131, 65,206, 62,219,183,226, 28, 41, 74,112,218,129, -118,156, 39, 97,255,175, 35,251,174, 5, 11,141, 77,234, 22,105,199, 29, 38, 42, 63, 4,204, 62, 86, 74,118, 95, 63,162, 39, 20, -115,100, 85,238, 44,131, 76,135, 71, 31,229,214, 17, 80,126,172, 61,175,218,145,185, 55,156, 2,111,232,184,204, 65,202, 97, 74, - 12, 13, 76,195, 35, 51,209,235, 31, 70,118,249,249,183, 88,234,156,195,191,202, 61, 40, 34,137,218,105, 72,145,125,107,226,182, -136,110,249,220,235,196,198, 77,178,128,191,165, 97,160,179,107,210,180,144,227,112,190,168, 4,109,194,174, 66, 89, 63, 1,132, -136, 58,119, 28, 58, 78, 70,213, 80,136,196, 57,207,215,122, 66,148, 71, 19,242,136, 28, 32,161, 0,207,154, 2, 46, 79,215,111, -194,253, 52,225, 44,186,193, 12, 34,152,132,246, 48, 13, 8, 62,241,136,241,146, 44,191, 65,132,200, 63,187,161, 66,129,159,173, - 4, 75, 69, 50,200,239,120,204, 41,255, 30, 27,139,146,255, 46, 31,117, 51, 24, 57,146,148, 95,127, 64, 29,212,168,185, 80, 62, -231,244, 28, 66,174, 48, 16,209, 72,180,196, 76, 89,231,129,136, 6,110, 16,139, 18,241,136, 77, 23,137, 69, 57,113, 45, 63,230, -175, 75,194,132,189, 4,238, 10,162, 82, 94,236,239, 9,117,158,104, 39,236,197,126, 28, 9, 58, 37,214,133,191, 75,226,157,215, -201, 24, 19,191, 42,200,168, 35,220,147,117,233,201,220,144,181,141,122, 34,186, 42, 12, 29,225,232, 28,182, 15, 6, 84, 95,207, -159,175, 97,250,252,111,206,190, 95,197,154,244,121, 23,174, 41, 15,154,148,163,197, 89, 9,234,224,249, 44, 61,225,156,172, 76, -157,180,158,171, 29, 11, 19,246, 3, 14,199, 98,175, 49,165, 81,173,131, 95, 17, 25,160,173,254,185,210,233, 17, 22,159,183, 55, - 62,226, 78,118,129, 32,224,181,200,110, 51, 40,210,156, 62, 73,145,134, 13,232,145, 4, 7, 97,200, 95, 38,106, 87, 22, 83, 5, - 17,229,175, 31, 6, 30,167, 92,252, 34,159,160, 7, 12,180, 73, 92,243,125, 7,115, 10,120,232,204, 28, 58, 35,178,174, 78,241, -240,233,133,214,231,155, 11, 58,192,231, 69,126,116, 69,218,164, 73,228,161,213,206, 91, 30,201,180,190,147, 43,156,157,197,167, - 20,184,130, 47, 41, 35,172,149, 70,199, 68, 99,212,204, 73, 18, 53,141,189,122,196,236, 42,130, 11, 39,131, 27,191,131,105,148, -195, 97,186,100,164,162,225,113, 73,165,208, 7, 50, 46,122,240, 57,196,201,129, 56,199,153,195, 64,196, 62,178,165,208,222, 55, -192,237,145,175,162,145,120, 24, 43, 29,255,124,179,106, 70,109, 50, 22,177, 81,212, 93, 45,140, 54,123,130,143, 49,156,233,171, - 53, 88,189,209,129, 30, 18,214,172, 72, 48,246,174, 16,121,113, 49,194,204, 54,173,194, 17, 64, 84,143, 75, 24, 8,146, 86,107, -110,228,145,156, 34, 27,210, 81, 66, 18, 58, 55,123,163,235, 2,121,200, 49,135,102, 48, 20,175, 84,104, 88,226, 89,150,156,154, - 96,136,169,153,198,144,236,251, 60, 18,146, 35, 34,233,115, 34,185, 81, 7,106,118, 50,137, 4,167, 78,171, 78,252,102,155, 31, -153,253,252,227,192,222, 55, 12,244,241,252,199,170, 76, 66,225, 83, 6, 73, 87, 59,195,202,245, 89,167, 43,234, 72,155,132,124, -169,150, 34,149, 78, 70,255, 30, 59,214, 92, 25, 93,255,202,169,148,176,190, 11, 68, 52, 70,194,105,206,168, 62,168, 19, 95, 5, - 81,192,212,245, 63, 69,118,148,192,217, 66, 88,242,231, 21, 17,203,100,116, 77,204,140, 99,192,151,201,155,120,213, 70, 61,190, - 54,194,149,200,199, 88,217,247,227,169, 9,106,114,141, 86, 29, 45, 36, 17, 87, 3, 44, 31,255, 39,130,142, 70,148,136,206,215, - 8, 29,134, 61, 95, 37,175,214,230,207, 15, 27,129,175,255,172,196, 5,126,190,200,192,189, 5, 18,238,237,120, 18,243,192,163, -175,255,187, 5,223, 68, 35,187,130,185,159,195,147,173, 60, 21, 5,136,153,165,145,238,160, 70,196,156, 59, 11, 38,192, 69, 38, -193,250,173,247,213, 34, 48,121, 29,184,102,157,115, 52, 36,207,205,229,185,245,218,169,241,139,196, 69,164,195, 71,157,214, 71, -130,145, 33,109, 3, 59, 89,225,117, 14, 57, 53,160, 35, 19, 96,119,142, 80,124, 92,240,172,204, 84,223,172, 4,148, 80, 21, 10, -134, 63,158,147,147, 48,142,237,244, 0,168,237,228,228,121,102,225,161,123, 47, 46,116, 68,140, 34, 47, 20,151,155,136, 3, 76, - 14,215, 83, 17,137,123,227,207, 96, 86, 99,102, 42,242, 16, 69,148, 42, 23,239,112, 97,163,211, 70, 79, 49,185,147, 79, 89,114, -213,166,230, 34,177,137, 69,224,130,234,176, 31, 34,111, 8,157, 48, 96,124,254, 17,200,142, 97, 28, 29, 49, 88, 52, 77,198,190, - 26, 62,252,237,141,146,203, 34,100,175, 54,111, 66,189,187,209,116,154, 88, 88, 18,176, 88,127, 14,206,134,116,155, 70,136, 18, -190,215,193,177,135,109,149, 56,168,249,113, 32,211,166,207,165,106,195,243,254,125,193,193, 35,100,185,125, 30,205,253, 82, 16, -213, 31,202,159, 39, 56,127,172,170, 36,186, 30,132,166, 65, 7,124,183, 56,229, 79,136, 43, 9, 98,146,149,194,217, 8,239,151, -196,197, 8, 65, 51,197,223,138,100,205,144,222,140,207,103, 71,135,108,114, 40, 47, 72,114, 14,133, 12,242,232,241,124, 50,198, -159,100,108,244, 60,130,175,141, 97, 78, 56, 44,136,134, 89,212,189,202,168,215,134,189,216, 71,149,216, 23, 22,152,117,206,119, - 13, 20,129,169,114,238, 53,146,161, 17,118,171,244, 81,157, 70, 19,254,230,192, 47, 48,129, 17,175,115,215, 85,251,114, 55, 22, -193,181,160,138,166,113,169,101, 60, 15, 27,137,210,189, 51,122,247,246, 51,126, 13,186, 17, 25, 78, 28, 64, 92,102, 77,206,109, - 77,206, 92,232,176,138,124,181,243,225,162, 99,225,239, 87, 35, 93, 26,239,111,249,223, 33,155,190,218,105, 72, 95,146,177,230, -147,138, 20,139,140, 87, 48,200,144, 72,148,143,187,103,189,202,202, 72,157, 70, 17,134,112,118, 84, 3,201,149,211, 50,114,109, - 20,242,213, 66, 4, 38, 23, 33, 87,114, 90, 55,237,255, 78, 81,185,191,108, 67, 12, 54,222, 88, 18, 11, 76, 32,188, 69,214,110, - 48,250,113,211,208, 69, 47, 24, 48,242, 91,232, 23,143, 16, 5, 87,214,197,115, 80,104, 35, 23, 35, 77,141, 48,181, 55,186,214, -119,139,164, 72, 51, 42,188,107,173, 56,165, 57,164, 17, 1, 18, 55, 63,161, 67, 89,122,197, 80,202,231, 59,161,216, 58,212, 85, -115, 79, 13,183,214,165,199,156,108,158,226,160,148, 35,207,231,169,227,220, 33,201,137,110,136,229,124, 90, 13,129,112,254,250, -183, 19,231, 83, 76,226, 60,114, 34, 8, 8,138,119,119,148,201, 77, 17,117,148,112, 15,210,149, 39,182,179,150,188,166,223, 24, -164, 65,105, 60,184,168,255,219, 59, 29, 90,117,208,200,233,231,198,153, 80, 56, 15,241, 61,194, 49, 23,172, 71, 91, 85,110, 40, - 25, 79,130, 46, 64, 62,118,214, 97, 37,201,108,237,254,191,130, 79,112, 16,180, 86,207,233,124, 57, 85, 9, 41, 11, 14,111,109, - 26,195,139, 92, 25,223, 88,234,202,235,200,140, 52,138,114,230, 65, 79,140,160, 69,194, 58,243,184, 67, 71,117,164, 77, 85,245, - 79,170,132, 25,136,138, 73, 89,159, 16,234, 6,224,180, 78, 61,236, 81, 20, 29, 64,127,236, 14, 99, 16, 15, 26, 73,175,186,193, -247,165, 65, 94,245,249,131, 54, 95,105,201, 48,230,159, 61,108, 36,125, 62,215,115, 24,249,234, 85, 11,166,133, 78,212,247, 98, - 48, 41,113, 48,100,165, 53, 22,134,124, 68,215,132,237,199, 54,181, 60,215,158,193,229,241,152,193,244, 17, 54, 43,114,236,101, - 20, 63,233,180, 52, 12,131, 82, 46, 48, 29,128,116,228, 74, 80,158,173,207, 97,135,134, 41, 28, 88,238, 74,124, 51,196, 5, 84, -199,209,227,167, 24,141,197,231, 40, 56, 60,164,117,197, 50,172,223, 15,236,249,242,158,180,199,189,134,224, 37, 52,116,113,164, -231,152,229,133, 99, 13,175,100,209, 52, 7, 24,210,196, 40,203,185, 84, 82,164,198,197,136,223, 64, 56,230,200, 17,196, 94,184, -218,120, 57, 57,148,228, 81, 19, 7,129, 21,242,240, 41, 5, 56, 61, 26, 98, 10,145,149,111,221,236, 55, 34,142,114,242,181,241, -211, 14,133,166,128, 83, 51, 35,165, 80, 63,169,156,171, 11,196, 36,223,138, 74, 72,192, 70,217,251, 20, 57, 28,162,117,201, 33, -245,104, 40,109,138,168,162, 92, 39,110, 16, 37, 51, 85,164,205, 17,163,158,111,250, 45,131,225, 57, 60, 93, 97,192, 21, 66,205, -245, 48,114, 7,187, 72,143,132, 31,228,148,191,140, 37, 87, 49,138,182,222,184, 56,231,154, 98, 41, 98, 15,175, 51,114, 24, 68, -117, 45, 11,222,201,154,244, 30,175,225,117,153,102, 89, 97, 43,141, 56, 76,227,185, 34, 31,190, 78, 7,165,249,122,230,140,145, -146,241, 66, 74,202,251,218, 28,239,143,230,236,115,206, 85, 57,246,218,185,178,230,111, 12,145, 31, 31,136, 74, 72,159, 84,145, -186, 11,181, 61, 10, 9, 21, 37, 49,160, 34,211, 35,141,168,130,153,238,149, 65,203,149, 74, 91, 6,233, 48,117,224, 77,196, 97, -229, 57, 80,164, 32,173,235,210, 51,254, 88, 87, 83, 51,238, 84,184,208, 32,131,238,197, 98,146, 53,147,121,165,131, 37,128,225, - 58,253, 49,178, 8,169,117, 30, 62,146,101,172, 32,243,213,245,230, 84,193, 8, 46, 43, 21,171, 8,117,145,229,209,242,160, 67, -169,137, 9,145,186,166,107, 99, 91,221,112,164,177, 69,169, 78,132, 40, 93,197,133,242,176, 14, 41, 19,204,152,176, 9,132,172, - 96,148, 65, 96,131,162, 30, 94,175, 51,214,202, 71, 99,174, 40,134, 75,228,202, 12,130, 69,128,137,135, 14, 81, 59, 79, 58,140, -242, 77, 32, 47,185, 84, 55, 92,229,238,136, 40, 70,186, 45, 44,173,135, 20,185, 58,143,200,148, 17, 74,100,245, 74, 14, 25,151, -162, 66, 66,128, 21, 31,255,250, 90,102,223,172,197,101, 48,179,136,175,203, 87,155,229,115,170,166,161, 63, 30, 88,193,121, 90, -133, 74,196,136,201,159,175, 80, 94, 71,207, 33, 18, 74, 71, 95,217,199, 65, 49,174,126,189,220, 11,114,230,118, 50,236, 52,186, -199, 8,214, 43,193,173, 51, 74,190, 28, 32,149,211,165,127,109, 22,121,254, 26,133,129, 79,221, 26, 41, 32, 77, 17,186,139,208, -180, 39, 94, 75,138,228,213,249,165,180, 7, 30, 38, 64, 59, 76,240, 53,150,231,174,157, 9,230,213,234,121,131,231, 66, 58,132, - 70, 94,207,157,226,218,168, 39, 39, 55,212,123,143,238,185,178,114, 47,207, 91,119, 39,133, 68, 77,237,174, 31, 63,211, 24, 43, - 23,184, 2,130,164, 75, 33, 89,222,156,200, 31,109,176,207, 28,156, 57,221,189, 59,114, 18,137, 13,210, 32, 58,172, 34, 66, 20, - 39,186, 66,150, 20, 81,214,177, 60, 2, 65,221,104, 68, 86,145,104, 60,215,208,146, 93,172,143, 99, 50,141, 40, 96, 69, 9, 37, - 70, 52, 26,253,174, 54,180,231,175,253,110, 16, 75,137,239, 21, 71, 33,103,111,183,162,241, 81,148, 98,196,231,105,141,197, 32, -226, 15,151,213, 49,129,132,214,194,116,140,118, 73, 85,202, 73, 86, 11, 51,188,222,117, 93,170, 1, 47, 60,111,239, 17, 78,120, -168, 96,110,144,148,216, 44,146, 17,205,161,109, 71, 21,162, 16, 12, 70, 82,131,243,231, 96,140,137,100, 76,147, 69,226,185, 1, -175,141,186,214,177,114, 76,237, 36,114,156,207,143,101,130, 36, 35,233, 15, 30, 25,207, 90, 40,199,115, 18,204, 32,151,154,195, -172,188, 98,110,137,184, 56, 15, 40,115,224,148, 24,199,161,164, 51,231, 45,248, 72,153, 34,140, 46,148,120,232, 86,244, 24, 32, - 81, 36, 4, 64, 66,194, 93,192, 16,178, 48,162,249,126,110,212, 57,167,251,175,136, 90, 62, 47,160,185, 69,117, 28, 76,181,230, -212,103, 36, 7, 22,142,200,131, 64,162,138,227, 32, 53, 70,165, 19, 43, 18,106, 22, 71,114,170, 9, 70, 15,191,193, 18,156,180, -113,221, 1, 20,218,222, 37, 12,111,201,197,163, 56,106,231,217,179, 92, 44, 65,249, 20, 33, 85, 36, 54, 29,195, 62, 44,204,190, -125,110,208, 90,240,185, 88, 23, 29,114,225,213,245,244, 5, 82, 52, 2, 65,175,151,149,174, 81, 83,138,243,201, 81,137,172,213, - 10,122,190,254,183, 84,212, 43,100,154, 45,129,196,141,166, 57,156,115, 69,192, 74, 25, 57,212, 59,162,238, 80, 65,101, 45,222, -228, 13,185, 79,119, 57,215,135, 32,193,129,201, 4,131, 76,197,124,208, 35,131,125,207,142,236, 27, 69,108,132,219, 37, 87,176, - 11,156,158, 58,181,101, 66,237,132, 35,129,191,245,254,197,142, 36,108,202, 40,143, 12, 21,244, 32, 15, 45, 86, 10, 85,186,169, -115, 32, 66, 12, 27,133,248, 92,163, 56,149, 65, 76,141, 24,172,216, 64,100,241, 23,175, 57,193,148, 75,240,131, 36,206, 22,172, -211,210,104,151, 50,154,249,113,200,110, 29, 23,196,119,206,139,103,208, 72,125,160, 46,110,213, 2, 31, 66,132,221,161,224,167, -246,116, 63,248,231, 90,181,138,174,170,119,212,201, 80,231,150, 91,147, 94,133, 27, 10, 57,215,108,131, 53, 76, 77,130,136, 26, - 23, 35,156, 72,113,141, 69,239, 66,157,183, 33,207,198,174, 9, 59,100,120, 96,252,137, 8, 65, 40,206, 55, 6,225, 97, 68,204, -204,158, 69,156, 11,195,168, 81, 14,165,101, 32, 7,187,176,163,169, 6,245,172,148, 96, 37, 34, 89,126, 60,147,226, 84,200, 61, -254, 94,166,189,110,204,128,140,199,226, 50,144,136,139,247, 15,136,112,236,218,249, 87,105,167,144,202, 98, 3,207, 41,136,141, - 38,168,156, 80, 66,101,111, 4,169,164, 96, 69, 4, 83,211,149,145,122, 30,237,231,169,148,176, 17,218, 88, 91,239,161,116,238, - 76, 42,117,114, 46,152, 77,129, 17,138, 50,187,245, 61, 87,149, 57, 27,196,117,184, 70,187, 50, 61, 5,221,176, 25, 82,104, 24, -136, 8, 12,153,136, 26,104,148,228,170,156, 59, 73, 57, 40,194, 37,159, 65, 68,224,216, 85, 26,220, 56, 16,167, 38, 5, 54,236, - 69,130, 88, 10,177, 32,128, 96,168, 43,229,127, 93,218,143, 28, 0, 49,132, 30,126, 83,230,112,238, 12, 9, 94,235,200,253, 11, -149, 2, 16,237,120, 39, 49,227, 42,226, 32,228, 32, 46,180,190,233, 5, 68,158, 40, 72, 76, 33,136,242, 42,108, 66,192,212,152, -178,180, 81, 74, 49,213,146, 40, 43,141,136,149,171,253,114, 69, 62,189, 85, 58,109, 40, 18,101, 37,200,221,170, 14,134,131,175, - 78, 41,186,231, 17,101, 70,213,133,232,222,140, 34,164,198,240,160,130, 43, 50,225,213,203,164,132,102, 20,239, 21, 31,180, 20, -215,224,164,224,148,120,135,223,247,210, 48,193,244, 17, 83,172,130,240,226, 84, 28,231, 69,180, 83, 46,148, 52,170,168,147,243, - 41, 43,103, 5,196, 8, 13,139, 4,189,181, 69,151, 94,226,212, 58, 73,136,189,200,147,132, 52, 83, 16, 64,233, 90,140,191, 60, - 90, 42, 74, 41,164,212,178,213,144, 71,114, 26,102,118, 20, 27,208,165,176,241,123,157,107,160, 67, 23,181,211,253,141,207, 13, -181,198,176, 82, 29,181, 92,136, 26, 81,242,170,163,172,124, 93,215, 44,173,129,157,200,201,136, 81,148,162,142,180, 30,195,188, -161,192,125,193, 45, 24, 24, 78, 42,163,186, 24, 49, 74,233, 69,115, 35,114, 14, 73,221,130,168, 54,204,155,215, 37,106, 40, 96, -243, 14,220,188,110,181, 76,174,104,103,234, 63, 99, 37,117, 59,202,115,146,122,238, 26, 17,147, 36,182,183,158,175, 39,162,121, - 8,138, 57,206,140,148,203, 9, 48,177, 26,250,141,233, 36,131,193, 75,163,232,200,231, 25,147, 83,148,177,147, 11,231,197, 27, -116,102, 83,148,156, 17, 4,211,188,238,156,210,152, 70, 34,206,136, 16, 8, 53,208,213, 22,247,160,165, 77, 80,111,150, 93,100, -232,151,210,187, 4, 47,222, 82,232,170, 15,156, 69, 46, 20,171,106, 65, 35, 87, 11,121, 20,134, 26, 81,251, 58, 57,188,226,243, -229, 36,160,130, 0, 22,254, 57,142,155, 42, 67, 96,204,100, 45,210,213,100, 36, 7,148,129,200, 4,113, 18,142,240,228,152,110, - 67,237,172, 4,186,131, 71, 58, 14,224,148, 15,246, 4, 0,157, 25,242, 0,136, 84, 69, 80, 29,190,180,223,228,106,128, 14,192, - 50,204, 35,199, 14, 70, 12, 28, 28,108,206,134,167,100, 84,157, 70,108, 97,140, 29, 3,100,145,141, 69,168,205, 23, 10,154, 68, - 12,154,228,229,138,106, 16,146,163,194, 29,175,188,230, 86,250,109, 21,215,166,197,225, 25, 75, 95,184, 3,242,137, 74,253, 15, -201,120, 53,188,182,122,103, 20, 54, 15,156, 10,114, 73,167,164,197, 91,241, 83, 53, 51,236, 82, 54, 65,242, 42,145,201,206, 80, -231, 29,109, 19,171, 95,188,157, 50,106,223, 52,117,197,126,206,218,168,166,231,225,116, 67,158,147,162,235,135,130,211,149,139, -128,197,170, 23, 2,156,241,205,145,196, 58, 88, 50, 16,235,208,229, 93,158, 14, 98, 72, 6,209, 67,165,104, 84,143,177, 52, 4, -107,242,239, 84,120,100,236,247,214, 17,157, 40,115, 30, 83, 45,112,114, 66,214, 22,138,179, 89,249,189,241, 28, 24,205,136,215, -250,204, 94,220,240, 64, 40,254, 94,149,175,209,156,234, 58,230,232,216,235, 46, 24,178,218, 81, 38,242,249, 41, 15,127, 14,187, -132,149, 57,191, 73, 65, 64, 75,249,167,112,237, 57,177, 70,124, 38,199, 71,180, 1,193, 96,170,212,212, 42,168,206,116, 1,121, - 73,198,160,203,196, 20,122,113, 69,244,239, 13, 56, 71,227,110,173, 45,224,125, 18, 95,166,196,204, 32,167, 37, 37, 73,181,139, -203, 64, 15, 93, 64, 2,242,198, 25,105,252, 24,189,115, 1,241, 41,103,104,100,175,155, 82, 51,158,243,220, 63, 4,134, 77, 51, -239,202, 25,146,213, 90, 23,117,100, 51,150,222, 24, 35, 70, 26,105,111,176, 74,202,113, 84, 66,209,209,113,170,213,214,170,124, - 45,168,202, 41, 75, 90,199,233, 58, 40,228,254,140,175, 52,167,182,162,151, 43,100, 87,195,235, 89, 67, 21, 71,235,171, 67,218, -121, 82, 61,119,142,142,125,129, 2,140, 24,159,186,158, 89,148,223,128, 50, 74, 43,149,206,100,116, 15,244,243,163,234, 55, 80, -145, 26, 91, 58, 15,122,159, 8,128, 13,218,255,204, 20,202, 0,141, 47,163, 11,200, 3,179, 68, 82,162,178,171,213, 76,177, 0, -189,169,244, 41, 64, 77, 71, 68, 26,142,142, 35, 12,122, 20, 30,132, 28, 92,190,159,154, 4,199,177,241, 26, 34,141,180,146,253, -190,174,212,152,107,135,250,128,249,254,120, 95,171,177,161, 49,199, 5, 84, 40, 25, 38,199, 48,200, 92, 83, 57, 87, 59, 13, 64, -157, 52, 57, 69, 36,169,122,194,101,168,158,162,220,225, 23,253,188,168,196,164, 56, 4,202,202,167,243, 42,130,206,163, 6,226, -208,105,195,129,131,176,158, 91,134,127, 0, 79,185,213,158, 83, 77,246,113,144, 3,231,142,155,175,185,213, 93,146,214,149, 87, -140,145, 67,104, 44,106,199,120,195,134,150,124,226,186, 9,198,180, 90, 59,186,254,158,154, 97, 46, 92,146, 25, 19, 4, 29,180, -207,217,148,139, 92,134, 76,242, 90,170,144,131,100, 10,229, 82,136, 97, 25, 8,114, 6,123, 22, 93,135,146, 41, 3,205, 45,250, - 92, 99,199, 4, 43, 12, 56, 7,155,229, 30,163, 2, 23, 58, 36, 6,186,139,138,108, 70,169, 31, 78, 66,221, 55, 71,194,153, 34, - 54,158,195,230, 34,247,194,192, 55, 13,209,218,211, 84,102,230, 82,234,166, 48,128, 20, 26, 98,152, 65, 52, 28,145,130, 46, 57, - 27, 10,195,167,239,149, 32, 19,219, 13,115,226,213,166, 62,214,226,148, 77, 59,167, 62,112,142,171,205,173,230,180, 12,231,117, -158,243,147,230,110, 69, 65,213,171,254, 92, 43,143, 42, 13,129, 15, 3,109,125,201, 89,185, 90, 41,110,147,165, 44,155,173, 55, - 91, 50,165, 99,251,203, 16,194,247,225,191, 13,138,110,150, 92,156, 87, 8, 57, 75, 18, 61, 26,159,195, 20, 19,115,224,142, 28, - 68,120,165,130,151,230,112,155,213, 21,228, 50, 71, 52,148, 76,161,218,188,199, 2,165,240,175, 3, 23,233, 15, 7,159,231,245, -168, 75, 40, 67, 35,138,235, 78, 50, 46,171, 18, 65,221,144,255,154,152, 67,185,131,210,104,117,218,103,138,131, 45,163,186,110, - 31, 78, 72,138,137,233,208,252,184,174,163, 61,199,126,130, 24, 30, 69, 10,162,235,240,124, 92, 96,138, 7,174,151,194,248,160, - 1, 92,111, 98,245,131,234, 17,134,102, 45,156,245, 75, 15, 4,204,218,158,165,238,104,233, 92, 99,117,130, 73,227, 90, 56, 54, -218, 65, 45, 32, 40,131,116,106,246, 53,172, 34,134, 74,108, 68, 86,127, 31,186,196, 69, 68,140, 50,181, 62, 73, 13,102,242,206, -113, 93,221, 26,112,108, 35,105, 25, 29, 9, 53,198,197, 38,100,218, 70, 52,247,248,115, 86,115, 43,103,117, 32,214,252, 8,180, -178,234,179, 7,245, 66,213,219,111,201,160, 10, 81,157, 81, 90,153, 3, 95, 87,231, 78, 89, 14, 75,225,179,252,152, 62, 94,191, - 30, 62,223,117,205,133, 88,200,165,162,172,239, 46,114,227, 13,157, 1, 10,157,152, 40, 68, 34, 5,124, 42, 38,171,113,175, 72, -119, 70,185, 23,161, 89, 14, 1,112,158,163, 41,206,129, 96, 67,217,141,230,235, 4,212,153,184,197, 41,129, 41,180,224, 14,164, -179, 14, 68, 18, 91,148,230, 17, 16, 51, 3,214,198, 70, 41,134, 43,227, 27, 90, 23,114, 70, 74,170,239,151, 52,122, 7,112,136, -234,141, 18,122,242,118,173,156,171,190, 49, 12, 15, 13,108, 78,116,171,197,123, 6,202,137,102,205, 28, 95, 87,242, 51,242, 71, -100,250, 0, 0, 32, 0, 73, 68, 65, 84,194,148,215,235, 92,146, 84,181,226,153,188,101,150,186, 73, 45,102,203, 42,151, 50,226, -167, 1,161,140, 42,102,125,138,192,141,143, 4, 89,138,223,139, 70, 61,212,103, 31, 70, 38, 89, 6,255,243, 91,179, 33, 68, 29, -125, 10,236, 96,101,215,107, 74,194, 16,133,210, 63, 14,198,218,107, 20, 36,162, 90, 91,134,180, 86,242,202,149,214,116,101,249, -249,169, 68,227,106,143,225, 60,125,145,114,211,169,111,134, 27,214,193,199, 8, 12,209,177,246,196,185,176, 6,179,214,169,206, -208,176,118, 32, 35, 58, 23,227, 23,115,178,153, 83,213,153,230,220, 26,171, 25, 31,109,254, 37,126,109,120, 82,104,121, 4,177, -119,238,130,174,123,200,121,168,215,217,144, 15, 93,173, 39,154, 87,127,132, 86, 46,131,198, 92,173, 70, 93, 28, 74, 51,189, 6, -123,152,251, 46,233, 46, 16,181, 16, 53, 87, 16,227,106, 39,195,134,215, 99, 27,105,231,239,179,195,106, 91, 19,239,129,142,111, -144, 67, 78, 55, 57,216,134,128,234, 72,150,199,138,165,160, 73,209, 38,137,228,187, 3, 42,202,141,145,160, 14, 18, 73,183, 34, -143, 34,210,101, 51,186, 97, 29,232,183,120,245,141, 31,211,148,175,143,163,186,202,178, 90,156,199, 90,215,188,222, 3,247,121, - 31, 83,146,170,244,158, 71,211, 15,110,152, 7, 37, 39, 49, 95,157,179,243, 77,163, 30,122, 99, 58, 45,160,222,252,159,230,182, - 91, 77, 18,212,160,120, 34,143,107,230,207,160,155, 17, 44,196, 4, 73, 70,241,245,213,158, 88, 68, 33, 31,200, 85, 46, 90, 2, -185,196,203,145,166, 8,153,161,182,133,136,209, 17,129,103, 93, 97,216,242, 18, 58,134,203, 90,172, 38,213, 58, 18,151,213,106, - 83,145, 94, 40,223,135, 76, 77,142, 98, 23,180,124, 78,119, 97, 19, 30,131,207, 35,252,158,149,225, 52,147,228,135,156,223,181, -179,220, 98, 34,183,144,164,193,166, 77,168,250,168,215,196, 60, 41, 13,251,224,244, 83,164, 84,204, 67,225, 50, 98,207,228, 58, - 29,149, 28,240, 85, 71,104,100, 21, 26, 87, 24,120,102,189, 1,133, 18,188, 20,189, 40,177, 87,141,181,143,176,188, 92, 96, 60, - 18,135,198, 28, 6, 90, 1, 47, 65,131, 93,165, 62, 56, 26,129, 36, 76, 67,217,122,229, 24,149,184, 32,174, 68, 81,113,144,170, -148,100,129,118, 53,212, 30, 7,121,126,205,137, 19,121,174,132, 9, 56, 18,123,168, 91,201,166, 48,222, 48, 88,198,168,214,186, - 4,164,166,112, 74, 80, 55,118,162,162,181,107, 93,237, 4,235,138,231,115,103, 39,111, 5,155, 87, 69,149,223, 35, 33, 82,246, - 78,138, 30,185, 34,226,141, 85, 43,229,218,251,121, 85,147, 30,205, 1,208,217, 98,206,135, 42, 15,201, 26,121,184,128, 52, 81, -134,104,169, 84,180,100,117,230,133,187, 65, 4, 33, 7, 43,201,152, 35,107, 11,172,145,125, 46,227,221, 90,159,206,185,130,156, -236,144,210, 45,117,203,192, 82, 17, 48,104,241,103,208,141,254,102,183,202, 24,174, 82,218, 73,196, 25, 23, 67,192, 66,185,108, - 68, 25, 11, 82, 38,186, 13,115, 86,163,185,186,102,186,181,177,212,240,101,141,111, 80,253,185, 65,111,197,213, 72, 1,141,230, -245, 36,181, 9, 44,216,215, 56,156, 3,180,150,164, 87, 71,234,233,191,253,162,181, 3, 99,145, 27,144,142, 27, 36,186, 44,242, -236,216,164, 82,173, 16,253,166, 40, 87, 39,146,205, 96,220,146, 72,201,196,237, 92,164, 18,244, 38,166, 56, 59,133, 21, 57,144, -118,172,184,226,117, 10, 26,235,144,228,132, 36,197,176, 84,205,192, 1,174, 55,212,229,234,226, 25,144, 30,234,183,213, 40, 35, - 85,116,168, 42, 24,130, 96,140,110,118,154, 92,229,192,203,240, 53,233, 67,248, 61,119,138,152, 11,117,243,134, 70,189,140,212, -248, 39, 94, 68, 75,101,183,126,130,164, 13,139, 82, 37,187, 90, 79,185,174,218,208,242,255,118,131, 92,107, 25,113,107, 41, 26, -175,200, 56,138, 75,115,205,101,173,107, 53,175,207, 68, 81,153,206,247,251, 78,221,233, 40,235, 2, 23, 91, 93, 86,199,200,250, -213, 18,215,160,141,225, 73,148, 89,110, 94, 8,142, 76,104,168, 18,200, 67, 28,228,108,141, 39, 68,165,112, 90,197,116,178,206, -102, 65, 5, 76, 33, 80, 63,222,222,145,203,231, 7, 5,242, 39, 7, 35,171,232, 77,148, 3,166,132, 64, 72,182,105, 59, 72,179, - 61,169,138,139, 36,133, 61, 31,133, 17, 13,243,223, 94,225,176, 76,149, 17,164, 66, 20,202,191, 65, 82,140, 35, 92,226,143,184, -124,109,113, 16, 28, 98, 42, 20,218, 64, 60,232,162,216, 58,198, 70, 48,145, 83,164,168,148,203,212, 7,169, 60, 23,164,123,169, -110, 28, 17,175,117,247, 74, 88,127, 61,234, 90,207,111,137, 65,173, 79, 83, 50,134, 10,126,106,244, 89,218, 14,175,132,186,127, -113, 65,181,190,182, 75, 65, 41,137,164, 76,151, 20,247, 84, 84,121, 46, 67,161, 52,112,247, 61,153,211,178,171,114, 44,142, 60, -227,158,153,195,156,149, 40,244,212, 29, 40,111,189, 34,231,155, 43,129,213,125,125,215,193,223, 57,179,181,213, 26,175,229,217, -172,106, 79,120, 80,216, 61,255, 91,228, 96,185,163, 38,227, 29, 54,148, 84, 84, 30, 42, 82,151, 33,213, 28,110,213,251,175,118, - 74,176, 22,193,240,236, 91, 83,180,118, 40, 34,109,180,197, 81,188,247,232, 89,228,110,185,240, 81, 49,115,242,150,131, 30, 51, -133, 25,153, 75, 16,230, 82,177, 2, 23, 34,193,218,225,177,153, 87,237, 50,114,161,100,164,181, 64,218,202,136, 78, 32,255,219, -156,105,161, 27,226,152, 99, 23,225, 96, 97, 76, 48,168, 4,113,125, 74,149, 84,141,106, 98, 11,212,188, 9, 11,149, 85, 20, 78, - 74,109,114,146, 50,210, 78, 29,156,106,135, 40, 80,237, 98,153, 37,173,117, 10,155,228, 37,231, 86,106, 13,199, 77,196,141,183, - 22,110,230,236, 70,242,159, 45,248, 94,168, 94, 19,146, 85,185, 80,179,181,100, 42,201,227, 65,133,133,132,139,171, 29, 86, 9, - 96,166,132,215,156,120,167, 62,103,245,214, 71,195,101, 46, 84, 75,159,116, 75,119,206,197,122, 95,147,109,250, 94,211, 95, 27, -186,184, 16,165, 75,150,107,215,170,139,176,118, 85,158,142, 66,201, 18, 82,105,168,202,143,198,138,136,168,107,158,109,218,132, - 2,217, 73,193,100,214,221, 12,195,214,165,165,166,126,236,247, 27,198,159, 99,164,237, 95,178,197,157,139,173,138, 51, 4,129, -130, 19, 22,143,168,199, 47,185,160, 68,126,252,227, 76,104,228,194,253,150, 60,108,132, 83, 27, 87, 17,138, 78,183, 54,198,129, -216,172, 94,155, 7, 57,247,200, 25, 42, 72,170, 45, 13, 18, 77,159,153,106, 85,241,129,247,204,214,107,196, 2,118, 73,113,176, -201, 35, 27, 73, 73, 68,135, 44,240, 31,138,126, 24, 89,112, 39,214,181,211,187, 85,121,105, 65,225,147,148,226,138, 72,134,234, - 17,184, 92,230, 91, 9,203,190, 31,130, 31,119,131, 78, 91, 86, 34, 95,200, 7,204, 9, 75, 13,175,103,229, 15,174,134, 87, 50, -195, 80,120, 43,203,126, 85, 28, 16,243,153,131, 92, 62, 97,148,233,154,223, 32, 45, 41,171,219,230, 17, 81,211,123,162, 81,152, - 81, 98,217, 8, 69, 84,162,139,158,118,174,100,198,217,223, 16, 41, 8, 13,122,212, 92,166, 49, 20,107,224,155, 6,156,199,153, -163,174,138, 0,213,136, 43, 60, 67, 69,111,229,212,162,200,235, 45,251, 47,240, 27,144,245, 13, 8,224, 69, 47, 44,106, 29,114, -151,180,177,169,164,227, 68,185,197, 40,208, 66, 89, 61,106,152,148, 46, 83, 91, 10,139,201, 19,221,216, 87,161, 73, 70, 5, 21, - 53,200, 89,205,183,211, 28, 85,102, 76,136,224,156,119,106,144,128,212,104,160, 83, 26, 36,145, 6,213,175, 16, 17,192,250,205, -146,216, 84, 68, 65, 73, 30, 54, 18, 51,133, 40,232,133, 19,167,168,159, 56,214, 81, 67,218, 37, 60, 54,164, 38,138, 22, 38, 26, -157, 57,137, 68,181,122, 62, 14, 20,255,169, 36,134,230,218,233,173,121,207, 35, 4,187,124, 13, 68,163,136,118, 7,175, 8,223, -135, 92,157, 32,181,206, 74, 98, 71, 67,137, 83,202,178,198, 10,103,235,156,212, 90,127,205,101,106,228, 72,130,230, 81,172,141, -191,199,148,136, 85, 81,190,119,146, 27,165, 92, 67, 59,192,239, 5, 98,235, 35, 43, 23, 8,110, 14, 64,223,167,234, 14,237,230, -215, 34,204,197,126,216,217, 62,225,203,201, 25,166,234, 48, 98, 37, 19,229,201,165, 95,171,127, 73,190, 54,193,194, 8, 72, 86, -252, 13,147,241, 64,104, 8,226, 72, 84, 84,195,128,208, 39,161, 53, 41, 1, 96, 83,181, 64,141,156, 28, 19,190,183,142,148,195, -126, 97, 98, 44,143, 90, 68,199,183,166, 13,117,218,218,194,150,178,118,186, 96, 48,183,137,115,138,204,154,137, 25, 13,220, 90, -226, 47,131,136,152,185,161,162,152,191,158,113, 72,178,225, 71,160,229, 38,177, 23,201,106,241,195,124,207,144, 39, 87,233,230, -179,242,193,108,170,117, 79, 36, 63,137,233,113,102, 30,236,239, 89, 53, 56,122,103,147, 29,141,105,164, 20,116,244, 17,201,209, - 84,123,238, 64,155, 32,137,236, 9,169,218,244,166, 59, 76,190,124,192,124, 15, 2, 20,178, 10, 94,116,174, 13,131, 43, 60,216, -117, 43,127,211,134,226,250,220,160,151,249, 93, 94,121,238,147,201,100, 37, 59, 94,178,254,190, 99,100, 58,150, 84,166, 86, 86, - 2, 0, 76,221,234, 49, 90, 65, 4,204,181,192,199, 38,237,170,146, 63, 83, 68, 85, 67,141,129, 34,239,154,137,232,144,238, 2, -193,163,110,106,194, 11,178,197,221, 34,248,233,166,231, 6,158,110,222,133, 10,117,191, 99,242, 61,179,253,198,238,192,212, 85, -240,115, 5,199, 23,141,107,104, 80,125,160,226, 57,130,118,223,105, 31, 9,228,101,104,234,220,165,112,236, 48,218,251,195,136, -182,228, 64,140, 33, 67, 45, 79,125,213,125, 31, 77,121, 49, 13,206,161, 77,196, 9,194, 61,198,140, 34, 78,105,174, 72,211,160, -231,236,100,225,146,176, 83, 55,204, 17,229, 39,196,141,149, 83, 14, 83,157,176,172,145, 75,212,167, 51,107, 6,188, 81,114, 90, - 50,186, 29,220,104, 4,199,177,141,107,236, 14, 71,161,109,165,244,209, 40,171, 38,190,230,195,243,243,166,188, 7, 56,178,238, - 99, 20,144, 26,113,133, 84,179,106,128,171, 35,144, 92,233, 82, 17,140,131,147,226,144, 36,137,211,253,169, 69, 80,184,109,212, -165,228, 54,228,253,218, 99, 78,154, 77,161,228,201, 97, 76,212, 33, 47, 43,103,204, 96,252,146, 81,117,197,122, 75,168, 65,174, - 6,106,170,123,196, 81,110, 92,141, 85,252,126, 2,172,199,253, 75,246,121,133,196, 76,140, 41, 93,137, 12,177,113, 88, 47,238, -213, 78,121,228,101,151,201,194, 82,128,180,245,174,228,138,112,190,255,187,141, 78,143, 1, 3,226,130, 35,152,181,238, 37, 83, -180,240,101, 36,241, 53, 84, 98,104, 14,206,151,252,214,202,114, 74,136, 67,232,195, 16,196,216,188, 88, 83, 70,236,204,130, 54, -202, 82,219, 7, 98,191,175,130,223,149, 20, 64,107,156,130,188,191,246,161,186,168,173,144, 38, 44,212,189,100, 53, 81,111,212, -240, 83, 9,135,183, 35,127, 12, 12,141,126,215,132,205,154,220,142,180,243,232, 97,178, 51, 83,212,247,165, 70,189, 47, 55, 75, -238,234, 60,168, 20,186,253,185, 33, 79, 75, 84, 50,248,217,255,109, 52,219, 76,249,231, 37,146,103, 20,161,136,117,224,245, 88, -134, 72,192,161, 20, 31, 41,154, 86, 4,167,203, 4,177,152, 40, 9, 26, 8,126, 96, 87,117, 82,203,234,196, 67, 19,149,124,222, -172,234,114,150, 8, 29,121, 10, 2,177,196,175,128,225, 37,149,111, 21, 78,169, 80,161, 10,151, 56, 32,169, 85,173,207,213,151, - 12,221,168,179, 14,105, 18, 32,165, 5,191, 53, 28,200,148, 22,144,200, 57, 41, 57, 28,245,151,173,214,246, 71,238, 84,134,177, -145,140, 19, 32,112, 69,237,249,128,104, 7, 90,209, 11, 26, 69, 35, 24, 70, 30, 9,165,177,177,133,115, 25, 34,179, 96, 63,114, -153,206,230,190,209,208,238, 47,235,200, 77,211, 47, 24,148,121, 85, 68, 36,201, 56, 53,185,115, 86,178,212,243,107,105, 35,105, -206,185, 56, 71, 37,111, 86, 36,137, 1,173,206, 16, 7,226,183,230, 91, 53,149,204,106,246, 51,125,251,178,245, 39, 55,175, 41, -223, 87, 83,233,222, 80,126,180,150,177,117,148,250,216, 11,173,129,172,101,245,110,182,238,254,172, 42,135, 54,240,125, 9, 98, -253,117,133, 52,112,227, 88,176,213, 81,246, 17,207,255,187, 73, 70,206, 66,117, 31,244, 80, 68, 71, 40, 32, 13,234,140,178,238, -111,214, 5, 99, 28,248, 51, 89,163, 74,150,144, 30, 12,223,229,209,138,242, 24,123,168,100,198, 31,208,102, 75, 4,215, 25,239, - 12,187,112, 53,138, 74,134,116,141,234,158, 36,154,169, 6,130, 18,245, 60, 10,206, 12,145, 55,234, 99,236,240, 85, 58,226, 53, -148,176,106, 81,178,148, 12,225,243,109,167,218,114, 50, 90,245,224, 7,105,157,154, 27,160, 66, 81,104, 69, 77,122, 25, 37, 7, - 15,142, 19,231,186,217, 47,215,185, 1, 59,181, 28, 55,151, 12,214, 72, 15,223, 85,206, 78, 11, 94,205,189,248,186,131, 17, 87, - 82,175,190, 25,200, 56,210, 32,176, 17, 90,110, 25, 33, 59, 16, 51,145, 65,100, 25,115,248, 13,167, 69,184, 61,190,177, 75, 91, - 38, 99,155, 87, 35,212, 45, 41, 9,101,122, 69,141,120,108,253, 90,177,210, 21,161,169, 81,166,177, 28,120, 34,126, 86, 93,241, -176, 30,221,146, 21,105,157,117, 77, 52,214, 69,244,204, 92,200, 54, 55, 13,123, 3,105,200,149,194, 86, 85, 90, 48, 86,139,131, -104, 52,234, 6,104, 93, 86,195, 44,146,245,124,166, 1,225,104,213,163, 70, 26, 90, 54,167,201,234, 95,195,185, 89,197, 67,168, -157,151,213, 45, 65, 45,198,252, 18, 14,145,127, 49,175, 11, 22,185, 67, 71, 25,106,145,165, 17,234,117, 49, 22,173,107,168,201, -161, 75, 30,178, 28,180,131, 31,123, 10,100, 62, 77,252,119,145, 97,158,162,115, 65,187,116,210,176, 89,139, 40,173,170, 71,231, - 40,223, 93, 62,239, 27,249,248,116,157,196,182,192,153,106, 91,214,222, 57,166,204, 36,249,216,218,135, 28,190, 80,214, 35, 69, - 90,220, 93,251,249, 81, 56,134, 80,138,221,166,116, 29,139, 71, 14, 34,235, 61,254, 24, 5, 78, 4,165,122,195, 88,222, 26, 56, - 59,241, 53, 21, 67, 74,252, 36,145, 60,245,201,208,110,133, 10,255,247, 72, 21, 56, 46, 32,194, 54,244,184, 55,113, 31,247,119, - 71,149,230,242, 92, 98, 94, 94,172,163,219,173, 19,125, 89, 15,201,103, 81,120, 11,186, 70,187,251,206,152,247, 86, 63,250,190, -172,243,108,193,140,245,238,213,210, 30,143, 48, 80,150,239, 77,155,184,107, 27, 22, 41, 37, 88,135,253,188, 57, 65,195, 49,215, -152, 17,137,200,231,233,218,162, 22,154, 51,146, 88,138, 67, 89,239,106, 1,154, 93,160,154, 56, 56,134, 44,249,152, 91,174,152, -209, 92,113, 40,180, 65,118,154,123,174,112, 10,108,188,167,174,128,175,181,150,146,217, 12,140,138, 10,179,148,198,215,203,217, -176, 41, 55,200,190,238,210, 71,101, 14,218, 45,245,181,204,121,203, 73, 41,236,203,220,192,218,183, 32, 35,242,101, 37,135, 49, - 87,139, 82, 36, 63,229,180,131, 55, 14, 42, 96, 57, 47, 3, 42, 89,169, 93, 69,154,164,213,124,147, 28,154, 77,165, 77, 41,175, - 39,133,147,184,226, 54,143, 25, 35, 70,128, 85, 71, 16, 45,219, 16, 65,162, 2,119, 26, 68, 79, 77,162,168, 12,149,191,189, 78, -133, 36, 68, 7, 40,218,179,182,250, 82,215,221,199, 58,234,206,203,193,215,177, 95,246,174, 77, 98, 82,102,124,149,147,173, 59, -194, 9, 86,195,179,171, 12,122,186,167,110,144, 70, 75, 2, 79,195,113, 76,185,111, 19, 24,203,110,112,167,165,209,185,174,137, -251,113,218, 6,120, 80, 58,231,141,148,112, 89,161, 83,236,149,149,224, 75,253,223,195,146,202,198,252,224, 64,140,100, 14, 61, - 23, 72, 69,246, 67,157,186, 18, 21, 40, 59,170, 8, 56, 21,228,219, 81,160, 64, 83, 59, 5,233,178,228,144, 73,102,180, 87,169, -211,229,129,123, 94,165,194, 25, 85, 47,239,182, 38, 49,237, 23,174,137, 76,160,234, 74,176,109,237,222, 35, 74, 32,244,179, 46, -245, 70, 17,216,192, 93,178, 32,235, 2, 11,222, 59, 15,206,229,136,151, 36,135,128,168, 80,103, 77, 68,245,204, 12,132,121,213, -141, 69,127, 7,141,170,187, 64, 28, 27,141,212, 71,132,107, 14,238, 52,208,218, 72,101,101,145,127,150,147,110,245,212, 21,215, - 55, 63,111,178,157,175,104,140, 82,191,215,217, 65,142, 75,203, 91, 40, 39,114, 80,158,241, 75,227,188, 58,231, 78,107, 89,157, -107, 35,249, 1,209,164,252, 62,166,145, 28,173,212,191, 91, 45,142,192,246, 23,117,154,164,174,115, 15,239,115,201, 41,208,242, -139,252,183,156, 27,150,240,181,149,249,218, 78,155,216,172,153, 8,115, 36,231, 73,188,239, 84, 54,101,169,230, 64, 31,157, 62, - 41,238, 77, 50,110,238,192,115,117, 52,154,212, 54,176, 24,151, 63, 38, 89, 19,189,183, 28, 7,114,190, 7, 28,149, 98, 73, 45, - 99, 58,152, 91, 99,232, 92,165,208,168, 13, 69,104, 44,109, 54,144,116, 30,115,212,207,175, 11, 98,171,245,114, 94,219,205,153, -227,116,144,245,193,117, 87, 49,119,126, 45,151,213, 1,245,251,129,137,227,214,106,189, 90,200,254,114,133,126,114,133, 94, 8, -181,141, 55,181, 33,120,202,136, 98,181,211,194, 89,154,195, 53,180, 20, 88,146, 87, 80, 40,253,181, 27,109, 22,221,210,210,243, - 46,118, 87, 35,195, 3, 5, 62, 37, 24,250,239,231,160, 91, 96, 10, 34, 31, 70, 58, 21,214,123, 82,225,112,101,229,136,173,255, -233,116, 43, 26,226, 52, 28, 5, 93,231, 66,130,137,239, 99,231, 7,128, 81,112, 62,234,238,140,186,167, 25,180,101,114,117,221, - 43, 33, 55,159,187,206,249, 84,136, 47,204, 93,250, 8,156, 5, 34, 93,168, 14,209, 74,136,161,109,147,248, 27,170, 39,239, 66, - 80,153,210, 47, 93, 62, 25,155,222,187,180, 73, 54, 57,187,184,222,116,198,154,201,183,140,185, 93,131,191,117,161, 33,197, 24, - 59, 28, 7,236, 1, 60,166,138,135, 40, 35, 58,166, 81, 31,162, 95,148,198, 42,117,233, 89,147,203, 23, 12,244,175,139, 37,219, -165,220,172,200, 56,188, 94,127, 78,138, 92, 80,169, 36,214,146,136,100,137,174,105,169, 97,204,121,137, 90, 99, 33,169, 81,147, - 20,249,147,118,137,114,130,222,150, 70, 79, 39,126,220, 68,130, 81,183, 68,161,121,130,122,152,218,220,165,186, 63,186, 6, 67, -100, 30,171, 40, 28, 10,196, 32,161,143, 82, 56, 91, 10,181,137, 70, 42, 44, 25,113,207,143, 16, 7,209, 12,168,184, 78, 96,182, -231,198, 75,141,163,179,182,130,171,169,106, 67,106,115,232,166, 48,220,209, 37,144,178,113, 77,177, 96, 36,219, 0, 48,174, 69, - 51,102, 80, 41, 33,179, 5, 60,136, 42,221,211, 34, 87, 1, 90,111,157, 28,183,186,127,116, 44,128,202,219,210,102,146,176,182, - 74,239, 8,198, 66,201,202,192, 71,227,181, 38,167,190,146,239, 67,232, 66,151, 56,221, 31,108, 88,112, 92,113, 22, 90, 50,183, -222,216,217,228,208, 0, 25, 92,138,162,111,188, 52,215,185, 65, 42,238,145, 98,159,203,181, 30, 60,140, 61, 18,208, 56,135,162, - 71, 61,101, 61,236,137, 6,233, 9,151,141,171,246,146,151,188,115, 93, 21,249, 74, 6,207,182, 56, 49, 36,201,233,104,201,229, -230, 8, 99,221,250,212,147, 6, 61,191,196,176,143, 98,235,186,117,176,196,122,110,202,254,214, 83, 49,196, 3, 29,135, 22,130, - 59,134,162, 44,173, 75,144,122,222,127, 67,247, 41, 89,195, 21, 11,138,126,104,180,125,174,207,199,160, 81, 61,197, 52,234,248, - 75,208, 97, 64,214,233,205, 57, 47,109,235,143,110,160,232,231,138,107,228, 1, 34,152, 20,252, 56,180, 90,181,129,136,151, 25, -245, 4,107, 83, 36, 10,172,242, 78, 25,148,121,100,237,197,151, 54,166, 12,150,136, 45, 89,179,136, 12,169, 79,236,240,179,195, -252,220,152,215,238, 8, 24, 19, 41,240,178,126,169,143,113,209,231, 88,108,216,220, 75, 15,116,157,167,158, 67,192, 69,238,171, - 42,149, 75,134, 93,138, 30,209, 53,252, 87,239, 26,197,196,202, 74,153,138, 58,225,108,163,202, 39,169, 69, 69, 40,206,189,102, - 12, 69,129, 36,211, 38, 46, 34,200, 85,212,191, 6, 60, 89,187, 29,150,124,211, 17, 39, 46, 54,217,241,231, 71, 69, 90, 64, 28, -141,168,209,185, 1,175,163, 38, 49,229,134, 82,115,106,196,148, 53,116,177, 88, 88,191,209,217, 16,173,199,156, 59,188,119, 76, - 36,177,188,139, 84, 99, 91, 55, 83,114, 49,167,172,127, 67, 76, 56,183, 68,144,204,211, 15, 5,159,160,134,202, 27,178,195,105, - 67,200,230,101,214,170, 83,156,215, 19, 16,105,228, 44, 67, 36,198,149, 67,146, 35, 13,178,170,163, 17,185,140,141, 75,161,217, - 35, 5, 30, 5,103,247, 64,226,249,165,245, 51,222,247,189,172, 52,214,117, 94,117,162,166,132,137,141,233, 56, 56,194,168,206, -131, 42, 41, 90,167,109,145, 61,219,216,203,207, 90,136, 99,239, 9, 6,184,211, 55,133, 13,215, 43, 46, 70,199, 38,193,113,195, -241,162,241, 46,101, 57,250, 84, 56,217, 3,163, 46,195, 52, 6,101,104, 29,208, 14, 58,168, 29,177, 27,148,198,118, 41,136, 90, -247,136, 26, 0,233,190,106, 11, 98,210,251, 23,254,214,133,211, 25, 26,112,158,154,156,146,209,127, 50, 8, 66,180,252,139,180, -151,121,224,218, 80,200, 21,231, 99, 98,136, 87,254,142,238,249, 82,253,203,249, 20,163,251,145, 72,228,212,140, 34,158,177, 34, -168,210,161,208,128,175, 66, 92,106,163, 14,184,136, 60,228,242,187,133,104, 80, 12,218, 4, 14,222,209,112,193, 33, 27,244, 14, -169,213, 65, 3,177,212, 81,219, 46, 6, 53, 7,173,127, 12, 93, 80, 77, 42, 10,213,174, 94,197,166,239, 74, 9, 80, 14, 27,181, - 56, 9,186, 25, 18,197, 30, 84,145, 44,117,238,226, 32, 35,217,208, 39, 86, 85, 35, 46,193,151, 65, 36,145, 27, 11,195, 85,235, - 76, 20, 44,214,252,168,125,216, 85,171, 87, 40,151, 35,212,127, 38,121, 68,217, 38,212, 36, 42, 69, 14,134, 36, 71, 67,149,165, - 40,143, 26,203,156,109,173, 93, 61,140, 99,134, 13, 93, 34,225,163, 34,123,196,188, 82,145, 95, 42,105,239,254,243,136, 45, 3, -173,181,197,152,113, 22,181,250,146, 58,151, 53,161,168,206, 1,101, 29,104,238, 73, 38,120,180,140,160,173, 14,148, 3,250, 92, -136,129, 83, 14, 50, 46, 12, 0,194, 54,178,243,243,190,236, 84,231, 90,101,152, 83, 76, 81,158, 75,227, 67, 26,161,120,205,233, -142, 56,206,190, 80,188, 5, 39,161,186,219, 2,147,137, 73,142,142, 0, 76, 46,238, 28,154,163, 39, 78, 90,248,190,119,178,248, -218,126, 10,139,176,214,236,143,130, 38,101, 89,127,222, 12, 39,206, 49, 21, 31, 18, 23, 38,127,208,152, 35,135, 88,119, 47,233, -121, 10,239, 19,231,127,159,109, 73,158,145,108, 68,148,232, 88, 58, 75, 53,180,105,131,156,110, 24, 39,166, 98,141,208,204,119, -217,227,232,100,132,178, 48, 41, 75,218,234, 60,243,192, 8, 83,189, 62,101, 72, 36,212,249,201, 92,108,170, 26,233,217, 32,212, - 67,146,122, 78,139, 91,198,205,210,115,225,145,241, 67,252,252, 39,202, 17, 7,133,178, 67,250, 37,107,141,220, 34,168, 41, 18, -230, 26,228, 59, 67, 93,138,182, 51, 93,252, 18, 94,231, 1,176, 40, 57, 80, 51,210,250,122,172, 49, 84, 61, 94, 20, 52,237,157, -205,206,145,138, 92, 86, 42, 5,101,246, 58, 11, 97,211, 34,246, 70,133,100,117,122, 51,119,126,202, 42,153, 76,195, 62, 91,149, -172,215,200,193, 40, 7, 20, 36,149,127,165, 20,167, 88, 87,234, 72, 40, 49, 78, 91, 59, 23,142, 78, 66, 52,157, 11,178,190,157, - 26,188, 18, 81, 97, 41, 73,161, 99,149, 92,134,186,162, 18, 37,170,106,230,243,145,104, 20, 65,112, 69,235,241,116,164,138,232, -153,140,188, 39,239,198,106, 12,233,219, 99, 31, 8,140, 62,125,144,130, 3, 91,237, 31,182,161, 99,210,121,212,132, 51, 34,134, - 13,125,143, 75, 88, 93,105,244,146,231,135,156,239, 82, 37, 97,178, 24, 53,234, 32,152,160,227,171,138, 64,169, 52,195,165,249, - 70, 30,126,175, 35,157,194, 68, 51,149, 1, 77,198, 86,116,202,248, 44,152,181, 25, 99, 13, 28, 73, 40,110,164,206,146, 50,163, - 74,163, 30,249, 8,203,156,252,247, 58, 25,207,233, 29,164,142,178, 36,174,149, 16,187,201,224,151,168, 43,173,141,116, 50, 21, - 42,146, 42, 82,202, 39,117, 78,102,204, 75,190,224,187, 87, 17,201,202, 46,113,205,254,202, 13, 78,195,192, 25,162,210,208,232, -253, 83,164, 65,245,181, 93,133,208, 52, 91, 47,142,209,199, 88,226,244, 32, 74,205,104,244, 55,172, 42,218, 5,118,107, 45,251, -104,151,165, 56, 17, 40,240, 28,202,118,214, 67, 44,130, 86, 55, 90,105,102,138,178, 66,131,100,135,117, 83,170, 29, 57,137, 72, -202, 32, 35,152, 79,241,220, 1,164, 6, 33,140,218,165,115, 62,133,144,196, 96, 72,146, 99, 95,246,255, 14, 48, 51, 80, 40,250, -165, 28, 48, 55,248, 40,170,194,231, 29, 89, 19,221,122,202,246,153, 68,172,203,139, 3, 11,148, 74, 29,215, 92, 24,170, 72,181, - 8,166,221, 36, 94,111,138, 18,147, 35,218, 77,120, 16, 0,148,237, 87,185, 77,204,138, 78, 48, 71,150,180, 52,162,110,170,154, -228,180, 34,220, 85, 41, 5,151, 5, 77,173, 71, 30,201,181,248, 21, 28, 24,214, 20,155,154, 4, 94, 3, 83,161,156,200, 35,206, - 3,105,111,251,108, 14,181,100,170,169,154,127,209,177, 17, 20,105,167, 26, 38,167, 74, 6,183,220, 87, 37,138,111,141, 25,205, - 22,106,234, 85, 4, 57,116,231, 91,195,185, 2,173,213,128, 80, 46,137,106,217,107,240,152,107,221,183, 26,252, 56, 42,185, 36, - 28,188,201, 34,237,201,117,107, 96, 46, 80,103,231,134,233,133,184,172,105,216, 27, 69,170, 70, 72, 34,102,208,144,104,216,208, - 69,164,200,105, 70,113,149,138,128, 67, 42,139,202, 62,111,105, 66,212,202,144,224, 93,121, 47,219, 64,170,214,143,156, 24,163, -121,195, 17,106, 71,234, 52, 10,243, 73,244, 62,221,138,242, 21, 29, 60, 83, 45, 90, 71,163,244,137, 17,200,189,126, 63, 85,185, - 56,105, 27,158, 53,253,224,109, 38,177, 73,141,207, 22, 25,158,218,192,181, 78,217,149, 27, 75,167, 50,172, 85,253, 56, 21,199, -225,100,111,117,232,107,142,139,100,203, 39,175,211, 30,192,251,241,130,139,122,105,100,125,149, 3,158, 86, 56, 55, 99,172, 98, -109,125,169,241,162,139,115, 69, 98,228,164,132, 18, 26, 33,105, 41,172,174,117,233,204, 12, 23, 74, 82, 76, 40,100,119, 49,109, -163,240,121,137, 24, 20,117,217,153,117,146, 85, 14, 92,254,249,154,157, 45,109,153,217,250,150,231,155, 10, 53, 61,137,146, 11, - 33,177, 95, 64, 34, 46, 74,204,171, 98,148,119, 98, 86,148,215,141,111,214,229,148, 29, 35,206,249,212, 11,183,114, 82,113,126, -230,155,154,240,144, 87,211,103, 70,195, 57, 7, 97, 14,134, 61,141,103, 20,132,193,176,109,235,180, 43,225,205,193, 53,230, 27, - 55, 13, 37,221, 8,227,164,223,214,218, 25,252,205, 92,164,235,214,237, 70,173,243,107,221,187, 85,198,188,108, 8,101,139,235, - 28, 56,247, 99,191,235,106,197,208,116,254,101,245, 14,183,199, 14,153, 10, 38,211,202, 92,122,139,124,168, 26,231,142, 86, 7, - 80, 44, 88,201,175, 74,206,105, 38, 66, 70, 52, 72, 31,229, 71,229, 4, 80,214, 26,118,180,180,152,218,206,142,206,101, 49, 9, - 73,112, 78, 21, 61,101,216,252, 71, 85, 90,105, 88,130, 46,145,165,143, 97,151,182,188, 67, 85,218,180,185, 24,156,162,142,152, - 92,132,222, 53, 79,105,144, 12, 6, 75,169,230, 21,251, 48,103,202, 40, 92,213, 4, 13, 11, 40, 40,146,158,234,252,228, 74,198, -177,212, 93,128,106,230,172, 28, 40,146, 94,105,232,131, 17, 18, 90, 31,153,143, 9,141,176, 90,133, 86, 94, 91,170,242, 18, 42, - 27,159, 20, 42, 87, 99,250,162, 24,239,147,236, 39,179,203,242,200,114,232, 58,121, 18,172,188,127, 50,210, 71, 60, 23,218, 24, -243,160, 91,206,100,105, 24, 57, 88,193,196, 11, 16,136, 87,170,210, 70, 36,132,228,209, 55, 12, 16,103, 37,120,121, 67, 27, 38, -147,133,214, 33,230,140, 78,150,100,139,105,168, 25,189, 74,190,184,238,202, 37,153, 76,105,107, 51,173,231,111, 46,146,164,205, - 77, 86,229,164, 53, 2, 97,245,252,145,250, 75,231, 92,141, 22,228,122, 16,182, 63,175,236,119, 61,162,121,159,117, 26,243, 63, -190,154,199, 83,247,136, 40, 34, 89, 27,200,113,141, 77, 95, 67, 33,161,114,227, 44,238,127, 86,135,109,209, 46,131, 18,140,215, -181,155, 74,166,116,213, 92, 30, 37,251,174, 64,168, 90, 60,162, 98,124, 12, 55, 13,250,186,231,198,206,115,112,191,198, 2, 38, - 74, 16,122,145,178, 36,106, 50,209, 71,123,120, 96,117,148,222, 50,150,165, 83,146, 20, 75,165,101,140, 87,144,240,106,131,219, - 74,127,228,193, 90,173, 87,104,168, 84,229,107,157,107,206,190,111,143,123,138,220,153,217,247, 67, 8,168, 98,235, 60,164, 53, - 54,201, 64,122,241,153,105,144,105,173,217,154,245, 38, 66,205, 5,234,161, 91,173, 73, 54,129, 59,167,114, 6, 68, 82,104,239, -162, 33, 80,177, 78,163,211,231,240, 80,228, 41, 74,120, 87, 70,176,217,161, 74, 91,110, 67, 76, 28, 44, 58, 16, 84, 62,184, 97, - 40, 35,165, 4, 19,143,123,154, 81, 31, 60, 83,193,203,243,185,241,168, 98, 9, 82, 70,250, 84,221, 23,239, 89,122,248,159,199, - 79,188, 33,124, 66, 49, 34,172,197,134,214, 69, 94,245,120,152, 42,210,138,112,151,164, 77,111,229,247,228,155,119, 70, 18,162, -220, 19,205,238, 93, 52,106,148, 32, 60, 7, 6, 71, 68, 64, 25,224, 28,196, 28, 50, 74, 18, 81,193,181,102,169,202, 28, 99, 9, - 28, 82,207, 98, 9,236,247, 64, 88,115, 40, 57, 22,169,173, 88,237, 52,142, 59,130, 26, 49, 71,248,149,107,141,254,172, 79,122, -171,206,188,112,170,184,106,224,145,202,108,146,207,145,100,123,153, 84,185,139, 74,253,129, 76,172,167,181,185,249, 84, 9,175, -133, 70,235,231,199, 28,132,129, 92,236,136,113,179,118,185, 50, 82,117,153, 20,107,100,174,103,227, 75,157, 41,140,245, 88,253, -121,201, 28,167,178, 27, 87, 5, 98,214,226, 86,171,197,105, 86, 59,216,178, 38, 85,151,231,212,199, 34,113,254,127, 89,123,179, - 94, 89,150,236, 60,236, 91, 43, 34,171,246,112,246, 25,238,216, 19,217, 20,217,205, 9,160,105, 9, 52,197,201,180, 12,129,130, -109, 24, 2,252,226,127,225, 39, 63,251,127, 8,254, 7,124, 52,108,208,134,100,138,176, 9,219, 34, 91, 20,217, 77, 54,217,156, -164,238,190,183,187,239,124,230, 61, 84,101,196,242, 67,196,138, 88, 17, 25,153,181, 47,169,211,184,200,222, 83, 85, 86,102,100, -172,233, 27, 54,130,214, 73, 77,144,133, 88, 81,155, 88,208, 74,165,139,156, 40,114, 17,177,106,113, 27, 77, 80, 31,224,137,172, -127,197, 86, 48,119,220,121, 4,174,168,197,173,161,246, 93, 39, 35,158,213, 44,202, 51,204,204,205,121, 54, 90, 33, 34,105,125, -245, 9,143,206,179, 81,187,138, 35,211, 43, 1, 10,123,166,161, 68, 91,108, 84, 30,105, 43,240,149,178,150,187,126,106,165,220, - 74,164,123, 37,213,105,228,100,181,209,165,109, 19,148, 89, 7, 6,124,240,152,192, 59,222,113,169,238,181, 82,231,178, 18, 92, - 83, 73, 74,151, 49,212,153,224,122,166, 30,140,214,178,245,128,166, 66,255, 24, 3,208, 70, 0,137,225,166,216,203,112,226, 68, -101, 9, 44, 16,198,253,195,177,214, 81, 40,139, 70,186,196,166,120,119, 27,197, 51, 51, 50,214,153,142,173, 90, 19,202, 49, 59, -197,173,101,111, 57,147, 31,117, 9, 20, 19, 1,218,174, 40,249, 20,122,116,227,218, 2,128,243,110,187, 61,187,118, 95, 86,146, -169,254, 60, 34,213, 25,179, 86,210, 67,139,224,193,235,140, 90,174, 2, 32, 37,215, 82,112,108,197, 12, 34,160, 17,231,145, 40, -229,250,158,186, 54, 84,168,112,150, 97, 96,176, 5, 93,114, 71, 6,232,212,142,197,104,117, 4,194,160, 78,231,126, 89, 9, 21, -252, 4, 97, 88,201,241, 90, 69, 39,167, 3,249, 86, 80, 95,204, 48,139, 28,238,186,109,239, 90,119,171, 9,196,134,210, 41, 43, -122, 25, 42,211, 26, 25,171,149,112, 15, 6, 29,221,207, 72, 35, 45,241, 13,182, 3,182,213,238,196,248,111,175, 93,195, 30,179, -178,192,176,240,118,165,189,230, 33,112,159,110, 65, 3, 33, 25, 40, 74, 18, 17, 40, 10,134,186,138, 6,108, 58,124,206, 11,208, -152, 54,207,161,167, 52,247,215,223,238,193,197, 34, 57, 47,126,119,162, 75, 97,239,171,178,176,170,182,122, 13,218,107, 51,117, - 69,231, 43,238, 35,154, 54,126,193,127, 48,151, 34,197, 82,254, 20,197, 54,231, 86, 62,243,248,190, 80,228,188, 70,182, 49, 23, -141,248, 12, 55, 94,214, 82, 32, 17,146,236,179,224, 56, 5,102,206,114,159,237, 28,153,225,153,139,225,189, 35, 5, 43,105,144, - 74, 32,153, 72,104,164, 34, 81,120,225,201,209,167, 1,121,117,184, 56,150, 10,252,177, 52,175,170,181, 31,139,171,211,162, 5, -182,218,242,160, 65, 98, 74, 67,233,202,222,135,154,122,164, 51, 97, 19, 36,181,237, 17,159, 50,179,124, 63,202,177, 57,249, 88, - 61,142,199,137,117, 15,244,145,174, 69,196, 11, 9, 72,155, 24, 48,201,166, 40,144,115,110,177, 49, 45,147,187,165,193,135, 6, - 89,135,126, 83,105,175, 71, 36,110, 55,182, 21,153,207, 53, 32, 93, 17,179,201,149, 39,101, 11, 89,235, 71, 93,100, 30, 81,103, -254,138,209,136,161,117,142, 83,160, 75, 44,149, 63, 15, 1,107,138,206,181, 51,241,145,119,115,159,220,217,153,185,144, 20,185, - 97,244, 82,173, 42, 2, 18,101,152,236, 24,117,131,114, 93, 53, 97,164,190,189,137, 68,227,178, 46,115,165,106, 49,149,244,176, -210, 19,139, 60,110, 65, 98,246,121,189,111,229,190,192,108, 12, 24, 99, 86,214,147,217, 13, 55,253, 34, 64,162, 52,188,149, 64, -108, 45, 77, 89,150,192, 75,182,148, 72, 66,219, 37, 49,128,165, 50, 45,144, 58, 82, 18, 65,226, 73,111, 81, 60,135,130, 56,245, -168,242,160,163, 89,252, 90, 80,166, 46,113,171,123, 73, 29, 13, 53,149,129,193, 54,140,198, 97,253,125, 24,185,253, 45,141, 67, - 42,133, 43, 64, 22,226, 68,182,250, 69, 87,148,149, 78,149,172, 91, 95,219,162,108, 45,168,111,173, 49, 77,240, 34,181,136,125, - 90,136, 15, 69,163, 78, 71,208, 41,157, 72, 52,108, 38,157,115,231,117,146,253, 46, 98, 54,171,210, 49, 87,200,186,236, 54,248, - 59,118, 77,178, 32,221,207,131, 80, 97, 73, 45,146, 62,166,170,208,184, 50,194, 40, 46,161, 25, 74,196, 2,120,153,195,242,161, - 67,229,188,186, 76, 11,114,206,181, 72, 62,138,136,113, 78,214,147,246, 65, 87,125,110,189,105,100,144,216,133, 83, 89,167, 88, -142,167,182,125, 2, 24,223,228, 60, 19,204,242,166,150,147, 92,221, 20,165,169,228, 87,181,218, 87, 90, 81, 49,160,220,140, 64, -237, 49, 18,138, 34, 16, 11, 16,213, 47,221,100,110,222,186,230,148,155, 85,127,143,196,220,108, 12,102,158, 43,149,186,173, 68, -162,206,174, 70,217,102,111, 72,179, 66, 73, 89,123, 16,152,182, 1,113,113, 16,180, 90,177,155,222,241,107,229, 33,235, 81,254, -221, 6,162,170,112,253,195, 59,177, 91, 9,230,153,239, 75,101,199,170, 45,117,181,125, 53,198, 25,182, 22, 87, 85, 49, 22, 5, -189, 16, 36,102, 37,186,123,116, 37,108,171, 13, 65,150,202, 91, 93,181,215, 92, 39,219, 5,129,148,238, 85, 1,148,229,255,146, - 35, 21,157, 20, 87,234, 5,141,214,130,231,201,249,246,160, 51,165,235,111, 43,104,111,123, 43, 32, 83,202,104,245,125,228,115, -118, 0, 70,231,169,123,198,144, 53,145,193, 88, 17,219,221, 20,109, 99,247, 93,206, 16, 66,163,243,176,150, 96,172, 5, 27,171, -104, 57, 12,210,142,151,107,101, 69, 37,115, 40,170,117,226, 26,233,245,223,194, 28, 81, 39,190,178,213, 49,235,139,166, 89,141, -181,250,125, 77,150, 65,110, 20,244, 48, 80,226,179,239,113, 60, 30, 55,215, 87,167,151,217, 2,190,115, 37,189,165, 80, 23, 7, - 51,247, 5,254, 97, 1,174,109, 13,153, 76,238, 84,102,225,145,149,114,150,219,232,144,166,219, 51,107, 82, 24, 67,163, 55,210, -188,111,172,226, 92,107,180, 60, 12,246,103,111,103,158, 41, 43,151, 82, 69, 59, 16, 56,139, 91, 40,215,179, 34,104, 1,113,202, - 67, 68,230,255,102, 62,178,168,125,158,217,196, 73,121,135,220,100, 82,148, 55,109,107,165,103, 13,176,136, 81,124,140,139,216, - 0, 4,193,248, 74, 83,151,125, 15, 31, 30,233,170, 28,211, 2,117, 84, 21,151, 21, 13, 94,220,129,136, 55,149,150, 36,100,202, -148,238,199,230,117,154,239,175,185, 14,229,140,151, 41, 5,130,198,222, 18,105,142,153,102,160,210,100,155,245,161,149, 78,147, -126, 60, 35, 91, 83,230,106, 50,241,145,245,102,215,157, 1, 90,145,147, 34, 36,145, 13,125, 99,151,249,151,121, 56,103, 43, 65, - 67,142, 9, 4, 8,230, 38, 41,177, 76, 86,129, 32,118, 51,213,162,238,148,219, 98,190,204,204,114, 27, 43,115,185, 73,253,182, -157,203,129,190, 42,240,181,244, 29,253, 7,155,181, 7, 0, 0, 32, 0, 73, 68, 65, 84,187, 22, 37, 95, 40, 39,249, 19,197,114, -126,177,153, 53, 42, 96,174, 81,220, 26, 5, 63, 26, 87, 66,222,248,213,107,233,210, 96, 46, 12,186,184,148,119, 68, 5, 32, 85, -223,175,155, 93,231,251,225, 75,128,112,109,149,151,193,133,209, 42,232,161,197,118, 44,158, 21, 43,186, 84, 22,224,188,138,149, - 40, 84, 57, 89,151,190,141,140,113,215,107,165,242,173,137, 35,213,140, 22, 40, 10,114, 86,153,171,153,205,234, 21,238,114, 16, -229, 9,107,197, 67,197,205,109,105, 92, 99,171,254,178,150, 6,126,222,107, 0,180, 81,245, 45,132,213,153,248,102, 27,127, 85, -206,185,251,187,208, 90,195, 46,146,239, 24, 64,102,150, 76,157,235,101, 95,217,247, 12, 14,145,244, 60, 7,164,241,212, 8, 45, -174, 73,170,152,164, 86, 6, 61,249, 30, 20,185, 24, 85,172, 92,103,217, 8,216,171,192,229, 21,147,199,173,235, 94,159,157,118, -108, 59,148,177,205, 95, 79,221,247,109,225, 18, 51,162, 61, 64, 22, 5,141,242,212,123,157,130,158, 99,197,102, 15,168, 51,117, -229,105,151, 25,181, 52, 78, 94,206,248,117,115,153, 7,107,133,193,240,222, 53,155,184,163,182,109, 87, 51,170,176,248,112,101, -147, 84,135, 26, 50,186,226,133,157, 20,155,135, 44,218,246, 82, 92,194,108,138, 13,172,237, 58,116, 27,149, 67,109,241,147, 97, -208, 2,216,164, 50,140,142,210, 49,112, 63,247,235,168,249, 74,148, 58, 70,232, 81,238, 81,150, 47,110,219,235, 3,195,152,173, -234,130,150,222,173,171,139,191,209, 78, 30,209, 75,214,166,227,210, 85, 83, 25,240, 21,251, 74,146,198,210,168,149,109,177, 4, -226, 65, 12, 29, 70,221,242, 64, 70,202,151, 10, 6,193,167,118, 79, 29, 3,192,208,184,242, 12,135,187, 46, 72, 97,109,168,210, - 90,225,133, 87, 71, 61, 91, 97, 16, 39, 22,135,228, 99,181,234,149, 98,141, 91,220, 90,205,251, 82,238, 50,140, 40,133,107,213, -107,191,241,219, 74,164,191, 1,250,156, 13, 3,139, 94, 96,166, 6,192,183,232, 4,172,152, 29,213,153,222,250,185, 46,104, 57, -163,153, 59,104,104, 92,116, 95,239,137,184,105,220, 33,195,205,190, 5,170,201,230,207,239,139, 29, 88,195,173,148,153,231, 90, - 37,124, 98,166,188, 53,155,175,121,160,220,251, 60,215,146,250, 85, 76, 64,148,213,145,130, 42, 48,218,167,127,164,175,174,199, -161,124,245, 9, 32,110, 19,164,141,102, 70,111, 2, 19,105, 16,216,187,239, 53,242,181, 43,215,122,212,137,170, 28,241, 54,240, - 70, 58,125,191,238,230,227,122,114, 66,169,184,141,163, 17, 67, 14,168,243, 60,183,194,100, 29,219,198, 13,240, 12,190,160, 3, -185, 86, 50, 14, 85,254,175, 34, 94, 99, 81,145,170,155,163,169, 42, 58,109,103,187, 81, 85,225,153,148,211, 89,139,206, 57,183, - 31, 84,102,175,255,119, 12, 97,243,161,163,142, 14,164,138,105,150, 87,238,168,117, 41,210,234,210,171,229, 29,181,122,116,250, -245,125,142,154,133, 38,235,195, 92,133,231, 84,161,255,254,232, 72,102, 83, 19, 90, 14, 99, 41,119, 64,220, 10,119,153,168,125, - 31,215,189,190,140,181,105,135,160,160,209,194,222,162,212, 88,140,192,136, 53,161,186,234,128, 44,102,167,154,100,121,200, 48, -249,160,149,135,158, 59, 62,109,114,157,227, 2, 2,227,110,126,230, 76,224, 6,137, 21,254, 66,165, 85,198, 6, 21, 75, 6, 72, - 72, 37,184, 91,218, 96,181,108,164, 82,105,167,249, 22,171,220,107, 86, 96, 75,212, 56,201,193, 94,131,185,158,147, 36, 30, 63, - 6,138, 98,107, 96, 59, 3,245, 30,177, 23, 26,223, 66, 99, 24,100,131, 57, 81,139, 6,174, 93, 11, 90,204,204,135,224, 74,123, - 15, 99, 92, 5,133,246,213,125, 19,208, 68, 81,191,177,237,232,109, 0, 36,183, 0,137,101,140, 97,145,204,100, 48, 16,180,226, -192, 86, 48, 19,232,146,206, 54, 33, 17,202, 82,167,125,235,159,214,129,100,163,241, 4,141,128,179, 27,129,236,100,192,143,178, -100, 5,217,164,130,104, 1,120,107, 69, 47,165, 29,157, 14,238, 55, 97, 76,215, 19,186,191, 33,215,150, 4,237, 2, 47,211,181, -248,197,106,199, 27,141,129, 72, 21, 11,209,107,164,247,224, 87, 13,194, 44, 35,155,224, 78, 57,212,130, 35,143,113, 61, 41,234, -112, 37,163,245,105, 21, 11, 71,127, 63, 7,157,221,115,233,218,166, 53, 58,183, 20, 89, 98, 12,219, 27,131,239,120, 39,173,241, - 70, 53,180,176, 21,122, 53, 29, 32,203,224, 33,194,220, 41,142,245,154,197,250,161,234, 7, 15, 53,195, 1, 35,134,185,177,148, -107,218, 93, 84,145,171,100, 94,223,138, 25, 48, 90,241, 20, 91,193,245,220,223, 5,245, 34,183,139, 85, 21,201,131, 26, 64,141, -126,127,235, 40, 57,129, 41,214,158,162, 77,146,229,247, 71,199,166,181, 91,184,231,230,114, 26,202, 74, 63,195,214,207,192,198, -180,193,242, 25,181,117, 26,239,153,245,159,170, 58,134, 72,210,149,153,109,213, 76,118,195, 74,176,136,199,172,204,108,121, 5, - 64,211,235,156, 83, 49, 33, 81,121, 86, 50,246,176,249,117, 72, 85,205,122, 85,152, 88,214,146, 88, 90, 74,182,210, 76, 6, 9, - 84, 21,250,242,130,114,138,216, 70, 53,130,225,226, 75, 31,154,163,231,218,118, 34, 75, 45,203, 23, 69, 58, 31,248,173,160, 62, -174,150,184, 27, 57,181,247, 99, 28,212,105,181, 11,240,121,170,211, 62,233,219,154, 3, 15,209,211,139,153,232,253,170,213,182, -234,161, 49, 16,107,197,138, 85, 54,218,250,192, 82,136,201,206,237, 71,201,198, 26,127,254,190,215,116,252,153,238,143, 78,167, -141,206,193,125,239,169,244, 34, 87,118,230,126,194, 28, 43, 18,109,118, 34, 11,218,219,252, 30,204,245,228,123,202,132, 12,215, - 42, 85, 33, 24,197, 56,217,148, 44,185,192, 89, 33, 42,165,148,153,164, 7, 53,158,148, 78, 64, 39, 80, 84, 58, 13, 3, 23,182, - 24, 99,193,140, 97,176,190,220,134,151,138, 98,198, 60,115, 73, 46, 99, 39,144,228,156,107, 60, 41, 86, 71, 3,230,186,251, 50, -107, 38,211,182, 86, 23, 42, 17, 56,159, 0, 59,186,225,113, 55,111, 73, 21,171, 51,230,242, 85, 65,204,146,239, 75, 38,205,180, -144,181,164, 21, 16, 6,134,200,216,101, 69, 96, 29,224,116, 76, 64,160,166,186, 77, 1,134, 6,193, 35,140,197, 99,238,137,217, - 17,161,222,102,163,193, 8,156, 58,102,167,221,102,142, 78,178,124,104,109,101,218,143,204, 87, 65, 60,132,129,159,244,198,140, -108,208,174, 60,101,108, 83,146, 39,170, 89,183,206,108, 1,192,115, 59,158,209,142,144,203,218,251,165, 11,212,163,187,215,232, - 73,166, 66,162,234, 69, 82, 90,232,102,236,156, 43,141,152, 3, 63, 13,103,187,125,117, 91,220,219,114,192, 44, 44, 14,219,149, - 64,139, 59, 65,211, 20,235,206,151, 90,141, 4, 50, 72,234, 88,130,121,165,181,172,249,180,203,216,123, 53,121, 88, 55,198, 26, -110,216,158,166, 60, 67,183, 52, 35,197,172,146,172,111,160,253,166, 27,250, 13,158,229,100,117,189, 86,197,234, 88,109,203,106, -248,100,251,220,140,236,116, 83,108, 63,127,171,172, 23,109,203, 40,123,126,143,130,164,157,185,218,215,151,197,239,139, 1,105, -141,208,239, 97,123, 78,123, 66, 18,121, 77,244,197,126, 57,158,193,171,181,242,137, 4,161, 75,182,185,199,194, 80,171,155, 96, - 3, 91,226,129,111, 27,242, 44,208,224, 70,118,181,185, 63, 3, 60,212,104, 44,208,175,177, 89,226,194,130,183, 1,193, 57, 99, -124, 5, 52, 2, 46,165, 3, 96, 10, 17,235,248, 6, 84, 74,221,104,102,142, 16, 65, 25, 61,223,106, 37,212, 27,101,217, 67,139, -132, 82, 0,239,207, 12,229,169,158,215, 92,102,233,188,232,142,140,198,163,214, 80,198,187,158,148, 47,186, 65,214,202,136, 49, - 24, 26,103, 39,160, 0, 12,179, 99,165,165,232, 76,169, 0,142,204, 5,238,145,208, 86, 67,121, 45,131, 91, 84,170, 76,203, 42, - 78,171,245, 30,109, 45, 35,158,116,175, 77, 78,159, 79,101, 78, 43,105, 82, 29,232, 92,241, 83, 85, 52,219, 58, 42,250,177,149, - 63,221,166,116,245, 15,129, 3,134,160, 16,251,121, 79, 85, 40,163,141,116, 84,201, 47,232,100, 3, 0, 14, 81,203,151, 94,173, - 14, 76,107,219,117, 40,104, 53,146, 90, 40,230,105,226,150, 43,242, 68, 11,171,184,144, 30,240, 37, 20,115,135,166, 3,128,229, - 74,156,153, 17, 96,197, 33, 4, 68,174,118, 84, 96,212, 17,225,154,202,197, 21,105, 27, 30, 38, 96,250, 80,243,134, 12,107,164, - 56,236,132, 72, 55,102, 24, 37,158,149,151,239, 22,110, 89,139, 74,154,226,192,155, 57, 25,153,245,247,165, 77,174,105,179, 18, -196, 74,167,103,109,205,244,184, 12,217,152,231,110,117,149,122, 64,156,109, 39,111,206, 72, 27, 60, 9, 3,107,226, 55, 52,126, - 30,176,241,252,172, 37, 46, 91,221,135, 17, 38,130, 78,168,101,182,148,179,251, 41,215,157,242,154, 47,107,239, 68,197,223,119, -149, 74, 18,185,228, 90,150,251,225,186, 36,221,219,207,196,167,187, 26, 91,231,206,113,217, 30,183, 49, 38,198,152,219,244,117, - 38, 31,165,206,198, 25,212, 61,159,220,142,162, 64,205,103,105,252, 21,200, 4,213,197,117, 73,255, 29,143,199, 97, 82, 80, 20, - 41,137, 7, 96,199, 42,159, 44,177,213,175,232,213,235, 92,118,113,179,231, 88,103,234,134,175,156,244,120, 43,223,153,115,191, - 56,237, 27,177,180,189,162,169,214, 98, 86,214, 98,113, 77,170,199, 83, 85,190,170, 52,128,154, 81, 23,159,225,216,150,167, 61, -239,156,101, 25, 60, 4,128,152,104, 96,172,193,139,243,151,109,102,166,247,234,208,227, 35,225, 27,186,167, 58, 20, 97,177, 41, -124,158,132, 64,242, 12,124,180,153, 20, 28, 19,115,215, 38,195, 34, 41, 41,103, 49,176,252,163,242,181,180, 95,163, 53,140, 89, -173, 36, 86,136,248,132, 22,205, 90, 53,138,165, 80,243, 44,114,186,160,161,163,185, 73, 81,103,211, 61, 88, 76, 12, 77,114,196, -108,200, 21, 59, 80,112, 30,105,189,246, 21,117,197,245,150, 22,189, 21,102, 41,116, 71, 49,216,128,132,203, 96,182,157, 7, 35, -133, 44,118, 19, 78,148,207,146,152,116, 45, 50, 34, 74,237,179, 21,160,148,228, 46, 87,179, 9,115, 43, 2, 3,110, 95, 51,218, - 77, 91, 4, 14,174,100,244, 67,160,150,183,152,150,145,225,197,120, 19,229, 19, 22,196,108, 0,176,159,167,205,187,150, 64,210, -125,218,174, 13,128, 79,177, 35,173, 79,125,207,106,239, 41,106, 77,167, 75, 56,207, 42, 59, 85, 56, 83,114,137,145, 31,150, 97, - 53, 30,239,253,188, 15,205, 93, 58,151,180,251, 4,242,181,128,220, 7,245, 17, 26,127,113,255,141,202, 37,101, 29,246,230,245, -227, 18,253,109,131, 23,195,221,115, 76, 52,238,198, 56,114, 11,187,209,173,132,168, 79,156,122,235,214,210, 61,201,236, 24,137, -209, 56, 38, 82, 3,110,102, 16,188, 49,204, 25,157,227, 86,208, 6,128,200,110,209,154,111,126, 39,196, 77,116,124, 0, 53, 34, - 68,250,206, 58, 10, 46,236, 23, 30,119,108,100, 80,180,249,228, 87, 28, 27,203,213, 52,119,203,154,239,121, 35,180,179,136,130, -170, 69,182,145, 3, 55,136,244, 54,179,141,245,100, 85,237,199, 84, 0,110, 37,227, 45,206, 65, 43, 25,100,170,224, 98,211, 14, - 19, 35, 10,186,208,208, 94,201,128,121, 3,177,123,175,192, 76,188,153,169,159,252, 23,129,200, 17, 28, 25,209, 69, 80,160,198, - 79,219,179,203,179,221,234,151,108, 27,253, 50,106,199,163,181,172, 85,241, 3, 43,185,202,212,154,109, 20,148,118, 55, 21,171, -115, 90,202,230, 44,108, 64, 68, 93,123,149,171,196,166, 21, 16,169,247, 39,160, 49,194, 33,105,100,115,123,177, 19,181, 74, 37, - 99,167,168, 18, 50, 89,206, 33,181,192,105,233, 84,182,120,173, 94, 88,132, 12, 18,118,224,190, 85, 13,118,204,220,188,111, 21, -102, 83, 34,134, 24,223,106,206,178,175,156, 90,159, 34, 25, 50,169, 62,228,169,170, 86,127,244,201,237, 16, 16,146,133,163,132, -212, 23, 35,129, 35,135, 10,187,151,148, 20, 83, 76, 40,123,149, 98,178,109,119,243,190,118,253,172,181, 50, 43, 45,111, 32,212, - 90,172,154,165, 83, 63,172,131, 37, 61,127, 13,170, 11,202,231,137, 46,205,231,153,227, 87,221, 10,170,227,171,114, 67,105,147, -114,234,251,249, 58, 58, 25, 79, 65,157,225, 20,236, 80,200, 72,162,100, 57, 91,124,216, 73, 32,145, 16, 73,170, 21,173,105, 87, -203, 56,146,111, 7,103,185, 95, 49,176,205,136, 72,221,170, 72, 17, 44,140,144,215,137, 30, 35, 69, 80,164,178,207, 7, 84, 43, - 93, 82,143, 3,184,180,239,151,117, 68,139,245,156,126,238,192, 14, 73, 59, 84,247,229, 13, 69, 80,116,227, 72, 71,212, 28,193, -132,136, 0, 18,151, 18,196,168, 95, 51, 36,247,236, 21,219, 18, 17,192, 96, 68, 9,101, 63, 36,179,222,137,210, 48, 51, 57,195, - 49, 24, 49, 83, 94, 35,136,125,234, 23, 19, 99,111,246, 79,135, 37, 15,220,254,127,239,167, 14, 88, 89, 5,107, 68,170,108,141, -160,186, 64,182,222, 11, 57, 78, 85, 80, 89, 99, 0,182,207,134, 66, 33,175, 59,128,199,247, 59, 3,204, 72,168, 24,183,212,241, -106,226,146,139,196,100, 55,237, 56, 85,176,109, 91, 91,138, 52, 44,151, 74,190,234,189, 39, 84,173, 52, 65, 4, 70, 37,203, 86, -178, 34, 85,209, 44, 26, 73,215,226,154,102, 20,113,218, 82, 61,150,115,104,130,180,216,115,164,166,253,214,128,227, 70, 89,108, -151,233,159,106, 73,221, 47,170,199, 85,208,202,169,246,155,138,167, 16, 36, 57,220, 17, 64, 46, 59,154,105, 11, 41,204, 89,221, -175,221,172,123,249, 80,155,164, 52,243, 70,179,105, 11,183,103, 25,137, 48,135, 12, 92, 44,193,186,234, 95,215, 13,191, 35,241, - 85, 57,191,102,158, 93, 3,184,113,201,106,230,239,218, 90,170,191,223, 91, 79, 18, 43, 48, 45,189,134, 21,159,161,197, 62, 41, - 96,215,169,244, 81,155,224,197,172,157, 76,177,122,125,219,214, 37,135, 58, 83,170,231, 17,203,154,118, 94,219,115,209,240,243, - 99, 81,159,227, 98,254, 27, 75, 71, 64, 47,167,226, 82,210,165,139,249, 18, 71, 29,212, 34,146,224,112,188,205,215,148,243, 90, -136,217, 63,252,136, 24, 5,142,125,122,102, 98, 76,173,250, 28,212,161, 56, 23,239,234,122,142,154,236,228, 16, 35, 17,192,168, -173, 45,101,180, 48,113,237, 52,160,219,160,153, 7, 1, 88,146,120, 68, 74, 62,168,204,197, 11,251,130, 91,125,125,234,146, 94, - 51,188,107,103,212,107,148,175, 76,249, 36, 81, 59,215, 10, 64,101, 78,126,216, 58, 75, 28, 29,251, 53,209, 24,140, 80,219,242, - 44,174,245,198, 13, 36,170, 97, 12, 87, 71, 44,162,124,109, 37,182, 42,151, 3, 73, 92, 91,233,141,198, 90, 81,176,250,185,239, -179, 31,237,124, 13,110,146, 13, 41, 28, 49, 16, 9,158, 18,119, 60,229, 35,156,174,117,254,126, 10,158, 2,239,125, 78,174,157, - 41, 26,164,180,162, 37,212,189, 95,143,204,118,191,241,247, 74, 74, 88, 71,115, 64,135, 33,202,246,191,186,183,112, 46, 32, 99, - 29, 57,133,188,142, 57, 95,119, 61,198, 56,131, 56,159, 63, 43, 38,133, 11,214, 41,137,153,185,102,223,148,236,127, 30, 67, 62, - 7, 30,139, 94,105,225, 26, 58,246, 85,227,185, 78,132,201,200, 96,199, 98,127,107,198,134,145, 17, 41,164,247,237, 70,160,177, - 88,159, 16,156,112,197,121, 12,239,123, 77,218, 34, 85,203,230, 4,214,155, 17, 66,132,196, 25, 34, 4, 95,179,212,113,112, 11, - 81, 77,236,201, 72,101,218,108,102, 9, 52, 17,147,213,160,107, 41, 47,245,248,151,136,221,252, 49,135,115,192, 69, 22, 19,101, -201,203,206, 96, 60,165,136,233,197,182,199,251,102,200,159,183,165,248,121,126,191, 52,194, 5, 16, 10, 89,196, 39,228, 44, 46, - 36,192,162, 67, 7,191,131, 1,104, 37,169, 66, 27,232, 20, 93, 29,122,139,216, 53,244, 37,121,147, 24,185, 70,248, 0,112, 69, - 6, 53, 85, 47,245,124,137, 76,203,217,104, 3,144,229, 96,219,145, 72,241, 97, 54,109,121,131,206, 46,173, 45,140, 41, 85,181, -163, 18,187,170, 57, 22,205,227,126,125, 68,155, 20,142, 90,150,130,180, 41, 32, 46,186, 59, 78, 55,239,144,232, 76, 73,182, 53, - 22,244, 9,114,226,161,237,211,126, 94,238, 72, 63,181,202,208,194, 28, 51,230,130, 56,107, 59,182,200,119,159,231,122,156,129, - 23,148,143, 14,154, 32,231, 35, 81,103,178,194,213, 79,192,130,230,214,244, 10, 32, 9, 23, 32,235, 64,172, 26,161,217,200,197, - 86,193,155, 72,210,184, 86,217,170,172,164,218, 35, 37, 59, 50,153,195, 70,251,179, 31, 63, 44,103,202, 92, 89, 31,121,175, 81, -155, 85,151,147,198,102,116,101,252,191, 91,132,115,168, 90, 4, 82,211, 14, 98,129, 47, 93, 49,206,227, 15,206, 85,137, 43,148, -190,181,115,100,195, 83, 31, 6,117,199,171,221,139, 83,182,199,169,146,172, 50,221,141,207,189,126,230,105, 44,226,146, 18, 20, -223,141,110, 92,179,207, 16,113, 93,183, 93,235, 93,215, 87, 18, 6,227,225, 6,211,116,203,186,113,123,189, 31,161, 16,128, 57, - 31, 21,156,170,235, 30,145,179, 85, 41,101,223,147,132,165, 73,207,182,237,178,112, 51, 42, 35,114,249,254,231,128, 9,125, 29, - 6,187,164, 33,193,110, 66,144,184, 8,236, 90,108,120,239, 23, 65,189, 22, 37, 17,142,140, 0, 85,150,149,165,108, 36, 5,101, -248, 72,218, 8,251,174,134, 67, 82,217, 19,234,159,223, 28,255,176, 52, 28, 82, 38,143, 98,185,162,204, 89,160, 44, 34,230,191, -241, 33,175, 97,183,152, 41,215,209, 82,101,144,201,201,160,222,108, 25,212, 82,235, 98,143, 51,161,104, 56,165,157,143,115, 14, - 19,253, 20, 89, 43,185,166, 27, 80,119,237,234,101,173, 28, 70,173, 86, 12, 86,213, 54,133,227,223, 51,168,159, 38, 31,109,204, -235,139,144,207,192,183, 88,217, 4, 33, 44, 2, 14, 17, 21,217, 65,103,232, 21, 13,106,181,160, 75,101,128, 3,176, 51,181,216, - 97, 8,218,108,210, 27, 63,223,254,115,107,213,196,108, 81,231,220, 4,221,154,108,180,237, 46,173, 86, 75, 80, 39,203,159,150, -218, 33,146, 26, 93,154,128,101,251,151,102,236,193,221, 61, 25,136,148,193,228, 38,112,112,181, 15, 97,144,202,146,147,216, 52, - 51,175,149, 6,147, 65,171, 19,167,170,136,234,125,248, 92,194, 49,138,142,165, 13, 53, 49, 62, 53,222,233,159,159,237,121,107, - 63, 79, 77, 49, 37,174, 78,217,171,246,188, 91, 5,105,142,114, 0, 6, 26, 22, 76,255, 25,107,112, 95, 9,216, 76,155, 73,115, -105,241, 71,106,250,223,210,201, 2, 11,117, 0, 88, 11,200,203,242,192,232, 13,127,152,154,249,102, 52,173,116,165,250, 22, 38, -221, 9, 23, 66,199,188, 25,212,215,198,104,247,185,127, 0, 48,121,222, 4, 42,218,189, 58,169,127,202, 2, 93, 47, 52, 80,136, -236,222,155,177,226,248, 86,252,236, 87,128,108, 88, 3,191,233,197,229,147, 29, 77,178,116,179,238,243,240,202,245,221, 98,241, - 52,159,131, 19,117,217,170, 20, 22,204, 88,164, 2,244, 30, 3, 15, 93, 82,228, 83, 45,134, 70,107, 69,154, 78, 77, 89, 47,133, -133,194,198,254,122,144, 84, 83,104,246,187,241, 80,170,174, 47, 49,251,132, 63,132,116,163, 3, 92, 99,182,193,115,128,112, 2, -226, 68,142,173,209, 4,197,210,190, 33, 9,165, 82,234, 43,230, 40,189,145,203,242,201,148,156,205,148,182,114,190,216,197, 3, -187,115,145,141,134, 63,169, 45, 82,234,182,184, 70, 79, 28, 75,238,164,109,191,127,238,118,251, 2,189,122,191, 89,216, 16, 8, - 66, 45, 83,160, 7,196, 53,202,123, 29, 6,192,162, 51,133,105,137,101, 88,107,249, 47,154, 58,212,116, 80,250,163, 99,222,244, - 67,246, 5,123,209, 74,144, 42, 96,114, 1, 2, 18, 83,173,150,251,213, 38,135, 75,183,178, 42,124,212,178, 37, 34, 56,107,227, -243,223,245, 6, 82,108, 18,172,194,229,214,196, 37,251,154,170,168, 17,115,162,233, 89, 45,135,251,180, 73,135, 32,154, 46, 64, -141, 54,112, 57,129,132,118, 88, 49,250,216,112, 73,171,255, 63,219,190,194,153,231,151, 49, 74,213, 89,120, 72,221,236,207,213, -173, 36,247,163,207,159, 76, 49, 86,196, 61,184, 42,230,109, 1,237,196, 68, 9,149,147, 46,178,210,100, 18, 10,171,205,159,247, -171,136,132, 93,136,185, 91,209, 39,188, 10, 74,228,149,164, 98, 43,104,149,251,227,220,248,190,118,214,207,167,249,243, 43,226, - 45,136,195,159,175,141, 22, 91,134,197,224,181,101,236, 5,209,123, 60,148,241,161,240,170,139,165,125,254, 71,251,160, 21, 71, - 26, 1,226,234, 30, 27, 87,229,120,181,146,182,149,182, 6, 83,186, 7,147, 41,168,142, 74,254, 12,218, 90,223, 2,234,181, 51, -246, 14,252,134,113,113, 36,221,125,177, 60,253,158,250, 39,172,126, 5,105,127,141,195, 89,189, 44, 40,130,122,244,115,168, 51, -110,219,201,139,154,249,166,161, 70,157,167,168, 43, 79, 52,188,195,184, 60,169,178, 89,129, 54, 45,211,171,223, 46,101,242, 28, - 53, 16,165, 42,171,217, 45, 24,169,138,110,139,197,102, 95,159,185,239, 77,183,193,243,196, 77, 63,181, 40,228, 84, 78,208, 13, -130,151, 15,173,171, 72,117, 91, 21,103, 91,212, 5,101,172,163,229, 69, 9,165, 82,141, 3,106, 80, 89,160, 3,225,191, 52,151, -172,181,125,235, 37,221,178, 18, 22, 84,161,178,247,154,245, 67,181,253, 79,166,138,110, 51,247,154,221,235,198, 94, 41,104, 85, -217, 45,123,173,149,209, 79,145, 48,110,230,164, 84,193,156, 43,183,201,173, 25,218, 16, 22,152, 4,202, 93, 85, 46,179, 91,159, -253, 14, 18, 66, 94, 91,143,202, 8, 73,221,133,133, 48,166,185, 63,210,204, 35,235,215, 29,151,222,240,238, 35,245, 2, 45,178, - 64,191,218, 4, 91, 49, 7,227,246, 40,173, 86, 48,117,253,204,109,176, 22,110,180,248,235, 90,225, 70,206,120,164,219, 77,131, -103,162,153,169,155, 68, 92,154, 74,113,208,239, 50,184,144, 33,232,204,220,183,104,198, 26, 84, 58, 55, 82,248,203, 54, 9,209, - 34,195,142, 12,226, 98,100,112,255,103, 92,194, 54,250,189, 23, 21,234,169,191, 17,235, 65,125, 75,133,173,222, 64, 30, 38,235, -182, 3, 90,180, 71, 88, 22, 51,225, 24, 99,245, 46, 48, 65,171,172,157,141,162,133,114, 69,169, 0,198, 81, 34, 82,146, 50, 57, - 13,148, 28,105, 26,108,217,239,234,103,209, 86,121, 47, 37,219, 39,181, 99,160, 98, 52, 53,122,222, 75,204, 53,172,114,230, 70, -237,206,254,215,189,110,233, 68,230,231,117,154,246,237,231,238,158, 99,137,206, 20,203,213, 67, 66,147, 79,134,107,128,113, 37, - 57,101, 52,223,183,127,231,133,169, 86,123,165,229, 25,242,155,231,106,156,114, 96, 20, 37,176,164, 89,154,136, 36, 87, 26,169, -242,138,194,109, 16, 23, 90,217, 76,200, 22, 74,110, 97,205, 89,132,250, 5, 5,121, 57,252,251, 83, 60,206,141,246, 88,162, 28, -132,191, 87, 80, 95,115,169,186,119,243,158, 87, 30, 8,108, 43,181,161,155, 89, 74, 87,197, 47,218, 78, 43, 82,172, 34,177, 49, - 83, 89,252, 50,157, 80,152, 83,205,122,221, 80, 99, 54,245,201, 15, 50,107,191, 68,168,180,173,237, 70,239,157, 67,160,144,147, - 65, 46,170,127,106,201,171,115, 51, 26, 24, 23,212,132, 44, 5,197,166, 27,211,249,101,143, 90,207,233, 20, 99, 93,107, 37, 8, - 25,245, 53,187,193,229, 54, 59,177, 20,249,217,251,200, 96, 90, 5, 42,151,159, 53, 5,182, 91,191,115, 93, 11, 35, 62,249,234, -156,213,116, 74,224,146, 45,141, 48,149, 12,223,190,223, 48,227, 23,215, 40, 18, 2,108, 2,160,173, 52,184, 14, 2, 69,134, 29, -152, 82,189, 26, 61,110,206,122,148, 77, 30,101, 59,122,180,212,174,182, 63,183,148,165, 70,196,164,184, 28,186,146,108,244, 71, - 89, 49, 82,234, 95,191, 57,159,110,243,220,234, 20,104, 49,178,181,111,172, 26,185, 40,207,152, 7,115,240, 19,202,124,205, 26, -139,178, 90,233,142,204, 72,108,226,199,204,213,150,214, 98, 12,186,231,123, 45,233,208,164,164,241,218, 56,225,246, 54, 10,224, - 67,188,209, 70,219,124, 49, 82,176,227, 32,231, 22,251,243, 58, 32, 58,130,104, 90, 85,213,220,138, 27, 91,122,248, 54,168, 59, -215,162,231, 23, 86,197, 88, 25,175,229, 61,181,217,191,164,142,179,163, 5,238,161, 5,145,123, 16, 39, 85, 42, 78,160,136,148, -141,248, 78,144, 37,115,143,237, 92, 45,103, 42, 35,196,231, 73, 26,135,105,211, 9,135,254,138,181,109, 27,150, 85, 0, 70,133, -179,108, 84,234,144,133,147, 79,253, 89, 88,242,255, 22,111,118, 34,104,243,231,173,244,251, 74,122,187,192, 23,233,140, 67, 71, -206, 70, 88,151,227,220,210,110,151, 92, 53, 55, 49,162, 71,227,230,228,174,207,216, 91, 89,205,236,105,159,193, 45,100, 16,247, -236, 56,207, 34,201, 84,173, 84, 58, 58,204,156,209,184,117, 51,173, 28, 88,157,215,243,186, 30,121,166,149,244,109, 41,222,152, -207,233,121, 75,254,124,214,161, 80, 27, 59,170, 33,239,200,195, 41,194,159, 5, 62,163,130, 57,115, 46,181,211,178,105,175,105, -189,205, 45,170,219, 38,168, 68,229, 92,214, 54,243, 69, 27, 91, 42,214,128, 64, 32,151,129,115, 57, 81, 87, 86, 75, 31,220, 26, -208, 34,251,197, 64,166, 95, 11,182, 77,220,182,242, 90, 29,137, 72,125, 2,106, 42,252,149,160, 61, 28,105,209,242,245,200,162, -167, 21,223, 96, 58, 93,107,214,158,247, 85, 56,211,117,211, 31,197, 38,253, 93,208, 19, 17,120, 55,157, 20,122, 89,224, 8,100, -169,167,222,171,182,108,201, 52,183, 63,231, 97, 48, 95, 24,103, 53,102, 62,108, 10, 1,110, 37,159,187, 74, 93, 76, 74,166, 86, -185, 22,147,160, 99, 49,233,198,159,188,146,196, 80,236,237, 69,195,202,112,176, 85,234,171,136,124,106,206,167,178, 11,214, 45, -128,215,212,232,136,124, 6, 89,198,225,152, 82,186, 14,171,253, 90,223, 47,160, 87,137, 91,142,184, 44,201,120,177,135, 73,104, -239, 27,120,156, 60,200,120, 76, 65,204,166,219,157,254,198,247, 79, 27,101, 26, 20,117, 42, 59,165,157,117, 34,131, 20,171, 42, -182, 18,216,169,227,150,223,163,107, 61,168,100,151,109,184,173,153,246,234,156,243, 68,165,189, 89,169, 83,196,189,245,100, 87, -192, 14,212,137, 39,148,204,152, 86,230, 83,116,218, 3, 27, 88,106, 47, 15, 45, 17, 17, 23,218,206,125,123,191,162,211, 7,217, - 40,197,188,185,115,105, 31,171,113, 10,199,132,145,112,142,242,195,163,153,177,203,188,218,196,110, 72,175,175,168,212,190,178, -232,180,147, 73, 69, 99,140,113, 74,168,102, 65,164, 65, 58, 11, 28, 9,128,201,123, 83,133,247,193, 54, 5,113,155, 76, 56, 53, -134, 65,162, 82,105, 59,141, 73,192,236,146, 29, 49, 39, 14,122,210, 0,224, 6, 36,215,204, 44,209,186,241, 69, 27,204,114,123, - 45,241,251,141,208,140,153,249,246, 21,122,185,159,121,211,140, 0,246,211, 84, 44,104,181, 66,135,227,213, 10, 93, 59, 43,214, -216, 98,225,252, 62,104,149, 18,184,120, 34, 52, 63, 51, 95,187, 97,114, 61, 80, 41,227,109,147, 22, 6,140, 78, 95,219,166,231, - 28,132,245,168,189, 32, 45, 20,104,227,191, 38, 25, 64,165, 28,114,206, 74,244, 72, 34,217, 66, 90,176,115,174,116,126,244, 24, -187,160,236, 54,236, 79,155, 86,246, 8,253, 62, 72,186, 23, 9,192, 70,194,104,147,173, 81,245,170,149,235,104, 12,208,183,219, - 55,177, 56, 50, 54,196, 25,237,207,246,125,108,229,172, 5, 74,219, 17, 88, 79,136,182,186, 13,107,221,144,209,223,109,141, 54, - 36,134,225,249,111,105,241, 55,207,121,140,105, 28, 77, 53,233,105,177, 81,219, 35,148,216,189,255, 34,105, 84,153, 90, 25, 43, - 31,142, 62,155,119,138,158,204,188,164,210,158,145, 6, 46,178,152,155,213, 7, 84,154,138, 88,117,177,185, 15, 50,157, 98, 88, -111, 72,209,194, 83, 96,116,225,169, 5, 52,169, 32,138,106,104, 11, 54,102,154,253,226,236, 19,128,172, 88, 70,113,163,205,181, -165, 24,231,134,206, 88, 39,129,116, 38, 83, 44,188,104,165, 67,112,203,161, 29,129, 78, 68, 78, 39, 47,107,192, 10,138, 82, 42, - 26, 17,129,155,114,112, 84, 16, 5,161,169,168,117,209, 73,147,128,181,166, 42, 41, 57, 80,229,181,244,160,123,167,201, 0, 85, - 64,137, 66,206, 77,171,156,237, 53,233, 23, 61, 69, 67,215,169,159,171,208, 71, 72, 64,174,154,248,104, 16, 75,152,143,244,121, -119,206,151,182,183, 21, 94, 73,130, 15, 10,132,139,173, 25, 80, 54,126, 32, 65, 85,148,211, 96,174, 60,253,252, 44,120,207, 93, -197,153,121,208,185,198, 73,226, 76, 48,252,232,220,253,200,179,165,162, 82,134,228, 90,230, 40, 91,184,230, 10,219,249, 58,154, -114, 5, 56, 72, 37, 72, 29,148, 67,157, 53, 14,136, 25,228,114,216,226, 42,123,105,164, 7, 10,102,128, 87,128, 91,182,249, 84, - 3, 68,221, 19,172,241,133,195,178, 43, 97, 43,236, 16,226,189, 0,156, 54,240, 20,160,144,105,127,167, 68, 10, 37,217,210, 54, - 59,193, 45,146,161,152,250,147,165,157, 78,131,100,169, 96, 86, 12,175, 93, 58, 11,100,234,190, 95,254,206, 98, 56,250, 42,176, -255, 76, 54, 64, 96,137, 53,112,112, 77,112, 42, 6, 30, 29,181,202, 6, 27, 17, 65,136, 42,234,229,154,125, 69, 0,144,171, 28, - 19,251,247,189, 58,165,228, 4,165, 57,239,252, 28,106,101,234, 92, 86, 2,141,233,119,171,178, 30,213,209, 9,197,102,111, 7, -164,140, 99, 89,218,117, 84, 18,136, 50,199,231,205,130, 74, 43,113,139, 21, 89,171,194, 71, 65,123,100, 61,220, 36,144,206, 21, - 75,229, 1,164, 3,243, 28,210, 94,192, 6,235, 21, 35, 68, 34, 66, 46,104,172,145, 86,228,118,238,172,178,213,209,240, 66,236, -185,198, 88,101,172,185, 8,101,213,238,164,119,126, 37, 49,201,234, 24,113,206,235,196,128, 7,135,243, 6, 81,155,145,216, 33, - 32, 43, 23, 80,161, 37, 36,170, 95,157,190,118,112,185,165,235, 74, 37,106, 45, 39,147, 34, 78,204,179,182, 80,190, 86,197, 44, -229, 3, 83, 84, 52,124,182,176, 20,100, 37,167,116,129, 92,158,235,235,247,235,215,153,143, 46,116,242,231,137, 78, 22, 81,148, -137, 88,204,249,184,140,242,231,230,252, 18,112,161, 42,188, 65,147, 2, 85,104, 2,167,182,126,254, 58, 81,158, 70,226, 49,170, - 72, 21,219,206,196,192, 73,174, 54, 6,150, 27,135,228,170, 66,103,217, 90,118, 18, 8, 28, 35,156,243,112,144,188, 81,214, 99, -217,225,187,214, 19,155,102, 17, 13,230,243,213, 73, 46, 97, 44,152,185,178, 9,137, 51, 96,142, 83, 27, 91,189, 4, 84,250, 84, -172,249, 8, 23,187, 71, 94,120,121,103,248,144,180, 46, 99, 41,200,147,169,172,125,149,211,213,239,163,182,206,133, 48,148,118, - 44, 89,112,190,247,194,190, 25, 11,177,105,111,123,147, 92, 49, 81, 81,193,211, 36,130, 92,139, 10, 47, 74, 89, 80, 37, 92,147, - 72,246,182,177, 68, 41,233,193,210,205, 74,131, 56,136, 16,108,155,216,116, 1,132, 0,206, 73, 11,242, 8, 77,244,168, 73, 89, -239,201,192,212,208,152, 52,185, 43, 10,128,194,141, 71, 57, 79,190,225,215,234,239,244, 64,161,145,159,118, 4, 32,142, 87, 70, - 95, 43, 22,146, 6, 25, 95, 0,134,249, 58,176,237,210,177,174, 79,215, 84,238, 69,179, 63,214,164, 77,147, 61,155, 44,148, 78, - 69,136, 89,235, 74, 22,109,252,102,132,227,234,209, 74,205,198, 57, 44,233,168, 24, 37, 69, 24,251,218, 27,186, 86, 95,105,142, -172,115,251, 89,113, 12, 45, 80,202,147,203, 0,171,244, 60,204,135, 99,249,218, 38, 61,197, 91, 97,224,162,216,124, 14,211,190, -239,153, 20, 41,217,221,230,158,168, 11,154, 5,178,149,128, 13, 73,215,127,163,171,186,101, 62, 53,154,129,247,215,202, 13,100, - 96,155, 42, 41, 88, 81,169,101,215,115,154,166,225, 61, 81, 86,132,158,126,237, 78,181,133,143, 26,186, 84,121, 97,238, 36, 93, -253, 96,255, 67, 9,234, 97, 21,243,181, 46,191,235,149,103,103, 13, 93,168,104, 97,183, 31,184, 80,120,178,254,117,177,162, 52, -136,211, 82, 65, 65, 12,250, 57, 22, 32, 21, 35, 41,105,145,196,212,166,205, 95,215,163,202, 64, 86,215, 55, 20,135,184,228, 79, -157,146, 3, 1,155,164,129, 36,129,151,244,125,202, 49,183, 74,201, 84, 92,245,152, 43,105,115,190,132, 36, 54,194,249,152,144, -218, 85, 45, 76,191,207,189,135,174, 57, 95, 50, 95, 91,177, 17, 43, 70,162, 63,143,221, 98,100, 90,239, 52,208,136,187, 91,168, - 73, 26,217, 85, 9, 78,101, 5,197, 36, 71, 82,228, 46, 43,191,167,117, 75,169,138, 72, 53, 40, 9, 90,167, 49,148,142, 76, 10, -222, 85,154, 23,101, 14,158,236, 16,139, 70, 29,152, 8,206,177,233, 76,228, 57,111,148, 70,198,149,168,213, 68,112,108,191, 79, - 69, 46,212,149,234,181,206,170,134,138, 78, 52,182, 54,213,100, 58,113,211,107,139,148, 59,192,166, 51, 46, 73,158,184, 88,151, -234,235, 71,116, 64, 44,173, 36, 81,219,235,165,170,224,101,123,222,185,177,203,149,165,164,245,159,199,182,227,197,115,193, 38, - 88, 84,115,147,200,216,205, 52,207,225,136, 83,139,190,184,232,149, 89,231,210,163, 61, 93, 10, 30,183, 97,227,192,100,197,216, - 56, 82, 7, 38,148,181, 86,253,136,155,156, 51,180, 53, 42, 32,114, 80,167, 1, 32, 14, 81,224, 40, 5, 93, 5,253, 22,124,136, -189, 79,204,139,202, 28, 3, 54,197,200,105,139, 5, 11,244,250,226, 95, 8, 99,180,183,117, 21, 27, 98,129, 90, 12,134,244,173, -122, 35,128,162,130, 34, 66,130, 57,134,242,108, 9, 85,236, 8,140, 15,130,100, 43, 72, 90, 5, 18,155, 53,160,166,229, 82, 5, -123,154,196, 84,104, 49,134, 89,244, 93,179, 65, 83,223,109,232, 32, 28,195,127, 74, 89, 91, 11,244,163,241,197,218,207, 87,131, - 58,173,131, 13, 53,128,247,157,128,210, 57,232,188, 59,244,227, 4,200,178,157, 79,217, 35,197,166,190,146,246, 5, 89,140,155, - 99,217, 51,214,186,200,229, 73,146, 44, 91, 92,112, 30,148, 52,129,213,174,180,100, 96,162,193,141, 75, 16, 39,150, 92,237,165, -108,181,182,249, 77,219,160, 84, 50,109, 16, 43, 84, 19,137,185, 82,204,129,131, 85,196,164,138,153, 56, 69,241,216, 54,125, 85, - 8, 65,149, 43, 53,192, 27, 29, 1,228,246, 16, 83, 85,148, 27,125, 95, 3,175, 6, 93, 71, 84, 0, 86,138,194,142,185, 82, 72, - 95, 43, 15, 48,125,223,233,131, 41,218,198,207,156,226,152,218,168,250,181, 61, 54, 10,211,141,223,110,173,245,180,195,177,208, -102, 22, 78,150, 90,194, 25, 92, 81, 73, 56, 21,177,205,102,243,205,237,162,104,174,149, 41, 99,169,168, 44,117,224,168,197,194, -161, 85,181,171,180,165,165, 27,227,236,250, 41,198, 42, 84, 54,118, 6,229,123, 79, 70,219, 61, 85, 10,181, 74,232, 4,102, 20, -136,147, 37,131, 9, 75, 20,241,228,124,217, 96, 85,219, 64,184,203,212, 87, 3, 67, 68, 20,106, 16,232,132,254, 92, 42,194,148, - 76,165, 94, 43, 71, 89,204,124, 53,248,106,112,150,174, 58,235,131,182,181, 99,181, 0, 58,233, 54, 53,251,247,165, 61,237,170, - 35,222,168, 43, 81, 42, 5, 83, 13,150,223,101, 46,237, 61,196,196,239,150, 96,218,209, 5,188,147,168,110,161, 84,120,153,245, -208,119,140,160,202, 87,198,250, 82,168,147,124,109,217, 49, 86,217,177, 49,246,232,128,132, 92, 24, 58, 93, 96,151,218,196,213, -231, 74, 50, 6, 36,136,128, 61, 26, 12, 66,227,116, 5,128, 93,197, 62,104, 5,238,108, 37, 40, 99, 84,185,165,104, 54, 44,129, - 21, 3,147,158,110,181, 54,171,237,103,240,163,223,239,193,147, 64,132, 16,167, 4, 53, 31, 37,239,219, 80, 7, 63, 45,126, 56, -183,155, 57,237, 51,142,212,179,160,151, 83,205,251,143, 76,233,245, 36,201,145, 38,213,201, 80,119, 50,193,230, 12,188, 80,207, - 86,185,250,113, 21, 89, 63,106,151,175,205,250,215,174,227, 26, 80,184,196, 42, 9,141, 7, 70,255, 94,125,165, 60, 42, 18,134, - 8,126, 85,154,139,221,249, 81,127, 14,219, 30, 9,108, 40,171,163,113,235,136, 69,224, 29, 85,237,247,138,120,182,149, 67, 13, - 10,202,227, 83,100,171,152,139,147,188,157, 37, 7,139,152,171, 55, 65,140, 93, 21,166, 40, 33, 74,138, 93, 35, 67, 8,139,230, - 18,233, 64,230,101, 67,212, 48,222, 86,250,142,234,121, 71, 18, 48, 83, 87, 9,213,223,171,240,243, 52, 14, 40,109,117,174, 6, - 26,169,149,105,199, 3, 84, 42,127,213, 42,214,135, 59, 72,210, 34,143,221, 38,163,213, 92,144,246, 88,111,142, 42, 25,213, 28, - 93,181,239, 74,199,139, 44,154,191, 65,187, 13,105,248,156,133,125,200,215, 23, 72,254,224,220,204,244,116,230,196,107,217,108, -158,169,145,140, 16,222,174,116, 50,156,213,116,103,169, 0, 55,182,247,175,138,184, 56,117, 61,107,228, 74, 92,139,171,104,170, - 49, 50, 40,251, 26,252,188,118, 66,162,148, 57,184,206,217, 41,119, 7,100,129,147,208,100,144, 23, 64,203, 30, 75, 81, 55,206, - 28, 80,216, 53, 26,241,105, 6, 42, 5, 0,102,219,228,122,143, 35,122,240, 97,213,113, 16,146, 85, 94,121, 10, 98,203,115,227, -114, 76, 9, 11,204, 57, 45,170, 89,118,185,139,102, 62,171,178, 93, 64,201,143, 90,164,102,207,102, 79, 0, 0, 32, 0, 73, 68, - 65, 84,180,171, 73, 8, 97,160,223, 32,200, 0, 49, 45,220,104, 13, 39, 82,197,107, 92,127, 29,121,105,162,100, 41, 83, 97,133, - 32,230, 58,240,109,251, 25,217,168,114, 85, 20,162, 98, 23,156,247,165,237,204,165, 41, 37,229,107,201,237,247, 24,151,106,115, -182,205, 41,125, 5,109, 59,212, 3, 61,249,242,108, 58, 54,190,229,220, 34,232, 5,139,231,106,209,173, 48,137,192,112, 54, 28, - 3,196,229,110,152,115, 96,114, 96, 55,101, 35, 22, 32,204, 49, 87,229,220,149,239, 84, 42,104, 24,172,134,106,222,235, 76,141, -244,102,139,182,252,179,121,144, 80,146, 91,165, 78,225,109,165, 77,174,180, 18,150,174,149,238, 12,162, 94,172, 85,112, 82, 3, -117, 92,173, 69,173, 91, 94, 49,230, 33, 25,196,197,106, 68,229, 60,111, 48, 96, 24,206,241, 38, 82,126,196, 30,104,131,120,104, -215, 97, 67,138, 34, 28,179,252,176, 38,183,212,109,212,228,105,149,125,210, 38, 49,219,214,186,109,119, 35, 57, 15, 26,241,144, - 42,246,193, 86,163, 26,173,225, 5,101, 35, 18,210,141,137,181, 61, 95, 77, 63,146, 81, 9, 87, 29, 95,146,165,113, 11, 42, 5, - 41, 26,203,212,188,154, 76,165,223, 47,122,105,130, 92,122,175,138,124, 38, 44,143, 92, 30,110, 99,233, 73, 41,104,104,104, 79, -134, 20,148, 43,122, 87,144, 2, 41,104,115, 54,174, 80,154, 14,119, 94,237,178,201,139, 85,145,148, 42,150,162,162, 9, 57, 5, - 34,151, 55, 94,165, 41,100, 19, 3, 36,148,101,212, 46, 70,105,153, 91,124,113,110,117,138,113, 84,211,185,183,182,115, 80, 65, -125,148,199, 46,165, 67, 99, 44, 24, 27, 32, 9,115,245,128, 95, 4,158, 42,231, 90, 44, 28,179, 72, 11,163,175,168, 66, 1, 22, - 38, 26, 91,213,103, 46,179,122, 82,101,132, 22, 53, 14, 84,106, 99, 95,169, 23,238,122,167, 81, 45,212,206, 1, 35,198,192,195, -117,158,185,148, 77,153,236,231, 54, 25,122,157,229, 74,163,146,166,221, 16, 49, 0,175, 14, 61, 85, 59, 76,157, 88, 76, 3, 8, - 26,206, 49,219, 74,157,224,183, 21,233, 6, 21,158,165,232,132,108, 74, 18,161,192, 41, 52, 0, 42,238,209,207,166,194, 40, 65, -199,204,172,251, 49,129,115,190,101, 97,244,231,192,213, 18,216,173, 33,148, 59, 10, 92,179, 6,172,165,179,125, 52,180, 27,199, -173,214,188,214, 20, 49,211,250,154,239, 47,193,216,235, 85,158,200,201, 10,114,156, 44, 46,149,218, 70,213,124, 63, 19, 30,182, -240, 89,128,140,169, 88,179,254,228,221,104,108,146,198,132, 18, 37,119,106,218, 68,182,218, 63, 80, 26, 95, 24,204, 76,111,172, -229,114, 48,139, 49, 86, 25, 90,243, 89, 23, 51,225,174,149, 61,101,116,183,254,253, 2,195, 51,232, 86,140,208,253,107,221,196, - 53,228,123, 5,159,110,179,158,214,216, 2,189,200,205,218, 58, 41, 51,125,185,159,242,228, 66,166,153,198,214,201,205,254,220, -253,190,119, 84,216, 53, 77, 21, 84, 51, 30, 46,170, 59, 69,106,193,204,158,211,247, 82, 5, 75, 38,112, 16,146,247,116,106,203, - 85,229,117, 42,178,176,137, 39, 94, 60,171, 81,173, 53, 13,204,166, 51, 6,177,128, 52, 87,102,196,101,150, 58, 48,110,209,163, - 35, 70,204,166, 1,250,125,148,205, 88, 10,192,134, 75, 71, 1, 69,217, 77,131,179,179, 64,156,133, 96,139,148,191,149,238, 24, - 11, 38,160, 73,130, 77, 36,170,237, 99, 6,134,149,130,114,167, 59,241,252,102,228,129, 30, 77, 94,128, 77,245,129,106,171,213, -196,187,102, 44, 65, 92,250, 39,126,101, 83,178, 15,133,149,170,212,192,228, 10, 27,162, 86,219, 10,156,209,113, 76, 17,192, 48, - 34, 41, 14,190,128,249, 34,173,163,252,169,243,139,239,165, 47,203,239, 59,110,123, 0, 93,251,139,105,172, 56,149,109, 19, 50, - 37,175, 2,203,154, 13,179,211, 91,111, 2,123,238, 36,168,182,123, 19,204, 77,119,199, 43,229,110, 68, 55,226,177,244,171,203, -201,169,227,164, 72,181, 37, 85, 27, 99, 92, 72, 11, 91,162,153,206, 12, 53, 80, 17,183,232, 92, 81, 63,104,170,115, 92,235, 31, -237,178,226, 85, 85,192,162,210,137, 72,231,234,155,177,196,168, 93,175,237,127, 89,185,223, 13,111, 92,245,219, 81,181,223, 9, -148,140,135,164,254,188, 4,149, 78,134,182,151,243, 36,166,230,111,150,116,180,106, 8,148,198, 60, 74, 57,205,207,149, 91,182, -108, 79, 1,190,122,153, 87, 93, 63,234, 43, 35, 98,171,205,182,111,219,227, 19,156,231,122, 93,128,205,160, 55,242, 88,215,181, -232, 48,150,153,213,231,103,148, 0, 39,118,200, 88,138,149, 7, 20,179, 45, 87,204,145,136, 87, 63,127,183,163,143, 17, 15,127, -141, 13,180,165,171, 31, 86,176, 29,213, 59,160,103, 12,228, 62, 42,113, 54, 13,146,174, 59,208,162,244, 89, 13,123,226,125, 49, - 1,237,185,246, 98, 58, 34,188, 74,127,172,210,221, 8,185, 90, 51, 2,173,165, 77, 39,112,218, 62,168,172, 55, 84, 91,199, 88, -164, 73, 9, 33,183,133,235,145, 51,212, 62,189, 87, 40,191,167, 80, 2,221, 68,154,142, 21,197, 5,150,161, 55, 15, 40, 50,163, - 10,214, 42,160,188,152,209,127, 82, 64,120,234, 68,149, 42,214,148,108, 56,152,185,124,254, 56, 44,104, 92,175,139, 30,186, 65, -197,150,138,132,200, 24, 86,232, 92,200, 56, 5, 73,109,192,199, 8,120,195, 22, 40, 26, 91, 5,253, 94, 41, 52,206,206,100,165, - 19, 31,232, 43, 10,123, 83,145,219,107, 5, 2, 95,223,223,243,132,222,119,184, 65,235, 71, 41,159,165, 85, 42,163,102, 19,179, -247,200, 42, 72,121,178,118, 57, 70,106,145,244, 58, 91,231, 36, 73,237,246,236, 67, 29,115,103,167, 8,186, 48,192,217, 74, 81, - 31,242, 89,214,128, 46,178,152,189,177,250,215,218,135,179, 43,147, 93,199, 7,151,149, 77,166, 40, 22,178, 17, 62,113, 92, 81, -196, 58,126,112, 45,239,157,200,193,113,181,178,132,142,117, 12, 80, 78,231,241, 61, 80,206,242,202,155,185, 28, 58,214, 67,193, - 90, 50,156,167,188,166,104,168,140,198,224, 5,250,217,254, 92, 72, 58,179, 19,109,199,102,124,136, 42, 78,202, 74, 37,232,124, - 25,107, 81,215, 38,151,210,142,231, 38,217, 18, 4,244,114,196,170, 84, 55,234,154,176,168, 83,158, 12, 18, 31,203,158,176,168, - 21,160,218, 4,215, 36,250, 36, 31,187,145, 69, 72, 73,159, 24, 67, 4,210, 98, 68, 5,153, 28,231,153, 58, 53,251,128,189,255, - 20, 67,178,160,206, 88, 24, 49,152,152,164,107,158,159, 26,137,181, 3,198, 46, 57,146,169, 75, 32,120,209, 70, 39, 18,204, 57, -208, 16,176,169, 49,223, 35,216, 23, 65,112, 69,111, 67,131, 10, 13,102,231,106,152, 69, 74,169, 66, 68,182,244,206,193, 71,131, -121,204, 45,246, 88, 0,202,105, 86,172,192,190,101,178,161,184, 27, 77,202, 74,210, 39,146,172, 88,227, 9, 69,183,142, 37,176, -198,119,183,148,183,126, 30,223, 39, 16,246, 26,106, 71, 45, 28,238,186,100,107,153,100,199, 92,200,233, 88, 43,228, 98, 36, 12, - 19, 64, 26,182,255,151, 69,141, 27, 38, 58, 73,124,102, 62, 22,206,163,115, 14, 59,239,171, 72,254, 60, 87,116, 44,145, 9,234, -166,234,107, 90,172,249,161,202, 65,205, 65, 50, 78, 43, 46, 50, 56, 46,212,155, 56,252, 80, 45,245,101,196,117,239, 44, 91,165, - 39, 25, 74,169, 68, 11, 74,140,150, 34,211,106, 45, 90,121,172,149, 34, 34,177, 90,212,245,182,129, 10, 44, 82,109,113, 88, 49, - 5,201, 9, 6,137,225,189,198, 82, 29, 59,170, 86,114,108, 28,161, 98, 70, 79, 42,101, 44,201,165,242, 2,128,177,168, 38,144, - 21,219,152, 19,100, 45,241,120, 82,203, 90, 84,226, 55,243,165, 99, 27,200,218,106,115,236, 38, 53, 66,142,171, 0, 75, 60, 30, -224,116, 70, 75,173, 3,155, 26,160,176,202,180,105,151,194,200, 84,218,214,120,242,236, 11, 57,224,165,135,205,173,202, 60, 38, - 84,248,180,223,153,214,177, 44, 54,175, 30,189, 90, 90,200, 57,160, 71,106, 13, 85,180, 10,117,163,249,165,237, 6,232,198,224, -108,151,160,138,235, 36,170, 85,132,115, 83,249,132, 22, 64,151,218,246,153,189,202,249, 33,173,112,147,122,205, 76, 91,110,132, -132,181,130, 30,118,140,165,126,203,206,185,162, 52,161,235, 43, 74,245, 63, 71, 49, 20, 25, 52, 2,141, 63, 53,181, 52,230, 60, -118, 99, 4,239,243, 75, 8,156, 72, 81,222,131, 36,122, 29,187, 9,199,195,140,221,238, 12, 66,192,241,238, 22,196, 14,158,128, -105,231, 49, 31, 67,227, 32,102, 77, 90,202,184, 3,235, 46, 94, 18, 35,216,167,164,230,112, 8, 8, 33,192, 57, 46,154,248,146, - 55,237,227,241,136,201,123,204,243,140, 16, 2,206, 47, 47, 48,207, 51,162,254,108, 74,202,112,187,221, 14,215,215,215, 56, 59, - 59,195,235,215,175,225,220, 4,206,191,227,156, 75, 20, 54, 6,246,251, 61,110,110,110,210,247, 68,146,189,186, 6, 31, 17, 80, -156, 43, 38,198,161,184,193, 81,168,246,176,169,255,236, 10, 88, 44,237, 40,105,237,135, 60, 95, 78, 88, 31, 49,136,232, 10,140, - 83,246,140, 38,133, 52, 8, 90,250,249,185,163,148, 85,101, 71,165,152,173, 40, 79,198,174,114,149,165, 62,112,204, 84, 89,129, -206,197, 3, 98, 78, 94,166,105,159, 62, 91, 72,184,133, 8,107,227,156,100,162,251,106, 94, 91,241, 77,176, 55,162, 63,141,250, -162,132,242,115,235,249,110, 27,150,100,220,215,234, 26, 74, 55,204,123,215,168,220, 89, 36,191,213,123, 23,163,151, 64, 41,219, -200,251,180,203,212, 66,189,174,161,165,205,122,159,240, 40, 33,150,100,164, 20,109, 76, 96, 55,173,116, 17,150, 99,183,126,132, - 66, 68,152,202,254, 40,101,189,123,196, 25,136, 25, 93, 44, 41,251,167,130,118, 79, 82,147,165, 61,163,114,153, 42,238,109, 81, -147,166, 53, 64,228,114,246,108, 23,164,169,244,136, 74,219, 62,102, 32,153,242,123,173,193,130,228,214,112,239, 14, 21,161,155, -174, 43, 45,143, 50,161, 18, 52, 95,167, 33, 33,213, 76,157,211,223,165,153,185, 7, 98, 44, 64,182,230,152,215,179,207,155,162, - 99, 42, 21,122,200, 62,231, 1,213,250, 47,241, 87,235,156,172,102,254,161, 73, 58,180, 2,103,245,218, 45, 18,188,212, 80, 37, -172,225,194,102, 11, 73,198,160, 10, 73,131, 67, 56,151, 43, 74, 74, 61,140,116,105,212,103, 59, 46, 20,159,250,255,188,119, 67, -133, 43, 21,154, 57,219,239,202,249,218, 74, 81, 43, 67, 9, 49,205,165, 41,181,172, 10, 37, 45,115,169,217, 80,138, 90, 35, 3, -170, 98, 31,230,107, 71,109,229, 9,239, 86, 53,253,150,210,142,173,120, 82,164,122, 95, 71,252,225,181,153,104,105, 45, 50, 25, -235, 84, 1,145, 47,129, 55, 81,224,124,241,172, 87,242,147,234,187,171, 68,167,226,150,150, 29,171, 58,154,104, 86,213, 66, 1, - 80, 22,211, 56,206,237,225, 94,203,157,135,191,215,230,138, 61,234,155, 6, 28, 97,226,164,162, 23,217, 33,100,232,172, 72,132, -144,100, 13,137, 76, 71, 19, 73, 65, 84, 34,238,142, 7,144, 99, 76,251, 93,122,118,142,135, 18, 84, 37, 95, 23,203,140,226, 21, - 43,207,190,189,237,124,230,213,199,136,105,154,112,118,230,210, 90, 12, 71, 28,143, 71,248,157, 47,247, 51,100,183, 47, 55,249, -210,197,121,112,121,137,187,195, 1,204,140,195,225,128, 16, 35,230, 16, 16, 69,176,219,239, 75,100,112, 52, 97,183,219,229,238, - 99,132,247, 30, 62, 28, 0,246,121, 43,180,137, 9,151, 96, 88, 13, 62,196,140, 34, 93, 65,204,199,210,185,172, 85, 58,169,110, - 63,185,170, 33, 64, 58, 10,144,142, 26, 91,197, 79,162,200, 80,245, 79, 19, 81, 27,212,171,243, 89, 28, 42,197,233,191,201,249, - 77,222,120, 63, 35, 39, 3, 82, 35,178, 12, 29, 49, 88,149,218, 77,153,101, 32,113,107,254, 55,101,246,134,154,111,201, 64, 27, -225, 36,254, 97, 0,222, 43,157,128, 16, 26,240,222,218,223, 44,168,120,165,184,163, 5, 35, 98, 52,166, 0, 81,194, 31, 24,163, - 13,217,112,191, 60,165, 61,175,163,233, 81, 92,240, 18,131,201, 76, 56,183,114,165,184,153,179, 6,120, 72,227, 38,229, 64, 11, -196,181, 52, 51,146,177, 34, 91, 75, 97, 73,104, 97,206,116, 54,171, 85,221,183, 19, 71,199, 33, 80,160,111,223,197, 49,186, 88, - 95, 95, 66, 92,188,174, 85,152,242,236, 54,207, 71,219,239,182,245,104,195, 12, 99, 42,159,187,225, 63, 54,128,239, 56,158,199, - 81,157,201,172,254, 11,113, 1,178,234,219, 75,155,176, 12,230,162,168, 54,156, 45, 13, 68, 49, 44, 72, 77,194,156,144,170,185, - 43,163,201, 16,101,144,198,197,131,203, 18,188,237,117,212,224, 92, 40, 75, 93,251,217,138,129,180, 51,247,106, 88, 34,156, 44, -122, 99,215, 97,176,138,103,189, 15,253,162,146,161, 22,157,190, 22,212,251,249, 95, 5,227, 73,229, 65, 83, 75,167, 35,178,118, -103,220,140, 3, 10, 95,159, 76,101,110,215,241,130, 7,203, 13, 29,235,212,195,223, 43, 79,173,222,127, 58,193,179,142, 75,170, - 22,229, 22,140, 85, 83,236,185,190,118,140,176,219,237, 16,130,152,174, 79,186, 47, 65,193,156,131, 57,170,254,173, 35,218,116, -245, 82,151, 46,225,180,255, 28,143, 71,163, 66,231, 50,168,149,225, 39,143,249,120,192,110,242,224,201,227,238,238, 14,206, 57, - 60,123,245, 26,211, 52, 97, 98,135, 67,136,216,237,118,120,244,198,155,152,166, 9,119,119,119, 64, 72,193,111, 62,222, 97,154, - 38, 56, 16,230, 57, 85,237,251,221,121, 17, 82,176, 65, 61,198, 88, 42,118,132,222, 53,172, 58, 49, 82, 6,192, 54,207, 24, 87, -245,192,130,172,199, 64,140,218,104,238,151,181,142,165,178,157,142, 83, 99,151,172, 59,237, 68, 58,218,164,136,201, 10, 32,176, -242,216,219,207,215, 43, 12,206,217,218, 20, 81,134,115,125,160,173,108, 85,186,183,232,208, 43,241, 68, 90, 26,179,121, 80,154, -215,235,159,163,126,255, 91,140, 91, 98,172,120, 25,230,161, 61,170,196,170, 5, 96,245, 5,146,233, 90, 39,196,100,186,215,162, - 54,192,100, 70, 90, 13,251, 65, 22,206,109,210, 41,163, 70,169,206,149,118, 36,167,123, 67, 92, 70,124,120,109, 3,114,202, 35, - 12,165,136,192, 58, 35,146,144,225,144, 73,236,133, 75,121, 81,129,113, 82,128,114,249,247,196, 72,137, 50, 10,197,162, 42, 54, - 81, 86,124,170,252,236,162, 52,102,142,118, 86, 61, 58,242,104,134,165,127,159,249,152,218, 14,180, 71,197,181,195,251,230,245, -236,251,137, 4,163,128,166, 34, 47,174,157, 93,147,110,232, 78,241,243,205,249, 56, 55,165,243,144, 86,105,142,179, 34, 93, 64, -200,220, 79, 89, 15,186, 27,168, 73,113, 58,151,246,128, 67,115,148,116,177, 17, 16, 50,207, 56,128, 34, 97,150,185,124,237,136, - 32,228,243,145,202,177,228,216,218,201,232, 40,122, 46, 63, 8,147, 59, 55,180, 47, 44,230, 78,211, 52,165,207,224,120,209,190, - 39, 34,204, 49,140,145,217,202, 25,238,208,173, 11, 33,147, 92,109, 55,149,137,240,226, 33, 95,203,162,131,142, 9, 76, 50,105, -103,207, 54,153,235, 59, 9, 96, 42,149,214,125,188, 7,138,160, 10, 58,150, 9, 15,236, 81,141, 51, 92, 3,138, 92, 73, 52,214, -193, 89,127, 79, 23, 65,203,195,239, 55,123,170,157, 11, 23, 35, 8,177, 27, 91,164,189,110,191,223,227,238, 56, 35,132, 35, 66, - 8,136,243,161,160,190, 23, 60,222, 13,212,242, 16,232, 20, 66,153,139,122,239, 65, 25, 77, 77, 2,176,119,184,187,185, 69,136, -130,221, 52,129,157,131,219, 77,101,164,229,167, 61,246, 83, 68,136,128,176,195,229,195, 71,240,222, 35,204, 7,188,186,126, 13, -151,147, 1, 79,140,227,241,152, 2, 20,113,150,190,229,130,135,104,128,103, 11,153,232,216, 86,180,177,159,239, 14, 58, 75,131, -235,191, 8,178,250,251,243,186,111,122, 31,132, 71, 8,253, 24,101,147, 37, 97,209,235,163,106, 94,250,153, 47,218,228, 88,131, -122, 83,204,109, 0,220,100, 5, 72, 70,178, 6,152, 93, 42,213,245,173,106,108,116,242,104, 5,112, 54,210,196, 31, 62,127,206, -165, 17, 71,136, 57,174, 73,145,169, 46,114,220,166, 24,161,238,231,148,181, 77,214,158, 95, 43,243, 59,138, 11, 22,239,166,251, -148,223, 57, 70,100,128, 35, 35, 97, 51, 18, 33,159,169,182,225, 89,209,237,185,165, 87,213,231,178, 76, 32, 73,181,183,150, 88, -124,169,235, 76, 67, 26,231, 43, 5,230,121, 40,228,191,145,143,104,120,134,178,184,145,237,127,189,112, 64,109, 77, 80,225,106, -163, 3,210, 81,225,181,198,194, 83, 44,115,137,242, 96, 74,245, 15, 21, 83,141, 72, 52,180,189, 74,249, 42,188, 79, 89,162, 91, - 75,183,163, 36, 0, 92, 42,175, 56, 71, 3, 36,163, 77, 15,236,209,141,103,230, 12, 22, 74, 71,202, 10, 57, 18, 19, 93,104,242, - 83,178,119, 12, 57,171,204, 71,138, 4, 71,110, 8,176, 82,222,110,132,192, 79,174, 80, 1, 41,107,106, 51, 19, 28,165,160,189, -207, 45,202,158,138,162, 65, 61, 38,130,235,208,231, 59, 33,196,121, 19,173,170,226, 41,227, 93,189, 82, 98, 70, 96,155,237, 10, - 86, 31, 2,163, 13,174,243, 55,243,117,195,175, 99, 67, 21, 41,178,180, 29,200,102,128,119,216, 10,244,127,223,127,189,192, 77, -127,129, 68,232, 94,157,158, 83,148,158, 53, 84,183, 51,148, 86, 86,115, 21,137, 5, 95,160,136,244, 24, 35,200,187,180,246, 35, -193, 57,143,227,241, 80, 92,194,250,215,175,234,116,219,255,220, 52, 33, 30,143,152,231, 84, 29, 79,147,135,196,136,227,225,128, -195,237, 45, 46,246,103,152, 85,141,212,121,132,152,193, 93,236, 49,147, 96,127,254, 16, 79, 95,189,128, 68,193,217,217, 30, 47, - 95,189,198,123,239,127, 15,207, 63,123,138,175,254,216,143,227,242,242, 18, 23,231,123,196, 24,113,136,128,184,156,136,206,233, -217, 59,106, 82, 26,187,121,112,174,208, 75, 37,171, 21,187, 9,234,196,213,165, 81, 76,208,111, 40,120,221,218, 15,253,179, 16, -209, 86,232, 69, 66,152,218, 74,222, 2,160, 77, 7,224, 16,230, 69,135,101,244, 60,142, 68,120,116,127,219,186, 95, 86, 10, 93, - 19,193,152, 71, 53,138, 35,114, 13,135,168,239,104,242,102,215,128,200, 85, 58,221, 96,140,120, 95,107,108, 22, 30,254,253, 72, - 43,160,167,197,234,125,238, 61, 4,212,131, 0, 66,136,196, 69,233, 47,137, 60,165,223,247, 29,149,178,127,198, 66, 12,117,142, -223, 84,240,149,194, 92,246,111,104, 80,159,156,150, 59, 57, 88,229,114, 95,146,153, 70,114,206,228,234, 43, 13,128, 88, 43, 82, - 37,254, 84,217,213, 74, 19, 67,169,112, 19, 7,190, 74,206, 86, 0, 87,204,202,108, 88, 90,136,101,224, 8,147, 47, 98, 9,170, -109,174, 64,176,132,201, 35,168,144,113,154, 75,114,222,156,245,152,103,254, 49,211,146,196, 86,250, 9, 40, 1, 80,169, 92, 89, - 24, 49,235,148, 71, 74, 90,246, 49, 87,214,250,181, 6, 81, 34,211,114,201,128,180, 86,153,137,242,249,199, 12, 96, 19, 48,249, - 44,210,147, 94,119, 79,251,113, 38,222, 89, 32,142,196, 15, 34,197,147,193,223,206,252, 29, 28,104,215, 45,154, 16,170, 58,154, - 65,101,143, 92,222, 44, 80, 69,193,113, 97,158,115, 85,137, 86,238, 50,155,148, 48, 51,196, 49,224, 92,247,115, 42, 2, 45,209, -204,199, 90,170, 24,109, 8, 71, 84,223, 98, 81, 3, 23,201, 29,162,149, 49, 78, 84,107, 78, 53,252, 64,181, 14, 38,238,204,138, -170,178,111, 77, 88, 45, 45,141,176,210, 1,216,232,170, 72, 77, 26, 45,168,176,103, 84,173, 5,208,251,252,124,164, 97,125, 98, -232,184, 73,187,226, 21, 55, 47, 77,202,116, 35,225,236,122, 64, 18,187,246, 56,225, 56,223, 33, 4,193,249,249,121,169,120,207, -207,207, 49,207,199,134, 90, 55,122, 6,214, 42, 58,187,193,158,157,157, 33,204, 17,135,195, 1,175, 95,191, 6,123,135,221,217, - 14, 15,220,101, 2,191, 17,225,120, 8, 32, 22,220,205, 17,160, 8,191,243,248,228,211,167,248,211,191,254,183,120,248,232, 49, - 46,206,207,241,226,197,115, 60,127,250, 12,140,136,219,235, 27,236,247,123, 60,122,244, 8, 95,120,231,221,180, 63,198, 4, 38, -142,209, 35, 32, 34,100,173,135,209,125,151,142,239, 95, 42,107, 43,176,147,139, 14,161,216,160,186,197, 96,128, 71,150,160, 13, - 16,139,125,195,153,239, 49, 56,190,107, 79,111,185,153,141, 58, 66,107,126,242, 22, 95, 65,130, 6,216,214,220, 67,227, 47,176, - 72,170,181, 99,119, 98, 56,190, 5,162, 99,246,229,186,217,160, 90,158,247,184, 28,175,246, 46,136,214,184,106, 68,193, 91,187, -126, 11, 48,157, 62, 47,153, 27,173,218, 44, 70,191,167, 8,170, 9,213, 53,210,120, 62, 40,144,215, 92, 31, 75, 37, 45,192,109, -243,252, 85, 37,212,236, 87,177,159, 28,212,190,163, 71, 64, 50,169,169, 68, 44, 74, 96,170,118,198, 18,179,196,107, 86, 62,131, - 44,168, 77, 68,117, 54, 95, 29,222,141,116, 41, 4, 34,115,213,154,151, 8,160,227,181, 35, 86,153, 90,168,172,171, 20,155,115, - 77,176, 18, 0, 78,154,135,107,129,130,102, 46,242,171,165, 13,158, 65,127, 36,201,215, 59, 41,199, 81, 57, 58,242,217,120, 38, - 3,187, 50, 34,142,145,198, 5,169, 61,194,166, 5, 95,143,128,192, 57,159, 57,115, 92,208,196,204, 9, 52, 6,146, 2,180,234, - 55, 50,155,105,174,201, 18,150,223,165, 56, 12,254, 58,211,218,178,110,228,144,146, 29,207, 12,114, 14, 62,193,213,225, 57, 25, -149, 72, 8,165,237,174,148, 12,117, 31, 3, 51,220, 76, 6,240, 70, 99,254,164,227,226, 62,213,108,124, 76,136,210,177, 24,168, -213, 49, 63, 5, 20,212,174, 74,114, 91,115, 75, 13,117,109,151, 75, 78, 50, 36, 87,106, 36,205, 58,218, 32, 96,140,217, 7,180, - 4, 69,182,193, 39, 46,102,218,189, 63,245,127,140,202,221, 10,237,160,235, 20,128, 8,167,172,129,219, 74,158, 22, 64,171, 2, - 50,140,131,246,110, 51, 95,204,212, 59,195, 3, 23,164,153,109,148,180,254,143,243,140,247,222,127, 31,175, 94, 62,197,215,190, -246, 53,236,188, 43,213,203,226,188, 84,231,193,241,102,151,227,238,112,196,217,217, 25,252,110, 74, 24,152,221, 30, 62, 35,217, - 15,135, 25, 55,135, 59, 60,122,244, 8,225, 40,240,158, 17,231, 35, 38,191, 3, 49,227,207,255,234,175,241,127,252,238,191,198, - 63,248,250, 79,227,193,197, 5,126,248,254,123, 96, 1,126,238,103,127, 6,209, 17,158,190,124,133,253,126, 15,231, 28, 28, 59, - 28,143, 71,144, 99,120,154, 50,162, 59,130,157,197,198, 0, 46,207,214,163,139, 5,140,150,102,254,156, 4,164,212,149,203, 36, -117, 33, 99,153,216, 96, 73,214,102,192,189,242, 35, 11, 22,200,237, 69,240, 21, 73, 30, 11,202, 90, 49,140, 18,159,117, 4,180, -226,236,247, 7,221, 63,120,181,253, 93,223,115,129, 88, 55,213,108, 17,213, 49,171,223, 21,113,173, 65,135, 40, 86, 74, 23,161, -202,113,115, 76, 30, 51, 49, 38, 41, 91,246,169, 51, 99, 13,149, 44,160,185, 40,122, 2, 11, 32,118, 68,149, 97, 94,101, 87,172, -248,210,247,152,142,242,122, 10, 0,238,222,223, 81, 82,106,100, 0,115,140,101, 63, 77,197,226, 18, 83, 52,194, 18,141,190, 79, - 25, 40,105,139, 48,239,138, 6, 46, 53,173,143, 82,109,103,125,111,134, 74, 29,102, 67,151, 60,111,101,157,173, 27,133,180, 36, - 60,147, 22,147,163, 22, 97, 73,200,218,233,165,202,140,185,109, 29,115,133,165, 84,129,148, 97, 33,204,121, 83, 14,221, 49,255, - 60, 31, 57,255,125, 50,138,161,170,201,150,255, 94,178, 35, 92,177,217, 84,148,105,156,243,163,149,185,196, 8,121, 55,201, 14, -116, 50, 87,110,173, 0, 66,105, 46, 45,153,186,224,121, 0,194,203, 1,177,182, 21,217,232,143, 43,128, 42, 45,210,195,124,172, -130, 45,206, 53, 28,200, 17,175,178,205,178, 67,211,166, 27,181,161,213,101,104,216,186, 5,224,119,187,161,158,113, 52, 51, 35, -214,123, 23,141,218, 91,225,110, 59,176,107,207, 57,168,232, 79,246,249,134,227,100,113,168,244, 36,131,240, 22, 69,112, 23,205, -238,244,187, 62,255,190,207, 29, 2,100,187, 73, 5,253, 20,160, 80,241, 64,167,225, 92, 62,132, 74,159,113, 5, 29,202, 6, 77, - 27, 54, 43,193, 53, 32, 90,149,233,148,225,239, 99, 13,224,180, 50, 19, 63,213,158, 31,122, 49,211, 0, 24,186,194,123, 93, 77, - 10,186, 10,153,214,240, 13,131, 77,143, 98, 48, 34, 80, 49, 61, 67,250, 92,198,132,216, 14,243, 12, 56, 15,114,140, 87, 55,183, -248,206,119,190,131, 79, 62,253, 8, 15, 30, 94,225,139, 95,120, 23, 94,184,170, 25, 90,128,209, 10, 38,162,255,255,103,103,103, -136, 49,226,120, 60,130,221,132,243,243, 51,188,186,185,197, 55,191,245, 45,252,241, 31,127, 19,255,244,159,253, 22,206,175, 30, - 34, 16, 99,154,118,160, 32,112,251, 61, 66, 8,248,235,255,240, 93,248,179,115,124,246,252, 5,158,191,124,133,219,227,140, 71, - 87, 87,128,247,184,121,245, 10, 15, 30, 4,192, 49,118,103,123, 48, 73, 70,235, 87,156, 71,228, 88,246, 15, 50,227, 16,139,155, -112,187, 9,136, 82,102,255, 49,198,150,129, 17, 67, 21,181,202,149,166, 51,149,164,132,216, 86,150, 22,219,145,131,174, 27, 84, -245, 60, 16,126, 81, 83, 34, 56,174, 22,197,174,107,103,119, 64,228,222,229,108, 25,124,226,162,146, 46,194, 66,168,214,179,101, - 4, 99,176, 42,105,158, 60, 47,102,194, 13,251,198, 4,177, 30, 40, 24, 69, 48, 71,134, 87, 81,179, 60, 22,236,217, 51,163, 10, -125,225,209,208, 1,115,237,113,150, 8,228,153,185, 13,174, 74, 3,215, 4,111,216, 25,204, 98,103,214, 18,216, 25,107,224,112, -140, 85,190,184,147, 51,230, 78,212,137,140,248,153, 98,122, 56,187, 20,218,231,194, 95,238,119, 89,192,159, 0,114, 93,155,196, - 88,168, 74,171,198,196,197,189, 44, 7,125,110,131, 79, 49, 72,145,104,220,145,104,177, 40, 75, 37,221,101, 82,154,113, 17,215, - 76, 43, 40, 37, 68,146,156, 43, 56, 5,101, 1,193, 51, 21,234, 89,204,193, 86, 3, 70,108,123, 98,165,253, 43,130, 34,188,210, -131, 86,116, 83,230,142, 39, 78,157,242,158,132, 88, 1,115, 25,253, 44,217,121, 7,146,252,122,117, 54, 47, 9,183, 6,138,105, -150,156, 2, 41, 10,247, 52,121,226, 18, 98,164,123, 87,111,110,242,105, 60,160, 1,185, 91,252,119,119,119,139, 86,172,254,174, -203,218,232, 86,189, 46, 74, 44, 96,158,222,165, 72,119,175,130,234,206, 88,130, 72,104,218,138,146, 3,123, 84, 56,124,200,155, -116,126,232,108, 59,108,238, 80,237,130,244, 16,201, 44,141, 63,186,204, 1,179,196,242,240,169,214,188,115,110, 81,157, 52, 64, -184, 83,148,192, 13,245,175,216,153,160,140, 0, 72,100, 82, 36, 21,110, 25,207,240, 35,170, 76,207, 8, 67,208,177, 13,104, 5, - 77,223,173, 87,101, 21,172, 6,254, 40,247,238, 6, 80,113,145,106,103,171,162,173, 97, 83,233, 89,111,245,105,231, 17,142, 1, -175,175, 95,227,241,213, 3,188,190,185,198,110,114, 8, 49,224, 54, 6, 60,120,124,129,155, 99,196,203, 87,175,112, 55, 31, 1, -102,124,252,217,167,248,250, 79,125, 13,215, 47, 94,182,180,204,158,201, 48, 72,142,168, 67, 47,199,152, 1,169, 62,161,217,119, -231, 23,120,121,115,139,191,253,222,247,113,254,255,253, 1,254,219, 55,223,198,131, 7, 87, 8, 49, 34, 16,227,211,231, 47,240, -248,225, 35,124,252,201,167,136,228,113,115, 12, 8,243, 45,194,225,128,139,139,128, 57, 6,156, 93,156,227,193,131, 7,120,241, -226, 5, 46, 46, 46,240,217,167, 31,131, 93,162,195,145,164,231,106,183,219, 33,206, 29,144, 75,178,118, 69,142,180, 33, 36,221, - 5,199, 84,146, 99,203, 40, 96,207, 77,187,213,182, 95,181,195,209,106,179, 75,253,189,204,131, 30, 97, 17,218, 74, 23, 75, 97, -169,130, 7,169,232,111,167, 84, 69, 5,196,102,144,150,173,192, 35, 18, 35,135,179,110,250,124,184, 43, 85, 52, 20,159,130,206, -218,214,128, 0, 37,239,131, 58, 98, 45, 65, 63,134,198,115,160,208, 16,245,239,250,177,164, 2,205,120,151,186,160, 90,185,230, -160, 43, 26,148,217, 4, 89,163,227,128,252, 89, 36, 23, 42,108,132,151, 64,173,212, 49, 11,165,226, 37, 95,119, 50,109,247, 16, - 99, 30, 51,166,103, 71, 98, 76,159,195,236, 83, 61,112, 46,230, 14,120,178, 76,166,170, 64,106,198,152,172,122, 24, 29, 58,191, -239,164, 46, 53,168, 1,127, 62,249,242,102,245, 24,114, 48,116, 25,253,172,250,213,177,225,133,147,184,210,126,116, 89, 21,204, - 86,163,206,204, 76,218, 89, 92, 52, 23,108,137, 78,238, 43, 85, 99,254,222,110, 44, 68,112,251,253,146, 91,109, 55, 55,230,162, - 18, 55,154,203,146,108,111,122,203,160,222, 81,198,138, 74, 92, 93, 8,186, 17,247, 32,191,216,201,188,246, 86,154, 35, 58,213, - 22, 37, 77, 8,184,189,125,189, 29,116, 86,124,130, 75,240, 61, 30, 79, 3,202, 6,244, 54,125,224,103,209,156,134, 26, 49, 34, -253,155, 16, 66,225,116, 51, 51,102,243, 62,145, 0,231,119, 69,148,130, 36,249,127, 35, 2,129, 40,139, 14,142,181,150,131, 86, - 66, 43, 46, 74,213,208,197,173, 34,169,201,136, 17,201,134,150,247,208,160, 98,113,157,196, 98,145,234,103, 12,161,161,124, 9, -247,154,248,232, 80,238,234,123,206,221,235,201,114,166,186,130,152,254, 60,149,250,246, 88, 99, 41, 59, 90, 43,119, 21,215, 72, - 34, 44, 87,231,103,152,174,174, 16, 5,216, 77,103,152, 99,192, 44,128,115, 19, 94,190,186,134,223,159,225,207,191,243, 23,248, -209, 71, 31,227,235, 95,255, 41,188,124,117,141, 31,126,252, 33,222,188,184,186, 87, 80,111,186, 35,118, 77,199,136, 71, 79,158, -224,163,143, 62,193,158, 46, 0,231, 49,237,206,240,228,205,183,240,224,241, 99,188,255,193, 7,248,131, 63,250, 35,252,210, 47, -253, 50,188,103,156,159,159,227,203,239,190,141,191,249,203,191,194,217,213, 21,190,247,221,247,241,120,119,134,199,143,159,224, -112,119,139,155,187, 3,158, 61,123,134,135, 23, 23, 56,191,184,192,163,203, 11,252,224,131, 31,224,173, 39,111,224,246,230,166, - 84,219,126, 55,129,189, 3, 71,110,102,224,186,217,107, 80,117, 69, 13,179,242,172, 91, 74, 83,108, 4,189,154,215, 40,237,239, -122,199, 57, 39,204, 84,146,110, 90,242,138, 97, 21, 17,221, 16, 93,223,156,131,186, 92, 74, 98,255, 20,170,239, 72,162, 85, 4, -114,140, 70, 71, 36,150, 74,119,241,236,228, 81, 23, 98, 59, 11,183, 85,191,119, 14,146, 95, 67,204, 62, 77,249,243, 7,195,142, - 41, 38, 73, 90, 93, 75,173, 82,131,142,119, 51, 0, 70, 95,111,206,106,118, 85,131, 20, 37,120, 23,137, 50,221, 6,152, 76,194, -145, 11, 21,105,253, 2, 20, 19,173, 29, 58,171, 47,161,222, 5,222,208,243,172, 89,150, 31, 61,104, 59,222, 44, 54,214,186,118, -122,157,252,110,106,199,141, 81,224, 39,159,102,201,218, 22, 32,201,173,142, 40, 16,138,136,179, 81,192, 33, 95, 80,155,250,111, - 42, 18, 23, 3,126,111, 22, 55, 97,233, 79,182,114, 92,227, 44, 13, 98,221,162,228,199,254,201, 84,218,212, 73,209,139, 17, 66, -192, 60,207,213, 6,213,182,241, 72,154,118, 84,127,142, 14,124,130, 54,211, 60,111,141,223,183, 86, 74,209,160,163, 75, 23,160, - 67, 40, 87, 76, 1,138,167,110,145,130, 53,149, 46,117, 99,219, 32,113,139,111, 52, 68, 92,159,164, 41, 53,217,230,184, 26,180, - 45,122,235, 64,213,219,136, 18,150,252,204, 69,226, 68,180,176, 63,181, 85,191,179,239, 43,237, 6, 39,185,210,112, 88,218, 20, -158,170, 62,215,192, 46, 77,171,124,208, 58,236, 41, 73, 91,109,120,238,100,108,251,202, 56,102, 90,164,178, 52,226,128,190,210, - 43, 97,141,208,224,159,119,206,126, 10,205,126, 42,192,151, 81,123,247,121, 74,146, 75, 53,169,184,189,189,197,142, 9,222, 51, -110,174,111,112,118,118, 6, 48, 97, 55,237, 65,126,143, 91, 17,220, 29,102,252,232,163,143,241,250,246, 6,231, 15, 46,241,242, -213,115,124,246,244, 57,222,186,122,148, 28,133,169,109, 27,235,122,145,156, 20, 42,152,210, 10, 8,129, 19,165,237,217,179,103, -120,240,224, 1,110,239,142, 16, 98,220, 29, 15,248,230,183,191,141,155,187, 3, 46,119,123,252,237,247,190,143,139,135, 79,240, -203,191,252, 75,120,245,242, 37,190,247,222,247,241,225,143, 62,192,180,223,227,103,127,254,231,240,226,250, 6,119,243, 17,135, -195, 1,152,143,169,130,114,140,215,175, 95,227,114,191,195,183,191,253,109,252,211,127,242, 95,194,239, 28,188,155,112, 56, 28, -192,206,225, 56,207,240,211,206, 26, 38,182, 90,246,134, 59, 78, 64,163, 92,166, 79, 87,200, 96,133, 53, 48, 25,123,215,101,137, - 82, 88, 40,214,200,102,141, 18,218,156, 87,167,170,152,180,227, 93, 11, 16,173,243,181, 12,115,170,207,183, 26, 63, 73,238,194, -197,172, 9,171, 21,248,194,169, 78,199,116,172,236,158,216,101,189,130,200, 4, 22, 95,102,235,253, 51,171,214,192, 75, 89,219, -124,140,235,192,216,212,126,111,245, 49,122,138,170, 26, 18,105, 91,189,159, 93, 35, 68,195, 10,162,218, 86,167,251, 25,180, 40, -174,162, 7, 58,247,232,252, 83,214,189,163,223,137,148,100,146, 11,248, 14,169, 51,234,119,126,106,102, 15, 21, 69,152, 32,247, -146,237, 29,171,139, 86,149, 81, 69,222,108, 73, 6,217, 5, 37, 37,117, 79,188, 40, 22,172, 78, 51,243,182, 97, 72,143,228,118, -206, 53, 65, 93,181,131,181,154,176, 63, 11,144,178, 41,108,169,133, 57, 89, 15,136, 91,155, 97, 48,214,171,214, 35,219, 46, 10, -129,161,131,152,254,180,222,236,185,203, 68,251,107,113, 82, 60, 70,219,119, 43, 51,199,205, 74, 95,146,203,211,125,144,213,107, - 32,184, 45,100,236, 41,244, 54, 75,109, 55,110,137,168,108,117, 34,122, 25,216,254, 51, 43,207,118, 20,212,211, 15,194, 2, 85, -219, 95,255, 53,135, 45,235,230,102,187, 49,205,108,157,187, 14,201, 61, 3, 54, 13,204, 83, 22,235,182,114, 70, 55, 54,130,207, - 31,220, 71,157,170,241,189, 33,236,118, 59,188,253,214, 59, 56, 30,238,176,219,121,204,135, 0,246, 19, 56,164,241,201, 44, 17, - 32,143, 63,250,230, 31,225,147, 79, 63, 67, 20,194,247,127,248, 35,156,157,239,240,254, 15,127,128,159,249,234, 87, 27, 60,159, -117,168,211, 4, 94,199,111,150,241,160,255, 46, 47, 47,241,226,197, 11, 92, 94, 61, 0,239,142, 16,158,240,205, 63,253, 51,252, -217,159,127, 7, 96, 7,119, 56,130,167, 29,254,228, 79,191,133, 32, 17, 31,125,244, 17,222,251,222,119,211,140, 27,132,139, 39, - 87, 56,204,175, 82,155, 83, 18, 6,192,123,143, 71,143, 30,225,209,227, 43, 28,227, 17,119,199, 91, 68, 74, 42,114,142, 29,166, -105, 74,124,246,108,119, 26,141,198, 80,245, 28,200, 1, 61, 39,165,233, 89, 67, 43, 84, 2,151,125, 33,100,181, 59,230,251,206, - 91,172, 60,231,222,239,187, 36,131,246, 53, 76,114, 97, 69, 93,244, 63,238,173, 73, 21, 88, 71,132,185,232,210,155, 53,217,187, - 79,246, 29, 44, 43,131,186,144, 54,149,102,140,139,114, 95,219,207,109,219,253, 42, 83, 62, 2,175,165,165,224, 86,247,164,126, -253,142,169,108, 53,158,185,110, 22,207,132, 36, 11,220, 97, 30,136,150,201,238, 70, 84, 95, 62,191, 22,131,161, 22,178,160, 33, -203, 97, 52,174, 99,107,222, 69,166,125,159,207,205,159,239,246, 45, 80, 0,177,160,244,236, 44,155, 81,129, 4,218,166, 79,123, -226,152,114,226,104,205, 56,160, 69, 5,147,247,155,173, 7, 27,216, 84, 25, 25, 18, 75, 69, 20, 99, 44, 32, 20,109,111, 38, 91, - 79, 20, 10,157, 86,145, 52,208, 48,183,182,147,160, 1, 63,119, 4,142,178, 23,223,160,115, 75, 59, 84,105, 90,182, 2, 55,243, -202,154,105, 86, 94,234,154,176,200,169, 69, 51, 31,227,231, 3, 90, 25, 95,246,212, 70,138,247,222,212,151,116, 22,221, 84,226, -122, 80,161,113,107, 60,163,240,154,164, 98,148,212,132, 16, 26, 6, 64, 31,160, 44,146, 87,228,243, 9,153, 16, 17, 16,230, 4, - 56,108,112, 3, 6,244, 40,178,224,144, 54, 21,245, 90,198,174, 38, 46,253,239, 67,186,100,224,239,207, 89,167, 49, 48,191,157, -245, 46,146,153,202, 64, 48,100,166,197,166, 43,180, 84, 73,180, 88,236,167, 79,159,226, 11, 95,248, 2,238,110,111, 16, 1,156, - 95, 94, 0,204, 16, 39,152,193, 69,219,250,111,254,253,223,226,147,103, 79,241,240,225, 67, 60,127,249, 10, 23, 15,222, 69, 4, - 3,236, 43, 40,182, 11,220, 90,161, 59, 75,199, 25, 92,235, 39, 79,158,224,217,179,103,152,206, 47,192,222,225, 15,255,237, 55, - 48,237,207,192,110,194, 59, 95,250, 18,120,218,225,124,127,134,175,255,244, 79,227,167,127,230,103,240, 59, 47,158,225,247,126, -239,247,240, 15,255,209, 47,225,230,238, 22,215,215,215,216,121,135,157,159,176,119,140, 7, 15, 30, 96,191,159,112, 60, 30,241, -214, 27, 79,240,228,231,126, 14,211, 52,225, 54,206,152,101, 6,121,130,223,123,156,239, 24,225,152,245,216,251,246,187,174, 79, - 90,247,193, 22,145,108,200,179,110,225,138,133, 56,140, 20,221, 15,136, 20,157,141,213,238, 76,136,171,149, 94,250,255, 97, 60, - 82,138,100,218,143,239, 0, 0, 32, 0, 73, 68, 65, 84,233,181, 25,180, 80,194,108, 68,170,216,183, 63, 95, 1,182, 89,160,180, -237, 84, 20,113,149,129, 56, 77,235, 79,190,241, 12,111,236,149, 35,151,186, 30, 19, 99, 63, 79, 65,169,187, 20,247,166,156, 84, - 42, 54,203,162,233,117,172,182,134,156,215,121,188,197,205,244, 5,202, 28, 55, 18,122, 96, 85,126,214,142, 65,185, 75, 58,124, -154,105,216,179,140,139,222,255,164, 97,160,155,109,167,160,188, 18, 12, 16,135, 65,129,122,121, 2,114,171,243, 75,189, 41, 86, - 92,192,222,240, 17,144, 67, 85, 7, 27,167,168,190,122, 53,136,113, 79,188,208,183, 94,107, 69, 15,237,249, 92,167,121,222,201, -200,170,118,121,113,155, 50, 21,230, 86,192,166,123,182,119,232,239,208,122,183, 73, 8, 65, 26, 65,139,254,250,135, 16,214,207, -135, 98, 19,160,134, 92,216,141,170, 27, 50, 23,160,157, 3, 33, 12,142, 8, 41,201,116, 32,204, 92,117,197, 53, 9, 13,131,153, -250,168,243, 49,174,142, 53,139,230, 85, 23,167,209, 38,178, 54, 22, 42,252,246,236,155, 48,202,180,123,245,184, 45, 47,244,255, - 24,255,182,146,178,118,188, 36,195, 36,160,116, 85, 64,131,123,236,112,113,113, 1, 34,135,105, 74, 82,176, 46, 47,124,199, 14, - 60, 77, 56,178,199,222, 77,120,242,230,219,120,239,195, 15, 17, 4,240,211, 14, 15,174, 30,225,231,191,254,147, 73, 67, 61,198, - 69,242, 87, 2,120, 23,208, 27,124, 10,128,112,119,196,180,223, 97,127,126,137,219,187, 35, 38, 23,224,166,125,166,176, 18, 62, -253,236, 41,222,125,247, 93, 72, 20,252,240,195,143,224, 61,227, 87,126,245,215,241,165,175,124, 25,255,238, 79,190,133,203,203, -199,216,237,118,185,162, 77,250,241,231,231,231, 96,102,220,221,221,224,197, 75,194,207,126,253,235, 96,151, 20,235, 98,144, 52, -242,147, 76, 79,243,110, 56,218, 42, 45,247,158, 55,221,185,228, 17, 42,191,186,111,173,112,174,248,155,170,155,165,209,251,135, -233,156,142,100,180,155, 96,138, 86, 10,196, 6,245, 54,128, 98, 1,148,181,130, 58,109,226,229, 22,235,135, 7,123, 37, 25,240, -222, 34, 88,211, 18,179,193,185, 99, 44, 33, 46, 58, 5, 21, 13, 78, 39, 59,132, 35, 67, 39,149,243,213,248,210,227,184,184,211, -154,215,132, 66,103,230,246,142, 75, 56,110,202,234,114,103, 72,101,159,159, 72,105,188, 50,242,204, 88,240,233, 71, 10,151, 64, -219, 73,209,248,236,137, 27, 72, 60,209, 90,230, 87,149,142,236, 73,122,118,139,118,138, 46,150,102,147,149, 26, 8,218, 68,148, - 54,103, 9,222,251, 82,137,219, 25,132, 6,250, 68, 49, 97, 80,116,109,192,236,230, 24,112, 60, 4,224, 89,113,134, 30, 33,190, - 5, 56, 43,237,119, 63,109,242, 12, 41,182, 18,146,189,234, 90,128,108, 87,218, 39, 54,250,157, 27,235,178,219, 74,119,173, 93, -158, 2,202,178, 6,179,215,237, 84, 80,247,198,180,161,169,142,121,124, 29,209,123,132, 99, 90, 93,180, 66, 0,251, 21, 15, 0, - 94, 55, 68, 24,205,175,198, 35,130,164,126, 8,138,247, 74,134, 70, 35,162,216,125,159,157,116,221,136, 78,113,142,123,208,151, -126, 61,214,126,175,158,234,188,116, 69, 4,138, 31,252,218,248, 69, 55,221,209,250,138,212, 2,209,244, 57, 93,187,166, 34, 2, - 10,209,108,130, 14,143,223,124,132,143, 63,248, 16, 95,252,194, 59, 56, 30, 15,184,190,126, 5,199,132, 99, 8,112,178, 75,157, - 36,109, 93, 59, 7, 33,194, 33,204, 8, 16,188,251,238, 23,193,199, 99,107, 44,211, 85,234,212, 37, 63, 86, 19, 30, 0,206, 47, -119, 56,134, 25,111,190,249, 38,158,189,124, 5,127,118,142,255,244, 31,253, 67,252,205,127,248,110,105, 79, 95,223,221,226,199, -126,236,199,240,159,253,242, 47, 3, 20, 17,142, 51,190,242,213,175,224,197,245, 13,190,249,103,127, 13, 17,193,197,249, 57,226, -225, 6,135,227, 45, 14,135, 59,248,203, 51, 60,122,248, 8, 63,120,255,251,248,241, 47,127, 25,111,190,241, 6,156,163, 68,205, - 36, 66, 8, 17,199, 24,176,235, 40,163, 86,140, 68, 91,165,209, 0,191,138,110,102,102,245, 36, 9,238,218, 33, 33,216,231,217, - 80, 14, 69, 64,188,124,198, 67,166,236, 90, 61,134,209, 56, 96,205, 59, 67,181,211, 27, 30,246,128,251,206,142, 65, 78,134, 60, -244,152,241, 46, 22, 28, 38,131,241, 84,137,134, 6, 92,106, 6, 73,245,186,137,100,241, 70, 65,111,125, 97, 69,178,146, 12,237, - 97,184,238,171,194, 93,197, 2,149, 65, 7, 27,128,108,238,133, 11,217, 46,102,253, 47, 26,140, 64,223,205, 5,176,148,185,166, -118,223,142, 69,148,171, 85,205, 11,133,134, 87,121, 49, 49,103, 91, 49, 38, 39,207, 24,165,160,220,139,171, 98,254, 61, 13,224, - 60,208,187,240, 52,249, 2, 84, 74, 80,123, 41,109,136,150,172, 47,157, 25, 5, 22, 0,143,102, 83,232, 50,184,186,200, 66, 83, - 49,123,246, 11, 5, 51, 75,225,160,220,226,166, 24,139,146,153, 14, 16,230,174, 74,107,130,186,119, 37, 75, 82, 64,221,136,203, - 28, 66,104, 22,241,162, 61,162,218,197,195, 25,178,128,216, 45,230, 78,214, 5,171,241,235,213, 12, 84,219, 83,142,225,100, 35, -211, 30,100,106,253, 67,105,219, 63,163,141,125,154,166,198,188,164,247,211, 14, 66, 77,230,217,243,213,245,239, 71,129, 93,114, -150,109,253,161,171,127,122, 18,233, 81,197, 63, 61,146, 17,239, 17, 2,166,105,191,137,184,247,102, 60, 51,250,121,192, 54, 85, -141,236, 38, 50, 8, 86,109, 74, 83, 53,255, 71, 30, 0, 67,116,189,193, 83,164,107,183,116,221,179,207,141,144,172,119,128, 40, - 49, 0,212, 63, 91, 65,152, 77,114, 74, 70,177, 16, 21,168,217,240,103,185,181,108, 93, 75, 24,185, 12, 98,154,133,157,193,143, -220, 36,101,229, 25, 81,160,171,115, 32,118,248,131,127,247, 77,124,235, 91,223,194,127,247,207,255, 27, 60,188,186, 64,132,224, -242,108,135,227,205, 45,224,128,253,254, 12, 47,110,239,240,254, 15, 62,132,208,132, 55,222,120, 43, 91, 87, 10, 94,191,126,141, -179,253, 62,173,243, 82, 48,112,117, 21,203, 27,135, 5,147,114,151,252, 68, 8,200, 77,248,224,163, 15,241,232,241, 27,224,105, -194,163,135, 15,112,121,113,129,103,207,159, 39,241, 24, 17,124,245, 43, 95,129,115, 14, 23,231, 23,248,198, 55,190,129,223,254, -237,223,198,131,171,199,112, 60, 33, 28,142,184,187,185, 5,201,140, 71,151, 15,112,190, 59,195,179,103,207,240,241, 7, 63,194, -131,139, 51, 28, 14, 7,156,157,237,112,123,184, 41, 78,123,206, 77, 56,195, 84,196,123, 22,157,185, 92,105, 70,253,126,150, 38, - 44,128,166, 28,190, 5, 14, 68, 49, 7, 31,106,138, 0, 88,167,104, 69,112,119,201, 98, 97,218, 80, 5,221,178, 5,118,198, 38, -219, 40,137,112, 9,171, 49,211, 30,163,121, 89, 82,175,138,136,195,221, 49,201,131, 91, 61, 3,168, 47,120,162,228, 66, 90,240, - 22,229,118, 68, 82,206,108,199,147, 44,104, 20,240,216, 81, 29,231,118, 70, 46,108,139,149,104,130,180, 38, 63,130,164, 74,120, - 15,240,103, 59,162, 75, 98, 98, 17, 2, 14,212,240,219,123, 25, 87, 75,193,237,101, 96,129, 76, 89,222, 24, 31,246,221,223,126, - 20, 32,122,159,179, 66,122, 48,138,130,105,127,150,162, 62, 7,166,244,182, 76, 37, 11, 94,224, 77, 0,120, 62,247, 70,139,152, -146, 29, 36,103,126,156, 9, 90,165,242, 36,105,130, 87,156, 67,226,241, 45, 78,154, 91,208, 70, 65,174, 78,109,226,198,185,101, -105,169, 4,121, 30, 46,197, 95, 58, 35,232, 59,148, 35, 83, 11,132, 90, 96, 20, 42,196,186, 8,164,216,106, 61, 2, 64,216,110, - 89,251,221,110,172,146,148,207,159, 58, 78, 99,191,152, 28,249,197,172,138, 77, 80,117,236, 54,236,106, 0,199,220, 96, 28,200, -240, 88,117, 51,105,109,183,105,181,253, 26,115, 6, 28,145,232,175,130,202,156, 30, 86,242,221,204,122,216,162, 39,107,127,219, - 26,234, 72,230,192,230, 19,201,239,198,136,168, 52, 19,233,180,167,177, 72, 28, 42, 86, 2,189, 25, 74,151, 36,142,230, 18,150, -187, 63,124,244,173,230,115, 54,220, 17, 80, 49,224, 97,242, 9,181,139, 53, 83,152, 88,192, 76,106,254, 83,130, 42,183, 9,106, - 1,206, 89,176,155, 5, 9,113,149, 39, 78,239, 95,253,166,235, 60, 57,203, 54,147,162,208, 93,118,138, 50,222,209,100,241, 4, - 97,216, 25,176,229,147,121, 26, 74,240,177, 84,211,227,241, 8, 71, 30,218,132,244,126, 74, 93, 50,158,240,251,223,252, 22,254, -213,239,254,159,248,207,127,235,159,224,205, 47,190,133,155,187, 23,184, 57,190,198,213,195, 7,120,250,234, 22,119,119, 1,143, -222,249, 34, 94,223, 29,113, 56, 70,236,119, 23,112, 8, 56,190,190,193,219,143, 30, 65,238,110,112,156,143,216,157,157,167, 68, -198, 77,184,189, 61, 96,154,246, 56,134, 3,156, 75, 13,234, 57, 28, 19, 37,237,236, 12,199,227, 17,199,219, 59,156,101,219, 84, -114,140, 71,143, 31,227,110, 62,130,163,224,241,229, 21,110,158, 63,197,131,253, 14,116,188,129,151, 11,188,253,248, 18, 59,138, -120,254,217, 83, 60,253,228, 41,222,122,242, 54, 62,249,236, 5,142, 71,193,124, 4,206, 46,207, 16, 14,130,151,207, 95,227,217, -103,207,241,229,119,223,196, 7,207,159,225,108,231,241,165, 47,126, 17, 79,159,189,192,126,127,134, 72,132,187,195, 1,126,151, - 80,240,182, 19, 89,146,243, 18, 28, 9,106,130, 89,216,172, 34,168,245,120, 52,152, 22, 26, 2,166, 26,229, 54, 43, 52,213,140, -143,150,230, 38, 22,244,185, 53,243, 13,121,168,107, 43,108,148,253,220, 97,218,113,125, 6,197, 96,143, 50, 16,208, 13, 48, 81, - 86,177, 83, 98, 42, 44, 82,113,164,148,178, 52,202,152,231, 25,224,196, 32,225, 60, 70,157,188, 79,231,159,109,123,189, 79,216, -134, 6, 17,159,185,249,119,183, 55,152,206,246,227,189,183,195, 10,180,157,187, 36, 32, 22,144, 58,181,189,216, 12,144, 0,132, - 42,158,213, 99,201,250, 14,236,125,198,157, 67,176, 47, 19,230, 12, 40,181,238,147, 54, 73, 87,158,251,154,123,165,141,199,229, -250,236, 46,206, 23, 45,225, 92,228,195,155,121, 76,205,236, 99, 51, 47,117, 5,137, 71,139,140,166,215,226, 29, 85,138, 98,181, -190,177, 4,252, 20, 74, 81,169,238, 91,197, 51,233,102,183, 35, 99, 8,173,214,122,117,172,212,222,245,247,158, 67,175,185,254, - 16,182,121,222,246,188, 68,253, 95,184,229,101,246, 71, 85,108,139,205,195, 38,245,251,165,189,135,182, 82,104, 64, 78,157,248, - 78,126,189,152, 5, 32, 10, 63,213,100,241,170,128, 84,172,105,141, 97,128,253,126,153, 13,214, 50, 32, 85, 31,148, 56,230, 44, -146, 92, 4,152, 10, 21, 82,192,224, 44,181, 75, 22,189,201,212, 84,152,139,246,117,175,203,222,183, 59, 55,218,247,167, 58, 29, - 34, 78,183,212,180,217, 10,202, 17, 57,120, 10,185,162,120,104, 59, 40,169,221,238, 12, 8, 14,137,154, 99,116, 10,212, 70,180, - 38,127, 93, 71,133,251, 15,131, 44,253,168,191,207,205, 72,163,140,121, 64,249, 89, 72,230, 64, 86,163,191, 97, 97,104,170,165, -109,224,238,122,185,166, 61, 95, 87, 33,153,100,135, 69,112,113,118, 9, 34,135,155,155, 91,220,222,221,225,225,213, 99, 60,189, -190,197,179,235, 91, 76, 87,143, 48, 61,120,136,155,227, 17,151, 87, 15, 16,195,140,231, 47, 95,224,241,147,183, 65,231,143,241, -131,143, 62,195,180,223,225, 50, 94,226,213,171, 87,120,243,241, 37,126,226,171, 63, 14, 71,128, 59,223, 99,246,140, 7, 87,143, -240,244,249, 75,156,185, 61,174,158, 60,192, 49,204,240,254, 12,113,190,197,110,231,113,123,119, 3,239, 25,199,112, 0, 81, 82, -146, 3, 4, 15, 30, 94,225,250,238,128,187,195, 17,111,189,245, 14, 94, 60,125,129,203,243, 51,124,237, 39,255, 1,254,252, 47, -255, 28, 95,250,210,151,240,197,119,223,192,155,111, 60, 66, 12, 7, 60,188,186,196,219,111,191,137, 55,223,124, 19,160, 51,220, - 6,194,103,159,125,134,221,206,227,236,242, 12, 60, 39,111,117,213,167,191,184, 56,199,249,229, 25,230, 99, 44,108, 23, 55,121, -144, 39, 56,184,226,182,168, 87,218,186, 69, 38, 32,237, 10, 0, 46, 7,189, 20,171,109, 16,164, 38, 40,182, 94, 18,113,209,249, -146,121,110,192,120, 61,238,136, 78, 88,235,210,142,235,185,102,193, 49, 30, 86,184,177,233,104, 90,160,106, 31,208,163,168,114, -100,150,121,102, 73,188,126,118,144,152, 24, 17, 76, 30,158, 8,187,189,199, 60, 31, 1, 16,188,138,198, 28, 15, 32,118, 56,207, -202,127,158, 90,208,116, 41,204,152,178, 68,106, 92,232,217,167, 89,120, 28, 98,105, 4, 33, 73,252,138,192,185,105, 89,136,117, -215,178, 40, 81,218,175,221,253, 98, 6,173, 96,113,106, 39,213, 15,217, 89, 77,229, 13,172, 39,103,188,140, 51,126,119,126,182, -104, 61,235, 77,236, 17,136, 45,200, 42,228,214,123,237,219, 84, 65, 45,170,156,235, 78, 33, 73,169,144,236,234, 60,114,203, 72, -138, 28,111, 2,199, 74,123, 71,214,125,135,203, 44,146,219,247,178, 42, 73,155,128, 53,205,240, 6, 51,238, 53,128, 19,245, 73, -128,161, 52,149, 86,188,169,244, 87,223,223,204,164, 27,167, 30, 84, 77,229,194, 68, 25, 32,221, 5, 52,164, 20, 86, 55, 89,169, -193, 36,207,154,244, 8,211,246,177,194, 14,214,148,128, 59, 59, 81, 49, 29, 3, 66, 43,243,105,131,146,102,162, 37,185,194, 10, -151,125, 48,151,110,239, 77,181,134,181,150,177,189, 85,236,168, 19,146,119,221,210,135,180,107, 86,211, 20,199, 92,130,117,207, -119, 69,151,228,146,177,100, 5, 98,185, 6,100,229, 40,187,217,177,157, 25, 54,159, 67, 53,161, 45,165,140,179,171, 93, 78,236, - 28, 17,144, 59, 61, 86,211, 90,172,201,136,112,113,217,227,206,191, 62, 72, 66, 47, 55,205,236, 60, 82,209, 74, 93,187, 75,135, -172,156, 24, 68,224,119,103,224,105,135, 15, 63,122, 31,127,240,111,254, 16,103, 87,151,248,157,223,249,223,241,223,255,243,255, - 26,111, 61, 58,199,153,159,112, 56, 70,240, 52,225,230,246, 26, 49,206,184,189,125,141,203,203, 11,156, 95,236,112,249,224, 12, - 49, 30, 18, 94, 66, 24, 51,128,143,159, 62,195, 31,126,227,143, 48, 31, 5,103,151, 23, 56, 28, 14,184,122,116,133,183,223,122, -140,159,252,169, 31, 79,190, 4,222,225,250,246, 53,206,206,206, 48,185, 29, 14,243, 17,175,175, 95,225,236,226, 2, 68,132, 79, - 63,253, 24,255,226, 95,252,207,184,185,185,193,151,190,244, 37,252,234,175,254, 99,252,224,135,239, 97,183,243,120,112,117, 1, -231, 8,251,253,132,187,195, 13,158, 63,127,134,231,175, 94,194,237, 46,113, 56, 94, 99,154,206, 17, 29, 97, 55, 17, 64, 1,135, -249, 14,206, 39,217,104,239, 83, 16, 57,134,244,255,217,187,132,140,158,124,178,112, 94, 1,124,108, 87,201,121, 37, 70,169, 0, -145,114,148,220,142, 85,131,170,250,115,253,126,166,174, 24, 95,251, 49,133,108,107, 52,213,240,112,236,223, 88,123,216, 50,222, -115, 11,160, 91, 31,212,171, 10,105,173, 40, 53,105,100,211,209, 35,137,112,228,225,220, 57,110,111,175,177, 63, 59,207,110,107, - 51, 68, 8, 23, 15, 30, 96,158, 35,238,238,110,192,222,131,125,178,134,182,160, 61,162, 68,167,148, 48,176,110, 70, 40,146,180, -205,248, 51,239,244, 49,198,130, 15, 24, 49,106,182,218,247,127,103,134,202, 10,101, 59, 54, 18,226,235, 32,220, 17,147, 39,197, -236,229, 61,241,126, 55, 45,218, 4,162, 74, 71,157,196,102, 3, 40,179,244,141,174,114,238, 17,150,220,209, 18, 74,160,183, 21, -243, 64,115,215,182, 33,170,204, 95, 39,108,159,181,111,121, 77,187, 55, 74,231,103,219,254, 60, 88,235,186,193,209,169,118, 47, -198, 63,103, 90,250,109, 71,163, 69,156, 13,228, 22, 63,103,169,193,156, 86,180,157,155, 32,178, 6,116,137,237,140,116, 68, 39, -163, 1, 64,106,149, 2,101, 23, 95,159, 8,116,223,215,160,221,191,126, 1,201,157, 16,160, 97, 19,180,183, 50,213,184, 33,131, - 74, 57,216,162,219, 46,203,188, 59,155, 45, 52,235,176,153,209,112, 11, 4,237,208,173,245,115, 87,106, 34, 55,115,233,216,240, -211,235,185,199, 74,203,178,194, 42,212, 3,238, 12, 56,179,251, 20,206, 92, 27, 11,100,109, 41,117, 21,211,225,250, 42,125, 69, - 12, 72, 43, 49,143, 92,165,137,206,180,117,118, 89,211,220,253,110, 7,246, 30,243, 93,106,159,238,207, 47,240,248,241, 99,124, -248,193,199,248,224,163, 15,113,119,119,196,237,252, 2,127,240,111,190,129, 95,248,233,175,227,215,126,233, 63,193,197,229, 30, -251, 0,220,220,220, 96,122,240, 24,111,188,241, 24, 47, 94, 62,195,180, 35, 56,191,199,147, 39,143,112,245,248, 2, 23, 87, 23, -120,245,242, 53,252,238, 2,239,127,248, 62,190,253, 23,127,133,207,158, 61, 47, 90, 19, 23, 87,231,120,252,240, 1,222,122,231, - 77, 60,124,116,137, 72, 2, 55,237,176,219,157,165, 86,125,136, 56,187,216,101, 20, 51,225,252,209, 3, 16, 9, 14,135, 91, 28, - 14,183,184,190,121,133,199,111, 60,194, 28, 14,216,237, 60, 46,175, 46,112,123,119,192,123,239,125, 15,159, 60,253, 4,175,175, -239,112, 59, 63,199,225,112,192,228, 5,199,219, 35,230,201, 97,126,251, 10,199,153,193, 36,120,241,234, 21,110,143, 7,236,118, - 59,120,231, 48,237,119, 73, 2,249,110,110, 17,211, 43, 73,165, 27, 36,147,201,200,131,140,205,179,186, 72,198,108, 28,181, 60, -170,150,126,242,149,200, 62, 22,112, 77, 80, 31, 21, 19,107,232,240, 94, 70,152, 85,198, 52, 35,236,171, 42, 92, 44, 93, 66,131, -130, 94,116, 40, 43,234, 31,198,173, 19,216, 77,123,204,243, 12,102, 87,232,199,146, 69,133,224, 29,206, 30, 92,129,153,147,160, -143,223, 35,134,128,200, 19, 64, 51,166,253, 89,190,182,210,128,240,138,170,159,247,136,174, 51, 76, 18,129,136,131,139,146,252, - 62, 26,202,174,203,152,135,144, 69, 68, 66,201,178,109,188,104,226, 75,119, 92, 0,161,239, 41,136,181, 70,189,147, 40,155, 26, - 42,189,145,204, 18,241,191,236, 6,251,253,217,217, 2, 57,109,161,255, 65, 13, 79, 6,134, 33,202,195, 36,108,109,186,180, 10, - 88,176,220, 71, 91, 33, 81, 7,112,162,174,201,219,204, 6,181, 53, 75,210, 36, 25,101,209,177,217,178, 77, 85,172,243,122,118, -110,187, 77,155,103,247,148,103, 45,125,240, 85, 33,255, 2, 32, 49,231,214, 32, 43,237, 57,231,178, 90,173, 73, 99, 31,244,109, - 27,121,163,157,108, 41, 13,195, 32,184,200, 96, 91,228,240, 54,213,137, 54,143, 48, 0, 49, 30,216,161, 14, 95,171,103, 36, 24, -160, 87,111,136,211,172, 69, 26, 63, 28,145,128, 53,199,237,242,123, 39,120,248, 20, 24, 35, 46,215, 18,124, 56, 22,161, 81,207, -131,102,110,103,102,234, 34,161, 6,235,133,114,159,100,181, 45, 42,179,253, 72, 43,247,196,180,225,155,247,235,120,254,250, 41, -252,168,187,193, 61, 58,152, 65,240, 85, 20,132, 91, 93,114, 0,120,125,115,139,105,154,176,191,216,225,236,236, 12,175, 94, 94, -227,233,243,231,248,253,255,247,247,241,157,127,255,125,252,198,111,252, 6,254,239,223,255,127,240, 43,191,246,235,120,245,234, - 26, 87, 79,158,192, 81,196, 3, 63,225, 40,192,109, 72, 42,111,143, 30, 93,226,229,203,231,216,239, 28,142,225,128, 47,126,229, - 75,248,228,217, 83,236,166, 75,184,253, 57,158,189,186,134, 56,143,243,203, 43, 28, 14, 7,236,207,207,241,252,197,115,188,247, -222,123,248,173,255,234,183,240,133, 47,190,131,195,237, 45,166,189,131,159,118, 56,228,185,118,116, 73, 74,149,189,195,237,221, - 29,130, 68, 60,123,241, 60,205,217, 31, 93,225,201,147, 39,184,190,126,141,121, 62,128, 88,240,131, 31,190,135,239,127,255,123, -217, 97, 49,224,230,245,117, 6,225,157,225,112,119,131, 29,239, 48,207, 7, 28,143,192,147,199,143,240,226,197, 51,220,222,221, - 97,127,190, 51, 76,143,164,182,233,119, 83, 39,238, 36,173, 46, 65,159, 52, 91, 60, 76,126,136,181,167, 73,145,178,229,115,123, - 44, 69, 1,117, 0, 89, 49,227, 72,225, 5, 83,169, 52, 4, 99,220, 52,252, 97,111,169,140, 75,113, 24, 4,149,129, 29, 87,179, - 37,232, 64,139,189,196,232,225,108,108,115,123, 60, 34,198,136,139,221, 57, 36, 4, 76,222,193,239, 38,220,221, 28, 0,114, 8, -112,184,189, 59,226,250,250, 26,222,123,124,242,209,199, 8, 33, 96,191,219,225, 11, 95,120, 7,211, 52, 97,231,211, 56, 36,206, - 1,206, 39, 27,112,153,231,236,124, 57, 10,234, 74, 71,115, 64, 8,109,204, 33, 49, 29,208, 78,164,169, 6,158,250,181, 90,138, -107,178,210, 29, 79, 83, 70, 79,236,169, 35,113, 26,123,143, 6,236, 37, 26, 20,225, 13,184,152,118,190,136,212,163,155,101,179, - 8, 36,208,106, 80, 79, 14, 37,167, 51,147, 62,187,179,115,122,235, 90,196,221,239, 48,176, 58,107, 95, 4,123, 25, 7,245,190, - 18,181, 74, 61, 4, 35,222,191, 22,212,137,107,229, 77, 29, 26, 61,139,248,219,205,212, 30,109, 64, 26,253, 28,160, 34,214,111, -175, 85,131, 49,232, 42, 99,173,180,250,110, 72,211,210, 93,169,110,217,162,172,239,233, 4,182,208, 25,176, 26, 2, 86, 11, 96, - 81, 81, 82,147,201, 54, 1,155,219,160,238, 59, 36,239, 72, 57,110, 4,162, 99,157,143, 1, 11, 31,248,194,166,232,252,137,155, -235, 38, 12, 76,212,221,153, 21, 42, 27,197, 21, 17, 8, 25,182,213, 42,176,205, 45,174, 67,179,241, 51,154,129,192,154,162,158, -172,116, 49,136,151,226, 61,194,180,249, 44, 22,236,133, 48, 28,117,157, 58, 81, 93,128,244,111,218,239,112, 60, 30,113,123,123, - 0, 28,227,118,190,197,195,135, 15,241, 43,191,241,107,248,199,255,197, 63,193,255,240, 63,254, 79,120,249,234, 57,222,121,231, - 29,252,216, 79,252, 56,110,239,142,184,185,126,137,135, 15, 31,224,238,120, 4,237, 46,240,238, 27,239,224, 55,127,243, 55,241, -191,252,111,255, 43,118,103, 19,174,175,175,113,121,241, 0,111,188,241, 22, 66,100,188,122,125,139,143, 62,121,134,187, 89,192, -211, 46, 9,166, 56,143,231,207, 95,226,230,246, 6, 31,126,244, 17,190,254,245,159, 74,215,192, 17, 14, 33,226, 24, 5,222, 59, - 4,137, 56,132, 25,123,231,225,189,199,207,255,252,207,195,123,143,155,155, 27, 92, 92, 92, 36, 80,149,243,120,117,253, 26,111, -197,136,167, 79,159,226,197,139, 23,240,126,135,155,155,207, 48,135, 3,142,243,140,227,237, 14, 33, 28,193,110,143, 99, 72,200, -238,183,222,121, 27,110, 98,128, 29,136,211,236,243, 16, 98, 74, 78,253, 4,158,118,136,119,135,218,109, 90,217,103,234, 51,146, -129,164,134, 72,168,224,184,148,231,167,128, 40, 66,217,248,132,114,128, 73, 63,143,249,251,122, 84,160,106,232, 43,200, 6,216, -204,171,238, 99,100,212, 8,139, 7, 65,171,242,138,160, 78,128,108, 48, 27,230,220, 89,184, 0,110,163, 81, 92,211,142,215,249, -197, 30,199, 48, 99,242, 59, 60,253,248, 83, 60,127,254, 28, 55, 55,119,248,238,119,191,139,151, 47, 95,227,242,234, 33,126,242, -107, 63, 5,239, 61,158, 62,125,138,191,254,203,191,194,197,229, 57, 46,207,206,241,163, 15, 62,192, 47,254,226, 47,226,252,252, - 10, 96,198, 33,222, 38,189,125, 84, 75,231,194,218,202, 61, 17,171, 42, 73, 0,226, 60,151, 74,191,206,218, 19,253,217,137, 75, -160,185,149, 25,250,169,202,219, 98,102,122, 74,115, 97,163, 12,228,103,237,239,121,246,141,149,234,242,117,208,118,170,117,124, - 41, 24,142, 92,210, 12,158,125, 75,245, 81,164, 47, 19, 36, 70,120,191, 47, 51,246, 97,181, 62,187, 49,136,108, 32, 62,130, 65, -144,229, 56, 86, 60,162, 19, 23,245, 62,115,143,145,120,200,112,211,222, 74, 26,152, 27,119, 30, 13,142,165, 21, 61,144,209,220, - 66,155,142, 22, 71,143,118, 28,221,220,181, 69,179,248, 60, 70, 79,125,113,253, 86, 84,235,182, 2,251, 86,214, 25,105,204,223, -214,160,237, 86,130,189,116, 65,189,231,116, 47, 44,102,105,253,156, 37,155, 58,244,154,205,247, 57,218,187,125,106,153,245, 40, -211, 69, 7,138,151,106,116,146,109, 58, 93,135, 84,182, 65, 94, 72, 86,232,109, 52, 68,207, 66,184,233, 6, 88,137,205, 54,161, - 88, 38, 99,150,221,164,105,145,235,157, 25, 35,193, 17, 82,107, 50,111,142,187,243, 29,118,103,103, 56, 63, 63,135,223, 79, 8, - 33,224,234,241, 21,254,229,191,254,191,240,131, 31,126, 31,111,188,241, 24,187,179, 9,191,241,155,191,142,227,205, 11,240, 4, - 60,124,227, 13,208,171,215,136,110,135, 31,126,248, 1,118,187, 84, 93,223, 92, 31,240,233,211,151,248,227, 63,249, 51,252,202, -175,252, 26,104,218,227,131, 79,158,226,217,171,215,120,113,125, 13, 9,192,241,120,196, 44, 17,119,135, 25,211,110,143,111,127, -251, 47,240, 11,191,240, 11, 56,219, 79,217, 25, 11,152,118, 23,152,101, 78, 64,170,233, 12,206,159,225,217,103,207, 49, 71,198, -237, 33,226,242,234, 9,222,126,247, 75, 56, 28,111, 17, 35,240,254,251, 63,196, 87,190,252, 19,112, 60, 97,206,154,226,222, 79, -224, 67,128,247,105, 29,222, 30, 3, 64,140,253,254, 28,211,110,143,203,171,199,112,211, 14, 17,140, 32, 14,126,154, 16,231, 59, - 56,158,224,132, 16,133, 33,121, 28, 34,107, 27,255, 66,130,149,170,239,156, 81,203, 44, 65, 88,186, 49, 34, 12,176,184,140,239, - 85,172, 38,139, 28, 41, 83, 97,144,252, 11,197,213,253, 45, 42,115,132, 34, 24,149, 15,221,180,119,173, 14, 9,181,108, 17,181, -230, 22, 99, 9, 74,210, 50, 44,230, 40,136,148, 88, 13,194,148,212,253,220, 14,211,217, 57,226,235, 27,220, 5,224,225, 27,111, -227,226,236, 28,135, 57, 98,127,126,129,183,222,126, 27, 12,194,109, 56,226,217,139,231,184,122,120, 9,191, 75, 40,120, 56,134, -227,148,204, 37, 9, 97,206, 4,170, 60,232,232,102,205,156, 63,217,200,235, 93, 36,194,197,245,120,114,106,127, 84, 74,109, 81, -116,203,157, 86,103, 44, 84, 89,213, 77, 59, 75, 93,253,185,196,214, 8, 75,139,129,114, 13, 29, 53, 35, 21,225,138, 15, 43, 99, - 62,145,236, 86,168,210,186,222, 21,159, 87,100, 32, 78,241,241,117, 21,133, 11,137,197,199,218,250, 89, 71,191,148,225, 59,165, - 93,222, 92,152, 40,155,156,194,147, 1,153,104, 81,253,247, 64,185,113, 59,245,126, 65,127, 33,158,130,165, 54,251,162, 45,190, -162, 48, 55,226,157,219, 25, 48, 99,172, 1,207,125, 37,222,125,127,232, 6,183,213,242, 97, 58,221, 89,185, 71, 43,137, 77,166, - 90, 48, 11, 29,114,157, 6,193,186, 55,237, 24, 37, 11,140,154, 52, 88, 32,102, 95,145,215,138,189,118, 54,120, 48, 91,183,128, - 85, 55, 76, 49,215, 41, 42, 91,149,122,163,245, 61,186,119, 25,104,103,255,222,145,109,207,199, 97,146, 70, 25,115, 65,202, 91, - 45, 15, 62, 23,241,141,152, 1,124, 67, 12,138, 17,244,144, 34,153,188, 92,223,145,218,150, 59,129, 16, 17,202,245, 39, 48,196, - 49,238,174,239,112,125, 76,118,163,236, 39, 60,124,116,133,127,245,187,255, 18, 95,248,194, 59,248,236,217,115,188,249,230, 19, - 68,138,248,255, 73,123,211, 31, 73,210,252,190,239,243, 60,113,102, 68,102,214,213, 85,213,215,116,207,204,206,236,206, 30, 35, - 30,226, 18,162, 86,146, 37, 1,178, 68, 75, 47,252, 15,216, 16,109, 65,162, 33,192,128, 96,200,176,223,233, 63,144,255, 0, 89, -176, 12, 67,128, 37,136, 94, 16, 36, 69, 27, 36, 69,145,203, 21,247,152,153, 93,206,236,204,116,207,221, 93, 93, 93, 71,102,229, - 25,119,196,243,248,197, 19, 17, 21,153,149,213,221, 67,245, 32,145, 83,121, 70,198,241,252,174,239, 81,160,176, 28,135,121,180, - 36,175, 42,126,244,131,183,249,215,255,230,223,146,102, 37,203, 69,202, 7, 31,124,196,246,112,192, 15,190,255, 67,254,221,119, -255, 61,255,224, 31,254, 35, 30, 29, 29, 19,103, 25, 10,105, 22,110, 97,168, 86,193,160, 79, 85, 36,124,240,225, 67,102,179, 25, -253, 59,119,234,197, 89, 16, 4, 3,150,113,132,180, 28,130, 32, 64,107, 65,154,141,137,150, 41, 23,227, 25,131,254, 54, 96, 17, - 45, 51,206,206, 39,188,243,246,187,220,189,251, 21,162, 36,103, 62,139,233,249,146,126,127, 8,210,197,243, 28,194,158, 71,180, - 92,130,182,233, 15,134,248,190,135,210, 22, 97,127,155, 74, 9, 42,101,225, 88, 62,194, 2,105,121,102, 52, 89,106,132,244, 91, -182, 64, 19, 64, 87,207,211, 78,167,168, 49, 52,169, 85, 44, 13,165,117,117,145, 23,242, 82, 91, 92,182,190,227,215,107,143, 55, -210,172,155,130,122, 35,129,170,175,233,146, 10, 97, 35,164, 66,235, 75, 74,164, 86,122,197,105,177,113, 33,187, 76,134,215,116, - 2,212, 42, 38, 73,175, 21, 24,210,178, 80,149,166, 20,154, 52, 47,200,242, 18,233,216, 84, 74,147,151,138,215, 94,121, 21,141, -228, 98, 54, 55, 9,146,227,178,140, 83,147, 56,134, 61, 38,243, 5,183, 42,141,235, 57,181, 97, 86, 45,150,102, 25, 95,120,173, -100,199,113,205,152,198,104,154, 88,103,212,255, 52, 18, 68,185, 98,106, 67, 13,254,163,245, 33,233,174,241,171,133,208, 51,199, - 23,232, 43,150,225, 43,247,141,120, 12, 92, 1,180, 26, 74,117,151,205,114, 21, 51, 38,149,188,212,250,111, 58,198,150,196,106, -197,168,106,169,221,234,114,189,176, 27,153,195,150,250, 84, 7,109, 81,139,104,232, 14,138,209,216,104,215, 90, 59,181,124,159, -245, 28,113,144,235,173, 42, 55,180,198,175,145,211,123, 94,213,251,172,192,252, 44,147,150, 23, 65, 44, 62, 15,248,160,213, 53, - 0,186,142, 49,192,179,130,186,148,207,110,131, 63,171,253,189,169, 82, 94,159,157,174,160, 83,165,120,102, 91,233, 89, 39,239, -117,143, 73, 97, 93, 73, 82,232,160,250, 27, 81,135, 77,243, 96,117,221,247,116,102, 90, 93, 89,213,245,147,190,249, 61, 13,254, - 67, 74,137,109,219, 45,175,213,243,188,218,189, 79,183, 34, 54, 85, 85,181,210,144,121,158,183,218,208, 66, 60, 15, 91,160, 55, -119, 99,196, 26,120,176, 11,148,163,163, 96,213, 44, 32, 66, 93,170, 77, 53,253,119, 99,138,184, 90,237,137,198, 15,218,186,100, - 93,116, 59, 26,141,104,197, 26, 94, 67,233,142,107, 22, 96,217,142, 17,105,170,105, 90,150,101, 12, 73,138,162, 64,233, 18,161, -140, 52,170,241,180,214, 44,163,136,254,112, 64, 85,148, 70,124,195,178,201,242, 2,219,115, 81, 90,147,164,102,198,238,122, 30, -189, 32,224,239,252,234, 95,226,131, 15, 31,240,224,225,251,252,151,127,235,175, 83, 42,213,218,221,218,174,199,123, 63,251,128, -225,112, 11, 22, 9, 55,110,248,164, 81,140,227, 14,120,237,245,151, 80, 84,124,239,251, 63,160, 23, 4,228,133, 49, 88,193,146, - 84,149,102, 25, 39, 12, 6,125,178, 20,148, 80,204,151, 17, 95, 9, 66,190,247,199,223,231,237,183,223,193, 18, 54,131,173, 97, -123,172,181, 50, 9,207,241,211,115, 42, 37, 57, 61,187, 96, 25, 39,228,121,202,124, 30,241,217,167, 71,124,252,201, 35,250,195, - 93,242, 76,227,121, 14,121,150, 1,146,170, 18, 76, 39, 75, 92,167,135,148, 14,113,156, 51, 30, 79,232,245, 2, 44,203, 98,176, -181, 71, 56,176, 24,143, 23,148,101,137,227,153,243,173, 44, 75, 92,215,180,237, 29,203,165,210, 37,182,180, 16,150,100, 57, 95, -224, 7, 61, 44, 33, 41,170,130,126, 24, 34, 45,135,139,201,152,237,157, 29,180,214, 20, 69,137, 99, 75,210, 44,195, 18, 6, 85, - 95,230, 5, 69, 85,174,176, 44, 92,223,195,119, 61, 28,219,106, 69, 81, 36, 53, 26,188,198, 60,117,207,243,170,170, 46, 61, 19, -234,192,210,156,155, 69, 81, 32,165,196,113, 28,166, 83, 67,229,179,109,227,181, 25, 37, 9,187,219,219,196,113,220,226,165,170, -178,174,254, 92, 23,215,113,136,163, 8, 41, 37,131,193,128,217,108,134,237,184,117,231, 71,173, 74, 14,235, 6, 43, 36,113, 93, - 11, 85, 65,156,230,100,101,193,114, 54,227,228,108,196,206,222, 46,182,231, 50,157, 47,152,207,231,140,207,207,112, 61,143,249, -114,193,206,206, 14,189,126,200,187,239,189,199, 87,191,250,154, 25, 75, 8,218,192,238,184,134,253, 32,132,213, 6, 69, 93,127, - 31,173, 71,136, 54, 65, 94,107,132,112,160,117,183, 83, 45, 32,180,165,233,106,189,185, 93,183, 54, 46, 99,109,253,146,226, 50, -233,146, 29, 12, 22, 53,219,100,125, 54,175, 59,170,113, 90,212,236,174, 70,116,134, 75, 13,130,102, 61,208,170, 1,220,214, 56, -128, 26,104,157, 87,101,203,185,167, 11,192, 20, 96, 43, 46,103,199, 77, 6,216,238,144, 46, 0,173,173, 76, 84,219,118, 86,181, -140, 66,183, 66,109,130,152,236,160,199,175,227,169, 63,175, 85,253, 34, 9,128, 88, 67, 47,138, 13, 40,248, 46,121,127,147,140, -171,122, 1,244,253,117,127, 11, 94, 60, 56,110, 14,148,108,164,180,189,136, 46,188,181, 86, 41,175, 84,106,107,149,162, 92, 63, - 57,159,193,239,190, 78,201,110,179, 22,177,188, 54,168,175,183,125,175, 6,166,205,125,111, 77,231,243,186,173,205,142, 5,167, -174,103,124, 82,202,206,185, 42,168,106,225, 10,165, 20,121,189,128,153,150,173,106,229,131, 27,115, 31,187, 9,102,141, 53,238, -179,128,138, 92, 82,251, 46,149,223, 46, 41,125,242, 10, 59,163,238, 92,168, 14, 79,125,125,166,222,233, 68,104,113, 21, 77, 91, - 67,233, 46,191,123, 45,168, 11, 26,218,147,218,136,193,104,246,165,109,155,121, 51, 66, 80, 20, 21, 85,149,162,132,196,113, 92, - 92, 91,146, 37, 49,101,105, 22,191, 27, 7,123, 68, 81, 66, 81,149, 4,189, 62, 32,112,124,159,197,108,206,206,222, 46, 50,138, - 0,240, 7, 3, 44,215, 97,127,127,143,191,253,183,255, 71,254,233, 63,253,159,248,123,127,239,191,226,171, 95,253, 42,147,201, - 24,219,118, 65, 88,252,242,175,252, 10, 89, 37, 40,190,120,194,108, 62,226,252,108,194,220, 75,201, 51,205,214,214, 16,219,241, -152, 45,230,156, 28,159,163,148, 34,203, 10,180,174,136, 22,115,180, 46,217,221, 25,112,114,122,204,163, 47,142,120,227,107,223, -224,195, 15, 31,240, 7,127,240,135,248,158,241, 78,247, 60,143, 56,142, 41, 11, 77,232,247,112, 93, 31,199,114, 88, 46, 19,206, -207, 71,148,101, 73,169, 74,170, 74,115, 49,137,152, 76, 83, 78,158,142, 24, 46,203, 86,237,111,177, 56, 35,240, 61, 60,207,225, -209,209, 49,121,158,147,167, 41, 15, 31,124,138,101, 11,254,223,255,239, 15,136,227, 24,207,247,113, 93,159,180,200,233,245,122, - 8, 33,136,162,136,251,119, 95,226,230,205,155, 68, 81,132, 16,154,167, 79,159, 18, 69, 17, 90,107,146, 36, 97,127,127,159,254, - 32,192,113, 28,164,148,132, 97, 72, 20, 69, 12, 6, 3,146, 36, 90, 49, 45,170,170,234,210, 5,174,170, 8,195,208, 36, 81,174, -187, 2, 32, 53,199,212,194,177, 37,190,231,224,123, 1,174,103, 99, 73, 7,105,129, 99,123, 56,174, 69, 85, 26,115,146,126, 56, -196,178, 5,142,237, 25,202, 87, 5,183,239,220, 98, 62,159,146,231, 69,173, 30,233,241,193,131,143,184,123,247, 46,129,215, 51, - 73, 75,207,232,251,143, 70, 35,202,170, 98,107,123,155,197,194, 4, 97,207,247, 47,117,212,215,174, 83,179, 50,152,112, 83, 86, -154,163,163, 99, 78, 78,207,168,170,138,197, 34, 98, 50,155,226, 5, 33,103,103,103, 56,174, 71, 18,197, 60, 62,126,130,239,184, -184,174,193, 68,104, 93, 81, 40, 69, 20,167,244,194, 0,215, 55, 24,137,162,204, 76, 80,148,150,137, 91,117,240,148,173, 84,173, - 97, 10, 24, 96,162,190,164,249,155, 92,195,224, 0, 68,211, 85,150,176,166,114,183,105,100,169, 59,244,230,246,111,185, 6,228, -173,183,163,171,238,215, 92,219,122, 3,128,186, 38,145,118,232,195,117, 42,222, 36,248, 93,237,145, 58, 35,184, 12,252,186,102, - 23, 95,110, 79,243,251,109,203,185, 58,168,175,234, 74,188, 66,163,203,226, 82,124, 68, 96, 64, 6, 13, 79, 87,208,186,183, 93, - 55,211,180,159, 1,212,120,145, 86,251,243, 2,253,101,187,146,107,229,252,228, 53, 73,197,250,227,205,251,186,174, 55, 77,251, - 75,118, 80,240,162,123,143,252, 82, 1,121,157, 90,214,101,201, 63,171, 58,190,238, 51,101, 7, 56,215,204,250,229, 90,165,191, -210, 57, 96,179, 69,236,243,102,210,215, 61, 47,244,213,118,248, 21, 76,133,184,106,169,121,121,114,111,170,212,197,102,148,103, - 71, 49,173,185,120,138,170,166, 22, 89,151, 78,110,190,235,172,168,107,161, 58, 23, 95,253, 57, 10,109,248,198, 85,213, 17,225, - 17, 45,223,191, 33,118,201, 58,121, 48, 42, 90,226,170,184, 77,141,185,232, 78,177,187,195, 17, 45,171,214,220,165,139, 98,191, - 76,176,170, 85,138,161,150, 43,199, 73,116, 0,119, 43, 45,133,102, 36,208,106, 27,178, 66,216,107, 25,143, 10,148,170, 40, 10, - 19, 44,188,158, 7, 66, 83,149, 10,165, 43, 19,172, 60, 7,203, 17, 72, 97, 51,155, 47,169, 42,141,227,120, 44,150, 9,179,217, - 2,233,216,120,182,195,167,159, 31, 17, 4, 1,105,154, 52,190,124,224, 0, 0, 32, 0, 73, 68, 65, 84,242,244,116,204, 59,239, -252,148,191,242,157,191, 9,192,104,116,193,227, 39,167, 4,125, 99,144, 98,102,240, 1,223,252,214, 95,224,221,119, 31, 50, 14, -231,220,216, 1,199, 14,176, 44,143,197, 60, 34, 78, 47,248,106, 81,145,166, 41, 74, 41,110,221,186,197,100, 60,165, 72, 19,150, -211, 9, 89,154,162,245,144, 55,223,124,147,127,247,221,239,242,255,252,230,111,130,150, 84, 90,112, 49, 93,112,239,222, 61,147, -164, 40,129,223,235, 99, 59, 46,105, 94,176, 72, 99,202,170,192,113, 44, 92,215, 39, 89,206, 41,138, 18, 45, 53, 97, 48, 96,119, -239, 0,173, 5,121, 94, 98,123,162,245,185,247,188, 30,174,237,129,116,113, 61,201,114,185,100, 24,244,235,160,218, 39,201, 51, -146,172, 68, 33, 56, 63,159,145, 36, 9,190,231,224,245,250,184,126, 72,156, 22,244,122, 61,242,242, 4,219,237, 17,199, 49,131, -237, 29,210,162, 36, 30, 77,241, 60,143, 48,236,225,120, 61, 22, 81,194,197,116,142, 45,100,219, 97,106, 40, 95,174,235, 98,219, - 54,121,158, 51,157, 44, 91, 37,204,238,120,211,182,109,108, 71, 82,228, 9,160,176,109, 23,173, 43,178,172, 64,169, 18, 41,109, -148, 42,241,253,128, 44, 75,232,245, 66,242, 60, 37, 8,250, 72, 9, 82,218,252,245,191,254,215,248,165, 95,250, 37,198,227,115, -190,251,221,239, 82, 85, 21,179,217,140,127,242, 79,254, 9,179,233,180,150,136,150, 28,159,158,177,181,181, 69, 85, 85, 20, 69, - 65,191,223, 55,174,120, 77,199,167,149,247,237, 46,212,151, 67,176, 50, 79,249,228,147, 79, 56, 57, 61,195,117,125, 46,198, 83, -166,179, 5,123, 55, 42,230,179, 5,138, 57,170,172, 88, 46,151,136,193, 0,183,231, 18,167,117, 80, 47, 75, 38,243, 25,219,123, -219, 56,182,101, 12, 80, 74, 19, 64,221,218, 68,168,185, 46, 87,214,140,238, 77,232,205,182,179,170, 46, 74, 27,177,156,117,192, -248, 11,140, 34,181,208,151,214,167,157,245,227, 50,201,209,173,228,113, 87,195, 93,202, 78,112, 94, 95, 51,215, 77,183,214, 48, - 27,237,231,107,125,197,219, 65, 0,182,116,236,149, 89,174, 65, 5,106,148, 16,245,253,165, 91,141,104, 84,199, 26, 81,253, 58, -154,118,209,218, 93,116,182, 92,163,160,137,181,215,233,206,107,228, 6,116,178, 94,163,129,172,255,221,221, 1, 43,242,125,207, -168,196,175,171,204,155,247,181,149,149,210,109, 48, 87, 27, 42,214,230,125,232,103, 87,184,109,231,162,171,184,215,157,189, 35, - 95,140, 61, 0,207,245, 11,190,130,156, 22,151,149,155,222,128,142,110,185,247, 29, 98,216,138,250,217, 53,207,175,188,174,142, -176,106,211,201, 47,197, 21,106, 93, 55,161, 16,215, 84,233,172,109,111,119,123, 46, 43, 84, 90, 83,135,166,157, 94, 20,133,225, - 28,215,122,245,105,154,210,239,247,141,113, 78, 45, 82, 33,165,108,121,174,210,177,107,220, 72, 77,231,217,112, 14,182,138,126, -242,210,106, 85,172, 80, 41,197,115,129,150,207, 74,248,212,149,145,133, 88,217, 95,151,199, 87,172, 92,220,141,140,103,183,213, -191, 1,134,138,235, 26, 96, 91,150,229, 53, 39,185,170,247,133,105,199, 7,126,192,108, 62, 97, 56,216,165,170, 12, 48, 54, 77, - 98,254,183,127,254,207,249,181, 95,251,239,249,141,239,254, 22,239,188,243,147,118, 59, 6,131, 1,113, 28,147, 36, 9, 2,151, -223,254,173,223,229,237,183,126,138,180, 92,254,205,191,253, 13,226, 52,231,141, 55,222, 96,111,111,143,201,120, 76, 24, 12,248, -193, 15,126,136,239, 7, 84,165,160,170, 52, 82,106,162, 40, 65,139,146,209,104,132, 16, 21,174,107,227, 88, 54,170,200,137,163, -136,162, 40,136,147, 5, 22,154,225,176,143,239,251,204,166, 11, 46, 46,166,236,237,237,211,243, 5,139,165, 25, 5, 84,165,160, -148, 21,101,153,212, 86,168,102,214, 90,149, 48,141,231, 40, 85, 34,108,155, 44,201,201,242, 41,158, 27, 34,165,141,239,251,148, -186,100,123,123,155,229,124,206, 98,177,100,216,239,179, 92,196,148,149, 25,205, 68,203, 12, 37, 50,118,118,118, 56, 31, 93,144, -166, 41,123, 7,135, 68,105,134,210, 48, 95, 36,148,149,102, 50,153,145,164, 25, 82,218, 36,105,142,239,121,216,174, 71,154, 20, - 76,231, 19,110,223,188,197, 75,247,238, 99, 91,146,131,195, 67,122,189,144, 7, 15, 30,160,164,133,109,219, 56,142, 85, 87,242, - 21,150,101, 99, 89, 54,142,115,213,130,250, 82, 76, 69,130,150,120,110, 64,158,167, 84,165,249,221,142,237,226,186,253, 54, 41, - 40,203, 18, 41, 28,164,176,176, 45,143,178,168, 72,146,132, 52, 77,121,231,237, 63,227,233,211, 83, 30, 63,126,204,120, 60, 70, - 74,201, 27,111,188,193, 23, 95, 60,198,181, 29,246,246, 66,252,158,209, 1,112, 28,115, 30,197,113, 76,191,223,103, 56, 28,146, - 87, 37,162,190,126, 20,107,152,166, 86,102,216, 66, 41, 56, 31,141,201,178, 2,219,242,235,246,190,192,237,249, 56,142, 99,170, -118,199, 37, 12, 67,182,183,135,216,182, 77,188,156, 19, 4, 62,189,192,167, 84, 21, 94,173, 46, 87,106,133,150, 22,150, 0,233, -216,168, 6, 8,216,233,216,118,193,112, 85,165,106,214,210, 6,246,150, 52,108,143, 86,200,107,131, 2,234,117,227, 83, 26, 81, -174,206, 10,190,130,233,233, 96,142, 86,124, 77, 58, 58, 45,212,120,159,255,172,177,178,186,250, 26,187,241, 59, 22,151,165,115, -173, 71,108, 82, 14,203,114,219,222,253, 38, 39,176, 46, 16,103,147, 2,153, 86,250,138,150,251, 74,155,162, 81, 60,187,134,119, - 36, 54,220,119,219,247,162, 3,184,235, 8,199,181, 21,183, 73, 58, 58, 64,147,181,231, 77, 53, 78,109, 50,178,225,126, 3, 0, -101, 13, 55,189,178, 93,130, 85, 45,123,105, 61, 39,232,243,108,235,192,231, 89, 11,242, 12, 71, 55,177, 30,168, 55, 66,195, 94, -236,100,186,110,219,100, 35, 34,191, 97,155, 86, 59, 18,108, 8, 74, 87, 65,126, 93, 87, 46,205,165,162,158,220,144, 12,180,162, -142,150,153, 87,151,121, 65, 86, 86,216,158,143,101,219, 84,105, 70,156,229,248,190,143,176,107,201, 74,203,170,101, 54, 85,237, - 5, 93,181,199, 97, 35,254, 98, 61, 78,174,253, 14,245, 92,212,188,216,152,180,116, 23,191,174,199,185,236,122,205,119,130,249, -213,207,187,116,199, 19, 43,250,245,114,229,220, 92,206,151,166,133,107, 27, 59,210,162, 40, 40,139,146,126,127,136,112, 61,138, - 50, 99,255,198, 45, 22,243, 24,223, 15,152, 45, 23,156, 60,189, 96, 52,142,248,223,255,229,191, 38,138, 18,190,242,234,215,113, - 61,191,166, 29,205,216,222,182,120,248,240, 67,190,241,141, 95,228,139,207, 30, 81,149, 54,129,191,199,104,156,112, 62, 62,227, -243, 47,142, 57, 60, 60, 36,137,151,244,251,125,142,142,142, 56,216, 59, 64, 85, 96, 57, 62,190,191,133,229,216,100, 89,198,251, -239,191,207,214, 48, 64, 96, 49, 57, 31,145, 37, 41, 84,138,173, 65,200,100,146, 33,128,247,223,123,143,215, 95,127,157,111,124, -253, 91,252,222,239,253, 33,179,249,130,170, 20,109,247,193, 15, 3,108,215, 37, 77,115,202, 82,225,121, 14,210,177, 89, 44,231, -184,174,131,180,236,182,202,172,180,198,117, 2, 74,165,208, 85,133,144,138, 94, 47, 36,168,101,103, 27, 58,156,180, 44,163, 63, -142,162, 40, 20,179,249,146,112,184,133,227,247, 40,114, 99, 25,156, 38,153,161,205,121, 62, 89, 94,210,235, 15,106,166,160,160, - 40, 75,180, 16, 68, 73, 76,165, 5,105,158,241,248,248, 9,203,217,156,189,179, 51,195, 12,145, 6, 61, 95, 85,138, 44,203, 91, - 17,150,166, 18, 87, 74,213, 54,176, 77,130,103,213, 55,105, 88, 21,150, 49, 27,114,253, 94,107, 78,101,250,208,150,145,104,182, -108,211, 97, 68,144,214, 45,246, 52,205, 72,179,156,178, 82,188,245,206, 79, 80, 63, 50, 60,232,151, 94,186,195,215,190,250, 6, -159,124,252, 41, 73,156,114,118,118,198,116, 54,225,175,126,231, 47,243, 43,191,242, 43, 36, 73,130,109,219, 12, 15, 14, 73,211, - 20,199,177,136,102, 9,158,231,173, 40, 44, 94,142,147, 68,139,185,202, 11,243,221, 97, 24,226,250, 62, 21,130, 94,216, 39,232, -133, 88,182,196,177, 45, 44, 91, 98,219, 18,215,178, 87,156, 7, 93,207,163, 82,138,160,111, 36,134,149, 42, 91, 28, 87, 81, 84, - 43, 35, 9,106, 48,162,214,250,138, 54,251,165, 41,157,233,109, 27,146, 87,237, 71,209,145, 18, 23,107,160,219,198, 77,175, 85, -168, 92, 75,248,229,115, 70,173,155,176, 97,171,143,203,107,113,101,226, 69, 70,209,234,170,247,133,109,219,118, 43, 13,217,157, - 41,116,219, 61, 29, 16,249,149, 15, 47, 85,117, 69, 20,166, 43,192,114,165,162, 89, 7,246,212, 3,132,238, 44, 65, 32,174, 0, -128, 86,230, 19, 29, 59,188,118,151, 88, 98, 69,228,161, 85, 71,237, 60,110,173,239,208, 78,133,246,101,168,104, 43,250,218,107, - 7,182,187,195,215, 53,237, 27,170,224,106,146,240,156,118,183,210,215,182,193, 95,136, 33, 32,197,213,100,100, 77, 39,252, 89, -153,226,243,192,130,155, 12, 95, 86,172, 95,121,177,150,214,149,237, 19,215, 60,191, 86,225, 55,228, 10,165, 20,113, 28, 19,213, - 64, 30,215,117, 89, 44, 22, 72, 41,217,223,223,199,113,140, 80,136, 89, 12,173, 22, 52, 86,118,116, 18,158,167,147,189,126,110, -168, 13,254,198, 95,246,223,181,226, 62,215,140, 93,116,199,182, 82, 34, 47, 21,191,218, 71,245,202, 68,222,243, 60, 92,215,165, -136, 83, 44,203,180,163, 27, 80,213,217,217, 57, 91, 91, 3,180,146,104, 45,168, 74,193,205,151, 95,227,195,247, 63, 67, 41, 73, - 63,220, 97, 56,216, 7, 45, 73,178, 20, 41, 28,134,131, 61,254,227,127,252,143, 44, 22, 11,138, 92,146,103,130, 39, 71, 35,146, - 52,199, 13, 4,253,254, 13, 16,138, 44, 87, 56,110, 64,180, 76,168,170,138,139,139, 17, 66, 88,236,222,184, 73, 81,229, 44,227, - 5,113, 60,103,119,215,199,179,109,242,188,160, 40, 96,171, 63,192,182,109, 60,215, 70,149, 37,203,229,146, 48,236, 17, 69, 17, -147,135, 31,147,103, 5, 69,165, 56, 63,155, 48,220,222, 33,175, 74,166,139, 57,209,210, 84,127,170, 80,244,122, 30,175,190,242, - 10,119,238,220,225,233,211, 99,148, 46,153, 78,167,230,119, 99, 97, 91, 46, 89, 97,230,221,158,111, 49,153, 74,190,246,218,235, - 72, 41, 57, 61, 61,165, 40, 76,176, 62, 63, 63, 55, 1,127,208,231,241,241, 19, 60,207, 35, 77, 50, 20,154,215, 95,127,157,139, -139, 11,116,165, 24,143,199,140, 70, 35,250,125, 83, 33,207,102,179,154,219, 31,179, 88, 44,184,125,231, 38,105,145, 83,205,231, -120,190, 71,150,165, 92, 92, 92,176,213, 31, 32, 44, 99,138, 85, 20,141,152,137, 69, 24, 6,120,158, 79, 89, 22,196,113,210,154, -248, 52,162, 40,205,223, 82,154,110,212, 96, 16,214,192, 79, 19, 60,203,194,156,231, 38,224, 10, 84, 85,146,231, 5,158,231, 97, - 91, 46, 91,195, 30,142,227, 48, 26,141,208,245,117, 19,199, 57,163,209, 5, 91, 91, 59,148,165, 98,111,111, 31,128, 31,252,224, - 71, 40,165,248,213,191,251,119, 41,139,148,243,243,115,134,195, 33, 81, 20,177,189,189, 77,146,165, 43,148,232,203,243, 85, 24, -158,189,150,204,102, 51, 92,215, 55, 29,181,186, 72, 12,195,176,163,177,239,213,221,164,140, 40,138,232, 5, 30,190,111, 94,183, - 92, 46, 57, 63, 63, 55, 9, 89, 85, 33,165,233,204,117,193,128,207, 99, 71,173,104,224,175, 49,159,186, 29,234,102, 38, 45,214, -152, 59,215, 41, 82,202, 47,217, 93, 93, 81,223,107, 95, 43,159,185,198,108, 18,151, 89, 41,130, 54, 0,173,237,230, 2,111,223, -180, 70,221, 41,203,178,254,225,155, 41, 94, 87,181,127,175,111, 15,111,122, 77,181, 41, 32,124, 9, 52,251,250,143,234, 6,252, -107,105,107,215, 80,234,158,149,105, 93,183, 24,203,103,160,184,245,134, 76,109, 83, 81,171, 59,213,108,211, 26, 87, 43,200,233, -203,228,104, 93, 81, 79,234,171,188,201,141, 40,253,107,254,255, 89, 12,131,235,180,136, 55, 61,191,254,190, 22,200,182,153,104, -120, 73, 71, 91, 87,132, 18,171,146,180,172,117, 27,214,233,125,174,235,214, 0,171,140,249,124,206,249,249, 57,113, 28,227, 56, - 14, 79,159, 62,101,127,127,159,189,189,189,118, 33,104,125,236,107,165,169, 77, 73,201,230,223,122, 93,183,162,233, 58, 93,163, -220,165, 87,117,167, 95, 52,192,183, 62, 94,155,140, 64,218,243,230,170,171, 23,107,252,123,164,224,232,232,152,183,126,252, 14, -203,229,178,158,169,154,121,241,123,239,189,199,246,238, 22,247,238,189,204,116, 50,199,247, 67,178,180,224,243,207, 31,243,210, -221, 87,121,231,237,119,241,253, 16,129,133, 31,244,136,162,132, 48, 12, 89,204, 51, 44, 39,228,253,247, 62,197,119,253,122, 86, -239,243,241,195,199,236,222,216,227,222,171, 47,113,118,118,204,211, 39,143,176, 45, 65, 24,184, 12,135, 67, 99,194, 34, 5,143, - 30,125, 70, 20, 45,185,119,255, 46,175,189,126,159,237,126,159, 39, 71,199,248,174,139,235,248,168,170,162,204, 51, 92,199,225, -244,108,206,173, 91,135,248, 94, 64, 94, 46,217,217,217,225,236,124, 66,156,102, 76, 31, 61,162, 40,115, 60,223, 71,104,193, 27, -111,188,193,237,195,219, 0,244,195,144,147,147, 39, 36,105,196,173, 91,135,132, 97, 15, 41,109,206, 71, 19,148, 82,244,251, 3, -194,126, 15,161, 11,164, 52, 45,254,243,243,115, 70,163, 51, 16,138,178,202,137,147, 37,203, 36,198, 93,206, 72,211,148,101, 44, -201,210,130,237,237,109, 28,199, 97,103,103,135,119,222,126,139, 44, 79, 89, 46,151,109, 50,208,128,224,178,204,104,208, 7,129, -111,128,102,101,193,193,193, 1, 69,225,115,124,124,204,196,115, 80,101,101,170, 83,105, 35, 37,236,237,237,179,179, 51,196,113, -108,102,179,139, 22, 56,168, 20, 84, 85,129,193,165, 85,109, 72,121,227,141, 55, 8,195,144,233,116,202,114, 25, 99, 89, 86,157, - 80,164,244,122, 61,122,189, 30, 85,165, 25, 12,182, 24, 14,135,109,178,123,113,113,129,227,120,220, 60, 56,228,248,248,152, 47, - 62,127,204, 47,254,226, 47,146,101, 25,113,108,230,248,223,249,206,119,248,232,225, 3, 62,254,248, 99,206, 78, 78,152,207,231, -252,236,253,119,185,123,247, 46, 74,149,220,186,117,139,173,237, 93, 54,249, 31, 54,169,124,146, 36, 28, 29, 29,181,212,102, 85, -229, 20, 69, 65, 24,244,141,219, 94,150, 34, 37,228,105,138, 42,115,163, 43, 16,149, 4,129,223, 94,179, 23, 23, 23,196,105, 66, -169, 42,108,105,215,180, 75,211, 85,185,116,105, 92, 93,195, 26, 31,117, 35, 5,219,137, 11,122,117, 52,169,219,201,247, 6, 44, -208, 11,116, 48,175, 91,223,158, 7,158,190, 52,100,185, 38,206,172, 96,146,196,138, 93,110,183, 48,211,250,234,186,100, 55,244, -133, 70,132,160, 25, 3,118,209,152,102, 33,108,228, 59, 87, 39,135, 95,150,247,221,242,129,219, 54,180, 94, 65, 73,111,114, 89, - 91, 55,178,170, 58, 11,164, 82,171,149, 73,115,175,245,243, 65,107,173, 39,186,126, 70,203,180,179, 51,175,216,203,138,166,165, -126, 61,192,237,186, 76,178, 11,180,216,196, 47,109,254,110, 47, 6,189,233,164,211, 87,212,195, 36,181, 81, 78, 3,246,234,236, -207,202,184, 55,215,149,190,190, 34,110, 83,213,205,219, 46,246,192,126, 6,128,174,130, 14,130, 91,182,110, 82,162, 35,127,100, -124,211, 55,104, 90, 55, 13,173, 53,233,212,198,175,186,197, 44,172,204,167,197,202,152,163,235, 13,221, 32, 83, 45,203,194,239, -245, 8,131,128,197,114, 73,150,101, 80,183, 51,179,252, 82,253, 75,107, 77,169,138,118, 30,111, 42, 11,181, 74, 61, 65,183, 21, - 82, 87,115,125, 83, 93,220,133,215,154, 22,159,108,125,165,215, 44,100, 86,175,145,142,163,155,169, 10,196,181, 0, 80,221,153, - 84,181,254, 11,181,161,146,106, 76, 62,218,129,146,249,190,192, 11,152,206, 30,243,214, 91, 63,229,193,195,135,244,122, 1,251, -251,251, 4,253, 33, 71, 79, 71,188,243,103, 31,160,197, 15, 73,162, 20,105,217, 68,139,152,123,247,191,194,222, 94,202,108,158, -240,254, 7,159,146,231, 57, 47,191,250, 26,111,190,249, 38, 31,126,248, 33, 91, 59,123,156,159,143, 56,188,125,155,104,190, 64, - 72,201,249,120, 66, 56, 8,248,218,215,190,198,251, 15, 62, 96, 52, 62,193, 18, 10,215,246,176,157, 30, 69,165, 9,108,151,172, - 40,249,236,139,207, 89,196, 49,135, 55,111,144,197, 9,145,210, 60,125,114,196,254,254, 1,176,172, 57,184,112,112,112,192,141, - 27,187, 0,188,255,238,123,220,186,115,155,191,250,157,239,240,189,239,255, 41,143, 30, 61, 98,127,111,155, 82, 43,126,249,151, -127,153,170,210,173,137,172,239,251,248,190,195,227,199,143,113, 92,171,237,228, 12,135,125, 84, 5, 69, 85,225, 58,190,169,212, - 61,159, 94,207, 67,171,146, 71,143, 63,103,190,152,226,186, 54,160,216,221,221,198,118,125,170,170,226,191,253,251,255, 13,191, -240, 11,191, 64, 85, 40, 62,250,232, 35,126,235,119,126,155,163, 71,143, 9,195,144, 87,239,223,227,240,240,144,147,211,227,182, - 99,244,198, 55,190, 65,175,215,227,173,183,222, 34,138, 99, 92,215,229,240,240,128,195,195, 67,118,118,182,112, 44,205,197,104, -140,227,120,244, 92, 83,169, 54,109,109,207,243, 72,211,140,163,163, 35, 94,126,249,229,182,181, 94, 85,206, 21, 71, 77,215, 53, - 51,239,197, 98, 65, 28,199,220,186,117, 11,223,247, 91, 69,189,131,131,131, 58,153, 11,218,182,253, 98,177, 96, 60, 30,243,242, -203, 47,211, 11, 3,132, 37,217,222,222,102,116,126, 65,165, 12, 46,229,214,173, 67,254,248,143,255,132,126,216,227,226, 98,202, -191,248, 23,255,146, 87, 95,125, 25, 33, 4, 63,250,225, 91,104, 42,162, 40,226,215,127,253,215, 55, 20, 50,151, 74,117, 81, 20, -241,244,233, 9, 89,102,152, 40,149,174,173,124, 45,139,170, 40, 72, 18,195,166, 72,210, 8,219,182,145, 82,178, 88, 44,176,109, -155,126, 95,178,183,119, 3,171,230,101,107,203, 66,104, 40,138, 12, 93, 41, 44,207, 70,149,250,218,248,179, 14,124, 91, 41, 60, - 58,172,159,134,214,182,105,166,222,202,128, 43,189,217,229,177, 1,202, 10,179,238, 90,181,136,207,122,253,120,173, 99,222,218, -231,174,255,221,234, 15,118,121,234, 82,212,227,102,227,175,222, 48,210,218,160,126,114,118, 90,247,225,107, 93,110, 20,174,235, -224,212,126,183, 90, 87, 53,144,195,105, 1, 72,166, 66,182,235, 5,209,144,225,171,210,240, 54,173,122, 1,109,184,147, 40, 93, - 31,172, 26,141,220, 72,249,105,179,192, 91,218,194,178, 28,180, 80,148,170, 50, 1,187,158, 51,148, 69,133,231, 56,102,102,216, -242, 10, 21,150,208, 84, 52,138, 87,194,240, 48,107,255,107,129, 85,227, 3,228, 37,221,226, 25,125,244,110, 6, 36,116,167,125, -223,182,236,197,149,153,244,170,126,188,190, 34, 92,210,232,122,179,146, 73,109,146, 1, 85, 87,196, 98, 52, 87, 29,202,186,218, -224,171,207, 41,211,127,110, 56, 27,221, 64,209, 9, 2,205,143, 93, 7, 52,174,159,108, 93,128,163,176,106,207,120,203, 90,145, -135, 20, 29,164,189,236,162,178, 55,248,160,105, 97, 44, 22, 55, 7,245,122,182, 45,175,162, 63,233,240, 57, 87,252,224, 27,218, - 70,171,150,101,108, 92,149, 86,216,142, 71,169, 97,119,111,159,151, 94,126, 25,223,113,169,132,228,236,233, 9,194,118, 76,114, - 99, 91, 84,186, 68,105,141,227,217,166, 53,169, 58, 1,183,227, 11, 47,197,186, 21,199,213, 14,135,181,166, 9,112, 69, 24,250, -210,221, 98, 35,110, 0, 26, 36,190, 81,189,210,157,202,188, 9,214,150,101,140, 48, 68,123,177,215,192, 75, 41,113,164,185, 94, -205, 28,214, 65, 97,161,235,155,229,120,252,244,167,239,114,124,124,204,135, 31,126,200,195,135,143,184,243,210,107,108,109,239, -240,224,163, 79, 72,143, 46, 76,176, 21, 33, 65, 16,178,189, 27,114, 62, 26,241,250,215,223, 96,107,103,155, 15, 62,120,128,148, -146,237,253, 3,180,214,124,237,235, 95,229,108,116, 74, 81,229,104, 52,123,251,123, 44, 22, 51,194,237,144,147,179,167,188,252, -250,171,124,229, 43,175,240,224,227,135, 60, 61,121,140,239,187, 20,133, 38,180,109, 46, 38,115,246,191,246, 53,158,156,156,242, -224,193, 3, 10, 85,225,216, 30,182,180, 24,159,143,208,219, 91, 12, 6, 3,182,118,183, 73,211,148, 50,203, 41,114,131,178,118, - 45, 27,215,182,136,166,115, 62,125,248, 9, 47,221,188, 77,182,156,242,183,254,198, 95,230, 31,254,163,255,129, 56,205,248,230, -155,127,129,223,255,253,223,231,255,252, 63,254, 21, 23, 23, 23,188,242,202, 43,160,183,233, 15,130, 22, 11, 52, 12,135,252,131, - 95,251,239,248,189,223,251, 61,126,239, 15,254,144, 55,223,124,147,255,229,127,253,159,233,185, 14, 63,248,225,127,226,143,254, -232,143, 72,227,168,174,150,119,185,123,255, 30, 73,146,240,143,255,241, 63,230,205, 55,223,100,107,107,139, 40,138, 24,134,125, -126,242,246, 15,232,123, 22,131,158, 75, 20, 37,204,103, 19,230,179, 49, 55,110,220, 96, 52, 26,241,171,191,250,171, 12,182,134, -252,248,237,159,144,230, 25, 69, 85, 98, 9, 73, 47, 8,233,247, 3,182, 6, 33, 63,255,173,111,240,227, 31,255,152, 48,216, 38, -175, 20,135,187,187,166, 85,127,251, 54,126,216,231,201,211, 79, 81, 66,162,132,164, 63,232,115,113, 49, 98, 25, 71,132, 97,143, - 36, 73, 40,203,146,219, 55,111, 50, 24,132, 60,121,124, 76,180, 88,178,183,179,203,214, 96, 72,158,231,132,189,128, 91, 55,111, - 49,155,205,184, 24,143,177, 15, 44,118,118,118,152,207,231,124,241,217,231, 12,251, 3,194, 48, 52, 73,112,232,179,183,183,195, -231,143, 62, 35, 12, 67,238,222,189,203,209,241, 19,250,195, 1,182,180,248, 43,127,245,175,241,214, 91,111,241,254,135, 15,216, -221,222, 97, 56, 28,114,239,222, 61,198,103,231,156, 31,159,113,255,254,125,202,178, 36,201, 82, 28,207,163,212, 26, 85, 25,253, -131,188,170, 40, 84,197,100, 54, 35, 8, 2,178, 56, 35, 79, 98,118,183,183,136,162, 5, 89,150, 17,132, 62,139,197,194,116,221, - 74, 77,158, 22,100, 73, 78, 26,103, 38,246,184, 14,170,212,100, 89, 74,208,243, 8, 3,159, 36, 90,182,194, 47,205,202,165,148, - 54,197, 74,103, 70,190, 98, 62,211, 20,124,117,234, 91, 41,163, 85, 47,132, 41, 34, 26, 64, 93,213, 56,213, 9,218, 32,221,104, -217, 75, 46,239, 13,186,174,106, 49, 48,150,180,144, 88,107,227, 88, 5, 66,163,132,106,131,111,227, 88, 39,132, 52,203, 55,171, -110,146, 85, 45, 40,164,154,106,174,246, 2,160,249,126, 93, 23, 87,168,141,157,112,235,239,255,215,127,247,159, 41, 3,171,160, - 44, 11,146, 56, 34,203, 82,202,178, 36,207, 13,104, 69, 85, 21,121, 89,144,101, 25,121, 94,182,213,177, 22,180,139, 98, 67,187, -176,234, 10, 95, 85, 80, 86, 5, 65,175,215,201, 52, 75,164,201, 1,234,172, 10, 92,203, 69, 34,169, 84, 69,165,149,201, 70, 44, -176,164,133,101, 91, 70, 41, 71,107,164,170, 13, 83,132,249, 49, 66, 84,104,161,113,164,211, 86,220,166,187, 96, 4, 70,148,170, -106,246,144,120,102, 80,111, 45, 65,105,184,191,141,196,169,168,233,108, 98,197, 54,181, 13,232,173, 26,154,110,103, 97, 77,246, -188, 98, 78, 34,100,123, 0,187,207, 25, 13,244,213,106,109, 83,171, 91, 10,187, 61,241,204,173,230,102, 10,105, 0, 37, 82, 55, -118,105,141, 46, 97,203,199,110,168, 94,210,186, 4,216,200,218, 1,171,121,222,182, 77,114,102, 53,247,107,183,230,245,221, 91, -227,162, 37, 44, 27,203,114,145,150,109, 94,183,118,111, 73,187, 78, 74,228,138,195, 88,179, 47,180,101,100, 40,133,172,177, 6, - 82,214,254,235,162,189,175, 29, 83, 46,229, 87,155,125,216,156,103, 53, 50,119, 50,155,113,126,126,206,173, 59,183, 25, 14,135, - 6,184,212, 11,120,122,114,138,235, 58,244,135, 67,250,253,144,178, 82, 40, 85, 25, 32,148, 82,245,254,108,142,137,181,113, 59, -155,253,221,238,119,121,121, 12, 88, 51,163,121,214,109,253,220, 64, 10, 20, 13,133, 77, 24, 32,103, 11,113,171,147,157,202, 36, -166, 82, 74, 35,108, 34, 12, 47,191, 84, 21,101,158, 83,230, 9,158,235,128,176,201,114,133,235,247,209,194,226,236,124,194, 91, -111,255,132,223,249,173,127,207,197,120,194,214,246, 46, 7,135, 55, 25, 79,230,156,143,199,148, 72,158, 28,159,178,187,125,131, -157,237, 61,142,142,158,178,179,179,199,193,225, 33, 31,127,246, 25, 23,211, 9,179,249,156, 59,119, 95,226,165,251,119, 41,138, -130,199, 71,143, 77, 55,196,182,176, 45,139,188,204,248,252,232,115, 94,249,202, 43,220,186,125,147, 7, 31, 61,224,252,252,140, -189,189,221,182,203,167, 17,248,189,128,209,248,130,143, 63,249,148, 94, 96,146,136, 44,203, 56, 60, 60,224,141,215, 94, 99,255, -198, 30, 81, 98,218,171, 69, 81, 50, 28,110,213, 64, 49,205,246, 96,139,243,179, 17,174,229,180, 98, 61,131,173, 1,139,229,146, - 79, 62,253,132, 47, 30, 61,230,119,255,253,239,240,211,159,188,195,222,222, 46,243,249,140,251,247,239,177,179,179,195,157, 59, -183,153,205,102,236,238,238, 50,159,205, 57, 61, 61,101, 52, 26, 49,232,135,216,150,228,157,183,127,204,241,147,199,252,224,135, - 63,224,139, 47,190, 64,105,141,235,185,128, 48,251,183, 44, 73,211,148,119,223,125,151,239,125,239,123,252,201,159,252, 9,239, -253,217,187,188,253,214, 91, 20,105, 70,156, 38, 72, 33,120,245,213,175,176, 61, 28,176,187,179, 77, 85, 22,148,170, 34,138, 98, -126,252,214,219,140,198, 19, 92,207,227,198,254, 62,190,231, 50, 30,157,179,183, 51,164, 42, 50,166,147, 41,131,193, 54,121, 89, - 94,202,152, 42,152,207,230, 76,167, 83, 19, 36,164,197, 75,247, 94,226,224,224,144, 36,137, 73,211, 12,223,247, 24, 14,135,236, -221,184, 65,145,230,102,123,235,109,109,197,120,234, 96, 54, 30,143, 73,211,148, 6, 59,149,231, 57,139,197, 2,223,247, 9,194, -128,249,124, 74,146,166,248, 65, 15,219,113,216, 26, 12,217,222,222,198,118, 44,182,182,182, 72,226,132, 94, 47,224,229,151,239, - 51, 26,141, 17, 66,224,121, 62, 39, 39, 39,220,189,125, 7, 93, 84,252,240, 79,255,148, 82, 85,220,127,249, 62, 69,169, 40,202, -130, 48, 12, 81, 2,142,143,143,121,252,248, 49, 69, 94,154,110, 89, 98,198,100, 55,246,118, 73,210,148,188, 72, 1,152, 78,167, - 38,137,149,102,124, 16,134, 33, 97,216, 39, 75, 50, 38,147, 17,223,254,246,183,217, 59, 56, 32,137,150, 36,177,193,202,152,206, -134,219,206,165, 69, 29,148,215,177, 39,171,157,175, 53, 89,112,125,213, 36, 71,172, 43,244,233, 78, 85,173, 47,221, 26, 27, 6, -142, 37, 36, 82,218,181,138,163,233,152,233, 22, 21, 94,219,141, 11, 93, 19, 97,140, 48,137, 82,181, 96,150, 22, 43,223,183, 46, - 91, 46,196,101, 28,186,122, 47, 87,100,166, 91,237,247,162,168, 40,138, 12, 91, 26,244,161, 37, 61, 92,207,208, 75,170,170,160, - 84, 10, 44, 1,149,166,170, 74,148, 46,112,221, 10,187, 40,161, 6, 45, 8,203,105, 23,172, 70,173,200,178, 28, 92,219,162,172, - 52, 74,171, 75,245,156, 90, 24, 64, 8,163, 49, 93,149,149,105,123,202,154, 54,129,162,172, 42, 42,101, 90,165,174,112, 55,183, -174,133,117,185,115,181,108, 3, 96, 51,167, 23,181,218,153,210,138, 47,251, 79,211, 53, 68, 89,159,215, 95, 6,250,110, 5,126, -165, 82,215,235,243,213,171,149,182,104,252,129,197,213,217,104,119, 38,187, 58,226,232,126,159, 6, 97,175,156,184,154,205,218, -237, 90,200,141,227,146,231, 42,230,233,103,200,167,114, 85,150,118, 83,230,116,221,119, 88,141,160, 74,119,118,254, 28,160,201, -186, 14,188, 20, 22, 73,146, 19,197, 41, 26, 73,216, 31,226,184, 62,149,170,209,180,190,199,104, 60, 38,236,247,113,253, 61,164, -109,129,212,216,142, 67,149,169, 21,237,254,231,113, 83, 55,238,135, 23,208,246,127, 38,226,178, 94, 84,228,134,241,184, 80,151, - 64,159, 6, 24, 68,157,224, 89,210, 54,137,154,176,201,203, 18,141,233, 86,156,158,158,242, 59,191,251,251, 60,120,248, 9,203, -101,140, 16, 22, 95,251,218, 27,156,159,159,243,225,251, 31, 96, 57, 54,101, 94,160, 69,193, 43, 47,221,161, 42, 42, 62,120,239, -167,124,243,205,111, 17, 69, 17, 15, 62,124, 15,199,117,145, 90,241,243,111,126,139, 94, 47,228,201,147, 39, 40,165,216,221,221, -229,236,204,204, 86, 95,122,233, 37,170,170,226, 27,223,248, 6,219,219,219,124,246,217,103,204,231,115,124,223,167, 40, 10, 92, -215,101, 54,155,177,183,183, 71, 28,199, 28, 31,155,214,244, 96, 48, 96, 58,157, 18,167, 41,147,201,132, 79,190,120,132, 99, 9, -230,203, 37, 7,135, 55,152,207,150, 28,159,156,209,243, 60, 94,187,255, 10, 31,127,254,152, 69,253,185,199,103, 35,158,156,143, -248,214, 95,248, 38,105,161, 40,180, 32,157,205,121,239,189,159, 1,112,247,238, 93, 44,199,101,184,189,131,101,185, 80, 85, 45, -240,171, 80, 21, 31, 60,124,192,206,206, 14,174,239, 17,103, 41,159,126,241, 57, 31,125,244, 17,121,158,147,101, 25,165, 86, 36, - 89,134,235,106,210,243, 9,121, 89,240,232,241,111,146,166, 41, 85,173, 30, 23,250, 61,242, 60,231,198,238, 30,227,241,152,157, -157, 61,230,203, 5,195,126,200,193,205, 91,196, 89,202,247,191,255,125,246, 15, 14, 65, 10, 14,111,221,164,168, 42, 70, 23, 23, - 8,177, 67,224,249,100,105,193,232,244,152,251,247,239,243,254,251, 31, 83,150, 10, 41, 45,122,189, 30, 89,148,183,199,218,243, - 60,230,147, 57,239,254,228,207,232,245,122, 44, 22,115,188,160, 71, 16,244, 73,211,148,211,211,115,116, 81,178,181,181,133,231, - 59,181, 57, 77,134,210, 37, 58,213,164, 89,108,174, 17, 11,162,120,193, 50,154,215,177,169, 36, 47, 52,243,249,180,197, 76,229, -121,142, 82,138,249,124,110, 58, 1,149,161,134, 38, 81,204,217,217, 25,119,238,220,106,215,131, 40,138,232,247,251, 76, 38, 19, -164,128,163,167, 39, 96, 59,184, 65,200, 96, 48,192,241, 92, 78, 62,249,148,147,243, 51,158, 30,159,114,118, 62,166,170, 52,149, -134,188, 42,177, 61, 35, 76,212,116,161,146, 44,163, 44, 20,232, 2,116, 74,154,154,235,217,245, 34, 14, 15, 14, 56, 58,138, 56, - 58,122,194,214, 98,134,101, 11, 6,131, 62,158,231,177, 88, 44, 58,163,179, 23, 68,170,234, 85,238,207, 70,255,140,181, 84, 96, -221,215,164,233, 84, 90, 72, 19, 19, 5,200,122,116, 93, 41,117, 9, 54,183,140, 26,162, 80,230, 24,212,106, 39,198,148, 7,163, -130,184, 70, 51,231, 63,207,181,189,110,191,103, 89,110,108, 12,133,196,118, 36,170,172, 80,243, 18,161,161, 82, 5,131,193,128, - 30,158, 81,136,170,231,140, 85,165,169,202,138,162,202,169, 16,173,152, 65, 83,221,217,150,107, 84,145, 28, 9,149,194,182, 37, -158,231, 33, 45, 83, 69, 23,101,129, 37, 76,197,135,172, 59,200, 77,130,128, 85,171,239, 8,108, 97,129, 18,151, 66, 47,117, 75, -212, 84,215,102,150, 81, 20,170,157, 67, 54,243,255, 70,250,243,185,139,172,184, 10, 44,219,244,250, 54,152,119, 90,176, 77,165, -248, 60,191,226,103, 33, 35, 53, 2, 45, 21,235, 24,249, 77, 65,188,139, 42,237,218,129,174,100, 29,107,243,253,174,200,139,224, -122, 13,227,245,217,122,215, 21,200, 18,114,163, 75, 80,243, 58,245,156,179, 80, 74,121,125, 96,147,102,222, 44,158,131, 59, 88, -217,127,114,149,135,125,122,114,206,201,201, 89, 43, 52, 19, 69, 17,142, 99, 16,223,113, 28,211,235,133, 76, 38, 99,158, 60,121, - 74, 28,199,220,184,113, 3,191,215,100,247,242, 75, 73,227,110,126, 94,190,216, 90,178,137, 38,168, 59,198, 50, 66,213, 26, 25, -170,109,199,173,143, 71, 76, 7,170, 86,116,180,204, 60,175, 44, 53, 90, 75, 74,165, 41,202,148,217,114,201,217,217, 25,103,103, -103, 12,135,219, 28,222,187, 71, 20, 69,204,102, 51,150,203,165,185, 70,164,192,117, 61,162,249, 5, 18,193, 95,250,246,207,243, -228,201, 19,178,188, 4, 93, 48, 62,191,224,149,151, 95,198,243, 28, 62,253,244, 97, 45, 92,146, 51,157, 94, 96,219,182, 9, 62, -153, 1,133, 13, 6, 3,126,246,179,159,181,163,185, 60,207,217,169,101, 80, 95,125,245, 85,142,142,142, 56, 59, 59, 67, 41, 85, -131,196,204,204,118,107, 48, 96, 30, 45,249,228,211,207,113, 92,139,101, 28,113,118, 97, 20,224,250,193,128, 56, 78,185, 24,255, -148,221,237, 93,102, 23, 19,108,219,102, 26,101,108,239,238,160,132,199,197, 60,161,228,140, 32, 8,184,121,120, 27,219,182,121, -252,248, 11,110,236, 29,112,126, 54,198,117, 13,122,218,113, 93, 38,147,137, 89,151,106, 69,183,233,108,134, 86,138,155, 55,111, -114,126, 54,166, 23,110, 97,187, 70,158, 53,203, 21,210,246, 73,210,148,178, 52,141, 18,199,233,225, 57,194,240,218,203, 18,223, -235,131,112,144,150,215, 22, 54, 85,101,148,228, 46,198, 19, 16,146,162, 22,240, 57, 31, 93,240,228,228, 41,187,187,187, 28,238, -239,113,118,118, 70,145, 44,185,185,191,203,221,187,119,121,251,173,119, 91,229, 62,128, 36,142, 91,165,196,217,108,102, 2,251, -108, 89,175,169, 46,121, 86, 48,157,206,137,162,200,140,152,202,188,149, 72, 46,235,138, 63,207,205,154,238,251,126,139, 25,153, -207,231, 70,226,182,102,129, 56,142, 99,186, 45,121, 14,194,204,190, 45,203, 66,106,136,227,216, 80,185,148,194, 18,146, 56,142, - 25,141, 12, 79,253, 23,191,253,109,148, 82,140, 70, 35,252, 48,224,199,111,189,141,227,216,216,158,203,131,143, 30,178, 92, 46, - 65, 72, 30, 31, 63, 97, 81, 3,247,206,206,206,112, 28,143, 32, 8, 26,202, 21, 89, 89,144, 87,138, 52, 47,219, 17, 73,119,173, -200,178,140,229, 50,198,177, 76, 5,255,135,127,248,135,140,199,103,252,141,191,249, 95,240,230,155,223, 36, 77,103,117,226, 99, - 63,251,154, 91,195,104,117,215,108, 33, 86,197,234,215,145,242,207, 98, 3,181,154, 18,218,170,187,104,142, 89,103,171,206, 90, - 97,131, 42, 10,211,242, 87, 93,235,233,186,154, 23,250,203, 21, 1, 27,183,169, 67,109,173,223,107,159, 60, 53, 11,226, 32, 12, -233,245, 60,202,162,160, 40,178, 58,232, 10,226,200,180, 71, 60, 87,182,109, 91, 19,120, 77, 43,216, 18,102, 78, 89, 99,140,168, - 84, 69, 20, 47, 77,111,223,178, 8,252, 30, 82,130,155, 43,252,158,219, 6,114,173, 27,129,123, 11, 48,138, 87,121, 89,152,205, -147, 2, 91,154, 4,161,218,232,135, 45, 58, 20, 59, 35, 66,208,206,240,181,110,181,172, 27, 64,198,122, 38,180, 98,205,122,141, -223,182,238, 86,190, 93,240, 90, 3,108,106, 65, 73,122, 99,101,170,175,225, 53,179,209, 47,251, 25, 74,114,172, 83,158, 86,136, - 25,173, 64,104,115,130,138, 90,139,125,133, 22,133, 49,248,232,218,177,182,222,234, 29, 63,249, 43, 6, 18, 93, 62,127,231,249, -238,235, 95,180,243,241,172,142,128, 98,115, 34,162,215, 41,120,221,138,190, 30,185, 60,125,122,202, 98, 97, 42, 7,203,114, 8, -130, 62,150,180,177, 45, 7,223,235,225,216, 46,142,227, 17, 69, 9,139,197,130, 48, 28,224,121, 30,121, 81, 62, 83,184,231,197, - 41,105,214, 51,159,191, 52, 52,218,204, 48,104, 93,177, 58, 45,184, 70, 64, 67,212,231,180,235,186,216,150,139,208, 37,185, 42, -169, 42, 69, 85, 22, 45,202,183, 31, 14,249,232,131, 15,249,191,255,237,111,112,242,116, 4,194, 98,111,111,159, 27,123, 7, 60, -122,244,200,128,168,162,136, 94,207, 44,172,113,188, 36, 94, 76,201,147,152,175,191,241, 6, 95,124,250,129,209, 91,143, 18, 74, -165,249,218,235,175, 35,109,151, 79, 63,121,136, 31, 4, 44, 22, 51,132, 16,236,237,237, 83,213,186,211,113,150,114,231,206, 29, -222,123,239,207,144, 82, 50,153, 76, 8,195,144, 94,175, 71, 16, 4,108,111,111,243,222,123,239,113,126,126,142,214,154,126,191, -143,214,154,139,139, 11, 51,171,223,222,102, 62,159,211, 59,232, 17,231, 37,121,169,144,153,161, 45, 5,129,198,237, 5, 36, 81, -194,100,177,100,178,140,217,191,113,200,157,123,175,113,251,238, 29,118,110,236,241,117,199,227, 98, 50,226,248,241, 19,178, 60, -173,145,214, 41,127,241,219, 95, 97, 58,157,146,149, 73,173,166,104,108, 82,117, 85, 81, 84, 37,147,233,212,252,134, 36,197,178, - 93,118,118,118, 91, 65, 34, 63,232,225,251, 61, 22, 81, 68, 94,148, 12, 6, 67, 46,166, 19, 60,207, 35, 75, 82,226, 36, 55, 85, -155, 45, 25, 79,230, 20,101,197,254,225, 45,146, 44,227,228,228,132,163,227,199, 20, 69,193,206,206, 14,203, 40, 34,202, 50, 22, -113,196, 87, 94,127,141,162, 40, 56, 61, 31, 51,232,185,204, 22, 75,116, 85,160, 42,205,214, 96,136,239, 7, 88,210,166,210,198, -152, 67,218, 22, 61, 63,108,165,102,109,223, 38, 12, 7, 68,209,130, 60, 75,176, 60, 73,208, 11, 17, 90, 98, 41, 97, 89, 0, 0, - 32, 0, 73, 68, 65, 84,225,123, 33,150,128,188, 30,153, 58,142,131, 68, 19,248, 30,195,225,160,165, 47,150, 2,188,122,157, 20, -194, 54,220,112, 75,212,213,114, 69,145,102, 88,190,143,108,176, 84, 21,100, 89, 65, 89,229, 53,224, 45,225,235, 95,255, 58,105, - 86,240,209, 71, 31,113,235,214, 45,126,248,163, 31,145,165, 41,174,231,241, 26, 2,219,113,185,152, 76,153, 45, 34,166,211, 41, - 10,131, 89,201, 10, 83, 0, 22,149,137, 9, 84,138,211,179,115, 51, 78,200,226, 90,216, 76, 18,184, 30,142,231,163,133,108,199, - 5,231,227, 17, 55,110,236, 18, 39, 49,199, 39,167,168,138, 58, 49, 41, 9,130,128, 34, 45,128,106, 69,125,242, 89, 65, 82, 53, -168,247,214,217,238, 42, 30,106,157, 10,119,165, 82,111,198,167, 24,155, 91, 45,141, 41,154,194, 24, 59,181,193, 95, 25,124, 89, - 99,232,164, 91, 40,183,172, 71,182,246, 70,195,179, 23,167,215, 94, 10, 17,117, 95,103, 95, 92, 76, 73,146,136, 65, 24,114,247, -238,109,118,119,140,204,163,208,170,206,252, 74, 44,105,117,190, 68,212,237, 34,137,101, 57, 20, 85, 69, 28,167,196,113,218, 86, - 75, 85,169, 12,215,212,243, 72,189,148, 60,207,234, 11,121,200,238,238,110, 93, 41, 53,136, 95,141, 99,187,216, 64,161, 42,211, -150,208,166, 19, 16,103, 41,174,227, 64,163,236, 87, 87,240,198, 68,165, 54, 12,113,108, 44,203,180,224,181,165,215,172, 1,197, - 51, 43,229, 46, 58, 93,174,207, 79, 54,157, 24, 82,172,209, 9, 58,192,168, 63, 39, 71, 89, 95, 67, 65,123, 94,176,233, 10,150, -108,234, 46,173, 91,155, 42, 46, 81,154, 43, 17,165,163, 31,176,174, 39, 32, 58,248,238,107,117, 3, 94,208,229,238,186,223,164, -132,254,210, 65,245,242, 34, 51,252,234,195,195, 67, 28,199, 97,185,136, 56, 60,184,201, 98,177, 96, 54, 91,176,183,183,131,227, -120,132,129, 9, 40,147,233,133,225, 50,215,248,194, 70,165,170, 97,125, 60,111,159, 63, 43,139,255, 50,219,126,237, 88, 67,233, - 85, 21,170,134,114,167, 4, 69, 85,144, 21,133,169,202,108, 23, 71, 74, 51,110, 87,154, 71,199,167, 28,159,156,147,229, 37,150, -237,226,186, 30,170,130,233,116,206,120, 60, 49, 73, 46,146, 44, 43,112,109, 9,170,194, 17,138,187, 47,223,101, 54, 58,198,183, - 52,163,201, 5, 66,195,157,219,119,176,116, 69,180,156, 50,232, 7,204, 23, 17, 65, 24,178,189,189,141,170, 96, 60, 26,179,191, -191, 79, 89,150,124,240,193, 7, 8, 33, 72,146,132,193,192,240,203, 15, 15, 15,241, 60,143,159,252,228, 39,140,199, 99,124,223, -199,243, 60,163, 16, 87,163,192,171,202,168,154,237,236,236, 80,148,138, 56,142,240,124,215, 40,187, 69,115,150,203, 37,158,219, -195,117, 93,198,163, 25,131,193, 14,113, 86, 48,154,204,232,245,135, 60, 61, 57, 35, 45, 83,210,104,201,112,184,197,226,201,130, -162, 40, 56, 56, 60,160, 44,170,182, 90,109, 12, 78, 28,199,169,193,101, 69,141,120,247,136,210, 4, 53,155,114, 99,103,143,158, - 31, 80,150, 37,179, 69,196, 50, 78, 73, 50, 35, 98,147,166,185, 73,134,155, 0, 87,150,134,139,238,122,100, 89,134,235,120, 40, - 5,167,167,231,204, 46, 38,248, 61, 35,239, 26, 14,182, 72,243, 2, 41,108,250,253, 1, 89,154, 99,219,118,219, 61, 56, 56, 56, -224,254,157,155, 60,250,236,115,131,124, 47, 74, 6, 91, 33,243,165, 1,234, 89, 66, 50,232, 7,244, 2,143,217,116,193,124, 49, -101, 60, 30,227,120,166, 75, 82, 20, 5, 72, 73,150,166,148,150, 64,248, 94, 59,147,111,190, 39, 8, 2,118,119,119,219,209,137, -227, 56,173,230, 60, 64,158,231,196,231,231, 4,225,192, 8, 18,149,101, 59,143,207,178,140, 44,203,204, 44,222, 49,235,199, 43, -175,188, 98,198, 16,245,104,224, 63,252,135,255, 80, 75,226, 22,104, 41,120,255,195, 7, 45,234, 59,205, 51,150,113, 66,208,239, -183,199,161, 40,138,149, 34, 43, 25,229, 20,105, 6,104,202, 42,199,119,141,214,124,105,149,237,235, 77,161, 86, 48, 26,141,144, - 66,183,231, 78, 90,227, 8,146, 36,185,226, 26, 7, 47, 46,158,197, 11, 82,123,175,163,251,130, 25, 53,179,198, 91,111, 92, 76, - 27,223, 5,179, 94,201, 75,150,208,218,250,248, 76, 57,238,103,120,147,172,128,120,187, 65,221,178, 12,200, 34, 78, 83,178, 44, -107,245,135,203,220, 28,212,173,173, 65,171,198, 36,101,221,230, 43, 10,211,118,114, 28,226, 52, 99, 60,153, 48,155,205, 59,237, - 9,171,214, 57, 14, 89, 44,162,246, 96, 26,231, 25, 11,207,119,219,153,186,231, 88,248,190,143,116,108,202,202, 44, 98,158,235, -130,163, 41,179,212, 0,239,180,170,101, 92, 13,168,168,172, 49,218, 13,185, 43, 78, 51,132,176,112, 28, 27,144,100, 69, 86,183, -121,220, 21,235,206, 77,162, 30,114,157,247,174, 55, 4,144,181, 54,114,213, 34,219,171,186,117,252,124, 3,151,231,181,113,175, -158, 65,114,133, 52,117,189, 8,137,188,148,131,237,250,109,119,103,233, 66, 92,138, 25,202,171,173,168, 85,145, 81,177,113,100, -124, 93, 18,241,188,238,243, 38, 57, 88,253,140, 74, 87,175, 33,196,117, 11,131,239,176, 15, 26, 31, 50,173,145,150, 69, 81, 86, - 8,105, 81, 42, 77,146,229, 60,126,114, 76, 28,165,104, 1,182,227,145, 21, 19,130, 32,192,113,189, 58,145,180,112, 92,167,214, - 38, 86,172,155,177,234,103,102,202, 98, 61, 89,126,118,226,214,177, 64, 93,217,161,141, 38,132,110,182, 97, 21,152,211,116,130, -100,173, 75,158, 21, 57, 69, 94,213,213,167, 38, 77, 83,162, 52,227,227, 79,191,224,183,127,231,119, 57, 57, 57, 35,232,245,185, -121,243, 22, 81,173, 43, 94, 22, 19,180,144,140, 39, 83,118,183,183, 40,242,148, 71,143, 30,241,218, 87,238,241,173, 55,126,145, - 50,141, 16,122, 31,173, 53,113,146,178,189,179,207,249,116,202, 39,159, 63,198,114,123,148,121,140,210, 37, 7, 55,110, 48, 91, - 44, 8,195,144,253,253, 61,142,142,142, 76,251,181,166, 78, 53,139,211,253,251,247, 73,211,148,183,222,122,139,178, 44,217,217, -217,105, 3, 65,150,101,120,158,199,238,238, 46,179,217,172,109,207, 91,142, 81,185,179,164,198,150,176,183,213, 55, 64, 45,219, -229,189,119, 63, 52,235,142,101, 49,153, 45,137,227, 24,203,241, 40, 19, 35, 50, 20,250, 62,123,123,123, 4,126,207,116, 95,242, -148,207, 62,251, 2, 33, 52, 73,150, 50, 28, 14,107,233, 86,163,240, 38,132,133,101,187,164, 89, 1,181,143,252,120, 50,161, 23, -134, 8, 91,112,126,126, 74, 20, 69,166, 98, 22,130,101,156,225,216,158, 25, 79, 58,134, 65,161,129,188, 85,138,129,167, 39, 39, -244, 7, 1,123, 7,251, 68,209, 2, 45, 4,174,235,114,231,206, 29, 78, 78,207, 81, 85, 69,127, 48, 48,238,120,182, 69,149, 39, - 20,121,197,217,217,136, 48, 12, 73,163,148,158,237,114,239,238, 29, 30,126,252, 17,101, 94,145, 87, 21, 89,150,152, 4,196,117, -217,222, 30, 50,157,206,233,247, 3, 20,154,209,232,156,126,191,143, 16,130, 56, 78, 40,243, 12,203, 50, 51,121,160,214,243,247, -216,222,222,230,221,119,223,165,170, 42,250,253, 62,253,126,223,208, 28,107,253,254,233,232, 28,132, 69,154,166,109,203,187,168, - 19, 71,128, 48, 52,162, 54,139,197,130,201,116,142,148,146,199, 71, 95,144,101, 25,210, 54, 35, 19,219,117,217,222,189, 65,148, -100,204, 22,115, 35, 35,156,230, 40, 36,190, 31,112,126, 62, 38, 43,114,170,210,124,166,193, 91,213,226, 79, 82, 98, 89,146, 44, -173, 16, 20, 44,163,152,188, 80, 45, 24,204,169, 42, 2,223, 24,246,160,171, 14, 0,205, 4,203, 56,142,113, 45,251,153,235, 99, -179,190, 8,161,175, 25,171, 90,215, 82,153,185,230,202,239, 74,205, 90,210,110, 21, 87,165,148, 88,118,189,246, 42, 69,169,160, -212, 53,166,189, 17,138,209,242, 82,232,109, 3,133,249,138,236,244, 26,229,249,234, 10, 36, 87, 64,118, 0,182,214,154,254, 32, - 96,107,107,139, 94, 63, 96, 25, 69,148, 69,134, 99,217,248,190, 1,187, 20,101,134, 20, 54,142,119,153,101,107, 1,174, 31,224, -250, 61, 28,199,136, 75, 52, 0,185,162, 40, 12, 8, 0,139, 36, 49,179, 26,219, 54,226,251,227,241,132,162, 14,186,174,231,160, - 43,211, 94, 84, 24,127,221, 48, 12,185,121,243, 38,123, 59, 91,244,122, 33, 85,153, 34,180,213,162,204, 13, 25,202, 54,173, 29, - 48,173,196,104,129,192, 98,107,123,128,148,154, 36, 49,159, 63, 28, 58, 27,197, 82,158, 5, 20,235, 50,172,148, 0,202,106,101, -142,210,206,151,107, 95,231,134,111,253,101,131,249,151,159,157,108, 80, 71,234,202,236,174,253, 38,125,229,189,155,249,146,122, -205, 54,244,121,149,246,149, 78,130,124, 49,245,181, 23,249,221, 47,106,132,115,249,185,178,157,217,237,237,237, 35,165,228, 98, - 60,101,116,110,102,191,243,217,178,125, 76, 43, 81,119,153,170,118, 81, 72,146,196,224, 62,214,142,223,159,119,251, 94, 4,155, -177,122, 12, 47, 49, 34,173, 30,180, 90, 93, 70,138,162,172, 89,180, 22,150,107, 27,103,176, 56,229,248,248,132, 39,199, 79,249, -233, 7, 15, 57, 29, 79,217, 63,188, 69, 24,246,169, 10, 69,154,228, 45,239, 25,105,177,181, 99,218,151, 71,143, 62,103,103,216, -227, 91,223,252, 58,127,249, 47,254, 60,182,172,160, 74, 16, 74,145, 85,154, 94,184,197, 60, 74,248,163, 63,253, 17,111,255,244, - 93,166,211, 57, 55, 14,110,225,184, 22, 82, 10,250,253, 62, 15, 62,250,132,163,163, 35,118,118,118, 90, 11,206,139,139, 11, 6, -131, 1,203,229,146,143, 63,254,152,162, 40, 8,130,160, 85,244,115, 93,151,157,157,157,182,202,107, 1, 82, 73,130,143,203,108, - 58, 33,240,109, 6,129, 79,153, 45,153,142, 83,110,236,221,228, 96,127, 7,239,165, 45,148,114,216, 63,188,205,124,185,224,248, -248,152,249, 98,202,225,254, 46,175,190,250, 50, 84, 37, 73, 20,163,148,226,226, 98, 74,191,223,103, 48, 24,240,224,163, 15,219, -224,100, 2,126,222,218,241, 42,165,240, 60,143, 36, 77, 41,242,156, 32,236, 49, 28, 14, 9,251, 1,174,111,102,240,210,182, 9, -189,126, 27, 60, 12, 80,109, 65,154,228,148, 85, 78, 63, 28, 34,109,129,227,184,196, 81,138, 37, 33, 12, 7,244,122, 30, 79, 79, -207,216,219,221, 39,201,115, 28,219, 99, 54, 91,176,187,187, 75,191,223, 39,154,229,220,191,127,159, 44,158, 51, 25,157, 51,155, - 76,184,123,251, 14, 47,191,114,151,167, 39, 79,140, 52,170,235,210,223, 26, 16, 39, 17, 89, 30,115,251,246,109, 28,199,110, 25, - 19,158,103, 51, 24, 12, 24,143, 70,220,185,247, 18,243,185, 41,168, 26,211,149,233,116,202,214,214, 22,183,111,223,230,230,205, -155,173, 9,203,238,238,110, 43,154,179, 92, 46,153,204,166, 80,131, 48,165, 52,179,243,166, 66, 6,163,243,127,227,198, 13, 28, -199, 33,203, 50,198,227, 49,159,125,246, 25,189,158, 73,162,118,246,246,168, 52,124,246,197,163, 22, 72,153,213,202,111,150,101, -241,201, 39,159,144, 21,121,219,189,109,206,125,215,117,205,168,160,215,195,182, 77,114,101,216, 86,185,209,132,119, 93, 44,203, - 56, 11, 70, 81,140,239, 59, 70, 95,160,150,155, 53, 58,248, 60, 83,205,242,234, 99, 87,245, 79,186,174,107,215,117, 72, 47,181, -246,185,210,138,215, 90, 48, 30, 79, 40,149, 66,162,144,142,196,117,109, 44,187, 6, 64, 87, 26,219,118, 77, 50, 41, 29, 44,171, - 97,211, 88,151,237,248, 14,218,125,157,114,188, 9, 13,127, 37,168,235,171, 60,125,235,239,252,202, 95,252,103, 73, 26,115,243, -240, 16,215,181,205, 60,221, 22,196,113,132,194, 80,195,148, 42,177, 28,155,162,200,201,178,148,188,200,169,170,146,254,112, 64, -146,230, 88,182,141,239, 7,248,126, 15, 75, 26,103, 31, 93,195,246,109,199,197,243, 77,133,148, 21, 70, 98, 81, 11, 97,168, 69, -101, 69, 89, 21, 8, 41,153, 92,204,209, 64,154,230,166, 10, 89, 70, 20, 89, 66, 28, 47, 89, 44,230, 36, 89,194,116, 54, 37,203, - 11,146,172,160,215, 31, 24,133,163,247,222,227,228,233, 9,113,156, 34,133,100,177, 88,242,248,241, 17, 69, 97, 20,143,148,210, -228,121,129,214, 16,134,125, 60,207,167, 40, 74,242, 60,107, 51, 57, 41, 45, 51,167,172, 20,210,178, 65, 74, 52, 2,105,153,121, -136,223, 11,136,226,132, 71, 71, 71, 44,151, 17,190,223,163,170, 20,167,167, 39, 4, 97,128,227,152,147,176,170, 20, 69, 81,178, -181,181, 77, 85, 41, 99, 15,168,193,182,157,214,144,161,235, 30,102, 48, 3, 13, 87,178, 70, 70,118, 60,250, 86,104, 80, 82, 55, - 83, 27,163,103, 47,205,246, 53, 51, 50,203,178, 59,252, 71, 97, 40,101,150,213, 86,124,155,171,100,209, 34,240,187,237,224,102, - 91,155,139,179,155,153,118, 21,228,106,155, 63,131,143, 80,186,165,107, 52, 55,209, 42, 79,203,154,247, 45, 90, 60, 68, 99,251, - 99,217,151, 84, 57, 67, 1, 20,181,131,175,110,103,254,101,105,122, 51, 90,105,202,162,196,177, 29,164,101,142,245,217,211,115, -108,203, 33, 77, 76, 59,116, 62, 93, 80, 22, 21,190,215, 67, 32, 89, 46,150, 88,150, 36,207, 50, 4,154, 48, 8, 24, 14,134, 84, -165,145,156, 20,104, 83, 49, 72,171,133,189, 54, 28, 87,173,180,161, 36,182,255,117,221,240, 86, 31, 19,215,101,247,141,101, 98, -179,143,187,251,185, 14,235, 18,137, 82,218, 92, 11,212,115, 56,109,180,173,203, 74,225,121,230,124,139,162, 20, 75,186,104, 4, - 63,250,225,143,249, 87,255,215,191,102,153, 20,236, 31,220,196,247,122, 92,140, 46, 24,143, 70, 84,149, 66, 11,147, 16,244,130, -144,243,243,115,102,243, 25, 7, 55,246,216, 26,246,160,204,249,202,203, 47, 97,169,156, 42, 95,162, 85,110, 36, 73,147,136,188, -172,248,240,193,135,156,157,143,121,237,245,175,242,248,201, 19, 92,215,103, 48,220,226,163, 79, 63,229,233,241, 73, 91,193,105, -173,153, 78,167,220,187,119,143,249,220, 80,198,128,150, 90,101,219,246, 10, 48,169,105,131, 43,101,146,119,199,181,240, 60,151, - 50,143,145,186,226,151,126,225,155, 36,209,140, 95,250,249,159, 99,103,123,139,167, 79, 79,240,252, 0,180, 36, 43, 11,102,147, - 25,182,132, 34,207, 24,132, 61,110, 29, 30,112,113,113, 65,146, 36,166,154,174,197, 75,148, 82,100,185,161, 78,165,169, 81,123, -171,180,194,170, 5,136,164,101,209, 11, 2, 16,144, 36, 17,179,249,148,189, 27,123,216,142, 69,191, 31, 82, 20, 57, 66, 11, 84, - 85, 81,228, 57,121,150, 81,212,173,251,172,204,241, 3,191,246,193, 22, 28, 29, 29,113,235,230, 77,118,119,182,235,196, 38, 66, - 72,193,116, 50, 35, 28, 12, 40,139,138, 52, 75, 13,133, 44,232,177,152, 92,224, 57, 22,161,239,241,209,195, 7, 4, 61, 31,199, -177,233,247, 67, 70,163, 17,182, 35,185,152, 92, 48, 62, 31,145,103, 41,105,150,162, 84, 69,127, 16, 50,157,142, 1, 69,145,103, - 68,203, 25, 66,152,115,180,177,103, 61, 61, 61,109, 43,244,241,120, 76, 20, 69,173,248, 76, 3,180,244, 60,143,139,139, 11, 0, -122, 65, 15, 33,140, 5,113, 19,204,155,100,215,200,183,246, 72, 83, 35, 47,124,124,122,194,227, 39, 71, 32, 36, 65,216,167, 23, -132, 40,165,121,250,244,204,204,192, 29, 23, 81,175,163,163,209, 24,207,243,152, 78,167,216,150, 69,180, 92,214,198, 59,198,251, -189,233, 6, 24,218,162, 1,201, 89, 53,141,180,223, 31, 24,206,186,227,224,251, 30, 90, 25,252, 72, 85,148,228,121,194,207,253, -220,207,113,112,112, 3, 93, 86,148, 69,142,109,137,214,211, 67,116, 40,100,173, 88, 84, 87,182, 22, 81,183, 22,205,189,144, 86, - 75, 17,190,170,196, 81, 51,219, 59,207, 53, 70, 59, 74,105,226, 56, 97,185, 92,114,124,114,206,120, 50,225,233,201, 19,110,221, - 57, 68,163, 40, 85, 65, 81, 22, 84, 74,145,102, 57, 73, 82, 32, 45,155, 94, 16, 32, 45, 11,141, 50,107, 79,221,213,166,166, 26, -139, 6,179, 38, 37, 53,207,183,126,220,220, 26,170,176,121, 77,253,152,236,198,136,154,166,156, 23,217,138,200,140, 37,180, 81, -100,242,106,154, 90, 35,130,225,216, 44, 22, 11, 42, 93,210, 11,204,204, 46,142, 99,242, 66,227,120,126, 91,193,163,101,157,105, - 89,173, 75, 16, 24,176,156, 86,162,149,231,212, 90,131,101,218, 71,149, 22,164, 69,137,116,123, 88,150, 77,158, 41, 70,241,152, - 11, 93, 34,200, 65, 27, 4,125, 89,105,242, 66,113, 62,158, 49,216,217, 67, 74,155,197,116, 14, 90, 25, 4,125, 29,140,178,204, -204,235,122,126, 72, 28, 25,234, 76, 28,199,132,161,161, 92,152, 42, 33,170, 71, 10,246,138,142,176, 82,138,162, 52, 52,145,187, -119,239,182, 62,212,143, 30, 61,226,139, 47,190,224,246,237,219,117,219, 43,198,182,109, 70,231, 23, 45,152,164, 9,128,141,127, -117, 16, 4,228,121,222, 62,222, 4,175, 38, 96, 54,175,189, 78,141,111, 69,131,127, 45,211, 84, 74,161,171, 12,203,118, 13, 5, - 79,173, 90,184,170,154, 9, 96,219,238, 70, 74, 88, 55, 19, 93,119, 18,107,146,143,102, 91,215,129, 27,221, 4,160,113,142,218, -212, 77,216,148, 44,172, 35,226,149,170, 54,226, 29, 44, 41, 77,187,179,222, 71,205, 44,174,105,223,229,181, 58, 92, 85, 85,245, -111, 52,251,180,217, 11,141, 84,102, 3, 30,242,125, 89,183, 23,171,150,107,175, 81,164,169,209, 12,111, 62,191,107,115,249, 60, - 16,203,139,204,225, 54,101,248,221,199,139, 44, 55, 99, 28, 33,176, 45, 23, 41, 4, 85,101,248,243,158,239,226, 1,147,217,162, - 5,125,253,217,187,239,241,193,131,135, 60, 61, 62,229,165,123,175, 82, 89,110,109, 24, 82,116,156,169, 42,132,237, 16, 14,134, -140, 47,166,244,130, 62, 65, 24, 34, 41, 72, 19, 3,182,210,170,160, 42, 10,138,100, 78, 16,244,112,106, 29,131, 34, 43,176, 45, -193,225,225,126,139,129,201,203,130,147, 79, 62,225,108, 60,102, 56, 28,214, 85,177,169,206,111,223,190,205,124, 62,103, 54,155, -161,148,170,175,119,216,217,217,225,224,224,128, 44,203,152, 76, 38,237,104,207,247,253, 22, 68,155,231, 57,201, 50,162, 72, 19, -182,182,251,120,150,224,213,187,183,217, 10,125,150,113,142, 46, 82, 38,163,115, 44,119, 64, 20,155, 10, 89,149,154, 44, 93,178, -183,125, 15,215, 22,220,127,233, 14,139, 40,226,195, 15, 31, 50,159, 79, 25, 14,183,145,242,146, 9,211, 80,176,116, 76, 13,166, -180, 90,159,243, 40, 90, 98,219,146,229,114,206,147, 39,143,217,223,223,175, 53,210,157,182,133,173, 20, 68,113,142, 84,181, 39, -189, 37,107,234,215,172, 69,157, 39, 89,202,158,189, 77, 16,152,217,252,114,185, 52,114,173,105, 86,207,127, 13, 15,219,177, 37, -195,225,208,176, 1,242, 1,247,238,220, 53, 21,120,221,237, 26,110, 15,121,242,228, 24, 33, 52,158, 95,219,154, 86, 70, 30,118, - 60, 62, 39,203, 18, 92,215, 38, 47,140, 92,111, 81, 24, 32,219, 98, 81,181, 66, 50, 39, 39, 39, 43,242,170,121,158,115,118,118, - 70, 24,134,148,165,113,197, 59, 63, 63, 55, 24, 8,215, 33,138,205,120,196,152,165,168,154, 31, 30,182,231,146,235,186,156,158, -158, 50,158, 78, 24, 14,135,220,190,109,100,120, 71,163, 17,139,104, 73,208, 31,154,113,109, 61,147,111, 60,227,163,249,130,229, -114, 73, 22, 39, 88,174, 67,145,230, 20,202,116, 17, 14,111,222, 52,199, 32,141,121,245,229, 87,140,130,156, 48,221,155,217,108, - 70,150,101, 12,251, 3,138, 44, 67, 2,142,231,145, 37,102,189,189,121,243, 38, 66,105,242, 34,187, 34, 81,190, 42,168,245,229, -186,110,215, 90, 91,215,146,210,205, 58,215,104,234, 59,142, 67, 56,216,162,208,146,188, 40,200,179,144,151, 94,190, 15,118, 93, - 21, 40, 13,194, 37,155, 71, 36,177,137, 51,150,180,169, 84,217,142, 20, 87, 92, 31,255,188,236, 27,196,149,248, 97,187,174, 75, -146, 36,237, 69,208, 44,164, 6, 65, 94, 25, 52,117,221,182,202,178,140,101, 28,181, 11,116,145, 22, 88,182, 15,170, 66,171, 10, - 42, 51,183, 82,165,153,161,148,121,106,220,144,180,139, 16,118,125, 16,244,202,188,195,243,124,148,150,196, 73,129, 82, 9,158, -103, 16,241,186,210, 84, 89, 74,191,239, 96,236, 34, 77,182, 67,169, 88,198, 17,185,146,108, 13,119,112, 93,223,100,172, 90, 51, -155, 47, 76, 64,176,205,236,127,182, 88,178,140, 19,242,162,162, 40,149, 57,129,107, 64, 73,131, 10, 85,101,217, 82, 65, 60,207, -171, 61,182,141,149, 98,169,105, 47,212,233,108,129,180, 28, 92,199, 71, 43, 51, 27,105,218,122, 73, 93,245, 55, 65,240, 70,165, -113, 60,139,170,110,111, 55,226, 18,102, 86, 84, 7, 49, 11,148, 86, 45, 5,109,211,130,175,181, 54,156,211, 53,105,200, 38,152, -182, 46,105, 43,237, 36, 83,173,219,205,251,139,188,149, 17,221,196,249,182, 44, 11,107, 45,200, 55,179, 30, 89, 47, 14,141,216, - 76,183, 98,239, 6,230, 75,169,213,205,237,171,245,160,222,189, 87, 74, 92,121,190, 65,233, 91, 53,250,219,182,109, 84,165,234, - 0,110, 83,106, 69,158,151, 88,194,166, 42, 20,158, 99,163, 69, 73, 85,148,181, 86,141, 32,175,181,224, 61,207, 67, 10,129,227, - 88, 72, 76, 16, 93,204,150,248, 61, 23,207,115, 9,123, 1,186,182, 35, 45,203,146,170,243,123, 54, 5,226,231,206,204,159, 9, -236, 91, 3,219, 72,115,157,149,229,165, 56,141, 17, 17,201,234, 4,198,107, 19, 51, 41, 45, 30, 61, 62,225,143,191,247,167,188, -255,224, 67,182,183,119,217,217,223,103,158,148,204,230, 11,178,120,129, 35, 68, 11,254, 75,243,130,188,200, 40, 84, 69, 63,232, - 1,138,120,182,160, 88,206,168,138, 16, 73,137, 42, 83, 44,169,209,170, 36,138,150,104,219,163,196,198,247, 61,182,183,109, 78, - 78, 78,112, 93,151,143, 62,253,156, 60, 43,241,107,144,150, 82,138,173, 45,163, 2,151,231, 57,167,167,167,104,173, 91,202,146, -231,121,248,190,209,132,111,218,240, 89,150,181,199, 57, 73,204,188, 56, 94,206, 17, 55,118, 88, 76, 70,244, 68, 73,186,156,113, -120, 99, 7, 89,101, 20,209, 12, 75,106,194,192,101, 17,199, 12, 6, 59,248, 69,201,108, 58,166,231,187, 8, 42,170, 44, 37, 23, -146,192,247, 40,243,148,170,200, 9, 2,159,139,139, 11,178, 36,101,103,107,155,162, 50,109,221,162, 50,215,121,145, 87, 84,165, -225, 8, 75, 41,205,245, 76, 73, 81,100,140, 70,103,120,174,203, 96, 48,104,169, 92,158,231,146,249, 46, 74, 65,146,165,228,245, -249,104,198,129, 26,207, 55, 21,233, 32,232,181,186,233, 23, 23, 83, 28,215, 71, 84, 21,158,215,195,118, 29,170,162, 68, 21, 5, -126,191, 71,169, 74,182,135, 91,148,121,202, 98, 49, 39, 43, 13,110,192,114, 29,150, 73,204,108, 54,227,240,240,176, 22, 35,211, - 88,182,224,248,241, 49, 55,111, 30, 50,155, 78, 0, 69,130,193, 54, 77,115,227,161,126,255,254,125,130,126, 72, 86,152, 78,132, - 31,244, 80,104,126,246,193,251, 44, 22, 11,118,118,118, 8, 34,115,124,194, 65, 31,199, 51,193, 90, 90, 78,187, 30, 54, 73,202, -214,214, 22,194, 54,231,245,209,209,113,221,190, 31,178,181,181, 67, 85,105,230,243,185,225,145, 59, 6, 4, 57, 30,143,201,147, -148,120,177,100,107,107, 11,223,113, 73,226,152, 97,216, 39, 70, 48,190,184, 64, 43,197,206,238, 46, 85, 16,144, 38, 6,241,222, -163,199, 98, 58, 99, 25,205,177,164, 67,175,215,163, 31,132, 56,150, 4, 85,226,186, 1, 69,150,161,202,138, 52,142,233,245, 92, -246,118,182, 40,243,130,170, 54,130,233,182,199, 87, 3,123,213, 25,113, 93, 31, 20, 27,153,109,125, 29,251,200, 54,213,176, 42, - 75,179,158,107,101,132,201,108, 11,207,182,136,147,148,180,200,168,138,148, 82,149,216,212, 24, 25, 13, 72, 27,175,215,163,170, -109,128, 43,173, 12,155,171,150, 23,215, 27, 48, 76, 47,108,120,213,172, 39, 93,249,233,250, 87,216,118, 61, 3, 95, 44, 34, 60, -207, 35, 94, 46,141,157,159, 99,124,126,231,243, 57, 85, 85,112,235,214, 29, 92,215, 69, 10,155,170,212, 4, 65,143,160,239, 82, - 22,144,230,166,117,227,251,126,125,209,102, 36, 73,214,182, 88,186, 11,188,236,204,118,149, 82, 32, 44,138, 74, 17,197, 9, 69, -169,209,218,162,231,249, 88,194, 70, 58, 46, 85, 85,226,216,230, 2,211, 2,164,229,155,106, 27,135, 74,131,101, 57, 88,162, 65, -108, 26,123, 64, 79,120, 92,140, 39,252, 44,255, 25, 89,150,213,149, 65,211, 86,118,113, 28,187, 69, 45, 38,145,105,141, 53, 32, - 50,207,243,112,123, 62,179,217,140,227,227, 99,194,208,112,116,155,153, 84,195,175,223,221,221,165, 84, 21,142,235,226,135, 65, -235, 55,156,101, 25, 97, 24, 98,219,146, 36, 73,216,222,222,110,171,148, 70,248, 97,197,221, 76,203,141, 28,200, 75,243,149,234, -153,168,253,110,231,195,112,244,197, 74,229,237,121, 94, 11,168, 80,226, 42,250, 90, 10,217,106, 11, 55, 84,194,117,255,119, 33, -165,249,187,214, 28,214,242,242,249,174, 83, 82, 55,128,119,183,105, 83,213,187,142,254,222,148,145,170, 26,165,219,112,160,155, - 57,236,104, 52,226,248,248,152, 40, 74,176,164,219,162,119, 77,149, 77,187, 95,178, 44, 99, 56, 28,182, 44,142, 6, 68,244,232, -209, 35,108, 71,178,183,183,203,214,214, 0,219,145, 53,238,227, 42,232,230, 89,134, 68,102,222, 37,174,237,180,172, 31,215, 43, -207,215, 76,146, 6, 31,160,106, 59, 88,207,235,213,126,207,198, 19,123,124, 49,225,211, 79, 63,231,103,239,127,200,249,197,132, -221,189, 3,122,189,144, 52,171,152, 47,150, 44, 22, 11,202, 52, 37,240,108, 60,203,104, 77,100,113,202, 50,205, 25,236,236,146, - 21, 57,255, 63,105,111,214,100, 73,146,158,231, 61, 30,238,177,158, 61,151,202, 90,123,155,238,153, 70, 3,131, 1, 33, 10, 50, -241, 70,162, 73,148,204,100, 18, 37,153,126,129,140,127, 65, 50,253, 34,221,232, 66,183, 52,136, 4, 5,136, 0, 41, 18,196, 50, - 0,103,159,233,174, 45,107,201,229,172,177,251,166, 11,143, 19,149,213,211, 51, 0,196, 54, 75,171,202,234,204,170, 60, 39, 34, -220,253,251,190,247,125,222,195, 97, 71, 87,238, 72,124, 63,192, 7, 29, 96, 80, 2,218,170,196, 24,207,217,217, 57,215,155,154, - 23, 47, 94,144, 22, 43, 32, 16,193, 14,135, 3,179,233, 34,136,199,170,138,213,106, 53,230,170,191,122,245,106,204,216, 62,118, - 69,130,109,174,166,239,123,158, 60,121, 66, 20, 69, 99,160,139, 49,102,156, 1,123, 17, 14, 2,166,201, 72, 98,197,249,217, 9, - 31,127,240,144,195, 97,199,171, 87,111,152, 77, 82, 22,167, 15,248,211,191,252, 49, 31,124,252,109,154, 78,211, 54, 37,211,188, -224,234,245,171,112, 48, 65,113,126,239, 30,203,229, 12,165, 36, 79, 30, 61,164,110, 42,170,170,226, 91,223,250, 22,253, 64, 55, - 59, 98, 76, 55,235,224,111,142,227,152,229,234, 20,103, 91,156,215, 67,186,218,150,135,247, 67, 37,250,248,201, 67,170,178, 97, -187,221,114,118,114,138, 16,146,205,110, 75,213,212,100, 69, 49, 30,184,250,166,197,244,154,211,211, 83, 22,139, 69,208,248,212, - 53, 73,154,211,246,161, 11,186,221,110,153, 76,115,206, 79, 31,131,235,249,224,131, 15,248,238, 23,223,225, 39, 63,250, 1,223, -253,157,239,241,195, 31,253,136, 63,248,163, 63,226,179,207, 62, 67,201,132,255,241,127,248,159, 2,160,167,174,121,246,236, 25, -147,201,132,207, 63,255,156,207, 62,251,148,178, 44, 57, 28,118,172,215,235, 1, 10,243,136,221,238, 16, 54,196,233,148,124, 32, -120,138,225,128,247,248,241,227,193,142,120, 74,219,182, 92, 94, 94,142,207,148, 82,138,147,211, 51,180,214, 99, 7, 37, 4,192, - 88,182,219, 77,176, 6,118, 33,132,102, 50, 9, 20,192,171,171,171,241,235, 23,139, 5,235,221,150, 60,207, 57, 91,157, 80, 87, - 21,214, 24, 36,130, 84,197,124,250,197, 39, 20, 69,193,159,253,217,159,113,123,123, 75, 93, 85, 65,248,169, 13, 15, 31, 62,228, -228,116,201,225, 16,126,246, 72,168,177, 35,215,117, 29, 77,211,112,113,126, 78,145,166,212,117,232, 34, 60,122,244, 8, 21, 73, - 26, 87, 35,132, 31,139,168, 95,229, 74,185, 91,177,127,227,250, 34,248,149, 9,146, 95, 63, 40,188, 83,177,223, 1, 65, 9, 71, - 54, 41,136,122, 73,175, 29, 42, 81,160,220,128,142, 13, 18,245,190,111,209,218,226, 93,112,139, 9, 17, 17,160,144,118, 40, 82, -178,255, 32,135,205, 55, 21, 11,170,170, 26,170,178,102,189,217,134, 77,253, 80, 81,213, 7,178, 36, 29, 56,195, 29,198,246, 52, -117, 55,180,207,195, 55,239,171, 26, 95, 86,163, 58,212,123,143, 77, 12, 74,197, 56,171,177, 54, 64, 38,230,217,156, 8,135,213, - 38,188, 25,238,184, 1, 24,172, 85,136, 72, 97,140, 71, 16,147,230, 51,242, 98,134, 84, 25,145,239,130, 56, 72,122,150,203, 2, - 17, 89, 14,101,137, 49,154,249,124,138, 37,197,152, 64, 37,139,165,196, 24, 7, 4, 21,188, 82,161,165, 94, 30, 42, 38,211,226, - 29,176, 99,184, 56,113,156, 12,167,234,154, 52, 14, 54,148,222,104,186,102,112, 0, 12, 45,234, 44,207, 7, 44,166, 66, 37, 9, -102,128,155,164,186,103, 90,132, 83,177,148, 18,139, 39,203,236,232,143,191,189,189, 29, 9, 77,219,237, 22,107,237, 48, 83, 43, - 16,145, 31, 34, 48, 67, 91,220, 26,127,103,238, 45,222, 75, 3, 59, 38, 11,221,221, 20,222,181,187, 61, 81, 36,137,199,188,251, - 35, 19,156, 81, 84, 8, 96,142, 74,221, 95,161,238,116, 54, 80,158,176, 14,100, 68, 22, 39,225,148,238, 2,138, 52,242, 96,140, -127,207, 74,113,132,207, 88,252,112,163, 30, 3,145,220,123,239,245,215, 53, 4, 95,127, 88,142,237,172, 95, 7,127, 74,148,162, -169, 42,174,174,174,184,185,185, 25,173, 49,198, 24,138, 52,204, 4,173,233,233,155,158,162, 40, 72,164, 10, 66, 77, 99, 81, 34, - 34, 85, 49,157,117, 99, 71, 6,103, 48,125,143,115,161,114,218,174,111, 88, 44, 22,156,156,156, 12,217,213,239, 90,239,214,217, -111,224, 28,248,247,170,239,187,193,167,127,147, 13,230,238, 3,120,252,189, 20, 2, 41, 99,172,241,244,166, 39, 18, 97, 97,107, -250,150,178, 12,254,240, 31,252,224, 71,252,223,127,248,199,108,118,123, 30,127,240, 33,145, 82, 92, 94,190,230,118,187,195, 15, -135,145,201, 52,199,107,205,110,183, 27, 34, 70, 21,121,158, 34, 34,197,238,176, 97,183, 59, 48, 73, 34, 38,105,200,176,182, 86, -147,224,233,218,154,211,211, 83,182,101, 19,168,111, 81,206, 23, 95,124,129,143,114,254,247,255,227,255,100, 91,182, 44, 78,206, - 17, 72,174,111,111, 89,204, 87,156,156,156,176, 94,175,121,245,234,213, 40,138, 59,198,100, 30, 5,113,251,253,158, 60,207, 71, -232,205,108, 54,123,111,180,161,148, 2,103,184,124,249,154, 52, 10,162,190,200,131,237, 59,164,128,103, 95,125,201,179, 87,111, -249,221,135,159,176,221,111, 41,155,154, 73, 49, 67, 13, 34,164,237,110,141,179, 61, 89, 81, 48,155, 77,152, 78,114,222,188,121, - 19,232,152, 2,182,187, 13, 8, 79,145,229,100, 89,134,115, 65,163,160, 7,203, 91, 28,183,228, 69, 74,145,199,244,157,198, 59, - 88,204,151, 76,138, 25, 77, 85,145,223,207,121,244,173, 39,252,193, 31,252, 1, 85,219,144,166,121, 88,171,125, 68, 87,119, 52, -162, 39, 73,226,128,139, 45, 43,250,190, 15, 41,106,198,132,118, 63, 10,109, 52, 23,103, 23,148,101, 73, 28, 73, 30, 63,122,196, -211,159,255,136,166, 46,121,245,242, 57,207,159, 63,231,207,255,234,175,185,190, 89,227, 28,252,224,135, 63, 39, 66,240,242,242, - 45,143,159, 60,100,185, 92,210,182, 61, 79,159,254,123,230,243, 57,175, 94,189,226,108,181,162,235,195,204,251,234,234,134,166, -181, 84,117,203,235, 55, 87,129,103,160,212,184,246,172, 86, 43,242, 60,231,203, 47,191,196, 90,203,189,123,247,198, 67,120, 89, - 5,109,195,139,151,207,136,162,136, 60,155, 48,157, 78,135,206,145, 25,215,153,211,211,211, 32, 54,221,108,104,219,150,162,152, -112,186, 88, 6,199, 68, 93, 19,121,144, 74, 16, 9, 31, 32, 99, 42, 69, 14, 17,182, 85,185,103, 82,100,124,254,157,207, 88,175, - 79,249,139,191,252, 75,250,190,231,239,255, 39,191, 23, 70,155, 73,204,247,191,255,125,164, 20,220, 27,222,167,171, 55,175,249, -224,131, 15,120,242,232,113, 40, 72,188,199,244, 53,171,197,156,239,253,246,111,225,141, 38, 85, 49,206, 9,156,209,200,175,185, -114,188,248, 27,108,169,145,124, 95, 87,196, 47,115, 61,238,254, 94, 27, 59,220,183,114,204, 47, 25,255,126, 33,135,130, 92, 18, -121,129,247, 6,111, 90,156, 51, 97,164,119,116, 22, 69, 17, 66,196,225,215, 59,157,133,227,129,228,232, 88,250, 70,225,189,248, - 6,180,233,157,175,113,223,160,149, 82,206, 17,128, 29, 50, 6, 17,145, 15,182,135, 36, 14,237,144,249,124,137,181,150, 36,201, -168,170,134,182, 13,138,206,245,110,203,219,183, 33,218,242,168, 40,237,251, 27,242,124,194,124,190, 0,231,217,237,118, 44, 22, -139,241, 5,132, 22, 63, 99,187,220, 14,129, 43,117,221,178, 43, 43, 34,149, 35,189, 66,119, 61,145,239, 73,149,229,179,207, 30, -240,248,209, 61,170,250,148,171,235, 27,174,111,246,200,100,130, 80, 19,186,206,130, 11,161, 47,199, 89, 25,132,106, 39,207,139, -144,190,228, 61, 73, 18, 13,220, 99,195,237,237,237,216, 2, 44,203,146,223,250,226, 55,131,175,249,176, 15, 15,251,209,243, 57, -116, 30,142,115,166,170, 44, 67,164, 98, 49, 25,105, 79,209,160,220,172,187,144,174,180, 88, 44,104, 7,252,229,177,229,213,117, - 13, 66, 8,206,207,207,195,200,194,116,227,120, 35, 4,206,168,247, 90,218, 81,244,110,195,179,214,142, 85,228,113,150,252,238, -226,135, 19, 93,101,170,224,209, 63,126,143,119, 95, 3, 36,188,207, 74,255, 58,225,237,216,118, 62,230,139,119,105, 58,158, 74, -143,127,118,247, 6,252,250, 40,160,174, 91,162, 88,141,222,224,247, 21,170,238,189,239,189,251,239,223,221,212,127,157,119, 91, - 91, 51,126,205,177,173,123,156,113,201, 40,198, 24,203,225, 80,141,149,186, 82,106,108, 17, 11, 33, 6,238,117, 80,156,182, 93, - 77,154, 77, 56, 57, 89, 14, 29,142,240, 51,215,117, 29,230,128,131,135,247,111,227,145,191,251,225,248,219,121,246,191,233,123, -227,232,157,197,167,235,186,241,253, 89,239,118,188,121,125,197,255,245,207,255, 25, 8,201,161,106, 72,243, 34,204,207, 27,141, -243,130,249,124,193,190,235,240, 17,232,174,163,171,246, 88,163, 81, 50, 38, 78, 82,156,146,220,110, 55, 52, 93, 75,154,166, 76, -103, 9, 73,212,162,173,165,215, 45, 42,178,239,238,229, 56,227,236,236,140,109,169,121,241,226, 37,113, 54,103, 54, 91,208, 25, - 73, 83,119,228,211, 41, 23, 23, 23, 40,153,176,223, 7, 54,249,113, 70,126,228,112, 39, 73, 32, 73,214,117, 77,215,117,204,102, -179,241,117,165,105, 58,222, 19, 71,123,108,223,244,120,235, 56,185,119,130, 82,239,168,121,143, 30, 61,162,152,100,227,125,112, -108,241,206, 23, 43,188,128,125,117, 8,164,181,195,150,186,109, 56, 57, 59,195,123,203,118,115, 75,221, 4, 81, 86, 83, 30,120, -246,236, 25,143, 30, 62,166,169,106,136,222,233, 48,162, 40, 98,191,223,163,117,199,233,233,108,232,102, 69, 44,102, 75,234,178, -196, 89,168,202,134,217, 84,115,113,241,128,175,190,250, 42, 36,157, 77,166, 20, 89, 17, 98, 64,141,163, 40, 98,144, 22, 17,121, -186,174,161,109,179, 16,174,227, 61, 73, 28, 44,102,207,159,126, 57, 90,180,186,174, 27, 43,232,235,235,235,240, 30,104,207,195, -199, 31, 6,193,150,243, 67, 56,143,160,169,123,166, 19, 63, 50, 21,234,186,101,185,188,143,181,142,199,143, 62,224, 23,191,248, - 69, 40, 30,180,163,152,204,198,231, 38,142, 99,218,182, 29,199,137,214, 90,150,203,229,168,102,223,239,247, 99, 17, 54,157, 78, -195,247, 23, 5,179,105, 80,206, 95, 94, 94, 6,166,250,192,151, 63, 30,214,154,129, 31,127,140, 58,110,154,134,174,107, 67,215, -212,135,117,213,116, 61,231,103,103, 36, 89,134,233, 53,251,237,142,191,247,189,223,225,237,219,183,252,232, 7, 63, 68, 70, 17, -191,243,189,239,241,191,253, 47,255, 43,127,242, 39,127,194,191,252, 87,127,130,213, 61,187, 93,197, 7,143, 63, 28,249,245,255, -224, 31,252, 3,126,235,139,223,228,159,255,179,223,167,111, 90, 14,135, 3, 23,231,103,124,242,201, 39, 1,198,148, 70,224, 4, - 86, 27, 84, 18,191, 95, 44,252, 45, 93, 70,119, 29, 68,223,212, 49,188, 59, 90,252, 38, 45,209, 81,132,103,140, 65,166,138, 52, - 74, 17, 74, 32,124, 16,183,133, 68,172, 24,106, 61,230,156, 28,133,178,145, 16, 68, 50, 28, 10,254, 38,196,201,221,110,231, 55, -254,191,232, 27,102,234,203,147, 51,150, 39,103,161, 82, 67,145,165, 9,105,146, 35,199,106, 47,196,174,118,189,161,172,154,176, - 16,169,160, 10,204,178,130,190,173, 73, 99, 25, 58,251, 67,154, 84, 20, 9,156, 55,212,213,129,174,107,240, 62, 25,189,124,194, -134, 90,199, 17, 60,198,245,207,122,177, 0, 0, 32, 0, 73, 68, 65, 84,125,223,115,125,187,225,197,243,151,148,135,142,105, 94, -160,164, 64,137,158,249, 68,241,197, 23, 31,128,112,164,105,204,114,181,224,118, 29,110, 74,225, 98,188,143, 80, 50,198, 17, 65, - 20,161,146,100,152, 87, 11,140,119,161,146, 84,146,124, 50, 9, 10,232,190, 31, 69,109,200,104, 28, 21,212,117, 75, 85, 5, 2, - 85,164,222, 5, 58, 52, 77, 55, 92,192, 14,103, 33,137, 51,178,172, 8, 57,243,189, 29, 32, 60,193,207,121,180, 56, 28,231,207, - 71,224, 67,158,135,197,108,177, 88, 4, 94,113,185, 27,173, 62,198, 24,210,100,242, 53,101,185, 31, 55, 72, 99,130, 40, 81,202, -224,229,207,243,156, 44, 75,199,156,251,208, 6,203,223,101,158,224, 97,176,108, 69, 34, 70, 69,146, 78,247, 67, 10,209, 32,210, -243,239,207,128,143, 74,215,227, 9, 94, 15, 42, 98,127,199,234,114,220,104,142,136,207,227,161, 36, 78, 18,162, 72,161, 68,132, -197,227,141,197,105, 51,222,244,119, 5, 38,191,106, 83,247,119, 89, 2,119,103, 70,131, 58, 84, 69, 49,206, 6, 54,182, 28,170, -112, 41, 20, 73, 26,198, 58,206,180,193,215,109,131,231, 91, 69,130, 88, 70,216, 40,204,208, 77,223, 33, 69, 58, 32, 12,131,202, - 54, 31,132,157,189,238, 72,147,130, 8, 65,117, 40,223,203, 88,255, 85, 62,245,187,221,146, 35,191,249,215,181,197,190, 73, 72, -119,247,128,212,234,126,140, 52, 62,254,219,109,219,242,250,213,219, 33, 12,227,146, 15, 63,250,132,111,127,251,219,172,183, 59, -126,254,243,159, 83, 55, 29, 74,197,244,206, 83, 44,102, 65,244,121,216,130,209, 76,210,148, 36,137,233,108, 79, 89, 55,236,107, - 77,156,165,100,105,140, 16,154,186,174,232,181, 10,157, 50, 12,233,128,211,197, 73, 48,237, 56,131, 60, 12, 84,176, 52,159,210, -245,193,174,148,165, 69, 0,173,236,118, 96, 29,139,233,140,166,239,198,247,237,232,131, 62, 66,102,142,215,251, 40, 26,189, 43, -194, 76,211, 20,167, 13, 89, 86, 16,201, 24,103, 13,118,176, 0,205,166,115,138,124, 74,158, 77,240, 94,144, 79, 38, 97,246, 43, - 34,122, 27, 82, 28,243, 44,199,154, 46,220,251, 62, 36, 97, 21, 69,198,108, 82,140,162, 88,219,119, 72, 21,254,125,149,132,142, -226,124, 26, 32, 57,251,178,194, 90,205,118,179,103,190, 40, 80, 81, 76,215,105,234, 67, 73, 28,167,244,173,230,237,235, 43,138, - 44,184, 91,154,174,167, 44,195, 44,184,215, 26,139,160,107, 53,122,240,225,247,125,143,138, 34,156,140, 70, 11,152, 24, 68,153, -121,158, 51,153, 76,216,239,183, 68,128,233, 53,215,175, 95, 81,214, 13,231, 23, 15, 73,210, 9, 89,150,113,123,125,195,106,182, - 98,179,217,144, 23,115,186,222, 81, 76,230,156,172, 52,155,237, 26,221,106,182,235, 53,231,231,231,172, 22, 43, 22,211, 57, 77, -111,136,243,112,223,116,198,210,236, 15,108,183,219,240,236,164,107,242, 60,199,137, 40,228,189, 15, 89, 2, 73, 30,116, 14,187, -242,192,253,123,103,163,184,175,109, 91,218,182,101, 58,157,178, 60, 61, 65, 74,201,143,127,252, 83,138,162, 96, 58,157,141,173, -241,205,102,131,197, 51, 31, 4,117,231,167,103,212,135,146,181, 94, 83,150, 37,222, 58, 82, 21,115,239,244,140, 52,150, 20, 69, -198,114, 57,167,211, 45, 82, 10,178, 60, 97,189,185, 33,203,146, 32, 90, 21, 67, 74,161,213,100,105,204, 71, 31, 62, 97, 49,228, -219, 71, 30,218,186,226,236,228, 51,230,147, 41,120, 27,226, 80,135,249,255,215,139, 28,193,175,207,179,240,191,102,131,127, 47, - 2,250,142,168,247,238, 33,252,248, 28,135,176, 34,207,225,112, 96, 42,103,129,243,238, 45,218,116, 72, 25, 52, 77,214, 52,104, -231,177, 94,142,147,111, 59,132, 54,169,227,200,210,138, 95,201, 57,249,219, 20, 10,239,195,108,134, 77,125,181, 90,144, 36, 9, -155,219, 91, 14,135, 3, 46, 47, 72,211, 20, 99,252, 56, 31, 14, 47,192,226,125, 80, 2,238,203, 26,163, 29,103,103,231, 68,132, -214,178, 82,138,197, 92,146,101, 57, 66, 73, 14,251, 26,132,164, 44,107,138, 2,164, 28,148,210, 3,231, 87, 12,156,209,120, 56, -249, 25, 19, 90,193, 22,143,213, 45,157,107,137, 35, 73,172, 4,125, 91, 17,225, 89,205,166, 76,167, 11,246,149,197, 29, 19,201, -100,168, 18,133,140,152, 45,230,227, 76,201, 12, 94,248, 8, 79,215,148, 56, 19,170,147,104,168,250,110,111, 55, 92,190,126, 75, -211, 66, 86,228, 68,113, 65, 85, 29,104, 77,136, 8, 76,146, 48,115, 74, 84, 76, 89,150, 76, 38, 83, 38,147,132,114,127, 24, 79, -196,245,161,164,110,219, 81, 17, 31, 84,175,130, 73,150,211,165, 13, 17, 14,211,155, 97,243, 49,120,107,177,189, 5, 11,105,146, -146,197, 25,214,127, 93,144,229, 71, 21,177,214,154,220, 79,112,214, 99,141, 24,188,255, 10,239, 45,109,219, 81, 85, 21,135, 67, -224, 66, 31, 15, 18,199,128,134, 56, 78,137,211,100,212, 57, 28, 15, 29, 71, 11,201,187, 15,139, 16, 65,115,224, 17, 65, 72, 56, -252, 29, 30,104,134, 10, 44,138, 2, 36, 36,136, 42, 53, 69,150,163, 34,129, 17, 26,239, 98,180, 49,195,233, 93,223,105, 47, 25, -188,117, 88,247, 14,104, 33,162, 0, 8,178,214,226,172, 39, 27,103,254,119,110,234,227,230, 63,136,222,180,179,228,121, 78, 28, -199,104, 19, 66, 77,212, 64, 60,244,214, 6,240, 3, 6,143, 70, 68,150, 56, 17,195,217,198,141, 93, 36, 99, 76,200,136,215, 61, -251,237,134,174,107, 0, 71,158, 22, 67, 40,209,208, 17, 73, 18,144,209,232,155,149, 50,230,235,145,178,209, 32,132, 17,126, 56, -204,188,195, 63, 0, 98,136, 15,190,235,141, 13,227,139,209, 25,112,231,245, 46,166,161,154, 53,195, 66, 81, 85, 21,151,175,222, -240,179,159,253,140, 23, 47, 95,241,209,167,159,177,219, 31,168, 94,188,164,170, 26,174,111,130,234,124,117,122,194,205, 58,204, - 93,117,219, 34,136, 40,138,130,108,232, 0,117,173,166,105, 59,172,143,152,231, 19,164,242,236, 55,107,244,110,195,227,179,130, - 56,146, 56,215, 99,172,193,121,203, 36, 83, 24, 33,233, 59,194,156,152,148,217,108,198,245,182,228,183,191,247, 31, 17,167, 5, - 63,249,217, 79,105,187,158,124, 82,176,223,110, 48,102, 0, 85, 57, 59, 94,223,195,225, 16, 2, 79,206,206, 16, 66,140, 41, 97, -119,239, 79,173, 53, 74,132,205,175,200,167,232,190,199, 73, 75,150,199, 20,179,130,166,111,217, 29,246,236,203, 3,109, 91,211, -183, 45,243,217, 4,171, 53,109,211,115,182,154, 99,251,253,152, 17,238,157,161,169,154, 81, 39,115,100,189,231,121, 30,196,187, - 17,196, 50,232, 66,240, 22, 80,225, 32, 72, 68,111, 12,155,221,158,197,116,137,235, 52,105, 94,176,189, 93,115,255,254,253,225, -208, 91, 51,155, 76, 72,211,132,195,225, 64,213,182,164,113, 24,239,117,213,129,229, 98, 1, 62,136,213,202, 67,141, 54, 29,214, -123,228,160, 28, 87, 73,204,243,231,207,135, 17,225, 57,113,154, 82,214, 21,251,178,194, 17, 54,219,251,179, 21,222, 58, 62,253, -244, 83,158, 62,125,202,163, 7, 15,194,129, 63, 78,208,166, 35,142,227, 48, 59, 95,223,114,122,182,226,234,234,138,223,252,141, - 47,120,254,242, 5,187,170,197,137,128,189,213, 78,211,247,161,235,182, 88, 44, 70, 23,206,241, 61, 63, 86,217, 71,141,207,195, -135,143,153, 79, 10,110,110,175,184,190,186, 37,138, 34, 46, 46, 46,120,252,248, 49,135,186,226,135, 63,252,241,168,128, 63,210, -220,142,238,134, 99,241,146,103, 25, 74, 68,236,118, 7,218,166, 97, 90,204,200,178,140, 43,163,185,124,243, 26,245,195,132,166, - 9,227,137,182, 13,149,125,158, 14, 14, 8, 33,104,170,106,220, 99,246,251, 61, 66,120,234,186,228,246,246,154,249,124,138,233, - 91, 38,211,130,123,247,206, 80, 42, 34, 18, 2, 99,122,172,183,100,113, 22,128,102,199, 44,138,247, 54,197,232,151, 90,214,238, -107, 85,249, 55,100, 40,253, 18,187,228, 40, 32, 63,102,138,220,205, 97,176,142, 17,180, 22, 39,138, 40, 77, 81,132,131,228,192, -163, 69,136,160, 43, 83, 34, 9, 63,147, 14,235,146, 53, 22, 99, 44, 74,197,191,118, 83,255,117,155,253, 81,216,254, 75, 51,117, -162,134,219,205, 13,109,215, 19,103, 10, 34, 31,130, 29, 28, 68, 42,199, 17, 83,183,125,168,173, 69, 76,213,180,120,225, 40,138, - 28, 21, 73,210, 56,198, 25, 11, 50, 70,169, 20,109, 67, 11, 66, 68, 41, 94,196, 88, 47,241, 66, 82,119, 45, 90,183, 44,102, 19, -164, 12,177,172, 42,138, 49, 78, 51,201, 83,156,149, 92,223,236,112,210, 82, 87,215, 36,194,162,162,140,190, 61,160, 17,204,166, - 19, 76,215,161,107,143,179,146, 78, 24,122, 99,232,212,187,202, 80, 38, 9, 85,215,131, 51, 76,138, 4,175, 53, 39,243, 25, 77, - 93, 82,247, 21,139,162,192, 56, 75,221,244, 20,121,202,249,197, 5, 86, 78, 48,106,134,182, 53,201, 68, 17, 43,129,214, 13,198, - 52, 36, 74, 81,235, 48, 15,236,155, 62,112,134,165,162,215,154,206,180, 88, 31,112,181,109,223,163,162,128,147, 76,149, 2,239, - 89, 78, 39, 72,239, 72,134,197,108,123,125,203,198,123, 58, 19,102,239,146, 16,144, 19,252,138, 97,131, 53,182, 15,176, 17,107, -201,147,156, 73, 54, 67, 14,209,178,166,245,236,251,154,106, 31, 54, 35,235, 66,130,158,181, 22,109,195,130,102,180, 27, 85,211, -135,178, 68, 42,197,249,189,228, 61, 78,240,241,198,116,206, 14,155,173, 25,236, 82, 2, 11, 88, 28,189,213,180, 58,180, 77,247, -155, 45, 15, 31, 62, 36, 77, 20,135,106,143,240,144, 38,138,190,173,105,170, 61, 73,146,208, 91,195,161,108, 56,148, 45,121, 54, -197, 71, 18,219,119,220,191,184,135, 21, 45,245,174, 38, 75,146, 64, 45,236, 29,109,103,152, 78,151,180, 77,143, 78, 44,179,249, - 4, 37,131,206, 33,203, 82,170,170,226,228,116,201,238,176, 69,202, 8,149,196,108, 54, 27, 54,219, 29, 73, 54,229,252,222, 3, -188, 77,216,237, 14,220, 59,157,226, 76, 67,170, 10,166, 83,133,163,193, 58, 75, 49, 73, 72,211, 83,186,214,114, 56,212,100,113, -130, 51,130, 34,205,104,202, 29,203,121, 30, 58, 61, 81,176,213, 89, 99,113,177,199, 9, 21, 50,149,237,128,161, 37,136,217,172, -214,204, 23, 51,174, 95, 95, 49,159, 77,169,247, 53,197,116,130, 55, 46, 60,191,145, 12,177,191, 62,168, 92,189,136,130, 58, 90, -197, 33,194,216,123, 36, 65,104, 24, 71,129,126,232,156,165,107,187,144, 90,101, 29,251,106,207,254, 80, 81, 55, 29, 47,223,222, -176,188,184,143,144, 49,149,222,178,126,251, 18,124,196,124,185, 64, 74,201,250,230,134,182,109, 17,113,130, 53,134, 76, 41,132, -128,221,161, 12,190,109, 39,233,189,224,244,222,125, 14, 85,141, 51, 29,174, 15,126,255, 89, 49, 11, 11,112,234, 17,244,204,166, - 9,214,246,104,231,176, 38, 98, 49,159,225,226, 25,235,127,251,231,124,244,201,183,169,187,150,235,203,215,212,237,144,102,102, - 12,113,158,178,223,237,238, 0,235, 5,197,116,194,190, 60, 48, 91,204,233,186,142,179,179, 51, 14,219, 29,169,138,137, 35, 73, - 89, 55,180, 85,205,197,217, 57,105,146,208,119, 29,182,107, 73,166, 49,121, 1, 77,127, 32,157, 36,196,153,226,237,245, 85, 56, -112,122,205,249,201,148, 34,142, 81, 22,164, 11,193,214, 82, 74,154,102,207, 52,157, 16, 19,145, 39, 41,105, 28,163,181, 31, 68, -125,193,198,149,166, 41, 94,247,100,211, 9,182,107, 48, 93, 63,162,130,137, 34, 28,129, 97, 64, 84,177, 90, 45, 1, 65, 54,203, -121,115,253,134,179,147, 37,145,132, 52, 19, 60, 58,185, 64,169, 71, 60,127,250,140,235,155,183, 88,111,137,100,140,105,155,113, - 86,111, 17, 8,149,209, 25, 15,210, 49,155,228,108, 54,155,192,189,199, 2, 14, 25, 43,138, 73, 65,253,213, 87,196,113,204, 52, -205,136, 5,204,230, 51,238,157,157,112,216,109,232,218,154, 44, 77,152,207,114,242, 98,197, 87,125,192,199, 46, 78,103, 52, 77, -137,243, 49,175,175, 46, 1,143,214, 29, 73,150,162,178, 4, 93, 54, 44,166,147, 49, 7,227,108,181, 36,206,114,126,252,227, 31, -143,122,145,186,105, 40,138, 34, 84,189,192,229,229,229, 0, 66,177,204,231, 75,238,223,191,207,110,119,224,203,103, 79, 17, 68, -204,231, 51,230,179,197,168,213, 32, 2, 41,163,209, 26, 60,201,114,230,211, 5, 86, 63,231,176,175, 88, 45, 29,189,117, 44, 78, - 78,185,185,185,225,197,191,254,127,249,232,163, 15,134, 46,129,164, 40,166,220,220,172,199,110,153,146, 9,145,143,232,154,160, - 83,194,121,226, 88,210,235, 32, 96,236,117,195,102,183,230,252,254, 57,113, 30,211, 86,245, 16,253, 11,214,121,124, 20,248, 23, -199,206,222, 93,132,171, 19,239,132,174,239, 1,100,222,235,186,249,209, 49,228,143,160, 71,222,185, 81,188, 51,163, 95, 93, 27, - 59, 90, 49, 39,147, 9,237,225,192,116, 58,101,125,125,195,231,191,245, 9,125, 89,163, 98,137,179, 6, 65,140,144, 10,135,134, - 72, 98,109,132,240, 2, 41, 83,132,215,224, 28, 42, 18,127, 35,172,235, 87,217,106,223,109,246,238,151, 6,241, 42, 72,224,163, -161, 93, 54,112,166,251, 30,111, 5, 81,228,135,211,184, 39, 73, 98, 36,146, 36, 77,241, 12,158,110,111,104, 26, 19,230,101, 72, -154, 94,211,107,141,143, 2,124,102,185, 58, 99, 49,100,243,134, 55,208, 12,214, 22,135,179, 58, 96, 47, 85,134,213, 33, 37,174, -119, 14, 99, 59,178, 60, 38, 85, 10,227,130,215,248,226,228, 20, 41, 44,109,103, 41,119, 37,189,204,232, 19, 75, 49,159,208,183, - 26,173,221, 56,203, 61,206, 64,170,178,161,220,173,201,148,160, 24, 22,205,245,122, 77,158, 79,130, 55,221,244,180,141,161,182, - 53,178, 5,103, 27,148,114,164, 49,232,166,196,154,158, 88, 74,102,197,148,166,233,130,210, 90, 74, 22,171, 21, 69,158,114,168, -246,220,220,110, 2,139,185,183,136,152, 16, 95, 27,201,160,192, 30, 82,228,142, 49,102,193,186, 40,192,134,108, 93, 23, 57,124, - 36, 48,163, 13,203, 99,135,138, 39,232, 13,134,138, 93,247,227, 92, 60,138, 34,156,245, 68,210, 15,208, 28,216,239, 3, 88, 35, -140, 6, 50,156, 11,173, 56,235,194,194,245,246,205,213,187, 22,122, 20,174,245,209,174,104,140, 33, 18,126,200, 77,143,113,130, -224, 68, 24,244, 6, 97,198, 28,230,230,184,156, 52,201,137, 60, 68, 56, 84, 44,233, 92,131,146, 71,204,100,196,100, 50, 67, 68, - 89,208, 20,236,118,195, 90,239, 56, 93,205,105,170,146, 34, 73,169,235, 80,221,108, 54, 21,198, 88, 38, 89, 74, 83, 86,196,177, - 9,169, 82, 66, 32,133, 8,169, 81, 34, 26, 18,156,162,161,242,154, 16,169,148,182,237, 57,236,247, 92,189,125,197,106,242, 49, - 82, 40,154,190,228,205,171, 45,147,217,148,229,233, 25,130,152,186, 42,217,108, 14, 40, 17,147,198, 9,177, 18,116, 77, 77,146, - 70,228,217,224,202, 48, 49,160,232,180,198, 24, 75, 79,143,245,142,110, 24, 35,104, 27,252,202,179,217,140,230, 80, 99,141,161, - 46, 43,210, 56, 14,237,252, 40,194, 25,131,214, 54,164,228, 73,137, 84,113, 16,207, 12,174,129, 40, 82,224, 45,137, 10, 35, 17, - 49,128,151,240, 80,100,129,159,189,223,239,249,235,191,250, 1, 63,253,249, 47, 72, 39, 83, 44,176,217, 7,134,253,102,183,195, - 24, 23,158,209,161,131,208, 53, 45, 85,211, 16,167,249,200,133,104,219,102,216,104, 35,138,197,156,197,100,202,182, 10,243,109, -156,197, 27, 67,124, 84,244,251, 8, 99, 58,148,132,174,111, 81,170,160,239, 91,156,207,248,221,223,253, 93,166,167,143,248,253, -127,241,199, 56, 7,187,221,126,172,178,123, 19,136, 97,213,190, 2,239,113,199, 17,141,146,180,186, 31,199, 19, 33,186,217,142, - 58,129, 99, 27, 51, 58, 2,134,132, 8,243,244,213, 10,219,239, 48, 70,147, 79,195, 92,178,237, 58,154,190, 99, 58,157, 6, 56, -139,146,196, 34,232,124,102,147, 57,177, 82,232,110,143, 23, 4,176,138, 19, 68, 34,164, 67,230,217,132, 56, 43,131,159, 92, 68, -163, 22, 69,107, 77,215,133, 81,129, 28, 32, 43, 34,138, 72,138,156,237,222,112, 40, 75,172, 53,228, 73, 10,222, 34,124, 56,100, - 37, 66,114,255,193, 5,143,238, 95,144,165, 49,109,181,103,125,125,137,140, 66,156,105, 58, 77, 73, 85, 66,154,132,170, 49,216, - 40, 51,178, 73, 65, 57,144,238, 24, 72, 98,135,170,164, 72, 2, 84, 37,205,130,184,176,239, 26,206, 78, 87,193,129,180, 15,188, -253, 34, 79,169, 14,251,247,198, 61, 77,211, 32, 85, 72,193,139,100, 88,236, 79,239,157,114,189,217, 80, 29, 74,148, 82,172, 22, - 75, 86,167, 39,193, 50, 88,135, 46,107,171,205,120,237,142,177,216, 97,198, 46,120,121,121,137,179,154, 39,143, 30,112,113,113, -129, 53, 33, 32,105,187,221, 82, 87,129,145,239,189, 31,121, 15, 77, 27,180, 39,171,147,160,116,119,206,145, 63,254,128, 52, 13, -246, 69,162, 40,216,182, 6, 81,173,197,147, 22, 57, 50, 73,145, 93,135, 27, 4,146, 85, 21, 24, 33,194,135,123, 49,203, 50, 86, -171, 21,187, 93,244,158,215,125, 50,153, 4,219,163,120,215,189, 52,222, 33,134, 42,216,203, 99, 4,182,124,207, 30,230,253,144, - 41,225, 25,226,138,223,159,131,191,199, 1, 81,114, 24, 93, 14,248,214, 1,227, 26, 9,137,136, 6, 65,231,221,207,101, 12, 67, -245,253,238,249,142,144,199,182,255, 16,211,230, 92, 24, 17,252, 82,179,220,255,221,146, 66,254, 38, 37,188,255, 6,155,155,122, -254,236,117, 56,129,217,208,178,208,125,104,237, 30,231,195, 1, 68, 96,145, 50, 26,148,219,130,162,200,136,147, 16, 16,225,188, -197,235,240, 0,116,125,152,145,229,147,144,169,155, 21,129, 72,116,179,190, 5,239,152, 76,114, 34, 21,218,152,105, 50, 69,170, - 8, 25, 39,196,106, 70,162, 78,241, 68,164, 83,135,117, 53,101,181,229,246,205, 75, 68,156, 34,164,194,218,142,205,205, 26,163, - 67, 75, 81,196, 18,221,247,196, 34, 56,133,133, 23, 68,206, 14,169,111, 33, 71,189,237, 45, 95, 62,189,228,116,185,100,183,221, -210,246, 29,247,238,197,200, 56,197, 35,137,227,148,159,252,252,103,172,183,123, 34, 44, 15, 30,158,243,228,241, 5,121,150,160, -123,143,213,134,237, 97,207,172, 24, 4, 44, 72,146, 44, 84,197,125,215,209, 54, 13,145, 16, 84,101, 9, 89, 74, 94,132, 49,132, - 84, 97, 52,160,134,170, 61, 88,249, 20,218,134,197,191,237, 13,218, 54, 99,244, 94,136,174, 61,134, 1, 12,234,246, 65,240,102, -180, 29,168, 71, 71,164,104,216,212,165, 12, 94,247, 48,223, 15,240,157, 56, 14,249,190, 71, 66, 83,176, 20, 38,168, 56,194, 19, -186, 35,199,135, 27, 28,206,120,140,241,196,177, 8, 66,165, 72, 32,172, 64,249,132,152,148, 68,134,159,219,233,136,222, 89,242, - 52, 67, 55, 45,109,211, 12,185,208, 22,235,123,218,222,130, 87,200, 40,134, 72,225,125, 68,219,244,108,214, 59,238,221, 11,105, - 92, 77, 21,108, 41,231,167, 23,116, 26, 22,243,192,162,182,174,195,244, 61, 62,178,104,215, 81, 30, 74,178, 44,161,239, 91,148, -146, 24,107, 2,195, 93,197, 36,137,229,250,234,150,155,245,151, 8, 18,166,121, 78, 83,107,146, 88,146,165,115, 98,149,163,164, -164,222,183,244,182,198,217,144, 62, 24, 9, 21, 14, 33, 93,203,245,245, 91, 78,207,166, 24, 27, 7,143,185,151,200, 72,210,155, -150,166,235,144,177,195,121,143,241, 97, 44,243,242,213,107,162, 40,226,201,163,135,180, 85, 77, 81,228,152, 94,143, 11,158,209, - 26, 99, 53,206, 56,162, 88,161,100, 68,132,135,193,207,234,189, 67,216, 65, 4,151,120,242,201, 20,235,161,211, 65,203,160, 75, -195,247,255,253, 15,232,116, 15, 82, 49, 95,172, 64, 41,250,235,107,158,127,245, 20, 57,104, 70,142,110,137,253,126, 79,223,118, - 3, 66, 50,112, 20,156,115, 52,117,135, 30, 22,221, 98, 58, 35,205,115, 90, 99, 66,123,222, 89,228,160,121, 56,182, 19,227, 52, - 33,137, 35,188,169,201,178,156,186,177, 24, 11,141,238,249, 55,127,246, 23, 44,239, 61,225,201,147, 39, 92,111, 75, 54,135, 10, - 21,167,119, 96, 82,208, 53, 97,246,122,104,194,243,112,140,186, 61, 46,104, 50, 11,247,123,221,181, 20, 69, 49,110,240, 95,215, -105,212,117,141, 18, 97,188,114,122,122, 26,196,159,101,195, 97, 95,177, 56,157,142, 72, 89,231, 13,198,232,241,243, 35,181,174, -111,250, 32, 88,213, 46, 44,248, 50,194,249,160, 90,214, 58,116,156,122,109,113,190,165,110, 27,122,107, 16,198,133, 3, 54,131, - 19,101,160,157,233,182,195,233,112,208,181, 90, 98,157, 38, 87, 9,113,162,248,248,131, 39, 24,163, 41,166, 19,190,245,237,207, -120,249,242, 37,218, 71, 24,211, 35, 68,140,177,154,201, 36, 92,139, 67, 85, 82,150, 37,167,167,167,164, 73,204,213,213,213,232, -188, 73,211,148, 55,111,222,178, 94,135,244,183, 60,157,140,155,216, 17,191,122,252, 47,201,210, 81, 28,186,223,111,201,162,132, -170,109,232,109,207,245,237, 45,113,156,114,118,118,143,221,238, 48, 8,236, 2,142, 84, 16, 10,129,174,211,220,110,214,227,189, -154, 36, 9,167, 39,103, 84, 85,197,213,205, 53,105,154,112,122,122, 74, 86, 76,209,214,177,222,172, 71, 88, 78,150, 12, 32, 36, -173,185,217,239,241, 62,136, 34,231,243, 57,211,217,132, 87,219, 80,208,200,129, 30,106,189, 27,181, 5,137,214, 88,227,208,198, - 18,199, 3, 5, 77,197, 68,113, 66, 94, 20,236,246,251,224,170, 50,225, 58,166,105, 26, 68,131, 3,168, 75, 41, 21,236,113,214, - 66,164,200,138, 41,113,154, 17,201,152, 56,129, 72,248,247,124,218, 71,183,210,187,104, 83, 49,134, 87,249,191, 1,213,173,173, -185,147, 94,229,240, 62,172,189, 94,120,132, 15,197,147,119, 22, 47,124, 96,165, 68, 17,206, 25,140,237,233,250, 6,143, 9,227, - 75, 21,161, 34, 49,216,213,194,238, 29,210,231, 92,248,192, 12, 52, 59, 23, 14,141,226, 72, 8,149,191, 20, 40,197, 55,136,223, -127,229,166,238,126,249, 0,160, 98, 53, 65,201,227,204, 47,194,101,142,162, 48,239, 65, 69,186,174,165,105, 43,192,177, 92,206, - 89,174, 22, 40, 21, 81, 85,209,168,220, 61, 84, 37,155,253,158,194,104,244, 17,117, 58,164,187, 61,127,254,146,162, 40,184,184, -247,144,162,200,168,171,114,200,101, 78,233,117, 75, 81,196, 44,102, 11,210, 52,167,247, 59,170,182,196,120,141,241, 17, 6,201, -190,238, 56,205, 3, 36,199,235, 22,173, 61,217,124,201, 97,183, 39, 23,146, 56, 82, 96, 29, 93,213,208,138, 16,110, 16, 9,137, -181, 33, 18,111,115,104,176, 78,162,210, 41, 62, 74, 41,219, 30,239,195,235, 59, 91,206,169,118, 27, 34,233,152,100,146, 44, 81, -228, 89,130,140, 4, 86, 90,182,219, 61,177, 50,152, 97,211, 60,250,137,143, 12,229, 60,207, 67,245,155,188,243,190,235,222, 34, - 5,131,210,215, 14,115, 41,144,113,138,140, 61, 86, 4,108,173,179, 30,231,237,176,169, 15, 23, 92,184, 65,124,229,239,100,200, - 31,213,151, 46,248,173, 77,248, 30,100, 16, 43,182,221, 97,240,227,191,139,234,148, 81, 60, 90,251,240,161,171,210,181, 61,158, -119,208, 26,163, 53, 49, 49,222,132, 86,150,195, 67, 36,201, 84, 65, 58,207,153, 77,131,240, 77, 69, 10,171, 13,157, 51,236,215, -187, 80, 89,159, 43,156, 21,232,222, 19,201, 28, 33, 37,157, 14, 88,213,197, 50,196, 89, 38, 17, 44, 23, 39,236,214,111,240,214, -210,212, 53,118, 97, 48,189, 37,205, 38,161, 59, 97, 13,113,170,134, 92,128, 27,110,111,215,124,241,197, 23, 33, 14,210,116,136, - 40,162,107,107, 84,156, 35, 60,236, 54, 91,126,254,147,159, 49, 41, 22,124,254,249,231,180,173,198, 59, 57,216,121, 66, 39, 99, -191,223,179,222,238,144, 50,230, 59,159,126,135,166,105,136,149,164,215, 30, 39, 12,218,116, 24,163,105,155, 26, 33, 28, 50,242, -236,171,138,222,104,138, 40, 84,120,218, 26,228, 96,157,107,235,134,110,181, 34,207, 50,230,211, 41,155,219,107,116,215,134,205, - 4,139,183, 6,239, 44,174,119,116, 70, 15, 21, 64, 60,206, 48,231,179, 25,209,124, 17, 54,113,103,131,165,206,123,164, 74, 48, - 8, 94,188,124,197,171,183, 87,204, 23, 11,110,182, 91,140,243, 92,111,214,129,126,167, 50,220,192,113, 55, 93,168,208,143,179, - 76, 49,232, 28,170,170,194,118, 13, 74, 10,242, 52, 84,237,117, 93,179,222,151, 68,113, 17,170, 8, 60,218, 24,188,214, 24, 23, - 60,240,145, 82, 24,219,179, 59, 52,196,217,140, 89,154,209,237, 91,138,217,148, 52,203,121,254,252, 57, 78,134,132, 53,235,222, -145,181,142,247,207,113,198, 42, 7, 36,113, 93,215, 35,191, 58, 30,208,163, 71, 81,229,177, 82, 86,195,215, 30, 61,201, 89,150, -145, 42, 73,146,134,138,167,169, 42, 14,135,122,244, 2,247,125,176, 8, 5, 87, 67,135,117, 26,105, 69, 56, 72, 13,116,174, 56, - 75,169,251,158,174,211,180,186,127, 7,183,105, 90,110,111,111, 41,155, 58,140, 65,140, 29,186, 48, 61,214, 71, 68, 78, 80, 85, -193, 34,149, 47,210,160,212,111, 26,186,190,195,153,129, 3, 17,105, 38,211,130,239,127,255,175,121,252,248, 33, 15, 31, 61,225, -226,226,130, 7, 15, 31,243,167,255,238,207,185, 89, 31,200,242, 44,140, 66,132, 96, 62, 15,113,173,218, 89, 62,252,240, 67, 94, -190,124,129,112, 71,189, 68, 67,166, 2, 42, 55,203, 50, 38,147,201,168,196,159,207,231, 44,151, 75,222,190,125, 59,118, 29,251, -222,112,186, 58, 97,177, 88, 5, 4,175,143,176, 54, 56, 70, 54,155,221, 72,172, 60, 58, 62,142, 54,221, 35,177,175,170,170, 17, -178,181, 90,173, 72,211,148,183,111,222, 82,150, 37,211,249,140,201,100,194, 98,177,224,112, 56,132,247,169, 44,201,178, 16,155, - 43, 28, 35, 94,214, 24, 61, 8,117, 83, 30, 61,122, 16, 82,213,242, 4, 55,108,226, 85, 93,211,182, 1,204,211,116, 29,170,109, - 71,232,207,209, 97,114,116,186, 36, 73,198,213,213, 85,208, 39, 84,213, 47, 9,210,150,203, 19,230,243, 37,229,190, 66,136,136, -170,170, 17, 66,210,105, 75,219,187, 32,126,117, 71, 44, 53, 68, 49, 99,102,250, 47,137, 90,191,145,215,254,254,215,168, 36,190, - 99, 25, 62, 58,118,162, 81, 15, 19,220, 72,239, 62, 63,250,227,189,183,104,221,161,117,135,179, 67, 39,204, 71, 67,240, 88, 24, -119,122,111,199, 95,197,168,116,119,195, 38,238,134,167,210,253, 82,114, 27,255, 63, 43,249,177, 82,239,235, 48, 91, 61,222, 8, - 74, 29, 79,209, 32,162,208,242, 75,210, 28, 21, 59,180,233, 73,210,120,156, 1,131,163,105,218, 64,221,137, 35,132, 20,116,125, -143,182,123,140,177,120, 17,216,227, 63,251,197, 51,150,203, 37, 31,127,244, 25,145, 76,185, 93, 31,240,222, 51,159, 79, 41, 38, - 49,109, 93, 50, 75, 99, 34,103,104, 76,137,245,154,124,178,224,225, 7, 31,241,118,189, 39,114, 57,179, 88, 49,155, 78,217,172, -191, 66, 20, 75, 18, 61,197, 89, 67,223,183,200, 56, 1, 11, 70, 68, 56, 20, 36, 41, 22, 40,171, 32,150,235,140,227,116,181,100, - 58, 27,188,152,117, 69,150, 39,236,182, 7,112, 30,221,157,178, 92, 77, 57, 61, 93, 97,140,230,112,232, 6, 11, 85, 70,146,230, -104, 27, 88,210,105,154, 14, 99, 10, 79, 26, 7,162, 80,158,231,180, 93, 51,206,177,182,117, 53, 86, 44,105, 22,211, 54, 65,125, - 62,153, 76,130, 37,201, 90,250, 65,236,229,156, 25, 50,142,143, 0, 18, 63,122, 44,194, 53,136, 66, 55,104,216,216,173, 61, 90, -196,142, 23,208, 34,112,244,189, 70,136, 22,107,134,131, 68,111,113,174, 25, 60,171,237, 16,189,105,135,209,135,199,234,225,117, -248, 8,237,122, 4, 22,239,251, 97, 22, 44,137,211,224,119, 85, 81,132, 31,128, 44,222, 6,164,106, 93,215,136, 97,209,206,138, -156,117,117,224, 80, 55,116,218,209,118,118,132, 72,120,231,137, 39, 25,235,155, 27,138, 60, 71,120, 75, 26, 39,188,122,241,156, -199,143, 63,194, 90,195,205,245, 22,148, 31,192, 37,142,170,169,185,221,172,131,255,255, 24,254,160, 20, 93,223,224,108,135,138, - 19,206, 78,150, 60,124,112,129,238, 61,135,253,158,143, 30, 63, 66,224,176, 6,218,174, 67, 37, 49,211,201,130,253,174, 98,115, -187,229,106,126, 69,211, 52, 60,188,127,129, 82, 50,248,168, 93, 27, 42, 58, 66, 46, 64,219,118, 97,102,232, 2,121, 48, 78,115, -140,179, 24,237, 56, 93,157,208,230, 65, 44, 56,153, 76,112, 46, 60, 19, 93,211, 18,217, 0,230,145, 81,104,253, 57,231,232,219, - 62,192, 61, 84, 10,121, 14,145,160,114, 14,235, 60,218, 5,107,168,182,134,151,151,151, 60,123,246,140,186, 53,116,214, 49,153, -207,169, 58,205,171, 55,111,233,180,165,233, 90,156, 23,164,121,200, 9,111,135, 86,110,162, 20,211,233,148, 52, 81,116,189, 97, -189, 94, 99,157,166, 72, 83,138, 44,197, 91,205,190, 12, 34,213, 36, 73,176, 34,164,138, 89, 29,180, 38,169, 10,215,222, 35,105, -187, 14,103, 35,124,148,210, 25,135, 53,134, 52,155,178, 88,158,132, 89,126,221, 16,103,193,218, 90, 86,221,187, 22,124,223, 35, -165, 96,191,223,135,123,113, 32, 44,234, 62,232, 69,162,161,179,164,117, 71, 20, 41,226, 56,165, 51, 97,230, 60,201, 10, 68,164, - 24,110,229,192, 11,240, 26,219, 11,210, 56, 8, 50,215,235, 53,189,182, 1,138,163, 59,112, 61,211, 73, 70,211, 4, 1,218,241, - 16,172,143, 62, 95, 17, 42, 69,231, 61,198,218, 0,125,177, 30,109, 13, 85, 93,227,124,120,239,143,226,162, 80, 1, 10,148,138, - 49, 93, 77,146,167,196, 50,136,231, 58,239,113,198, 6,193,174,181,196, 82,241,236,249,115,238,157,159,211,153,142,207, 62,251, -140, 79, 63,249,136,159,254,244,167,156,156,159, 97,133, 68, 70, 41,105,158,210,180, 21,183, 55, 27,170,170, 36, 82,146,221,110, -203,131,123, 23,204,138, 9,222, 58, 54,219, 91,148, 23,204,102, 11,238,159, 94, 4, 11,168,233,200,138, 20, 21,199,116,125, 79, - 57, 84,168,206, 57,146, 52,136, 93,243,162,192, 19,161,109,232, 48,164, 89, 14,222,211,117,125, 56,248, 9, 69,150, 22,195, 33, - 50,216,223,244, 16,172, 18, 69,146,143,158,124,200,219,235,107,126,241,243, 47,153, 76, 38,204,231,115,210, 52,101, 49,155,115, -249,234, 85,216,144,187,110, 68,153,214, 85,131, 30,162, 87,165,140, 88, 46,151,164,113,130, 0,166,147, 9, 55, 55, 21, 69,150, -243,246,237,219, 49, 56,200,232, 96, 37,134,136,222, 88,140,209,227,225, 68,107, 67,175, 13,206,123,170,182,225,229,235, 55,236, -246, 37, 85,221, 98,122,139, 20,161,203,119,124,182,218,182,231, 80,213, 88, 23, 82, 22, 85,156,130, 80, 52,109, 71, 60,192,204, -132, 80, 40, 37,113, 71, 66,231, 49,141,242, 78,181,126,151,119, 49, 70, 25,127, 77,233,238,189,251, 70,187,233,123,212,182, 59, -248,229,227,199, 49,162, 22,103, 6, 1,109,176,103,123, 27,170,122,239,192,105, 63, 16, 67, 29,194, 27, 68, 80,213, 4,151,146, -119, 3,178, 91,126,131, 92,239,239, 30,229,252, 94,165, 30, 78, 16, 22,103,131, 76, 42,138, 64,169, 48, 63,112,206,112,115,179, -101,185,156, 7, 42,147, 61, 86, 1,109, 0, 45, 56, 71,217, 84, 48, 68, 27,102,121, 65,150, 77,137,132, 98,187,175,216,239, 75, - 54,155, 64, 63,194, 11,174,110,110,177, 30,140,143,200,211, 48, 87,114, 62,180, 38, 19,119, 64,119, 17,157,109, 17,169, 36, 75, -115,138,199, 79,216,237,107, 98,219,163,119, 27, 22,249,132,166, 44, 57, 95,157, 81, 87, 37,186,239, 16,198, 98,188,192, 56,143, -143, 98, 84, 28,108, 86, 85,221,114,117,187,166,235, 58, 78, 79, 79,153, 45, 86, 67, 59, 40, 38, 42, 10, 38,121, 76, 91, 30,112, -237, 1, 93,109,145,203, 28,233, 45, 77,215,132,121,144, 11,118,131,163,221, 72, 16, 97,172, 99,191,223,211,117, 13,121, 26, 83, - 76, 82,140, 13,115,255,192, 23,207,176,195,205,160,148, 34, 77, 38,196, 42,204, 76,131,104, 66,224, 6, 18,219,113,255,150,113, -130,240,230, 61,155,211, 81,232,129, 23,104,221, 19, 69,119,153,234,114,104, 63, 5, 21,125,221, 53,193, 53, 96, 60, 26, 61, 18, -172,182,219, 32, 98,187,127,255, 94,104,153,138,208, 30,195, 57,106,239,177,198,160,100,130,105, 59,164, 28,130, 55,136, 64, 14, -173,121,167,222,227,184, 59,103, 57,148, 33, 97,111, 62, 45,176,222, 16,137, 24,231, 5,111,174,110, 57, 28,122,156, 16, 88,227, - 49,125, 79,145, 39,164, 79,238,147, 42,143,112,193,246,210,117, 65,155,176,223,238,152,205, 87, 20,105,134,145, 30, 59, 4,193, - 44,150,167,108, 55, 33, 9, 43, 75,227,208, 97,112, 65,161,238, 6, 94,242,249,233, 9,203,197, 9,109,171,233, 90,141,179,150, -205,102,195,201,201,146,217,116,137, 23,158, 94, 31,103,252, 19,158, 63,127, 14,192,180,200,233,250, 26,129,161,237, 14,156, 44, -231, 16,133,205,237,118,189,229,245,235, 55,116, 70,179, 88, 84, 92, 92, 92, 48, 95, 46,194, 41,125,176,231,236,182, 91,186,186, - 38, 81, 17,103,167, 43, 14,214,176, 43,119, 16,133, 84,169,249,116, 66,162, 66, 76,228,237,205,134,174, 42,209, 77,205,227, 15, - 62,164, 25,218,206, 2,232,141,166,106, 26, 94,190,122,197,159,254,197, 95, 50,157, 44,176, 14,170,182,163,237, 58,234,214, 32, -162,136, 98, 50, 35, 77, 51,154,190, 11, 7,107,169, 66,251,122,176, 21,226, 45,109,167,135,215, 58, 40,117,189,163,105, 66, 22, -118,156,100,196,121,160,128, 53, 85, 77,132, 97,154,166, 44,138,156,233,116, 78, 20, 39,152,222,224,156,100,121,122, 66,219, 24, -122, 7,157,134, 63,249,215,127,138, 19, 49, 39, 39, 39, 92,175, 75, 82, 33,168,203, 3, 94, 68,161, 77,173, 59,148,204,112,246, - 29, 81,239,110, 21,127,215,143, 62, 90,247,218,246,189,170, 61,228,194, 75,210, 56, 98, 62,157,112,178,146, 60,184, 56,199,244, -154,205,250,134,111,125,244,152,207,191,248, 46,218, 26,218,166, 68,120,141,119, 14,163,131,245, 84,184, 16,232,225, 28, 88, 19, - 42, 65, 21, 71, 35, 95, 33,146,199, 8, 91,143, 26,156, 55,214,153, 0, 45,241,154, 36, 78,195,161,187, 12,182,206,190,237, 70, -171,146, 16, 18, 55, 68, 76, 59, 99, 40,138,130,151,151,175, 88, 44,230, 40,149,176, 47, 15, 44,102,115,150, 39, 43,246,135,154, -215,175,223,114,255,225, 99,132, 15, 76,244,221, 33, 84,222, 63,254,241,143,153, 79,166,180,109, 75, 83,213,220, 92, 95,179,152, - 6,241, 94,158,101,212,135, 61,223,249,252, 51,102,179, 25,187,237,129,215,175, 95,135,123,117,200, 33, 95, 44, 22,119,192, 39, -146,190, 51,180,109, 79, 81, 88, 34, 4,109,215, 50,155, 46,198,156,131, 99,103,174,170,170, 49, 29,175, 40, 10,158, 61,123,198, -237,102, 51,182,255,151,203, 37,113, 28,243,244,233, 83,234,182, 30, 19,194,142,156,129,166,105,104,170,106,132,100, 29,249, 26, -203,213,148, 44, 75,104,234,112,216,154,228, 5,145,146, 65,143,226, 29,113,154, 32, 7,102,197, 17, 57, 27, 58,153,106,232,252, - 42,118,187,221,216, 65,112, 3,204,235,226,226, 34,140,103, 90, 77, 89,150,124,245,213, 87, 92, 93, 93,209,247,134,195, 33,188, -150,103,207, 94,112, 56, 84,227,154, 20, 94, 75,204,124, 62, 37,146,193,141,116, 28, 3, 29,105,121,209, 49, 28,229,107,202,246, -240,158, 14,182, 91,103,239, 0,191,222, 7,128, 29,239,227, 40,146, 99,149, 30, 70,161,126,180,160,134,153,123, 76, 26,199, 68, - 81,124,167, 2, 15,173,115,239,237, 55,110,217, 65, 7,224,255, 78,155,246,223,186, 82,159, 20, 25,214, 74,140,211,161,197,160, -228, 96,111,178,120, 43,208, 78,227, 35,129, 76, 98, 34,175,134,100,157,160,146, 69, 70, 76,103, 43,234,182, 9,243,113, 21, 88, -202, 72,137,247, 37,219,237,150,103,207, 95,208,107,195,190, 60,240, 87,255,254,175, 89,173, 86,156,157,157,113,239,236,156,178, -169,137,208,161,173, 38,226, 96,235,113, 61,200,132, 70, 27,226, 52, 70, 9,199,205,118,207,205,238,134,213,100, 74,154,197, 88, -171, 57,236, 58,140, 11,201,230,169, 12,182,128, 35,176, 5,107,131,103,179,237,152, 46,230, 76,151, 75, 58,221,211,174, 75,206, - 86, 11, 14,187, 91,170,173,193,244, 29, 23,103, 39,188,125,245, 18,233, 3,109, 76, 73, 65,154,101,180,131, 74, 59, 82, 49, 74, - 42,164, 12, 51, 58,221,119,244,109, 9,147, 60,160, 54,157, 71,119, 45, 69,150,179,156, 47,208,121, 64, 72,166,121,198,108, 58, -167,105, 26,118,229, 97,248,185, 2, 61, 78,201,112,227, 29, 23, 30, 6,239,110, 72,117,243,239, 60,220,163, 69,205, 15, 45,206, - 65,145,137, 31, 82,224,194, 71,145, 77,222,205, 30,173,165, 60, 28,216,172,111, 56, 57, 57, 9, 41, 71, 3, 38, 87,138, 8,235, - 12,213,161,164,139,162,145,135, 30, 39, 1,110, 35,162,119, 9,117,198,234,247,253,157,206,177,217,134,217,224,105, 62,229,208, -108,137,109,143,177,130,170,238,105,219, 14, 25,231,104,237,232,122, 67,145,165,164,105,206,197,201,148,190, 11,132, 66,211,107, -238,157,157,243,139, 47,159,226, 28, 76, 23, 39, 56, 33,232,123,112,198,187,149, 70,202, 0, 0, 32, 0, 73, 68, 65, 84,147,231, -115,166,179, 19,186,206,146, 37, 57,110,168,150,147, 84,161,132, 8,234,126,225,153,207,166,156,158,164,120, 7,111,223, 94,243, -242,229,115,226, 88,176, 90,125,192,161,220,115,115,117, 75, 83,213,172, 86, 43,116,215, 15,167,255,150,253, 97,143,115,150, 72, - 58,182,187,142, 40,178,244,198,177,217,239,169,187,161,213,223,235, 49, 57,175,239,123,110,174,222, 34, 69,216, 24,188,181, 68, -131,200,211,246,161,221, 41,100, 80,185, 59,147,160,226,148, 56,146, 72,225,241,218,224,132, 96,115,117,131, 21,130, 98, 54,103, -189,219,242,253, 31,252,144,203,171, 55,148, 85, 69,213,106,100,226,120,241, 50,160, 86, 79,206,207,240, 8,170, 1,134,211,105, - 55, 30, 24, 99, 41,198, 13,203,152,112,159,222, 21, 82,213,117, 77,215, 6, 15, 52, 16, 4,117, 85, 21, 80,202,194, 51,157, 20, - 76, 82,137,183, 13,187,125, 73, 89, 53,228,177,196,203,140, 23,175,110,232,123,139, 74, 11, 14,117,104,207,171, 52,225,229,171, - 55, 68, 42,166, 90, 55, 52,109, 31, 52, 23, 66, 32,163, 8,211, 5,220,108, 72, 22,244, 35,216, 37,168,122,163,209, 70, 21,169, - 48, 2, 59,230,170,251, 72,208,107,195,172,200,121,176,156,242,219,223,249,132,147,185, 34,150, 21,203,233,148,186, 44,201,164, -228,191,254, 47,255, 33,255,249, 63,252, 71,252,179, 63,252, 23,252,233,159,253, 5, 77,189, 67,119, 2,167, 27,124,164,136,165, - 39,149,193,181,225,173, 14,186, 12,107,104,234,146,234,112, 24, 8,130, 33,167,221,153, 64,196,108,202, 67,112,102,184, 35,205, -207, 82,151, 21,222, 7,128, 85,154,166, 36, 82,225,180,193,104,141,183,154, 98, 58,165,106, 27,242,233,132,125, 85,113,249,234, - 53, 46, 18,148,135,154,249,124, 62,188,174,176,134,181,109,205,201,233, 18,161, 32, 77,114,250,190,167,111,123, 76, 31,178,195, - 31, 61,122,196, 98, 58, 27,171, 58, 33, 60,251,178,228,205,245, 91, 94,189,184,164,170, 42, 78, 79,206,153,207,231, 99, 71, 65, - 27,135,113,193, 54,220,247,129,151, 81, 85, 13, 73, 18,240,200,130, 14,109, 45,135,170,194, 12, 99,193, 44,203, 7, 84,181,226, -246,246, 54, 88,216,140,225,226,193, 3, 30, 62,124,200,102,179,225,213,219,144, 29,127,132,183,116, 93,135, 84,134,197, 60,204, -183, 25,254,174, 34,203,152,207,230,224, 45,203,249,130, 72,120,206, 86, 43,158,237,247, 76,166,225, 25, 61,194,134,142, 27, 76, -111, 76, 8,160, 82, 18, 31, 5,101,186,197, 35,147,152,253, 32,234,115, 67, 90,227, 17, 43,124, 92,187,173,241,225, 80,220,106, - 98,149,226,188, 64, 14, 69,154,117,107,188,247, 99, 2, 96,154,166,188,126,253, 22, 57,108,234,105, 26,214,221,227,198,126, 20, - 6,222, 37,175,221,221,216,133, 16,204,167, 5, 66,188,179,232, 29,255,223,241,243,163,144, 60, 26,178,208,143, 93,169,144,170, - 25,196,178,227,159, 91, 15,196,160,194, 40, 91, 18, 84,113,158, 99,142,250, 55,100,160,135,208,214, 95, 35,132,251, 59,200,234, -196,113,164,144, 10,188, 15,216, 61,235,205,104, 13, 8, 45,222,104, 76, 54,106,219,160,108,205, 82,133,115,208,119,193,202, 35, -100,192,136, 42,149,133, 27,174,109,145, 81, 76, 28,167, 76,167, 83,158, 60,121, 50,222,128,219,237,150,155, 27,195,106,181, 36, - 82, 33,221, 72, 73, 55, 80,185, 28,186,239,131, 95, 24,137,214, 45,214, 91, 82, 5,182,213, 8, 45,248,234,233, 37,243,229, 73, -152, 59,165, 57,233,100, 66,150, 23,204, 87, 39, 40, 21,211,246,102, 88,144, 82, 68,156,112,113,113,193,226,100,197,100, 54,229, -176,185,197,154,150,188,136,217, 92, 85,244,125,195,227,251,247,209,189, 99, 90,100,193,119, 45, 5,162, 11,213,124, 16,250, 89, -116, 31, 54,226, 82,107,148,148, 44,102, 5,106, 94, 4, 75,133,213,212,117,176, 16, 77, 38,179,241,134, 43,171,154,174,215, 56, - 43,120,250,226, 57,219,237,150, 94,235, 17, 32, 51,155,205, 88,172,150,228,113,130,176, 54, 88,107, 6,107,217,168,126,183,122, -204, 12, 22, 34, 26, 71, 35,225,192, 21,161,181, 31,195, 78,178, 52,128, 61,122,221, 18,251,112,115,207,231,115,158, 60,121, 20, - 50,124, 61,196, 42, 70,197,146, 94,126,109, 54,170,196, 8, 54,178,222,224,181, 71, 11, 51, 10,158,242,124, 18, 90,164,206,177, - 61,108,131,135, 63,139, 57,236, 43,156,208, 92, 93,237,168,202, 6, 99, 60,198,117, 88, 35, 72,146,128,196,141,227,152,235,235, -107,230,147,132, 55,111,222, 80,100,129,112,117,239,236,156,221,161, 38,201,231,172,171, 22,227, 37,214, 24, 22, 11,133,209, 17, - 93,231,145,203,160,161,144, 50,140, 48, 34,201, 16,223,232, 40, 15, 27,164,140,201,179, 9,203,213,140, 36, 13,137,107,117, 83, - 13,217,215, 41, 74, 45,201,178,140,229,114, 57, 66, 81,242, 44, 48,192,167,179,130, 94, 71,180, 77, 75,163, 27,154,214, 48, 95, -156,178, 92, 46,135,197, 34,167,170, 26,222,188,190,164,218,239, 89,174,230, 60,184,119,206,126,191,225,213,203, 75, 46, 95, 62, -231,116,185,224,236,226, 30, 69, 22,238,237,245,122,205, 94,236,209, 93,240,235, 71, 81, 80,235, 79,167, 51,222,220,220,114,168, -223,242,250,230,150,159,252,252,103,188,189,185, 37,206, 82,172,135,155,219, 13,235,237,110, 56,228, 37,108,182,123,170,170,226, -252,254, 5,139,197,130,203,203,203,176, 40,107,131, 84,130,211,213, 73,104,135, 38, 9,187,253, 30,213,135,164,190, 60, 86, 88, - 27,186, 47, 1, 82,148, 99,189,227,102,189,165,152, 78, 56, 93,205,113,186,229,234,242,146, 47,191,124,202,231,159,126,204,253, -139,179, 64, 61,187,252,138,127,250,251,255, 28,132,228,119,127,239, 63,101,127,168, 49,187,118,156,141,111,182, 91,164, 20, 24, -235,137,132, 36, 18, 14, 99,124, 24, 59, 12, 98,207,163,128,238,104,193, 57, 2,141,142,155,203,177,101,121,116,168, 44,151, 75, - 62,124,120,143, 73,145,115,182, 10,215, 37, 75, 20,249,106,201,201,106,193,164, 88,161,155,154,223,252,206,167,252,211, 76,226, - 77, 3, 78,162, 48,164, 82, 49,201, 38,164,210, 7,161,156, 8, 21,188,233, 59,234,253,142,195,126, 75,223, 53,232,190,197,105, - 79, 83,149,212,135,154,186,170,137,100, 0,216,104,109,233,218,154,230, 16, 66,127,138, 97,198,109,109,160,154, 29,201,110,189, -217, 7,225,102,103, 72,179, 24, 47, 36,215,215, 55, 33,234,244,230,134,199,143, 31,243,221,239,126,151,178, 14, 92,245,123,247, - 31, 4, 1,225, 62, 84,149, 86, 7,162,155, 30, 32, 61,106, 24,159, 24,221, 81,150,123, 78, 79, 79, 89,175,215, 35, 3,253,200, -192, 56, 70,160, 74, 25, 42,244, 60, 15, 46,135, 44, 11, 29,146, 35,212,167, 25,104,125, 71,171,213,177, 66, 7,184,186,186,162, -174,107,102,179, 25,159,124,242, 9,231,231,231, 84, 85,128, 10, 73, 41, 81, 81,132,238,122,226,244, 29, 0,234, 40,214,115,198, - 16,199, 10, 25, 73, 62,249,214, 71, 8,239,232,117, 8,109,249,244,211, 79,185,190,121,203,122,123, 96,209, 5, 94, 70, 89,135, -236,144,254, 8,178,146,140, 25,237, 33, 29, 49,136,204,154, 65, 88, 25, 33,232, 6,239,252,145,230,216,182,237,157,131,146, 29, -214, 83, 67,154,102, 67,148,106,132,148,209,168,135,138, 34,137, 24, 48,171,206, 70,244, 93,112, 79,181,210,140, 27,244, 8,210, -194,127,173, 19, 26,238,221, 75, 99,145, 74,188,167,243, 56,254,254,168,204, 63,226,119,143,122,165,163,142,228,246,118,141, 53, - 26,231,122,186, 70,143,142, 36,229,163, 32, 24,118,199,145,170, 26,118, 92, 57, 40,219,228,224,163,191,107,150,191,251,201,127, -216,175, 10,215,112,187, 89, 83, 20, 5, 42,137,169,235,240,166, 11, 25,196, 66,105,158,113,187,222, 98,173,103, 54, 91, 32, 35, - 23,152,236,113,129,209, 45, 86, 27,100, 82,112,216,135,139,170,100,152,137, 28,219, 60, 31,126,248, 97,160, 73, 69,130,221,110, -199,102,115,139, 84,158,235,205, 91,108,223, 49,155, 78,112,189,166, 45, 43, 36,146, 67, 85,147, 78, 11, 62,251,238,111,240,211, - 95,252,148,124, 57,195, 56,136,156,100,186, 58, 15, 66,145, 56, 33, 45,130, 93,163, 75, 44,155,195,129,243,243,115,246,235, 91, - 84,154, 81,238, 58,122,237,248,228, 91, 31,210,116,154,190,239,168,170, 3, 93,189, 35, 75, 36, 78,183,220, 91, 22, 92,156, 46, -105,117,196,183, 63,251,156,205,126,131,179,176, 92, 46,217, 87, 53,171,147,130,106, 83, 51, 41, 22, 28, 14, 21,103,167, 39, 33, - 38, 82,119, 40,153,132, 25,115, 93,134,116,170,172,224,246,246,150,163,131,173,170, 42, 86,171, 83,174,111, 55,252,236,167,191, - 96, 62,159,243,173,207, 62,161,109, 91,158,191,120,202,118,183,230,225,163,251, 65, 12,166, 53,243,233,132, 98,146, 13, 17,136, - 97, 78, 89,228, 83,246,251,146,190,179, 99,238,174,240, 62,128, 58,156, 6,225,144, 82, 96, 61,212, 77, 57, 46,192,109, 85, 19, - 71,130,207, 62,249,152,174,111,193,201,144, 13, 47, 64,247,129,247,156, 37, 33,124,230, 80,238,152, 47, 86,172,183,123,148, 74, - 2,227,126, 76,160, 18, 76,102,211, 32, 30, 33, 8,191, 62,254,228,211,208, 50,107, 58,144, 10, 47, 4,121,158, 15, 11, 78,142, -113,112,216, 55,244, 77,205,126,239,105,154, 19,138, 56, 88, 88,206, 78,231,196, 50, 98, 59,220, 39, 15,166, 11,158,191,186,229, -197,213,129,125,165,131,210,212,191, 4,103,120,240,224,130,179,229, 57,130, 4, 37, 36, 62,242,120,111,176,125, 96,251, 39, 42, -180,194,122, 93,227,240,124,244,209, 99,188,247, 28, 14,155, 65,196, 5, 89,150, 96, 76, 31, 44,135, 67, 86,116, 28,231, 40,229, -233,219, 65,132, 24,229,172,215,215,164,121,216, 84,214,219, 61, 31,127,240, 33,105, 26,243,131,191,254, 43,126,246,243,159,240, -217, 39,159,140, 97, 23,199, 80, 11, 99,123, 38, 89, 26,232, 89, 3,255, 61, 81, 49,198,247,232, 94,135,107, 82, 86,148, 85,131, -246,158,159,127,245, 37,255,238,207,254,130,214, 57,234,190,163,110, 59,242, 36,102, 91, 86,220, 92,111,152,205, 22,131,107, 34, -225,228,228, 12,227,161,105, 58,172,245,131,171, 33, 38,159, 76,185,221,172,233,141, 38,205, 51, 14,187, 61,109,223,177, 92, 46, -185,190, 89,211,215, 54,136,173, 78,150, 35, 30, 84, 24, 67,158,198,156, 44, 23,188,190,124, 65,162, 2, 42,244,199, 63,125,206, -197,189,239,243, 79,254,201,255,204,245,245, 53,127,244,199,255,134, 87, 87, 91,164,146, 60,123,126,201,245,237, 45, 42,206,131, -205,232, 80, 14,186, 31, 79,162, 34, 58, 29,226,109,167, 89, 76,111, 45, 89, 62, 9, 64, 34,109, 48,198,146,164, 41,194, 59,154, -170,198, 91,131, 20, 80,151, 7,148,138, 6,148,106,136,208,236,234,138, 87, 47, 94, 82,190, 53,208,158, 51,201,131,136,239,199, - 63,250, 9,125,221, 16,217,152,205,250,134, 60, 79,249, 71,255,197,127, 70,175, 99,214,235,154, 76, 6,142,193,223,251,157,111, - 51,153,166, 56, 99, 57,148, 45,187,125,136,148, 77, 99, 9, 70, 99, 12, 8,107, 48,166,167,173, 43,210, 36,198, 59,144,210,129, - 3,133,195,245, 1,236,226,135,177,218,113,134,108,173, 5,169, 48,214,210, 15, 80,155,172,200,113,131,213, 81,198, 65,207, 80, -215, 53,175, 95,191,102,177, 88,208,212,221,176, 81, 74,210,105,202, 98,190,226,242,242,146,184, 8,116,185, 56,146, 76,178,124, -108,143, 79,138,108,232, 36,117,252,228,135, 63,226, 31,255,227,255, 30,173, 53, 63,250,209,143, 40, 38, 25, 85, 25,232,157, 93, - 91, 19,171, 16, 27,124,114,114, 50,160, 93, 91, 18, 21, 67,146, 32, 58, 19, 2,119,102, 51,226, 56,102,177, 88,176,223,239, 57, -236,246, 56, 19, 58, 16,159,124,244, 17, 69, 81,112,115,115,195,118,187,133,209,110,229, 81,177,164, 42, 15,193, 78, 26, 9, 18, -165, 2, 22,123,183, 11, 22, 76, 41,209, 93,143,240,150,242,176,167,222, 29,248,199,255,221,127,203,245,213, 27,254,159,127,249, -175,168,235,154,170, 58, 12,135,187,176,241, 7, 91,113, 52, 8,239,178, 17, 53, 27,160,102, 65,147,145, 37,233, 80,153,155,247, -130, 82,154,166,225,250,250,154,162, 40,104,154,102,108,227, 31,161, 90,186,183,131,218,222,227,149,192, 24,139, 49, 97,191, 41, -138, 4,103, 69,208,243,196,161,245,174,251, 32,208,115,222, 97,237,187,232, 95, 99, 12,198,234,208,189, 52,193,101,212,122,243, - 94,219,253,120, 64,189,155,213,145,231,121,136,138, 85,138,195, 97,135,192, 81, 76, 82, 54,235,138,235,159,124,201,242,100,193, - 7, 31,124, 64, 82,100,252,245, 95,253, 37, 90, 91, 38,197,156,100,200,232, 56,118, 0,100, 20,145, 36,138, 56, 77, 16, 74, 4, -231,144, 24,246, 86, 37,136,132, 26, 63,191,107,181,243,110,232,162, 59, 49, 88,237,212,248,185, 39,136,162, 21,162, 39, 81,142, - 72, 26,122,221,209,183, 13,206,103,136, 72,209,107, 67, 74, 68, 89, 55,164, 42,199,104,143,139, 35,156, 27,168, 94, 50,195,244, -193, 19,121, 76,150, 10,167,157, 16, 4, 50,155,205,176,189,230,186,122, 59,248, 24, 61,179,217,132, 94,119, 36, 50, 66,205, 67, -128, 64,164,226, 48, 51,172, 91, 68,148,132,106, 35, 86, 60,121,112,143,205,245, 91, 50,149, 50, 93,221,167, 61, 84,136,196,241, -232,226, 1, 78, 41, 26,173,121,246,226, 57, 79,158, 60,225,203,103, 79,185, 56, 59,103,181, 90,241,213,243, 23, 68, 66,241,244, -171,159,145, 77, 23, 97,174,147, 38,148, 59,205,139,103,207, 73,179,132,233, 36,224, 94,211,108,202,217,189, 7, 84,125, 79,154, - 39, 68, 17,163,103,243,222,217, 41,251,221,129, 60,149,129, 44, 53,205, 56, 59, 63,225,245,235, 87,196,233, 32,146,107, 91,188, -183, 35,115, 89,170,152, 52,205,105,251,112,154,251,238,119,191, 27,196, 41,203, 25, 85,125, 32, 73, 63,197,123, 71, 85,238, 2, -193, 76,134,139,216, 52, 13,125,223,142, 21, 15,194, 49,157, 22, 92,238,222,224,236,157,217,137, 24,116, 15,241,160,206,237, 61, -118,160,149, 29, 14, 59,138, 34,227, 80,110, 67,236,166,238, 40,178, 57,189, 14,145,179,199,211, 50,230,157,112,164, 44,107,102, -139, 21,189,209,196,113,224,122,207,103,203, 64,172,171,111,121,248,240,225,248, 96,169,216,226,157, 67,197,225, 6,143, 85,134, -148, 5,249,100,193,108,186,228,205,213, 53,191,168,190, 34,153, 22,100, 67, 75,127, 54, 75,233,155,161,154,115, 33, 5, 42, 78, - 10, 54,219, 3, 95,125,245,148,175, 46,247, 36,197, 28,225, 66,198,117,166, 98, 46,238, 61, 64,202,148, 24, 19, 82,253, 34, 55, - 28,102,221, 48, 91,247,163, 13,208, 2, 73, 42, 8, 83,151,193, 58,118, 20,235,249, 0,231,120,167, 46, 13, 15,112,175,109, 96, - 27, 88,139,247, 80,150,213,152, 7,208,223, 15, 7,128,170,106, 88, 45, 79,249,232,163,143, 71,196,112, 81,100,124,251,243,223, - 32, 75, 98, 68, 20,116, 13,158, 8,111, 12, 93,111,136,149,162,211,150,178,172,233, 7,102, 67, 47, 34,222, 94,221,112,179,221, - 33,211, 20, 39,224, 80,213,108,170,138,221,161, 36, 73,114,234,166,225,254,253,135, 65,156, 89,228, 76,218, 9, 39, 39,103,236, -247, 97, 81, 60,182,224,191,245,241, 39,228, 69,138,181, 14,109, 13,175, 95,191, 65, 40, 73,146,230, 44, 23, 1, 6,178, 59,236, - 57, 79,206, 40,138, 2,173, 53,155,205,134,219,155,107, 30, 63,188,207,250,246,138,253,126,195,199, 31, 63,226, 31,253, 87,255, - 13,251, 67,195, 31,252,225,191,226,242,237, 26,107, 97, 95, 90,126,242,179, 95, 16,199, 41,197,100,194,223,255,251,255, 49,111, -174,110,184,221,108,105,170,154, 78,247, 84,101,131,136,124, 64,184, 10, 64, 74,174,174,111,169,134,205,255,216,186,188,107, 61, -203,243,124,120,255, 10,206,206,206, 66, 30,247,245, 13,183,166,229,123,159,125, 64, 28, 73,210, 84,242,229,151, 95,114,123,123, -203, 39, 31,125,139,127,243,111,255, 28,169, 98,136, 9,217, 14, 34,160,100, 19, 21,113, 48, 61, 77, 85,243,228,241,125,164,136, -216,237,126, 65,223,181,168, 72,176,223,110,105,235,146, 60, 38, 48,208,251, 14,171,205, 0,192, 97,136,233, 13, 41,148,214,133, -180,193,187,122,150,175, 11,143,178, 44, 11, 33, 48, 85,139, 84, 2,103,163,225,222, 79, 73,146,140, 88, 42, 14,135, 3, 50, 10, -204,251,167, 79,159,242,123,191,247,255,177,245,102, 77,150, 29,231,185,222,147,107, 30,246,188,107,215,208,213, 35,102,144,128, - 72, 73, 60, 58, 82, 56, 44,251, 12, 97,135,195,255, 66,191,196, 55,250, 37,142,112,248,202, 87,190,208,104, 89, 65,250,136,146, - 72, 29,137, 0, 5,162,209,243, 88, 85,123,222,107, 94,153, 43,211, 23,185,106,131,138, 56,184, 65, 4, 72,160,187,107, 15, 43, -243,251,222,247,121,254,128,217,124,193,124, 62,231,197,179, 23,212,117,109,249,233,149,245,160,223,189,123,199, 62, 44,165, 36, -203,236,100,103, 48, 24, 32,250, 67,242, 45,138, 57,138, 3, 84, 43,143, 77,131,170, 42,241, 3,151, 36, 29, 17,120,190,101, 8, -236,174,143, 24,218,217,108, 70,158,231, 71, 23,252,221,187,151,246,178,115, 56,240,250,245,235, 99, 82, 30,236,207,198,115, 92, - 14,121, 70, 24,219, 3, 70, 91,213,148,101,201,217,217, 25, 15, 31, 62,236,215,141,253,212,194,116,188,126,253,150,235,247,239, - 24, 79, 70,236,247,251, 35,145,210,208,115, 23, 2,136, 3,251, 30,191, 77,188, 91, 58,231,247, 36,187,219, 9, 78, 91, 55,228, -135, 3, 65,255,251,185,181,105,222,122,224,111,251,229,183,173,130, 91,162,101,219,218,117,154, 49,118, 10,144,198, 3,116, 7, - 74,218, 90, 39,142,232,223,123, 28,223,135,174,235, 28, 67,113,183,149, 61,123, 11, 31,208, 86, 37,230,223, 60, 52, 29,112, 12, - 2, 15,215,181,252,143, 86,214, 84,165, 13, 53, 86,101, 75,221,148, 36,241,128,166, 81, 68,190, 75,149, 55,108,214,123,182,155, - 28,169, 4,142, 88, 18,165, 5,235,213,161,183,159,238,113,140,131,214,230,123,107,169, 54, 8, 87,208,209, 29,243, 0, 86, 54, -230, 31,181,197,183,235,131,219,169,204,109,102,224,150, 20,120, 91, 3,188,157, 98,216, 93,190,192, 75, 83,159,213,186,160,108, - 11, 28,215,179,152, 80,233, 18,132,190,245,231, 42,129,198, 37,140,147,126,254,111,168, 27, 27, 80,242,111, 89,235, 29, 4,129, - 13, 65, 24,236,237,211, 65,224, 5, 62,190,107,109, 76,105, 60,160,106,107, 90, 37, 89,175,151,156,156,156, 18,197, 86, 34, 80, -213, 45,173, 23, 82,150, 13, 6,135, 70, 42, 94, 61,127, 66,145,175, 48,198, 48,156,158, 49, 61,185,224, 16,148,212, 77, 6,126, -196,110,187,162,108, 27, 70,227, 41,157,214,100, 69,198,191,251,253, 31, 51,159,206,120,251,238, 21, 69, 85, 48, 29, 15,200,171, -134,186, 31,195, 56, 94,192,122,187,227,225,229, 9, 73,154, 32, 59, 13,174,207,207,127,249, 21,157,110,249,253,159,252,136,166, -169, 65, 40,220,158,225,156, 11,200,139,140, 95,253,234, 43,238, 95, 94,242,249,103, 31,240,230,213, 83,242,126,223,153,166,195, -227,238, 48,203, 50,132,227, 50, 24,140, 48, 93, 71,154, 14,143,136, 69, 37, 37,113, 24,145,196, 1, 81, 20, 32, 27,123, 10,173, -203,138,170,183,102,105,109, 79,221,117,221, 82, 20, 21,113,148, 30, 31,240,183,129, 15, 41, 21,194,177,187,182,182,109, 49, 4, -136, 30,187, 26, 70, 1,142,107,136, 34, 15,221, 53,196,145,135,131,189,225,226,186,116, 82,226, 71,145,173,145,249, 62,161,231, -179,203, 10,162,120,140,238, 28,132, 27, 16,249, 67,100, 11, 81, 56,164,170, 42,138, 67,211,127, 0,124, 28, 66, 58,211, 33, 91, - 44,131,221,181, 15,123,186, 14,221, 85, 52,117,193,242,230, 29,113, 28, 83, 57,134,123,151, 39,116,169, 93, 45, 84,149,238,251, -157,130,200, 11,104,100,199,102,103,251,170, 97,226, 30,205, 70,186,163, 79,164,215, 12,134, 9,174,144,125,141, 84,162,251,220, -131, 77,177,218,157,164,192, 74,111,132,176,123, 93,213, 74, 60,207,128,107,115, 0, 78,143,105,213, 61,142, 87,117, 32,165,166, -174, 20,117,171,184, 94,221,224,250, 62,163,145,205, 63,148,101,201,122, 93,146,231, 37,159,127,254, 89, 63,214,108,104,171,178, - 7,102, 40, 74,173,168,235,178,223, 3,218, 7,177,214,253,169, 26,129, 19, 4,180,141,228,151,255,242, 53, 55,203, 53,198,117, - 41,219,150, 36,140,104,181,166,106, 36, 26,131,239,133, 36, 73,194,238,144,211, 40,137, 42,245,209,104,118,118,118,118,148,111, - 0,184, 65,200,108,113,130, 54,202, 90,245, 92,151,172,106, 24,143, 7, 8, 97, 44,110, 85, 74,174,174,174,184,190, 90,146,196, - 22,152,211, 41,201,124, 50,230, 15,126,242,251,184, 2, 28,209,241,197, 23, 63, 96,144, 38,252,233,159,254, 41, 29, 80,181, 29, - 65, 50,164,233, 50, 70,147, 41, 95,252,240,119,120,250,212,138, 72, 78,102, 54, 84,149,237,247,228,101,217,147,192,228,177,145, -145,149, 53, 77,109, 43,104, 22,182,164, 80,109,141,236, 27, 33,163,193,200, 62, 52, 59,137, 65, 35,140, 13, 54,170,174,229,126, -143, 67,205,178, 12,223, 15,185,122,191, 36,137, 71, 8, 92, 94,189,124, 77,213,118,140, 79,198,120, 65,112,180,194,165,241, 12, -217,118,172, 86, 27,238, 63,184,195,100,100,235,181,117, 81,226,247, 21,185,219, 47,193,219,135,100, 16, 4,132,129, 79,146,248, -120,158,111, 65, 81, 94,128, 84,154,178,173,236, 84,163,187,221,165,134,184,174, 71,232,216, 67,137,219, 35, 97,173,123, 61, 64, -184, 46,101,213, 0, 22, 78, 21, 71, 86, 69,237,133,238,145, 66,120,231,206, 93,219,126, 89, 44,104,138, 18,223,117, 16, 70, 91, -186, 92, 26,115,113,126,126,148, 55, 93,189,123,195,201,108,206,126,187, 35, 77, 83, 30, 61,120,216,179,205, 21,166,179, 55,127, - 55,176, 95,215,101,145,245,140, 67, 77, 85,100,200,206,224,249, 14,143, 30, 61,164,105, 26,242, 60, 99,185, 92, 50,155,205,184, -188,184, 67, 20, 69, 92, 95, 95,179,222, 44,169,234,194, 86, 93, 5,212,178,193,104, 69,146, 70, 76,231, 86, 13, 61,159,140, 73, - 46,206, 9,252,136, 78, 74,226, 40,226,222,221,187, 84, 85, 97, 73,143, 65,204, 71, 31,125,196,233,233, 9,117,175, 52,158,246, - 53,207, 56, 14,137,226, 16,207,115,241, 60,187, 6,104,202,146,192,117,209, 82,162,154,134,166,180, 98, 43, 49, 7,223,181, 85, -202,227, 30,219, 49, 86,206, 83,229,120,190,131, 84,141, 93, 43, 70, 17, 90, 41,202, 60, 39, 63, 28, 44, 76,167,174, 41,243, 28, - 16, 61, 69, 83, 98,122,194,224,109, 23, 95,155,238, 8,221, 73, 6,105,143,175,110,142, 21, 74, 33, 4,101, 93, 31, 17,184,223, - 91, 45,245,241,160,226, 56,118, 98,169,100,141, 82, 45,158,103,193, 70,246,159, 11, 60, 47, 64, 73, 77, 60, 26, 81,215, 37, 85, - 37,145,210, 80,228, 13, 55,236, 8,226,154,170,146, 32, 60, 58, 45,108, 3,165, 51,248,183, 0, 56,213, 31,136, 28,131,235,201, -127,179,186,250,237,125,254, 45, 60,233,246,161,126,251,240,191,125,127,143, 70,163, 62,220, 30,244,122,113, 23,239,242,242,140, -170,201,217,172, 15,236,139,146, 78, 57,132,105,132,234, 12,141,236,193,245, 90,224,123,225,241,244,228,122,246, 77,230, 58, 22, -180,224,250, 30,121,113, 56,142,137,124,231,251,224, 66, 89,150,120,174, 67, 18, 71,148,101, 97, 67, 40,109,135, 48,246,193,224, - 8,151,166,211, 40, 97, 40,164, 97, 16, 15,137, 66, 23, 84,201, 48,242,152, 79,103,196,233, 12, 67,136, 23,133, 40, 41,217,100, - 21,101,213,216, 23,195,135,245,122,141,235,192,110,187,164, 45,118,168, 42,231,250,237, 53, 95,252,248, 39,156, 44,134, 60,126, -254,156, 48, 74,152,159,156, 49,153,159,147,142,102,224,106,138, 90,241,248,241, 99,254,242,255,253, 47,156,159,157, 48, 63, 59, -231,225,253,115,202,194,194,104,116,171, 89, 76, 71,168,186,160,216,111, 89,250, 46, 97,232, 19,134, 62, 69,153, 33, 28, 99,199, -123,117,139, 23,128,227,184, 71, 2,159,239,185,172, 86, 43, 22,139,185,221,225,182,117, 47,155, 56, 16, 56,130,120,144,218, 47, - 55,213,114, 56, 72,134,195,148,179,179, 11,187,147,207,115,164,108,122, 49, 68,141,148,170,127, 17,161,105, 44, 89, 42, 8,110, - 67, 29,183,149,145,150,135,143,238,241,226,197, 51,251,193,104, 26, 38,147, 57, 73, 20,226,184,214,112,214,182, 45,113, 24, 29, -141, 90,142,235,114,200, 27,214,203,165,205, 77, 20,150,205,252,228,187, 39,156,221,185,232,171, 89,253,201,210, 24,148,146, 61, -208,198,177, 15, 76,207, 97, 50,136,185, 94, 45,105,106, 7, 87, 72,154, 42,167,169,114, 27, 56, 12, 3,180,238,208, 88,141,171, - 82, 29,170, 19,212, 82,226,135, 17,139,179,115, 70, 51,159,116, 60,165,173, 90, 58,169,216,172, 86, 60,249,238, 49, 85,177,227, -147, 79, 31,113,121, 49, 67,155, 22,163, 27,180, 81,191, 37, 74,177, 33, 73,199,119, 48,194,230, 63,126,123,100,118, 59, 98,243, - 60,215,198, 77,140, 64,107,203, 25, 48,194, 69,163, 81,218,208, 25,129,236,111, 82, 90,107, 6,131,129,229, 33,244, 92,231,245, -186,231,196, 27,141, 95, 57, 32,148,197,202,202,134, 48,137,105, 27, 69, 39,220,158,137,223,161, 58, 67, 86, 84, 24, 35,184,218, -108,120,183,188,225,252,206, 37,198,247,121,119,179,164,108,106, 90,217, 49, 28,143, 24,197, 9,215,171, 37,178,237,184,185,185, - 98, 62,183, 59,207,241,120,220, 79,110, 44,236,229,246,182,179,223,103,118, 42, 20,122,182,109, 18,249,199, 27,209,109, 48,173, - 44, 75, 26, 41,237,151,184,239,241,229, 15, 62, 71,201,134, 87, 47,158, 91, 18, 98,150, 81, 85, 21,211,233,148,255,233,127,249, - 95,249,199, 95,254, 87,222,188, 95, 35,101,205,143,126,244, 37,127,252,199,127, 76, 20, 69, 60,123,246,252,104, 41,140, 2,143, -218,117,240, 5, 56,158,160, 19,238,145,160, 55, 72, 18, 22,179, 25, 14,142, 93, 19, 26, 65,221, 90,199,184,235,187,248,174, 71, -209, 22, 76, 38, 19, 28, 71, 48,153, 76, 40,203,194,166,172,235, 2,111, 52,197, 13, 19,164,209,188,191, 94,115,255, 50,229,197, -235,247,124,240,201, 15, 25,141,199,132, 67,143,109,150,243,252,245, 27,158, 62,123,193,131,123, 62,110, 24,210,116,134,205, 54, - 35, 73, 6, 12, 71, 19,202,186,161,172, 91,252, 48,164, 85,154,172, 82, 56, 34,160,211,157,229,219,215, 13,121, 46,233,144,116, -128, 35, 74, 90, 3,145,235,218,139, 12,224,244,123,116, 27,228,226,248,144,184, 5,246,120,158,143, 29, 29,217, 73,149,231,184, - 72,169,136,251,245,141, 16,194,142, 94,131,128,235,235,235,227,141, 43, 73, 18, 70,163, 17, 90,171,254,198, 94, 28,211,219,243, -233,148,223,253,221,223,237, 15,243, 53,159,125,246, 25,175, 94,189,234, 71,211,242,184, 78, 2,221, 95, 56, 52,178,182, 28,245, - 48, 73,184,184,184, 56, 78, 68, 30, 61,122,196, 23, 95,124, 97, 39,166,142,203,118,183,166,110,202, 99, 62,192,126,118, 93, 70, -163, 1,101, 89, 83,215,165, 53, 72,158,156, 28,193, 63,105, 98,197, 45, 69,158,247, 35,115,159,253,126,207,155, 87, 87,191,101, - 85,220,241, 71,255,254, 15,249,131,127,255,135,252,223,127,246,231,208,105, 60,129, 61,136,104,117,180, 53,222,238,163,111,111, -204,183, 33,207,227, 84,172,109,200,234,146, 44,187, 32,207,243,227,255,214, 52, 13,135,108,199,102,123,171,235,182, 55,116,225, - 24,234,178,233, 31,190,246, 65,158,164,218,170,139,181,176,138,240,218,222,224,183,219, 45,121,158,219, 95,191,191,213,158,157, -157,217, 38,212,112,216,155, 27, 5, 90,171,223, 10,206,113, 52,170, 89,241,208,247,107, 1, 99, 36,198,116,104,221,246, 16, 48, -183,255,188,119, 52,173,162,174, 90,180,113,168,107, 73,221,238,241,188,130,186, 81, 61, 88,199, 69,187,224,152, 91,144,152,192, - 56, 6,141,135, 49,173,157, 14, 96,185, 37,199,130,125, 31,132, 45,219,230,191, 41,154,185, 69,127,107,173,109, 72,221,177,128, - 45, 71,184,120, 65,232,115,255,254,125, 70,195,156,231,175,223,146, 29, 26,124, 63,192,104, 43,101,137,227, 20, 63,140,144,186, -163,109, 74,219, 27, 21, 86,121, 90, 55, 61,145, 71,248, 71,201,192,118,171, 88, 47,151, 86,242,226, 24, 78, 79,166,148,181,101, -163,167, 73, 98,171, 28,101,133,150, 29,251,237, 30,109, 12,194,143, 24, 14, 83, 34, 98,124, 39, 66,117, 5, 78, 87, 51, 78, 28, -134,161, 96,181, 94,241, 87, 63,253, 71, 10,229,224,134, 29,139,105,202,163,139, 41,195, 65, 68, 99, 58, 38,163,148,201, 32,102, -183,188, 38,211,154,197,120, 68,145,229,196,190,199,112, 54,227,207,255,250,111, 49,142,203,249,249, 57,151,119, 2,126,243,236, - 45,174,106,168,106,197, 79,255,225,215, 24, 47,229,106,189,231,175,254,230,111,249,159,255,243,255,200,217,201,144, 42, 59, 48, - 72, 67, 28,173,153, 14, 19,190,248,225,167,150, 98,213,150,184,158, 29,229, 76,230, 83,166,195, 25,215,215, 75,170,166,227,226, -226,194,246, 42,189,128,206, 8, 30, 63,126, 76, 85,100,220,189,243,135, 28, 84,131,233,108,106,185,200,118,196,113,136, 67,199, -225,176,227,234,234,134,187,119,239,240,224,225,125,194, 40, 32,138, 67,194,208, 50,195, 79, 78,102,100, 89,113,124, 81, 85,103, - 77, 71, 73, 26, 35,112,112, 92,155, 0, 29,244,210,131,111,127,243, 53,160, 9, 60,151, 40,112,241, 92, 67, 28,121, 4,129,139, -235,120, 56,216,128,147,209, 10,140,194,161,163,174, 42, 58,199, 33, 30, 79,136,124,131, 39, 20,190,145,248,190, 64,116, 54,228, - 98,100,133,234, 90,219,203, 78, 99,194, 32, 96, 56, 8, 73, 18, 15,223,233,208,178,196, 19, 6, 71,216,189,152,242, 28, 90, 89, - 2, 35,251, 97,198, 82,239,234, 86, 35,117, 78, 45, 97, 50,157,226, 5, 49,119,238,222,195,235, 25,247,255,252,203,127,226,219, -111,174,217,110, 5,158,247,200, 6, 84,250,148,189,205,114,124,127,138,213, 90,247, 73, 91,250,218,161,215,159, 88,125, 43,120, - 80,146, 70,183,125,214, 65,160,164, 65, 42, 65, 81,117,236,183, 86, 26,146, 87, 57,163,209,128,170, 40, 24, 14,135,200, 70,177, - 89,173,109,117,172,170,153, 78, 39, 92, 87, 21,110, 47, 16,242,253,136, 78,203,163,208, 33,138, 7,253,196, 39,196,243, 4,111, - 95,191,225,111,127,246, 83, 28,223, 39, 43, 42, 6,211, 9,173,227, 80, 52, 45,121,109, 63, 91,195,196, 78,184,138,162, 56, 62, -148,215,155,125,239,228,238,216,239,183,189,167, 60, 98, 56, 30,217,189,175,128,245,118,195, 96,144, 32, 2,143,235,213,146, 32, -142, 40, 14, 25,105,146, 32, 92,167, 63, 96, 7, 92,204,102, 56,104,226, 56,230,242,206, 57, 81,224,225, 0, 39, 11,235,140,223, -108, 54,252,217,159,255, 37, 69,221,144,164, 3,254,251,255,225, 63,242,229,151, 95,242,201,167, 31, 65,167,249,217,207,126,134, -231, 58, 92,156,159,241,234,213, 43,194,192, 39, 10,124, 84,224, 35, 68,240, 61,106,218,177,112, 40, 63,112,241,221, 0, 47,112, - 17,198,161,145, 53,117,217, 16,198,150,133,224,238,172,172,201,243, 29,174,223,191,103,144,198, 96, 28,182,171, 43,242,225, 0, -237,248,248, 81,192,190,104,120,242,252, 29,198, 56,220,185,123,223,226,143,227,128,114,117,160,146, 26,237, 6,212, 74, 48, 25, -140, 8,226,148,172,146,104,199,146,202,194, 56, 33,106, 52,178, 19,184, 97, 66,160, 26,220, 48, 70, 54, 21,194, 13,113,132, 33, - 26,196,180,178, 35,244, 61,132,227, 19, 25, 67,208,223, 44,187,206,114,189, 45,234,212,252, 86,224, 79,247, 80, 39, 73, 89,218, - 53,200, 96, 48,232, 39, 2, 32,219,166, 31,143, 27,162, 40, 33,244, 2, 94, 60,125,110, 63,171,141,164, 42, 74,218,186,177, 36, - 76,165,200,243, 3,111,223,190, 70,184, 14,129,231, 51, 27,141, 24,164, 41,217, 33,103,189, 92,177, 59,221,130, 54,180, 77,141, -233, 15,248,105, 26, 51, 76, 99,220, 81,130,239,123, 20,249,129,210,119, 57, 89,156,177,205, 10, 6,131,132,179,179, 5,179,217, -140,174,235,120,254,252, 57,195,129,157,220,196,113, 76,158, 31, 48,157, 34,219,239,236,251, 42,181,161,102,109, 20,113, 24,160, -149,164,204, 51,238,221,187,199,229,229, 61, 94,190,124,201,102,179, 98, 52,122,136,231,121, 44, 22, 11,158,124,251,152,166,173, -136,227,152,229,178,166, 40, 10,162, 40, 98,155,229,228,101, 65, 81,102,120, 65,128, 49,157,173, 16, 26,133, 54,246,214, 45, 85, -131,231, 58,232, 14, 11,109,114, 28, 11, 96, 82, 29, 97, 20,161,180,164,170, 10,202, 50,103, 58, 29, 19,199, 17, 73, 20,146,101, - 45, 85,153, 51, 25,167, 54,148,105, 52,145,239, 17,197, 1,157,178,147, 57,207,117,112, 93,104, 26, 27,174,139,162,136,192,119, - 24, 14, 98,130,192,237, 13,115,131, 62,228,230,177,221, 44, 41,139, 3, 93,103, 41,134, 65,127,112, 21,184,120,190, 99, 9,154, - 70,209, 41, 3, 66, 19,133,182,118,189, 89,109,104,101,109,235,182,113,192,112, 48,166,110, 74,234, 58, 58, 30,168, 69, 95,233, -149, 82, 34,101,135,192, 34,180, 93,223,102,152,180, 82,223,243, 25,148, 57,218, 54, 29,239,223, 26, 33, 61, 79, 28,147,236, 6, - 27, 12,188, 61,108,252,118, 24,222, 24,219,203,239,180, 69,140,183, 74,218,181,184,146, 29,194, 56, 76,167,115,132, 27,241,238, -122,203,245,205,150, 67,118, 32, 78,135,108,182,246, 4,185, 94,174, 8, 67, 31,186, 22, 80,248,158,232, 69, 0,182,210,178, 89, - 47, 73,227, 31,161, 85,204,219, 87, 25, 97,224, 16, 5,150,185,125, 27, 20, 57,153,157, 80, 85,149,253, 2,239, 28,226, 36, 70, - 99,144, 66, 80,182, 29,218,241, 16,126, 76,232,105,238,156,186,204,135, 6,215,245,184,186,217,242, 79,255,245, 87,236,164,199, -233,197,132,225,240, 3,166,243, 57, 39,211, 1,141,172,137,163,128,200, 53,136,174, 37,112,236, 84, 33,138, 98,188, 48, 36, 63, -100,188,123,123,197,234, 80,178,218,150, 8, 66,222,189,126,129,163,106,100,167,121,115, 85, 48,158,206, 56,236,111,208,155,156, - 95,125,253,107,254,240,247,191,196, 19, 26, 7, 67, 85,150,120,174,224, 7,159,124,196,245,242,134,186, 42,137, 66,159,188,175, -151,125,252,241,199, 52,141,228,221,111,158, 48,157,206,184,119,127,129, 16, 46,171,205,142,155,155, 27, 94,191,124,206, 15,127, -248, 57,178,109, 64, 53,140, 39, 41,155,234, 64, 89,212, 12, 6, 35,206, 22, 39,172, 86, 43,164,106,137,227,144,217,108, 98, 31, -248,142, 71,118,200,251, 61,146,253,255, 78,167, 99, 70, 77,130, 82, 53, 65,232,247, 93, 79,151,178,204,185,188,188,192,243, 29, - 6,131,132,186,169,184,115,113,206,104, 60, 96,189,188,177,227,168,218,146,166, 58,165,142,114, 7,223, 3, 87,180, 76, 70, 54, -209,121, 50,139, 17, 66,242,241,135,119,240, 61,171,120, 13,162, 16, 41, 29,130,208, 67,155, 0,199,181,220,236,206,104, 92, 26, -206, 78, 78,145,213,152, 67,105, 67,105,127,244,135,255, 14,199,177,244,175,233,116,140,235, 64,219, 41,140,146,248, 81,108,233, -113,218,222,174,163, 52,225,213,171, 23, 76,230, 3,134,233, 8,180, 38,207, 54,148,213,158, 40,178, 1,192,237,206, 69,169, 26, -221, 89,200,131, 23,248,184,174,165, 64,117,134, 30, 64,209, 59, 69, 28,139,105,245, 92, 23,207,129, 32, 80, 84,109,113,236,163, - 54,170,163, 44, 36,235, 77,201,187,247, 43,150, 55, 54,133, 62,155, 77,142,183,138,231,207,159,243,226,197, 43,130,254, 36,255, -246,237,123,158,191,248,142,201,104,216, 59, 12, 44,229,172,105, 43,139,191, 20, 62,173, 50, 71,192, 73, 89, 87,212,157, 33,137, -125,102,231, 99,214,219, 13,187,162,182,166,185,209,144, 52,178, 59,211,195,222,170, 46,157, 94, 1, 28, 69, 17, 82, 53,204,166, - 39,253,190, 82, 28,149,165,121,158,219,219, 79,215, 17,165, 9, 6, 56,100, 5,211,201,136,217,108, 70,210,155, 9,187,174, 99, - 48, 24,144,166, 41, 85,110,237, 87,111,223,190,101, 58,180, 95,138,255,240,247,127,199,229,189,187,124,242,233,167,124,254,197, -151, 92, 93,223,144, 21, 13,227,233,140,215,175,223,242,139, 95,252,130,166,170, 88,175,151, 96, 52, 63,253,233, 79,185,127,121, - 7, 79,192,120, 60,100,144,218, 95,199,104,251,101,212,200, 22,227,250, 61,254, 85,209, 73, 59, 17, 26,248, 41,161,111,147,218, -214,133,125,202,124, 62,231,163, 79, 62,230,103, 63,251,217,113,239,126,254,195, 31, 50,137, 83,242, 74, 17, 37, 54,148,117,243, -238,134,217,100,193, 63,254,242,107,170,182, 34,153, 68,100,101,129, 27,198, 92, 62,120,132,208, 49, 85,107,216,101, 53,121, 89, - 80, 53, 13,171,245, 13,202,184, 76, 23,103, 72, 45, 88,156, 94,128,241, 16, 78,128, 17, 10,199,135, 40,140, 56,191,240,232,140, - 69,228, 34,236, 72,211,115, 5,157,108,143, 74,216,223,214, 2, 11, 33,240,130,240,152,124, 46,203,242, 8,146,186,189, 37,158, -111,215, 0, 0, 32, 0, 73, 68, 65, 84,109, 10,172,185,112, 56, 28, 50, 26,141,184,185,185,225,217,179,103,124,250,233,167, 22, -209,219, 83,222,182,187, 53, 93, 39, 9, 67,187,123,215, 24, 2,223,227,238,249, 57,223,126,251, 45,139,147, 83,138,162,224,233, -211,167,124,250,233,167,248,174,245,220, 95, 92,156,161,186,150,237, 14, 14,135, 61,158,107, 45,101,163,209,128, 15, 62,124,200, -246, 80,145, 23, 21, 47, 94,188,224,155,111,190,177, 46,250, 36, 33,142, 99,214,235,229,177, 15, 62,159,207, 57, 89,204,142,233, -115, 33,196, 17,223,123,255,254,125,138, 67,193,171, 87,175,104,251, 44, 80, 24,134,188,121,243,134,147,254, 22,175,148, 66,119, -112,126,126,110,123,245,251, 45,239,174,175,172,212,166,149,199,100,126,212,167,217,133,177,253,255, 91,189,243,109,223,253,150, - 70,232,121, 30,158,239, 80, 55, 13,203,229,146, 34,179,174,137, 60,207,123,104, 86,219, 31,122,107,174,175,175, 89,204,231,124, -240,193, 67,162, 40,161,147, 45, 93,103, 72, 79, 79,136,211,132,170,105,120,249,114, 99,229, 52,253,190,252,246,144,182,113,173, -189,240,112, 56, 28,255,249,249,249,185,165,240,169, 17,110, 21,244,200, 97,155,246,247,125, 59, 93,108, 91, 73,215, 35,100,147, - 36,166,174, 27,130,192, 39,138, 3,194, 48,160,110, 74,170,170,164,105, 19,164,146,100, 69,142,238, 4,202,208,127, 47,216, 10, -178,210, 26,209, 79, 16,149,214, 8, 97,215, 5,157,180,223, 90,230, 86, 28,136,232,233,127,208,182, 10, 33,156, 62, 59,212,179, -233,133,243,111,254,126, 44,196, 57,244, 89, 0,253,125, 80,238,250,253, 13,135,188,192,245, 66, 28, 55,161,235, 96,183, 59,112, -115,179, 99, 56,145, 8,199,238, 73,140,232,248,225, 23,159,225, 26,133, 54, 13, 97,224,224,184,128,177, 35,247,253,197, 28,199, -237, 48,166, 33,219,111,236, 31, 68, 42,242,195, 1,217, 9,140, 18,248, 97,196,102,119,160,200, 27, 70,163,136, 97, 50,102, 87, -108,121,127,179,226,217,245, 99,218, 70, 48,139,103, 60,152,133,252,224,226, 30,243, 81,194,213,245,146,236,176,167, 51, 2, 47, - 26,208, 34, 88,239,115, 94,189,122, 67,232,156,225,248, 14,219,108, 67,228, 26, 6,129,143, 23,248, 28,154, 12,227,197,228,251, - 3,141, 59,228,193,163,143,104,158,189,165,150, 14, 79, 94, 94,179, 89, 29,240,177,157, 72, 39, 28,178,201,107,226, 32,229,131, -143, 46, 73, 19,143,166,105,153,204, 6,104,213,146, 68, 94,239,138, 30,245,227, 23,197,108, 54,195,113, 93,139,252,236,149,163, - 47, 95,190, 36,203,114,194, 40, 1, 28,190,254,215,223,176, 90,173, 72,227,144,199,143, 31,243,225, 7,247,240,125, 23,211,117, -120, 78,111, 4,210,118,180,186, 88, 44, 64, 24,246,251,253,145,105,221, 52, 37, 77,221,242,171, 95,253, 43,155,205,134, 59, 23, -119,249,225, 23,159, 19, 69, 65,175, 47,213, 72,217,144, 23, 89,223, 87,213,180,117,197,112, 52, 96,234,141, 56, 61, 59, 33, 12, -125,100, 91,161, 84,203,110,179,239, 33, 33,138,147,147, 57,161, 23,208,117,138, 71, 15,239,216,169, 64, 45, 73,146,132,253, 46, - 59, 2, 40, 28,199, 26,210,164,148, 4,241,173,194,213,246,102,203, 50,199, 21, 18, 85,231,116,170,166,169, 10,146,193,132, 15, - 31,221,195, 13,110,117,167, 45,142,177, 31,174, 14, 59,186,195,245, 65,219,155, 99, 28, 43,102,243, 33, 66, 84, 28,246,133, 37, - 82, 57, 13,227, 73, 76, 16, 10,178,253,134,217,164,207, 21, 56,246,164, 42,101,135,146,198, 42, 81, 93,135, 60,175,108,213,202, -241, 16, 56,232,174, 67,104, 31, 63,177,251,106,207, 3,227,118, 72,165,112,220, 14,215,241, 48,194,163,149,182, 50,115,118,118, -198, 98, 62, 71,247, 95,126, 55, 55, 55, 54,212,105, 58,242, 60,231,237,219,183,188,123,247,142,209,224, 99,130, 32,166,145, 53, - 56,130,225,104, 68, 16, 68,232,206, 97,187,207,121,243,238, 13,223,124,251, 27,134,211, 9,218,113,145, 66,208, 54, 45,194, 15, - 80, 70, 18,248, 22,212,179, 92,111, 45,137,170,179, 95, 62, 89,153, 17,199, 17,243,249,140, 52, 29,144,196, 3, 94,191,126,205, -110,183,163,105, 26,194, 56,162, 44, 75, 58, 99, 31,152,117,213,210,246, 59, 71,109,132,213,223,222, 50,222,101,199,120, 60, 56, -226,157, 47, 46, 46,152, 15, 18,246,187, 53,195, 65,194, 96,144,176,223,239,249,245,175,127,205, 55,143,191, 99,159, 87, 4, 97, -202,251,155,165, 85, 10,247, 59,111,165, 90,162,208, 30,198,159, 62,254,150,192,119,237, 67, 97,102, 71,151,243,197,194, 78, 53, -148,230,233,203,215,164,113, 72,211, 52,180,109, 75, 41,155, 35,108,230,246, 97,104,122,112,199,155, 87, 1,111, 95,191, 66, 41, -197,221,187,119,249,244,227, 79,152, 12, 71,108,150,239,105,181,224,144,151,172, 54, 7, 12, 9,207, 95,188,198,120,130,250,245, - 1, 17,120, 12,134,115,162,120, 66, 85, 64, 81,212,100,133, 2,211,242,252,249, 51,138, 50, 3, 2,146, 81,136, 52,138,100, 52, - 69, 73, 67,221,182,148,149,253,108,232,206,161, 51,142,149,141,116,182,255,155, 6,246, 64,140,238,190, 23, 38,245,234, 99, 99, -122, 72, 73, 31, 18, 13,252,136, 46,176, 7,167,186,106,143, 15,234,180,255, 92,164,201,128,211,197, 25,207,158, 60, 97,179,217, -176, 93,111,168,235,154,162,200,143,225,175,182, 53,132, 33,148, 85, 1, 66, 80, 87, 6,207,117, 57,236,115,202, 48,199, 19, 14, -155,213, 18,255, 7,159,243,240,225, 67,222,189,123, 71,224,185,164,131,152, 7,247, 47, 45,146, 84, 43, 86,235, 27,246,251, 61, -101,153, 19,134, 17,203,213,166, 79,238,187,253, 97, 19,148,178, 19,216,205,106, 77,118,216, 49, 24,218,144, 98,146, 36, 12,135, - 3,202, 44,255, 55,160,160, 66,119, 68,129,199,126,187,166, 40, 10,138,220,174,147,118,235, 13,206, 39,159, 48,153, 91,244,243, -100, 54,179, 73,121,223,122, 30,242, 50, 35, 12,237,138,193,174,193,172,141, 48,142, 45,111,126, 60,182, 65,229, 65, 24,247,235, -214,222,137,209,179, 2,110, 89,247,247,238,221,195,243, 60,203,203, 15,173, 84, 39, 47, 60, 38, 35,123,203, 86,109, 3, 61, 71, - 93, 43,137,233, 12,174, 7,109, 91, 97, 58,133,106, 43,154, 42,255,190,210, 39,192,245, 92,155,204,167, 35,207,118, 22, 73, 28, - 71,204, 79, 38,125, 46, 7, 16,134,170,178,160, 52, 33, 12,190, 31,246, 85,229,186,111,107,180,220,187,119,137,227,120,140,199, -103,204,102, 86, 1,123,117,117, 67,219,214, 71, 36,241,118,119,160,174,228,209,223,224,186, 2,199,183,123,121,139,165,182,171, - 67,237, 71, 24, 35,144,141, 21, 72,217,149,136,119, 76,177,127,159,126,119, 64, 24,148, 84,255,205, 20,252,237,223,111,179, 0, -183,106,104, 33, 92,188,191,254,127,254, 63,156,126, 17,223,106, 67, 52,152, 48, 28,141,104, 59,143,178,104, 0, 69,146,134, 8, - 26, 46,207,167,116,170, 36,219, 55, 22, 74,175, 5, 82, 73,124, 87,112, 50,155,114,245,254, 53, 90,106,210, 52,228,244,236, 4, - 28,203,244,238,180,225,253,234,134,178,168, 45, 85, 78, 89,185,252,102,183, 97,118,186,192,197,193,237, 12,170,170,185, 89,191, -160,190,106,120,114, 71,163,234, 1,219, 93,206,219,171, 13, 65, 20, 18, 13, 71,148,242,192,183, 79,159,115,184,126,131, 43,126, -151,139,243, 57, 85,126,224,116, 50,230,234,122, 69, 28,184, 36,113,138,208,214, 26,167,124,248,226,179,143, 45, 57, 44,171,109, -152,205,141,112, 93, 7,105, 36,173,180,238,241,233, 60,229,242,242,146,159,252,232, 67,140,204,137, 66,168,178, 22,215, 15,209, - 82,163,113, 9,194,132, 34,175,241, 67,203,125, 63, 20, 37,203,229,178,175, 76,105,118,251, 61, 74, 67,213,212,124,247,236, 5, - 82, 67,219, 57,252,237, 79,127,206,116, 58,231,124, 49,226,230,250,154, 36,114, 24, 13, 18,138,170,196,241, 7,220,187,188, 67, - 94,236, 80,173,125, 35, 53, 77, 71,158,183, 4,126, 74,211,184,172,215, 21, 66,108,153,159,237, 24, 12, 99,186,206,174, 64,170, -170,166,204, 53,142, 19, 80, 21, 25, 93,157,227,168,150,243,179,115, 27,168, 17,176, 56,155, 80,213, 5,187,253, 13,166,115,208, - 82, 49, 8, 19, 34, 63, 64, 33, 9, 35,155, 84,141, 99,159,178,174, 80, 90, 83, 22, 21,116,154, 36,137, 16, 2, 59,254,206,235, - 99, 10, 94,120,174,221,169,251, 14,203,229,210, 18, 6,165, 66,182, 29,109,147,147,229, 55,125, 55, 92, 99,180, 37, 69,117, 90, - 90,106,153,212,180,202, 65,247, 50,140,197,108, 72,190, 95,113,243,126,205, 98,113,106,235,125,126,120, 12,137, 44,175,111,122, -181,145,238,199, 90,210,166, 72,221,160, 15, 63,218,209, 22,158,197,147, 26,173,145, 97,136,239, 65, 58,136, 8,210, 24, 28,141, - 68,147, 26,112,188, 4, 97, 34, 62,120, 96,111,203,190,239,147,142,198, 76, 70, 67,174,151, 43,190,253,205,119,196,113, 76,215, - 9,132, 27,145, 21, 53,235, 77, 78, 89, 73,162, 4, 58,133, 61,164, 74, 67,173, 26,118,135,130, 44, 47, 41,234, 6,105, 32, 76, - 71, 52, 58, 35, 47, 45,138, 54,239, 43,162,233,208, 6,146, 42, 99,147,201, 66, 91,204,228,116, 52,238,111, 38,146,193, 64,240, -254,253,251,126, 58,163,208,152,227, 13, 3,173,145,170,225,234,221, 59, 58, 58,226, 40, 66,213, 13,198,129,217,249, 37,174,235, -242,238,221, 21,131, 36, 37,158,140, 49,202,142, 23, 15,101,133, 84,134, 14,135, 7, 31,124,204,225,144, 17, 37, 9,173,252,150, -193,104, 76,219,216, 91,137,231,249, 36, 73,140,238, 36,211,233, 20,173, 90,132, 48,199,190,244,106,189,103,189, 57, 32,165,100, - 60, 30, 51,157,206,168,219,150,170,105,105,149,194,247, 67,107,185,235,115, 0, 77, 99, 73,120,183, 18,151,170,105,121,254,242, - 21, 81,146,218, 60,135,231,243,243,159,255,156,193, 96,196,253,187,231, 44,206, 47,185,190, 89, 83,212, 26,189,221, 33,252,136, -170, 46,136, 70, 19, 26, 41,217,237, 75,188, 18,208, 17, 32,108,253, 42,136, 64,215, 12,194,136,162,146,100, 85,197,104, 60, 32, -242, 35, 54,213,142, 48,182, 59,237,174, 23,133,136,174,235, 39,102,216,196,179,112, 25, 12,199, 8,244,113,165,163,122,158,189, -214,244, 19, 30, 77, 43, 45,116,200,138,133, 60,132,235,144,244,235,159, 44,223, 50,159,206,142,235,177, 32, 74, 44,241,176,145, - 12, 71, 19,178, 34,183,191, 15, 47,196,235, 45,200, 85,255, 0,238,148, 98,185, 90,115, 50,155,179,218,110,112, 93,151,213,122, -201, 87, 95,125,197, 31,253,209, 31, 17,134, 33,249, 97,143,112, 12, 97,228,245,187,241,239,199,182,155,205,134,139,203, 7,124, -246,233,135,204,103, 35,158, 62,125,202,227,223,124,195,249,249, 57,187, 32, 56, 86, 27,165,148,200,186,225,213,171, 87,200,186, -182, 18,151, 40, 98, 48, 24, 48, 24, 12,209, 90,114,114,186, 96, 33, 78, 45,253,179, 23, 71, 93, 93, 93,177, 88,156,113,117,253, -142,205,102,213,143,242,115,182,219, 45, 66,184,118,103, 29,250, 12,210,132,179,179,115,242, 50,231,230,122,137,233, 58,198,195, -148,100, 56, 56, 98,178,227, 52,196, 17, 3, 48,230,104,182, 84, 93, 75,103,212,145,183, 33,132,176,135, 19,225,144,164, 17,103, - 39, 11,138,216,230, 17, 22,243, 19, 54,235, 45,176,101, 50,153,208,117, 29,207,158,191, 96, 52,181, 65, 78,227, 56,120, 97,104, -123,236, 64,213,243,232, 39, 19,171,147, 61, 57, 57,177, 25, 17,236, 65,190,109, 91,116,103,136,226, 33, 82, 27,170,182, 57,130, -190,108, 30,167,237,219, 2, 54,135,147,101,153,133,219,244,130,157,186, 46,109,216,207,119, 48,149,229,228,239, 14, 5, 65, 16, -145, 14, 70,246, 70,221, 73, 75, 49,148, 28,199,243,129,112,113,132,143,145,138,174,233, 80,218,161,243, 12,142,168,123, 35,229, -237,196,200,138,114, 92,199,183,239, 85, 64, 11,141, 99,110,147,252,110, 31,160, 21,223, 99,198,133,165,119,186, 31,207, 47,255, - 55, 45,236, 30,236,237,205, 27,140,163,249,227,255,240,159,200,246,146,221,182, 36,240, 67,132,105,248,241,143, 30,177,152,251, -140, 19,193, 97,117,205, 97,153,225, 26,143,182,105,105,170,134,166, 31, 53, 57, 2,230,243, 19, 27, 98, 24,142,240,147, 4, 47, -138,113,195, 0,227,185,228, 85,129, 54, 29, 97, 28,176,219,103,108,183, 5,171,235, 13,179, 36,225,100, 16, 50, 9, 5,179,212, -103,191,219,146,213,154,199,175, 86, 92,237, 26,170, 78, 83,181, 37,170, 83,168,206,160,140,224,233,203,215,184, 66, 48, 25,143, -169,165,194,245, 3, 90,165,193,243,236,137,219,116, 12,134, 3, 2, 15, 62,250,224, 33,158, 35, 40,243,130,186,106,216,108, 51, -134,131, 41,174,227, 51, 29, 13,113,168,121,246,236,215,156, 44, 18,123, 91,111, 43,148,180,169,109,169, 61,148,242,104, 90,104, -165, 13, 88,229, 85, 97, 95, 0, 35,216,110,119, 92, 45,151,212, 74, 49,156, 76,121,249,246,138,215,239,151, 40, 2,202, 90,144, - 14,103, 84, 69,205,189,187,247,136, 60, 23, 97, 26,186,122,143,106, 42, 75, 35,194,224,123,130, 67,182,167, 40, 74,118,251, 6, -213, 37, 92,223,212,252,250,235,215,184,254,152, 86, 25, 90,173,153,159,157, 80, 52,149,229,173, 43,129,238, 34,140, 52,248,186, -192,105,115,238, 45,230,140,210, 20, 35, 4,218,215,212,228,132, 3,143, 36,244,168,178,140, 54, 83, 76,135, 83,124,225,162,100, - 67,171, 50, 91, 65,209, 1, 55,171,130,119,203,150,178, 13,168, 91,159,172,182,146,130,215,111,222,224,121, 62,174,112, 41,242, -138, 50,175,169,139, 14,215,139, 41, 42,201, 33,107,104,106,155, 48, 23,248, 56,194,163,174, 90, 58,213,145,231,133,213,168, 26, -135,166,110,112, 52,100,251, 29, 47, 30, 63, 37, 9, 28,230,163, 1,190,176, 86, 57,215, 56,232, 22,124,199,231,222,229,125,246, -251, 3,158,227,161, 84,103, 9,117, 65, 64, 18,199,160, 13, 85,158, 91, 19,147,210,125,162,183,165, 81, 13,126,232,176,221, 46, - 25, 4,214, 37,160,101,131,148, 53,121, 83, 34,141,102,189,217, 34,235,154,174,168, 9,208, 32, 90,242,195, 22,215,179,225,175, -166,131,162,150,180, 18,118,135,146,188,168, 41,202,150,249,201,130, 48,142, 57,100, 37,181,106,201,138, 10,225, 7,252,243, 87, -223,240,242,237, 91,118, 69,206,124,113,138,235,249,212,109, 67, 93, 86, 54, 68, 21, 70, 12,146,148,170, 44,168,235,138, 56,137, -112, 92,129, 70, 51,155,204,232,100,199,110,187,227,211, 79, 62,163, 40, 43, 14,135, 3, 65, 20,114,117,115,131, 31,250,180,170, - 37, 14, 67,164,108, 81,109,205, 98, 50, 99, 58, 72,145, 85,133, 81, 10,207,241,153, 77,167, 20,121,142,193, 48, 30, 12, 40,139, -130, 7, 15, 30,224,120, 22,129,187,203, 11,106,217,145, 85,150,214, 40, 53,188,124,251, 30,169, 58,170,170,197,115,125,134,163, - 49,201, 32,193,117,125, 14,135,156,178,149,104, 44, 49, 82,118,112, 40, 27,140, 27, 64, 16, 81, 52,138, 67, 89,179,218,238,185, - 89,111,168,218, 26,131, 67, 85, 55, 28,178,156,166,149, 40,173, 45, 62,180,211, 8,199, 69,117,118, 55,221,202,142,182, 85, 20, - 69,133,236, 58,174,175,222,129,209,204,230,115,218,182, 99,119,200, 9,162, 20, 63, 12, 40,234, 26, 37, 65, 56, 65, 15, 91, 50, - 20, 77, 77,150,231,180,157,228, 80,228, 20,101,201, 46, 43, 56, 84, 37,194,181, 63,251,178,174, 72,146,184,255,245, 90, 58,173, -105,218,150,186,175,138,185,142, 79, 20,220, 30, 88, 53, 70,120, 52, 82, 99,112,201,203,146,206, 96,209,190,218,160,180, 70,117, -154,186,170,201,202,146,186,110,168,218,150,195, 33, 99,179, 93,163,181,162,149,146,249,201,156, 48,138, 89,173, 54, 24,224,236, -236,146,166, 85, 20,101, 69, 81, 86, 52,117,139,227,123, 68, 97,140,113, 44, 3, 68, 32, 8,194, 16,207,247, 56, 57, 57,193,245, - 60,226, 56,225,237,219,119,204, 78,230,248, 97,192,175,191,254,138,151,175, 95,242,228,241,119,188,123,255,158,229,114,201,171, - 87,175, 56,108,246,253,148,105, 6, 90, 49, 76, 34, 78, 79,102,156,206,167,140, 6, 9, 81, 16, 80, 21, 57,243,233, 4, 71, 56, -232, 78,113,121,231, 14,195, 62, 15, 80,151, 53,135, 44,227,233,243,215,252,243,191,124,197,179,231,207,121,250,228, 59,222,190, -125,195,114,117,205,251,247,111,113, 93,195,108, 54, 97, 52, 74, 81, 82, 34, 48,124,240,225,199,180,173,194,243, 67, 86,203, 37, - 85,145,161,154,138,221,118, 71, 93, 21, 76,166, 83, 58,109,219, 2,251,237,150,116,152,226,186,142,213, 64, 47,175,123, 11, 99, - 68, 16,250, 12, 71, 35, 78,102, 51,116,215, 81, 22, 25, 39,243, 25,157,146,212, 69,193,205,213, 53,117, 89, 49, 72, 71,220, 92, - 47, 41,202,134, 23, 47, 94,113,178,184, 96,189,217,243,175,143,159, 96,132,207,211,151,111,216,238, 11,148,118,208, 90,144,229, - 37,101, 89,163,149,166, 83,154,245,205,141,205,200,244, 23, 18, 99, 28,174,175,110,216,110, 51,178,188, 36, 47, 27,170,166, 97, -191, 63, 96,132,237,237, 87, 77,133,236, 36,142,235,129,112,153, 76,103,125,175, 60,100, 56, 28,225,186, 14,135,108, 71, 20, 5, - 76,230, 83, 84,215, 49,155, 47, 88, 44,206,216,110, 14, 68,126, 64,232,251,180, 77, 9,170,195, 40,219,158, 49,170, 35,114, 2, -140,212, 52, 89, 75,153, 73, 60, 47,165, 40, 42,139, 65,238, 42,186,182, 64, 53, 53,105, 52, 96,183,201,108,179, 9, 67,219, 53, -104, 52,157,238,168, 27,133, 75, 68,211, 26,164, 54, 20, 85, 69,211,175,105,163, 32,192,187,188,124, 64, 81,110,136,135, 49,110, -164, 88,111,118,108,151,239,153, 79, 71, 28,182, 7,100,221,224,208, 49, 73, 60, 92, 93, 82,231, 13, 62, 45,186, 41,185,222,236, -241,227, 4,124, 23, 23, 67,228,121,180,141,164,104, 75,146,193,144, 65, 18,179, 43, 26, 28,223,197,119, 2, 38,190, 79, 20,125, -132,238, 36,129,235,177,221, 23,252,197, 95,252,140,243,243, 59, 60,188,123,143,211,105, 74,232,104,162, 80,208,202, 6,141, 97, -118,241,136,245, 62, 39, 28, 92,241,234,221, 13,187,172, 68,227,112,231,226, 14, 95,254,224, 99, 38,129,226,236,100,142,239,193, -116, 50, 32,240, 4,129,239,210,148, 5,121, 85,131, 41, 25, 71, 41, 78,212,225,202, 61,186,216, 16, 26, 24,132, 46,158,176,187, - 11,161, 21, 89,190,197,161,225,155, 95,255,138,192,249,132, 97, 28, 81,229, 21, 46, 33,198,184,120,194,238, 80,253, 64,160,197, - 45, 70,215,144,149,182,166,242,232,225,125,158,191,126, 67,158,219,113,155,112, 60, 92, 17, 50, 72, 82,246, 89,129,163, 87,108, - 54, 57, 31, 61, 58,161,206, 90,218, 58, 67, 8,135,186, 82,136,192, 65,170,138,170,169,169,106, 73,171, 2,170, 66,241,226,197, -138, 44, 43, 72, 6, 41,169,239,225, 56,222,209, 34,228,251, 49,170, 3, 69,130,107, 58,226, 4,146, 88, 16, 8,137,223,213,180, -198,160, 91, 48,142, 5,208,196,177,195,201, 98,140,104, 11,100, 93, 81,123, 14, 65,236,160, 28, 48,142,224,213,203,119,188,191, -170,241,194, 25,186,182,216,205, 48,134,229,106,203,157,179, 19, 60,215,178,161,235,178,197, 49, 54,128,242,238,237,123, 70,147, - 49,126,228,115,200,247, 20,117, 5,102, 79,212,187,162,165,108,240,124,135, 40,112,113,232,104,155,130,233,120,198,195,123, 23, -232,186, 66, 86, 25,163,228,146, 59,151,247,249,135,191,255, 37,223,252,235,215,248, 94, 66, 81,182, 60,123,250, 4,165, 59, 92, -207, 48,159, 79, 49,231,103,120, 62,212,165, 93, 11, 52,117, 65, 91,230,140,135, 19,180,240,240, 2, 15, 28, 65, 86,102,220, 92, - 95,145,186, 14,225,249, 25, 93,215,224,165, 33,149,106,105,202, 10,215,241,233,100, 75,181, 47, 81,117, 67, 50, 30, 80, 52, 21, -110, 48,196,245,236,159,107,159,213,104,199,101, 52, 91, 88,151,188,240, 88,111, 51,214,187, 45, 85,157, 49, 24, 13,216,103, 59, -138, 55,111,216,229, 57,233,104,116, 68,209,110,246,123,155, 24,143,162, 99, 82,213,250,226,125,232, 59,205,118, 4, 58, 36,219, -239,217,111,115, 62,251,244, 7,108, 54, 27, 54,187, 45, 56,130,237, 97, 79, 58, 76,143, 42,202,188, 42,145,141,228,252,116,206, -151, 95,252,128, 52, 78,120,255,246, 45,171,205,134,186,149,199,164,239,108, 54, 59,238,171,227, 56,166,174, 90, 54, 7,171,229, -196,243,217,229, 37,113, 92,219,241,240, 62,195,117, 93,254,243,127,248,143, 40,165, 88,173, 86,188,123,103,113,181, 81, 20,225, - 6, 1,117,219,241,250,253,245, 49,205,172,112, 16,170,183, 14, 10,151,166, 51, 20,117, 77, 68, 72,164, 59,188,192, 39,113,135, -199,253,254,109,255,155,223,234,175,223,102, 53,186,206, 54, 8, 78,207,207, 72,135, 67,132,112, 57, 57, 61, 67, 27,123, 3,204, - 14, 57,121, 94,146, 21,246,247,131,227,226,122, 30,141,178, 60, 3,167,118,143,188,119,139, 78,246,168, 91,137, 49,182,199, 28, - 42,219,246,168,170,222,231,142,205, 46,180,141, 34,207,182,212,117, 77,211, 52,212, 93, 69, 18, 37,120, 61,116, 69,202,246,184, -211,117, 93,215,246,175,173, 6,201, 26,251,234, 26,217, 35,148, 45,219,209,224,230, 5,179,217,142, 48,140,251, 91,103, 0,142, -139,236, 44, 28,196,113, 60,106,217,178, 63,236,137,162,128,225, 48,198,113, 60, 58,163,216,239,247,100, 89,198,163, 71,143,108, -202,186,211,156,159,159,179,223, 91, 11,219,253,251,247,249,139,191,252, 51, 84, 43, 81, 93,195,120, 60,182, 34,173, 60,163,149, - 53,207,159,126,215,239,234, 45, 85,174,105,236,141, 80,224,218,181,104,191,210,211,154, 99, 59,194,114,214, 91,188, 32, 36,136, - 6, 8,199, 99,183,219, 48,158,164,164,113,194,245,205, 91,164,148, 76,167, 67,162,200, 99, 58,181, 12,250,175,126,253, 13,143, - 31, 63,182, 48, 42,225,219, 85, 88, 83, 50,136, 38,148, 85, 65, 34, 34,190,253,230, 43, 6,227, 17,174,227, 19,248, 46,168, 22, -213, 1,198, 26, 48,187,206,240,226,197, 11,180,214, 60,120,240,128,174,135,209, 8,236,235,190, 89,174, 44,212,169,211, 22, 4, -118,200,169, 27,201,187,247, 75,118,217,129, 70, 90, 36,242, 96, 52, 38,173, 91, 12, 30,219,172,196,236,246,104,173,112,141,177, -181,232,182,161,169,106,210, 52, 38, 74,236, 90, 43, 8,237,207,221, 24,129,209, 2, 41, 53,198,149, 71,227, 91, 85, 85,228,185, -173,145, 6,158,111, 95, 35,165,173, 34,182, 82, 40,153,225, 56, 14, 97, 24, 80, 22, 53,211,147, 41,117,213, 18,198, 17,178,145, -228, 89,197,124, 58,229,252,252,156,237,230,134,182,170,112,133,196, 17, 48,136, 67, 92, 92,146,208,161, 41, 21,251,205, 53,174, - 27, 83, 87, 2, 33, 36,243,249,200,174,125, 7, 99,170,170,193,243, 12,159,127,254, 0, 45, 60, 30, 63,123,138, 27,244,129, 78, - 37, 72, 34, 91,191,117, 29, 31,133,180,170,103,221, 81,151, 57, 3, 79,224, 93,158, 77, 41,107,135,225,216, 1,103,206,203,151, -111,112,117,195, 52,141,201, 70, 30, 95, 63,251, 53,101,185,230, 15,126,124, 70,114,113,142,235, 5, 36,231, 11, 92,229,177, 94, - 23,120, 81, 66, 50, 26,178,223,239,109,160, 43, 77, 88,156,158, 16, 68, 41, 55,235, 13,129,159,224,120, 1, 89, 99,181,140,147, - 36, 65,170,150,186,172, 48,178,229,242,254, 61,150,171, 13,223, 62,249,142,193,239,124,198,252,108,138,105,115,100,117,192,113, -193, 53, 45,139,129,199,157,223,249,132, 31,125,246,144, 86,193, 62, 47, 8,195,132, 63,254,239,126, 15,157,173, 24,197, 46, 89, -182, 39, 68,210, 85, 53,109,165,233,186,150, 8,193,249,157, 51,148,118, 41,155,142,212,147,156,205, 2,252, 32,101,185, 58,176, -220, 92,147, 78,206,240, 28,201,120, 16,144, 36,115,100, 91,179, 93, 47,185,252,236, 83,146,192,167, 42, 90, 48, 2,223,209,120, - 65,128,112, 58,140,232,240,251, 68, 48,210,166, 94,199,195, 1, 93,219,112, 54,155,112,121, 49,160,200,106,174,175,183, 22,114, -225, 89, 45,229,111,190,123,194,229,197, 24, 63, 26,208,202,146,125,158,225, 5, 49,180,130,172,104, 57,100, 27,182,135, 61,190, - 23,163, 85, 72, 83, 93,115,113,234, 19, 68,130, 32, 0, 95,231, 52,251, 13,178, 83, 22,138,160,192, 73, 3,156, 56,101,120, 18, - 49, 26, 57,132,158,193,117, 27,252, 78, 35,180,193, 32,161,105,241,133,199,201,124,140,144, 62, 77,103, 71, 98,110,152,160,148, -193,193,225,221,219, 37,203,181,228,242,114,129,108, 27,164, 60, 16, 37, 62,231,231, 19,222,190,126,198,167, 31,126,132,239, 6, -108,214, 59, 22,243, 57,217,126,201,226,100,128,240, 32,241, 67,242,131,198,117, 61,154,186,195,117,106,220,192, 39, 74, 60,202, -252, 0,174,101,206, 43,157, 33,220,132,225,120,200,228, 36, 97,183, 41, 48,162, 98,190, 72, 24, 12,125,138,106, 67,154, 40,132, - 11, 90,214, 12, 6, 9, 74,181, 36, 9, 68,145, 38,140,124, 28, 28, 30, 61,122, 96, 15, 56, 82, 19,184, 17,218,113,233,162, 0, -169, 59,174,175, 86,228,155,221,241,131,155,166, 67, 90,161,144,173,162,168,106,210,216,165,213,202,186,161,103,115,234,174, 38, - 29,143,216,231, 13, 79, 95,188, 98,185, 41, 48, 78, 64,146,166, 22, 11,106, 58,154,182,162,106, 75,124, 95,208, 42,201,114,189, - 98,185, 89, 66, 31,154,186, 69, 71, 22, 69, 65, 35,219,227,158,176,105,154, 35, 25, 75,120, 46, 81,154,224,246,170,199,219, 32, -208,131, 7, 15,108,192,106,117,141, 49,134,178, 42,145, 74,114,126,126,206,211,103, 47,136, 34,187,102,112,177,169,218,215,175, - 95, 51, 76, 7,164,113,204,151, 95,126,201,211,231, 47,120,251,238, 29, 74, 41,134,195, 33,203,229,178, 23, 45,149,150, 30,214, -143,137,111,109, 90, 65, 16,176, 90,173,142,204,239, 39,207,159, 81,150,229,241,203,222,241,237, 3, 72,150,197,177, 98,116,171, -197,188, 77,137, 3,168, 64, 30,107,124,117,221,176, 94,111,142, 93,225, 91,221,239,109, 15,248,183,255,114,156,230,216,183, 13, -253,136,178, 40, 25, 60, 24, 17, 6,241,145,211,189,219,237,144,178,179,107, 10,215, 50,190,113, 92, 60,223,167,150, 54,155,225, - 7, 17,162,207,161, 4, 81,136,231,210, 87,166, 36,198,235, 9,140,194,253,126,101,212,227,105,253,192,208,105, 7, 93,106,218, -174,197,119,253,227, 72,117, 52, 26,161,148, 60, 62,212,133, 16,100,123,139,237,237,180,252,158, 57, 81,245,108,115, 4,190, 3, - 65, 96,119,202, 73,146, 28, 3,151,195,161,197, 43,239, 54,235,227,104,191,235, 95,139,219, 7,112,221,148,220,187,119,143,247, -239,223, 31,215, 22, 74, 41, 78, 78, 78, 88,175,215, 76,103, 51, 62,254,236, 83,158,190,120,202,126,187, 37,142,173, 41,205,254, -185, 67, 58, 12, 55, 55, 55, 71, 27,222, 45,140,196,202,114,130,158,107,209,245,166, 52,203, 7, 56,190,206,174,203,201,201,130, - 32, 74,184,123,121,201,195,187,151, 68,177, 69, 13,127,254,131,143, 25, 36, 41, 95,125,253, 47,252,221,223,253, 61, 31,126,248, - 33,179,147,211, 62,188,229, 16,133, 49, 85, 85, 91, 2,165,136, 72,211,152, 15, 63,124,132,231, 59,140, 39, 67,174,175,175, 9, - 3,203,252, 87,117,193,249,249, 57, 56, 1,219,237,222, 38,184,181, 97,183,219,177,221,108,216,237,118,120,158,199,120, 60,198, -243, 67,132,235,211, 42,141,106, 91, 68,150,227,123, 97, 47,182,241,184,115,239, 46, 39,243, 5,239,175,175, 56, 61, 61,167,211, - 86, 99, 90, 87,253,148,216,129,232,214, 42,105, 12, 56,130,113, 63,158,175, 91, 73,117,179,194,104,203, 79,137,227,196,166,245, - 27,251,115,239,100,135,106,109,115,199, 86, 2, 45, 76,108, 56,152, 16,199, 41,142, 8,122,124,120,132,210, 10, 28,159, 36, 25, -145, 36, 54,116, 92,118, 21,210, 83,204, 23, 39,184, 30,108,214, 55,204, 79,134,180,117, 73, 85,231,184, 78,108,107,158,142, 34, -142, 6,164,169, 97, 56,137,137,166, 3,178, 98,199,239,255,193,135, 12,210,128, 97, 18,246, 23, 67,151,209,100, 65, 94, 72,214, -251, 55,188,187,186,198,245,195, 62,100, 87,245,104,247, 14, 89,238,112, 93,219, 70, 19, 77,137, 39, 5, 30,180,140, 6, 49, 70, -151, 12,210,132,251,119, 47, 49,170,161,170, 86, 68,110,199, 79,126,247,115,126,254,243,191,161, 58,108, 41,246, 41,157,172, 64, - 11,132,238,152, 77,173, 46,114,249,254, 29, 89,182,231,179,207, 62, 99,190, 56,101,179,222,209,116, 10, 35, 59,110,150,239, 8, -227, 1,187,221,225,216, 3,150, 82, 82,229, 5,101, 43,185,188,152, 49,157, 37,140,227,128,182,217,178, 93, 23,140,210,128,211, - 89,138,227, 88, 53,166,112, 52,195,129,143,118, 98,180,227,243,252, 69,197,155,183, 47,184,121,125, 74,168, 11,188, 65,132,150, - 13,142, 31, 35,187,230,200, 81, 79, 6, 49,217,126, 13,110,200,112, 56,227,247,127,252, 57,191,243,197, 15,241,195,132, 39,223, - 61,231,159,127,253, 45,211,211,115, 52, 48, 25, 95, 18,199,224,137,134,195,246,138,201, 56, 97, 52, 76,185,122,123, 69,224,218, -174,161,227,185,148,165, 36,175, 10,194, 96,192,100, 28, 19, 24, 31,163, 5,194,116,184, 90, 97,218,146,209,100,194, 32,116, 88, - 33,169, 15, 27,146, 56, 5, 45, 88,175,215, 24,225, 19, 15, 98, 26, 89,209, 30, 90,158, 60,121,131, 22,224, 58, 5,105,234,226, - 56, 6,223, 83, 12, 71, 67,134,241, 5,179,233,226,216,167,212,166, 35,138, 67,234,218,193,104,151,213,126,139,118, 66,226, 20, -162,113, 66, 58,246,240,122,250,147,167,251, 30,187, 27,208,200,214,254,187,137,199, 96, 50,160, 40,107, 68, 4, 45,109, 47, 36, -241,209,120, 68, 97,128,239,248, 40, 26, 6,147,136,233, 60,224,193,221, 57,170, 94,243,205, 55,255,202,199, 15, 63,102, 52, 24, -128,238, 24,164, 17,243,217,136, 74,181,108,179,140,236,176,226,225,195, 15, 24,222,155, 29,245,132, 97, 24,130,152,247,166, 34, - 67, 93,159,145,198, 9, 81, 20, 19,134,143,112,197, 67,246,187,107,242,195,150,179,179, 41,191,243,197, 39,148,133,194, 15, 45, -179,221,186,142, 33,140,122,238,189, 35,216, 32, 89,156,206,108, 8,171,145, 4, 94,136, 52, 32, 34,251,222,240, 60,107, 52, 27, -184, 1,163,225,192,178,249,219,134,241,104,206,252, 44, 68, 54,138,213,251, 37,104,135,208, 15, 8, 67, 15,165, 21,178,169, 8, - 60,152, 77, 6,100,149, 98,179,190,166, 41, 11,106, 89, 97,140, 69,242, 10,215,161,105, 91,202,166,162,211,154,217,226, 20,109, - 56,154,167, 28,199, 38,109,127,251, 1,248,253,205,215, 63,122, 20, 94,191,126,205,118,187,101, 58,157,242,193, 71, 31, 90, 5, -107, 83, 91, 65,145, 35,250, 16,154,173,224, 24, 99, 40,202, 10,199,192,108, 26,218,177,172,235,241,246,205, 91,254,249, 87,191, - 98, 48, 26, 31,185,225,183,110,245,241,120, 76,221,195, 53,110, 31,216,183, 9,228, 91, 76,167, 23,216, 48,228,225,208, 63,180, -186,238,200,235,191, 5,222,220, 38,150,221,158,126,246,219,196,181,219, 7,253,120, 60, 62, 6,226,110,119,189,117, 93,131,113, -142, 20, 48,203,162,143,250, 64,159,165, 38,222,250, 9,238, 92,124,196,253,123,151,100,153,189, 5, 45, 22, 11,206,206,206,184, -190, 94,242,248,241, 99,202,178,135,195,184, 30,145, 49,116,178,151,199, 24, 7,215,183, 21, 70,223, 11,193,115,240,125,213,243, -183,189, 35,218, 51,142,227,190, 66,164,143, 61,235,225,112, 72, 28, 89,228,111, 60,136,236,235,211, 79, 55,218,214,134, 16,155, -198,222,240,227, 48,162, 40, 10,180, 81,199,195,218,173, 11, 92,107,133,145, 53, 97, 24, 49, 28, 14,143, 25,130,219,138,211,109, -182, 64, 56,182,239, 62, 74, 99, 70,163, 17,195,161,253, 14,108,107,216,110,109,112,242,201,147, 39, 60,122,244,168,103, 83, 52, - 24, 3,215,215,215, 12,210,148, 31,253,232,119,249,135,159,255, 23,194, 48,176,228, 60,207, 99, 54, 59,161, 40, 50,188,145,115, -132,143, 0,199,247, 93,215,187,193,147,100,208,187, 55,236,103,242,246,247,228,122, 30,139,197, 41, 2, 75, 48,171,234,130,231, -207,159, 83,215, 21,127,240,239,127,194,231,159,127,206,233,217, 9,175,223,252,239,172, 86, 27,178,162,161,105,173,212, 71,105, -219,122, 74,211,148,216,143,153,207,167,220,127,112,215, 50,230, 31, 62,224,151,255,244, 11, 91,187, 77, 18,214,235, 45,243,241, -136, 14,193,230,230, 26,169, 96, 50, 30, 90, 0, 76, 89, 90, 1,152, 77, 73,224,121, 1,151,151,247,184,119,239,193,209,147, 17, - 7, 33,142,239,209, 52,146, 40,142, 45, 7,222,117, 24, 12, 70, 44,123,236,173,212,210, 58,235,149,166, 42, 11, 59,230, 14,237, -231,205,113, 28, 28,207,197,117, 92, 84,215, 33, 92, 7,227, 88,248, 76, 87, 84,199,135,184, 43, 12,194,115,142,217,136, 48,140, -241, 92, 13,198,195,104, 75,108,243, 60,223,222,142,149, 66,169,219, 94,185, 67, 81, 84, 56, 66, 88, 42,160, 99,120,241,236, 25, -239,223,191,230,147,143,255,144,217,244,156, 78, 86,196,145,197, 17, 71, 81,140,239,248,116, 50,231,233,203,111, 89,248,151,124, -247,236, 59, 62,250,104,198,195,159,252,136,178,216, 17,132, 29, 97,232, 83,213,215, 76,102, 11, 62,251,236,146, 55,111,159,227, -186, 2,221,194,106,151, 49, 31,159, 98,148, 38, 16, 6, 33, 21, 97,224, 18,140,199, 44, 70, 99, 60, 35, 52,141,106,173,150,210, -117,232,164, 38,107, 14,132,110,194, 40,245,200,246, 25, 85,102,245,169,135,197, 20,223,133,192,143, 8, 19,151, 48, 74,152, 57, - 1,178,179, 97,155,243,243,115, 14,153,125,115, 92,175, 86, 60,127,241,134,203,123, 15,240,132,131,105, 42,148,236,104,140,161, -105,172,175,215,243, 4, 89,182, 33, 78, 60, 22,147, 57, 15, 47, 83, 78, 70, 9,105,228,147,246,130,138, 56, 78,236,141,212, 73, - 40, 27, 77,211, 57,212,121,205,187,215, 87, 60, 95, 60,231,195,203, 9,133,176,176, 13,169, 26, 75, 64,146,109,255, 80, 31, 48, - 95,156,210,182, 13, 78, 83,224,123, 62,160, 72, 67,248,241,151, 31,241,193,135,247,200,219, 22, 63,142,112, 29,133, 39, 52,158, - 35,121,242, 56,131,174, 36,244, 2,206, 23,145,173, 63, 72,137,239,123,196,161,131, 31, 8,198, 99,143, 65,228, 18,137,144,166, -233, 80,210,161,171, 10, 94, 61,253,150,213,205,146,195,234,138, 0, 69,213,118,104, 79,224, 96, 40, 14, 45, 85, 93,163,180,225, -221,213,138,205, 58,227,171,127,125,134,214,154,135,143,166,252,222, 79,126, 15,151, 10, 99, 26,134, 65, 74,232,249, 68, 65,210, -223,150,108,213, 65, 27,159,205,182, 96,189, 42,217,175,118,172,246, 7,230,167, 67,228,221,123, 56,174, 79,135,180,123,122,225, -163,141,131,233,124,132,241,233,164,162, 46,109,178,183, 67, 18,132, 62, 90, 40, 28, 60, 26, 41, 24, 12,102,248,183,122, 79, 85, -115, 50, 31, 50,155,121, 56, 84,252,224,179, 15,201,183,182,242,114,239,242, 62, 31,127,244, 1,235,205, 27,132,144, 4,158, 75, -145, 31,216,110,214,156, 46, 22,220,191,255, 16,223,247,217,237,118,116,198,146,235,180,182,206,241,219,135, 84,221,214,248,129, - 75, 26, 69, 8, 93, 81,230, 7, 70,105,194, 15, 63,255,156,221,182,192, 8,199,142, 25,221, 30,176, 96,108, 16,209,119, 93,178, -253,150, 50, 63,216,159, 9, 2,229,214,104, 71, 96,116,203,190,104,184,186,218,210, 73,131, 16, 86, 67,154, 36, 17, 85,169,240, -221, 14, 45, 58,174,174,174, 41,247, 57, 49, 62,187,245,154,201,212, 58, 15,170,178, 37,207, 14,100,149, 38,175,237,206,215,218, -155, 28,226, 52,162, 85, 13,155,155, 21, 89,153, 51,154,140, 9,157, 20,131,253, 82, 46, 42, 91,117, 10,251, 36,116, 89,218,250, - 96,146, 36,148, 77,141, 31,133, 71,169,209,118,187,101,219,107, 48,207,207,207,121,119,125,197,122,183,181,244, 56, 37,153,159, -218, 67,220,245,245, 53,195,225,144,237,118, 75, 20,133,184, 61,145,236,235,175,191, 38,244, 45, 71,218, 8, 88,245,206,129, 52, - 77,201,178,204, 30, 10, 38, 99, 54,155, 13, 90,219,127,231,246,203,252,226,226,130,172,200,173, 42,185, 15, 29,174, 54,107,139, -221,236,123,240,128,237, 96, 99, 33, 32,227,241,216, 18,174,140, 13,137, 17,127, 63, 74,167,211, 4,161, 13, 92, 89,249,143,173, -188, 45,151, 75,148,210,199,135,252, 96, 48, 98, 60, 30, 99,140, 97,183, 59,244,112,165,142,186,110, 89, 46, 87,124,254,217,103, -132, 94,200,213,213, 21,207,158, 61, 59, 30, 38, 38,147,209, 17,109, 44, 28,199,222,112, 61, 65,221,127,190, 29,172,121, 80, 43, -107, 33, 12,253, 8,173,122, 13,172,210,184,142,139,239, 90,254, 65,203,247, 83, 6, 11, 36, 17,120,218,254, 55,111,129, 39,118, -101,100, 39, 45,183,135,151, 48, 12, 73,211, 20,199,181, 15, 76,235,144,215,199,213, 74,154, 14, 73, 18,139,105,141,227,248,136, -242, 76,162,152,186,172,232,180, 4,109,127,205, 56,177,237, 1, 80,168,254,225,187,217,108,168,170,138,231, 47, 95,179, 56,187, - 32,244,124,164,204, 80,173,100,185, 92, 41,212,176,223, 0, 0, 32, 0, 73, 68, 65, 84, 18,133, 33,143, 30, 61,192,247,125,126, -241,139, 95, 16,133,150, 72,105,167, 61, 53,163, 65,114, 60, 44, 58,142, 67, 16, 37,199,159,251,109,224,210, 30,192,232, 65, 37, - 30,186,174,169,139, 2,165,222, 91,183,128, 19,160,141,178, 35,126, 41,249, 63,255,143,255,139,191,249,235,191,226, 79,254,228, - 79,248,224,131,143,250, 80,115,134, 31, 68, 56,194,235, 15,236, 49, 6, 73, 93,238,142,159,247,197,124,134,139,230,243,143, 63, - 96,181,188,102, 52, 30,115, 50, 25,163, 52, 36,131, 33,195, 36,229,102,181, 67, 26, 65, 16,198,100,135,138,217,201, 9,186,179, -239,223, 56, 9,137, 2, 75,166,179,100, 56, 69,215, 27, 62,101,219,145, 23, 5, 90, 27,138,170,100,119,216,179,217,237,200,203, -194,210, 63,123,105,208, 45,182, 59, 77, 99, 6,195, 33, 6,199,222,252,141,213,195, 10,199,197, 49, 6, 41,237,173,188, 58,216, -196,124, 24,120, 4, 81, 64,153,229,116,157, 33, 9, 83,162, 48,177,193,231,170,161, 40,107,164,194,126,199,106, 97,191, 91,141, -219,187,231,107,198,195, 49, 77,211,176, 89,223,176,219,175, 25,166, 17, 81, 40,248,225, 15, 62,180, 83,164,182, 34,232, 15, 13, -166,211,116, 93,193, 87,191,249, 5,207, 94, 28,120,127,245,158, 95,253,234, 95,248,248,195,187,104, 89,226,122, 6, 17, 26,186, -174,100,179, 45,185,115,103,204,157,139, 41,111, 94, 47,105,202,142, 36, 30,161, 85, 70, 87, 43, 68,167, 9, 93, 15,223,243,240, - 59,129,169, 21, 94,165,106,118,187, 29,113,232,162, 58,193,110, 95,224, 58, 14,233, 60, 69,171,142, 86, 86,156, 93,156, 50,157, -157, 34, 68, 68,135,161,146, 29,187,253,129,242,253,123,206,102, 39, 44, 22,103,132, 97,200,205,205, 13,155,109,102, 45, 82,241, -128,221,190, 96,117,115,133,208,134,186,170,104, 27, 69, 91,218,126,174, 48, 29, 78, 40, 72,125, 69,215, 72,116,169, 25, 71, 11, - 22,147,132,174, 45,233,218,154,182, 85, 28,182, 27,124, 63, 69,248, 13,141,246, 40, 27,216,237, 51,234,182, 35,175, 90,140,227, - 81,201,150,125,222,208, 57, 1,174,103,157,238,194,245, 8,226,152,109, 94,179,203, 14,156, 24,151,203,203,123,184,210,222,180, - 93,215, 5,209,177,152, 37, 76,230, 19,182,235, 37,194,128,239, 5,124,244,232, 3,235,171, 46, 51, 2, 95, 0, 13, 77,147, 17, -134, 35,102,179,132,116, 16, 16, 69, 9,109,213,145, 21,123,140,114, 72,227,136, 79, 62,254,144,178,106,112,189,136,201,104,132, -227, 69, 12, 6, 51,188, 32,228,237,213,123,158, 63,127,142, 84, 85,191, 67, 20,212, 82, 33,149,149, 73,156,150, 1,167,139, 57, -131,164, 67,214,123, 68,219, 17,186,160,149,189, 69,185,194,195, 49, 29, 90,251,255, 63, 87,111,214, 37, 73,114,158,103, 62,110, -102,190,199,154, 75,101,237, 75, 87,245,130,110, 0, 68, 55, 64,130,128, 64, 74,212,118, 36, 82, 71,103,164,203, 25,158,185,215, -197,252,135,249, 55,163, 51,210,156,145, 14, 15, 37,106, 52, 18, 23, 64, 4, 73,128,236,110,244, 2,116,117,237, 89,185,103,198, -234,187,187,153,205,133,121, 68, 55,230, 34,111,170,187,178, 34, 60, 60,220,190,229,125,159,151, 80, 57, 65,248, 98, 62,231, 48, -203,233,218, 61,178, 71,215,104,119,199,120, 90,128, 22,212,173, 32,175,117, 15, 60,145,120, 26, 48, 37,218,212,148, 93, 78, 58, - 78,232, 44,204, 86, 21, 69,214, 98,250,206,190,169, 10,210,212, 99,111,154, 48,153, 72, 76, 87,226,121, 45, 63,250,225,111,241, -217, 47, 30,115,244,250, 21,111,190,113,135,201,104,128,198, 96, 60,201,157,235,183, 49, 21,228,203,156,203,243, 43, 70,227,177, - 35,173,153,150,166,170,145,190,235,178,187,206,229, 95, 11, 79, 98, 53,204,138, 57,161,148,212,165, 83,206, 71, 97,194,221,219, - 83,178,162,114,163,226,168, 87,182,227, 70,239,155,184,197,186,104, 72,211,148,131,235,251, 28, 92,159,130,240, 40, 59,143, 47, -158, 28,242,162,124,141,175, 18, 90,237, 8,120, 40,159,170,214, 60, 59,252,146,203,229,156,197, 98,198,183,223,125,143,201,206, - 14,249,106, 78, 87, 55, 44, 22, 51,172, 23,115,239,206,109,180,136,120,122,248,154,243,203, 11,170,170,224,209,163, 71, 92, 94, -157,178, 90, 45,168,218,134, 56, 77,240,163,144,229,149,155, 0, 84,189,202,123,115, 16,109,184,221, 27,171,208,245,235,215,183, -157,242, 38, 33,107, 60, 30,115,112,112,128,209,240,244,233,151,142,161, 46, 60,194, 36,222,146,228,164,148,125, 96,140, 27, 43, -183, 70, 99, 53,104,157, 99, 34,199,218,206,171,218, 65,157,250, 36,180, 77,199,110,173, 83, 46,111,186,235, 56,142,145, 82, 50, - 26,141,184,154,207,182, 69,106, 20, 69,206, 94,215, 59, 13, 54, 93,173,231,121,120,214, 29,238,155,221,184,176, 95, 33, 43,173, -181, 46, 58, 20, 28, 83,221,119,222,235,205,129,233, 80,150,222,150, 79,189, 73,105,219, 36,144,185,212,199,138,171,166, 38,142, - 14, 40,138, 2,217,211, 54,154,166,217, 30,140,227,241,152, 40, 74, 40,138,130,229,218,177,211,187,214,208, 86, 53,158,239,245, -164, 50,181,141, 93,246, 60,127,235, 69,222, 28,188, 93,215,109,121,218, 27, 30,253,230,115,170,235,154,176,117,240,145,178, 44, -221,238, 30,219, 83,192, 92,225, 98,123, 28,169,177,221, 54, 7,126,195, 50, 47,203,118,155,172,182,129,213,108, 38, 16,163,209, -136,229,106,222, 43,208, 91,132, 80, 68,113,136,239, 75,242,252,171,168,210,241,120, 76,158,231,148,101,201,209,209, 17,161,234, -163, 72,181,251,221, 47, 94,188, 96, 50, 25,241,163,191,247,187,156,156, 28, 17,250,129, 91, 95, 86, 5,227,241,148,182, 42,221, - 46,122, 54,115, 19, 12,161,182,249,246, 27,156,169,155, 26, 56,246,122, 16,134,219,128, 35,107,161,169, 90,222,121,231, 29,134, -195, 17,171,245,146,247, 63,248, 54,127,240, 7, 59,124,252,241,135,252,209, 31,253, 17, 77,167,233, 12,232,206,146,164, 33, 8, - 65,224,135, 4,126, 66,215, 20,140,175, 93, 71,133, 17,171,101,198,135, 31,126, 76, 26,250,236,238,140,184,119,251, 14,235,245, - 10,235,193, 98,225, 96, 74, 85,109,184,188,188, 4, 21, 48, 28,237,144, 14,166, 72, 63,222, 2,125,116, 83, 83,148, 53, 69,238, -162,170,215,107,231,182,104,218,138, 52, 25, 82,183,141,179,129,225,212,230,109,215,184,238,187,143, 3,222,100,158,135, 97,132, -240, 21,173,209, 32, 5, 93, 93,211,182,206,214,106, 55,184,237, 70,211, 53, 13, 85,182, 6, 99, 49, 70, 19, 39,142, 73, 16,244, -159,191,181,222,118,242,225,190,211,110,154, 32,173, 79,233,213,104, 3,182,174,251,156, 9,195,108,118,197,106, 57, 39,244, 61, -246,119,246,184, 60, 63,161, 46, 31, 18, 12, 2,202,124, 69,163, 60,124,233, 38, 88,119,111,239,243,131,239,127,151,255,227, 63, -252,103,180,149,188,124,250,154,231,143, 15,121,251,173,123, 64,197,106,121, 69, 16,249,116,117, 75, 20,250,188,245,224, 54, 47, -159,190,194,211, 30,223,253,246, 55, 56,122,117,200,170, 43, 28,126, 60, 30, 16, 42, 77,158, 45, 81,228,168,121,150,179, 88,103, -212, 77, 68,107, 50, 60, 20, 30, 30,243,245, 26,172, 65,134, 1,183,238,221, 71,248, 9, 39,151, 43, 71, 43, 11, 21,218, 83,136, - 48,161,238, 90, 30, 63,125,140,144, 62,202,143,104,141, 71,148, 14, 24, 76, 66,222,247, 3,190,248,226, 11,166,147, 1,109,236, - 30,208,155,135, 95, 28, 38,248, 1,172, 86,199,220,186,177, 71,154, 36,200,182,225,242,228, 53,131, 36,102,152,166,100,203,140, -249, 98, 73,148, 24,106,157,147,119,130,101,105, 57, 91, 45,209, 97, 68,137,143, 9, 6, 4,202, 18,104, 31, 63, 29,211, 90, 77, -214,212,228,235, 10, 51,171,137,210,132, 47,191,124,205,112,184,132,192,193, 58, 84,172,220,195,167,171,105,234,156,124,161,233, -170, 6,219,105, 84, 28, 50, 8,135,212, 85, 70,209,213,172,109,129,231,105,214,217, 10, 37, 5, 81, 16, 19,168, 16,207, 72, 86, -171, 21,167,175,206,145,210,231,224,224,128,187,183,111,225,135, 17,120, 18, 79, 42, 60, 25,208,212, 6,229,135,116,205,146, 39, - 95, 44, 57,121,253,148,182,221,227,242,226,132,171,139, 57,194, 51, 88,235, 50,218,203,245,146,174,200, 17,186,132,182,166, 52, -150, 56,140,182, 15,249,178,106,233,108,130,214, 9, 88, 77, 93,148,180,121, 69,179,106,168, 51, 67, 83, 73,218, 74, 82, 87,154, -171,101,193,201,229,138,139,171, 21, 73, 24,226,155,134, 56,176, 12, 19,137,231,215,120, 45,128,228,234, 34, 99,189,182,212,165, -197, 23,138,201, 56,226,224, 32,101, 56,136,137, 2, 67, 99, 61,148, 39, 80, 18,190,253, 27,239,240,179,191,254, 59,254,250,175, -127,202,251,223,121,151, 32, 10, 65,198,220,190,190,195, 32,154,242, 23, 63,249, 75, 78, 95,159, 81, 87,206,147, 41,125, 65, 81, -228,125,248, 76,207, 85,214, 27,182,177, 11,240, 73,131, 30,246,161,221, 30, 44, 12, 20, 81,152,210,117,174,144,241, 3, 71,120, - 10,164,162,109, 90,124, 17,210, 86, 29, 68,146, 52, 74, 81,190, 7,194,162,172,193,154,134,186,204, 17,161, 79,221,181, 84,101, -203,229,213,130, 40, 77, 56, 59,187,226,244,252, 4, 48, 76,198, 59, 4,145, 15, 54, 33,150, 22, 36, 12, 39,251, 88, 63,230,163, - 79,191,228,163,143, 62,196, 15, 98,126,248, 59, 63,226,245,235,215, 20,181, 3, 98,164,195, 20, 25,248,180, 93,199, 34,239, 85, -188,254, 87, 40, 76, 39,100,113,234,106,225, 43, 39,172, 84, 33,109,179,102,189, 94,187, 29,123, 60,112,129, 53, 74,113,120,120, - 72, 89, 87,125, 87, 31, 35, 3,191, 7, 17,185,253,248,106,181, 98,103,103,218,219,111, 90, 36, 30, 65,143, 95,182,157,166, 51, -154,182,113,113,158,101, 83, 99,133, 99,157, 47, 22,139,237, 46,124,179, 99, 13,227,104,155,107,190,233, 50,149, 82,196,131,212, -197, 94,246,209,153,178,135, 96,248,210, 9,199,226, 32,236,193, 35,218,113,244,173,165,107,219,173,207,120, 48, 24, 33,125,159, -170, 90,224,251, 45,190, 31, 34,165, 3, 4,109,174,203,166, 99, 84, 74,225,171,208, 61,160,235, 26,207,106,116,107, 88,206, 22, - 14,232, 81, 85,148, 69,193,112, 48, 64,119, 46,131,252,246,237,155, 92, 92, 92,145,151, 21,108,246,226,253, 33,237,138,146, 6, -207,147,180, 90,211,181, 6,247, 28,247,127,237, 0, 15,122,123,151, 49, 6,109,245, 54,127,190, 51, 93,159, 40,198,215, 50,180, -191, 90, 55, 56,230,121,207, 92,208,221,175,177,228, 93,193,208,244,197,140, 43,204,165,148, 44,230, 87,120, 24,135, 57,157,205, -122,204,172,135,233, 92, 33,222,213, 13,109,189,137, 97,149,204,151, 43,178,162, 36,141,189,109,224, 74,163, 59,148, 39,209,214, -240,252,249, 11, 12,154,223,255,103,255,156,223,253,189,127,192,179, 47,159, 56,220,182, 29,146,198, 9,202,115,218,141,172, 44, -182,197, 89, 89,150, 46, 29,172,135,228,184,245,129,183, 93, 5,109,192, 51,109,219,226, 75,159,200, 15,136,252,128, 96,186,195, -217,241, 9,135, 47, 94,178,202, 51,170,170, 65, 72,223, 97,146,241,200,178, 12,113,113,193,206,222, 53,116,231, 17, 39, 17,243, -213,140,213,122,193,221, 91,183, 48, 93,141, 12, 2,210,116,200,254,238,152,207, 62,251,140,211,211, 83,130, 40,225,230,221, 7, -168, 32, 98,103,119,159,214,122,228,117, 67, 49, 91, 51, 24, 78, 93,244,106, 81, 49,159, 93,186,130, 67,119, 12, 71, 46, 48, 72, - 40,137,180, 1, 85, 83,179,204, 28,147, 67, 42, 69, 81,185,247,155,103, 89,111,193,243,126,141,246, 7,176,202,214, 4,126,212, - 7,163, 4,248,113, 76,215,186,208,163,197, 98, 65, 89,100, 4,218,178,191,183,131, 82,130, 48,142,182, 5, 89, 58,152,160, 59, - 88,190, 58,222, 2,115,172,181,212,173,195,214,150, 77, 77, 89,150, 36,161, 71, 85,230, 44,103, 87, 46,181,205,106,180,109,145, - 42,228,242,242,156, 39, 79, 31,243,246,155,111,184,239,130,112,217, 8, 47,159, 63,199,116,154,135, 15, 30,241,230, 27,239,113, -116, 52,167, 92, 88, 62,253,187,231,188,125,255,109,226,216,167,171, 50, 2, 4, 42, 20,104,219,113,247,230, 77,238, 30, 28,240, -236,203, 67, 34, 31, 14,174, 13,184,125, 99,128,213, 29,105, 28,226, 97, 89,206, 45,195, 52, 68, 69,161,207,120, 60,100,189, 88, - 83, 21, 37,111, 61,122, 3, 41, 61,102, 87,231,140, 71, 3, 86, 85, 65,148,186,174, 46,175, 92,117, 89,180, 45, 97, 28,144,198, - 49,157,118,251,185,120, 48,113,106,236, 22,210,241,142,203, 99,151, 43,222,125,247, 93, 66, 95,177, 90,204,168,171,114,251,229, - 73,226, 20, 41, 44, 59,195,123, 8,211, 82, 44, 10,130,201,132, 40,142, 49, 86,144,229, 29,203,117,201,229,213,130,161, 17,148, -157, 71,167, 66,138,214,146, 53, 5,235,166,224,213,249, 17,250,111, 87,164,161, 98,177, 94,161,252,144,170,233, 64, 56, 49, 68, -148, 36,116, 93,199, 47,127,245,152,221,201,152, 59,247, 31, 18, 15, 39,238,193,164,107,202, 98, 69, 26, 8,230,231,151,140, 71, -187,174, 51, 82,146,243,171, 25, 30, 29,150, 6, 95,117,196,177,143, 71,128,240, 66,164,136,240,180, 64,120, 17, 70,175,104,140, - 69,216,150, 85, 86,184,125,213,213, 21,235, 60,115, 68, 59,165, 40,139, 26,235,193,197,217, 5,146,146, 34,187,224,117, 53,227, -240,229, 75,180,145,152,166, 34, 13, 12,227, 84, 17, 72,141,215,181,196,129, 68,201, 4,221, 53,196,190, 66, 10,136,146,152, 48, - 54, 52,157, 79,107, 98,178,162,247,197, 18, 66,235,163,107, 69, 93,122,148,185,102,177,206,120,121,178,228,233,243, 83, 46, 46, -215, 40, 4,161,237, 56,216, 77,120,112,119,159,100, 32,161,115,124,255,182, 13,169,187, 22, 67,139, 84,134,131,131, 33, 55,111, - 78, 80, 20,232,170, 37, 80,110, 79,232, 25,215,101,127,231,219,239,240,139, 95,124,202, 79,254,252, 39,252,195,127,242, 79,177, -224,200, 98, 26, 22, 87,115,194, 96,192,104,180,217,223,121, 72, 79,210,181, 26, 15,131,239,251,180,182,165,174, 91,146, 56, 96, -144, 12,208,117,137,238, 26,210,100,136,193, 99,126,229,242,191,135, 73, 74,217, 84,155,176,225,237, 65, 52, 25, 78,208,218, 29, -156, 14,112, 83,209,154,154,170,246,176,186, 1,163, 49, 86,147,173,107, 22,235, 53,120,146,105,191,251,182,198, 67,245,200,198, -203,249,140, 65, 20,176, 88,175,136,162,136,171,171, 43,254,242,231, 31,241,234,244,146,221,253,235, 24,161,248,243, 31,255,153, - 27,117,123,150,100,144, 48, 95, 45,169, 86, 75,183,235, 23, 2,229,251,116,157, 65,245,187,218,205, 23,223, 24, 67, 60,112,169, - 89, 47, 95,190,116, 62,218,158, 35,126,112,112,128, 49,134,215, 47, 95,246, 66, 54,247,119, 90,163,201,150, 69,111,113,242, 89, - 46, 87, 92,187,182,191,229,217,111,246,187,142,130, 38,251,224,160, 1, 74, 6, 76, 38, 19,242,170,220,146, 2, 95, 31, 31, 51, - 76,211, 45, 57,108, 19, 18,177, 25,101,111, 70,206, 26, 75, 81,150, 91, 54,182,181, 22, 63, 8, 24,141, 70, 46, 90,184,170, 56, -216,219,119,211,131,126,199,188, 81,180, 7,190,223,171,197, 91,103,185,249,218, 30,222,189, 95,111, 27,214,178,233, 96,163,200, -117, 80,155,107,100, 53,219,131, 55, 12, 67,202,178,228,228,228,100, 43,108,211, 90, 51,234, 58,214,235, 37,186,109,136,146, 20, - 21,110, 34, 44,189,175,210, 3,149, 79,103,204, 86,165,191,233,180,155,166,217,238,102, 55, 12,247,206,124, 21,245,105,140, 83, - 88,127,189,155,183,214,108,189,249,117, 93, 35, 61, 65, 28,199, 36, 97,178,157,134,108,242,214, 37, 30,105,154,160,148, 96, 58, -157,110, 15, 81,215, 37,187,215,168,117,219,195, 65,108,223,233,119,125,124,168,237,133,108, 78,128,183, 41,190,232,187,208,131, -189,125,218,182,101,119,119,143,139,243, 43, 62,249,228, 19,110,222,188,206,227,199,143,105,154,218,209, 2,219, 35,138, 44, 7, -221, 17,165, 78, 41,191,191,191,223,107, 60, 74, 70,163,209, 54,177, 45, 78, 6,219, 49,253, 70,211,208,182, 46, 56, 73,121,130, -227,147,163, 45, 19,253,242,242,146, 70,187,236,240, 52, 77,153,175, 86, 36,241, 0, 77, 63,165, 65,176, 92,175, 8,227, 61,162, - 36,229,245,171,231, 44,150,107,118,199, 67,158,124, 57,231,254,255,244, 47,120,244,214,187, 92, 94,206,248, 47,255,245,191,178, -206, 11,126,249,171, 47,208, 94,128, 12, 99,240, 19, 58, 13, 97,156,210,182, 93, 63,113,113, 33, 85,158,231, 33,130, 16, 95,133, - 61,216,203, 17, 33,179, 62, 80, 73,244, 96, 37,107,109,159, 55,239,225,121,106, 27,214, 50, 26,141, 24, 77,198,219,149,138, 49, -134, 70,119, 52, 90, 67, 5,121,225, 38,211, 89,225,174,219,245,235, 7,252,224,251,223,229,218,181,107,172,114, 87,124, 55,109, -135, 71,135,144,146,193,208, 65,155,178,220,165, 94,174,179,101, 79, 93,183,168, 48, 32, 77,125,206,207,230,204,103, 51,166, 59, - 35,166,227, 33, 71, 71, 47, 9,125, 69,188,187,203,171,151,175,185,125,243, 6,147,209, 0,211,181, 84, 69,199,103,159,126,193, -106,181,226, 95,253,235,119,249,131,127,242, 47,249,183,255,246, 63, 50,191,188,226,179, 15,191,224, 7, 31,124,135, 55, 30,238, - 51, 78, 71,104, 74,138,170, 68, 41,201,238,100,202, 91, 15, 31,242,119, 63,253, 59, 62,250,249,207,248,224, 55,222,225,189,111, - 62,194,154, 6,221,213,104,221,210, 84, 9,131, 52, 65,254,207,255,244,135,255,251, 40,141, 57,216,221,225,218,222, 20,211,181, - 72, 9,163,209,128, 42,207,136,194, 0, 60, 65,154, 14,104,234,218, 1,236,235, 10,172,161,105, 28, 3,216,122, 30,171,162,166, -243, 36, 63,253,249,135, 84, 26, 70, 59,187, 78,196,226, 75,210, 36, 36, 8,125,210, 52, 34, 77, 66,226, 56, 36, 76,220,104, 47, -242, 7, 40,145,112, 53, 47,201, 74,141,245, 98,206,231, 57,103, 23,115, 58, 28,118,239,124, 54,167,110, 91, 86,101,198,186, 46, - 25, 77, 71, 76,118, 39, 36, 73,200, 48, 77,177, 86,224,135, 49,241, 96,196,120,186, 75, 58,156,226,121,138,178,110,121,117,120, -200,197,229, 21, 65, 16,113,244,250,136,123,247,238,160,148,228,236,244,132, 36, 8, 41,215, 25, 62, 78,229,158,175,106,116, 39, - 88, 47, 42,124, 21,209, 20, 45,101,209, 80,150, 29,105, 58, 65,119, 18,173, 3,214,235,150,178,176,148,149, 70, 6, 62, 97, 28, -211,104,205,225,235, 67, 62,254,228, 23,204,103, 87,196,113,196, 32, 13, 89,175,175, 80,210,112,109,127,192, 91,143,238,178, 55, - 25, 50, 29, 39, 60,186,127,143, 71,143,222,224,155,239,190,195, 15,127,240, 62, 55,175, 37, 76, 6,138, 97,162,240,173,112, 21, -180,138,145, 82, 17,197,238, 97,225,169, 0,171, 2,170,214, 67, 27,197,211, 87,167,156, 93, 86,236,237, 92,103,127, 58, 36,246, - 37, 71, 71, 47,121,117,244,138,199, 79,159, 80, 84, 37,249,186,192, 51, 6,105, 53,182,173,168,170, 18,221, 89,206, 47,151,156, - 94, 20, 44, 75,133, 17, 33,161, 52,220,189,189,203,141,107, 3,218,106,129,167, 91,146, 56,197,104, 75, 93, 57,216, 77,219, 86, -148,249,138,107,215,174,147, 45, 11,158, 62,125,197,245,235,215,201,203, 2,221, 25, 62,255,229, 47,233,218,150,187,119,239,162, -124,133, 18,110, 28, 38,164,135, 47, 60,140,238,240,149,164,169,107,194, 32,128, 78,227,245, 33, 45,198,184, 3, 69, 8,199,217, -246,132, 69, 73, 80,129, 75, 96,139, 2,233,120,216, 88, 70,195, 1, 81, 24, 17, 70, 18, 79, 85, 24,219, 16,248, 49, 23,231, 51, -158, 63,127,205,229,229,146,103, 47, 95,147,149, 21,201,112,196, 98,181,228,245,225, 43,164, 20,125,128,198,119,184,123,239, 14, - 97, 20,113,247,246, 77,230,139, 37,127,250,227,159,240,244,229, 33,251, 55,110,113,112,227, 38,135,199,199,136,126,172,230, 71, - 1,157,209,148,101, 78, 86, 20,116,214,144, 14, 6,184,224, 78,250,108,106,119, 64, 9, 95, 49,234,197, 99,103,103,103,219,125, -246,181,235, 7,220,184,121,131,117,182,230,244,236,172,239,166, 90,170,166, 37, 73, 83,180,233,122,241,149, 33, 77,146,222,186, - 4, 69,238,214, 97,234,107,221,181,144,146, 78,119,212,141,243,207, 11,233, 51,153, 76, 1,143,139,139, 75,194, 32,196, 15, 67, -202,170, 6,207,209, 11, 39,147, 41, 90,155,222,190,227, 81, 53,173, 67, 80, 10,126,109, 84, 29,135, 17,111,188,241, 6,207,158, - 62,101,111,111,207, 49, 32,250,232,215,162, 40, 92, 65,158, 36,204,103,115,252,192,199,243, 4, 77,219, 34,165, 79,211,180,228, -121,129,239,187,206,120,163,106, 22, 66, 48,159, 45,217,221,221,219, 6,166, 4, 65,192, 98, 62, 99, 50, 30, 50,157,184,127, 99, - 54,155,225,251,138,157,157, 9, 74,185,200, 76, 41, 60,174, 93, 59,224,237,183,223,193, 19,146, 87,175, 14,105,154, 22, 41, 20, - 87, 87, 51,192, 5, 26,249, 74,145,103, 25, 82,128,238, 90,162, 32, 36,240,125,132,146,125,167,229, 17, 69, 33, 66,138,237,129, -189, 41, 30,132, 16, 91,130,162,236,177,189,121,238,108,136,155, 64, 35,173,187,222,242,148,109,199,229, 77, 93, 17, 6, 62, 74, - 8,238,220,190,141, 7, 44,151, 43, 70,189,197,113,189, 94,210, 84,165, 75, 18,235, 15,241,186,174,250, 34, 66,161,148,207,124, -185,102,157,213,164, 73, 76, 16, 70, 72,169, 16, 66, 50, 76,211, 62, 70, 24,222,124,243, 77, 46, 46,206,121,244,232, 33,227,233, -152, 79, 62,251,148, 36,138,209,186, 99,103, 58,165,213,154, 32, 8, 41,138,146,215,175,143, 88, 44,150,204,151, 11,142, 79,142, -201,139,156,229,106,197,229,229, 21,203,165,211, 70, 93, 93, 93,113,124,118,202,114,190, 64, 41,201,114, 49, 39,207,243,254,117, -251, 76, 38, 19, 38, 59, 83,246,247,247,249,224,187,223, 35, 43, 10, 86,203, 53,158, 84,148,101, 69, 94, 20,164,131,129,211, 42, - 24,235,246,212,210,103,157, 57, 80,210,143,127,252, 19,138,162,226,225,195, 55, 89, 44,214,252,248,127,252, 13,233,112, 74,222, -184, 70, 45,175,106,252, 56,165, 40,156,195,192, 15, 2,116, 79, 69, 44,203,194, 9, 44,117, 75,211, 54,212,109, 77,219,211, 30, - 55,206,138,166,105,232,172,233,189,227, 46, 35,195,243, 96,103,103,138,215,175,118, 2, 63,194, 83,138,206, 24,194, 40, 38,232, - 3,173,234,186,113, 88,218, 44,227,205, 7,247, 57,216,157, 82,150, 43, 58,221,146,151,107,118,118, 39,238,187, 85, 87, 92, 92, - 94, 80,148,149,139, 80,110, 27,134,195, 33, 69, 85,176, 90,205,241, 4, 4,129,100,127,103, 68, 85,102, 78, 44,120,247, 54, 69, -190, 70, 42,184,115,235, 22,187,187,187, 52,117,195, 98,190,228,222,237, 7,188, 62, 58,229,249,243,215,212,141,229, 31,252,222, - 63,198, 26,201,206,206, 13,174,237, 93,231,244,232,152,213,226, 10, 65,199,163, 55,110, 33,188, 6, 41, 65,119, 29, 24, 65, 28, -142,121,246,228, 37,207,191,124,202,189, 59,183,248,222, 7,223,134,174,166, 41,151,208, 21, 96,106,132,109,233,218, 2, 21,154, -154,108,113,229,146,160,252,144,220, 84,188,248,226, 5,187,215, 14,152, 78,167,206,151, 89, 22,204,117,183,173,244, 59, 93,131, -242, 48,198, 3, 4,157, 39, 25,237, 94,227,241,243, 67,254,203, 95,124,204,228, 23, 95,240,187, 63,250, 29,222,255,214, 55,137, -149,162, 69,247,153,227,142,144,211,234, 14, 79, 90, 84, 20, 98,109, 64,215,121,148, 70,113,126, 58,163, 13,198, 52, 29, 4,254, - 16,141, 97,180, 59, 34, 72,199, 46,162, 46, 10,240,130,152,206,147, 52, 8,124, 25, 17, 34, 89, 92,206, 56, 61,187, 96, 62,159, -187,221, 85, 18, 19, 6, 17,131,208,231,238,141, 27,252,224,123, 31, 56,187, 70,219,242,127,255,187,255,147,223,249,209,111,115, -227, 96,159,213,226,138, 88, 8, 86,185, 75,229, 26,141,118,192,104,194,200,167,174,221, 8, 37,148, 33, 40, 67,215, 74,150,171, - 21, 85, 37, 8,227,132,174, 89,131,146, 68,131, 33,101, 93, 80, 55, 53, 70, 8,119, 16,120,150,241,100,200,183,127,227, 93,150, -203, 25, 74,128, 82, 98,251, 16,177,214,253,104, 43, 64,184, 96,136,227,227,115, 20, 29,129, 23,227, 9,129,109, 61, 58,235,245, - 10,219, 26,131,198, 8,137,145, 30, 8, 31, 35, 45,202,247,153,236,238, 97, 80,188,124,113, 4,221, 10,204,146,201, 48,224,221, -119,110, 97, 9, 8,252, 49, 62, 1, 49, 30, 73,168, 8, 34,159,117,217,240,228,229, 17, 95,188,120, 69,105, 7,220,186,123,131, - 71,119, 71, 36,169,143, 20, 21,235,108, 78,105, 64,183,166,175,222, 35,172,173,209,166,166,214, 21, 65, 16,113,243,246, 93,130, - 32,118, 49,156,180, 72,229,179,191, 63,194, 15, 18,124, 9,158, 18,120, 82, 32,164,143,181,142, 75,188, 94,175,169,139, 10,107, - 90, 70,195, 16,229, 9,124, 49,164,173,107, 22,171, 53, 85,185, 68,249, 33, 97,228, 19, 68, 46,142,182, 51, 21,214,115,153,205, - 97,228, 57,191,109, 87,209,181, 13, 73, 11,137,167,192,243,104,235,134, 52,138,121,244,198, 67, 78, 47, 50, 6,211, 3, 38,187, -215, 56, 60, 58,230,179,207, 62, 97, 60, 26,241,195, 31,254,128, 40,116,163,217,117,150,177,187, 51,229, 47,255,226, 79,121,242, -228, 9, 29,110,167,141,240,120,246,234, 37, 65, 28,146, 23, 37,190,175,200, 86, 43,186,174, 65,247,180, 39,109, 44, 77,211,119, -124,218,224, 11, 73,222, 7,194,236,236, 59, 59,210,213,213,213,118, 95,186,191,191,143, 16,130,179,179,179, 45,199, 96,243,179, -201, 75,111,187,154, 40,138,216,219,219, 99, 56, 28,146,101, 25, 23, 23, 23,196,177,243, 62, 75, 44,163,209,136,186,103,137, 11, -207, 99,127,127,159, 40,114, 86,170, 60,207, 57, 63, 63,223,218,214,186,174,219, 22, 26,155, 46,125,163, 76,223,236,157, 1,116, -159, 82,181,233, 94,195, 48,252,234, 64,243,253,237,235,245,195,112, 27,251,232, 98, 67,191,154, 74, 24,107,182, 58,130,205, 78, - 57,237, 39, 5,155,221,113,158,149,219, 78,223, 69,249, 70,140,199, 99, 78, 79, 79,121,251,205,135,204,231, 51,138, 34, 99,103, -103,194,222,222, 14, 87, 87, 87,196,113, 72,217,235, 95,234,170, 98, 49,155,131,233,168,107,167, 91, 24, 36, 49,202, 15,104,186, -118, 27,216,145,166,233,246,223, 48,198, 80, 55, 78, 0, 87, 20,110,172, 94,183,205,150,165, 15,176,191,127,109,123,125,220,225, - 45,251, 29,169, 27,185,110,174,163, 39,108, 63, 33,112,227,255,174,235, 64,247, 74,127,163,183,152, 86,247,123, 44, 74, 57, 45, - 65,150,101,142,114,102, 45, 77,159, 77,174,181, 70,234,175, 52, 7, 82,178, 93, 23,172, 86, 43,167,202, 15, 92,243,179,187,115, - 13, 99, 44, 93,103,120,242,228, 25,183,110,221,226, 71, 63,250, 29,116,227, 4,125,194,179, 91,155,220,122,189,230,236,236,140, -245,122,141,233,181, 1,155,253,249, 38,186,115,107, 59,196,225, 92,133,231, 49,152, 76,144, 82, 50, 30,143, 9, 67,167,173, 40, -106,135,171,254,217,207,126,214, 71, 76,167, 24, 60, 90,169,168,219,150,249,236,146,233,206, 30, 42,138, 41,106,141,110, 10, 6, - 81,196, 42, 91,178,123,237, 22, 63,249,233,223, 96,240,120,239,219,223,227,213,201, 37,207, 15,143, 24, 78,247,136,135, 49,235, -178, 98,181,206, 9, 2,103, 89,148, 82, 34,251,123,199, 9,106, 3,135,163,222,160, 85,123, 75,102,219,182,116,189, 94,194,224, - 2, 87,214,235,130, 40,114, 19,133, 48, 12,157,229,172,235, 40,106,151,188,152, 23,229,246, 51,220, 8,233,180,238, 56, 56, 56, -112,239,201, 58,228,108, 89,174, 29,165, 79, 58,155,106,146, 76, 56, 61, 57,163,200,106,199,113, 87, 46,200, 9, 12,120, 22,173, - 59,234, 50,167,109, 26,198,227, 17, 69,145,113,248,250, 37,202,131, 36,137, 89,174,215,200,204, 99,190,204, 48,173,225,143,254, -248,255,197, 90,203,217,241,177, 43,108,253,207,248,230,123,223, 38, 29, 25,238,223,219,231, 15,255,240, 95, 83,172,231,236, 79, - 83,124,137,139,217,173, 45, 50, 8,105,181,229,240,197, 33,207,159, 60,163,105, 58,158, 63,125,193,242,187,239, 19,249,134,216, -183, 96, 90, 71,120,165,231,234, 95,139, 21,211,235, 19,162, 36,102,185, 90, 33, 3, 67, 26,194, 52, 77, 8, 61,143, 32,137, 9, -132,231,104, 59, 42, 38,138, 28,176,127,103,178, 75,107, 65,134, 49,209,104,130, 12, 71,124,252,229, 17,131,233,144,214,122,124, -254,228, 57,195,241,132, 55,239,222, 64,122,160,109, 7,104,140,238,247, 89,158,203,105,175,107, 15, 21, 14, 57,107, 42,126,254, -248, 9,207,150,110,220,242,230,131,251,220,190,185, 79,105, 26,130,200, 49,204,165,150,132,248,110,111, 47, 67,164, 39,105,170, -140, 56,176,220,189, 57, 37,240,111, 48, 30, 79, 25, 14,135,248,126,136,181,186, 31,109,185,108,238,201,120,128, 45,175, 56,121, -254,152,135, 55,119,137,167, 41,166,107, 17, 3, 71, 65, 11, 67,225, 96, 47,169, 34,138, 6,104,107,156, 96, 37,141,232,186,150, -178,173, 92, 64, 72,224,177,206,150,120,190, 79,185,104,104, 58,141,192, 35, 30,142,216,191,113,139,217,229, 25, 87,179, 25, 87, -179, 25,195, 97,136,213, 46, 58,212,118,224, 9,209,227, 76, 29,101, 73,155, 22,225, 11,116,147, 83,149,130,216,119,201, 86,166, -147,189,154, 93, 96,181,161,197, 69, 72, 90, 35,201,171,142,197,170, 98, 85,230,204,150, 21,194, 15,104, 76,200,193,193, 46,247, -110,222, 36, 12, 27,144,154,186,210,132,106,136,105, 5,116,218, 69, 20,138,128, 87,231, 25,203, 47, 79,121,118,188,162,236, 74, - 84, 24,113,235,186,143, 39,220,131, 77,122, 26, 95,132,196, 42,193,247, 99, 60, 35,200,171,194,133,184, 40, 5,210, 5, 0, 73, -169,176,162,196,243, 65, 8,184,119,255, 58, 66,134, 76,118, 66, 84, 24,244, 25,231,110, 23, 26,134, 49, 73, 2,229,186,196, 90, -216,223, 27,144,175, 51, 23,252, 19,250,116,214,223, 6,200, 0, 68,137,243, 37,171,112,128, 54,110,167,110,140,161,174, 58,174, -174,230,180,181, 65,170,161,123,152,135,138,225, 96,200, 49,115,202, 34,227,193,131,123,216, 32,229,103, 31,127,194,243,215, 47, -240,148,228,193,131, 7,220,190,117,139,243,211, 19,102,179, 25,241, 40,225,223,253, 95,255,158,249,229, 5,239,191,255, 62, 71, -231,151,148, 86, 81, 52, 45,171,188, 36,203, 11,118,246,118,161, 31, 81, 55,109, 69,146, 36,110, 76,220,182, 84,149, 59, 20,226, - 48, 96,149,101, 46, 91,122,144,110, 49,175,155,131,121,178, 51,101, 56, 30,177, 92, 46, 57, 59, 59,219,134,134,108, 2, 39, 54, - 29,200,198,231,188, 25, 29, 11, 33,240,140,165, 41,171,109, 34, 24,128,146,146,225,206,206,246, 0,221,140,220,215,235,181, 59, - 64,124, 71, 83,108,234,102, 43, 80,219, 88,177,170,170,162,232,153,236,155, 81,111,211, 54,248, 66,246, 25,207,186, 15, 2,185, -218, 30, 56, 89,175,236,223,116,252,157,214, 8,173,177,158, 19,240, 53,173,198, 83,114,155,249,172,148,192,152,110,203,196,222, -236,213,195,200,199,162, 49,198,254,218,193,126,242,122,229,236, 94,163,145, 83,117,211, 33,164, 7, 70, 83,230, 89, 31,209,154, - 17, 6, 17,247, 31,220,230,254,253,251, 60,125,250,140,211,147,115,130, 80, 57,139, 97,158, 99, 13, 72, 37,136,250,241,124,158, -187,184, 78, 43,188,109,193,225,121,142, 51,176, 25,203, 74,233,116, 49, 74,169, 30,208, 98,136,162,112, 59, 77,112, 73,147,178, - 47,126,218,175, 2, 47,251, 81,127, 85, 23, 4,254,112,187,106,112,118, 65,247,123, 76,207, 43,207,243,140, 52, 77, 29, 42,183, - 44,221, 1,101, 90,116,231, 33, 83,217, 55, 73, 80,119,154,206, 66,215,116,204, 23, 11, 86,123, 25,195,201, 16,169, 20, 85,227, -236,100,199,167, 39, 92,191,126,141,219,183,111,243,159,254,211, 31, 83,102,185,211, 57,244,235, 13,165, 20,147,233,148, 91,183, -239,186, 66,236,107, 2, 70,183, 87,118,121, 9,155,131, 82, 88,215, 9,110,176,167,139,245, 2,189,208,219,102, 46,203, 50,166, - 59,123,180,198,176, 92,172,145,126,192,206,206, 46, 87,243, 5,243,249, 21,158, 20, 92, 31,220,227,205,183,223, 98,118,113,238, -108,161, 65,128,213, 29,168,136,159,127,252, 25,247, 30,189,203,247,255,222,223,231,240, 63,252, 71,230,139, 53, 34,104, 72, 70, -206,147,238,251, 78,201,239,251, 62, 98, 99,161,196,108,239,213,245,122, 77,146,198,219,239,131, 16, 2,175, 23, 43, 74,207, 61, -115, 66,233, 38, 59, 46,231, 92, 58,118,122,239,238,104,154,118,171, 47,193,218,237,186, 97,103,103,202,173,155,215,157,226,221, -183, 91,129,156,177, 46, 69, 47, 8, 2,146, 32,233, 3,105,220, 26,199,235,220,148,165,237,227,167,233,185, 20,203,229,146,178, -112,224,155, 78, 59, 1,184,231, 57,133,187, 82, 62,190,138,169,171,142,179,243,115,246,119,247, 24,140,175, 97,140,225,147, 79, -159,176,202, 74, 30,189,121,202,222,206,152,251,183,238, 48,191, 90, 3, 25, 69,213,225, 71,130,178, 41,161,115, 98,199, 87,175, - 94,240,211,191,254, 25,195,193, 46,103,103, 11, 62,254,248, 11,254,209,239,254, 54,129,201,192,184, 52, 60, 60,139, 68,162,246, -134, 17, 42, 24, 80,150, 57,141, 50,168, 97,196,163, 55, 30, 16, 38,187, 92,205, 86,132, 81,194,104,156, 34,124, 75, 20,244, 16, -121,235, 44, 8,141, 17,228,157,165,106, 5,191,252,252,115,254,159,255,254, 83, 52, 33, 50, 12,249,226,217, 43,103,211,249,205, -247,121,112,103,143,113, 4, 66, 88, 60, 1, 50,244,240,165, 15, 42,196, 31,248,160, 82,178, 23, 53,231,101,198,201,203,151,116, -173,102, 94, 54, 44,202,154,183,239,221, 36, 29,196, 8, 60, 76,215,208, 22,181, 75, 90, 10, 36,173,173, 72, 7,138, 36,182,120, - 72, 2,169,136, 67, 15, 69,133,108, 91, 7,200, 55, 18, 83,230,116, 20, 44,202, 57,191,245,237,111,240,201,167, 31, 35,105,233, -234, 6,169, 60,234,166, 38,203,220,248,105,177, 88,177,202,114, 30, 61,124, 11,131,139,182, 43,250,177,155, 31, 5,228,197,154, -106, 89, 58, 91, 94,105, 9,195,161,251,146,183,134, 48, 8,216,187,118,224, 2, 12, 6, 33,218, 66,150,151, 24, 93, 97,187,202, -129,195, 29,219, 10,129, 15,158,192,250, 62,126, 48,112, 85,166, 10,177,158, 79,215, 58,138,145,219,231,141, 48,116, 8, 25, 64, - 91,211, 26, 73,211,148,142,172,134, 37, 74, 60,194, 8,164,178,164, 73,196,120, 20, 81,100, 51,164,105, 17,186, 65,155, 10, 97, - 36,166, 51, 84,141,164, 38,162,168, 27,106, 3,157, 23,226,169,128,186,107,251,113,112,131,242, 66, 6,113, 68,224, 37,132,190, - 79, 91,118,120,129,194, 83, 33,190, 39, 16, 94, 75,215, 89,164,177, 84, 77, 78, 52,176, 8, 97, 48,166, 38, 78, 2,164,144,189, -175,220, 99, 93,100, 84, 85,137,177, 13, 74,164, 36,161, 34,241, 71,189,133,196,227,240,234,188, 15, 81,240, 49, 6,174,223,188, -193,100, 50, 33, 43,214, 40,133, 75, 69, 19, 46,179,216, 51, 29, 82, 73,202,178,102,177,184,196,179, 10,107, 15, 24, 14,199,238, -193,172,107,210, 40, 70,226,225, 89,203,147,231,207,249,226,203,199, 12, 70, 67,170,170, 96, 58,157,240,234,213, 11,124, 37, 56, - 61, 59,227,207,254,253,159,211,234,142,255,237,223,252, 27, 62,253,252,151,252,213,207, 63, 36, 76, 6, 84,198, 67,248, 62, 50, - 10,200,202, 2,165,156, 96, 73, 74,233,236, 60,214,162, 91, 67,215,103, 31,135,190, 75,174, 50,198,108,115, 0, 54, 7,230,238, -238, 46, 59,123,187,204,102, 51,206,206,206,200,243,124,171, 48,223,116, 79,117,235,252,225, 73, 26, 97,173, 99,189,183,149, 19, - 82,109, 58,197,182,109, 73,226, 16,172,101,167, 15,212, 48,198,184,213,151,181, 92, 94, 94,178, 90, 57,109,128, 10,220,131,188, -235, 31,214, 66,136,173, 58,254,171,220,104,111,219,201,122,198, 66, 63,130,223,100,127, 95, 92, 92, 16,244,218,131,141,122,125, -147, 79,191,121,111,218, 24, 23,146,227, 7, 4,253,158,126,179, 79,223,168,216, 55,175,221, 90,187, 45, 48,172,245,182, 83, 2, -175,159, 54, 20, 69, 78, 93,151, 76,119,198,172, 22,115,130, 64,113,237,218, 30,103,231, 39,128, 68, 34, 16, 88, 86,139, 57,121, - 94, 51,155, 93, 81, 55,206, 95,236,135,233, 54, 60,100, 99,253,148, 82,161,141,235,204,234,174,221, 30,232,155,247,189,121, 63, - 74,169,109,231,253,245,131,111,227,205,119,124,118,183,255, 54,214, 9, 18, 55, 83,136,209,104, 68,149,103, 8, 60,162,208,233, - 11, 54,192,154,141, 53,206,185, 23,108,255,103,238, 90, 74,229,209,149, 78,181,173,148, 98,127, 60,117,147,152,254,117, 88, 79, - 83, 20, 21,231,231,231, 40,165, 56,124,241, 18, 63,144,232,182,227,230,173, 3, 78, 78,206,248,214,183,222, 99,111,111,159,231, -235, 53,137,255,255, 43,236,242,156,195,195,195, 45,248,232,235,100, 63, 33,156, 71,123,243,103,128, 19,201,133, 33,109, 91,111, -133,122,155,207,113, 56, 28, 50,153, 76,184,127,255, 62, 87,183, 22, 28,190, 62,166,174, 35,167, 41,224, 0, 0, 32, 0, 73, 68, - 65, 84, 75,226, 80, 33,167, 19,164, 18,156,157,159,112,235,206,109,238,220,185,195,203,231, 79, 41,202, 10,171, 59,246, 14,110, -113,116,116,196,135,191,248,156,239,126,247,187,188,255,193,111,242,242,240,136,197,106, 73, 28, 70, 72,229,138,175,213,114, 65, - 85, 22, 8, 11,117, 93,226,225,166,154,109,235, 34,159, 87,171,246,215, 52, 22, 91, 0,146, 20, 40, 79, 16, 71, 97, 95,188, 84, -172,178, 53, 74, 6,125,167, 94,111,245, 4, 97, 24, 82, 22, 5, 66,120,236,239,236,112,112,112,192, 56, 77,153, 95,157,241,230, -183,190,129,239,123, 95, 5, 16, 25, 71,150,155, 76,247,249,198, 55,190,193,225,235,115,116, 7,117,235,238,255,182,170,209,198, - 77,158,171,202,244,186,136,142,155, 55, 15, 16,210,240,250,213, 11,231, 56, 73, 83,154,186,227,198,141, 91, 44,230,107,226,116, -178,157,218,117, 93,195,176,110, 88,102,107,254,234,111,254,146, 91,183,118, 72, 18, 24,166, 1, 77,221,225, 41, 15, 79,250,116, - 93,139,177,130,197,186, 32, 76, 38,200, 48, 65, 72,197,186,108,249,179, 31,255,156,135,247,238,243,224, 32,197,107, 12,186,179, -110, 37,129, 70, 9,237,177,188,154,243,234,248, 5,251, 55,175, 99, 61, 73,147,117,156, 31, 93,178,204, 52,235,124, 70,148, 6, -236,236,198,236,238, 15,104,234,156,182,106,153, 47, 53, 97, 58,230,114, 89, 96, 85,198,225,201, 21,158, 74,153, 78,166, 72, 63, - 32, 12, 82,154,114,193,139, 87,135, 60,184,115,141,189,189, 29, 2,233,226, 51, 27,157, 32,148, 66,123, 2, 21, 15, 56,186, 90, -113,122,121,130, 63,136,240,213, 0,131,226,245,108, 73, 94, 59, 4,226,195, 27, 7,236, 38, 62,104, 75, 91, 87,248,126,136,167, - 59,180, 46, 89, 47, 43, 68, 96, 8,149, 15,218,199,118,185,179,133,132, 9, 97,160,104,155,134,221,113, 66,219,214,132, 34,196, - 15, 21, 63,248,205, 15,220,195,110, 52, 64, 41,193,151, 79,190,224,147,207,255,150,223,255,253,127, 78,148, 10,218,215, 5,126, -100, 81, 65,130,146, 17,159,125,254, 5, 39, 39,103,124,255,135,223, 39, 26,198,172,214, 51,166,251,251,104,109,241,253, 49,214, - 40, 86,203,140, 60, 47, 16,158,100, 52,218, 65, 72,203,229, 98, 77, 18, 75, 2,101, 9,131, 16, 97,125,108,107, 48,157,117,171, - 11, 33,250,195, 61, 68,250, 9, 42, 74,240,124,215, 41, 72,229,136, 88,218, 19, 46, 13,174,105,184, 92,204, 88,173, 42,206,207, -214,156,158,102, 44,103,231,212, 85,199,124,150,163, 74,159,217,229, 46,119, 14,174, 83, 22, 5,129,223, 98,173,102,181, 90,225, -203, 0, 1,104, 2, 58,213, 98, 44, 52,186,165,172, 43,252,200,173, 67, 58,163,241, 60, 87, 13, 75, 33, 64, 91,119, 56, 88,129, - 50, 33, 86, 40,172,112,123,125,211,181,120, 74,130,165, 79,200,210,212,141,102,185, 92,226, 33,216,187,182, 79, 93,151,156,159, -158, 56,156,174,213, 72,235, 70,132,129,114,135, 83,145,229, 92, 94,158, 83,150, 53,147,126,252, 55,217,153,210,117, 46, 68, 65, -249, 30,203,108,233,136,120,184,131, 63, 77,191, 74, 32,139,147,196, 9, 56,181,199,112, 56, 37,159,215, 52, 85, 75, 28,186,168, -210,191,249,217, 95,161,162,132,178,169, 8,195, 0, 79,184, 28,249,167,143,191,228,207,254,199,159, 83,116,142,102,248, 71,255, -229,191,114,121,181, 68, 70, 9,157,240, 9,194,144,103,143,159, 48, 24, 13, 17, 90,147,231, 13, 70,107,148,112,216,205,170,105, -104,181,197,247,157, 16,114, 56, 28,210,117,154, 60,207,105,219, 14, 33,100, 47,218, 73,216,221,221,167,170,107, 78, 79,207, 89, - 46,215,142,184,215, 99, 60,165,116,135,102, 28,134, 68, 65,128,110, 28,194, 83, 8, 65, 36, 29, 87,160,204, 11,151, 5,221,180, -164, 83, 23, 15, 59, 25,186,120,207,141,247,125, 51,166,111,181, 75,252,219, 28,166, 27,219,218, 70, 21,172,173,117,118,164, 94, -185,189,121,208,135, 97,136,192, 67,163, 29,148, 37,140,192,216,173, 90,124, 51,182,181,214,226, 41,137, 39, 4,198,195,229, 5, -232, 14, 97, 93,248,199,215,139, 5,119, 48, 40, 32,112,220,255, 30, 4, 99,173, 69, 42,151,255,236, 9,139,239, 75,180,118, 5, -101, 24, 40, 70,131, 20, 93,151,219, 98,123, 52, 26, 80,151,141,219,173,214,181, 19,234,162,248,198,219,239, 16,134, 17,175,143, - 78, 56, 57, 63, 99,208,223, 23,244,113,211, 97, 24,210,106,183,242,217, 25,237,244,226, 66, 7,103,169,219,166, 31,193,186,194, - 34,142, 29,112,103,227,219, 23,194,237,211, 55,255,207,100, 52,222,254,183, 77,129,178,161, 7,150,217,154,189,157,221,173, 24, -207, 21,121, 62, 81, 63,157,112, 99,113, 31,207,179, 91,101,186,240, 44,149, 45,221, 53,232,117, 12, 94, 15,203,113, 41,134, 18, - 79, 73,218,174,163,170,107, 70,227, 62, 29, 82,117, 20,101,201,135, 31,127,196,173, 59, 55,249,224,131, 15,156,149,178,255, 76, -253, 62,242, 52,142, 99,242, 60,231,201,147, 39,172,215,235,237,170, 64, 99,251, 41,161,247,107, 43,148,186,174, 49,214, 18, 37, - 49, 81,226,172,143, 97,236, 38, 20,142,209,174,120,246,236, 25,171, 60,195, 19,146, 48,148, 8,237,238,159,245,122,197, 98, 93, -240,177, 39,248,246,183,191,201,222,222, 30, 95, 94,205, 24,141, 70,100,121,197,245, 27,183,249,226,241, 83, 6,195, 9, 15,223, -124,155, 71,111,189,195, 98,181,228,234,234,138, 85, 31,177,154,175,242, 45,125, 81,107,221,119,234,158, 75, 77,236,215, 42,162, -191,231,186,174,219, 90,216, 2,225,152,249,142,232, 24,161,141, 32,140, 18, 60, 79, 48, 95, 45,105,234,142,174, 53, 12, 82,183, - 34,172,139,146,201,100,204, 59,111,191, 77, 20, 5, 92,158,157,147,175, 51,126,241,241,167, 68,113, 64,146, 68, 28,220, 60,224, -198,238, 62, 47, 94,188, 96,190,248, 21,190,114,194,187,170,236,133,196,158, 4,227, 92, 12, 18, 15,221,118,120, 72,238,223,123, -131,187,247,110,209,180, 69,143, 27,142, 25, 12, 70,100, 89,193,147, 95, 61, 99,185, 46,216,221, 61,160,104, 86,204, 86,107,166, -211, 49,239,125,240, 29, 38,163,136, 23, 47, 62,103,189, 56,227,197,235, 67,222,255,214,187,180,186,161,179, 30,117, 97,241,252, - 9,159,125,250, 37, 71, 71, 23,188,245,246,183,248,205, 31,254,136, 95,124,248, 41, 45,130,117,101,248,233,207,127,193,205,127, -246,125, 2, 37, 16, 42, 64, 98, 29,120,172,110,113,254,193,197,146,233,237,155,172,171,142,215,103, 87, 60, 59,204,201, 10,193, -213,114,141,182, 53,215,111, 37,220,190,189,135, 53,110, 20,209, 20,151, 36,233,148,188,172,184, 88,100, 36,211, 3, 30, 60,124, -135,139,185, 83, 41, 78,166,215, 88, 25,103, 43,218,236,217,132,173,176,182, 67, 89,137,177,150,198, 64,153, 23, 28, 62,123,193, -147,199, 79, 41,109,128,136, 35,146,225,144,178,171, 33,171,249,187, 79, 62, 39, 91, 92,242,219,223,122,139, 81,236, 67,167, 25, - 12,124,172, 0, 31,159,116, 58, 36,138,124,162, 48,196,235, 12,109,233, 18,195,164,215,186, 28,232,201,192, 89, 15,130,128,221, -189, 41,235, 34,199, 15,122,213,179,142, 93, 26, 14,138,227,163, 83, 60, 33, 73, 7, 3,222,120,243, 17,109, 45, 56, 59,190,160, -204, 13,255,253, 79,127,198,229,229,140,235,183, 30,113,255,193, 13,180,205,156,114,221,118,212, 89,193, 32, 29, 51, 78, 7, 52, - 85, 67,158,151,104,107,104,219,138,211,179,130,233, 56, 97, 50, 78,216,157, 14, 73,163, 16,164, 1,237, 54, 90, 32, 48,248,100, - 89,195, 98, 85,210,116, 0,153, 35, 98, 9, 71, 8,211,186,166, 49, 37,218, 22,189,192,163, 97, 57,111, 40, 51,201, 48,142, 89, -213,167,152,106, 77, 75,202,122, 62,195,211,183, 8,131, 1,157,205,208, 6,162,120,140,192,195,118, 5,214,235, 72, 98,197,168, - 11, 72, 67, 55,234,106,116, 73,217,168,173, 29,200,106,225,172, 83, 74, 97,172, 68,201,144,101, 86, 80,154,154,170,117,121,240, -161,159, 96, 59, 39, 90,113, 98, 44,131,177,146,170,172, 49, 6,164, 23,160, 77,139, 49, 30, 77,211,145,196, 17,113, 52,116, 96, - 9, 79,109,169, 91,158, 17,148, 69,195,254, 94,132,244, 21,243,217,138,243,139, 75,130,192,231,224,214, 62,179,217,130,249,252, - 98, 43,184,242, 8,200,214, 37,101,233,246,248,103,167, 87,220, 80,123, 14, 66,211,184, 98,233,242,236,156,203,162, 98,157,175, -216,223,153,114,116,114,204,205,253, 3,246,247,119,249,232,111,127,206,243,167, 79,185,113,227, 6,203, 50, 39, 8, 99, 62,253, -229, 99,110,220,186, 77,107, 5,167,199, 39,164,227, 41,163,221,169, 59, 16,133,162,170, 27,220,224,217, 81,201,154,166, 35, 12, - 99, 6,241, 16, 79, 73,186,206,112,126,126,182, 29,135,111,178,171,135, 67,135,203,156, 47, 23, 46,164,165,127,208, 23, 69,177, -221, 87,111,252,175, 27,165,118,211, 52,196, 97,180,237, 72,132,112,169,122,105,236, 72,100, 27, 66, 93, 93,215, 4,177,179,210, -157, 92, 94, 56,149,182,255,235,153,223, 82, 74,202,178,220,250,214, 55,215,124,235, 51,239,195, 26,165, 39,182, 93,219,112, 56, -220,118,107,170,199,109,126,221,121,176, 89, 13,108, 30,180, 27, 28,231,166,112,216,116,120,155, 41,192,198,211,237, 14, 92,177, -253,221,155, 3,117,227, 87,239,186, 6,225, 57,205,197,120, 60, 38,203, 23,104,221,114,235,214, 77,142, 95, 31,187,181,133, 84, - 36,225, 0,131,116,163,198,126, 36,110,117,139,214,174,128,149, 82,210, 25,141,210,138,166,169,233,186,102,171, 15, 8,124,243, -107,135,250,102,215, 60, 24, 12,183,206, 5,183, 18,113,175,115,195,134,159, 93, 94,185, 67,209,124, 85, 32,109, 14,195, 13, 76, - 72,120,118,171,188,119,211, 13,111,251, 59, 55,215,107,179, 31, 70,176, 45, 76,173,241, 56, 63,191, 68, 27, 67, 20,134, 91,253, -193,134, 67, 63, 26,141,208, 93, 67, 16, 40,226, 52,101,177,184, 98, 62,155,241,171, 95,253,138,111,125,243, 93,242, 60,231,103, -127,245, 87, 40,233,184,248, 89,150,109, 69,141,131,193,128,247,222,123,207, 33,125,123,206,193,230,190,216, 56,144, 54,147, 10, -103, 97,116,106,241, 44,203,182,239, 47,142, 99, 30, 63,126,204,211,167, 79, 49, 8,118,118, 92, 26, 93, 20, 39, 36,113, 68,211, - 86, 68,190,224,197,179,199,236,237,140,248,198,219,239,146,198, 3, 62,249,228, 19, 23, 71, 59, 26,211, 26,203, 71,159,124,202, -219, 77,221,243, 18,220,106, 69,162,241, 52, 36,105,228,210, 29,155, 6, 99, 59,172,238, 48,214,163,235,218,222,246,183,113, 75, -244,188, 4,207,133,224, 12,135, 35,146, 36,193,235, 93, 5, 27, 7,131,198,110,119,232,155,247,209,180, 21,113, 28,179, 51,157, -146,132, 1, 89,182,226,242,226,140,201,120,200,222,254, 62,139,171, 43, 86, 89,129, 62, 58,103,144, 78,200,214, 5,101,213,178, -191,127, 3,211,118,206,109, 35, 55,154, 4, 31, 97, 5, 66, 9,186,182,102,177, 88, 50, 26,166,124,254,249, 47,201,178, 37, 77, - 91,112,124,252,154,162,168, 72,146, 1, 88,159,163,227,115,198,163, 51,234,182, 97, 49,191,226,224,198, 53,198,227, 1, 55,111, -236,115,239,238, 77,206,206, 46,120,125,114,193,253, 55, 42, 34,153,160, 68,200,147, 23, 47,121,250,244,136,231, 47,142,169, 58, - 67,222,125,201,222,254, 1,225,112, 12,243,156,193, 96,151,121,214,242,248,229, 49,161,106,241,125,185,253,172, 85, 99, 66,108, - 48,194,139, 71, 84,214,167, 18,112, 89, 88, 78, 87,150,179,171,156,198, 8,202,166, 97,233,213, 60,191, 60,103,156, 70,188,121, -255, 45,158,190, 62,230,234,252, 25, 55,111, 28,240,250,232,132,131,251, 1,121,107,153,207,115,132,148,212,101, 73, 18, 36,172, -215, 87,204, 46, 46,121,237,119, 8, 91, 16, 39, 1, 42,144,248, 81, 72,228, 39, 36,114,200, 94,114,192,163, 27,111,177,212,146, -204,132,120,126,196,193,193,144, 40,176, 52,171, 51, 86,213,146,100, 39,226,214,205, 41,186, 45, 24, 12, 28,225, 43,136, 70,116, -120, 46,134, 19, 75, 71,131, 85,160, 60, 73, 26,197, 36, 81,140,176,224,201,152,201,100,135,178,169,241,227, 24,109, 12, 50, 8, - 56,187, 88, 48, 74,247, 24, 15,238,240,222, 55,126,155,186,116,163, 39, 79, 72,206,206, 46,248,244,179, 23,204, 46, 43,142, 14, - 75,140, 73,249,240,111, 95, 18, 6, 59,196,163, 61, 86,203, 37, 88,141,169, 74,234,172,198,195,167, 45, 26,138,188,114,224,155, -222,126,116,114,126, 65,163,155, 94,133,235,161, 80,216,206, 67, 89, 9, 4, 8, 66,116,103,105, 77,192,170,104, 56, 63, 63, 7, - 4,227,209, 14, 90,119, 40, 31,160, 34,138, 61,146, 36, 98, 58,220,227,246, 65, 74, 32,166,212,186, 99,176,231,147,103, 75,154, - 85, 71,234,135, 4,126,138,240, 21,101,155,128, 53, 8,237,225,233,142,206,128, 53, 53, 2, 67, 44, 45, 67, 95,144, 40,143,194, - 51, 78,105,218,108,208,135, 30,194,115,217,189,109, 91,210,118,134,197, 98, 69, 39, 4, 23,243, 5, 69,217,144, 38, 17, 74, 27, - 60, 58,162,104,208,239, 34, 19, 2,127,197,124,177,164,105, 4, 69,209,226,217, 8,219, 25, 4, 49,186,145, 52, 90,163,133,160, -200,220, 23,197, 23, 3, 6,145,160,107, 37, 85,221,209, 54, 13,243,229,156, 32, 16,140,119,118,232, 90, 15, 33, 35, 44, 30,194, -115,239,205,147, 13, 82, 37, 8, 47,226,242, 98,201,238,254, 14,199, 71, 71,196, 94, 66, 28, 57, 21,245, 71, 31,125,132,140, 98, -170,170, 64,248,130, 91,119,111,241,199,127,242,199, 36,202,231, 31,254,163,223,227,163, 79, 63, 97,125, 92,147, 21, 57,201, 96, -200,203,163, 83,252, 40,230,173,119,223,229,249,203, 35,132,242,169,178,130, 46,207, 73,195,128,182,105,208,218,169,109, 7,105, -218, 7, 67, 8,218,186,225,226,114,206,112,232,188,222, 69, 81,112,239,222, 61,194, 48,228,232,228,152, 60,207,183, 15,201,205, - 65,183, 57, 20, 58, 99,144,190,143,217, 28,144,198,226, 89,247, 32, 42,138,130,182,114,177,172,155,241,249, 70,157,109,173,101, -127,223,217,157, 54,120, 90,235,241,107,112,151, 13, 10, 22,192, 15, 67,132, 82, 52,235,245, 87, 66,215,254,161,183, 17, 15,153, -214,137,229,210, 40,102,189, 88,226,247,211,134,175, 23, 30,155,131,191, 51,186,143,232,117,200,205, 52, 78, 72,211,212,117,249, - 61,228,198,246,196,174,205, 62,127,115,136, 24,211, 17,134,126, 31,107,217, 97,140,102,255,218,158, 67,217, 90,205,106, 61,231, -141,123,119,251, 67, 88,160,164,199,247,127,251,183,152,207,231,224, 41,140,134,103,207, 94,242,234,229, 75,210,225,148,219,183, -111,161,148,100,157, 23,219, 0, 20, 79,186, 21,161,214, 78,176, 86,102,107, 76, 24,162, 67,221,107, 8,116,255,254,221, 56,126, - 83,112,109, 38, 27, 82,134,191,182,166, 72,122, 91,108,219,213,191,230, 18,168,170,138,186,117, 63, 81,232, 4,129,101, 89, 82, - 85,229,215, 4, 94,221, 22, 70,164,187,166,167, 82,250,219,238,146, 30, 45,170,250,145,255,114,181,194,244, 98,174, 13, 44,166, -169, 75, 14, 14,238, 49, 76, 83,164,132, 52, 73, 88,173, 86,204, 23, 11,167,174,110, 90,174,214, 51,130,224, 43,134,189,181,142, -137,159,101, 25,162, 47,246,182, 69,197,182, 80,115,162, 63,235,245, 40,223,208, 89, 87,139, 94, 31, 2,112,251,246,109,132,128, -251,247,239,146,101, 5,151,179, 25,187,187,187,124,255,183,127, 11, 33, 4,255,253,191,253, 41,227, 97, 12,186,227,252,248,152, -135, 15,222,224,225,195, 7,124,250,233,167,180,157,225,106,182, 96, 50,222, 97,181, 94,240,217, 47, 62, 97,181,118, 60,130, 40, - 10,192, 58, 11,155, 31, 38,116,198,210, 84,206, 50,230, 75, 73, 24, 6,253,181,118,154, 28, 39,226,244,176, 88,164, 80, 4, 42, -216, 2,159,162,208,193,117,140,117,247, 88,215,116,248, 42,100, 52, 10,182,123,121, 33, 93, 94,123, 28, 57, 49,161, 53,154, 40, - 8,153, 78,167, 46,224,167,168,217,191,182,203,108, 54,103,182, 88, 82,214, 13,171, 85, 78,158,189, 98,119,239,128,174, 3, 41, - 2,112,136,117,199,159,144, 10, 79,187,160,151,182, 49,204,103, 75, 70,227,152,157,221, 17, 39, 39, 71,248, 97,192,245, 27, 55, - 72,226, 49,214,115, 22,207, 81, 56, 37,142, 67,222,252,198, 67,124, 95,240,240,225,155, 8,227, 99, 57,225,228,116,201,159,253, -197, 71,236,142, 38, 92,219,191,193,108, 6,175, 14,115,214,101, 72,148,196, 60,127,125, 78,227, 41, 38,215,174, 49,207,106,154, - 90,160, 85,204, 79, 62,252, 2, 97,221, 84,169,233, 92,161,169, 42, 99, 92,140,103,163,123,239,224,132,178, 59,162,196,167, 20, -176,200, 11, 16, 1,148, 37,139,227, 43,222,121,227,128,183,223,251, 13,138, 34,224,229,171, 51,158,191,120, 5, 66, 18,132,130, -117, 83,114,176, 63, 69, 40,197,147, 47, 62,103,124,115, 15, 69,196, 50,175,120,250,234,132,174,203, 25, 15, 6, 68,105, 68, 50, - 26, 48, 26,198,204, 78,207, 56, 61, 94,162,100,130,180, 32,141, 79, 85,105,162, 40, 64, 55, 21,163,225,148,186,185,196,147, 16, -164,138,186, 48,104,209,208,232,130,200,143,176,149, 27,171,250,190, 75,142,210,214,135, 86,163,176,208,105, 58,107,145, 97,196, -197,122,133, 39, 92,215, 48, 91,174,105,235,154,233,100,143,178,177,120, 34,228,253,239,253, 61,202,166,160, 49, 29,143,159, 60, -230,228,104,193,203,195, 75, 94,189, 90,224,169, 17, 65, 56,224,207,127,250, 57, 54, 76,249,173,239,189, 67,145,173, 8,188,150, - 81,236,208,130,202,143, 9,148, 34, 16,146,170,106,168, 26, 75,163, 43,132,241,232,106, 67,177,174, 16, 26,164,167,192,120, 40, -207,128,180,232, 18,130, 52, 38, 74,198, 8,105,128, 75,124,223,231,250,141,125,146, 40, 68, 72,141,103,107,146,129, 79,153, 23, -248,114, 0, 58, 64, 48,116, 10, 80,149, 97,166, 17,245, 90,115,113,118,233, 44, 80,190, 64,119, 46,124,161, 40, 42, 2, 95, 33, - 68, 8,218,208,214, 29, 77,209, 97,170, 25, 94,187,192,143, 71, 24,237,110, 6,172, 4, 47,164,238, 42,102,153,179, 21, 54,218, -163,179,130,107, 55,110,210, 52,103,188,126,117,132, 47, 45,131, 36,225,214,141, 3,134,131, 41,117,221, 50, 28,140, 16,242,136, -249, 50,231,248,244,156,245,114, 73,215, 53, 68,190, 34, 91,172, 89, 95,205,233, 58,215,117, 54,157,233,149,185, 29, 73, 50,226, -232,245, 25,171,213,138,251, 15,239, 16, 69, 17, 97, 40,251,226, 74,244, 68,172,154,174, 79, 75,106,154, 22,107,157, 10,126,177, - 88,241,248,201, 33,187,187,187,232, 26, 14, 79, 47,209,202, 71,123,130,241,206,148,231,175,143, 9,211,132,159,252,229, 79,161, - 40,249, 87,255,226, 95,178,174, 42, 62,252,236,115,194,116, 64,217,181,204, 22, 57, 72,197, 56, 29,240,228,201, 51,164, 31,178, - 92, 46, 93, 18, 84, 26, 19,199,105,127,168,107,226, 52,117,209,175,158, 36,207, 75,230,243, 57,163,233,132,197, 98, 78,154,166, -220,188,121, 19, 41,229, 54, 53,109,181, 90,109, 15,181,141, 72, 42,142, 99, 55,194,239,213,242, 65,223, 17,111,194, 81,182,224, -147,174,101, 28,133,220,187,125,135,179,203, 11,142,142,142,120,240,232, 33,195, 36, 37, 29, 13,121,242,197, 99, 46,103, 11,180, -117,145,166, 27,191,243,112, 56,116,232,209,170, 36,142,226,109,224,204, 86,169,110,204,150,211,238, 4, 68, 78, 73, 44,133,192, -143, 66,178,203, 11,100,224,111,125,219,155,189,189,110, 90, 90,227, 20,200, 89,158,109, 71,243,155,223,183, 33,211,133,202,119, - 97, 62,190,218,238,170, 55, 36, 64,199, 34, 79,104,154, 13, 3,190,161, 45, 42,212,222, 46, 31,188,255, 93, 86,139, 43,142,143, - 95,115,121,113, 66, 20,187,195,245,151,191,252, 2, 33, 21,218,202, 94, 8, 37, 72,134, 3, 16,174, 59,190,115,255,222,118,212, -188,153,150,104,229,112,167, 82, 74,172, 54,253, 33,238,108, 80,109,163,191,210, 72,244, 19,146,205, 52, 98, 35,158,219,188, 94, -128,174,113, 29,186,146, 1,168, 62,190,179,211,238,122,212, 37,208,231, 2,244,187,244,141,171,193,152,110, 75,170, 67,186, 41, - 64, 83,105,240, 36,251,195, 49,131,193,136,188, 42,145, 65,136,232,233,129,110,125,197,215, 60,238,154,203,203, 75,222,124,243, - 97,239, 77, 31,178, 51,157,246,163,126,193,119,222,255, 14, 39, 39, 39,156, 29,159, 32,165,216, 18, 0,157,191,219,221, 79, 39, - 39, 39,110,189,214,125,229,207,223,252,108,238, 1,107, 29,228, 74, 8,129, 71,191,198, 48, 94, 95, 64, 58,141,144, 82,138,229, -114,217, 51,235,221, 4,232,155,239,189,203,171, 87,135,196,126,232, 14,230,162,160, 92,175,248,173,239,126,192,127,251,179, 63, -103, 56,112,171,141, 65,156,176, 88, 44, 28,148, 73,244,205,141,244,157, 86,192, 10, 20, 6, 45, 61,180, 22,120,125,129,218, 52, -213, 22,221,235,138, 66, 69,216,239,251,195, 36, 38,244, 3,124, 37, 89,175, 29,125,206,104,139,244, 21,121, 94,110,255,222, 98, -177,112,159,167, 39,152,140, 71,212, 69, 78,219,180,220,187,123,135, 48,144,120,198,178,204, 92,138,221,112, 56,228,248,248,136, -197,108, 78,224,135,236,238, 70,172,150, 69,127, 29, 45,190, 50,212,157,163,219,249,248,120, 94,136, 39, 37,203,229,146,186,222, -239,239,153,152, 60, 95,211,182,154, 65, 58, 36,203, 10,210,193,148,225,100,140, 82, 1, 85, 85, 16, 38, 46, 70,121,157,101,140, - 78, 71, 4,114,204,122,173, 73,146, 17,179,133,102,190,156,241,203,167, 87, 88, 19,144, 87, 22,229,199, 92, 94,205, 9, 18, 55, - 81, 25, 12,199,220,189, 47, 57, 61, 94,208,169, 0, 99, 98,234,178,117, 69,200,122, 69, 83, 21,168,209, 52,225,244,226, 21,239, - 60,122,147, 74,123,156, 30, 93,210,106, 65,169, 45,151, 69,134,145, 10,211,106,200, 90, 2, 3,217, 85,198,139, 47,158,240,232, -141,187,172,151,115,146, 40, 69, 42,197, 96, 39,229,166, 7, 50, 24,210,180, 22,186, 21,171,249, 5,111,220, 59, 96, 94,181,204, -214, 13,167,167, 23,248, 98,197, 96, 52, 96,188,155,115,243, 70, 72, 62,239,184,202,161,212,150, 85,150,209,145, 16, 4, 17,182, -169,208, 93, 77,219, 72,186,218,226, 4,135, 29, 81, 56, 64, 8,195,104, 24,225, 53, 30,177,145,248,173, 69,122, 21, 81, 40,200, -214, 57,210,250,216,210,210, 74,143, 78,128, 54,150,227, 85,198,170, 52, 44,150, 5, 74, 72, 6,129,160,110, 64,136,128,221,157, - 61,106,163, 89,149, 37,126, 32,105,180,225,233,203,167,116, 54, 34, 24, 13,169,108,204,101,163, 17,123,215,248,228,217, 11,210, -145,228,253,183,175,209,102,151,248, 8,118,118,247, 49, 86,226, 41,197, 48, 78, 57, 60, 60,164,235, 26,166, 81, 76, 28, 14,152, - 76,135,164,105,140, 49, 29, 69,221, 96,172,135,246, 13,210, 87,212, 29, 46,109,204,143, 41,242, 5,247,239, 60, 64,120, 13,211, - 65,128,146, 6,109,106, 60,163,209,101, 71, 40, 5,214,212,116,182,115, 59, 30,233,224, 53,249,122,137,174, 45,147,161, 66, 55, -107, 76,235,209,148,165, 27,163,106, 75, 93, 22, 72,229, 97,140, 34,207, 43,170,206, 50, 74, 90, 70,105,197,210, 4, 40, 92,193, - 48,155,175,137,125,197,235, 87,167,124,254,197, 51,158, 31,190, 38,140, 19,254,215, 63,252, 95,216, 29, 39, 28,159,188,164, 45, -156, 39,248,224,198,117, 14,143,142,201,215, 37,105,154, 18,197, 3, 90,107, 72,198, 41, 50, 82, 60,253,248, 41,215,247,118,185, -190,115,155, 72, 41,108, 47, 88, 82,129,143, 10, 36, 85,215, 18, 15, 7,160, 93,183,210,232, 6, 63,244,136, 82,159, 32,144, 20, -229,156,233,206,128,162, 4, 63,156,226, 11, 31, 33, 12, 82,129, 18,134,229,226,156,221,253, 91,148,181,229,197,209,130, 52, 29, -241, 39, 63,254, 75,140,149, 52, 66, 82,213,154,186,110, 89,173, 47,105,154,134, 7,247,238,243, 63, 62,254,196,133, 47,164, 19, -188, 32,160,174, 51,130, 56,197,120,176, 92,172, 29,135,161,223,107, 15,227, 8,211,105,199,239,238, 44,147,201, 14,227,241,152, -245, 98,201, 50,155, 1,130, 32, 14, 40,203,124,139,125, 77,146,132,243,243,115, 78, 78, 78,208,214,217, 1,235,182,117, 57,222, -158,135,244, 29, 36,101, 60,157,244,124,244, 14, 79,122,212,117, 73,211,181, 36,131, 20,131,197, 15, 93, 8, 15,194, 1, 98,206, - 47, 47, 16,210, 71,170,128, 86, 91,158, 62,123, 65, 94,214, 46, 92,163,238,250,224,146, 20, 99, 52,231, 87,231,238,128,143, 2, - 84,168, 8, 35,159,229,106,222,171, 99, 13,173,110,176,158, 65,111, 14,101, 15, 68,232, 19, 70, 17, 89, 93,146, 21, 37,215,246, -246,177,214,163,204, 74,148, 80, 40, 79,209, 89, 39, 68,172, 5,172, 51, 13,214, 41,162,187, 40,162,200, 86,228,189, 53,111,144, -164, 8, 37, 25,166, 3,218,206,141,223,163, 40, 34, 43,221,200,219,246, 1, 24,109,219,162,148,192,235, 74,150,153,163,237,249, -190,143,237, 90,210, 36,233,187,115,201,106,157, 51, 95,173,177, 72,167,101, 8, 3,166,211, 41, 81, 16, 50, 91, 46,216,187,182, - 79, 50,136,185,121,251, 38,235,165,123,192,183,117,135, 64,210, 53,142, 88,231, 75, 15, 55,124,114, 54,168, 64,245,206, 10,165, -168,218,142,188, 42,232,172,235,228,133,242, 9,227,196, 17,236,112, 93,153,181, 95, 37,171, 21,217,138,108,181,166,170, 10,108, -175,212,142,211,132, 56,142, 49,157, 35,237,185, 52, 46,225, 98, 79, 91,231, 51, 6,208, 18, 86, 85,195,142,177,216,178, 6, 4, -109,167, 73,130,240, 43, 84,111, 20,184,116,183,229,140, 40, 86,120,158,229,229,171, 23,124,235,221,247,200,178,140,225,104, 66, - 24,134,156, 28, 95,240,205,111, 26,254,254,239,254, 30,255,249, 79,254,152,227,227, 99,188, 44,163,235,177,165,129, 47, 41,242, -140,189,221, 93,162,158, 73,223,182, 45,237,215, 10, 23,207,243,156,152,210,210, 11, 7, 37, 65, 16,162,117,135,213, 22, 63,112, - 35,253, 40,136, 57, 62, 61,225,252,252, 28,173, 53, 79, 30, 63,221,186, 3, 54, 83,159,119,222,124,155,245,226,146,231,121,198, -157,251, 15,120,116,255, 14,199,199,167, 68,210,223, 78, 10, 84, 24,161, 2,197,213,108,198,238,254, 30,203,171,153,115,124,248, -138,208, 87,120,214,108, 69,124,198,208,175,242,250,238, 59, 14,144,158, 96, 52, 24,130,176,196, 97,128, 18, 30,131,216, 1,141, - 54,215,178, 51, 46,112,167,168, 74,210,225, 0, 41,224,141,123,247,152,207, 47, 56,216,223,229,248,240, 37,145, 15,247,238,222, -230,213,171, 87,140,135, 9, 85,238,154,205,239,124,231, 59,156,157,157,177,183,183,199,229,213,140,166, 45, 24, 77,198,206, 66, - 41, 13,160, 25,141, 6,172,179, 2,221, 23,168,171,197, 37, 77,231, 10,195,211,211, 83,222,121,243, 45, 30,171, 39, 8, 79,209, -182,154,243,243,115,226,100, 64,158,151,132,161, 79, 94, 24,206, 78,142, 72, 98,159,211,163,215,152,230,140,201, 32,165,177, 26, -207,143,168,234, 26,235, 75,146, 48,194,203,215, 52,197, 26, 99,214,216,206,199,183,134, 36,240,105,163,152,201,174,187, 62,149, - 86,148, 90,178,174, 58, 46,174,230,116,117,134,250,228,151,159,115,113,113,198,213, 34, 98,153, 85, 60, 61, 90,240,233,171, 43, - 94, 46, 44,245,255, 71,214,155, 62, 73,146,228,231,121,143,199,125,229, 81, 89,149,117,244, 61,199,206,137, 37,102, 23, 32,151, - 32, 5,194, 8,202, 40, 51, 73,159,248, 63,234,155, 76, 34,105,144,201, 36,163,129, 32,176,192,130,187, 36, 23, 24,236,156, 61, -211,211,211, 93,119,229,157,113, 71,184,187, 62,120, 68,116,181,216,102, 99,115, 88,117, 87, 77,102,164,251,239,120,223,231,117, - 19,164,170, 72, 66,151,145,155,160,168,209,181, 98,183,217,112, 48,155,243,232,233, 19,100,165, 40,138,156,253,126, 67,209,150, - 88,214, 14, 41,161,173, 75, 92,215,198,241, 92,230,103, 15,248,235,191,250, 21,151, 23,119, 76,198,115,142,136, 41, 68, 77,165, -151,212,185,177,145,229,178, 54,151,149,150,180,109,141, 45,204,238,217,178,124, 28,140, 58,218,117, 61, 84, 93,227, 90, 6,147, -105,107,155, 42,173, 17,142, 70,201, 2, 79,152,145,136, 35, 52,174,237,226,184, 62, 25, 45,231,119, 43,190,120,117, 65, 50,123, - 64,214,216,220, 93, 93,226,171,138,249,193,132,227,227, 51,178,188, 2,199, 54,194,157,218,164,111,125,252,241,199,252,242,215, -159,147, 86, 30,141,237, 64,144,160, 81,220,238,174,249,241,194,226,179,247, 19,222,121,114,130,106, 53,150, 16, 52,178,165,169, - 75,182,155, 13,219,205, 53,142, 45,152, 79,206, 24, 37, 30,162, 45, 89, 92,221,209,162,113, 60,159, 32, 25, 81,182, 5, 74, 53, - 56,118, 64,145,237, 73,235, 10,215, 17,120, 97,130, 0,234,116,135, 19,184, 68,129, 75,163, 20,178,146, 72, 52, 74,213,166,107, - 85, 10,173, 5, 77,171,185,187, 91,114, 50, 63,230,228,244,148,221,218, 84,167,237,110, 71, 20,134,200, 78,164, 99,185, 14, 26, - 65,236, 73,102, 65, 68, 18, 79,240,198, 7,252,111,255,254,151,232,198,163, 41, 82,174, 46, 46, 89,223,221,242,242,213, 57,231, - 55, 75,110, 55, 57,159, 61,251,128,125, 94,241,232,244,144,208,117, 80,174,205,227,135, 15, 24, 37, 35,218,249,156,111,127,247, - 21,159,126,250, 41,251,253,150,163,249,140, 74,213, 96,105, 92,223,193,239, 80,158,158,101,227,248, 1, 89,158,147,102, 5,217, -182, 70,184, 54,178, 85, 88,184,132,126,196,100, 20,225, 71, 46,209,200, 35, 74, 92,176, 36, 77, 83, 19,141,142, 13, 47, 94, 11, -132,237, 80, 87, 45,101, 89,211,212, 26,215,247, 89,239, 75,162,201, 1,191,252, 47,255,149,191,255,250, 57,127,240,143,127,129, -114, 60,110,239,150,204, 14, 14,201,138,146,205,110,199,237,106,139, 90,172, 17,150,131, 82, 22,178, 86,236,246, 25,113, 52, 30, -108, 42,150,101, 33,164,164, 42,202, 97,183,137,107,198,144, 66, 8,163,105,200,178, 78,104, 4, 82, 42,102,179, 67,230,243,249, -144,190,118,115,115, 99, 16,166,158,107, 70,125,247, 70,185, 82, 74,162, 36, 30,136, 94,253, 72,186, 23,163,245, 76,242,190, 99, - 31,141, 70,188, 58,127,141,227, 56, 38, 28,166, 99,200,239,187, 81,122,255,231,244, 99,244,126,188,122, 95,176,166,148,122,203, -194,165,135, 8, 84, 51,202,111,149,196,194,128,127,122,248, 77, 89, 87,198,238, 36, 37,113, 24,145,237, 83, 16,138, 48, 8,112, - 61, 99, 3, 43,155,138,217,108, 74,224, 26, 59,208,108,122, 64, 16, 4, 52, 77,195,106,181, 50, 52,184, 81, 66, 81, 84, 70,116, - 86, 55, 70,252,105, 57, 8, 81, 34, 53,184, 66, 32, 21,102,178, 85,150, 8,105, 10,191,249,236,144,147,227, 51,132,237, 96,217, - 46, 63,188,190,224,110,185,166, 40, 13,123,127,126,124, 8,202,232, 4, 94,190,124,201, 39,159,124,194,239,253,244, 19, 94,190, -248,145,213,221,146,192,245,168,242,189,129,246,244, 94, 64,165,141,155,196,243, 7,193,223, 27, 50, 29,195, 88,189,170,170, 97, -100,222, 91,173,218,214,216,227, 44, 84,215,185,107, 2,223,199, 81,198,190,103,187, 14,173,108, 6, 91,156,215,237,170, 77,206, -187,161,143,105, 13,181, 50,188,245, 86,129,163,232,188,216,106,208, 58,248,129, 59, 48,199,173,206,145, 48, 26, 39,188,120,241, -130, 36,140,152,207,231,164,105,198,229,229, 21,183,215, 38,240,231, 23,255,228,231, 60,125,250,148,207, 63,255,220, 20, 77,109, - 75,146, 36,236,119,155,110,119,111, 96, 65,126,135, 78, 45, 58,230,125,219,152, 11,116, 20,135, 67,170, 96,255, 92,180,109,139, -106,205, 62, 59,138, 67, 78, 79, 79, 7,188,176,113,170, 40,116,107, 48,213,174,107,115,120,120,136,231,216, 44, 46,174,136, 70, - 99,110, 46, 47,120,242,224, 1, 22,130,197,106,141, 84, 70,143, 81,181, 13, 77,107, 49,153,206,208,194,198,238,130,137,218,182, - 29,124,232,247,159,205,190,208,233,255, 30, 69, 17,163,177,161, 24,150, 69, 70,150,231, 70,249,239, 58,212,117, 75,154,229, 52, -210,172, 21, 76, 40,143,228,228,228, 1,158,239, 32, 84,136,146, 45,143, 31,158, 97, 91,138,179,227, 57,187,245,202,232,152,132, - 98,118, 56, 37,207,115,150,183, 22,171,213, 10, 75,136,174,112,107,144,178, 69,106, 19,206,227,184, 62,174,103, 52, 17,173, 50, - 83,145,237,126,195,193,120,132, 31,184,198,218,234,133, 20,165, 33,137,198,201,196,172,165, 92,135,192,119, 17,186,165, 42, 83, - 14, 38, 99,222,123,246, 30,215, 23, 43,246,251, 10,108,159,162,108,208,142,207,110,183, 99,187,219, 17,141, 34, 44, 26,108, 59, - 49, 86,103, 20,233,126, 75,150, 53, 72,165,176,108, 31, 91,248,136, 42,224,112,126,194,251,239, 60,193,213, 13,206,243,151,231, - 60,120,112, 74,232,121,172,210, 27,164,198,144,133,178,148, 74, 53,124,244,225,199,204, 15,198, 28,134,154,106,183,160,216, 45, -200,138,138,139,235, 27,164,178,168,139,110,223, 36, 76,184, 69,171, 26,148, 20,228,105, 70,182, 95, 51,250,248, 61, 62,124,239, - 93,254,234,207,255, 10,213,180,212, 85,203,106,185,165,106, 92, 90, 37,216,109, 83,179,167,107, 11, 90,187, 69,182, 53,182,178, - 80,194,248, 40,243,178,198,150,146,116,151, 98,201, 7,228,105,133,237, 9,100, 83, 33,220,160,251,240,152, 48, 7,180,241,127, -107, 97,163, 48, 93, 14, 8,218, 86,113,125,181,196,217,106,252, 96,138,231, 38,136,186,229,245,235,115, 84,227, 17, 71, 9,150, -231, 16,197,190, 25, 25, 7, 30, 79, 31, 63, 99,189,107,248,111, 95,254,200,221,234, 22,237,149,140, 39, 49, 73, 44,240, 2,101, -226, 78, 19,104,235,138,166,201,177, 28,129,235,130,157, 23,140, 15, 32,240, 60,158,190, 59,195,117, 4, 90,182,232,219, 29, 82, -104,180,104,240,188, 26, 89, 75, 70, 81,192,244, 64,224,187, 46, 69,166,112, 45,135, 56, 12,208,173,207,122,181, 66, 22, 46,219, -198, 56, 6, 92,199, 34,136, 2, 2,215, 67, 57,198, 15, 91, 41,200, 74,205,171,187, 13,251, 26,142, 31,189, 75, 37, 82, 19, 51, -233,134,212,218, 70, 34,169,180,192,150, 22, 74, 11, 26, 9,194,181, 25, 77, 79,248,224, 39, 19,254,229, 31, 43,130, 40,225, 48, -182,121,112, 52, 35,137, 66,206, 78,143,249,241,122,197,215,207, 95,112, 48, 25, 97, 9,205,118,181, 68,214, 21,179, 73,204,108, - 28, 19,134, 30,201,217, 41,177,109,243,245,215, 95,243,193, 39, 31,243,244,201, 67,110, 22,215,188,126,245, 35,159,126,250, 41, - 63,254,240,146, 47,190,249,150,182,172, 24,141, 38,198,187,220, 74,118, 69,198,120,118,128, 22, 2,221,104,166,163,132, 48, 10, - 16,142,102, 50,141, 56,102,134, 31, 56, 84,149,100,228, 70,148, 69,101,124,234,173,141,108, 60, 16, 33,101,213, 80,151,130,209, -228,144,151,151, 87, 60,127,254, 28,207,243,184,189,189,229,246,246,150,163,147, 7, 60,123,247, 61,206,207,207,137, 71, 19,234, -186,101,181, 94, 99,223,203,248,238,247,165, 69, 81, 12,138,241,126,255,219, 51,195,103,179, 25, 90,107,150,203, 37, 69, 81, 24, - 53,122,167,126,246, 60,143,195,249, 17,105,110,130, 90, 86,171, 21, 90,208, 69,198,154,241,165, 37, 4,190,231,153,145,123,211, - 96, 11,139,221,126, 55,236,158,237,123, 64,150,254,247,244,162,159, 62, 2,116, 58,157, 14,163,240,126, 4,218,139,212,250,241, -119,127, 24,246,202,220,126, 39,222,227, 50,251,220,133,230,222,215,246, 23,189,109,219, 76,167, 83,118,219,237,192,205,190, 47, -132,107,219,150, 48,122,179,107,142,227, 24,181,151, 68, 65, 72,158,102, 76, 79, 78, 8,195, 96,176, 40,161, 21,150, 0,203, 18, -184,174, 77, 89, 53,247,104,120, 46,142, 99, 65, 33, 81,210,172, 29,138,188, 68,105, 97,240,183,194,198,117,125,194, 56,102,159, -153, 9, 83, 24,134,140, 70, 45,141, 92, 83,149, 57, 69, 22, 18,250, 1, 81,224, 83, 39, 17,231,231,175,208,242, 13, 98,181, 71, -140,122,157, 34,220,192, 75,116, 23,193,233,224,184,158,137,224,212, 26,209, 84, 6,132, 37,140, 42,191,173, 43,100, 83,227, 88, - 22, 73, 20, 17, 4, 62,251,189, 99, 38, 54, 77, 53,196,235,218,150, 97,114,111,183,235,193,183,222,143,188,239, 91, 17, 45,203, - 50,188, 11,101, 46,246,251,239,155, 16, 70,145,222,175, 3, 92,215,165,169,234,142,168,104, 50,221,227, 40,100,185,220,179,220, -172, 57, 62, 59, 29,136,112,233,126,207,197,197, 5,223,255, 48, 99,118, 56,231,240,240,144,243,243,115,124,199, 49, 17,160, 93, -218, 94,211, 24, 87,197,114,101, 66, 85, 20,157, 59, 33, 48, 86,175,126, 84,221, 99,106,123,167,131,198,228,145,175, 86, 43,146, -196, 32,102,231,243, 57,227,241,120, 40,120,109,219, 70,119,249,243, 77, 35,135,226,244,139, 47,190,224,227,143, 63, 29, 46,234, -186, 91,133,216,182, 48, 17,182, 94, 72,154,238,208, 90,147,166, 41,194,226, 77, 42,158, 17, 17, 13,197,105,209, 69,205,122,129, -143,176, 45,154, 86,129,176,153, 76,199, 28, 30, 29,155,215, 28, 77, 83,103,195,179,218,127, 30,250,117,148, 82, 70,136, 23,248, - 14, 65,190,158,158, 15, 0, 0, 32, 0, 73, 68, 65, 84, 28, 32,120,195,241,207,151,107,124,215, 65,203,150,135, 15,207,248,252, -243,207,137, 71, 35,108,219,101, 62,159,155,117, 78, 43,104, 85, 87,124, 40, 6, 1,104, 16,186,228, 59,103,128, 72,245,186,139, -233,116, 74,187, 94,129,101,138,244, 52, 77,201,138,156,233,100,196,120, 60,166, 13,125,230, 71, 51, 30, 63,126, 76,182,107,184, - 91,108,112, 35,147,143,174, 90,209, 37, 61, 22, 52,117,137,104,106,163,113,234, 98,148,133,213,160,149,133,107, 57, 6,202,165, -106,118,235, 59, 2, 91,243,241,179,143,177,100,133,115,185,218,114,242,228, 25,133,210, 20,181, 38, 45, 43,170,170,161,109, 42, -226,192,231,244,232,128, 36,244, 8,236,154,232,224,128, 73,108, 4, 21,183,119,107,164, 18,200, 6,194,208,199, 11, 3, 92,169, -177,164,192,114, 92,146,160,100,183,188,165,173, 43,180, 84,196,190,137, 35,244, 29,143,116,159, 83,183, 14,101, 43, 41,170, 6, -219,181, 80, 14,104,219, 66, 74, 11,169, 37, 46, 6, 24, 0, 29,133,174, 54,135, 72,185,217,226, 11,155, 70, 11,124,219, 88, 29, - 44, 75, 32, 44, 23, 75,184,104, 93, 34, 37,104,213,152, 81, 76,109,146,157,170, 10, 94, 92,188, 38,240,183, 60,123,116, 70,100, -155,253,250,139,231,223, 49,153, 76,137,199, 9,241, 40,194,113, 33,207, 96, 54,153,243, 7, 63,255,140,147, 39, 31,241,255,252, -229,127,230,229,229,146, 52,149,204, 18, 65, 28,135, 28,204, 38,248,129, 32, 12, 2,195, 39,182, 93, 44,199,197,178, 37, 81,236, -210,150, 5,150,221,160,180, 66, 8, 8, 35,119, 32, 48, 89, 94, 64,150,151,204, 14,167,108,214,215,140,162, 16, 89,231, 20,105, - 74, 91, 86,132,126, 68, 83,182, 4,163,168,179,161,128,235,216, 56,150,139,208, 32,235,150,186,148,228,173, 38, 57,122, 66,251, -227,146,207,159,191, 98,116,116,198, 56, 25,161,234, 10,207, 79, 88,167,251, 78,221,106,252,200, 74,105,202,162, 38, 45,204,135, -183,146,154, 63,250,197,207,153, 36, 49,129,213,226,163, 76,154,149,159, 16,141,110, 56,191,184,226,246,250,138,242,189,167,124, -127,251, 10,207,178,120,246,232, 20, 1,216,186, 53, 40,206,249,140, 42,123,192,215, 95,252, 61,101,149,211, 20, 57, 39, 93,220, -237,163, 39,143, 57, 72,102, 92, 93,222, 48, 26,141, 41,170,134,172,105, 40,110,111,137,143,206,204,184,209,182, 9, 60,135, 86, -150, 20, 69,202,110,159,155, 17,168,103,246,157, 23,231, 11,138,188,194,119, 2, 28, 59,160,174, 36,174, 59,193,118,160,108,109, -182,203, 45,127,253, 55,191,226,230,246,142, 48, 30,241,187, 47,191,162,149,154,179,135,143,240,195,152,151,175,206, 9,163,132, -186,174, 7,139, 79,127,209, 85,221, 33,215,239,152,239,251,199, 13,107, 32, 25,178,198,141, 24, 48, 24, 46,244, 48, 12,121,242, -228, 9, 89,231, 11,206,178,140, 36, 73, 6, 30,122, 47,138,234,189,205,213,114,249, 86, 58, 88,216,241,215, 29,215, 25, 84,211, -253,193,222, 95,182, 85, 85,113,112,112, 48, 28,190,253,207,114, 63, 21,172, 63,140,239, 91,207,250, 14, 62,138,162,183, 0, 55, -247,173,108,253,127, 55,162, 52,143, 81,146,176, 90, 26,178,164, 99,217,195, 14,188,169, 12, 63, 61,142,141, 85,176, 85,125,186, -155,217,121,246,227,245, 62,246, 75, 8,193,108, 54, 35, 12,205, 62,127,187, 49, 81,165,202, 6,129, 24, 58,224,222,198,148, 87, -229, 48, 33,176, 61,243, 51,153,132,190,128,205,102,131,235, 5,128, 98, 60, 78, 40,170,210,192, 62,138,140, 36, 50,159, 65,215, -179, 89, 44, 22, 44,151,119,124,242,201,239,241,201,135, 31,177, 88, 44,249,251,191,251,135,238,125, 46,208,194, 70,136, 6, 45, - 12,252,201,117, 93, 28,223,195,241,220, 65, 85,221, 67,101,250, 75,161,191,188,227, 56, 50, 5, 67,219, 80,200, 6,219, 22, 56, -142,139, 99, 11,234, 90, 83,215,205,240,158,244,175,107,159, 47,223, 91, 10,251,241,136,101,117, 64,178,238,107, 85,167, 72, 55, - 86, 46,176,132,131,214,213,240, 12, 98, 91, 84,117,141,239,139, 46,181,108,207,126,187, 51,249,244, 93,208,206, 95,252,197, 95, -240, 39,127,242,199,252,155,127,243,111,248,234,171,175, 40,179, 28,215,117,168,187,231, 69, 41,197,102,187, 37,220,167,104, 75, - 24, 22,134,214, 52,210,236,252,167,201,225, 80,132,244,154,132,251, 69,173,192,128,145,238,195,122,110,110,110, 58,165,190,198, -119,220, 14,184, 3,150,229,112,120, 60,199,243, 13,132,200,245, 28,194,208, 7, 20, 69, 89, 51,153, 29, 12, 0,152,237,118,139, -231, 57,228, 89, 58, 20,150,182,109,211,116,250,144,126, 18, 21,118,206,143,227,227,227, 65,179,176,217,239,140,112,212, 53,133, - 79, 85,155,244, 54, 51,201, 52, 58,134,120,148,240,240,193, 3, 84,211, 80, 55, 21,101, 94,112,118,124, 68,186,219,242,232,193, - 41,139,219, 59, 19,136, 51, 55,207, 92, 85,100,104,121,128,107, 91,160, 20,101,149, 82, 87, 53, 85, 81,162,181, 24, 62, 47, 77, - 93,210,182,146, 81,162,176,109,135,180,200, 57,148, 83,108,219,165,172,114,110,175,111, 57,152, 78,187,105,149,234,216, 17,198, -122,154,103, 37,222, 56, 49, 43,154,202, 56, 51, 62,252,240, 39, 92,223,220,177, 45,118, 68,163, 3, 54,105,142, 86, 45, 77,211, -178,221,164,156, 30, 76,176,132,162, 85,146, 58,207,177,108, 15,219,241,168,218,154,178,172, 16, 2,174,175,206,113,105,249,233, - 79,158,224,232, 6,199, 31,207,185, 94,165,100,219, 13, 85,213,144, 23, 37,139,197,154, 40, 24,241,233,103,159, 18, 56, 80,101, - 27,242, 98,139,111, 11,226, 40, 64, 89, 46,141, 54, 49,127, 65, 18, 97,161,145,186, 37, 8, 34,148, 20,184,182, 71,244, 48, 96, - 20, 56,148,187, 13,251,213, 29,143, 30, 62, 96,187, 41, 80, 88,216,182,139, 22, 54,219,125,137,176, 28,164, 45,176,180,133,210, -134,174,100, 50, 3, 20, 22,150, 73, 71, 82, 13, 85, 81, 96, 9,141,131,198,198,132,118,184, 66,147, 53, 38,218,211, 82, 32,181, -133,214, 46,146,158,103,109,194, 38,210, 60, 3,237, 82,228,138,197,237, 29,178,110,121,120,100,243,222,147, 7,172,157, 59,160, -230,217,211, 57,163,233, 8, 48,227,202,205,114, 65,171, 45,144, 1,170,145, 70, 40,211, 66,145,150, 84, 89,139, 67,140, 43, 20, -105,190, 48,157,158, 42, 57, 56, 56, 36,142, 99,226, 56,102,117,115,199, 98,177,162,204, 51,170,178, 68, 43, 65, 20, 31, 16,132, - 62,233,174,230,250,110,205,122,149, 50,157, 36,236,246, 45,219, 93, 77,145, 22,216,118, 77, 35, 5,121,157, 51,241, 14, 88,108, - 76, 84,102, 32, 3,148,229, 16,184, 30,142,227, 49, 30, 77, 9,221,128,181,136,217,213, 46,203,157,226,175,127,243, 37, 63,255, -217, 79, 25, 69, 62, 69, 81, 83, 20, 13,190,107,198,108,150,176,140,239, 93, 9,234,166,129,194, 80,193,100,190, 39,100, 70, 18, -185, 40, 90,182,235, 29, 94, 80,224,187, 54,167, 39,115,254,219,111,255,158, 23, 47, 94,112, 24,192,199,239, 62, 98, 50, 26, 81, -228, 41,170,174, 73,187, 81,244, 59,207, 30, 35, 28,193,231, 95,252, 61,255,232,103, 63,231,228,236, 33, 8,151, 40,138,185,185, - 94, 34, 29, 27,229,248,104,237,178, 77,151,188,188, 90, 82,216, 33,135,135, 7, 56,177, 67,219,152,238,168,105, 76, 6,250,110, -151, 14, 2, 39, 67,146,179,168,171,140,170,148, 52,210,224,124,247,105, 75, 42,239,184, 92, 93,113,113,117,195,106,151,209,174, - 83,210, 34,231,209,227, 39, 70,215,240,227,107, 52, 22,121,167,130, 5, 8,187, 46,189,233,172, 95,178, 27, 51,246,157,105, 63, -186,235, 67, 64,118,187,221,208,153,228,121,142,148,146,147,147, 19,142,142,142,104,219,150,139,139,215, 72, 36,227,131,177,185, -136, 59,166,187, 81,188,155, 78, 53, 12,125,124,215,198,237, 66,122,124,215, 54,193, 51, 10,180,182,135,206,187,239,242,238,135, -174,244,168,209, 44,203,134,203,166,183, 83,245,158,243, 32, 8, 12,230,185,195,195,246,224,153, 36,140,222,130,175, 40,165, 80, -157,157,140, 46, 62,181,169, 75,194,192, 27,198,206,145, 31, 13,221,100,255, 43, 8, 2, 92,215,101,181, 90, 81, 53, 37,147,201, -120, 16,244,205,143,103,180, 77,133, 86, 45, 71, 7, 51,124,103, 62,188,158, 73, 18,117,152, 84,195,113, 47,171, 10,173, 5,174, - 99,148,237, 89, 71,229,203,138,146,253, 62, 67, 68, 62, 82, 65, 35,245,160,168,247,131, 8,178,140,186, 85,196, 97,128,106, 77, - 20,165,133, 66, 53, 13, 79, 31, 61,226,116, 62,231, 87,191,250, 91,118,155, 13, 79, 30, 63, 99,179,217,177, 79,183,248, 94, 77, - 85, 53,198,195,107, 11,243,188,119,175,143,215, 33, 53,171,142, 0,103, 91, 22, 90,181,104,169,208,178,235,156,109, 3,125,209, -109, 23, 80, 84, 55,200,182,197, 18,102,250,151,223, 75, 70,235, 11,168,222,147,111,117,254,241,172, 67,218,154,162,202,236,232, -223,172, 75,204,248,214, 82,224,218,189, 56, 84,211,182, 53,158,103, 10,194,116,187, 35, 8, 35,178, 52,103,181, 92, 99, 1,243, -249,156, 34,175,216,165, 41,203,197,130,111,190,249,134,207, 62,251,140,188, 40,248,171, 95,254, 85, 23,124, 52, 26,212,250,166, -179,244, 73,146, 17, 97, 96,116, 27,131,231,190, 44,134,169, 81,127,105,246,130, 74, 35,158, 53,232,218,182,109, 25,143,199,111, - 65,143,124,223,237,176,195,116,159,151,128, 56,142,249,240,195, 15,137,162,128,215,151, 23,248,190, 71, 24, 6, 92,221,220,152, - 8,104,161,217,239,183,104, 45,201,178, 10,238,125,207,182,109, 41,186,239,221,219,239,166,135, 6,182,100,123,166,216,117,124, -143,184,227,190,183, 82,210,180,146, 90, 74,131,233,214,122,152,200,132,129,103,240,201,187, 29,117,101,104,144,227,241,152, 42, - 75,141,152,116,113,199,147,199,143,135, 44,120, 45, 91,110,174, 46,248,189, 79, 62,226,251, 31,126, 68,120, 30, 87, 55,119, 84, -181, 17, 55, 58, 94,136,235,134,104, 44,164, 84,228, 85,137,218,182,195, 20,204,113, 28, 3,150, 41,170, 1,231,172, 4,108,215, - 70,247, 17,122, 33, 85, 85,144,167,130,166, 46,176, 80, 92, 93, 92,242,175,255,167,159,177,216,108,249,235,191,249, 53,182, 5, - 74,182,236,183, 59,118,219, 45,161,239, 83, 75,133,103, 9,148, 52,211, 32, 68,131,227, 53, 72, 45, 80,178, 70, 53, 45,101,186, - 69, 91, 10, 45,107, 60, 23,156,215,215, 43,190,127,117, 73,177, 91,155,240, 5,207,231,104, 62,195, 14, 39, 4,182, 36,114, 5, -181, 20, 84, 93, 35,211, 74,141, 84, 2,195, 6,245,240,131,144,116,191,131,182, 96,122, 48,198,149, 22,170,209, 76,147,152,177, -127,194,205,213,119, 4,142,197, 63,250,228, 67,214,139, 61,231,215,251,193,186, 99,105, 7, 41, 45,144,182,121,208,218,150,170, -209,104,173, 80, 66,163, 49,106, 85,167,205,216,239,183, 52, 77,133,101,181, 72, 85, 96, 89, 53, 96,227,249, 2, 28,187, 83,110, -186, 72,109,161,164,130,166, 49, 16, 3, 20, 69, 93,179,217,102,228,133,161, 0,149, 69,139,109, 7,140, 71, 33, 31, 60,249,125, -190,250,242, 11,202, 98,195,249,229,115,238,110,174,121,246,238,123, 36,225, 20,129,226, 55,255,249,215,124,247,205,247, 56,163, - 99,194, 56, 64,183, 37, 69,218,208,212, 80,230, 13,219,245,158,178,204,216,238,247,248,142,143,235,250, 4, 65,132,239,135,220, - 44,175, 88, 46, 22,200,166,229,104,126,140,148, 54,101, 37, 88,109, 10,170, 74,144, 87,146,219,229,130,203,203, 75, 46, 46, 94, -179,221,110, 24,197,230,178, 11,124,151,218,114, 77, 87,232, 71,140,156, 16,161, 28,170,218,120,191,171,170,160, 80, 37,223, 45, -206,249,135,175, 94,225,185, 46,127,247,197,247, 68,241,152,159,188,247,132,124,183, 38,238,148,249,102, 52,153, 97,105, 11,180, -109, 68,135,202,236,146, 84,155,113, 87,109,209,147,144,201, 56,161,109, 52, 74,219, 4,225, 1, 79,158, 60,225,250,230,142,253, -126,207, 79, 30, 60, 37,142, 99,110,174,174, 73,162,128, 90,150, 20,157, 24,175,168, 74,146, 40,226,211,143, 62,226,155,175,190, - 52,182, 26,225,114,115,115,131,146, 2,219,181,113, 67,159,214, 81, 20,117,195, 54,207,241,247,123,102,135,135,148,117,133,106, - 74, 80, 45, 22, 38,179,184,109, 20,150, 2,223, 9,217,239, 82,194,112, 68,186, 47,216,238,115,138, 74,177,205,161, 40,107,138, -235, 27,110,183, 55, 44,215, 27, 52, 22, 94, 16, 48,139, 34, 92, 63,228,245,197, 21,158, 31, 50,154, 76,134, 46, 29, 24,212,178, -253, 40, 61,116,253,206,138,100,248,214,199,199,199, 67,186,213,114,185, 36, 73, 18,242, 60, 71,107,115,209, 4, 65,192,201,201, - 9,117, 93,243,205,243,111, 17,142, 61, 92, 98,247,187, 60,179,211,211,195,120,191, 63,236,211,221,158,192, 51,225, 18,170,149, - 84, 84,111, 41,201,251,174, 47,236,196, 77,155,205,198,240,197,187,117, 65,239,161,238, 21,218,247, 17,179, 67,168,204, 61, 11, - 93,239,125,190,191,119,239, 59, 69, 33, 4, 77, 99,112,162,219,237,214, 8,201,148, 70, 91,250, 45,102,184,232,254,221,182, 5, -162,101,224,199,199, 81,128,208,208,180, 13,117, 81,178,144,106,152,114, 88,150,197,118,181, 6,169,144,109,131,235,120, 40, 41, -209, 74,152,108, 6,199,165,180,109, 2, 55,162,174, 77,231,230,219,147, 97,229, 96, 32, 58, 53, 62,129,137,128, 22, 26,207,119, -112, 43,155,182,109,200,243, 12,219,129,188, 48,157,220, 59,239, 60, 99,185, 92, 81, 86, 57, 31,126,248, 19,126,254,243,159,243, - 55,127,243, 43, 94,124,255, 18,203,245,112,189, 0,207, 11,134,139,119, 40,228,204, 60, 21,161,244,189,248,213, 55, 88,210,186, - 40,105,165,121,175,122, 69,123, 31, 35,108,118,225,111,104,122,247,223,191,254, 61,220,164, 89,215,149,155,192, 65,205,155,203, -179,191,212, 61,219, 25,246,213,126,224,118, 93,157, 25,229,175, 23,203,225,189,117, 93,151,182, 91,227,136,123, 49,180,171,213, -138,187,187, 59,222,127,255, 3,190,248,135, 47,217,237, 55,236,247, 41,174,235,188,137,218,181, 11,150,155, 53,117, 35,135, 9, -141, 33,173,165,248,142, 59, 76,112,250, 73, 86,223,185,107, 37,135,132,193, 30,182,116,124,124,108,180, 50,158,131, 35, 12,253, - 45, 73,198,102, 58, 20,135,216,150,131,212,138, 48,244, 89,174, 55, 28,207, 79,241,125,143, 34, 75, 77,162, 95, 99,210,239, 54, -233, 30,191,123,221,238,255,178,109,147, 64, 56, 26,141, 58,187,154, 41, 48,243,238,188,105, 59,221,128,112,108, 38,179, 3,162, -182,101,181, 90,177, 94,175, 17,194, 30, 8,138,155,205, 6, 75, 41,154,178,226,108,126, 4, 82, 49,142, 13,208, 72,181,186, 35, - 8, 58, 28,207,143,136,227,152,100, 52,194,178, 28,163, 25,169, 91,230,179, 67,202,166,161,172, 90,202,114, 7, 88,248, 65,130, -231,249, 3,215, 32, 8, 34,202,178, 52,227,245,241, 49,155,172, 64,183,138,182,105,240, 3, 35,182,109, 42, 3,176,234, 87,124, -174, 99, 10,192,155,155, 27,190,254,230, 75,158, 62,123,204,119, 47,126,224,250,110,133,110, 59, 74, 93,217, 16,120, 30, 85,217, -160, 29,115,147,153, 76,250,170, 35, 41, 26, 75,223,205,237, 53, 77, 93, 16, 5, 30, 89,182,199, 79, 2,156,162,133, 70, 9,220, -104,130, 23,143, 57,154,205,120,226, 5, 4,201,152,197,114, 77,189, 95,152,135,160,227, 59, 75,165, 81, 56,216,174,141, 70, 80, -214,173,153, 46,137, 55,190, 87, 27,240,109,219,116,139,251, 13,186,205,113, 45,135, 39, 15,143,105, 26,155,203,187,181, 73,244, -241,124,227,101,214, 22,173,173,105, 90,144, 6, 32, 70, 35, 20, 26, 69,100,219,200, 86,163,132,196,114, 21,241,200,199,166,197, -193,176,218, 61, 92, 90,109,163,148, 17,188,212,117,139,106, 90,116,157,161, 91, 88,100, 41,109,219,114,117,117,205,102, 43, 64, -155,124,227,249,124,142,101,195,102,115,139,109,181,216, 86,131, 45, 20, 81,224, 16,250, 30,227, 56,162, 21,150,201,218,237,173, - 49,181, 68, 85, 53, 69, 86, 99, 80,246,130,208,137, 16,142, 98,145,175,113,241, 80, 45,228,105,142,146,130,186,150, 52,181,162, -170, 36,101, 5,127,247,249, 55,172,246, 5,223,191,188,164,146,154,197, 42, 35,203, 21, 8,151,147,211, 67, 52, 9, 78, 50, 97, - 93,187, 20,187,148,197,111,191, 66,107,201, 40,142,153, 29, 28, 49,155, 30,226,251, 17, 85,217,144,101, 5,121,109,243,171,223, -125,207,249,229,150,217, 65,204,118, 87,243, 15, 95, 60, 71, 43,201,108, 18, 98, 11, 69, 93,101,216,150,232, 14, 47,176, 45,223, - 96, 71,148, 70, 8,197,108, 18,161,218, 12, 89,231,200,202,162, 81, 2,173, 29,214,219,138, 47,190,120,206,108, 54,227,116, 62, - 99, 60,158,144,101, 5,233,106,141,208, 83, 26, 41,209, 26,172,192, 38, 91,231, 36,211, 9, 19,103,194,199, 31,125,200,249,171, - 31, 13, 15,223, 9,240,131,200,172, 79,218,130, 52,173, 88,175,151,164,219, 13, 69, 89,210, 86, 5, 79, 79,167,168, 50, 71, 54, - 53, 40,141,146, 13,170,105,113,113, 76, 6,178, 31, 82,228, 21, 47, 94,190,166,168, 37, 74,120,248,181, 70,105,193,221,102,193, -197,221, 5, 85,171,153, 78, 71,140, 38, 83, 26,169,209,216, 38,106,114, 60, 54,151,146,237, 18, 68,101, 71,193,218,155, 93,183, - 99,254,236,190,202,238,247,231,227,241,120,216,205,110, 54,155, 65,136,150, 36,137, 1,224,116,130,185,205,102, 99,108,110, 97, - 64,154,101,168,110,124,110,117,145,172,253,103, 65,104,216,109,182,198,194, 87, 55, 70,224,105, 59,248,142,201,124,239, 15,211, -254,176,186,223,161,247,252,116, 33, 4,163,209,104,232,210,251,124,112,219,182, 13,253,205,245,134,113,118,255,245,189,151,122, -191,233, 46,235, 46,230,179,191, 12,134, 0, 22,199, 97,146,140, 88, 46,215, 93,214,246, 27, 59,149, 16, 2,203, 49, 35,235, 86, - 74, 92,223,235,152, 6, 53, 81, 28,224, 57, 65, 71,197,115,177, 3,223, 20, 27,182, 48, 49,187,142, 67, 81,229, 6,217, 42,165, - 97,252, 7, 30, 74, 65, 16,120,132, 97, 55,222, 87,146,245,170, 96,187, 79,153, 78, 70, 4, 65,192,122,149,178,223,110,217,174, - 55, 38, 31, 65,195,120, 50, 37, 73, 18, 60,219, 97,191,223, 97, 9, 77,224,185,120,142, 77, 83,149, 60, 56, 59, 33,207, 50,150, -119,183, 8, 13, 15, 31, 61, 99,187,221, 18,143, 71,131, 16, 79, 41, 69, 24,117,244, 57,105, 14,123, 91, 88,104,109, 58,116,161, - 52, 22, 10,161, 37, 72,129,110, 37,154, 55, 72, 91,221, 95,254,154, 46, 35, 65, 15, 58,131, 30,226,114,191,235,236, 47,201, 82, -118, 23,147, 54,118, 53,163,181,176,128,123,130,198,110,135, 29,134, 1, 69, 81,116,168, 95,239, 45, 75,160,239,251,172, 22, 11, - 28,199,225,112, 54, 39,140,252, 46, 85,109,204,229,229, 53,159,124,242, 17,191,248,197, 47,184,190,185, 28,216,250,125,161, 81, -150, 37,187,221,142,221,222, 36,204,149,181, 41,156,122, 26, 93, 63,153, 9, 61,243, 92,245,128, 32,147, 38,231,224,185, 46,227, -241,184, 11,120,114,186,201, 85,138,107, 59,100,217,158,253,126,203,126,111,145,157,191,166,170, 26, 38,211, 3, 94,189,190, 0, - 75, 80,140, 70,120,158, 99, 28, 13, 64, 81,100,102, 37, 8,212,221,152,189,127,173, 92,215,197,245, 60,194, 40, 34, 25,141,152, - 76,166, 88,174, 67,232,249, 67,158,122,185,221,178, 88,175, 77,113,105,187,216,174,153,102,229,101, 53,196, 19,247,239, 71,236, -251,104,223,199,238,252,248,190,239,179, 90,173,112, 44,193,126,191,103, 20, 69,204,166, 99,180, 18, 60,126,244,144,231,223,125, -111,172,129,186, 34,140,124,236,214,195,113, 21,117, 87,252,222,199, 9,187,182,153,146,229,121,193,110,155,226,219,150, 89, 55, - 99,172,171,142,235,242,232,201, 59, 40, 52,155,205,142,166,169, 8,131, 0,203, 18, 88, 40, 86,139, 59,126,253,235, 95,243,241, -167, 63,229,232,104,198,229,213, 13,109, 99,154,155, 48,240,168,138,146,217,120,108, 62,147, 22,248,190,135,155,167,228,121,138, - 86, 53,104,129, 37,224,248,240,136, 36, 48, 83,147,218,179,112, 30, 61,123,135, 60,221,225,123, 14,145,235,130,110,105,154,138, -103,179, 49,227, 40,224,226,226, 18,169, 4,218, 50, 60,229,170, 21,224,120, 93, 96,138, 70, 54, 45,201,164, 35, 61, 53, 13,109, -217,114, 52,154, 18, 71, 1,187, 85,137,109, 73,210,253,138,229,114,203,233,241, 25,163,233, 9,225,243, 87,124,254,205, 23, 8, -105, 33,164,241, 11, 34, 91, 68, 43, 65,218,104, 44,148,101, 20,222,173, 22,168,198,132,166, 52,173,234, 20,234,134,160, 99, 56, -198, 45,178, 99,175,235, 14,140,161,235, 22, 45,141,130, 55,203, 50,252,112, 66,171, 32,138, 71,228, 89,195,114,189,230,224,224, -103,156,157, 77, 40, 86, 43,158, 60,121,198,110,159, 97, 99,115,122,250, 0, 27, 97, 72, 81,190, 24, 42, 81,219,105,176,132, 7, - 66, 81,213, 25, 85,185,167,182, 52,109, 81, 32, 90,137, 46, 27,194, 32,160,149,166,162,154,140, 70, 20,179, 25,113, 52, 98,179, -217, 49,158, 29, 82, 46,183, 68,163,128,179,167, 30,182,151,208,124,255,154,187, 23,119,204, 15,207, 56,121,242,148,203,203, 87, -228,141,199,200,159, 49,142, 15,209,152, 67, 98, 93, 72,246,205,158,171, 77,133,192, 50,107,146,188,164,168, 5,155,125,205,120, -114, 76,182,223, 18,197, 83,174,174,239,240, 29,197,159,252, 15,255,152, 44,223, 16,122, 22,129,103, 99,107, 1,218,194,119, 61, - 44,203,233, 34, 56, 53,194,106,136, 71, 49,227,192,193,117, 28, 84,165, 81,142, 96,119,183,227,203,175,191,226,225,163,103,252, -179, 63,250, 5,249,242,146,186, 74, 25,143, 15,140,232,171, 85,120,129, 79, 90,212, 72, 4, 87, 87, 55, 28,159,156,112, 58, 63, - 6,224,226,242, 10,161, 27,218, 50, 35, 72, 38, 52,117, 70, 83,151,216,162,101, 58, 10,216, 23, 21,233,234,150,147, 79,158,224, -168, 8, 71, 24, 60,173, 97,183, 51, 4, 52,120, 94,194,197,205,130, 87,151,231,172,182, 57,184, 1,110, 24, 35,220,128,203,235, - 11,188,200,230,167,191,255, 25, 85, 85,113,117, 99,172, 95,194,182,200,138,130, 77,150,114, 56,155,147,231, 6, 78,226,119, 73, - 99, 97, 24,154,232,204,142,226, 54,155,205, 56, 59, 59, 51,107,147,213,138,215,175, 95,179,221,110, 7,158,118,223, 61, 42,165, - 56, 56, 56, 24,136,111, 73,146,176,218,110,176,187, 67,174,191, 56, 70,163, 17, 66, 24,142,251,201,252,152,237,118,107, 20,201, -251,253, 91,120, 86,128, 86, 43, 36,114,184,200,147, 36, 25, 58,235,229,114,249, 86, 88, 71, 47,198,234,247,216, 69, 81, 16,220, -235, 26,122, 10, 90,239, 75,151, 82,146,166,233, 91, 62,117,231, 94,118,122,223,253,197,113,204,213,197, 53,201, 44, 30, 46, 41, -221,234, 1, 34, 51, 26,141,168,155,114,248,185,250,206,141,238, 18,108,219,150,233,236,144,195,195, 67,211,157,110, 54,104,173, - 9, 60, 31,132,141,141,177, 71,185,174,139, 66, 12,224, 16, 3,179,177, 88,173, 22, 38,199,186, 62, 36,246,189,225,210,232,133, - 94, 8, 97,168,132, 81,100, 14, 68,161,186,160, 32,133,106,107,130, 48,193,234,252,221,167,103, 39,188,252,225, 71,242,162,226, - 95,253,171, 63,229,252,242,134,219,219, 5,139,229,218,248,177,187, 53,133, 82,138, 86,214, 67,183,220,187, 14, 90,215,235,198, -206,230,245, 20,150, 73,226, 83,210,236,121,101, 93, 25,190,188,197,208,205, 14, 97, 35,247,248,242,189, 95,189,191, 96,104, 76, -243,243,182, 67,193, 29,138, 39, 41,223, 60, 23, 97, 24, 14, 32,153,233, 56, 25, 72, 97, 69, 81,176, 88, 44,134, 85,139,153, 46, - 37, 60,120,240,136,239,190,125,206,213,213, 13, 71, 71,199,124,253,245,215,102, 58,149,110, 7, 47,126, 85, 85,216,142,195,225, -225,156,135, 15, 31,226,120,157,197,173, 44, 6,253,132,214,154,168,187, 20,223,252,156,166,168,104, 58,252,112,154,166,131, 38, -229,245,235, 31,137,131,112,112,112,236,118, 59,106,105,158,255, 7, 15, 31, 82,151, 57,126,100, 68,113,125,150,128, 16,130,166, - 52, 90,138, 56,142, 7, 17,101,127, 81,246, 19,129,190, 40,222,101,105,135, 96,110, 6,209,232, 0, 56,106, 91, 86,139,229,192, -130,232, 11,159,254,181, 79, 58, 93,140,136,205,127,115, 29, 7, 75,155,157,251, 40, 54,122,153,170, 44, 57,127,245, 26,215, 11, - 24, 31, 76,209, 74, 97, 89,112,116, 48,227,234,230, 22, 89, 43,226,120,204,129, 31,226, 5, 49,121, 81, 33,101, 79,173,179, 8, -194, 16,180,153, 96, 72,173,153, 76, 38,216, 2,234,167, 79,217,237,118, 93,170, 96, 51, 20,220,219,205, 30,215,179,152,141, 71, - 4, 81, 12,150,197,111,254,235,127,225,221,119,222, 51,186,145,155, 5,155,245,146,216, 79,104, 69,219,105,102, 90,146, 56,228, -232,232,136, 48,120, 64, 89,165,180,173,209,236,204, 15,143,141, 51,163,169, 16,186, 38,205, 11, 28,223,247,241,252, 25,178,174, - 64,128, 43, 92,146,192,167, 41, 83, 92,165,152,143, 2,110, 87, 91,164,246, 16,182,143,229,216,224,154,157,184,210, 10,199,179, -201,203,130,241,216, 67, 53, 53,182,173,135,232,188,179,147, 67,222,123,246, 79,176, 68,197,241,145,145,252, 39, 98,132,227, 60, - 99,118, 60,226,245,249, 5,235,155,148,180,200,160,201, 81,173, 33, 11,217, 94,136, 23,153,113, 93, 16,198, 44, 55, 45, 69, 35, - 73,243,138,151,207,191,193, 81, 53,159,126,242, 1,118, 91, 15,251, 58,215,117,176, 68,199,151,246,108,242,125,131,223, 85,125, -251,206, 10, 83,237,187, 36, 32,209,176, 90, 45,120,116, 28,113,123,179,167,204, 75,180,208, 64, 72, 85, 40, 22,183, 55, 92, 95, -223, 18, 77, 78, 41,100,128,210, 13, 81, 96,177,221,221, 18, 88, 25,117,219,130,149,225,122, 54,109, 46, 81,178,225,209,217,156, -171,215, 47,105,164,225, 40,223, 45, 86,221,131,169,104,168,249,183,255,215,191,229,159,253,241,255,200, 7, 31,127,194,221,111, -126,203, 50,221,241,242,242,156,100, 54,103, 60,159,114,179, 94,115,113,179, 96, 20,197, 52,218, 54,163, 20,223, 99,187,221, 18, -116,126,104, 63,242, 41, 42, 51,130,178, 28,129,227, 78, 40, 43, 31,180, 68, 54, 26, 71,128,208, 14,117,217,176,223,238, 56, 57, - 76, 80,117,142,111,107, 28, 33, 16, 2, 84,155,226,216, 1,201, 56,166,110, 90,194,241, 1, 90,182,200, 58, 55, 23, 64, 48, 98, -179, 94,179, 88,155, 11,232,235,111,191,101,187,251, 23, 88,202,232, 29,238,214, 59, 66,215, 98,159, 21,184,126,133,229, 90, 84, - 85, 75, 28,199,228,121, 65,150,101,236,118,107,202,108, 71,171,148,225,244, 91,146, 70, 91,236,119, 25, 71,227,128,227,207, 62, -161,168,106,138,253,142,211,113,196,118,113,195,209,193,140,245,122,107,112,148, 7,135,128,249, 30, 8, 69, 60,142, 57, 56, 58, - 96,114,114, 6, 65,200,215,207,191,227,246,230, 2,219,117, 25,197, 35,190,255,225, 71, 38,147, 9,211,131, 67, 46, 46, 46,184, - 91, 46,241,195,152,100, 60,226,234,230, 22, 33, 76,126,184,237,122, 4,158, 57,180,227,216, 80,224,206,206,206,120,231,157,119, -200,178,140, 23, 47, 94, 12,187,235, 30,175,218, 31,216, 61, 9,174, 63,212,166,211, 41, 82, 43,252,242,205,152,221,178, 44,124, -199, 69, 40, 77,163,140, 42,120,177, 88,144, 36, 9,174,101,227, 90, 54,173, 54,161, 31,117,119,249,182,149, 1, 95,140, 70,163, - 65, 16,183,219,237, 40,203,242, 45,132,236,213,213, 21,190,239, 15, 95,215,171,146,123,236,106, 93,215,120,142,139,118, 21,104, -134, 78,101, 8, 47, 17, 22,142,235, 25,110,123,183,183, 68, 42,226,209, 20,199,182, 65,181,216,142, 17,165,106,173,105,181,121, - 13, 76,103,188,199,118, 76,232, 69, 83,153,207, 92, 83,213,204,231,115,234, 60,195,115, 92,182,219, 53,227,241,152, 48,244, 9, - 2,143,162,168,134, 0,151,241,120,140,235,251,180,141,100,148,140, 88,175,215, 3,171,221,178, 44, 60,219, 27, 38, 12,253, 74, - 33,207,115, 67,210,171,106,100, 31,189, 89,215,160,117,103, 25,116, 16, 74,115, 48,153,114,112, 56,163,204,171,225, 53, 62, 57, - 57,225,230,118,197, 15, 63,252, 64,148, 76,168,235,146, 52,221, 13, 29,175,108, 25, 14,126,207,181,209,174,141,108,107,146,209, -168,243,185,215,120,129, 79, 81,102, 88, 8, 67,188,235,210,206,130, 32,192,178,161,172, 42, 26, 41,169,186,206,124,183,219, 13, - 0, 28, 19,207, 43, 7,149,180,219,214, 84,149,185,212, 93,199,188,190, 85, 93,153,179,203,115,209,150,192,119, 76,145,183,219, - 25,103,196,108, 54, 35,203,178,161, 0,171,170,202,172,142,180,224,249,247, 63,112, 60, 63, 29,136,119,175, 95,191,230,230,238, - 22, 47, 48,157,228,103, 63,255, 25,255,246,255,248, 63,141, 88,211, 51, 93,119,213, 21, 45,251,125,198,205,221,173,241, 81,183, -213,160, 94, 31,208,193, 61,113, 80,118, 89, 13,158, 59, 76, 31,122,241,231,201,201, 9,254,128,255, 53,133,138, 27,248, 76,221, -217, 48,254, 78,179, 29,109,219, 48, 31, 31,179, 88, 46, 9,195,144, 95,252,147, 63,228, 47,254,242, 63, 17,197,193,144,196,214, -219,221,250, 85,145,239,251, 28, 31, 31, 51,154, 78,135, 66, 87,107,205,213,229, 13,235,245,154,178,106,152,207,231, 84,117,203, -122,189,101, 60,153,226,120, 30,101,110,200,141,179,217,204,208, 30, 59, 18, 93,154,166, 88,170, 97,126,120,100,138,219,214, 36, - 40,182,117, 67, 93,217,228, 89,193,108,118,196,102,187,229,197,139, 23, 60,121,242,148, 70, 73,178,180, 34,142, 99, 46, 55,215, -104,219,161, 40,107, 14,189,176, 91, 93, 41,182,219, 45,179,217,148,125, 94, 16,120,150, 73, 70,172, 27, 82, 37,121,242,244, 49, - 82, 54, 3,210, 89,107, 49,216, 82,155,166, 33,140, 18, 19,237,221,167, 4,122,134,116, 23, 6, 30,117, 89, 18, 5, 14,190,107, - 83,213, 37,101, 89, 18,118, 32,166,186,110, 8, 3,135,192,117,105, 45,179,166,246,195, 0,207, 15,209,117, 65, 83,236,105,219, - 18, 7,213,226,216, 2, 9, 84,117,137,227, 59,132,129, 75,236, 90,180, 77, 67, 99, 43,170,108,199,245, 38, 67,187, 49, 34,156, -160, 45,147,131,235,251, 46,130, 22,217,228,212,205,158,108,187, 67,215, 26, 23,139,131,228,140,211, 7,103,200,250, 6,207,147, -180, 85, 67, 93,108,168,219, 26, 95,120,188,255,244,132,247,159,158, 17, 58, 33,223,126,247,156,197,110,197,174, 86,164,117,192, -239,190,249,129,108,151, 27,104, 69,154, 49,154,204,184,189,221,178, 77, 91,174,175, 55,156,255,248, 61,239,189,243, 9, 7, 7, - 17,155,245, 45,201,120, 68,211, 74,100,219, 80, 54, 37,147, 40, 33, 12, 99,180, 13,142, 39,121, 48, 63,227,240,248,142, 87,215, - 63,226,219, 9,158, 35,184,186,189, 33,223, 92, 99, 55, 54,171,197,154, 86, 74,242, 42,199,178, 53, 85, 94,208, 52, 45,113,229, -112,112,246,174,217, 61,213, 85, 55,154,180,216,237, 54,124,245,245,239,216, 76, 60,178,197,154, 71, 15, 30, 83, 86, 13, 69, 91, - 35, 44, 7,199,243,153,205,102, 40, 97, 14,194, 26,155,170,110,168,164, 34, 26, 79, 73,139,154,151,231,151,140, 14, 14,120,247, -189,159,144,103, 21, 89,154,209,202,146,237,174,100,189,186,165,200, 50,132, 48, 15,124, 16, 71, 72,221,242,234,226,146,120, 60, -162,150,230,128,240,195, 22, 95,204, 25,197, 17,182, 29,144,101,123, 28, 45, 57, 57, 62,227,217,227, 39,120,110,195,200,155,161, - 84,105,144,174,174,131,236,186, 18,199,106,113, 19,143,172, 40, 8, 2, 15,219,243, 8, 52,120, 65,192,212,115,120,104, 37, 28, - 30,157, 83, 93,175,184,185, 91, 96,183, 5,148, 41,170,202,112,108, 97, 82,202,178,146,125,190,103,179, 93,226, 89,130,233,120, -196,217,241, 33,163, 81,204,201,225,204,216, 18,109,151, 32, 74,144, 8,124,215, 1,203, 37, 30, 77,169, 74,201,205,197, 43,236, -182,224,193,209,148, 47,191,252,130,116,159,243, 79,255,233, 63, 67, 74, 69, 81,213, 92, 94, 94,226, 37,123, 14,142,207, 56, 57, - 61,229, 98,185,230,252,242, 21,185,172,152, 30, 27,190,186,107,155, 49,117, 43, 53,216, 38,247, 59, 76, 98,148, 22,131,160,167, -223, 65,219,182, 24, 46,109,207,243,134,221,224,110,183, 99,177, 48,130,199,190, 67,234, 47,215, 36, 73,222, 34,142,245, 23,120, -207, 15,111,171, 26,108,235,173,184,212,126,119,109,124,225,166,171,217,170,237, 64,149, 27,188,185, 74, 17,197, 17, 65, 20, 14, -211,128, 60,207,135,164,183,190,179, 25,118,219,221, 63,223,103,184,247,221,119,255,239,189,226,190, 23,216,253,255, 41, 98, 74, -240, 70,184,165, 52,179,201,148,116,187, 27,168,113, 82, 75,220, 46,249, 42, 77, 83, 92,203,172, 20, 60,225, 12,221,146, 41,218, -125,227,196,144, 18,109, 59,195,161,213, 79, 26,234,186,239, 50,192,237,214, 5,232,122, 64,199,218,142,233,212, 87,219, 29,181, - 52, 19,136,170,170,144,209, 27, 4,168, 2, 2,207, 39, 47, 11,138, 52, 27, 20,228,190,107,163, 90,243,207,113, 98, 56,228, 40, -129,231, 26,199,192,201,124, 78, 93,183,188,122,245,138,195,249, 49, 79,159, 62,197,245, 2, 46, 46, 46,176, 44,211,209, 23,133, -241, 88,239,118,251,238,255,199,162, 44, 10,138,110, 84,111,119,202,234,205,106,109,216,242, 93, 7,103, 59,214, 91,118,191,160, -163,239,221, 23, 23, 74, 41, 41,235,210,104, 49,108,167, 27, 47,119, 59,245,123, 52, 55,199,113,208, 66, 35, 91,141,176,204,234, -197,115, 3,132,165,145, 77,253,223,141,245,123,151, 68,239,167, 55, 59,241,138, 86,182,198, 2,213, 72, 2, 63, 34, 25, 69, 60, -124,248,208,160,115,187, 11, 84,116, 63,115, 89, 55,221,206, 62, 31,180, 2,158,219,190, 53,109,232,159,119, 99,173,202,135,139, -181,159, 60, 56,142,195,201,201, 9,143, 31, 63,102, 28, 71,228,121, 74, 52, 74,186, 2,180, 67, 20, 91,130,135,143,206, 72,243, -156,233,100,204,195, 71,143,185,189,189,230,100,126,204,117,151,149,224,217, 14,120, 14,105,150,145,231, 21,174,107, 13, 43,178, - 85,135,185,117, 93,215,156, 87,182,249,188,218,174, 51,172,190, 14, 15, 15,217,165, 25, 30,224,121, 1, 74,181,236,118, 59,198, -201,136,200, 15,168,171,138, 34,221, 51, 59,152,112,112,112,128,210,138, 40, 49,113,205, 74,154,223, 35,181, 73, 27, 12,130,144, - 48,137,105,165,164,174, 77, 0,142,101, 89, 76, 15, 15, 77, 80,140,213, 97,116, 11,115, 73, 11, 91, 13, 90,153, 52,207,184,187, -187, 99,148, 4,180, 53,156,159,159,211, 86, 37,190,239,178,221,165,166,144,214, 54, 81,148,152,231,197,179, 81,109, 75, 83, 75, -180,176, 72, 18,195, 64,177,109,193,147,167, 15,184,189, 89,177,223,167, 28, 76, 19,110,239,150, 88,214, 24,180,100, 54,155,118, -186, 10,195,200,175, 91,137,101, 71,180, 82, 25,178,164,176,140,101, 49,219, 44,240,163,208, 60, 56,117,133, 23,141, 73, 34, 15, -215, 86,208,212,168,182,192, 18,138,197, 98,193,245,238, 28,220, 49, 82, 56,104, 5, 65,232, 83, 22, 91, 38,163,136, 36,118, 41, -243, 2, 71,187, 56, 56,120, 66,227, 57,135, 56,122,143, 45, 44, 60,215,194,115,109,234,218,168, 94,221, 46, 17, 76,150,123,158, -156,133, 60,125,247, 41, 47, 46,150, 92,173, 21,145,111,230, 62,109, 83, 81, 99, 19, 68, 30,155,117, 78, 81, 64, 20, 29, 35,229, - 13,219,157, 70,201,138,253,190,196,243, 67,210,188, 32,207,204,136,227,116,126, 74, 18,133, 20, 77,205,182,145, 92, 92,222,178, -221,110, 81, 40,220,192,163,170, 54,220,221, 46, 57,223,221, 18, 8,159, 42,175,120,240,248, 17, 15,230,103, 28,204,166, 20, 89, -142,101,217, 96,199, 16, 24,165,233,182,174, 24, 79, 70,164, 89,206, 39, 79, 30,113, 56, 61,225,234,213,183, 20,219,148, 15,223, -255,125, 38, 19, 31,101, 9, 90, 97,118, 99,121, 81, 80,181,146, 40, 62,160,104, 28,102,135,143,216,167, 21,191,253,251,175,120, -241,195, 21, 55,171, 61,187,125, 70,211, 72, 54,171, 37, 73, 20, 18,123, 13,227, 56, 98, 54,158,241,224,228,167,140, 70, 35,198, - 99, 35, 94,188, 91,238,248,223,255,221,159, 33, 75,104, 26, 11,101,217, 70,233, 25,152, 46,205,214,138,182,170, 17,182,100, 52, -154, 48,155, 29,161,101, 74,158,109,208, 77,137,109,105, 67,117, 3,148,146, 20,181,196,209,128,227, 97, 59, 62, 85, 90,144,239, -247,232,180, 68, 59, 17,174, 61, 2,173, 88, 46,239,248,252,243,207,209,229,158, 98,183,166,206, 83,218,182, 70, 88, 46,181,108, -113, 3,155,211,147, 67, 62,249,201, 7,156, 30, 78,137, 60, 27,215, 6, 7,137,235, 57,108,179,148, 50,223,225,248, 1,174, 37, - 81, 82,225,169,134,178,200,185,189,120,205,163, 73,128, 27, 5, 60,121,240,144,231,223,127,199,110,183, 97,124, 48,163,206,114, -118,249,142, 81, 20,112,181,184,230,251,243,151, 44,118, 41,203, 52,103, 50,155,161,108,155,229,110,197,131,249, 25, 94, 16,116, - 54, 28, 11,223, 11, 9,131,150,162, 50,163,245,126,207,178, 89, 59, 7, 0, 0, 32, 0, 73, 68, 65, 84, 61, 78, 98,115,169, 57, - 14,243,227, 67, 67, 71,171, 42,170,202, 20, 94,247,119,209,189, 50,248,254,184,185,239, 84,122, 79,111, 95,133, 43, 12, 4,201, -113,221,142,165,221,187, 13, 76,210,158,234,246,211,149,172,144, 66, 26,104,141,106,192,210, 56,174, 53,140,214,251,176,150,254, -226,239,133,110,253, 37, 49, 26,141,134, 75,227,126, 48, 74, 37,223, 20, 9,253, 97,236,121, 30,142,101, 15,136,211,251, 72, 80, -251,222,136,184,239,140, 47,207,207,137, 67, 67, 69, 43,139,218,164,164,117, 29, 90,175,164,239,119,242,125,247,119,255,240, 87, -104, 44, 97,155,176, 11,203,233,254,178,186, 72, 98, 9, 66,224,119,123,230,188,172,186,142, 57, 24,214, 21, 10, 69, 81,149, 38, -183, 62,246,135, 14,208, 92, 92,166, 59,234,109,132,145, 31, 96,161,168,138, 18,219, 50,185,213, 85, 81, 18,120, 1, 15, 30, 60, -224,229,143, 23,131,144, 74, 42,139,235,235,107,130, 32,224,248,228,136,170, 46,184,186,186, 50, 43, 13, 47,164,105,149,185,212, - 60, 15, 41, 27,234,186,164,105,205,225, 10,138, 60, 79, 9,227,128,186,182, 40,243,130,170,169,105, 91,186,224, 26,135,100, 20, -147,102,249, 91,208,154,251, 1, 56,247, 35,104,117, 23, 33,119,255, 82,183,109, 27, 37,212, 80,232, 1, 72,173, 16,157, 16,106, -226, 78,217,111,119, 6,217, 27,249, 4, 81, 60,140,221,247,121,129,112,108,118, 89,138,235, 26,187,213,235,215,175,201,246, 41, -127,252, 47,254, 57,191,248,163,127,202,239,126,247,187,161, 40,232, 47,237,222,247, 61,154, 8,162,192,195,181, 29, 92,199,250, -239,128, 69,253,218, 71, 40, 53,232, 60,122,239,119,175,255,144, 82,114,126,126,206,249,249,185, 1,250,220,139, 71,141, 18,147, - 87,144,140,199, 93,108,177,160, 40, 10, 78, 78, 78,184,190,190,166, 44, 10,130, 48,100,215,185, 35,206, 78,231,204,231,115, 38, -211, 41, 82, 74, 86,171, 53,150, 54,172,117,180, 53,184, 9,188, 32, 68, 41, 88,173, 86,228,249,154, 56, 25, 99, 11, 65, 28, 70, -230,231,183,204, 20, 45, 14,125,118, 91, 3,133,113, 29,203, 92,234,109,205,233,201, 49, 55,194,252,126,215,247,136,146, 49, 18, -205,126,151,177, 88,174,217,167, 57, 8,219, 76,164, 59,109,141, 84, 22,199, 39, 7,236,210,162,115,130,152, 88,109,215,117,201, -203, 6, 97, 59,108,247, 41,182, 45, 76,112, 87,146, 80, 57, 22,139,245, 10,219,182,169,235,202, 76,155,148,194,243,156,161,224, -119, 3,159,213, 98, 7,155, 13, 7,211, 41,190,235,209,122, 14, 71,135, 19,148,108,120,249,227, 43,234, 70, 98,219,130,237,182, -229,209,163, 51,122,249,154, 35, 44, 3, 42,116, 28,234,198, 76,141,132, 37, 12, 7, 98, 18, 57, 8, 75,209,186, 22,218, 9,152, -140, 34, 66,207, 66,151,123, 44,221,114, 52,141, 25, 77,102,108,107,139,197, 23, 63, 80, 75,192, 54, 35,136,178, 44, 57,152, 30, -114,118,114,196,244, 32,162,173, 90, 44,105, 99, 73,205,114,181, 37,114, 37, 31,189, 63,194, 34,167,173,242,142,237,110,225,162, -113,164, 6, 9,187,205,146, 96, 20, 34,112, 89,222,254,200,127,251,237,107,238,178,154, 40, 58,164,172, 26, 60, 63, 98,183,219, -115,144, 56,220, 92,175,137,130, 49, 31,189,255, 41,119,183, 27, 82,223,226,242,226, 5, 87, 87, 33,235,237, 10,203,114, 88,220, -108,248,250,171,111,169,243, 10,101,217,220,237,118,220, 21, 45,155,204, 84,255,187,253,134, 34, 91,242,167,255,252, 99, 30,125, -246, 41,186,110,217,110,183,156, 61, 58, 51,222,218, 36,224,246,234, 26,173, 44,182,169, 36,171,106, 14, 14,142,168,182,165, 97, -163,227,240,206,179, 15,120,252,232, 61, 22,175, 94, 17, 69, 30,117,107, 83, 43,133,178, 5, 74,107,242,198,116,121, 81, 18,243, -227,235, 75,164,178, 80, 74,112,254,250,134,230, 98,203,126, 87, 50, 59, 56, 97, 54, 19,124,251,205,151, 60, 60, 61,228, 95,255, -233, 31,243, 71,191,248, 67,124,209,224, 8,133,103,153, 3, 33, 12, 19,176, 3, 46,239,246,252,249,127,252,143,252,120,177, 33, - 28, 31,225,133, 83,100,107, 62,136, 89,182,195,119,133, 97, 76,107,193,118,183,231,118,177, 33,112, 37,158,237,226,132, 9,161, -235, 80, 55, 5, 90, 73,226,201, 8,173, 4,141, 84,160, 5, 10,195,137, 23,194, 92, 4,105,186, 38,167,102,113,119,195,217,201, -156,211,227, 57,158,152,145,110, 19, 34,215,140, 11,109, 47, 52,241,171,180, 68,190,195,116, 50,194,113, 61,146, 36, 96, 28, 7, -164,251, 21, 89,145, 50, 25,197,236,114,195,200,118, 28,139,172, 40,217,109,214,172,215,123, 22,215, 87,108, 31, 30,147,103,123, -226,100,204,201,217, 25,181,108, 57,191,190, 97,185,222,113,252,224, 33,110,156,240,231,127,243,183,124,254,229, 23,124,250,179, -159, 51,125,240,144,172, 44, 89,110,205, 56,245,252,234,146,208, 51,228,186, 70, 73,118,219,148, 52, 77,169,154,118,128, 66, 72, - 41, 7,104, 70,150,239,241,125,159, 44,203, 88, 44, 22, 76,103, 71,195, 56,218,228, 50,231, 3, 88,166,183,109,217,247,108, 72, -125,199,212, 31,204,158,227,118, 34, 40, 3,154, 17,247, 58,106,107,160,150,217,111,184,228,157,175, 57, 8, 2, 51, 81,192, 76, - 18,250,253,254,125, 16, 77,255,251,250,196,172,126, 58,208, 11,156,140,119,216, 25, 46,223,254,251,246, 73, 93,125,183,127,127, -180,218, 95,238, 70,133,107, 81,150, 37,235,205,142,249,145,161,180, 13,241,173,247,236,117,174,215,197,130, 98, 48,171,253,100, - 64, 41,133,213, 93, 2, 77,243,102,223,218, 43,231, 93,215, 53, 72,100,169,169,171, 6,169,205,136, 21, 33,240,132,121, 94, 93, -207,195,233,138, 0,186, 11,206, 80,222, 90,202, 42, 71,116,224,141,222, 1,224,121, 30,109,211, 80,180, 25,150, 5, 85, 94,226, - 59, 30,161,103, 49, 29, 79,208,242,181,153, 80, 96, 49,155,153, 11,226,230,230,134,209,100,108,226,159, 61,143,186, 46,177, 44, - 51,225,177, 16,131, 30,194,118, 29, 34,219,216, 4,233, 34, 88,123,127,118, 20, 7, 52,141,109, 86, 85, 82, 82,118, 1, 45, 77, -251,134,125,223,235, 46,250,215,219,243, 60,154,170,238,222, 23,253,214,133,223, 23,137, 18, 51,218,118, 58,130, 92, 81, 24,171, -101, 20,250, 36, 73,196,118,189, 25,158,133,126, 12,222, 23,149,211,233,148,219,219, 91, 99,255, 75, 38, 56,174,197,203,151, 47, -121,247,221,119, 57, 61, 51,190,238,223,254,246,183,111,156, 12, 94, 71,172, 19,130, 36, 25, 99,219, 35,210,221, 30,199,126,195, - 61,232,245, 0,253,170, 33,219,237,134, 75,188,247,238,247, 23,183,235,186, 60,121,252,184,123,198,212, 91,207,174,137,181, 13, - 57, 59, 59, 27, 68,122,227,209, 8, 97, 89,156,158,158,226,186, 62,183,183,183,168, 70, 14,223, 51, 77, 83, 51,157,234, 10,194, - 32, 8, 88,175,183, 4, 81, 52,172,195,250,181,212,120, 60, 54, 83,161, 46,182, 54, 8, 2,195,137, 8, 3,162,192, 27,136,120, -126, 87,176, 41,109, 38, 8,155,205, 6,209,229, 19, 20,101,205,247, 63,188,100, 58,157, 50, 59,154, 67,199,145,184,186,189, 99, -187,223, 81,183,230, 34,206,242,220,136, 40, 80, 93,225,106,208,227, 90,107, 83,132,217, 22,121, 89, 48,106,130, 97,197,227,216, - 2,215,247,200,247, 57, 77,219, 34,165,160, 41, 10,108, 11, 68, 28, 19, 36, 17, 46,224,121, 59,211,140,248, 62,161, 31,160,101, - 67,232,121, 76, 70,198, 26,253,253,203, 31, 9, 66,143,235,235,213,155,179, 71, 74,147,204,103,187,212,128,214, 70,208,105, 91, -150, 89,203,254,226,179,143,185,188,190,101, 87, 24,187,134,239,216, 40, 89,163,235,146, 48,112, 40, 43,137,235, 89,157, 82,181, - 69,217, 22,182,235,225,162, 65, 43,100, 45, 41, 10, 99,113, 65,107,198,193, 8,199,210,232, 90, 35, 44,143,100,124,128,171, 44, -218,202,228, 68,219,194, 33, 14,141,208, 71,161,153, 79, 35,110,214, 75,138,166,226,248,100, 78,221, 60,199,198, 53,100, 33,207, - 70, 43,101, 48,163,150,205,119,207,159, 19, 34,144, 69,193,175,127,249,154,186,202,105,100,193,227,167,115,194,196,229,217,179, -103,157, 66,116, 79,147, 73, 38,135, 71,156,158, 28,112, 26,207,120,113,189,227, 55,159,127, 71,219,104,162, 32, 33,137, 15, 56, - 57, 61,229,135,239,190, 34, 45,183,220,220, 89, 56,158, 77, 28, 5, 92, 95,222,152,200,209,189,226,219,151, 43, 14,143, 78,201, -228,142,221,110,195,200, 73,216,109, 42,190,253,230, 21,101,101, 98, 70,191, 63,191, 49,152, 88, 37,105,149, 68, 91,102,151, 51, - 30, 39, 6,107,121,116,194,233,201, 3,142,207,158,113,112,252,132,221,159,253,191,252,240,250,150,147, 7, 15,153, 78,230, 68, -225,136,166,209, 76,146,152, 58,187,197,209, 37,170,169, 72, 60,135, 60,219,163,132, 75,236, 39,252,244,147,159,112,121,251,119, -216,110,132, 16, 49,173,174, 80,150,166,170, 11, 44,215, 69,219, 80,215,146,219,213,150, 47,190,125, 65, 18, 58, 68,158, 64,202, -130,195,131, 41,182, 80,104,213, 50,110, 77, 80,138, 22,130,241,116,134, 45, 36,170, 35, 62,105,215,194,149,154, 64, 8, 30, 28, - 30, 80,227,242,244,201, 67, 66, 27,110,174, 45, 2,207,167,106, 37, 89,101, 14,116,173, 10, 16, 54,173,212,102, 7, 40, 75, 84, - 19,144,237,119,164, 69,138,182,225,118,177,196, 13, 67, 19, 78,112,179,162,105, 52,233,182,224,226,242,154,246, 15,126,198,110, -179,227,118,189,231,253,143, 62,230,252,226, 6,203, 11,120,244,254, 71,252,242,111,127,205,127,248,203,191,100,181,207,201,170, -134,162,106,104,202, 6,225, 56,196, 81, 68,186, 55,105,102, 54, 22, 85, 35,135,241,117, 81,189, 1, 70,244,158,238, 48, 12, 57, - 56, 56,224,213,203,130,243, 31, 95,161,218,150,100, 60, 38,142, 99,118,187, 29,105,154,190, 37,184,177, 44,107,184,188,251,113, -107,127,152,245,106,117,199,113, 8, 66,207, 92,198, 77,139, 80,102, 61, 99,219, 14,141,146,195, 33,220,143, 46, 45,203,194,114, -205,165,239,116,130,176,186, 49, 89,236,253, 84,225, 62, 44,230,173,203,179, 59,248,250, 14,169,191, 56,238,243,183,251, 34,164, - 40,138,161,211, 26, 79, 39,111,193,103,250, 95, 6, 58, 99,138,184,113, 23,188,177, 92, 46,153, 29, 29,226, 7, 46,109,209, 65, - 80,220, 55,136,219,254,255,193,117, 93,108, 1, 82, 54,102,108, 93, 87, 52,101,133,101,167,212,157, 47,222,247, 66,108,199, 35, -114,130,225, 32, 14,195,208, 76,151, 44,167, 75, 5, 52,153,231,150, 35,176, 44,129,231, 57,216,174,133,235,132,216,162, 83,142, -151, 37,142,231, 82,215, 70, 44, 37, 27,127, 16,182,217,190,107, 58,109,199, 29,132,143,163,209, 8,219,117,217,238,179,161,184, - 49,157,216, 22,219, 18, 28,205, 14,184,188,186,224,238,230,218,136,155,148, 50,169,113,173, 41,180,132,165, 41,171,178,115,210, -212, 40,209, 93,196,210,124,207,182,169, 80, 74, 34,165, 66,105,176,236, 55,110,130,222,210,216, 23,104,253,251, 83,169,150,170, -174, 17,226,205, 88,187,233,162, 69,107,105,190,206,118,204,132,197,238,199,248, 90, 14, 54, 74,165, 20,155,205,134,237,118,219, -137, 45, 25, 46,234,201,116,134,210, 70, 68, 39, 28,151,170,169,249,234,155,175,209, 72, 30, 61,122,194,119,223,125,103, 72,117, -178,125, 67, 8,148,146,229,114,201,221,221,141,193,143,138, 55, 94,113,231,222,243,102, 10, 73,211,157,246,107,165,237,118, 59, - 92,232, 71, 71, 71, 84, 85, 69, 60,158,112,116,100,118,214,227,113,210, 89, 90, 25,138,207,170,170, 72,243,138, 36, 73,184,186, -188,225,131,247,127,130,251,177,207,191,251,247,127,198,252,120, 66, 28,199, 68, 81,130,213, 41,237,219,182,101,113,183,100,181, - 90, 97,219, 46,251,237,150, 44, 51, 22, 84,167,155, 32, 57,182, 55,188, 54,190,231,227, 88, 54,161, 31, 48,138, 99, 35,188,220, -238, 24, 79, 70,220,221,221, 17,199,102, 18, 93,181, 13,223,125,255, 61, 71, 71, 71,248, 65, 68, 85,150, 60,120,248,152, 44,203, -248,246,249,247,180,218,168,214,151,171, 13, 69, 81,240,222, 7, 31, 80, 55, 38,109,110,179,217, 80, 22, 21,182, 19,116,235, 47, - 23,199,181, 17,149,185,208,107, 93,147,196, 1,203,213,138, 52,221, 51, 78, 34, 67,130,140, 70, 32, 4,150,229,177, 90,175,205, -170, 71, 75, 99,223,174, 42,252,208,176, 81,238,110, 23, 60,126,112,194, 47,254,241, 31, 34,132,224,245,197, 37,135,199, 71, 96, - 91,212, 82,177,218,174,193, 18, 8,173, 81,141, 66, 91, 38,216, 93, 32, 64, 75, 44,173, 17,150, 41,202,156, 79,222,127,135,116, -187,166,168, 74,164,210,148,197, 30,167, 17,248,162, 38,246, 35,146, 36, 96,145,153,253,129,176, 92,252, 32,164, 85, 22,150,109, -254,192,186,110,185,187, 93,115,163,239,168,202,134,200, 91, 32,100, 11,245,158,219,203,128, 63,252,249, 35,198,227, 3, 2, 49, - 34,112,124, 84,237, 80, 85, 45,182, 45,168, 27,197,174,104, 40,242,154,198, 17,140,146, 41,142,235, 99, 55, 29,127, 88,129, 45, -204, 15,250,250,199, 87, 76,130,156,103,167,103,204, 15, 38, 60, 62,254,148,170, 44,121,125,126,206,255,242, 63,255,175,204, 79, - 39,248,177,207,213,235, 91,147, 98,214,122, 96,121, 52,174,131,242, 19,206,255,239,255,192,118,183,229,244,240, 33,158, 80, 60, -255,238, 37,186,202,112,108, 11,169,108,110,150,107,148,106,241, 28,155,187,155, 91,226,104, 74, 45, 61, 22,203, 53,110,229,146, -101,245, 48,158, 93, 46,151,212,245, 17, 97, 28,209, 42,133,114,193,141, 2,230, 7, 7,104,161,152, 30,152,203, 66,104,213,169, -158, 51,254,243,111,126,205,106,233,163,176,217, 44,110,200, 54, 43, 94,215, 53,105,101,216,216,241,151,223,240, 7,255,232, 35, -142,167, 30, 72, 77, 83, 22,120, 86,136, 99, 41,150,219, 53,120,130,159,254,244, 83,126,251,205, 37,105,109, 83,200,138,198, 82, - 20,109,142,229, 74,148,109, 81,150, 21,142,109, 83, 73,197,235,203, 59,108,171,165,173,114,110,175, 47,120,247,157,167,204,102, - 99,118,155, 13, 96, 84,182,113, 28,242,217,239,255,148,208, 19,248,152, 81,166,239, 26, 11,152,213,218, 60,124,112,194, 55,223, -255, 72, 93,236,241, 67,207,164, 70,173,150, 84, 18,150,187, 28, 97, 89, 8, 93,211,230, 59, 92, 45, 25,121, 46,239, 60, 60,198, -126, 56, 39, 77, 83, 86,219, 21,149,108, 89,237,182, 76, 15,231,140,252, 17, 56, 46,101, 81, 24,177,161,227,177,220,166,220,220, -220,225, 7, 1,147,205,158, 69,154,161,173,154,151,203, 45,255,233,111,127,205,114,151,243,224,201, 83,198,179, 67, 92, 47, 96, -159,149, 76,167, 7, 20, 85,205,171, 31, 94,113,116,120, 76,219,202,225, 16,199,234,115,205, 25, 66, 44,162,200,116,242, 65,232, -117,222,215,154, 56,140, 56, 58, 58,234,240,173, 70,177,221, 43,221,123,248, 69, 85, 85, 67,167,223,119, 9, 38,136,196, 25, 58, -249, 73, 50, 26, 40, 89,247,199,156, 40,107, 56,212,238,239, 64,123, 15,183, 73,169,235, 19,231,212, 91, 29,125,223,177,223,199, -101,246,202,246, 1, 61,218,237, 55,239, 99, 49,239, 79, 20,162, 40,194,113, 28,246, 89, 58, 28,216,253, 62,190,167,215,249,158, -195,225,120,202, 7, 31,124,128,235,120,124,249,245, 87, 70,152, 25, 4,180,138,183,188,238,116, 5, 13,247,124,238,125,240, 70, - 93,215, 52,189,127,186,236, 10, 30,219, 27, 62,195,181,108,105,202,130,216,118, 12,170,184,109,200,243, 61,105,150,177,203, 82, -170,186, 33,176,245, 48,217, 16, 54, 56,150,195, 40,138,217,165, 57,163,209,136,205,122,103, 84,220, 78,133,106, 53, 54, 54,161, - 31, 33,107,201,110,189,161, 81, 26,223,241,121,242,248, 49,155,253,142,166,150,184, 81,192,213,229,205, 0, 13,114, 93,247, 13, - 44,196,181,217,238, 54,104,213,233, 21, 58,175,120, 81,150,157,144,207,104, 19,252, 40, 68,202,134,170,106,201,139,148,142, 70, -139, 35,192,117, 76,132,110,223,121,223, 47,224,122, 93,132,227,155,231, 68,116, 74,242,190, 64, 28, 10, 45, 75,188, 5, 61, 10, -186,253,124,219,152, 2,117, 58, 30, 81,150,229, 80, 24, 5, 93,158, 66,219,182,236,247,123,110,239,238,120,244,232,209, 0, 32, -250,189,223,251, 41,182,109,113,126,126,206,116, 58,229,103, 63,251,217, 96, 97,115, 28,135, 32, 50, 5, 92,213,180, 84, 69,206, - 55, 95,125,133, 99,189, 89,209,184,157,242,220,182,109,194,240,255, 35,235,205,154, 44, 57,210, 51,189,199,221, 99,143,179,230, -201,181,118, 20, 22, 2,236,110,176,217, 77, 26,151, 33,103,140,146,120, 33,153, 46,230, 66,127, 77,210,149,126,130,164, 59,201, -198, 76, 52,174,195,173,155,236, 70,163,177, 53,128, 90,179,114, 61,251,137, 61, 60, 60,116,225, 17,167,178,122, 96, 86,102, 64, - 33,171, 42, 43, 34, 78,248,183,188,239,243,134,172, 86,118,122, 51, 8, 45, 11,161,143,227,237,255,255,217,201, 25, 89,150, 17, - 69, 17,215, 55, 87,221,115,238,238,115,235,133,176,168,217,120, 56, 33,207,115,206,207,207, 73,211,156, 15, 62,248,136,209,112, -136,234, 58,251,178, 44, 41, 59,145, 96, 16, 71,123, 52,114,216,169,212,119,169, 93, 75, 5,157, 51, 64,215,102, 31, 71, 28,199, -241,222,141,149,231, 57,235,245, 26, 93,213, 76,134,103,168,241,136, 60,183, 17,200,147,201,132,108,183,227,230,230,102,239, 32, -169, 77,139, 27,132, 40,207,103,187, 94, 99, 90,129, 27,248,108,146,132,249, 98,129, 31, 90, 91,224,102,179, 33, 12, 34,164, 98, -127,143,203,178, 68,183,166,251, 60,192,122,187,193,193,102, 30,232,202, 78,150,234, 6, 76,107,211,214, 22,139,197,222, 81,227, - 58,118, 21, 98,176, 90,149,108,187,224,252,229,144,214, 84,188,255,228, 49, 85,153,242,250,252, 53,135, 71, 19,150,235,132, 48, - 12,237,218,147,160,227, 43,212, 22, 94, 37,133, 29, 34, 40,129, 48, 13,162, 53, 56, 3, 95,209,214, 5,158,132,198, 21,212,101, - 77, 35, 65,136, 26,163, 75,162, 40,222,123, 43,251, 23, 78,161, 91, 2, 9,186,177,248,206,166, 49, 8, 71,226,168,208, 70,210, - 9,133, 84, 13,202,113, 25,196, 19,134,195, 26, 81,165, 84, 89, 78,190,211,212,165,245,178,167,101, 67,214,184, 52, 38, 32, 73, -114,222, 44,109,228,156, 31, 4,196,241,136, 54, 84, 52,153,102, 24,133,140,143, 15,248,203,255,225,207,248,201,199, 31, 35,116, - 73,177,221,240,230,205, 5, 95,124,249, 53,166, 81,100,101, 73, 90, 88,203,128, 35, 34,170,164,100,177, 78,249,242,249, 51,136, - 34,190,254,234,123, 4,246, 80,166,213, 44,230,107, 98,215,165,200,118,164, 69,202,106,179, 70,136, 22,207,149, 52,117, 73, 16, - 28,112,116,124,202,225,198,240,234,106,141, 54, 14,147,113, 76,155,167, 12, 70,138,223,255,233,199,228,201, 53,241,116, 74,174, - 43, 94,189,126, 77,120, 32,121,246,242, 5,215,107,195,127,248,211, 63,197,212, 13,202,203, 81,170,160,105, 54, 8, 19, 19, 7, - 13, 63,252,248, 1,103,167, 51,126,249,213,119, 72,111, 0,174,199, 98,157,243,111,191,252,134, 63,250,241, 71,168,166, 70,148, -134,229,237, 45, 69, 85,115,189,220,144,234, 75,178,214,163,145, 21,219, 38,165,108, 93,132,114,105, 27,131, 43, 90,154, 74, 83, -234,138,217,100,140, 55, 24,146,214, 13,162,105,136,194, 1,121,237,224, 68, 7,196,227, 99,174, 23, 5,121,145,226,235,134,194, -148,252,211,207,254,157, 15, 31, 29,243,254,189,153,245, 99, 7,150, 92,151, 45, 82, 70,145,207, 71, 79, 31,227, 41,137,105, 52, -186,174,248,252,243,207, 41, 27, 88,165,165,221, 21, 54, 5, 15,142,103,124,252,244, 61,142, 70, 49, 65,224,178, 91, 39,108,119, - 59,202,162,162,117, 21,202,243,104,149, 67,101,160, 17, 14,142, 63, 96, 48,142, 57, 58, 53,120,241,152,233,169, 36,140,135,104, -233,114,239,189, 15,248,171,191,253, 7, 94,156, 95,242,241,239,253,152,224,213, 5,235, 93, 66,187, 77,153, 29, 13, 56, 61,125, - 96,213,233,158,195,147,135,239,177,218,108,246,185,201,117, 93,227,119, 12,114,173,237,135,109, 16, 89, 91, 75,149, 23,100, 59, -197,100, 52,102, 58, 30, 19, 6, 1,101, 85,113,113,117,133,116,188,110,141,145,238, 95,186,125, 39,222,219,107,250,177,247, 62, - 77,171, 59,156,149, 82, 4,158,111, 57,232, 89, 70,221, 88,110,123, 40, 4,218,215,160,236,193,216,227, 73,123,148, 43,221, 1, - 98,215, 30, 98, 79, 33,187,123, 0,247,135,112, 31,221,106, 15, 73,171,168,238,215, 2,105,154,162, 16,180,221,139,185,127, 33, -247,221, 99, 83,119,177,155,130,119, 52, 2,253,168,213,145, 22,138,227,123, 1,103,103,103,182,235,168,108,146,160, 29,249,218, - 34,128,110, 74, 32,239,116,117,214,218,230, 91, 79,117,107,104,104,105,141,192, 52,246,122,237,118, 59,116, 7,154, 42,171,140, -162,168,200,242,210,238,130,183, 9,121, 81, 96, 68,119, 40,210, 98,132,157, 58,105, 1,194,245,246,122,136, 56,142,237,181,169, - 27,154,110,205,208,143, 57,133, 16,172,215, 91,164,227, 17, 15, 7,184, 66,238, 67,119,226, 56,102, 58,157,114, 61,191,221,195, - 94, 60, 47,224,225,195,143,208, 90,243,229,151, 95,147,236,236,215, 58,158, 21, 7,234,238,192,114, 58,184, 71, 85,217,131, 73, -121, 46,161,136,169,139,162,139,250, 4,173,223,106, 30,238,122,173,251,233, 74,127,221,108,145,200,127,243,143,232,116, 23, 74, - 41,148,211,105, 47,186, 53, 80,255,227,110,164,174,101, 2, 68,251, 2,162, 40, 44, 98,183, 40, 10,124,207, 18, 15,227,208,103, - 56,156,144,231, 45,166,109,153, 29, 29,242,242,229, 75, 46, 47, 47,109, 99,214,235, 21,106, 77, 83, 87,124,242, 59,191,131,123, - 71,232,233,222, 81,194,219, 66,225, 7,123,237,131,157, 88,152,253,247,222, 52, 13,207,159, 63,223,187, 69,190,251,254,219,189, -254, 3,105,139,212, 40,138,172,165,115, 52,221, 11, 63,119,187, 29,243,249,156, 31,252,224, 7,172, 54, 75,235, 40, 16, 14, 89, - 97,221, 51,171,249,130,213,102,203,118,187,229,240,248,132,233,116,202,112, 56,100,179,217,176, 93,239,136, 99,123,184, 71, 81, -132, 68,218,160, 33,215,130,186,182,117,137,104,225,176, 67, 21, 15,226,152,197,162, 97,177, 92, 90,235,169,239,241,245,183,191, - 33, 12, 67, 30,222,187,207,151, 95,125,205,131, 7, 15,120,244,248, 9,195,209,138,151, 47, 95, 98,132,221,227, 23, 69,197,120, -114, 64, 24, 90, 79,252,104, 56,166,105, 91,140,177, 24,245, 77,178, 35, 24, 13, 17, 74,226, 56, 62,187, 52, 97, 20,249, 22, 47, -189,179, 66,191,166,149,164, 89, 70, 16, 14,201, 43,171,168,175, 26,141,235,249, 4,209,128,162,212, 4,142, 75,224, 8,210,221, -146,191,255,155,191,102,249,195,223,229,119, 62,249,132,223,255,244, 71,124,247,242, 2,179, 92,227,121, 86, 72,171,198, 10,199, -243,160,238,162,130, 90, 65,232,186, 52,173, 70,215, 6,209,180, 56, 82, 52, 56,178, 97, 50, 10,144,202,101,183,109,240, 36,180, - 85,205, 46, 45, 40,218, 20,132,229, 56,251,238,218,190, 56,149,195, 32, 12,217,238,106,164,112, 58, 16,191,131,233,110,116, 91, - 55, 56,173,229,213,214, 24,202,198,166, 27,149, 89, 69,158, 25,138,212,142, 8,175, 23, 43, 94, 94, 44, 89,167, 37,155, 42, 39, -105,236,232,173,172,237,141,167,117, 8,221,144,229,122,142, 43,106,210,188,102,189, 77,208,249,150,237,252,138,202,180, 60,121, -255, 99,118,133, 97,123,157,112,118,118, 66,170,119,252,252,103,191,224,139,207,158,145,164, 53, 21,134, 2, 65,229,184, 28, 30, - 30, 97,234,134, 48,142,104,145,252,243,207,126,201,225,225, 33,227,201,136,193,208,229, 96, 54, 34,244, 37, 85,153,217,244,173, -211, 83,170, 47,158, 17,250,129, 85, 13,235, 6,215, 85,128,193, 27, 4, 76,143, 30, 80, 54,134,213,237,142, 87,151,111, 8,199, - 67, 94,157, 95,113,117,125,193,167, 63,249, 3, 2, 71, 49, 95,239,152, 14, 39, 84,157, 50,255,232,108,198,240,226,146,243,155, - 27,210, 34, 37,105, 96,114,112,196, 38,201,249,155,191,255, 71, 98, 79, 48,116, 13,145, 43,184,189,185,164,168, 42,146, 82, 51, - 79,114, 10, 17, 80,234, 26, 48, 72,209, 80,214, 53,210,115, 40,203, 10,135, 22, 79, 24, 38,131,128,129, 47,168,243,138,192,147, - 20,233, 6,129,102, 54,157,112,118,118, 70, 89, 87,248,190,111,253,158,178,229,223,127,246,247, 36,217,152, 36,215, 92, 94,221, - 82,206, 52, 39,103,247,153, 29,133, 28,156,220,135,142, 21,173,104, 9, 28,193,111,190,250, 53,211,112,192,217,125,219,193,122, -162, 33,144, 16, 58, 32,218, 26, 87,133,132,113, 64,221, 54, 52, 74,113,120,239, 30,243,237,134,162,110, 89,111, 11,182,105, 73, - 28,140,152, 76, 71,132,227, 17, 69, 3,173, 19, 50, 59,125,192, 38,205,248,167,191,254, 7,126,241,249,175,249,159,255,243,255, -194,235,203, 43,142,206, 30,162,194, 45, 85,221,240,242,213, 5,158,183,216,191, 44,214,235, 13,105,150, 82,119, 12,109,215,117, -241, 28,151,178,172, 45,234, 83,216, 67,183,172,114,174,230, 57,174,119,207,166,157, 37, 41,121,150,145,102, 57, 23, 87, 55, 76, - 14,102,148,181,166,110, 12,131, 48,178, 99, 96,165,144,157,167,250, 46,199,187,247,117,191, 61,104,236, 7,213,237, 58,189,162, - 40,246,112, 24, 67, 75, 86,218,255,150,119, 70,180,101, 89,119, 35,212, 6,173,203,253, 11,252,174,226,189, 63,152,123,165,123, -223,169,245, 29,125,150,101,111,247,234,174,139,232, 10, 0,173, 53, 72, 65,146,165,251,145,116, 63, 78,237,189,225, 61,137,204, -115, 3,234, 70,243,252,217, 11,194, 48,228,244,222, 25, 71,174,195, 98,177,176,193, 49,213,219,221,188,105, 91,100, 87,220, 27, - 93,211, 52,238,158,154,150, 36,137, 5,178,116,123,198,126,239,219,123,228,221, 40,166, 46,109,183, 84,150, 53, 81, 28, 99,234, - 10,218,134, 97,236, 83, 23, 18,191, 27,189,214,141,161,106, 44, 62,212,247,125,116, 83,161, 4,180, 70,211,232,178,251,115, 21, - 13,130,198, 72,162,233, 24,146,148, 86,192,124,101,161, 70,105,154,162, 92,143,249,179,239,105,133,228,236,236,164, 91, 75,148, - 29, 59, 62,239, 48,182, 3,214,171, 77,103,227, 50,150,201,109,172,200, 81,152,134,186,176, 95,215,104, 77, 89,229,228,185, 77, -151,147,128,215,169,224,235, 90,163,132,132,214, 22, 86,142,114,104,133,176,107,149, 34, 39,148,234,206, 65,248, 86, 40,103, 29, - 19,182,248, 81,142, 64,235,182,187, 62, 37,131, 48,220,135,167, 36,187, 13,131,193, 8, 33, 20, 69,154,117, 40,212,102,255,140, - 73, 41,121,125,241,134,143,222,255,128,201,100,200,122,189,196, 75, 10, 26, 99, 88, 46,215,220,191,127,159,215,226,205, 91,144, - 81, 87,112, 24, 90, 92,229,240,171, 95,253,178, 99, 87,216,191,143,211,173,112,250, 80, 33,209, 89, 32,251,136,214, 44,203,108, -130, 96,231, 10,169,202,154,193, 96,192,147, 39, 79, 56,152,206, 48,109, 23,110, 82,151, 86,108,102, 90, 14,103,199, 76, 71, 35, -118,157,184,116, 60, 14,120,253,250, 37, 79,159, 62, 37,205,189,125,166, 65, 16,198,156,158,158,162, 77,203,104,185,100,185,222, -216, 20,180,205, 6,229,250, 93,176, 79, 31, 25,235,117,206, 20,217, 21,159, 53,201,118, 77,186, 75, 56, 60,154, 50, 28, 14, 72, -146,132,221,118,205,108, 54,165, 44, 75,206,207,207,137,162,136, 36,205, 24,142,198, 40,223,231,242,251, 23,124,243,237,247, 60, -122,244,136,199, 79, 30,130,146, 36,187, 29,203,245,154,172,200, 59,251, 89,201,114,185,198,247,108,151, 28, 15, 71,248, 94,136, - 40, 11,148,146, 36, 89,138,220,231, 22, 84,108,147, 29,117,165,153, 29,157,160,148, 99, 45,125,209,136,177, 25,227, 71,161,197, -238,214, 6,148,220, 79,127,243, 52, 33,142, 6, 28, 78, 99,110,230, 11,130,151,175,248,143,255,233, 47,184, 94,172,241, 93, 69, - 28,250,152,166, 70, 73, 59,197,106,140, 70, 74, 69,211,193,172, 52, 30,194, 52,214,102, 46,156, 6, 63,144, 20,155, 37,126, 24, - 83,166, 27,240, 67,148,113,208,218,193,236, 26, 74, 81,227, 59, 46,178,169,112, 26,144,110, 68,178, 91, 33,113,172,170,177, 74, - 9,130, 1,208,237,252, 76, 69,224,121, 44,214, 75,210,178, 32, 30, 58, 52, 78,192, 23,175, 94,242,243,127,253,154, 40,152, 90, -113, 65,150,225, 42,143,162, 46, 56, 59,123,143,198, 13,249,197, 23,223,147, 21, 9,131,193,148,178,110,208,109,137,240, 28,118, - 85,195,213,162,102, 16, 44, 25, 6,146, 77,102, 56, 60, 58,197, 59,112,249,254,122, 69,146,166,252,211, 47, 94,115,187,216,242, -242,213,156,141,246,169,132, 13, 69,240,194, 8, 93,150,164, 73,142, 18, 45,241,233, 17,227,201,144, 7,239, 61, 38, 12,134,100, -233,142,229,252, 10, 33, 37, 87,183, 87,172, 55, 11,158,189,254,158,179,155, 91,124,223, 69,175, 19,148, 14,236,152,202, 64,161, - 91,146,186, 33, 24,133,168, 86,163, 11,193,235,151,115,164,115,205,231, 95,156,227, 5, 17, 95,124,125,139,104, 13,178,213,136, -118,142,244, 15,184, 93, 23, 44,147, 10, 21,141, 89, 22, 21,248, 33, 3,119, 76,211,180,236,178, 29,199,227, 35,206,223,188,225, - 96,228, 51, 10, 92,187,154,208, 13, 85,235,224,199,135, 92,190,185,165, 72, 26, 68,171, 8,156, 0,207, 17, 24, 9,193,192, 71, - 86, 57,211, 64,241,187, 15,143,152, 70, 14,179,135,167,120,174,232,130, 21,126,192,244,248,152,162,206,137,188, 6, 73,197,209, -100,192,179,103,223, 81,215, 53, 79,158,126, 68,154, 38, 60,187,218,208, 6, 99, 14, 85, 72, 93,151,120,170,165, 44, 54,196, 65, -136,163, 4,113, 32,248,147, 63,252,148,237,118,139,235, 5, 76,198, 67, 66,106,226,110,111, 38, 28,151,151,175,206,113,118, 17, -143,223,255,128,167,135, 71,172,118, 41,159, 62,253, 17,255,248,175,255, 70, 89, 37,184,222,128,172,210,168,170, 38,136, 7,108, - 54, 43,238, 63,124,196,231,223,124,203,127,253,151,159,243,205,119,207, 9,226, 1, 47,222, 92,243,171, 47,191,102, 48, 28,211, - 74,201,114,177, 70,107,205,189,233, 12,223,247,153, 95,223,176, 43, 50,178,178, 64,121, 46, 65, 20, 82,100, 37,201,198,218, 96, -102,147, 41,113, 28,242,234,226, 21, 15, 30,221, 99, 52, 26, 49, 95,205,145, 75, 43,168,170,203,134,249,237,154,178,129, 77, 86, -146,215, 26, 39, 8, 17,202, 69,155, 22,229, 90, 33,149,193, 10,191,178, 34, 7, 1, 65, 20,226, 5, 62,202,237, 2, 84, 60,213, -229, 57, 11,134,195, 49,158, 99, 61,228,187, 77,194,236,232,128,166,170,201,116,141, 84,194,162,121,145, 72,233, 80,151, 6, 41, - 60, 59,170,212, 37,186,178,130, 44,221, 26,242,202,122,174,123, 27, 91,191,151,188, 11, 53,233, 71,249,181, 99,145,183,123,148, -168,239,208,180, 45,215,183,139,125,167,171,155, 22, 87, 90,221, 65, 85,244,177,178, 29,133,174,210,140,167, 7, 52, 77,195,171, -215,111,152, 30,140,121,252,248, 49,198, 24,174, 47, 47, 73,211,148,164,169,200,179, 12,186, 3,175,204, 83, 48, 26, 93, 21,236, -186, 29,171,160,165,200, 83,242, 44,217, 31, 58,227,209,192, 10, 16,165, 96, 50,138,217,110, 27, 84,219,224,180, 53,195,192, 65, -149, 21,109,153, 49, 12,148, 85, 5,107, 67, 86,149,123, 81, 83, 57,191, 97,187,222, 16,135, 30, 85,177, 35,119, 90,226, 56, 36, - 30, 14,184,158,207,169, 27,171,254,149, 82,112,116,120,132,151,231,108,147, 29, 7, 39,179,125, 23,141, 16,108, 54, 27, 46, 46, - 46,241, 28,135, 36, 43, 88,175,215,140, 70, 19, 78, 79, 79, 57,156,206,248,246,219,111, 89,173, 86,212,165,125,105,171,182,133, -218,170,214,195, 56, 38,207, 51, 26,211, 16,250, 62,117, 55,185,104,218, 22,163, 27,116, 11,161, 31, 81, 85,154, 52,201,112, 39, - 19, 74,163, 41,116, 13,194,218,157,108, 7,175,208,157,210,222, 78,125,172, 14,105, 56,138,201,118, 9, 69,247,231, 41,165,216, -236, 50,178,226,130,167, 79, 3,132,116, 17,142,135,105, 75,106,211, 16,249,118,244,190,221,174,241, 67, 15, 47,140,184,185,189, -101,185,217, 50,154, 30, 16,197, 99,164,227,241,250,249, 27,132,104,185,154,221,240,248,225, 19,110,111,111,185,190,185,196,241, - 60,164, 2, 63,244, 45, 69,111, 60,164, 46, 45,118,186,105, 26,234,110, 74,180,199,197,150,214,105, 97,106,109, 93, 12, 93, 33, -153, 39, 41,173, 20, 54,106, 52, 12,113, 61,135,211,179, 19,142, 14,102, 76,167, 83,171, 27, 48, 13, 69,154, 17, 13, 7, 44, 87, - 54,205,110, 48,140,104, 76,141,235, 59,156, 95,188,228,163,143, 62,226,234,234,134,197,106,137, 49,154,213,106,197, 98,181,166, -174, 45,108, 12,160, 54,134,208,181,224, 49,175, 83,217,235, 42,227,250,114,213, 9,254, 20,155,205,138,241,104, 72, 89, 8,162, -192,225,246,230,130,143, 63,254,136,198,104, 46,175, 46,152, 78,167,123, 29,192,116,118,200,124,185,226,201,123, 31, 50,156,205, -240,135, 67,222, 92, 93,179, 78,108,248, 16, 29, 50, 88, 8,193,229,197, 57,163,145, 69,224,186,158,195,120, 52,177, 65, 63,195, - 17,187, 52, 39,171, 10,138,194, 22,183, 85,158, 50, 95,174,121,112,239, 62,109, 91, 1,246,231, 71,195, 33,171,229,150, 86,216, - 12,244,211, 35,107,245,107,154,134,114,183,193, 81,138,217,209, 9,219,245,146, 55,215,107,142, 14,103,252,250,171,231,180, 50, -226,195, 15, 63,100,113,187,164, 78, 51,178, 52, 69, 87, 57,174,239,161, 58,254, 64,223,116, 24,225,160, 92, 15, 33, 20, 78, 93, -215, 44, 23,183,124,246,217,231,252,254,143,127,194,209,193,140,205, 46,199, 40,143,172,104, 64, 10, 86,187, 13,155,205, 14, 87, - 57,140, 61, 15,225, 4,104, 19,226, 72,137,212, 26, 79,215, 56,213, 18, 95, 41,102,199,167, 28, 30, 60,100, 16,186,124,251,205, -191,210,228, 27,156,118, 66, 93,217, 80, 22, 93, 27,136, 20, 7,179, 99, 30,191, 63, 68, 9, 67, 90, 20,140,166, 39,100,181,224, - 98,177,102,243, 34,167,170, 74,116, 99,200,155,138, 48,240, 48, 66,112,125,155, 83,166,151, 56,166,224,234,245, 51, 92,255, 59, -206,151, 91,140, 12,217,108, 51, 10,109,104,140, 67, 94,106, 92, 47, 66, 5,118, 20,155,215, 26,207,117, 49, 85,133,163, 4,101, -190, 33,243, 91,214,171, 91,138,180,160, 42,114,148,212, 92, 92,164,132,161,224, 96, 54,224, 71, 63,250, 33, 79,223,255,152,255, -231,255,253, 39,226,109,193,182, 44, 40,243, 22,165, 42, 42, 93,243,122,126,195,213,188,194, 20,154,166,108, 41, 10,248,236,179, -111, 49,140,240,131, 41,127,255,143,159,227, 40,137,106, 53,179,131, 9,121,173,208,173,228,197,155, 57,207,206, 47,185, 93,239, - 88,237, 18, 60,223,195, 17, 14, 85,186, 99,185, 84, 44,167, 1,142, 24, 80,150,146,155,197,194,230,253,186, 33,171,221,134,155, -229,142, 86,184, 56,173,131,174, 26, 50, 93,209, 6,138,204, 84,156, 12, 67, 70,113,192,163,123,103,252,224,233,125, 84,147,161, -171, 12,199,149,100, 85, 73,177,187, 5, 39,224,250,205, 75, 94,188,122, 67, 85,150,188,124,245,138,171,139,107,132,242,216,166, - 5,219,172,226,215, 95,125,199,199,159,252,144, 40,116,193, 88,107, 83,154,172,105,180,245,205,222, 63,153,113, 56, 25, 88,250, -149,146,232, 93, 70, 91,105, 20,144,100, 37, 6,152,175, 55,168,235, 5, 87,155,130,180,168,216,125,245,156,111,191,123,198,248, - 96,198,171, 87,175,104,219,134,131,131, 3, 14, 15, 15, 25, 14,135,252,237,127,253, 71,110,150, 27, 54,105,202,189,251,143,153, - 28, 30,114,126,113,133,114,124,234, 6,214,171, 21,155,205,206,238,248, 54,107, 91,129,111,182, 54,221, 79,128,169,107,132,177, -221,173, 23, 15,247,118,174, 69,145, 49, 30,143,152, 76, 38,132,161, 79, 89,100,212,133, 85, 14, 87,169, 85,194, 74, 71,253,150, - 39,220, 66,186,251,113,173, 61, 0,101,183,211,210,123,175,118,111, 69, 3,105,213,239, 13, 8, 90, 75,153,114, 3, 90,167,161, -109, 12,147,201,152,162,169, 59, 31,118, 65, 93,212,152, 70,162,132,131,231,185, 8,217, 32, 28,241,223, 88,157,164,144,251, 49, -107, 15,145,233, 59,236,254,107,237, 56,254, 93, 1,156,238,213,215,210, 6,152,216, 12, 84,241,206,200,119, 31,243, 42, 36,126, - 24,144,117,118,190, 48,180, 93,196,103,159,125,198,241,225, 33,143, 31, 63, 38,207, 18, 54,155, 13,203,229,156, 44,203,144,152, - 78,143, 97, 57,248, 74, 56,239, 80,213,250,241,254,221, 31, 86, 17, 47,144,227,225,158,235,221, 67,102,148, 18, 32, 90, 28,215, -118,108, 73,158,219,235, 34,172,194,184,105,106,171, 97, 41,115, 46,182, 91,188, 32,166, 65,161, 13, 36, 69,137,185,157, 19,120, - 14,219, 36,177, 35,227, 56,196,116, 58, 21,207,243, 64,138, 61,179,220,118,170,111,201,102, 55, 55, 55,164, 91, 43,144, 20, 45, -108,211,148,131,225, 8,213, 33,122,163, 48, 68, 10,129,219, 21, 71,189,178,223,158, 53, 93, 84,168,120,167,233,254, 22, 0, 0, - 32, 0, 73, 68, 65, 84,123, 79, 28,199, 67, 58,150, 77, 96,176,193, 34,109, 99, 39, 40,166,125, 27,189, 42,165, 68, 40,137, 16, - 22, 10,212, 39,197,217,200, 83, 9,210, 58, 83, 22,171, 53,143, 30,220,239, 38, 81, 18,207, 15,145,210,222,167,198, 85,182,251, -174, 12,187, 52,101,179,221,145, 23, 37,142,176,191,222,238,152, 27, 86,171, 13, 81, 20,241,135,127,248, 71,204,231, 55,236,178, - 29, 45,141,229, 17, 40,135, 42, 47,217,237, 82,170,170,176,236,246, 32,124,107,127,236,180, 0, 22,170,228,116,107, 26,111, 15, - 98,234, 39, 83, 0,147,201,132,205,102,195,102,179,225,197,139, 23,108,183,219,189,176, 82,121,238,158,104,215, 74,193, 96, 48, - 64,185, 14,211,233,148,155,155, 27,130,192, 34,154,139,188,162,149,173,157,160,108, 82,202,114,135,116,173, 39,254,224, 96, 98, - 63,127,101,222, 89, 44, 3,182,219,150,172, 43, 34,163, 48,192,113, 36,211,113, 12, 24, 62,254,228, 67,154, 70, 51, 28,198,164, -105, 72, 93,215,108,182, 27,232, 82, 25,165,112, 40,234,138,197,114,205, 31,255,241, 31,115,118,122,202,114, 57,231,252,229, 43, -202, 42,167,200,242,125, 24, 81, 85,230, 8, 36, 39,135, 51, 30, 63,126, 15,215, 15, 58, 55,193, 22, 47,183, 57, 14,101, 94, 32, - 91, 65, 16,198,184, 94,240, 78,222,132,105,176, 69,157,177,235,176, 74,215,150,225,191, 71, 75,219,231,194, 15, 99,140,174,104, -144, 20,101,197,243,231, 47, 56,158, 29,226, 74,197,241,209,140,157,235, 96,140,166,174, 5, 8, 67,173,237, 26,160,255,204, 9, - 20, 8,112, 14, 38, 51, 60, 47,160,174, 52, 45, 14,227,233, 17,105, 49,231,197,171, 75,174,111, 55, 44, 54, 59,146, 92,163,113, - 57,152,157, 16, 14, 39, 8,169, 48, 72, 66,213,242, 59,167, 49,179,129, 36,140, 36,227,209,136,195,131,251,140,226, 9,155,245, -156,255,227,187,127,192, 75,174,137, 43,133,106, 52, 31,159, 29,242,240, 63, 29, 19, 15,103,104, 83,131,231,112,181, 94,163,165, -160,212, 59,178, 82,227,184, 13,129, 39,104, 58,126,174, 82,118,164, 90,229, 59,190,123,126,133,103, 42,198,195,128, 38,243,240, - 91, 7, 63,156, 80, 9,129, 44, 53,174, 2,217, 42, 12, 10, 33, 5,170,251,139, 23, 69, 74, 52, 30, 34, 84, 75,219,148,148,137, -129,200,165, 78,215,156,157, 28,146,236, 74,158, 60,250,128, 50,223,241,233,167, 31,243,224,225, 49, 71, 39, 71, 44, 87, 41, 97, -216, 16,198,150,223,158,230, 37, 80,176,201,214,124,251,252, 25, 58,223,113, 56, 56, 68, 24, 15, 63,154,242,245, 23, 95, 51, 24, - 31,114,124,239, 49,151,111, 46, 8, 60, 73,165, 5,155,164,166,172, 21,121, 89,242,205,119, 47,217,229, 37,135, 39, 15, 16,222, -132, 44,213, 12,194,136,204,215, 8, 5,187, 52,177, 93, 73,145,242,253,243,231,252,224,135, 63, 38, 30,133,204,207,111,185,184, - 93, 34, 84, 72,173, 5, 45,146,178,177, 36, 57,229,180, 48,140,121,121,126,201,207,127,249, 5,227, 40, 96,224, 54,152, 58, 39, -240,177, 36,186, 60, 71,182,130,247, 30, 61,230,252,252,146,127,251,247, 95,162,181,230,234,234,138, 87, 47, 94,160,117,205,118, -187,197,115,108, 62,250,147, 71,143,200,211,141, 69,223, 86, 53, 70,215,152,238,229, 77,215,189,150,105,197,208,183,118, 66,164, -131,116, 3,166,135,167,220, 60,127,201,151,191,249,158,229,102, 71, 81,105,242,218,112,118,239, 30, 79,223,255,144,239,158,191, - 96,189,222,112, 59, 95,243,234,205, 5,215,215,215,160, 28,254,236,207,255, 35, 39, 15, 30,241, 55,127,251,143,100,186,193, 13, - 6, 86,132, 36, 29,210, 46,220, 2, 32,217,238, 88, 44, 22,232,166, 98,232,142,246, 99,113, 71, 56, 40,169,112,149,139, 68, 80, - 84, 21, 69,145,115, 52, 57,220,139,220,202,178,196,104, 67,235,181,180,104, 4,154, 58,207,209, 85, 70, 83, 22, 56,248,136,214, -177,239,107, 3,190,231, 80, 21,249, 91, 15,120,107,197,132,142,124,155, 85,126,117,123,251,150, 85,239, 56,180,141,245,144, 42, -207, 42,142, 21,206,254, 96,110, 26, 27, 15, 41,187,151,166, 16,109,183,239,238,145,172,150,123, 47, 91, 27,252,209,139,226,250, - 0,149, 30, 52,211,171,219,109,215,254,238,161,222,139,120,196,254, 94,189,141,250,188,187, 75,239,255,223,124, 62,223, 11,254, -194, 48, 68, 72, 75, 47, 91, 44, 22,180,109,203,217,189, 19,235,224, 80, 71,182,235,222, 39,145,217,113,121,219,176, 23,248,245, - 2,192,126,100, 95,150,229, 59, 96,150, 94, 57,223,123,236,235,186,102,113,123, 77, 86, 20,156,221,127,192,139, 23,175,208,221, -232, 62,112, 36, 7,147,169,181, 88,102, 5, 65, 24,179, 92, 93, 82, 85, 26,210,140,178,210, 20, 69, 6,109,203,116,116, 98, 29, - 4,117, 97,119,198,162,165,174,117, 23,162, 98,175,245, 96, 48,176, 34,199,174, 83,150, 82,178, 92,174, 49,192,239,124,252, 49, - 79,158, 60,225,235,175,191,182,251, 99,218,253,216,119, 56, 30,189,227,128, 16, 66, 32,127,107, 55,222,236,247,230, 98,191, 83, -119,164,178, 58,139,194, 10,188,154,110,175,222,235, 48, 92,229,236, 69, 87,119, 45,146,173,177, 99,241, 74,215,172, 86, 11,102, -211, 9,141,169,113,218,183, 73,123,189, 29, 49, 43, 44,112,166,105, 52,121,158,177,219,109,173,109,184,179,191, 9,209,242,205, -111,126, 67, 16,249, 60,126,252,136,207, 62,123,195, 23, 95,127, 65, 60, 8,247, 88,225,193,112,188, 23, 86, 30, 70, 49,173, 35, -201,187,207,138,148,210,230,204, 55, 13,166,177,154, 1, 37,228,219,196, 63, 99, 24, 4, 33,203,229,114,175,111, 24, 15,134, 86, - 64,214,105, 65,180,214,123, 39, 72, 99, 12,209,112, 64, 24,134,236,210,100,175, 93,233,245, 31,219,237,150,180, 40,169, 43,141, -214, 16,199, 49, 94, 24,216,232,213,195,195,142, 87,176,235,194,132, 66, 30, 62,120,192,120, 60,102,177, 88,208, 84, 37,151, 87, -111,240, 93, 7,223,115, 45,147,126,183,101,181,152, 19,199, 49, 71, 71, 39,140,199, 99,182,155,180,211, 60, 84,236,118, 41, 32, -120,245,234, 53,129, 23,112,112,112,200,209,193,140,229,114, 73,178,219,216,231,215,177,185, 7,203,229,154,155,155, 27,110,110, -110,152,204, 14,249,224,131, 15,120,252,240, 62, 73, 86, 16, 5, 33,243,155, 43,118,117, 13,141,233, 52, 29, 30,109,219, 48, 24, -142, 45,195, 64,215, 52,101,137,235,137,174,200,201,217,166,137,125, 22, 29,133, 40, 58, 90, 33,206,158,219,191, 92,173,120,246, -242, 5,142,144, 28, 30, 30,226, 56, 30, 69,241, 86,183,131, 48, 86, 17, 47, 68,231,150,176,107, 21,231,197,247,207, 9,188,128, - 63,255,243,191, 96,122,112, 76, 94, 26,214, 73,193,191,254,226,215,228, 21, 68,241,152,164,104,104,165, 67,157, 20,220,174,207, -169,180, 33,140, 7,204, 2,248,209,159,253, 25, 79,206, 66, 28,213,197, 77,210,224,170, 20,124, 77,185,131,100,185,192,123,239, - 1, 45, 46,145,242,192,149, 20,219, 53,155,100,129, 51, 24,224,133, 17,249,170,228,122,126,197, 38, 45,217,110,182, 52,186, 64, -119,149,111,145, 87, 16, 4,118,228, 98,140,197, 10, 54,138, 86,186, 24, 35, 41, 27,131,240, 20,158, 31,226,248, 18, 99, 36,141, - 78,236, 62,191,170, 59, 96,133,228,241,163,123, 4,142,224,217,247, 95, 51,142,125,254,228, 15,126,204, 7, 31, 62,161, 69,243, - 15,127,251, 55,108, 86,183,124,241,171,239, 17,166,100, 50,250, 19,171,148,204, 50,162,200,227,240,104,204,112,236,146,229, 53, -101,149,208, 10,193,124,177, 67, 52, 21,171,155, 75, 54,235, 20,229,197,228,149, 32, 91,110,121, 90, 75,198, 7,103,136,214,170, - 17,165, 4, 95, 6, 72,223,144,119,187,148, 86,216, 42, 49, 10, 67,166,211,136,192, 25, 67, 83, 80,213, 53, 77,211, 82,234, 6, - 45, 29, 86, 69, 65,236, 6,228,218,102,221,123,190, 75,154,215, 56,142,103,171,125, 12,131,104, 0, 66,113,179,216,242,111,191, -250,146,147,163, 67,126,247,189,123, 12, 3,143,109,178,198, 43, 44,114,179,212, 53, 15,206, 78,249,193,239,254,136,255,242, 87, -127,199,124,185, 98, 16, 90,129,205,193,100,202,193,244, 16,218,134,219,155, 5,143, 31, 62,178,144,135,197,154,192,183,123,204, - 90,107, 36,214,202,166,148, 75,217,150, 44,118, 41,126, 56,178,106,244,151,111, 40,141, 64, 75,143, 93,182,225,235,111,159,179, -218,101, 4, 81,200,131,247,222, 71, 75,129,242, 67,132,155,115,117,117,193,250,249,134, 93, 2,255,233, 47,126,202,175,191,252, - 13,203,205, 22, 39, 8,169,155,150,221,122, 13,210, 65,111,211,125, 74,218,118,187,165, 46,173,167, 91, 57,150,118,101,132,253, - 48,248,174,143,196,134,112,216,103, 71, 18, 14, 98,132, 84,251, 48,133, 60, 75, 8, 29, 15,237,150, 72,209, 50,138, 3,194,214, -179, 9,129,190, 66,185,142,141,116,212, 26, 79,194,112, 56,178,241,153, 61, 61,174,126,235,229, 77,146,132, 44,203, 88,109, 55, -152,186,194,119, 3,124,229,208,118,123,249,216,141, 49, 77,203,102,179, 33, 41,115,146, 44,163,174, 53, 82,218, 23,178, 18,150, - 17, 80, 20,197,190, 83,175,107, 75, 46,235,199,230,253, 46,188, 44,203,189,210,189, 23,171,134, 97,216,253, 92,181, 87,189,247, -170,234, 94,157,252,219,135,253,111,171,236,251,195,191,231,202,207,231,115,164,178,254,226,182,243,119, 95, 92,158,219,113,172, -146,221,117,118,187, 3,206, 30, 98,129, 23, 90,245,123, 39,220,139, 58, 79,113,191, 42,232,109, 71,253, 72,183,215, 9,244,160, - 29,207,145, 24,173, 57,152, 88, 33, 85,216,125,214,243, 60, 33, 81, 25, 97, 24,147,236, 54, 68,113,140,114,125,178,188, 34,201, -106,110, 87, 59,123,248,123, 62,190, 31,162,181, 33, 73, 18, 46, 47,175, 1,187, 3, 54,173, 61, 72, 44, 83,220, 39, 73, 50,148, -107,157, 10,147,201, 4,223,119,169, 43,195,243,231,207,239,176,198, 83, 92, 41,137, 67,235,215,239, 11,160,166, 47,136, 16, 56, -242,237, 1,219,116,236,248, 30,204,211,139, 27,251, 98,243,110, 49,117,183,232,234,175, 71,191,191,166,187, 39,109,247,243,189, - 37, 44, 73, 18,134,113, 72, 24, 88,140,172, 20,173, 21, 70, 26, 77, 20, 14,152,175,223,236, 97, 64,187,237,150, 42, 47,172, 50, -189, 3,203, 8, 33,120,254,236, 37,163,209,136,135, 15, 31,179, 77, 19, 94,189,122,129,214, 13,163,113, 76,178,181,221,100, 85, -148,150,158, 87,151, 52, 13,132,157, 83,196,166,211, 25, 76,103,137,147, 82,226, 74,181,239,230,219,142, 79,144,231,185,213, 93, -117, 40,227, 32, 8,246, 57, 3,142,239, 89,191,119,154,226, 71,214, 90,122,125,123,195,217,217, 25,201, 46,229,234,234, 6, 37, - 93, 78, 79, 79,185,184,184,102,179,190,193,113, 2, 38,221, 52,207,241,189,189, 3,197,126, 6,160,174,173,150,235,252,252, 21, -174, 84, 32, 12, 81,224,243,248,201, 35,102,211,201, 94,225,190,236, 48,205, 74, 41, 6, 81,204,252,122,137, 68, 48, 28, 12, 56, - 60, 60,100,189, 73,248,242,235,223,176, 92,174,249,225,239,126,194, 79,126,252,123, 68, 81,196,237,141,213,150,140,134, 49, 97, - 24,242,248,209, 35,150, 43,139,146,189,124,243, 18, 26,205,251,239,127,200,120,122,192,131,211, 19, 98,199, 97, 29, 71,220,220, -220,176,221, 38, 76,199, 19, 60, 63,216, 91,107,109,164,183,229,117,184,174,157,208, 41,209,176,205,115, 59, 45,236, 33, 72,157, -224,114, 60, 30,163,181,182,168,227, 40,178, 26,158,222,162, 43, 37,194,233,211, 6,251,116, 64,246,207,149, 83, 21, 53,131,192, - 82,226,242,194, 30,232, 69, 45, 48, 34,192,141, 92,118,133,166, 52, 18,122,159,172, 1, 47,176,138,226, 97,212,210, 82,225, 72, -143, 70,231,212, 70, 83,149, 91, 28, 21,224, 40,159,193, 16, 46,111,118, 44, 54,134,100, 87,178,221, 25, 16, 62,121,163,217, 21, - 21,142,204,248,230,219,151,220,172, 82,214,155,148,218, 8,116, 43, 25,132, 3, 90,229, 17, 68,113,231,129, 7,225, 58,168, 64, -209,212, 13,137, 78, 49,186, 6, 13,110, 16,224, 75, 23,225, 52,184,194,161,109,149,197,110,118,120,203, 44,217,177,222, 46, 57, -220, 4,252,193,127,248, 19,142,166, 33,129,175, 40,179, 45,223,126,245,133, 5, 4,100, 5,174, 19,113,114,124, 64, 83,185, 36, -107,205, 50,206,109, 36,172,177, 80,150, 48, 26,224,250,130,188,240, 73,179, 53,207, 94,172,112,148, 65, 86,176,219,100,156,222, -159,114,239,225, 7, 20,165, 38,203, 45,133,171, 42, 43,124,215,161,166, 65,121,146, 97, 16, 34,242, 2,183,133,154, 45,117,221, - 80,154, 45,145,119,134, 51,244,201,146,156,186,213, 72,199,101, 60, 58,225, 73, 52,228,106,177,197,159, 38,108,202,138, 10,112, -148,160, 21, 6, 67,131, 48, 54,216, 34,165,101,183, 92, 83, 20, 13,111,202,132,159,255,234, 55,120,142,228,241,241,144,195,209, -144,245,226, 13,147,193, 0,148,160,200, 83, 30, 63,122,196, 79,255,240,143,249,255,254,234,175,201,139, 2,199,139,240,252,152, -123,247, 30,242,213, 23,191,102, 60, 24,179, 94, 37,136,214, 16,197, 35, 76,163,169,117,133, 49, 22, 92,161,235, 22, 90,137,242, - 6,220,110,175,137,133,207,124,149,242,252,205, 45,175, 47,111, 8,135, 99,140,116, 57,188,247,128,184,110, 88,174,183,188,190, - 90,112,177,248, 25,203, 93, 70,105, 4, 89, 13,171, 4,194, 0,146,172,226,235,175,191,197, 72,133,114,125,138,178, 38, 26, 12, -240, 92,151,245, 98,249,142, 29,203,116, 2, 30, 87,217,157, 93, 31,123, 25,248, 1,109, 99, 95,178,111,243,152,173, 18,186,197, -128,177, 54, 38,207,243,240, 93,193,104, 60,230,254,217,161, 85,205,155,154,186,110, 40,202,146,178,172,168, 76,131,239, 74,102, - 93,242, 91, 89,105,242,188,232,172, 65,182,227,206,210,130,237,110,219,253, 57,174,245,115,183, 45,181,174,200, 43,129, 83, 58, - 32, 33, 43,114,146, 34, 35,201,114,154,214,224, 57, 62, 82,216,226,161, 63,132, 29, 99, 25, 15,189,160,170, 63,212,239, 98, 71, -239, 90,161,246, 94,241,238, 48,191,203,224,238, 15,239,254,215,191, 29,235,218, 95,219,143, 83,251,235,105,241,154,134,210,216, -162,220,104,219, 65,187,202,170,199,107,109,129, 42,162,181, 71,154,233,199,177,157,184, 47,138, 6,214,195, 91,149,180, 6,219, -145,100,102, 47,244,203,187, 34,172,239,142,123, 81,160, 80, 86,213, 94, 23, 37,135,179, 99, 78, 78,206,240,220, 0,215,177,234, -225,155, 34,231,213,171,115,222,123,242,136, 70,183,100,105,129, 16,138,197, 98,133,112, 61,210,196,250,150,227, 56,182,163, 93, -165, 24, 14,135,220, 44,230, 93, 36,176,135,214,181,229, 70,180, 16, 4,150,198, 86,119,107,149,209,104, 68, 20, 69,188,185,184, -102,189, 94,115,112,112,192,143,127,242, 19,150,203, 37,223,126,251, 45, 89,145,239,215, 4,150,182, 89, 89,251,106,119, 45, 90, - 99,104, 0, 79,118, 2,191,250,109,226, 94,207, 10, 40,122,165,188, 49,182,224, 52,111,197,140,253, 61,170,202,234, 29, 80, 17, -162, 1, 97, 69,158,142, 84,118,220, 60,155, 66,199,127, 31,196,118,148,188, 93,109,236,245,237,112,183,162, 59, 52,234,202,174, -134, 70,163, 67, 27,106, 50, 24, 80, 85, 21,183,183,183, 28, 30,206,248,244, 7, 63,180,133, 20, 48,136, 34,218,198, 16, 5,182, - 8,219,110,183,108, 86, 43,235,102,168, 74,242,213,214, 30,206, 66,224, 72,235, 70,112, 92,133,239, 90,145,158,227, 89,170,228, -120, 50, 97, 50, 30,239, 69,164, 90,107,134,145, 13, 7,170,186, 14,191,159, 12,172,182, 27,174,175,175,185, 93,204,145, 82,114, -124,116,194,245,245, 53,227,241,148, 89,215,141,247,147,149,126, 95,175,148,162,204, 45,192, 70, 74, 56, 60,154,225, 74,197,226, -230,154,150,134,147,163, 67, 90, 4, 39,199, 51,102,211, 9, 18, 67,145, 89, 8,213, 32, 10,105,234,154,219,171,107,130, 56,218, -235, 22,194, 48,230,232,224,144,215,175,175,153, 78,103, 56,202,227,235,175,127,131,209,154,167, 79,223, 99, 54, 59,178, 5,117, -145,177,221,110, 57, 62, 62,230, 39,191,255,123,124,242,241, 71,124,241,229,151,156,159,159,243,236,251,111, 56, 61,190,207,116, -114, 64,224,187,220, 63,187,135,239,122,180,173,237,160,211, 44, 99,151, 36, 12, 71, 49, 72, 65, 89, 87, 36,233, 14,199,145, 29, -156,200,197,117, 21,210,113,169, 1,161, 36, 69, 90, 33,178, 12,207, 27, 97,104,109,128, 87, 85,147, 22,182,104, 66, 40, 16,146, -166, 53, 56,174, 71, 81, 84,221,245, 53,232, 22,140,144, 56, 54,226, 79,115,179, 92, 18,142,102,148,186,101,185,201, 48,202,101, -181,203, 17, 42,164, 50, 45,186,168, 17,170,177,149, 65, 85, 49,159,223,144,139,156,155,249, 49,227,160, 64, 57,157, 90, 82, 57, -148, 70,147,107,137, 81,208,122, 83, 50, 19,243,226,102,197,245,213,130, 86, 56,108,147, 53, 23, 87,223, 83, 26, 77,101, 66, 26, - 92, 92,199, 39,112, 3,154, 22,202,160,237, 24,234, 30,227, 97,184, 87,133, 38,121, 73, 83,151,248,190, 71, 28,135,248,158, 71, - 93, 25,132,163,240, 91,123,243, 13, 2,221, 52,136, 86, 32,149, 96, 54,155,226,202,150,225,112,200,236,112,202, 98,113, 73, 85, -149,172,138,156,225,120,136, 41, 74, 38, 7, 71, 76,135, 71,156, 30,191, 71,182,219,114,126,190,230,245,229, 45,173,146,156, 28, -223,195,245, 51,148, 55, 6,225, 83,155,134,155,155, 43,218,182,238,130, 12, 92, 14,131, 3, 90,229,113,120, 52, 68,249, 54, 95, -119,177,218,161,148, 98,190, 88, 97, 90,141,174,106,188,192,103,155, 36, 56,158, 79, 94,214, 54,249,169, 42,136,124, 24,199, 35, -118,142,205,144, 55,109, 75,171, 20,110, 56, 96, 56,117, 73, 43, 67, 94,107,178,170,166,105,237, 40,218, 49,150, 36, 20, 71, 1, -109,219, 80,214,154,209,193, 17,217,118,199, 55,207,206, 57, 58, 24,241,240,222,239, 81, 84, 37, 71, 71, 39,148,121,129,112, 93, -180,174, 72,202,138,167,239,127,200,147,151,111,248,246,203, 95,241,250,252,138, 40, 28,209,224, 32, 28,159,175,190,253,158,162, -170, 25, 68, 33, 70,215,236,146,205, 59,163,224, 30,217,121,124,124, 12,142, 98,216,122,108,171,150,188,149,108, 74, 77, 74,206, - 46, 95, 18,198, 99,198, 7, 51,170,213,142,151,151, 87,123, 65, 87, 85, 85, 72, 47,224,248,158, 75, 28, 6,124,243,237, 51,148, - 31, 48,157, 28, 48, 95,172,136,135, 67,226,225,152,215,111,206, 25,143,167,123,212,166, 29,107, 70,221,139,181,193,119, 20,162, - 31, 17,214,186, 59, 96,237, 24,184,168, 43,170, 34,183,197,143, 16,120,174,131, 66, 80, 87, 5,133,104, 25,133, 62,147,225,152, - 42, 93,161, 68, 67,232, 40, 92,161,240,165, 75,227,187, 72,215, 35, 10, 60,218, 70, 19, 71,246,224, 75,146,100,239, 73,207, 50, -123,200, 24, 83,239,153,222, 66, 41, 11,199, 48,154, 36,221, 33,164,164,210, 53, 82,216, 3, 7,161,236, 14,186,109,105, 58,142, - 55, 24,154,166,221,219,162,238, 90,206,122, 5,178,214,205,126,108,219,119,225, 61,174,182, 63,212,251, 42,189, 31,139, 42,229, -188,227,157,110,247,123,183,183,227,242,186,174,247, 1, 45, 65,224,237, 21,206, 85, 93,216,172,247,178,234,118,167,109,231,179, - 22,239, 36,145,245, 7,209, 93, 45,192, 93, 47,188,231,217,160,150,119,124,219, 93,222,122,111,225,211, 90,147,166,169,237,184, -186,177,188, 77,229,178,135,225,245,245, 53, 69,150, 83,229,183,100,165,161,106,182,196,131, 1,141,177, 60,130,251,247, 31, 80, -230, 25,174,235,114,124,124,138,112, 92,110,111,175,187, 66,200,177,136,106, 47, 32, 12, 67, 38,147, 9,171,205,102,239, 81,150, -142, 2,229,112,120,124,196,252,230,150,231, 47, 95, 16,250,246,107,117, 85,237,253,224,189,157,209,116, 7,121,239,173,230, 78, - 46,121,239,131,239,179, 3,250,196, 49,189,223,151,131, 82,111, 11,182, 61, 38,246, 14,133,173,191,142,246, 89, 48,251, 67,187, - 44, 75,170, 14,101,236,185,106,143, 20, 54, 2,194,208,239, 86, 65, 45, 66,180,251, 67,176, 79,203,155,205,102,123,193,229,229, -229, 21, 39, 39,199, 60,124,240,152,213,118,195,252,230, 10,223,181,212,187,158, 82,231,251, 62,239,191,255, 62,131, 65,100, 45, -139,142,251,238,247,215,154, 61, 78,214,113, 28,202, 70, 91,255,186,227,236,121, 0,187,221,206, 38,177,101, 25,223,191,120,110, -159,211, 78,179,161,219, 78,191,210,229,208,111, 54, 59,155,136, 41,157,253,228, 98, 54,157, 50,157,205, 24,196,241,158, 2,169, -187,100,206,193, 48, 38,242,237, 10, 69, 96, 8, 2, 23,215, 17,148,165,182, 88,234,213,130,166,169, 57, 59, 61,230,213,171,194, -142,164,117, 77,109,218,142, 56,103,105,146, 70,223,181, 31, 66, 16, 68, 72, 9,111, 46,175, 73,211,132,179,211, 99, 30, 61,122, - 0,237,132,229,114,201,118,181,162, 72, 83,142,142,103,124,250,163,223,229,244,232,128,155,235, 57, 89,178, 97,211, 52, 40,215, - 97, 50, 59,100,118, 48,197,245, 60,178, 34,103,177,174, 81,158,178,220, 15,217,157,143,216, 41,162,157,208,212, 29,168, 71,190, -147,239,208, 39,242, 25, 99,136,162,208,174, 29,179,212,178,248, 75,187,138,203,139,180,187,238,254,254, 51,189, 95,209, 93, 92, - 92,241,230,226,138,243,235, 5,133,121,198,124, 83,176, 45, 12,149, 17, 76,143,207, 72,138, 26, 93, 55,148,217,142,182, 17,132, - 82,160, 90,137, 82,130,112, 16, 81,227,144, 26, 23, 89, 25,218,170,194,241, 36, 82,128,214, 64,124,192,229,214,240,145,152, 82, - 58, 37, 55,229,142,229,250,150,188,216,226, 68, 49,179,201, 4, 71,197,180,218,177,217,236, 69,193,102,151, 88, 54, 54,134, 42, - 45,187,253, 86,109,133,110, 64, 37, 21, 42,112,112, 66,139,160,244,125,159, 56,240,105, 2, 65, 20, 14,112, 28,143,108,152,217, - 28,230,166,161, 72, 19,234, 70,179, 73,172, 48, 45, 24, 12, 80, 12, 40,179,148,180,168,201, 77, 13,198,197,108, 75, 28,225, 19, -196,167,212, 77,105,241,169,173, 1,109,199,229,214, 71,106,112, 29, 15, 63,136,209,117, 97,237, 30,216, 16,148,205,110,135,227, -214,132, 40,118, 73,198,110,151, 48, 26, 14, 64, 57,248,174, 79,107, 50, 68,255, 50, 45, 11,242, 52,195, 21, 6, 69, 77,232,216, -140,233,182,177,128,129,109,150,179, 75, 51,210,186, 69,250, 3, 54,187, 28, 33, 61,164,242,236,205, 69,226, 73,141, 68,144, 39, - 9,181, 49,180,120, 20, 26,138,198, 62, 20,223,191,186,230,211, 79, 50,212,176,229,120, 58,101,117,123,137,170, 13, 89,219,242, -139,207,191,131, 96,138, 84, 62, 15,159,126,196,213,124,199,248, 96,195,106,185, 97, 50, 59,229,102,190,230,122,190, 97, 19,228, - 44,231, 11, 26, 83,239, 15,204,190,203,112, 66,135, 10,143,139,203,107, 62, 28, 29, 33,195, 49, 87,219,156, 18,151,193,100,198, -166,154,243,213,179,231,196,183, 75,138,170,182,132, 49,215,161, 41,106,218, 22,188,120, 68, 28, 70,100,233,142,163,179, 7, 8, -233,176,222,110, 25,140, 70, 24,108,241,112,122,122, 15,211,128, 80, 46, 38,181,169,113,142,215, 69, 43,214, 26,215,113,246,193, - 32,109,107, 59, 50, 37, 4,253,214,179,109, 91, 92,207,239,224, 33, 37, 85, 81, 19,249, 46,227,192,199,115, 5,138,154,199,247, -102, 32, 90,194, 40,166, 54, 45,141,145, 36, 89,193,205,237,146,166,204,173,178,215,117,152,231, 5,243,249,156, 74,219, 93,113, - 86,116,193, 38, 82, 90,225, 81,211,224,133, 17,225,112, 72, 89,100,236,210,132,214, 88,177,154, 31, 69,120, 97,132, 64, 81,119, - 56, 81,187,127, 85,184,174,221,111,214, 45,160,186,206,218, 88,252,164, 49,221, 72,190,235,214,123,194, 90,159,106,101, 11, 45, -103,127, 16,220, 29,179,171,238,112,221,163, 73,239,136,180,250, 67,221, 24,131,234,186,103, 99, 96,183,219,225, 41, 27,121, 42, - 60,219, 25,246,137,106,129,223,191, 0,197,126,100, 44,101, 69, 84,191, 37,205,221, 21, 88,221,165,227, 69, 81,244, 14, 84,231, - 29, 70,120, 28,144,101, 41,207,159, 63,103, 60, 30, 50, 95, 46, 88,173, 23, 56, 82,112,114,114,130, 20, 45,167,199, 71,100, 73, - 66,154,151,180, 40,226,241, 1, 82, 89,113, 85,239, 15,119,186,149,208,100,124, 64, 89,150,204,231,243, 14, 83,219,210,120,205, -126,207,219,199,120,166,233,142,166,133, 93,146,161, 60,143, 52,207,216,237,118,124,248,254, 7,252,244,167, 63,229,226,252,156, -139,139,139,119, 14,116, 43,131,180,207, 88, 43, 4,178,203, 87,247, 29,151,186, 59, 32,122,102, 65, 16, 88,177, 84,221,232,253, -247,216,239,220,109,161,166,247, 69,152, 16, 98,159,211,238, 58, 86,143, 80,105, 77, 16, 5,123,126,124, 95,188,105,109,240,253, -128,241,193,140,186, 46, 17,170,195,179, 42,144, 10, 48,134,164, 11, 45, 2,200,171, 18,157,165, 12,194,136, 90,151,140, 70, 99, -118,187, 29,175,158,191, 98,155,110,169,155,106, 79, 57,108,219, 22,175,242,216,213,197,222, 7,239, 40,241,110, 49,215,190, 43, -182,148,221,181, 55, 29,150,185, 63,136,143,142,142,246,235,162, 48, 12,105,193,250,183, 59,141,129, 35, 21,203,249, 2, 93,183, -239,104, 84,238,221,187,103,167, 47,181,157,168,248,174, 75,154, 52, 56, 66, 50, 30, 15, 81, 74,178,238,166, 9,101,153,226,168, - 8,163, 43, 92, 37,144,162,165, 44, 50,238,223, 63,227,242,252, 13,233,118,195,201,201, 25,173, 80,228,185,205, 5,233, 19, 0, - 93, 55,236,214, 19,138,249,220,166, 99,254,232, 71, 63, 32,207, 18,110,174, 46,184,190,188, 34, 73,182, 60,125,239,177,101, 4, -248, 62,111, 46, 94,147, 23, 59,222,127,255,125, 78,142, 14, 25, 68, 33,187,245,142,182, 49,104,211, 34,154,130,166, 49,196,126, - 0, 50, 66,186,150,165,160, 77,205,170, 44,113, 28,143, 97, 60,176, 43,212, 93, 66, 93,175,112, 28, 65, 94, 86,104, 93,209, 52, -245, 91, 62, 65,211, 34, 29,251,190,247, 60,143,245,102, 75,145,151,164,153, 21,118, 86, 69, 73, 89, 55,208,108,222, 33, 70, 10, - 33,113,254,246,239,254,142,239,158,151,140,167, 16,207,102,156, 61,124,196, 39,199, 15,248,171,191,251,103, 94, 95, 95,161, 17, - 40, 39, 0, 36,174,178,221,115,154,110,104,105,136, 85,200,237,114,197,193,200, 37, 12, 20,186,209, 4,194, 90, 31,178,188, 70, - 3,187,172,161, 50, 30,206, 96,202,193,217, 61,188, 81, 72,154,207, 41,170, 5, 77, 91,147,172,230,228, 73, 78, 93,105,138,218, -166, 58, 29,204,142,152, 78, 15,168, 76,195,237,124, 65,224, 91, 78,118,169, 27,138,178,198, 13, 3,134,131, 33,117, 85,225, 9, -133,114, 36, 77, 89, 99,116,133,233, 31, 54,105,213,166, 71,167, 39,164,217, 14, 35, 36,111,174,111, 49, 90,227, 7,138, 32, 26, - 34,101,203, 40,112, 40, 11, 77,158, 72,100,109,152, 14, 71,148,153,198,117, 61,140, 73,217, 37, 27, 90, 37, 17, 82,163, 43,141, -160, 67,129,202,144, 56,116, 41,139, 4,164,176,213,185, 23,208, 52, 53, 81,108, 3, 70,226, 56, 38, 75, 83, 92,215, 33,165,197, -147,146,201,200,238,119,134,177,207,201,212,167, 78,230, 28, 31,140,173,144, 43,219,145,164, 57,243,237,150,210, 72, 50, 13, 69, -179, 36,111, 90, 60,111,192,104, 52, 97, 89, 45,104,187, 17,160,163,192, 81,138,182, 5,227,120, 20,101,131,240, 34,134,177,207, -171,171, 57,255,252,111,159,241,159,255,242,143,120,254,234,130,161, 47,241,253,128,245,205,150,219,197, 10, 34, 69, 48, 24, 49, -154, 28, 32, 49,124,243,236, 21,105,178,101, 16,134, 60,249,240, 19,116, 85, 91, 49,218,193,113,103,139,178, 59,195, 65,215,241, - 40,165, 72,139, 28,127,116,200,139,203, 57, 6, 72,202, 6,237,120, 60, 63,191,160, 21, 46, 31,124,252, 3,242,162, 66,119, 66, - 53,132, 96,155, 21,196,113, 72,139,100,147,165,132,126, 72, 89, 85, 24, 83, 16, 68, 3,162, 40, 98,177, 90, 18,134,118, 23,219, - 10, 24, 70, 33,152,183,108,241, 32, 8,208, 18, 60,199, 78,134,132, 77,246,232, 96, 31,134, 86, 89,242,150,235,123,164,157,208, -173, 44,114, 34, 79,241,240,222,125,126,250,233, 39,124,240,248, 33,131, 64, 17, 7, 10, 41, 90,226,193,136,186, 17, 20,117,205, -235, 55,215,252,243,207,127,193,213,237,130,193,120, 66, 85, 85, 44, 87,243,142,140, 53,182,130, 50,229, 16, 13, 6,111,199,221, -104,198,227, 17,179,131, 9,219,245,134,162, 42,187,224, 21, 31, 71,186,208, 64, 90,164,100, 73, 2,166,101, 56,140, 25,141, 70, -123,172,104,159,192,213,239,196,251, 14,207, 30,220,111,185,225,186, 49, 68,234,237, 78,243,238, 46,253,183,201,102,125, 23,120, - 55,117,235,110, 26,151,253, 53,237,126, 34,224,186, 62,109, 99, 19,232,250,176,153,254, 64,246,187, 60,116, 27,118,242,246,197, -222,171,159,251,206,191,167,158,245, 93,252, 94, 1,221,249,159,123,209, 89,191,103,204,202, 28,221, 54,228,235, 37,135,199, 71, - 20, 69,134, 16, 45,179,217, 33,163, 65,204,102, 61,231,228,244,136, 42, 31,178,217,165,120,126,140,112, 93, 90, 28,218,214, 48, -159,223,114,124,120,184, 31, 51, 71, 81,196,225,204,102,216,187,174,107,119,234,142,191,191, 46, 61,226,180,105, 26,178,162,220, - 23, 64,143,187,252,235,197, 98, 65,210,221,163,187,236,254,190, 11,170, 59, 75, 97, 43, 4,230,142, 0,240,110, 54, 64, 63,153, - 40,138, 2,217, 57, 41,180, 53, 18,237,239,131, 49,134,186,122,187, 42,218,103, 9,116, 66,190,190,115,235,105,132,131, 40,218, - 39,152, 25,211,139,136, 5,134,186, 91,141,217,123, 94,228, 5,203,229,146,250, 81, 77, 20, 69,148,165, 93, 35, 68,126,192, 87, - 95,189,228,201,147, 39,140,199,246,243,235, 41,171,203,145,242, 45, 61,208,212,154, 93,189,123,235,150, 64,188,147, 1,223, 23, -132,162, 7, 33,185,206,219,159,235, 10, 55,173, 53, 71, 71, 71, 12,135, 67, 30, 60,120,192,225,225,225, 94, 43,176,218,110,246, -194, 81,173, 53,203,229,106,159,107, 80,150,118, 21,227,251, 62, 85,153, 18,196, 97,167,107, 10,136,195, 16,199,177, 17,185,190, -239, 34,101,132,146, 13,101,158, 82,215, 33, 94,215,229, 15, 6, 3,254,242,191,251,239,249,223,254,247,255,149,179,123,167, 72, - 97, 89, 2,121,158,226,121,150, 15, 31,117, 5,215,237,237,109, 7,220,241, 72,146,142,108,233, 57, 60,124,252, 30,183,215, 23, -172,215, 91, 62,251,229,231, 28,204, 38, 60,121,248,144,147,147, 19,182,235, 21,207,159,125,135,231,121,156, 29,159,240,244,201, -189,142,227, 32,216,238, 82,222,220,220, 80,228, 14,194,113,153, 78,199, 86,228, 91, 27, 43,104,212, 45,198, 5, 41, 92,130, 32, -100, 60, 18,108,210,132, 93,154,189,163, 75,233,159, 1,215,117, 41,234,146, 40,138,222, 34,172, 3, 43, 28, 44,125,155, 71,239, - 72, 69,219,233, 30,236,196, 45,196,153,175, 74,222,255,104,196,195, 39, 31, 18,142, 14,168,164,207,213, 42,193,143, 2,188,157, -139,231,248, 20, 90, 35, 29, 1,178,165,172, 50, 28, 37, 80,194,161,214, 57,101,150,211, 86,154,180, 76,113, 29, 75, 42,242,131, - 16, 7,151,192,149, 44, 23,115,190,250,242, 11, 74,173,201,171, 12, 67,202,225,212,227,242, 50,231,230,250,134, 97, 16,113,122, - 58, 37, 12, 99,142,143,143, 57,156,157,160,156,128,217,236,136,127,252,231,159,145,239,182, 28, 28,159, 82,232,150,176,149,232, - 72,146,151, 21,201, 70,227, 72, 73, 45, 74,242,221,214, 2, 71,218, 5,202,113,105, 16, 56,202, 99, 48, 26, 19, 68, 33,159,252, -232, 83,251,208, 10,129,112, 90, 26, 37, 40,165,131,112, 97,151,111,240,253, 16,119, 60, 64,105, 73, 82, 23,232,182,166,174, 51, -226,161,162,206, 75, 90, 1, 69, 9,121,105, 24,142,142,241,188,198, 42,148,219, 26,161, 4, 69,145, 33,165, 3,194, 86,148, 85, -163,113, 20,148, 69,130, 82, 80, 85, 5,158, 47, 45,156,197, 85, 84,101,134,164,102, 20,251, 44,183, 13,202, 52, 28, 12, 7,148, -169, 5, 58, 36,105, 97, 65, 26, 26,242,214, 65,184, 1,101, 99,111,250,241,209, 17, 77, 85,179, 89,205, 25,198, 19,178, 60,237, - 94, 10, 2,161, 20, 82,185,228,181,193,147, 62,191,252,252, 43, 62,121,114,202, 79,126,248,148,124,183,162, 41,180, 93,169,184, - 62,165,110,209, 21, 93,120, 2,132,225,152, 58, 41, 40,112,237,143,186,230,131, 15, 62, 38,240, 45, 19,124,190,156, 83,153,148, - 36, 41, 89,101,183,232,214, 88,177, 83, 85,146,100,118, 68, 40,148,131,227, 5, 12, 38, 49, 66,186, 52, 66, 82,232,110, 7,236, - 5, 20,117,101,213,236, 69,137,231, 6,248,129, 71,101, 90, 12, 86,136,164,117, 67,189, 75,112, 93,139,129,108,104,193,104,202, -220, 62,224,227,241, 24, 73,251,142,184, 75, 58,160,140,162,165,217,139,104, 20,118,140,219, 51,224, 45,160,194, 97, 48,136,153, - 12, 98,102, 7, 99, 36, 21,129, 27, 18,122,214,178, 84, 23,153,157,186,168,144, 56,244, 41,178,132,182,177,135,234,243, 87, 47, - 40,138,146,217,108,214,141,210, 28, 76, 91,218,180,166,166,193,152,114, 31, 6, 51, 25,199,221,135,121,199, 98,181,222, 31, 36, -170, 5, 71, 56, 4,158,207,116, 58,230,241,195,251, 93,177, 81,239,163, 92,211, 52, 37, 45,236,184, 90, 98,171,110, 21, 4,251, -206, 60,203, 50, 92, 71,237, 5,110,182, 67,125,155, 75, 14, 80,102, 54,178,184,236, 68, 94,123,250,151,182,135, 77,208,141,189, -251,195,168,105, 26, 76, 93,221, 25, 7, 55,123, 69,114, 95,100,248,190,191,199,101, 22,105,182,183,179,217, 64, 20,203,152,239, -217,249,150,194, 86,117, 73,102,110, 7, 34,169,247,190,250,190,235,205,243,156,193, 32,162,174,114,180, 46,112, 61, 15,104,121, -248,240, 1,215,215,215,180, 24, 30, 63,126,200, 34,114,136,124,159, 56, 8, 16,142,100,187,203,144, 52, 68,131, 49,174, 31, 80, -230,214, 58,228,121, 54,136, 69, 25, 99,243,182,203,146,203,203, 75,170,218,174, 23,214,235, 98, 31,250,209,103, 2,140,199, 99, -206,175,174, 41,180,166, 53,134,123, 39,167, 84, 69,201,205,205, 13,227,225,136,167, 31,124,192,213,197, 5,151,151,151, 20, 90, -227, 73,137,231, 56,148,157, 69, 45,232,132, 96, 82, 74, 54,203, 21, 77, 85,239, 83,212,154, 78,253,189,191,151,216, 38,163,213, - 93,225,217,173, 45,106,211, 96,132, 21,223, 1,228,121,214,165, 10, 70,232,238, 90,141,135, 67,132,144, 8, 33,187, 81,182,100, - 48, 28,113,125,157, 33,165,193,119, 61,242,220,162,100,253, 32, 36, 47, 75,222, 92,158,115,118,118,134, 84, 46, 97, 52,224,243, -207, 63,195,113, 28,158, 63,127,206, 39,159,124,194,167, 63,252,148, 36,177, 97, 46,195, 40,222, 3,141,130,208, 90, 11,191,251, -238,187,189,138,255,174,237,170,135, 24,249,142,107, 1, 58,190,131, 23,248,123,128,141,211,133,147, 68, 97,136,235, 90, 38,255, -237,237, 45, 87,215,215, 0,172,119,219,119, 0, 69, 96,247,231,190, 23, 80,118,162,187,104, 16, 51, 28,197,236,118, 59,134,113, -220, 69, 44, 43,110,110,175,186, 0, 30,197, 54, 91, 17,250, 46,185, 41,144,162,197,119, 20,187, 36,229,124,185,224,255,254,191, -254, 79,254,240,167,127,192,249,249, 57, 85,173, 49,166, 98, 58,157,114,123,187,160, 49,243, 14,114,100, 39, 32,174,114, 24, 13, - 6,251, 8,230,241,104,192,124, 62,199,247, 3,218,214,176,219, 46,121,115,241,154,171, 55,111,248,209,167, 63,224,222,189,123, - 54,215,190, 46,217,110,215, 96,236,115,236, 7, 33, 39,131, 3,226,113,200,171,215,151, 20, 85,193,108, 54, 99, 20, 15, 16, 66, - 49, 8,109,238,189,174,106,104, 29,164, 8, 40,203, 29, 7,227, 3, 54,155, 13,190,107,133,141,111,181, 46,214,127, 46,148,203, -122,155, 16, 15,172,232, 84,183, 45,231,151,151, 28, 29,204, 56, 60, 58,230,222,201,137, 21, 16,119,248,234,241,120,130,243,167, -127,254,135,248, 97,132,150, 14,155,172, 96, 91,230,188, 58,191,100,177, 90,114,112, 56,229,118,181,197,180, 13, 45, 22,109,169, - 48,180, 82, 32,187, 74,189, 71,114,182,186,165,109, 90, 28, 89,163,148,131, 16,146, 32,240,248,226,251, 11,110, 22,255, 5, 35, - 36,143,158,222,227,127,250, 31,255,140,195,163,128, 42,127,143,205,122,197,116,120, 72, 20, 13, 72,118, 25, 89,150,227,168,128, - 32,136, 88,175,231, 28,205, 38,188,120,241, 2,217,182,184, 93,221,168,117, 77,150,164, 84,117,131,163, 4,187,245, 53,158, 43, - 58,113,200,196,194, 74, 16, 24, 33, 9,194,136,213,118, 5,173, 61,184,116, 31,178,209, 85,158, 70,106,252,145, 71, 85, 45,112, -219,152,113, 48, 34,144,146, 42,221, 34,196,142,166,117,240, 35, 65,154, 23,196,131, 24, 33, 61,118,201,134,237, 38, 97, 50, 28, -227,184,138,182,238, 66, 92, 26,141,214, 85,231,123, 6, 93, 55, 84,141,217,143, 32, 93, 87, 17, 69, 33,141, 46,168,138, 29,142, - 20, 76, 71, 51,222,124,187, 38, 80,138,233,112, 72,150,101, 8,199,165, 49,138,101, 90,178, 91, 36, 84, 90,227,226, 34,125,104, - 27,236,139,195,113,137,218,246,181,122, 0, 0, 32, 0, 73, 68, 65, 84,253,200,222, 72,169, 48, 66,129,116,108,158,110,107,215, - 4,181,105, 17,173,228,111,255,233,103, 12, 7, 1,247, 78, 14,216, 20, 13,175,175, 22,228,165, 65, 69, 30,186,195,189,186,174, - 3,181,225,114,190, 33,221,189,102, 48,140,240, 29,151,193,116,198,225,209, 12, 17, 12,136,198,118,103, 94,214, 27, 76, 99,153, -223,121, 35,184,221,164, 93,180,164,178,137,101,194,122,136,155,170,162,105, 13, 77,151,210,213,182, 22, 33, 42,148, 77,132,107, - 5, 52,186, 5,209,118,126,106,235,137,221,119,158,162,235, 18,238, 36, 91, 73, 41, 81, 93,183,211, 98, 48, 13,221,248,217,170, -177,165, 20,123,129, 92,139, 65, 52, 10, 83,234,142, 69, 46,208, 85,205,235, 87,207, 56, 59, 12,241, 30,223,103, 54,116,104,245, -219,221,171, 20, 46,210, 21, 68,129,223,209,218,118,251,176, 21, 59,255,148,251,100,166,126, 44,106, 21,168, 14,180, 26, 33, 91, -142, 14,173, 98, 55,203, 19,150, 75, 43, 32, 27, 6, 3,104, 37,174,235, 48, 30, 13, 8, 92,135,180,195,218,238,118, 9,181, 54, -251, 16,144,134,246,157,221,116, 89,148,239, 8,176,250,142,174,239,182,123,170,220, 93,241,213,221,238,175, 63,216,239, 30,252, -119, 49,175,191,221,241,223,237,252,251,238,223,122,243,251,175,147,239,220, 15,249, 91,191,111,223,213,245, 26,140,254,247,234, -227,109,123,171,212,254,123,166,161,210,182, 32,204,202, 12,173, 13, 89, 89,128,176, 97, 47,182,139, 75,153, 76, 38, 76,196,160, -139,126,245,145,110, 75,163, 75, 2, 79,145,165, 5,215,215,151, 76,167, 83,188,208,219,167,218,197,113, 76,182,120,235,158,232, -167, 6,246,229, 55,102, 58, 59,228,106,190, 64, 72, 27, 13,218,163, 81,251, 23,234,205,205,205,254,154,250,189,240,175,170,186, -232, 75, 65,161, 53, 65, 24,188,163,114,239,255, 94,117, 93,239,149,204,119, 39,135,253,247,113, 55, 21,237,238,125,232,239, 89, -255,223,125,177,114,119,117,209, 63, 43,113, 28, 83, 85, 59, 28,199,166,148, 13,135, 67,148,116,247, 12,133, 40,138,168,171,134, -213,106,181,239,252,139,162,224,250,250,154,147,147, 19,210, 52,225,205,155, 55,232,178,218, 91, 16,149,180,130, 45,207,177, 1, - 89,178,243,220, 59,242,237,247,210, 63,107, 66, 73,178, 50,223, 79,148, 44,112,198,186, 84,242,206,221, 48,153, 88, 88,203,110, -103,221, 10,181,105,246, 35,240,182, 19,255, 29, 28, 28,112,116, 60,227,250,234,150,178,202,169,138, 18, 37, 36,113, 28,117, 29, -108, 69, 89,212, 72, 90, 92,215,161, 46,115,124,199,225,244,244,148, 34,143, 9, 67,159,139,215,231, 76, 15, 38, 24,109,245, 6, - 69, 81, 88, 33,228,119,223,163,148, 69,106,103, 89, 70, 81, 86,184,174,143,114,253,189,237,238, 46, 79,127,189, 94,219, 85,192, - 32, 2, 99, 45,105,117, 93,115,179, 88,240,175,255,242,115, 30, 63,121,200,251,239, 61,193,159, 76,216,174,231, 36, 73,137, 82, -246,154, 81,215,248,174,207,239,124,244,148,219,249,154,111,190,252,181,197,207, 14,167, 76, 70, 99,170, 35,203,198,208,186,161, -200, 10,116,109,181, 94, 31,127,252, 49, 55, 55, 55,182,160,233, 38, 99, 86,236,233,236,255,189,172,242, 61, 75, 95,107,205,106, -187, 65,157,159,115,117,121, 65,158,102,140,199, 99, 14, 14, 14,168,170, 26,231,163, 31,253,144,243, 55,151,124,249,213,111,216, -230, 53,211,227,123, 52,173, 97,157,164, 24,199, 90, 5,236,230,184,127, 40,187,189, 93,219,210, 24,216,102, 57,219,172, 68,181, - 6, 85, 27, 28,101,104,218,146,214,177, 15, 81, 20, 40,106,211,128, 99,168,117,198,116, 26, 35,154,130,216, 15,112, 70, 83, 94, - 60,127,205,225,236, 4,144,108, 86, 9, 66, 22,248,126,193, 63,253,203,207, 80, 78,192,237,237, 45,141, 1,215,139,112,130, 8, -215,117,112, 68,133,116,193,247, 92, 14,238,159,118, 12,220, 22,229, 57, 8,116,183, 79,135, 2,144,202,165,110, 26,139,159,236, -118,129,117,247,194,106,100,139,206, 19,154,166, 37, 48, 21, 59,145, 32,234, 26,161, 51, 38, 35,129,239,199, 28,157,156,241,253, -243,207,168,170, 37,227,201, 17,174, 55, 34, 12, 70,184, 65, 72,154, 37, 72,169,112, 3,133, 35,216,103,221,182,216, 23,135,106, - 12, 90, 27,156, 46, 17, 75, 8,129,209,246,225,140, 3,135,201,208,130, 50,146,221,150,225, 96, 96, 21,198,141,173,188, 39,195, - 17,117,227, 32,243,154,178,177,106, 91, 71, 42,155, 14, 37,109,247, 68,219, 80,245,106,104,169,208,128,233,136, 87,162, 5, 35, - 92,158, 95,220,242,245,203, 11,166, 39,103,228, 77,201, 42,173,169,112, 9, 29,151,182, 85,182,211, 83,146,172,110, 88, 37, 25, -203,229, 26,103,187,181, 10, 95,207,227,105,249,100, 47,220, 88,172,150,172,215,235,253,139, 59,235,196, 28,116,127, 95, 28,207, - 22, 23,173, 85,161, 55, 77,139,234, 2, 82,238,142, 49,239,114,205,189, 46,171,251,183,161, 37,125,238,183,166,179,102,153,198, - 14, 3,187,151,111,211, 58,160,236, 62,175,109, 91,104,236, 78,178, 7,173,220,141,191,204,243, 28,169, 43, 60,183,133,255,159, -174,247,106,174, 35,203,178, 52,191, 35, 92, 93,191, 18, 0, 65, 77, 38, 35, 35,114, 82, 84,138,202, 18,211,221,214,253, 50, 79, -253,191,171,103,108,102,170,103,170, 50, 35, 69,100, 72,106, 2, 4,112,181,235, 35,230,225,184, 59,192,204, 26,154,209,194, 64, -144, 8,192,197, 57,103,239,189,214,183,188, 32,141, 52,179, 73,132, 22,129,143,175,188, 64, 40,129,241,225,160,152,164, 49, 90, - 7, 43,153, 47, 75,154,174,197,121,133, 19,130,174,237,208,113, 50, 90,179,154,166, 35,142, 37, 93, 87, 99, 90,139, 82,146,211, -229,146, 72, 74,234,186, 36, 73,166,228,105, 70, 89, 7,224,197,114,182, 68, 96,168,171, 35, 77, 83,245, 21,241,109, 94,251,176, -208, 15, 31, 71, 74, 35, 17, 24,239, 62,157,137,107, 53,162, 84, 15,135,195, 56,163,214,113,220,199, 87,138, 79,212,243,131, 85, -110, 56,100,142,155,185,151,224,233,149,182,183,155,139,179,208,118,237,168,105,161, 98,140, 96,117,136,219,175, 33, 37, 82,235, - 16,193, 10,193, 39,110,123,132,177,214,212,253,193,103, 88, 69,236,157, 77,237, 80, 22,120,194, 65, 38, 74, 2, 59,187,174, 67, - 71,234,104, 90,118,187, 13, 89,127,255,166,147,140, 36,210, 76, 82,141,212, 10,227, 13,109,221, 34,147, 41, 58,146,236,182,135, -144, 43, 46, 28, 81, 20,198, 6,211,217,132,245, 54, 84,139,105, 26,247, 27,180, 14,239,100,207,142, 87,253,193, 49,209,183,156, -245, 56,142,241,214,177,223,239,153, 78,167, 60,127,241,130,203,203, 75,174,183, 91,242, 36, 65,234, 80,213, 38,195,129,110,176, - 18,246,246,182,182,109,199,124,117,217,183,166,181, 84,227, 70,238,189, 71,184,240,123,184,215,183, 30,120, 17,222, 61, 17,226, - 52,133,208,163, 40, 82, 8, 65, 62,157,135,240,147,214,144, 79,115,154,155, 61,222,220,182,252, 27, 27,218,254, 69,213, 96, 28, -148,213, 49, 84,160,139, 5, 74, 41, 14,135, 61,223,126,251, 45, 63,249,252,115, 22,171, 37, 95,125,247, 23,182,251,221, 45,218, -216, 88,170,162,164,173,107,222,237,110,152,229, 83,234,182, 65, 18, 10, 39,132, 27, 89,240, 90,107,212,112,184, 27,242,216,123, -215,145, 55,183,226,200, 97,220, 17,216,245,201, 40,178, 27, 42,254,121,223,249,153,207,123, 38,128,130,155,245, 21, 15, 31, 62, -100,186, 92, 98,108, 75,113,216, 83, 55, 37,166,105,130,141,119, 58,101,187,190, 33,141, 53,235,171,107,156,115,172,111, 54, 56, -107,120,248,240, 33,127,249,203, 95,198,131,208,225,176, 69, 69, 73,159,194,167, 56,150, 53,137, 80,196,113,132,167, 68,169,208, -125, 56, 30,143, 20,197, 33,180,187,179, 24,156,165, 53, 30,231, 21, 66,198, 28,203,134, 31, 94,189,197, 26,207,139,207,158,115, -118,255, 1,199,125,136,105, 53,206, 17, 71, 41,142,134,213,234,148,231,207, 30, 49,203,167,188,251,112,193,126,189, 97, 58, 63, -225, 71,207,159, 81,221,191,207,119,223,125,199,225, 80, 48,159,207,121,255,254, 61, 81,172, 48,109,139,183, 22,211,191, 47,222, - 90,234,254,125, 30, 4,165,117,213,246,207,155,160,107, 45,219,237,150,223,252,242,151, 92,188,123, 79, 87, 55,152,166,197, 27, -139,254,250,219,215,108,247, 7, 44,138,108,146,224,122,127,164, 3,154,166, 70,201, 8, 45,193,154,192,118,118,222,227,173,165, - 19,146,198, 91,138,214,112,232, 28,169, 74, 72, 0,225, 45,149,233, 23,230, 44,167,168, 67,172,167,243,142,237,241, 64, 99,131, - 0, 68, 89, 77, 93,213,124,247,237, 91,182,219, 48,255,217,239,142, 8, 29,209, 54,134,111,190,125,137, 16,138,123,247, 31, 48, -201,103, 68, 73, 74, 58,153,144, 78,242,176, 16,244,194, 33,211,180,216,206, 81,183, 93, 95,201,216,190,122, 83,104,233, 57, 22, - 59, 58,227,168,218,142,182, 87,212, 58, 31, 22, 60, 35, 60, 62, 82,196, 58, 6, 39, 66, 43,187,110,152,166,158,166, 52,188,249, -254,134,207,158, 63, 35, 18, 25, 69,221, 98, 90,133,214, 73,104, 43,215, 62,216,243,154, 3,105,154,160,227, 80,245,117,198,224, -189, 25,115,160,141,181, 76, 38, 57, 90,201, 0,199, 16,130,249, 98,202, 60,139,144, 62,180, 10,139, 34,240,148,207, 86, 39,148, - 85, 67,158, 42,158, 61,121,202,236,164,225,245,197,154,215, 31,174,232,202,138, 40,201,194, 11, 93,213, 76,226, 32,168,176,117, -139, 20, 14, 33, 29,194, 15,181,109,239, 69,150, 9, 42,154,243,187,175, 95, 17,231, 11,132, 86,188,254,120, 67,231, 21,201,209, -224,164, 70, 71, 9, 78,132, 5,186,168, 43,148,142,152,205,103, 36,177,102, 58,155,145,102, 57, 55,155, 53,187, 99, 65,213, 25, -208, 17, 66, 10,156,177,120,173,137,251,150, 81,104, 67,106,144, 10,133,234,149,225,125,133,233, 61, 18,112, 61,157,203, 1,206, -152, 49,179,251,238,156,113, 16,124, 13,191,198,121,221,157, 77,234,118,134, 28,254,159,206,153, 81,221,141, 15, 8,207, 1,120, -145,164, 9,221,126, 79,228, 29,211,233,140, 7, 15,150,252,232,249, 19,206,239,173, 80,190, 67,223,129,180,120,103,198,217,148, - 16,130,162, 42, 33, 10, 54, 24, 99, 45, 94, 69,120, 17, 22, 0, 29,167,253,220,180,101, 54,153, 96, 91,129,119, 13,137,142,200, -167, 25,113,164, 88,204,102, 76,242, 21,105,154,227,108,216,192,195,172, 86,144,104,133,109, 3,186,117,168,188,135, 10, 61,138, - 34, 18,173, 70,244,107, 8,224,104, 63,169,184,135,170,238,174,216,106,168,242,194,230, 30,141,215,212, 24,131,240,140,201,114, -195, 47,173,245,232,189, 31, 15, 66,119, 14, 2,109, 99,130,248,106,252,220,109, 12,107,211,184, 79, 14, 98,195,159, 15,223,211, - 80,145, 15,247,112, 84,225,223,185,135, 97,174,218,161, 98, 77,156,102, 92,175, 55, 84,101, 77, 20,107,202,227,129, 15, 31, 46, -121,246,248, 33,145,210,236,214, 27,166,179, 9,147, 52,235, 29, 5, 2,239, 45,157,169,200, 39, 65, 64, 85,215, 13, 55, 55, 21, -203,229,201,104,119,155,205,102,163,207, 63,136,221,130, 32,247,120, 60,146, 78,242,177,227,146,197,201,173,195, 66,235, 48,110, -236, 59, 14, 3, 19, 32, 82, 18,169, 85,159,206, 5,105, 28, 17,165,201,232,199, 86, 66,253, 77,103,100,248,237,250, 13,252,110, -222,248, 93,229,251,232, 74, 24, 46,143,112,227, 72, 36, 73, 18,170,170, 30,163, 88,189, 20, 28,171,146, 40, 86,228,147, 25, 18, - 75,115, 56,112, 60, 30,105, 27,243, 73,215,160, 44,195,188,118,121,182,192, 57,131,137, 99,138,226, 24, 90,219,179, 25,207,158, - 61, 67,190,127, 55,186, 20,164,146,156,156,156,160,148, 24,163,140, 7,161, 95,107,186, 94,144, 26, 14,211,178, 15,252, 25,126, -226, 16,246, 21,198, 55,147, 36, 37,207,243,158,215, 62, 99,190, 88,140, 90, 28, 99, 12,251,226,136,115,142, 60, 75,216,237,118, -212,117,133,142, 36, 95,124,241, 5,147,108,202,239,255,240,101, 80,244, 75,207,110,189,193,217,142,211,229,146,171,143, 23, 56, -103,153,207,167, 28,118, 27,166, 39, 15,104,154,134,229,242,132,170, 42,240, 54,208, 3,219,182,229,242,242,146, 40, 78, 80, 42, - 28,136,210, 73, 76,148,165, 97,108, 32,250, 49,137,237, 48,166,237,187, 43,205, 88, 13, 91,227,209,145,166,109, 26,144,138,197, -242, 4, 37, 97,191,223,242,205,247,223,211, 90,203,231,159, 61,229,241,163, 7,108,110, 46, 41,251, 88,214, 36,138,104,235, 10, -156, 39,139, 36, 95,188,120,198,110, 91,112,189,222,241,234,135,111,152, 47, 79,248,252,243, 31,179, 90,173,120,243,238, 45,247, -243,115,222,125,120, 59, 6, 23,133,184,217,240,238,151,101,137,185,147,219,112,247,112, 39,132,160,147,146, 63,255,249, 43, 86, -243, 57,243,249,156,213,106, 21,222,235,155, 67,197,213,245,142,235,205,158,237,254, 64,237,160,234, 12,243, 76, 49, 95,157,176, -217, 30,192, 13, 37,186, 12,255, 33,180,121, 13,154,155,170,229,195,190, 36,149,158, 84,134, 42,218, 43, 11,186,165,244,154,123, -207, 95, 48, 91,158, 81,119, 5, 82,117,124,245,221, 43, 98,225, 16,181,165, 57,214, 44, 23, 79,104, 59,104,182, 45,219, 93,131, -138, 29, 85,217,112,255,209, 11,170, 42, 40,212, 27,179, 69,104,193,164,158,112, 42, 79,104,170,109,111, 19,211, 56, 27,194,226, -147,222,146, 51,155,205,136,163, 4,223,163, 18,213,218,209,180,134, 88, 57,186, 56,208,208, 24, 54, 92, 4, 85,231, 48, 77,135, -111, 29,145,181,204,243,132, 71, 15, 86,156,158,196, 56,223,177,187, 57,160,125, 76, 85,214, 56, 95,145, 53, 21,214, 67,219,173, -137, 83, 69,156, 8,170,174, 64,121, 23, 88,202,222, 33,133,194, 75,133, 71, 6,148,165, 76,200,146,184, 7, 87, 40, 34, 41,153, -230, 83, 86,171, 37,217,116, 70,221,116,100,147, 41, 19,173,120,249,254, 61, 74, 75,178, 56,230,122,127,160,171, 43,154,178,164, -117,146, 12,201,177, 42,123,128,129,194, 26, 71,231, 29, 17, 10,229, 29, 18,143,116,142, 0,155, 20, 8,169, 73,243, 19,126,248, -240,142, 78,125,133, 16,130,235,235, 53, 90,197, 68,113,129, 80, 26,213,131, 46,226, 56,166,110, 67,144,134, 78, 98,238,157,159, -241,224,209, 67,234,182, 97,123,216,178, 61,108,131, 34, 27, 79,219,118, 56, 99,232,172, 37, 77,110, 55, 30,235,192, 15,184, 85, -231, 17, 30,172,233,240,206,226, 76,176,177, 72, 66,118,182, 21,224,100,200,228, 14,109, 92,129,119, 14,255, 87, 41,101, 1, 85, -249,169, 88, 71, 8, 17,190,119,229, 71, 69,174, 31, 44, 85, 10,252, 64,238,210,161, 42,139,227,148,121, 18,177, 92, 78,195,252, - 44,137,136,164, 64,218,176,193,122,111, 65,200, 59,112, 11,249, 73, 5, 38, 84, 16, 44, 69, 82,142,173,187, 56, 14,226, 81,215, -221, 82,218,146, 56, 35, 77,130, 77, 47,146,138, 73, 26, 42, 70,143, 96, 62, 13,252,104, 79, 80, 4,135, 44,239,142, 40,137, 64, -170, 81,232,213,222, 17,147, 73, 41, 41,155,186, 23,104,245, 51, 90, 60, 22,143,232,175,199, 80,141, 12,155,209, 93,218,215,221, -182,176, 20,242,111, 14, 3,220, 25,109,220,110,220, 65,159, 97,189,165, 49, 93,120,167,117,132,190, 99,197, 50,198,208,245,157, - 23, 92,251, 9,244,166,109,219, 49,150, 18,232, 51,212,109,111, 3, 44,123,241, 96,175,176, 23, 2,132,166,110, 58,142, 69, 77, -221,152,192,115,111, 29, 85,217,114, 40, 42,234,186, 97,181, 90,241,238,245, 43, 16,142,243,243,115, 92,225,144, 82,145, 79, 4, - 8, 9,194,177, 88,204, 48,166,165,169,236,136, 47, 77,211,148,229,114,217, 19,190,162, 94,212,231,123, 75, 88, 61,142, 79,100, -103, 70,235,150, 19, 33,159,125, 16,186,238,118, 59,222,189,123,199,242,100,197, 79,239,159,243,250,245,235,176,113, 73, 56, 84, - 53,247,239, 61, 24,245, 3, 1,179,122,107,103,131, 16,187, 25,174,185,251, 27, 76,239,221,235, 63, 32,128,101,172, 71,122,225, -144,126, 54,159,205,168,235,134,195,225, 48,110,242,187,221,129,173,220,115, 54,207,209, 82, 35,220,145,226, 88,208,116,150, 36, -201,250,249,124, 69,148, 36,196,198,132,131,175,247,161,101, 93,150,188,123,251,150,197, 98,198,143,159, 62,231,124,121, 50,134, -182, 32,111, 15,103, 85, 85,241,234,213, 15,163, 5,113, 56,152, 13, 63,159, 16,158, 40, 9,137,133,147,222, 74, 39, 9, 10,255, - 52,186,141,156, 45,138,130,205,118,203,205,205, 13,175, 94,189,162, 40, 10,132, 86,125, 56,208,173, 72,212,116, 1,171,252,147, -159,172, 48, 93,195,119,223,126,224,183,127,255,143,156,223, 59, 37, 86,138,135,143,238,243,252,217, 35, 62, 94,188, 39,203, 18, -166,147,251, 8, 33,121,246,236, 25,171,213,138, 23, 47,158, 83, 28,142, 92, 94, 94,242,143,255,252, 25,255,242, 47,255,194,253, -243, 7, 60,121,242, 12,135,228,207,127,249,154,237,254,200,211,167,207,232, 12, 33, 10, 53, 78,241, 46,140, 78,133, 16,200, 72, - 99,241, 52,166, 67,197, 19,166,243, 37,182, 11,142,149,162, 44,144, 42,164,171, 93,223,236,120,253,250, 53,255,244, 79,191,229, -193,249, 9,147, 56,166,109, 26,132, 15,174,164,214, 20,253, 97, 79,112,118, 58, 35,203, 18, 62,222,172,169,155, 35, 58, 86,172, - 78, 23,100,121,194,245,213, 21,139, 30,114, 21, 42,244,219, 81, 70,211, 52, 60,232,153,245, 3,222,120,112, 20, 4, 42,161, 32, -235,137,123,187,253,134,188,204,120,240,224, 1,250,223,127,255,103,182,219, 45,173,245, 40, 29, 49, 63, 57,101,145, 36,188,123, -255,145,183,239, 47,200,146, 20,172, 67, 56,217,207,157, 4, 14, 25,112,118,202, 81,152,142,235,227,145,200, 25,180, 9, 51,117, -132, 65,167, 17,141, 87, 44,207,238,113,114,239, 33,157,171,177,166,224,229,171,119, 52,251, 45,139,104,206,249,234, 62,101, 93, - 4,112,133, 15,130,169, 36,202, 80,177,224,233,139,123,108, 54, 27, 46, 63,126,196,138,208, 90,181,214,147, 38, 25,171,229, 50, - 0, 23,132, 34,138,114,148,138,198,246,238,160,188,117, 46, 44,130,249,227,135,163, 5,199, 11,137,214,225,226, 57, 47,130, 39, -222,120,254,248,229,159, 40,170, 45,159, 61,123,198,175,126,254, 99, 94, 60,187,143,148, 53,215,235, 43, 54,187,130,123,167, 39, -188,191, 40,120,251,230, 61,157,191, 4, 29, 81,213, 71,116, 44,176, 88, 92,215,129,183, 36, 74, 18, 71, 10, 41,116,104, 81, 34, -113, 34, 84,166,145, 18,164,145, 66,251,154, 68, 26,126,241,249,143, 56, 91,253,138,206,121,202,174,225,216, 84,148,155,146, 15, - 31, 47,137,179, 25,141,147,188,121,243,134,139,203, 45,214,121, 60,190, 71, 88, 58, 98, 21,147, 78,250,116, 44, 29, 13, 94, 22, -240, 2,217, 87,155, 14, 69,231, 4,173, 79,105,137,185,216, 4, 2,154,119,142,217, 52, 70, 11, 25, 84,244,174, 79,197, 18,142, -188,127, 49,133,244, 28, 14, 59,222,188,121,133,138, 35,170, 58,216, 42,164, 86, 97,190,220,129,143, 34,226, 52,165,105,186, 48, -103,117,161,194,150,138,126,204, 96, 49, 38, 40,141,233,249,228,178,111,159, 75, 33,145, 3, 60,197,121, 92,207, 91,191,187,105, - 15,155,209,255, 95,229,174,148,194, 71, 30,111,236,184, 9,122, 9, 66, 6, 0,172,242,130, 8, 69,219,186, 81,248, 21,254,125, -192,179, 90,211, 32,124,139,165,223,172,148, 6,161,194, 34,172, 36,113, 58, 33,201,114, 68, 31,225,105, 92, 25, 34, 90,117,207, - 40, 63,134, 10, 6,235, 41, 11,131,166, 67, 45,131,251, 65, 75,232, 76,176,208, 68,113,131,142, 34,230,139, 25,121,158,115, 60, -238,192,215, 68, 58,184, 73,140, 15,237,236,193,202,162,123,138,216,128,130,237,122, 21,252, 48,199,180,125,126,243,112,173,134, -191, 55,136, 7,239,138,232,238, 42,150, 7,188,231,221, 17,135,115, 14,217,179,219,199,207, 57,255,137,122,126,140, 19, 29,191, -166,248, 4,123,171, 4, 35,103, 61,164,150,117,159, 28, 48,234,186, 30,115,204,239,138,243, 2, 72, 40, 4,231,236,247,123,234, -230,154,182, 13,235, 76, 81, 53, 52,157, 71, 74,205,118,179,231,252,228,132, 72,107,234,178,194, 25,203,160,190,200,146, 20, 29, - 71, 92,223,172,195,225, 80, 65,146,198, 88,219,177,219,109, 88, 46, 79, 70,194,217, 80,109,226, 25, 49,182, 89,146,146,198, 33, - 58,122,104, 9,183,174, 25, 41,120, 89,150,141,162, 62,173, 53, 73,150, 50, 95, 46, 40,218, 0,149,193,249, 79,244, 7,119,209, -188, 67,247,194,245, 27,228,127,116,152, 10,207,255,237,199, 81, 20,141, 22, 50,121,103,196, 33,101,248,122, 1, 11,219,245,157, -132,176,206, 84, 85, 67,150,168, 79,220, 13, 89, 22, 54,245, 65, 57,222,244, 63,155,148,146,233,100,130, 86,112, 56,236,200,178, -132, 60,205,192, 58,190,251,230, 27,118,187, 29, 78,220,118, 89,194,230,173,195, 33, 39, 73,251, 3,112,176,160, 57, 99,105,186, - 26,217, 42, 14,135, 3,254, 46,152,199,123,108, 27,172,128,211, 60,167, 40, 10,226, 36,225,225,195,135,227,104, 66, 88, 69, 93, -151,216,174,233, 15, 69, 9, 73, 18,196,153, 87, 87, 31,131, 3, 67,107, 54,219, 27, 30, 61,122,200,118,125,205,215, 95,253,153, -231, 79, 31,115,122,186,226,234,227, 37,222,245,194,236, 56,163,107, 45,111,223,190,229,242,195, 5,135,195,142,255,245, 63,255, - 39,234,186,230,203, 47,191,228,127,255, 63,255, 47,242,233,156,243,243, 7, 28, 14, 7,190,252,195, 31,153, 78,231,252,252, 23, -191,164,170,250, 53,202, 7,232,207,112,207, 3,126,215, 7,161,173,212, 72, 97,131,159, 92, 70,232, 40,197, 90, 67,211, 58,254, -245,127,126,201,111,127,243,107,158, 60,186,143, 38, 66,171,132, 88,105,146, 88,178, 92, 6,178,157, 51,146, 60,159,242,197,242, - 41, 55,187, 35,151, 55,107, 60,138,229,242,132, 52,141,249,252,179, 31,227,189,167,232,121, 11,109,219, 6, 38, 65, 63, 18, 8, - 21, 59,159, 28,246,157,115, 56,211,178,143, 35,180, 16, 92, 92,190,103,189, 94,243,231, 63,255, 25,189, 59, 52,100,179, 19,114, - 25, 84,219,105,154,225, 85,120, 8,242, 52, 14, 27, 69, 64, 79,244,109,162, 8, 60, 72,169, 16,210,146,229, 25, 34,150,136, 86, -226,132, 7,169,112, 61,152, 37,203, 50, 50, 61,165,110, 74,202,250,128, 22, 45,177, 52, 68, 50, 34, 85, 57, 77,213, 98, 69,135, - 76,131,232,105, 58,153, 32, 85, 76,162, 68, 88,152,147, 9,247, 31, 61,189, 93, 4,186, 22, 37,166, 72, 26, 82, 21,226, 80,227, - 40, 69,104,213,251, 36, 13, 93,211, 6,165,166,112,104, 29,225, 92,131,116, 22, 77, 88,192, 20, 45,222,120, 76,107,168,155,134, -245,118,195,147,243,148,159,254,167,191,227,139, 31, 61,197,214,123,142,219,151, 68,145,101,154, 74,210,108,202,189,135, 15,200, -166,167,252,251,159, 94,242,251,175,191, 69, 88,141, 17, 13, 77, 27, 54,207, 88,197,204, 39, 9, 89,154, 96,234,138,253,225, 72, -139, 69,147, 16,101, 83,138,170,196,209,145, 0,146,138, 4,184,191, 92,179,221, 21,236,143, 37,173,141,121,245,250, 53,219,195, - 62, 44,210, 58,226,102, 87,132,202,163,171, 81, 42,197,120, 9,210, 35, 93,192,153,202, 56, 65, 69,221, 39,192, 18,225, 28,120, - 27,148,182,206,227, 93,196,245,118,135,149, 49,135, 22,140, 83, 76,210, 41, 66, 6,207,191,150,146,178, 58, 98, 76, 71,150, 36, -156,223, 59,237, 31,170,154,166,169,248,120, 85,133, 83,162,150,225,185,192, 5,239,168, 14,209,151, 67, 53,230,156,195, 15,254, -117, 21, 54, 23,172,193,117, 6, 21,197,253,162, 20,188,228,182,179,183, 12,121, 25,102,183,194, 11,156,236,217,224, 74,224,135, -135,214,249,177,194,177,253,200,196,139, 32,150,243,222,245,149,117,223,190, 86,183, 28,238,206, 89,172, 17,184,190,179, 52, 84, - 45,101,233, 17, 98,142,150, 2,107, 90,160,235,125,183, 6,173,195,156,220,247,139,227,168,220,246, 33,104, 65, 20,183,109,175, - 99, 81, 97,140, 37,141, 19,178, 56,195,116, 53,145,134,184,175,232,135, 13, 98,104,151,101,147, 8, 41,116, 16, 6, 58, 71, 93, - 85, 8, 27,194, 55, 54,219, 29,199,178,198, 11,152,207,231, 97, 3,237,127,254, 0,141,241,159, 84,116,195,134, 58,250,150, 91, - 51,110,230, 67,187, 88,107,141,113,127,187,185,223,229,194, 15, 93,137,168, 79,189,194,203,176, 1,245,234,247,187, 27,144,148, - 18,231,123,123,157,138, 63, 33,210, 69, 73, 16,149, 77, 38,147,241,231,141,227,120,140,166,221,239,247,227,247,157,101,217, 40, -146,178,214,134,206, 80, 23,225,188,162,172,250,136, 88, 20,157, 13,144,171,174,117, 92, 87, 91, 30,222, 59,114,178, 58,227,250, -230, 35,219,237,158, 52,203,168,203, 42,132,103,244,241,160,135,195,129, 40, 74,122, 88,201, 17,173, 18, 14,135, 29, 74,199,204, -102, 57,117, 29,196,101,173, 53,168, 62, 33,114, 28,101,120,168,250, 17,216, 96,139, 26,230,235, 81, 20,113,239,222, 61,214,219, - 13, 85, 83, 51,159,207,233,156,229,226,226, 2, 45,251, 14,197, 29, 74,220,208,101, 26,237,109,198,192,157, 77,125,104,241, 15, - 99,150,178, 13,215,194,221,105,219, 7,205,146, 29, 71, 76, 67,247, 99,240,204, 71, 50, 25,255,189,233, 42,136, 52,145, 78,152, - 77, 21,141, 9,227,130,206, 26, 92,255,236,236,247,123,230,147,108,164,239,133,118,245, 50,180,155, 35,205,253, 39,143,120,115, -241,158,111, 95,189, 14,100,196,254, 89,107, 76,135, 57,118,108, 14,187,113,132,114,247, 89, 50,166, 35,205,179,240,142,218, 64, - 43,140,117,232, 88, 68, 82,141, 66, 56,231, 28,166,239,222,228,121,206,116, 58, 37,205, 3,236, 37,192,213,220, 24,161, 42, 37, -188,122,245, 3,101, 89,112,118,118,134,109, 91,186,186, 1, 23,144,203,187,249,132,147,211, 21,211,105, 72, 0,204, 92,120,246, -179, 44,227,205,219, 87,236,143, 7, 86, 39,171, 0,222, 57, 57,227,205,187,139, 49,112,231,226,226,130, 15,151, 87,236,247,225, - 89,121,247,238, 29,243,121,192, 5, 15, 93, 47,221,199,171,118,198,208,118,134,206, 4, 75,242,108,177,100,185, 92, 6, 0, 85, - 91,147, 78,102,188,152,159,176,217,108,248,225,229, 7,118,187,130, 23, 79, 31,176,154, 47, 72, 98, 25, 82,228,222,191,225,209, -163, 71, 20, 77,205,122,191, 9,174,159,201,140, 39, 79, 31,112,179, 61,242,242,205, 15,220, 95,157,209,181, 33,105,241,176,219, -115,117,117, 69,211,133,119, 72, 75,133, 64, 97, 76, 55,186, 41,248,107, 30, 4,176,221,220,224,173,227,199, 47, 62, 11,107,207, -217,249, 61,206,207,207,169,170,138,143,215, 55, 61,215,186, 96,191, 59,144,102, 25, 66, 4,229,120, 72,141, 20,224, 61, 14, 63, -158,122,195,248, 39, 40,152, 67, 59, 77, 98,173,196,182,150, 44,113, 28,247, 59,148, 78,208,145,196,212, 29,208, 34, 91,135,158, -167,184, 16,110,133, 7,182, 69,129,106, 90, 28, 7,162, 56,163,109,143,204,103, 75,108,175, 36,197, 58,142,173, 9, 16,129,178, - 65,171,144,192,100, 93,133, 78, 98, 84,127,232,240,194,225,188,195, 26,139,115, 6,165, 34,172, 7,103, 28, 78,180,184, 58, 44, -240,219,253,161,111,203, 73,210, 36,162,170, 15,236,247, 27,164,175,145,177, 68,170,240,247, 90,219,130, 18, 44,166, 25, 63,121, -241, 24,165, 5,203,179, 83,182,197,134, 63,125,245,103, 78, 22,247, 57, 59, 59,227,233,195, 7,196,145,226,221,235, 55,252,229, -155,239, 40,171,142,116, 58,229, 88,119, 97,163,240, 26, 39, 60,138, 20,227,107,222, 95,109,248,127,126,255, 39, 94,127,188,102, -146,196, 24,161,241,206,144, 36, 41,109,103,185,186,186, 2, 20,113,146,132,106,174,117, 68,241, 64, 18,171, 49, 93, 67, 26, 75, -202, 54, 16,205, 68,223,190, 22,125,197, 30,212,240,132, 77, 79, 7, 8,135,138, 82,238,157,223,167,173, 42, 16, 30, 21, 75, 76, -217,161,163,224,159, 95, 44,130, 2,255,216, 71, 16, 78,103,147,158,190,149,160,122,171,206,112,130,239,186,142, 93, 93,147, 39, -179, 32,208, 49, 97, 33, 83,189, 80, 70,222, 9,242,240,120,156, 5, 99, 3, 63,221, 99, 81,178, 39, 85,221,177,100, 41,237,145, - 34,234,147, 83, 36,222,135,191, 23, 20,231,195, 34,103,111, 43, 77, 99,113,158, 16,149, 41, 2,137,207, 24, 75,219, 25, 90, 99, -113, 94,225,157, 10,104,221,126, 65, 13, 49,170, 53,177, 16,100,113,255, 72, 59, 79,212, 87, 68,194,121,232, 25,247, 90, 74,138, -210,160, 39, 2,235, 5,120,133,210, 49, 74, 74,210, 84,113,118,118, 74,219, 26,156, 21,100,145, 68,234, 48,195,236,186, 46, 28, - 32, 85,159, 57, 62, 73,232, 76, 77, 85, 31,113,166,229,120, 44,233, 26,199,116, 49,231,209,163,135,124,184,188,166,172,171,177, -170, 12,108,104, 57,122,121,109, 47, 96,243,214,245, 28,238,112, 13,189,135,206, 90,164,214,180, 67,128,134, 53,100, 81, 54, 58, - 61,198, 42,177, 15,230,208,119,194, 92,134,131,195,120,104, 16, 67,133,110,198,143,251,109, 38, 92, 59,211,144,250,232, 19,120, -205,208,142, 31,126, 13, 98,191, 65, 41, 29,199,113,255, 28, 26,172, 15, 7, 56,235, 65, 9,133, 80,154,253,161, 36,155, 77,241, -125,158,184, 16, 2,169, 99, 34, 17,192, 48,194,116,108,182, 71,126,242,217,115,182,219, 61,135,195,129,201, 36,197,212, 21, 54, - 82,224, 19, 22,243, 41,235,245, 22,112, 1,115,219, 90,242,229,164,111,193,211,179,232,117,216, 96,202,146,198,118,108,183, 33, -237,207, 89,131,233, 90,182, 85, 57,142,114,150,171, 5, 74,135, 77,102,146,103, 1, 78,148,133,214,244,116,154, 51,155, 77, 17, - 2,222,189,189, 64,137,144,254, 35, 69, 16,120, 13,215,118,128,180, 4,158, 63, 72,125,171,248, 31,103,235,125, 66,160,115,142, -214,134,103,211,249,112,159,135,231, 59,207,115,156,191,213, 92,180,214, 96,170,208, 61, 72,227, 8, 91, 55, 72, 15,117,111, 75, - 28, 70, 31,101, 29,192, 73,171,197,156,235,235,107, 38,105,152,113,215,166,195, 88,207,195, 71, 79,248,230,219,191,176, 63, 22, -252,250, 55,191,161, 51,134,203, 94,237, 63,153, 77,145, 62,116,137,166,147,148, 67, 17,248, 10,117,219, 34,188,199, 11, 65,164, -117, 96,231,119, 29, 73, 18, 19,167,209, 56, 54, 80, 74,145,196,201,232,179,159,207,231, 40, 41,153,207,102,156,157,158,246, 49, -166,113,176, 56,118, 53, 90,247,136,218,221,129,253, 62,220,227,187,182,203,151, 47, 95,242,244,201, 35,158, 63,127,206,199,139, -247,188,122,245, 10, 29, 41,206, 78,239,225,144, 28,139,154,175,191,251,159,193,178,153,198, 28,203,150,120,127,224,244,244,148, -166, 53,172, 55, 59,164,212, 76,166,115,218,206,208,116, 6,231, 5, 58,137,169,218,230, 19, 30,128,212,241,168,191, 48, 38, 88, - 49,227, 40, 10,252,245, 52, 97, 54,157,134,152,218, 54, 0,173,238,221,123,200,251,247,111,217,109,214, 28, 54,215,124,124,127, -194,143,158, 63,228,209,253, 19,164,210,252,240,242, 37, 58,137,137,211,132,120, 57,199, 19,178,208, 79,231, 25, 39,179,207,217, - 92,111, 88,239,214, 60,124,248,136,103,207,159,240,229,239,255,200,213,213, 21,147,105, 78, 81,214,227,218, 56,116, 90,232, 9, -143, 73, 18,145, 68, 41,229,225,192,122,187, 33,214, 81,104,195,239,118,232,251,247,206,216,172,111,216,239,247,108,182, 59,118, - 27,137, 67,240,232,124,133,117,144, 77,103,236, 15, 37,222, 9,226,108,194,219,119,111, 49,120, 98, 17,179, 92, 44,201,245, 20, - 97, 36, 74, 74,188,118, 28,154,150,174,179, 40, 37,104,125, 69, 62,157, 35,132,195, 25,135,144, 17, 82, 40,162,153,102,215,181, - 40, 25, 84,234,157,115,212,157,164, 45,107, 38,249,156, 72, 40,210, 84,211,181,129, 65,236,173, 97,146,196,124,120,123,201,126, - 26, 97,177,232, 88,245,194, 46,137, 22,138,186, 87, 90,230, 81,134,235,111, 80, 58,153,210, 25,207,225, 88,161,163,132,186, 51, -220,172,183,236,143, 69,160,156, 69, 49,231,179, 57, 69,125,228,247,127,249,129,203,245,129, 31, 61,121,200,106, 49,193,148, 21, -199,157, 65, 10,129,146, 71, 14,199,192,108,255,229,231,143,208,249, 4, 39,151, 60, 61,155, 51, 79, 83,186,166,161,109,111, 80, - 78,145,136,154,127,254,245, 23,124,245,253,107, 14,101,104,241, 74,192, 10,129, 17, 62, 32, 9,245,132, 86,231, 92, 20, 29,215, -141, 64,212, 37, 62, 59,162,176, 20,187,119,125, 92,172, 67,168, 16, 8,224,133, 10,185,238,198,224,141, 65, 96, 57,222, 92,145, -196,138,174,217,143,144, 8, 37, 35,148, 76, 64, 74,156,112, 56,107, 73,162,176,115,137,190,237,249,225,253, 59,226, 88,147, 79, - 82,186, 58,144,168,156, 51,236,139, 61,168,176,232,196, 89,218,199, 27, 6,160,222,161, 44,145, 85,152,157,214,117,195,186,220, -132,232,213, 52,193,217,142, 72,203,222,123,233, 71, 50, 84,103, 61, 40,141,239, 83,221,156,115,161,133, 36, 85,111,121, 84, 88, -231,208,125, 37, 18, 22, 59,200,178,156, 36,137, 80,113,132, 34, 10, 45,176, 62,227, 56,200,180,253, 24, 85, 57, 36, 81, 25, 17, - 44,149, 97,195, 3,231, 20,130,160, 26,247, 82,208,182, 53,145,111, 89, 46,207,216,238,143, 32, 52, 50,142, 64, 9, 58, 52,179, -197, 9,213, 97, 31,172, 78,211, 5, 87,155, 61,245,110, 77,121,216, 33,244,140,182,243,232, 36, 39, 75,115,154,186,100,154,165, - 8, 83,209, 22, 91,156, 84, 33,138,209, 11,170,178,197,123,193,177,172,209,113,134, 32,162,106, 26,188,112,160, 90,156,237, 80, - 73, 70,100, 38, 84,213,150,253,197, 7, 30, 60,122,198,124, 57, 67,151,138,178, 60,226, 92,152,163,102,105,204,122,125,236, 65, - 55, 18, 99,116, 31, 16,100,111, 55,130,166, 37, 78, 82,234,182, 9,215,194, 9,100,207, 91,255,143, 4,106, 74, 41, 68, 47, 84, - 68,136,112, 24,104,219, 64,189,178, 61,138, 87,132, 17,138,235,186,240,172, 37, 9, 81,172,130, 0,209,132,170,214,180, 29,109, - 29,168,120,117,219, 4,126, 69, 23,218,165, 42,210, 28,203,162, 39,226, 57, 84, 20,211,116, 45, 66,233,176, 72, 57,143,113,158, -174,173,177, 82,128,136, 56, 28,107,188,117,129, 14, 40, 28, 77,219,133, 81, 71,154,209,213,130,175, 95,191, 99,117,118,143, 23, - 95,124,193,219, 87,223, 82, 28,119,220, 59,201, 41,170,146,253,218,112,122,254,136,174, 49,236,118,123, 36,138, 52, 73,240,214, -210,214, 85,208, 54, 76, 38,104,149,226,253,156, 56, 14,237,254, 71,247, 31,112,220,237,137, 53,100,137,226,228,225,189, 49,216, -232,236,252, 30, 31,222, 95,178, 92, 46,111,171,111, 37, 71,197,246,239,255,240, 37,190,107,121,250,224, 28,225,125,192,144, 54, - 53,145, 82,100, 73,130,245,142, 40,138,169, 15, 7,240, 2,173,163, 62, 2, 86, 34,164, 14, 22,202, 56, 26,109, 93,198, 25,132, - 15,207,234,161,168,112, 93,232,124, 84, 85,131,117,240, 68,233, 81, 59, 81, 86,199, 16,152, 18, 71,172, 78, 22,152, 38, 99,125, -125,221,111, 76,150, 40, 9,156,128,229,124,198,113,191,227,131, 13,157,156,155,155, 27,150,203, 37,145,210,196,113,198,205,122, - 71, 89, 26,172,105,248,195,151, 95,242,179,159,253,140,255,246, 95,255, 43,151,151,151,156,156,158, 82, 28,143, 33,192, 73,120, - 78,186,150,195,110,207,118,191,227,254,189,115,102,139, 57,199,253,129,211,211, 85,216,212,251,240, 24,239, 3, 93, 47,207,115, -146, 94, 83, 48,120,213,101, 47,212,220,172,183,220, 92, 94, 83, 20, 5,223,191,122, 9,194, 35,149, 98,177, 88,112, 60, 30,199, -153,241,139, 23, 47,152, 77,114,138,227, 49,180,166,139, 2,128,197,234, 20, 47, 20,203,229,146,253,177, 64,199,154,203,205,150, -109,209,211,226,122, 86, 64,231, 97,119,172, 57,150, 45,198,135,130,242, 80,175,105,141,195, 10,201,161,170, 57, 28, 43,164,212, -227,200, 40,201,130, 10, 63, 28, 28, 5, 82,164,228,147,148,170, 56,112,221,148, 52,179, 25,211,108,194, 36,141, 33,142,136,163, - 8,107, 60, 63,126,241, 25, 93, 91,242,195,119, 95,179, 63,238,216, 22, 59, 26,251, 99, 22,243, 64,215,163,110,137, 29, 44, 22, -193, 54,103, 27, 67,158,230, 52,166,230,225,233,130,229, 52,227,195,229, 21,109, 87,241,155,191,255, 21,223,127,247,146, 31, 94, -189,230,225,195,199,236,247, 71,116,146, 34,229, 48,230, 49,125, 54,128, 27, 93, 51, 58, 78,121,242,228, 17,187,195,158, 44, 75, -208, 63,252,240, 3, 31,175,215, 40, 1,211,249,156,127,250,167,127,226,187,151, 63,176,221,237, 65,128,105, 90,148,244,232, 40, - 98, 50,137,153, 77, 18, 14,101, 9,190,195,180, 53,194,205, 49,141, 7,221,245,213, 86,140,232, 57,190,105, 22,211,182,245,173, -186, 87,134,112, 20,231, 5,149,105,113,206,144,106,141, 53, 1,237,153,166, 57, 90, 7,159,169,119, 6, 37, 5,177,146, 88,231, -168,235, 35,214, 54,148,213, 17,143,164,182, 93,200, 29,238,171,153, 94, 19, 77,211,132, 5,174,105, 13,198,149, 32, 36, 87,155, - 61, 77,107, 40,170,154,178, 49,200, 40, 6,149,226,163,136, 15, 31,111, 16, 31,133, 81, 0, 0, 32, 0, 73, 68, 65, 84,232,218, - 26,231, 44,187, 99,197,246,120,228,252,228,132,249, 36, 65, 11, 69,117, 56, 4,102,120,215, 33,180,102,189,222,178,123,115, 68, -167, 25, 89, 18, 81,155, 2,141, 71, 90, 67, 91, 91,242, 84,112,118,127,197,229,250,154,119, 31, 95, 34,162, 20,173, 52,194, 7, - 14,184,195, 82, 24, 67,106, 18,114,161,144, 73, 70,113,104,121,243,225, 18,233, 44,179, 73,204,249,217, 25, 75, 17,225,133,102, -247,242, 61,109, 83,210,161,136,100,132,210, 34,116, 29, 92, 75, 83, 59, 94, 60,188,143,140, 52,117,213,114,117,115, 67,101, 90, - 18, 61,101, 49,155,163,227,148, 99,217,112, 40,138,222,158,100, 0,135, 49, 2,211, 85, 56,111, 73, 99, 73,172, 21,182,183,194, -220,226, 40,131,141,109, 76,220,194,142,243,176,161, 13,215, 84, 53, 74, 69,227, 70, 62,204, 85,135,207, 15,128,152, 91,101,182, -238, 43,199,219,170,101, 56, 60,168, 49,210, 51, 70,245,138,250, 33, 86,116,168, 82,134, 57,239,176,161, 15, 15,184,239,145,170, -206,130,247, 34, 84, 59,206,135,108,241,126,230,251,224,209,189, 96,149,170, 67, 44, 98,215, 25, 76, 99, 89, 44, 66, 69, 23,230, -155, 14,233, 12,121, 18, 42,197,147,249,130,131,207,184,218, 53, 52,141, 5, 95,177,185,185, 98, 62,137,200, 21, 28,119,215, 36, -139, 21, 17, 49, 82, 38, 24, 47,238,204,148, 99,170,166,102, 58, 95, 32, 37,116,174,163,181, 53,162, 21,116, 38, 88,171,116,236, -121,243,230, 13,113, 18, 8,132, 67, 42,215, 93,133,187, 49, 6, 76,168,250,166,147, 28,225, 67,171,185,235, 58,148, 86,212,117, - 77,231, 12,248, 79,245, 8,119,125,227,119,231,173,119,125,233, 82, 74, 20,225,186,135,202,223, 6, 17,172,115,184,222, 79, 44, -164, 31, 99, 98,189,191, 37, 87, 13,173,233,170, 41,251,207,249, 79,114,222,187,174,163,233, 90,242,124,214, 71,119, 14, 35, 4, - 17,240,183,198, 96,189,192,184,128, 92, 69,170,192, 43, 24,146,202,165, 64,168,136, 56, 19,212, 85,197, 87,223,124,195, 63,255, -253, 47, 57, 63, 63,231,234,227, 59,210, 68,145,166, 51,246,149,165, 42, 14, 36,145, 34,139, 99,132,144, 68, 73, 70,219, 26, 98, - 29,186, 95,182,237, 80,113,194,114,177, 96,181, 90, 49,159,135,234,181, 51, 13,121, 60, 65,230, 19,206,207, 78, 57, 30, 3, 32, -231,116,181, 28, 89,232, 67, 38,246,144, 33, 62,157,207, 57, 89, 46,240,214, 81, 29, 11,226, 40,234, 9,103,114,244, 60, 87, 77, -160,163,217,254,218, 35,125, 15,143, 9,221,160, 40, 82,196,105,208,246, 52,109, 73,164,228,168,121, 80,136,113, 4, 20,190, 94, - 54,222,211, 64,191,235, 69, 82,177,186,109,243,123, 79, 85, 28,199,121,112,158,231, 65,156,234,110,245, 23, 77,221,177,190, 9, - 44,248,182,168,184,185,222,161, 35,201,102,125,195,226,227,140,213, 42,100, 44,124,247,221,119,252,238,119,191,187,147,166, 87, -147,101, 97, 20, 53,124,253,242, 88,244, 35,148,158,154,167,196, 40,240, 26,253,247,253,108, 93,246,152,216, 65,155, 96,155, 64, -155,203,243,124,212, 93,248, 62, 59,225, 46, 23,127,120,246,103,179, 25, 85, 85,241,250,245,107, 30, 63,126,204,102, 83,242,240, -225, 35,190,253,246, 91,116,148,208, 30, 2,180,169,179,142, 56,214, 72, 25,222,137, 48, 14, 9,107, 80, 83,118,125,107, 61,240, - 39, 76, 29,188,236, 87, 87, 87,129, 50,151,207,209, 42, 36, 90, 14,157, 72,239, 45, 55, 55, 87,236, 54, 55, 97,195,143, 52,117, -121,164,206,167,156,159,159,143,239, 34,177,236,137,139, 83,126,254,203, 95, 97, 76,205, 15, 47,191, 99,127, 60,240,119,127,247, - 83,206, 78, 87, 44,231, 83,154,170,102,179,217,176,154, 47,200,103, 83,180,208, 68, 2,140,112,100,105,196,143,158, 61,226, 88, -213,220, 92, 93, 16, 39,154, 71,143, 30,113,117,189, 38,203,178,128,250, 53,166,199, 74, 71,227, 1, 60,140,197,160, 44, 43,246, -199,146,217, 98,133, 82, 22,253,225,114,205,233,249,138, 7,247,206, 67, 20,231,124,129,117, 1, 40,211,118, 29,211,105, 66,170, -131,226,114, 54,159,209, 52,167,228,213, 4,107, 3,108,222,123, 79,103, 27,156, 55, 1,101,167,130,253, 72, 71,114,100, 85, 11, -225, 71,251,145,148, 42,248,152,123, 63,181,237,111,158,148, 18,221,167, 13, 5, 53,100,135, 86, 18,111,250, 25,147,181, 68,217, - 20,131,194, 19,230,154, 82, 74,156,109,199,135,199,218,219,164, 36,107, 61,198, 28,105,218,208,190,107,141,163, 54, 6,161, 52, -169,214, 56,235,168,186,150,182, 42,192, 25, 58,103, 40,235,130,237, 97,203,199,235, 43, 78,151, 75,150,121,142,176,134, 52, 73, -168,235,134,166, 61, 80,153,150,206,187,112,147, 15, 21, 71,235,144, 62,248, 38,179,124, 66,170, 52, 85, 19,232, 78, 54, 12, 30, -105,188,193,245,186,132, 32,242,113, 28,143,123,218,174,196,250,160,132, 94,229, 19,164,239, 72,123, 63,123, 85,215,120, 20,206, - 52,104,161,136,181, 10,200,195,182, 38, 17,142,231,207,158,241,191,124,241, 25,105, 18,113,255,254, 61,226, 56,229,229,171,119, -252,219,239,126,207,135,139,107,234,226,192, 34,142,144,174, 67,216, 22, 73,211,123,232,131,204, 49, 75,116, 32,255,201, 16,230, - 49,188,100, 67, 24,196,144, 65, 62, 68, 40, 14, 51,194, 65,229,123, 27,220,225, 63, 81,245, 14,127, 62,188,164,195, 60,235,174, -119,252,238,166, 50,120, 94,239,182,111,135,182,115,215,117,227,166,255,215,191, 6, 11, 93, 89, 23, 97,158,236, 61,130,224,132, -208, 74,135, 44,109,231,209,145,162,173,246,204,242,156,235,203,151,100,178, 69,235, 96, 17,137,132, 35,142, 20, 77, 85,146,106, - 29, 66,111,132,160,117,146,221, 97, 79, 89, 85,116, 74,115,179,190,162,115, 10,193, 12,225, 59,158, 61,122,202,179,251, 39, 92, - 92, 93,178, 46,106, 90,211,129,212, 68, 81, 88,104,157, 49, 65, 24, 25, 39,129, 89, 94, 20, 8, 61,140, 20,250,182,181,247,120, - 4, 69, 81, 80,245, 28,249, 1,203, 58, 64, 80, 66,181, 22,160, 19,131, 96, 45,116, 75,106,218, 54, 40,134,227, 40, 69,120, 57, - 98, 77,239,194,101,194, 49,247,214,166,118, 87,252, 54,108, 20,105,220,199, 26,223, 17, 36, 58,231, 48,222,225, 4,119, 68,122, -225,192, 52,204,228,135,251,157,231,121,127,120, 16, 33,132,133,176, 65, 75, 41,137,133,164,107, 45,173, 53,163,165,203, 59,209, -223, 95,139,245,224,133,186,195, 22,184,213, 74,136, 17,110, 21, 52, 26,235,155, 45, 31,175,215,252,226,139,231, 56, 91,179,217, - 92,177, 92,173,112,214,176,189,185, 98,154,207, 67, 4, 41,138, 56,209,212,117, 59, 30, 48,235,166, 68,123,199,124, 62,103, 58, - 11,126,237,227,241,200,241,102,207,231,159,127,206, 87, 95,253,137,247, 23, 33, 4,230,226,227, 21, 85,211,142,239, 66,211, 43, -179,117, 15, 8,170,154,174, 39, 48,134,192,148, 56,142,169,187, 22, 25, 73,166,243,156, 44, 79,169,109, 67,231, 76,152,139,123, -139,183, 62,116, 43,251,123,225,177, 8,233,209, 81,200, 83, 72,250,231, 70,120, 27, 80, 47,206,224,108,215,255,215, 80, 20, 33, -208,106, 20,252,154,112, 72,170,171, 0,194,153, 78,167,148,101,216,236,119,219,117, 47,148, 11,226,191,123,247,238,241,253,247, -223,179,152,205,136, 98, 53,178,252, 67,214,188,102, 54,155,179,223, 29,185,184,184,224,252,252,156, 39, 79,158,240,167, 63,253, -105,212, 71, 76,122,254,252, 32,216,186,185,185,161,105, 44, 81, 36, 80,253,252,221, 9, 79, 36,111,197,145, 66, 8, 84,223, 50, -246,222, 83,217, 14,219,133,119, 90, 56, 40,218,154,201, 98,198,201,217, 41,247,239,223, 15, 57,236,139,249,168, 53, 24,186, 71, - 0,215, 87, 87, 0,252,195, 63,252, 3,223,124,243, 13, 15, 31, 62,100,187,221,134,205,174,110, 67,160,147, 20,104, 17,128, 64, -169,214,148, 93, 77,162, 36, 15,206, 78,121,247,230, 21,190,235,144,206,129, 53,216,174,197,212, 53, 58, 17, 36,113, 68,154,164, -227, 1, 34, 86,122, 44,224, 90,199, 56,206, 24,198, 77,117,219,210,117, 27,140,179,228, 89, 15,255,210,241,136,227, 61, 57, 89, -177, 60, 89,208,154,142, 15,239,223,112,121,121, 21, 14,125, 58,226,176, 63,128,179,193, 22,110, 44,146,144, 23,239,149,100, 50, -155,226, 9, 45,255,248, 52,165,172, 58,172,219,176, 88,204,250,220,138,138,186,109,145,242,214,146, 26, 14, 31, 49,122,158,112, -115,181,230,234,122,131,233, 60, 73, 26,161,127,253, 15,127,207,217,217, 25,206, 57,190,125,249,154,175,190,254,134, 77, 47, 70, -153,228, 57,214,122,116, 63, 63,243,206, 48,205, 51,102,211,201,104,129,112,109, 67,219,167, 76,141,138,207, 30, 1, 40,101, 80, - 27, 7,193,147,191,179,168,247,169, 50,226,214, 47, 27,245,115, 63,103, 77,184, 73, 50, 14,121,200,214,133, 86,190, 19, 68,105, - 70,103, 66, 53,209, 30,139, 32, 42,194,211,182, 69,127, 3, 12,214, 24,132, 12,202,238,178,170,195, 12,190,110, 81, 81,130,150, - 2, 79, 8,148,111,235,118,100, 92,235, 40, 38, 17, 17,206, 89,106,211,240,113,123,224, 88,214, 92,165, 49, 39,243, 37, 75, 20, -206, 7, 11,156,237,179, 49,170,166,161, 42, 14,252,232,225, 35,176,134,124, 62, 35,203, 50,138,170,229,195,197, 37,157,237,152, - 77, 83,246,199,166, 87,118, 75,148, 36,180,169,156,197, 89, 75, 93, 89, 44,176,152,133, 88,200, 88, 69,196, 42,204,245, 78,151, - 57,171,211,115,126,254,139, 95,242,239,127,248, 35,111,222, 93,112,118,190,228,231, 63,249,123,206,207, 86,164,145, 70, 41,193, -245,199, 75,182,155, 53, 15, 31, 60,226, 31,255,225,215,252,248,199, 47,248,243, 95,190,229,205,219,247, 52,198,246, 96, 30,131, -117, 10,157,196,128, 35,142, 99,150,203, 57,121,158,179,223,239, 71,188,231,221,141,121,168,200,134,151,123,200,139,190,187, 1, -123,239, 71,255,228,221, 54,239,176,169,123,239, 3,213,234,110, 40, 70,255, 12, 12,149,249, 93,159,243, 93,129,217,240,245, 7, - 37,238, 93, 59,214,248,172,169, 94,239,225, 92,128,171, 12,220,255,225,244, 31, 50,181,130, 32,169, 58,114,125, 93,240,252, 65, - 16,196,165,145, 34, 75, 3,105, 78, 68,193,235,110, 93, 71,215, 25, 58,175,177, 94,176, 61, 28,208,211,128, 54,109, 58,143, 20, -142, 68,122, 30,221, 63,229,197,179,135,220, 59, 91,240,253,187, 43,222,126,184, 66, 56,200,210, 20,211,180,124,248,240,129,235, -235,235,113, 78, 87,151, 21, 58,145, 33, 89,213,218,144,163, 16,197, 72, 12,171,213,138,162,172, 70, 52,228,240,243, 15, 63,103, -146, 36,227, 61, 24, 68,120,139,197, 34, 8,246,202,130,182,173,177, 61,159,192,244, 81, 54, 22,255,233, 1, 72,200,255,112,195, - 87, 74, 65,196, 39, 31,135,138,145, 79,102,121,195,231, 66,158,122, 60, 86,113,225, 48, 37, 70, 8, 15, 4, 57,199,176,184,203, - 62,235, 25, 27, 72,144,129,228,216,139, 0, 9,162,199,144, 28,247, 41,195,254,174, 98,188, 51,134, 73,150, 33,148,224,171,175, -190,226,209,217,156, 7, 15, 31,241,229,229, 59,178,166, 65,107,133,244, 14, 37,124, 88, 28,125,176,172, 46,102, 57,214,135, 88, - 92,132, 68, 69,122, 20, 33,166,105,202, 98,177,192,249,208,225, 59, 28, 14, 1,229, 57, 13,136,208,174,235,152,207,231, 33, 49, -174, 10,138,243, 60,159,141,145,170,147,201,132,123,247,238, 33,132, 96,191,217,114,179, 94, 7,128, 77,146,112,221, 3,154,172, - 13,158,110, 29,223, 86,159,131,213, 50, 48, 37, 12, 18, 69, 36, 8,105,113,222,163,188, 71, 9,208, 82,161,189,192,244,215,249, -120, 56,208,214, 13,182,235, 53, 33,189, 53,176, 40, 10,188,189, 37,247, 13, 93,202, 80,173,103,163, 77,178,235,110, 15,217,117, - 15,140, 90, 46, 79,136,180, 68,137,148,203, 15, 31,232, 76, 16,207, 61,126,252,152,195,225, 48,162,119,111, 25, 4,221,136, 82, -221,237,118, 76,167,211,208, 69,146, 30,107, 13, 74, 74,226, 97,244,214,117,225,144,137, 24,227, 84, 21, 34,140, 65,100,128,254, - 44,151, 75,238,157,158,113,114,118,218,139, 43,163, 17,223,219, 52, 13,235,245, 58,228,175,199, 49,255,229,191,252, 23,126,243, -155, 95, 49,159,207,249,227, 31,255, 56,206,192,119,219, 53, 73, 58,193,119, 93,208,193,104, 73, 36, 64, 57,135, 22,176,156, 77, -201,180,198, 69, 22,103,187,254,221, 11, 72,217,229, 34,231,209,249, 61,156,211,116,238, 86,208, 55, 4,255,120, 25,214, 54,213, -111,236, 81, 52, 25, 49,199,195,245, 87, 74, 65,213,224,188,231,176,223,246, 99, 50,195,201,201, 25,219,237,150,139,143,107, 38, -147, 41,211,124, 78,146,102,152, 46,232,105,218, 58, 40,219,189, 12, 7,117,173, 37, 40, 77, 28, 37,172,166, 51,154,174,183,173, - 10, 63, 10,143,247,251, 61,182, 79,156, 12,208,159,208, 25,205,210, 5, 73, 28, 24,240,214,117, 65, 67, 52, 93,174,248,254,245, - 27,214,235, 53,101,219,113,181,217, 82,119, 6, 75, 88, 76, 7,234,145,173, 58,116,191, 25, 79, 38,147,176,224,104, 69,235, 36, -222,246,173, 35,209, 11,143, 8,115,166,166, 14,167, 28, 55,120,151,149,236, 25,200,182,239,177,133, 86,106,164,194, 11,215,154, - 64,126, 75,251,133,108,191,175, 16,186, 7,153,120,112, 40,154,206, 34,123, 63,159,144, 30, 25,169, 48,175, 23,225,228, 41,164, -192,122,131, 53,150,206,184,128,182,237, 55,144,174, 53,152,174, 87,108, 91,211,207,147,131, 50, 83, 70, 26, 17, 5,196,168,181, -150,194, 56,202,125,129,245,138, 99, 85,147, 79, 82, 22,139, 57, 77, 97,185,124,255, 30,139, 37, 75, 34,214,251, 29,182,105,249, -240,241, 50, 96, 81, 13, 88, 33, 73, 38, 25, 39, 42, 98,119,188, 64,224,251,235, 18,186, 31, 18,200, 52,204,102, 51,164,206, 72, -147,132,170,106, 16,177, 34,206, 98,220, 96, 75, 51, 13,166, 17, 60, 62, 63,229,209,249, 41,143, 30, 62,228,252,236, 52,168,183, -187, 22, 45, 97,241,217, 51, 46, 47, 47,249,250, 79,127, 64,234, 32, 10, 44,139,134,105,158,114,154,101, 32, 53,155,221, 54, 84, -196,222,211,118,125,198,179,105,169, 10, 23,120,234,127,213,150, 29,124,163, 73,146,244,136,208,102, 20, 64,253,117,228,231, 93, -251,211,221,175,113,215,171, 60,186, 23,254,202,250, 51, 40,224,241,129, 65,143, 12, 15, 80, 24,198,244,148, 62,211,183,147,101, -192,234, 88,239, 66,102,119, 15,174,145, 82, 98,188,194, 59, 70, 1,167,181, 1, 52,212,182, 45,182, 13, 93,142,203,203, 75, 58, - 7,171,213,170,255,126, 60,214,120,218,178, 33,137, 99,202,227, 1,227, 65, 57,139,113,138,108,146, 83,148, 37,145,174, 88,206, -103, 36,217,132,229,124,198, 50,143,120,112,186,160,220, 94, 83, 55, 53,179, 73,224,146, 39, 50, 97, 58, 73, 88, 46, 18,102,249, -132,147,229,138, 39,143, 90, 28,138,124, 49,167,115, 21, 93,107,177, 38,240, 20, 22,211, 64,196,243, 94,176,222, 4,209,214,112, -136, 25,210,164,226, 94, 76, 52,153, 76,144, 82,142,115,197,233,116, 26, 32, 51,166,163,171, 91,250,163,234,208,184, 70,139, 91, -133,178,151,129, 11, 32, 21, 61,122,149, 48,227,239, 79,215,157,105,254,198,250,134,184,205,108, 31,252,178,206,216,158,148,219, -195,135,250,205, 60, 84, 49, 10, 37,123,162, 88, 15,189, 9, 57,218,224, 92, 32, 79, 58, 47, 66,246, 2, 42,136,125,122,212,170, -115,119,188,242,222,253, 77,196,235, 32, 90,138,164,230,234,242,130,127,253,127,255,141,255,246,159,255,145, 23, 63,254,130,195, -113,199, 34,203, 72,227, 4, 33, 20,203,213,156,174,179, 84,117,203,124,182,164,105, 59, 58, 27, 54,121,169, 53,222, 91,138, 62, -237, 47,159,102,196,201,125, 14,135, 3, 73,146,141, 99,166,160,129, 16,100,214,115,113,241,113,140, 63, 29,236, 21, 77,107,104, - 59, 75, 54,153,178, 88, 45,105,154,134,221,113,135,232, 97, 53,111,223,190,238,109,124,106,204,205,150, 90,125, 18,162,227,173, -161,107,106,188,109, 57, 30,246, 68,189, 85, 76,122, 16,222, 35,123,225, 93,164, 4,139,105, 62,110,172, 0, 93,107, 57,186, 18, -223,251,201,245, 29,167, 68,224,233, 79,199, 77,254,112, 56,240,225,221,123,102,179, 41, 85,211,112, 44, 75, 22,243, 48,187,110, -219,154,105,190, 24, 35, 72, 77,231, 56,236, 3,229,236,183,191,253, 45,151,151,151,228,121,222, 31,120,196,152,182,182, 94, 95, -179,219,237,152,205,102,212,101,197,195,251,247, 66,199,168,159,165, 15,247,107, 72,251,139,180, 26,109, 90,198, 24,108,103,198, - 3,227,182,217,241,205, 95,190,102,189,221, 80,150,197, 72, 78,187,123,192, 75,251, 88,219,235,235,107, 86,171, 21,175, 94,189, -226,167, 63,253, 41,139, 69, 8,193,178,109,199, 44, 75,153, 79, 50,230,243, 41, 89,154,178, 94,247,135, 74,225,249,236,197,115, - 54,155, 29,219,237, 22,132, 34, 74,147,160,107,202,178, 48,118,116,146,213,108, 21, 24,245,235, 27,140,235,152,231,225,122,149, -101, 57,118, 46,165, 86,196,105, 18, 70,190, 77,208,174, 8, 41, 57, 22,123,202,182, 66, 9, 65,148, 36, 92,221,220,144,166, 9, -206, 43,162, 56,231,195,197,154, 44,205,185,127,186, 36,210, 49,117, 85,162,227, 0,168,170,170,146, 40,154,114, 60,108, 57, 57, -187,135, 80,176,190,185,102,117,114,143,231,143, 31,112,216,238,152, 77, 39,225,123,152, 36, 84, 85,245, 73,226,159,148, 18, 21, -197, 76,231, 17,211,201,132,182, 13, 7, 63,253,239, 95,254,137,143, 31, 63,142, 64,140,237,238, 72, 89, 86, 40,209,160,180, 96, -146, 4,209,148,115,162, 79,229, 9, 94, 74,103, 67, 78,173, 18, 18,209, 87,121,119,219, 47,198,118,227, 6, 48, 16,136,194,131, -233, 62,201,142, 22, 61,164, 68,107,141,119, 45,206,182, 8, 2,169,104,187, 93,211, 90,199,108,190, 64,233, 24, 25,197, 36, 58, - 84,244,198, 56, 58, 75, 63,207,147,200,190, 77, 39,164,197,212,142,214,130, 78, 82,162, 72,224,168, 70,188, 94, 19,192,163,248, -222, 75,235, 5,216,129,100,230,131,157, 42,120, 85,130, 10,184,106,195,225,224, 88,149, 84, 77,152,189, 15,234, 94,165, 36, 90, - 71,108,174,111,248,248,241,192, 98, 17, 22,236, 56,203,136,146, 24, 29, 5,177,136, 4,156,239,147,213,250,143, 35, 1,222,118, -232,228,214, 10, 20, 9, 77, 35, 61,174,107,177,166,165,107,107,158, 62,251, 17,231, 39, 1, 78,144,167, 17,174, 62, 82,217, 14, -129,199, 74,201,197,197,123, 90, 27, 90,164,135,221,150, 67, 81,211,116, 6,143, 4, 29,177, 63, 22,168, 40,120,173,117,164,104, - 90,135, 82,146,229,114,193, 98,177, 96, 95, 20,224,111,163, 59,239,114,166,179, 44, 27, 43,178,225,164, 63, 84,226,119,125,210, - 67,123,234,175,233,112,195,169,246,238,140,120,152,135, 15,115,242,187,164,180,187,254,230,161, 82, 29, 60,197, 67,231,128,191, - 90,244,205,240,128,247,255, 86,247,243,120,215,183,185,149, 22, 36,177,228,242,195,134,168,255, 62,202,178, 36, 79, 38,224,117, -255,179, 89,140,119, 40,153,224,144,116,189,192,203, 33,232,186,134, 56, 73, 89,206,103, 60, 58, 63,227,209,249,130,211, 69,206, -205,135, 43,242, 36,225,208,116, 44,103, 83, 38,209,132, 56,210,156,157,204,121,250,228, 9,229,193, 96, 58, 73,213, 89,162, 56, -166,234, 60, 82, 88, 58,110, 43,241,182,233,152,100,249,109,176, 74,143,212, 28,210,219,134,220,236,249,124,126, 59,207,236, 9, - 95, 66, 8,146, 40, 38,142,210,241, 90,181,214,132,176, 16,217, 95,103,220,200, 1,184,123,207,198,246,123,127,128, 27,222, 93, - 41, 21, 66,120,156,187,141, 9,157,205, 66,133,106,232,198, 63, 27,248,212, 3,223,125, 56,140,116, 54,128,123,156, 0, 33, 36, - 82, 73,202,170, 9,223,151, 20,253,204, 84,223,233,218, 73,228,232,245, 54, 8, 73, 96, 5,244, 20,173,160,209,137,104,234, 16, - 28,243,224,254, 67, 94,189,124,201,201, 98,202,127,255,239,255, 27,127,248,242,223, 80, 8,166,147,152,170,106, 48, 93, 29, 92, - 22, 93, 67,146,100, 65,217,222, 90,144,154, 88, 74,156,247, 84,101, 3, 74, 50,153, 76,198,209, 78,150,101, 20, 69, 49,138,186, -234,186,102, 58,157,143,227,142,193, 78, 38,132,160, 42,155, 62,255, 91,146, 77,146,241, 58, 44, 22, 11,210, 52,229,120, 60, 50, -157,134, 96, 38,223, 39, 27,106,173,251,120, 83,198,174,149,247,161,101, 93, 70,146, 73,223, 2, 14,153,222,129, 62,151,196, 25, - 78,192,124,190,100,187,187,141,215,236,218,208, 97, 76, 38, 89,239,131, 15,228,179, 36, 73, 2, 57, 79,197, 84,117,209,219, 82, - 27,180, 84,163,239, 62,207,243,241,125, 50,198,176,223,239,121,112,126,134,150, 1,137, 28,120, 1, 37,203,229,146,203,203, 75, - 94,191,126, 61, 62,151,131,102,198,218, 96,153, 27,222,247, 55,239,223, 97,219,219, 76, 2,219,153,113,164,150,232,136, 40, 14, -239, 88, 83,213, 35, 96, 37,224, 98,131,155,224,217,103,159,145, 84, 37,117, 93,141,150,194, 97, 13, 80, 74,161,149,226,251,239, -191,199,218,142,171,171,171, 62, 23,254, 3,191,248,197, 47,200,251,241,232,208,225,203,178,140, 72, 73,206, 78, 86, 24, 99, 88, - 46,150, 40, 33, 57, 63,187,207,177, 12, 25, 21,214, 5,255,126,231,130,189, 84,169, 0,209, 9,169,107,247,104, 76,135,245,110, -212, 23, 13, 56,220, 97, 4, 49,116,212,132,146,212, 85,205,177,223,248,103,179, 89,208, 16, 25,131, 52, 49,145, 78,113,222,224, - 17,124,243,221, 75,182,155, 5,159,191,120, 70,146,102,148,197, 30, 89,150,120,103, 67,167,165,143,227,150,218, 98, 77,203,110, -123, 67,154, 77,121,242,248, 62,111,222, 94, 48,205, 51,178, 44, 9,174,145,126,164, 25, 10, 83, 40,203,154,143, 31,175,184,185, -185,166,107, 90,172,235,208,251, 67,197, 36, 95,160,163, 48,223,172,203,138, 36,137, 88,204,103, 36, 81,140,237,163,223,156,141, -136, 34, 21, 2, 53,240,120,103, 65, 73, 32,204, 45,133, 16, 56,111, 67,149,165, 36, 90,232, 81,209, 28, 22, 9,223,111,232,126, -172,218, 66, 5, 29, 78,103,109, 87,135, 54, 26, 30,133,199,249,208,238,223,111,246, 8, 25,145,228,146,186, 49, 32,117, 95, 17, -135,128, 11, 37,185,205,134, 86, 10, 45,195, 77, 27,230, 73, 90, 42,218,225,161,148, 17, 58,114,159,108, 92, 81, 26, 30,242,206, -121,140,119,193,250,227, 61, 94,134, 57,125, 48,137, 9,186,166, 99,231, 11,210, 88,245, 27,164,164,105, 66, 27,101, 50,155,145, - 23, 5,167,167,167, 33,185,236, 88,176, 63, 84, 88, 33,121,114,127, 21, 56,204,214, 51,201,195,137, 82, 10,135,107,195,159, 21, -117,131,211,158,170, 40,169, 14,134, 52,146, 60,122,112,159,159,254,228, 11,242, 44, 97,222, 71,181,154,174,227,112,216, 83, 28, - 42,148, 18, 68, 74,208, 17, 64, 19,174,110, 48,166, 28, 91, 71,157, 49, 28,171,154,162, 44, 73,243, 41, 58, 14,100,163,174, 11, - 45,187,206, 89,188,244,180,214,208, 52, 45, 90,197,227, 73,122,104,247, 14, 27,249,221,150,249,176,209, 12,159, 11,167, 70, 49, -110,182, 67, 53, 63,156, 38,199,132,178, 59,209,140,127, 99,235,249,171, 48,145, 97, 1, 25, 54,114,115, 71, 8, 57, 80,186,238, -226, 71,109, 23,172, 68, 74,251, 30,229,169,199,208, 21,229,134,192,147,182,135,149,192,118,187,165,170, 26, 88, 78,113, 4,236, -166, 53, 65,208,229,132,198,137, 24,107,160,177, 65, 39, 97, 84,204,254, 80,112, 68, 80,231,138,174, 18,248,153, 36,207, 98,238, -221,127, 64, 45,182, 32, 91,108,237,168,171,130,174,137, 40, 15, 7, 54, 55,215,108,214,215, 88, 47,241, 90, 82,119, 77, 24,225, -180,193,197, 80, 29, 91,246,229,142, 73, 22, 84,220,199, 99,192,102,206,102,179,209,214, 22, 48,150,246, 19,192,204,112,144, 26, -210,211,238, 34, 87, 69,223,182, 11,202,243, 96,247,211,138, 0, 47,114, 22,195,109, 20,171,151, 2,108, 63, 24,146,178,199,127, - 74,172,187, 77,187,211, 58,192, 95,134,231, 42,224, 42,107,202,186, 66,235,104,180, 43, 57,231, 56,246, 33, 26,113,148,246,235, - 2, 36, 89,160,238, 5, 45, 65,232, 26,128, 12,173,247,190,187,240, 9, 1, 15,223, 11,197,194,151, 16,210,131,149, 76,146, 12, -156, 99,177,200,184,250,168,121,245,246, 29,251,178,102,117,114, 70,181,223, 16, 73,137,116,150,227,118,131,142, 50, 34, 45,169, -171, 2,211, 89,240, 61,236, 70, 69, 8, 37,241, 88,180, 82, 65, 84,165,195,187,156,229, 57,235,245,150, 36,139,195, 38,186,221, - 82, 20, 69, 24, 29, 72,129,113,150,166,238, 62, 33,246,181,109, 75,146,246,185,232,206,225,109, 71, 18,229,156, 62,125, 76, 20, - 69,161,243,226,110,219,165, 65, 68, 10, 93,221,140, 72, 86,165, 20,167,243, 60,204, 86,189, 71,235, 24,193,176,177, 69, 56, 47, -104,140,165,249,248,113,236,142, 13,107,151,234,177,182, 87, 87, 87,172, 78, 22, 35,174,185,179,129, 29,224,173, 33,207,115,242, - 44,132,162, 12,218,152,225, 62, 26, 99,176, 90,114,125,125,141,239,223,231,179,179, 51,138,162, 96,181, 84, 60,126,252,152,183, -111,223,142, 33, 66, 3, 64, 40, 28,184, 58, 94,189,122, 69,211,181,200,248,246, 16, 22, 70,170,183,122,153,214,121, 18, 47,104, -186,134,186,171,152, 68, 2,229, 29, 69, 85,144, 99, 89, 44, 22, 88, 31,158,249,147,147, 21, 15, 30, 60, 24,225, 57, 67, 33, 88, - 22, 5, 74, 5, 45,192,213,213,213,248,204,239,247,123, 30, 60,120,192,106, 58,239,187,173,183,227,189,213,233,217,184, 62,116, -214, 49,155,199, 44,250,177, 69, 89,135, 92,115,107, 45, 58, 78,176, 34,198,217, 14,103, 29,139,213, 60,132, 44, 21, 5, 81,164, - 56,203,150,212, 93, 27,236,216,222,129,239,221,194,145, 70,105,141,182,150,249,114,222,223, 91, 69, 81,149,232, 56, 33,205,114, -182,117,203,246,102,207,243,103, 79, 88,223, 84,124,184,184,228,236,236,132,199, 15,239,209,118, 13,198, 27, 22,243, 25,222,155, - 96, 13,108, 42,180,247,204, 38, 25,187, 30, 62,117,255,193, 67,170,106, 65, 81,213,212,173, 37, 78, 66,215, 78,169,136,110,176, -122, 3,139,121,142, 49, 17, 77, 85, 7,139, 96,221,134, 19,168,175, 67,219,242,236,236,156, 56,209,216,174,229,234,230,154,197, -124, 26, 90, 42, 34,128, 64,218,174, 65, 54, 2,215,133, 68,178,206,253,109, 5, 55,158, 36, 92, 16,211,221,109,221,222, 13,247, - 24,196, 65,229,225, 24, 60,201, 90, 33, 69, 68, 18, 71, 68, 90,177,152,206,168,234,240, 16,150, 69,205,155, 15,151, 65,172,115, - 39, 36, 96,216, 28,154,182, 65,208, 71,114,154,154,197,116,206,211, 39, 19,166,211, 41,199,162,162, 44,203, 59, 7, 9,213,159, - 2, 5,222, 24, 34,165, 2,187, 93, 64,235, 60,157, 53, 88,235, 16, 72,154,186, 63,217,103, 25, 15,238,157, 97,186,134, 15, 23, -111,177,182, 35,142, 53,155,245,142,199, 15, 31,179,156,205,137,180,162, 42, 75, 78, 87, 39,164,147,156,214,121,166,179, 37,101, - 29,224, 17, 90,107,178, 72,133,217,186,112, 33,176,102,223, 98, 44, 92, 94,188,103,183,185,198, 24,219, 39,206,205, 17,222,178, -221,172,153,100, 97,163, 21,182, 37, 75,194,108,179,107,106,214,251, 35,141,147,212,141,165, 3,100,156, 96,171,102,100,184,223, -127,244,152,253,225,192,161, 56,114, 40, 10,100,164,208,113, 76, 62, 73,209, 82,245, 66,159,132, 56,186,157,183, 74, 25,162, 19, -239,166, 66, 13,155,233, 93, 42,216, 16, 56,162,122, 80,209,144,196,117, 55, 45,108, 80, 3,223,198,122,186, 79,170,238,161, 83, -114,151,178,117, 87,189,125, 55,101,236, 46, 56,101, 56, 88,152,126, 99,243, 34,248, 99,181, 12,158,243, 97,100, 48,108,138,109, - 83, 16,107,152,207, 39, 28,138, 42,116,121,140,231,112,172,177,169, 98,183,222,144,207,230,120, 4,101, 87, 82, 26,184,217,236, - 16, 42,208,240,156,237, 88, 45,167,188,248,209, 83,238, 47, 39, 76, 98, 73,113, 93,176,190,254,200, 52, 95,176,219, 53, 20, 69, -129, 20, 33, 72,167,237,231,130, 73,146, 96,189,164,113,166, 79, 7, 4,239,117,240,248, 70,146,206,212,161,253,155, 5,156,233, -126,191,103,191,223,143, 66,161,161,162,253,248,241,227, 56,246,186,123,104, 74,211, 20,219,245,155,173,142,198,119, 98,120, 23, -235,182, 25, 91,225, 97,211,236, 73,101, 98,232,212, 91,132,212,159, 48,228, 93,239,151, 86, 74,142, 96,151,225, 94,221, 61,156, - 13,239,242,241,120, 68,201, 40,168,219, 81, 35,119,160,179, 6,101, 12, 58,142,113, 64,107,122, 1,164,245,159,136,169, 66,231, -166, 31,167,220,230,241,140, 93, 60,235, 28, 39,203, 5,229,241,200,118,119, 32, 74, 50, 58,227,120,251,238, 3,191,253,245,207, -249,243,191,255, 43, 18, 79,150, 70,236, 15, 37, 73, 62, 99, 54, 95,114,179,217,163,179,132,205,246, 72,217,182,168,214, 32, 85, -216,132, 51, 33, 48,109,139,109, 60, 42,138, 89, 46,151,108, 54,187,113,142, 59, 92,139,195,225, 64, 58, 9,115, 84,239,142,227, - 33,180, 44, 75,214,235, 53, 77, 93, 50,159, 78, 40,133,100,115,179,166,169,106,230, 95,124,193,116,146,211, 85, 21,201,100, 66, -215,132, 77, 33,233,103,198, 29, 32,220,173,139, 32,139,207,200,243,124, 92, 35,173, 21, 35,157,205, 56,139,112, 50, 28, 2,250, - 10, 54, 78, 18,202,182, 25,221, 33, 65, 44, 12,235,221,122, 60, 92, 47,151, 75,142,135, 29,198,116,116,189, 43,105, 72, 46,251, -209,211, 31, 17,199, 49, 87, 87, 87,252,250, 87,127,135,240,150,166, 63, 36,174, 86, 43, 94,190,124, 73,219,182, 60,125,246,152, -103,207,158,177,223,239, 71,144,216,208,142,206,243,156,237,118, 77,221, 54,212,109,139, 87,119, 70,106, 67,176,139,214, 68,125, -136,205,253,251,247, 71, 53,126, 20, 69, 60,121,242,132, 89, 30,186, 25,179,217, 44,116,157,146,152,179,179,179,177,202, 31,238, - 67, 93, 85, 92, 92, 92,224,156,225,253,251,247,252,252,231, 63,231,228,228,132,197, 98,193,147, 39, 79,192,186, 94,107, 16,133, - 78,170,177,196,105, 60, 30,126,163, 56,232,191,234,182,163,110,251, 8,231,147, 21,190, 11, 66,208,108,178, 68, 39, 49,101, 81, -161, 99,141,141, 19, 78, 79, 79, 88,173, 86, 56, 28,214, 58,170,182, 70,202, 16,126,101,140, 13,169,113,141,197,122, 75,146, 70, - 33,119,160, 10,235, 77,150, 5, 27,155,119,130,233,124,201,118,119, 96,190, 88,114,216,111,120,245,250, 45,121,158,113,178, 92, - 34,133, 67, 10, 67, 34,195,232, 42,155, 76, 1, 73, 81,149,228,105, 2, 50,230,195,251,119, 44,250,104,214,205,245, 22,161, 53, - 73,156, 81,183, 29,135,125, 65,221,148, 72, 9, 79,159, 60,228,139,207,126, 65,103, 26,182,235, 13,218, 56,144,202, 51,201, 39, -164,105, 72, 39,170,170, 10,111,195,188,108, 58,157,142,243, 20,231, 12,178,127,201,227,190,194,142,211, 12,143, 8, 47,191,238, -225, 7,109, 55,206,247, 92,111, 49,146, 82,226,145,120, 97,251,120, 82,199,118,191, 35, 75,115,210, 36, 70,121, 67,121, 44,136, - 35,193,201,252, 30, 66, 71, 28,139,146,170,115,236,203,154,147,251,143,121,255,241, 26,217,219,229,164,164,183,245,132, 54,105, -150, 79, 71, 49,151,118, 49,198,122,174, 55, 91,146, 73, 14, 74,143,161,243, 89, 26,143,225, 20, 18,129,244,193,102, 98,113, 97, -147,144,138, 88, 70, 24, 33,122, 47, 46,212,199, 35,243,244,148,231, 79, 30,243,241,226, 3, 63, 28, 42,206, 31,158,145,101, 25, -139,105, 16, 45,157, 44, 87, 84,199,130, 95,252,228,167, 65,173,140, 64,196, 49,173,113,156,204,103,227, 98, 59,159,164,104, 37, -192,180,232, 40, 37, 74, 87,236,138, 10,211, 53,212,101,193,122,179, 65,234,136,227,177, 36,137, 66,107,175,145,208, 53, 5,182, - 51,228,121, 70, 91, 87,236, 14,123,154,206, 81, 52, 18,149,100,104, 17,225, 59,139, 78,115, 78, 38,115,100,239, 71, 46,215, 55, -196, 73,210, 91,207, 20,113,156, 98,188,193, 52,109,240,207,122, 57,206,115,135, 77,161,105,154, 79, 54,226, 17, 81, 58, 80,178, -250,205,117, 88,228,135,118,226, 80,117, 15, 27,240, 32,220, 25, 78,221,195,198, 48, 8,112,142,199, 99,152,161,223,169,102,134, - 86,238,112,128, 24, 14,140,159, 6,185,132,131, 99,148, 36,164,233,132,186,173,200,146,148,166,170,144,202,179, 88, 44,216,236, -182, 65,187, 65, 24,109,156, 44,103,100,147, 9,147,104,202,100,190,196,122, 69,154,196,120, 12,101,107,144,173, 69,234,136,120, - 50,197,118,225, 48,182,254,211,183, 60,126,246, 99,150,203, 37, 39,139, 41,229,126,199,143,127,245, 83,190,254,227,239,130, 39, -246, 88,112,211,214, 28,143, 97,193,117,214, 82,213,101,127,157, 99,174,175, 95, 17,167,121, 8, 14,242, 54,140,176,122, 11,146, -239,219,152, 78,132,159,165, 40, 10,210, 36,230,244,100, 53, 98, 34,243, 60,103, 49,159,133, 40,203,170,162,107,155, 16, 84, 50, -201,198, 17,214,124,185,234,187, 15, 65,192,149,231, 57,157, 13,118,196,180, 11,221, 23,209,212,125, 60, 46, 65, 53, 31,108,215, -204,102, 83,234,218,140,214,195, 56,142, 73,122,177, 94,211,219,178, 66,155,222, 19,233,128, 5, 30,218,167, 2,197, 52,207,122, - 17,207,145,170, 47, 14,172,245,227,156,189,174, 91,218,126, 84, 16, 20,241, 98, 12,222, 25, 72,108, 74, 72,148, 16,232,222, 70, -228, 93,160,220,197, 74,247,237,227,208, 73, 59, 57, 57,225,226,253, 91,166,139, 37,166,171,248, 31,255,199,255,205,243,199, 15, -248,217,207,126,198,247, 95,255,153,186,110,153, 76, 50, 46, 46,222, 83, 53,129, 19,176, 88, 46,113, 94, 97, 54, 91,172, 51,160, - 21,198,182,120,159,113,117,245,145,233,124, 65, 44, 21,231,103,103,108,110,110,184,184, 56,146, 36,129,168,120,125,125,141, 16, -130,205,205,122, 20, 60, 2, 99,135,240,120, 60,254,127,108,189,215,146, 37, 89,154,157,247,109,225,242,168, 16,169, 75,118, 87, -247, 0, 99, 24, 96,112, 71,194, 12, 70,242,154, 79,197, 87,227, 53, 97, 70, 98, 48,152,153,238,233,170,234, 18,169, 66,157, 56, -202,229, 22,188,248,183,123,156, 40,160,204,218,170, 51, 45, 43,227, 8,119,223,191, 88,235, 91,100, 86,179, 40,114,234, 82,172, -156,205,241,200, 47, 63,253,196,248,230, 13, 70, 41,110, 63,223,224, 19, 42,185,202, 11, 81, 38, 91, 75,149,186, 77,165, 20,187, -195,225, 25,117,207,123,185,159,186,126,144, 78, 88,229,243,138, 35, 36,170, 90, 84,105, 37,224,221,140,225, 53,185,128, 96,202, - 52, 73, 40,170,146,182,141,184,240,228, 88,201,243, 28, 23, 29,237,208, 18,162,227,112, 56,240,245,151,239,248,212,117,188,124, -253, 10,180, 98,177, 90,114,108, 78,244,131,227,229,171, 55,124,247,135,191, 17,230, 71,153, 39,215,197,144,128, 74,181, 40,245, - 71,199,102,179, 33,207,101,218,103,181,120,206,139, 66,194,182,170,170, 74,187,117,155,212,251,114,175, 88,109, 8, 68,218,113, -100,119,144, 60,240,127,248,135,127,224,251,239,191,151,166, 37, 89, 67, 77,154, 0,124,250,244,129,175,190,250,234, 9,124,181, -219,113, 56, 28,248,226,205, 23,115,230,128,233, 59, 33,219, 89,209,216,152,180,154,146,213, 80,224,234,197,203,121,116,254,112, -183,149, 96,160,168,104,143, 7,172,201, 8,126,164,239, 71,142,205,158, 83,215, 83,214, 5,247,119, 91,180, 65,162,193,219,163, - 16,222,252,192, 56,120,242,194,206,235,130,113,144, 20,201,170, 90, 64,212, 24,147,113,177,222, 80, 47, 74,250,193,209,180, 61, -167,102, 71, 89,229, 20,255,246, 15,188,120,113,201,216, 30, 81, 54,176,168, 43,250, 97,228,245,235,215,100,167,150, 99,211, 50, -116, 13, 70,193,237,231, 79,108, 86, 11,246,251, 35, 62,136,243,101,181, 89, 99,173,229,231,159,183, 84,153,225,225,238, 19,223, -135,145, 63,252,241,247,252,238,155, 47,176,163,119, 88,101,231,172,227,194, 26, 50,155,236,103,185, 40,118, 7,159,110,204, 24, -241,156,141, 99,125, 96, 76, 54, 32, 73, 37, 11,115,222,178, 74, 42,218,174,235, 83,106,152, 77, 15, 4, 81, 37, 43, 12,214, 8, -109,106,116,162,208,158,214,217,109,115,196,216,156,186, 42,185,186, 80,140, 81,113,177, 94,115,181, 17,255,104,150,101,196, 32, -234, 81, 31, 3, 85, 33, 59,177, 73,172, 23,148,226, 98,179,162, 40, 50,194, 56, 80,229, 25, 97, 41, 42,108,151,186, 23, 21, 35, -209, 59,116,122,136,100,214,226,181,194, 19,113,209, 19,195,128, 13, 3, 74, 35,150,175,220,176, 44, 75, 62,185,145,139,245,138, - 55, 47, 94,178, 88, 45,137, 65,177, 40,151, 66,150, 42,189, 88,196,242, 2, 63,169,188,173, 21, 49, 75,106, 39, 77, 4,215,181, - 18,249,169,101,244,227,125,218,107,230, 57, 69, 46,185,232,131, 27, 81, 90,208,157,214, 86, 88, 93,113,114, 71,118, 7,217,235, -140,222, 99,139, 37, 42, 64, 31, 20,253,224,104,199, 64,235,188, 8, 5, 83,172,139,205, 10, 48, 22, 23,192,245, 30, 31,199, 73, - 19,141,138,134,224,198,103, 44,240,105,220,118,158,228,245,220,185,160,158,217,212,198,209, 61, 75,163, 58,223,137, 79,223,230, - 98, 62, 0, 0, 32, 0, 73, 68, 65, 84,149,248, 52,106, 60,167, 68,205,185,211,169,139, 60,255,103, 6,165, 36,118,248,228,137, -158,246,123, 83,168,133,205,243, 52,106, 22, 27,204,169, 59, 97, 80,100, 69,254,204,102,183, 92,109,168,202,138,168, 52, 74,107, -154,198,179,170, 45,251, 83,143, 85,142,155,251, 3, 63,252,252, 25, 83,212,124,241,205,119, 28, 91,207,227,254,192,213,245, 75, -222,189,121, 37,147,160,211, 1, 55,246,220,222,222,206, 5,208, 24, 53,238, 20, 36, 58,116,234, 96,147,152,111,122,159,227, 56, - 50, 18,232, 93,199,232,132,181, 47, 48, 18,121,159,203,229,242, 25, 82,118,154,114, 77, 78,131,105,141, 52,229,169, 79,221,206, - 52,162,223,222, 61,176, 94,175,217,108, 54,201, 17, 32,194,158,186,172,104, 58,153, 80, 77,159, 99,239,198, 89,103,174, 19,229, -109,210,184,152, 68,221,155,246,154,231, 78,136,223, 98,106, 37,202,117, 10,178,177, 73,140,167,231,224,150,152,168,147, 74, 41, -134,105,151,111,236,147, 56, 50, 61, 75,100,239,236,113, 76,118, 58, 65,170,106,173,158, 69,145,250,168, 36,202, 53,179, 41,129, - 49, 82, 22, 34, 96,253,219,239,190,228,231, 31,254, 21, 24, 56, 28, 14,180,221,137,176, 85,172,150,145,166,125,207,106,121,201, -106,189,164,237,122,246,199, 35,206, 5,250,172,161, 79,105, 92, 82,100, 46,121,253,250, 53,183,183,183, 92, 45,151, 73, 36, 90, -205, 93,234,244,186,179, 34, 23,220,111, 42,106,173, 81,100, 10,202,220,206,185, 6,101, 46,241,165, 62,120,220, 56,130,143, 68, -229,113,140,162,192,142, 90,236,108, 38,199,228,122,158,130,201,116, 69,238,191, 97, 20,255,119,219, 13,100,165, 52, 74,225, 76, -204, 24,163,116,241,231,154, 6, 63,134,103, 24,215,233,251,155, 82,230, 52,106,142,133,157,174,181,187,135,123,234,186,228,221, -187,119,172,215,178, 19,254,253,239,127,207,251,247,239,121,120,120,224,205,155, 55,124,252,248,145,239,191,255,158,182, 61,205, - 9,128,243,243, 32, 70,190,253,242, 11,185,238, 34, 82, 12,180, 93, 42,208, 69,161,125, 60, 30,101, 39,157,174, 95, 72,250,170, - 8, 46,164,232,104,107,248,226,139,119,207,236, 90,211,243,136,244,249, 47,151, 75,174,175,175,231,120,214, 16, 36, 26,247,195, -207, 31,121, 60,236,231,215,213,117, 29,211,244, 89, 25,131, 10,138,118,104,217,111,247, 84,117, 49, 71,235, 78,252,129, 41,139, -188, 44, 5,226,180, 59, 28,240, 81,138, 34,101, 12,195,224,136, 42,224, 6, 41,162,166,124,121, 66,100,236, 19,162,219,139,200, - 51,166,188,186, 57, 30,217,232, 84, 8,201, 42,170, 57,141,220,220,109,169,126,249, 72, 63, 12,124,253,197, 27,178, 56,112, 56, - 74,246,252,245,181, 20, 29, 28, 27, 78,167, 3,206, 5, 80, 25,209, 59,150, 85,137,139,208,180, 3,199,253, 1,107, 45,111,223, -188,226,180,187,167,239,142,220,223, 14, 92,108, 42,212,245, 11,172, 34, 80, 22,153,248,231, 66,144,155,200,123, 92, 50,243, 75, -133, 39, 49,123, 42,168, 57, 20, 35,198,136,144,103, 69, 69, 59, 29,234, 49, 42,226, 20,208,161,100,115,166,116, 68, 27,161, 42, -197, 16, 0, 25,119,107,107, 81, 38, 19, 74,150, 83, 20,121, 78, 93, 88,162, 31, 65, 69, 94, 94,174,185,123,252,149,253,227,150, - 87,175,191,192, 26, 69, 31, 28,133,205, 9, 14,114,109, 9,218,112,113,181,230, 65,185,132,164, 20,209,199, 23,111, 95,139, 40, -196, 15,148,133, 5,159,179,235, 26,142,167, 67,162,111, 9,231,250,111,190,254, 26, 55,244, 28,218, 3,199,182,193, 19, 41,235, -138, 23,171, 53,229,245,154, 69,185, 16,108, 99,112,148, 86,177,187,191,195,168, 72,158,149,212,197,130, 99,211, 38, 86,115,152, - 15,180, 73, 96, 38, 86,105,147,166, 24,211,231, 35, 29,150, 78,156,246,194,138,213,110, 98,157,135, 41, 1, 47, 68, 10,101, 64, -233,196,189, 23,213,237,224, 61,206,195,232, 21, 77, 28,104,188,166, 29, 6,186, 78,132, 74, 78, 65, 72, 64, 15,101, 50,214, 23, - 87,146, 63,237,158,194, 57,164,168,145, 14, 49,142,131, 68, 28,158,137,211,206,197,113,211,129,115,174,110, 63,255,115, 19, 45, -238, 89, 86,244,217,158,252,252, 48,248,159, 1, 74,108,158, 73, 1,164,148,148,132, 90, 99,243,156, 44, 61,192, 30, 30, 30, 64, -107,220, 89,222,120, 89,150,248, 24,113, 93,135,143, 9,192, 49,202, 13,109, 80, 84,149,116, 66,158, 72,211,116, 41,151, 58,210, -106,249,223,255,247,143,255,196,223,255,221,191, 97, 85,229, 16, 29,255,245,159,254,194, 95,127,253,149,245,230,154,111,183, 61, - 46, 42,110,239,119, 98, 79,185,184,132,224,249,233,230, 35,235, 42, 99,116, 61,213,114, 65,123,240, 60,220, 61,176, 59,122,154, - 30, 10, 29,137, 97,164,235,122, 78,199,150,211,233,196, 48,142, 60,108,239, 49,101,158,124,177, 53, 85,177,161,170, 42,140,238, -241,126, 96, 12,146,137,126, 94,172,104, 45, 35,215,105,119, 46,123, 52, 51, 51,192,207,197, 75,227, 56,204, 22,180, 57,180, 36, - 77,209,186,212,105,103,198,224, 83, 76,102, 80,178, 23,196, 67,215,118,100, 54,103, 28, 6, 76,153, 75, 88, 74, 58,212,181, 86, -207,130, 99,158, 2, 95, 36,150,210,197,128,139, 35,182, 8,179, 50,120, 86, 56,159, 57, 28,230,200,211,224, 19, 36, 40,217, 13, - 19,242,182,204,202, 39, 67, 91, 90,163,144,132,159,227, 56,146,229,210,169,183,205, 40, 52, 54,163, 8, 49, 35,171, 74,110,239, - 30,168, 23, 75,214,235, 53,214,230, 56,191, 21,103, 78,128, 44,179,116, 46,240,240,240,128, 83,226, 15,104,187, 19, 10, 67,215, -169,228,247,111, 88,115, 73,102, 52,151,155, 53, 95,124,241,118,182, 24, 89,155,179,168,228, 16,232, 83,161, 59, 77, 32,230, 48, - 27, 20, 95,189,125, 51,135,176,168, 51,167,141, 75,100, 51,171,196,181, 32, 1, 37,154, 69, 85, 97,173,166,109,123,201, 49,175, -202, 39,232, 78,242,240, 15, 78,238,117,239, 61,221,225, 32, 83,154, 16,208, 17, 80, 30,159, 14,245, 16, 28,206, 61,229,155,163, -194,124,159, 77,113,157, 99,159,190, 11, 35,135,220,116,157,244, 83,225,144,132,129,143,143,143,146, 17, 95,228,115, 33,248,226, -197, 11,134, 97,224,175,127,253, 43,251,189, 8, 0,167,123,127, 90, 25,252,211, 15, 63, 72, 0,146,205, 48,153,133,240,228,116, - 17, 47,118, 5, 3,115,248, 77, 94,100, 20, 86,138,160,113, 20,212,248,148,218,183, 88,136,181,247,245,235,215, 88, 43, 17,170, - 89,194,163,118, 93, 67, 93,215,236,118, 59,238,239,239,231, 63,187, 59,126,226,167,159,126,162,109,123, 22, 43,177,217, 29, 78, - 34,140,182,121, 70, 93, 46,112, 33,226, 34,244,163, 52, 53, 1,141,143,162, 75,170,235, 50,157,103, 98,255,173, 23, 37, 89,202, - 46,232,199,129,174, 27,104,135, 54, 21,225,138,232, 61,121,150, 81, 21,197, 51,209,169,119,210,170,102,102,178,213,138,141, 46, - 4,185,142,175,174, 46, 64, 25, 30,118,123,248,249, 61,187,221,129,245,106,197,101,101, 81, 58, 39, 48,242,249,246,126,134,252, -116,253,192,205,205, 29, 38,147, 16,167,170, 46,136,202,224, 3, 60,220,220,176, 92,172, 89,111,214, 20, 38,210,183, 7,142,251, - 3,191,252,244, 51,143,119, 15,216,194, 74,118,179,247,210,185,202,195, 64, 90,255,205,230,117, 18,192, 41,105,194, 83, 3, 39, - 64, 24,230,116,163,168, 20, 6,137,133, 36, 64, 80,160,131,216,117, 10,155,225,162, 64, 74,198,224,113,253, 0, 70, 83, 88,249, -243, 89,110, 81,104,252,216, 19, 81, 50,186, 76,163,216,213,102,133, 33, 50,186, 1,130,167,204, 51,250, 19,228, 70,196,119, 54, - 51,162, 62, 12, 53,155, 58, 35,203, 44,198,230,140,133, 33, 87, 30,223, 15,116, 67, 71,110, 51,114, 3,155,101, 65,157, 69,172, -214,146,133,108, 53,255,241,111,255, 29, 38,141, 5,251, 48, 48,134,113,222, 5, 87,121, 65, 85,136,208,228,211,167, 27,234,194, -210,156, 14,168, 20,205,168,140, 84,100,178,125, 79, 93,106, 58, 8, 37,132, 36,226, 71, 79, 12,147, 72, 76, 96, 20,179,144,196, -141,120,213,163,137,168, 56,117,201, 2,228,144, 4, 57,143, 81,162, 32,246, 78, 14,128,168, 51, 34,145,193,123,218,118,100, 80, - 57,167,161,167, 31, 68,181,233,189,136,120,208,150,162, 48,184, 16,201, 38, 63,112, 4, 21,181,248,130,125,144,174, 61, 6,166, -134,236,188, 27,159,186,246,243,170,255,183,194, 54,249,125, 59, 31,234,231,158,243,115, 97,220,111,237,110,179,216, 45,217,114, -124,124, 14,176, 57,247,176, 47, 22, 11,185, 38, 83, 7, 88, 20,197,236,147, 30,134, 65, 62,123, 49, 43,164,202, 62, 36,159,169, -153,187,171,190,239,233,157,151, 4,170,161,229,255,249,127,255,129,205,102,195,239,190,253, 10, 21,225,199, 95,111,184,123,116, -228, 75,195,135,219, 45,235,213, 37, 95,126,245, 53,187,237, 35,153,209, 12,174,135, 32,118, 43, 55, 10,198,116, 8,176, 59,180, -184,144, 37,105,167,220, 30,202, 26,130, 2,151,210,212,190,252,242, 75,116, 97,209, 25,146, 42,104,214,100,198, 48,164,107,115, -181,190, 32,175, 68,137, 61, 41,107, 39,117,251,110,183,123,150,172,246, 91, 74,220, 52, 82, 61, 28, 14,243, 24,182, 44, 75,240, - 30, 23, 60, 38,117,207,198,152,217, 38,106,148,166, 76,157, 90,239,227, 51,174,254,244,119,139, 30, 32,127,246,208, 58, 95,173, -200,131, 93, 30, 54,251,227, 97,126,208, 63,145,254,158, 72,102, 54,169,173, 39,119,133, 73,197,219, 84,137,180,141, 16,233,140, - 17, 96,149, 61,187,214, 36,166, 87,207,118,173,105,189, 55,140, 14, 84,198,231,251, 7,126,254,249, 87,178,162,164, 68,145, 55, - 45,139,160,104,186,158,118, 24, 48, 54,103,183,191,103,116,129,139,235, 23, 44,202,138,113,244,184, 97, 20, 82, 89,223,225, 71, - 89,117, 12,195,192, 87, 95,124,201,225,112, 32, 92, 6, 78,167,150, 87,175, 94,205,171, 41, 17,254, 85,148,101,253, 68, 63,180, -154,253,195,253, 51,231,134,214,122, 46, 88, 72,176,167,122,185, 18,168,151,247,140, 93,207,105,159,128, 73,198,226,252, 83,110, -198,212, 93,154,172,160,168,133, 77,126,106, 58,185, 62, 82,164, 67, 84, 6, 21, 68,163, 48, 14, 30,141,198,123,241,138, 71, 2, -109,219, 37,215,128,154,109,137, 50, 1, 50,115,124,234, 36,212,155, 20,243,223,127,255,253,124,111,117,157,132, 56, 57,231,132, -177,110,173,196,181,118,157, 48,219, 51, 51,119,255, 77,223,241,226,173, 76, 56,246,251, 61,133, 18, 39, 65, 94,198, 39, 6,124, -102,158, 21, 60, 85, 89,204, 58, 27,231, 28,215,151,215,168, 16,185,184,216,204,211,185,233, 94, 24,199,113,214,167,244,189, 20, -202,211,216,189, 44, 75,154,166,225,223,254,237,191,161,235, 91, 62,125,252, 60,119,250,117, 93, 39, 39,148, 37, 34,161, 95,139, -101, 20, 10, 95,136,100,153, 33, 4, 75,145,101,172,235,146,166, 57,114,121,177, 97, 12, 35, 69, 89,147, 87,165,184, 1,142, 7, - 86,203, 5, 77, 91, 66, 72,118,218,174,151,117, 74,181, 16,235,177, 23, 42,132,247,201,186,153, 38,219,222,141, 28,143,143, 34, - 50, 15,201, 17,160, 32,170,140,221,190,225,212, 12,252,247,127,249,129,191,251,227, 87,172,235, 2, 99, 51,246,251, 3, 93, 39, -188,128,170,170, 88, 44, 42,142,109, 71, 24, 6,150,171, 11,180,213,172,150, 53,119,119, 90, 34,107,147, 75,195, 88,197,225,112, -226,254, 97,139, 27, 61,182,204, 51,140,134,232, 35,153,213,120,239,230, 61,204,213,213,213,211,131, 92, 41, 84, 60, 35, 63, 17, -231,139, 12,165,136, 76,163, 53,208, 26, 73,118,211,194, 61, 14,174, 79, 29,104, 36, 40, 13, 81,137, 13,203, 71, 90,215,144, 89, - 3,221, 64, 84, 35,151,181,161, 90,214,114, 1, 25, 69, 89,228, 84,185,140,219, 51,163,209,202, 99,137, 68, 28, 38,122, 86,133, -162, 84, 3,151, 27,177,217,100,101,133, 49,178, 95,143, 6,174, 86, 27,172, 66,200, 62,217, 11,172, 78, 94,251, 20, 59,152, 41, -195,162,170, 40, 23, 37,202,192,224, 6,186,174, 33, 68, 9,245, 40, 10,241,227, 31, 74, 13, 81,194, 11,116, 86, 96, 50,203,224, - 37,107,123,240, 78, 88,218,120,136,129,254,212, 37,250, 86, 64,101,249,236, 22, 24,199,129,136,167,200,228, 98,235,251,158,206, - 13, 4,109,153, 50, 24,109, 46,187, 75,135, 34,246, 3, 85,102,164,123,209, 50,178,109,123, 71,239, 35, 67, 48, 12, 40,233, 88, -189, 40,158,167,195,111,127, 58, 66,148,194, 36,207, 69, 9, 27,163, 18,230, 64, 76,209,125, 78,162, 6,165, 75,127, 14, 7,154, - 58,233, 73,236, 53, 61,100, 39,107,207,249,136,222,152,236, 89, 55,119, 94, 28,156,167,138,205, 35,169, 51,117,172,116, 69,150, -243,225,251,116,243, 79,163,223, 73, 24, 55,141,253,207, 45,110,242,119,202, 56,214,143, 46, 9, 84,100,204,151, 87, 41,211,122, -244, 56, 23, 4,100, 20,197,254,248,121,219,241,175, 63,254,204,225,216,112,119,119,199,143, 31, 26,242, 2,186,160,113,187, 6, - 79,193,122,177,164,174,151,168, 8,205,241,128, 81, 48,180, 29,251,253,145,195, 97, 71, 89,150,152,162,102, 60, 13,184, 40, 69, - 44,225,105,133,209,247,189,132,170, 16, 68,148, 53,140, 18, 42,145,103,100,117, 77, 89,229, 24,187,166,237, 58, 6, 31,158, 29, -138,231,159,229,122,189,126,218,135, 58,199,118,187, 77, 29,149,136, 41,151, 85,205,195,195, 3,219,237,118, 62,192,141, 49,100, -103, 72, 93,140, 38,164, 53,201,116,184, 14,195,128,110, 90,124,136,207,160, 52,178,247, 12,216, 44,166, 66, 73,198,225, 33, 42, -129,231,160, 82, 4,101,120, 58,204, 83, 65, 19,207,116, 22,211,123,153,174,149,167, 96, 25, 80, 70, 24,242, 70,105,170,101,157, -148,247, 66, 89,211, 41,190,215,164,195,189, 72,122, 16, 23, 65,161, 9,193,211,143, 30, 23, 35,167,166,227,251,191,254,200, 87, -111, 95,210,116,162, 17,169, 42, 13,218,240,184, 63,177, 88, 10, 35,124,251,184,167,170, 42,150,171, 21,119,119,247, 60, 30,246, - 24,187, 70, 13,138,237,118, 75,126,146,209,242,213,213, 21,185, 53,108,214, 43, 52,138,229,114,201,122,185,120,202,172, 79,227, -255, 89,168,233, 2, 99,250, 60, 3, 26,101, 36,139, 94,161,177, 41,115,188,239,123,116,218,105,207, 83,178,179,194,101,119, 60, -224,220,144,190, 23,153,176,216, 94,238, 49, 23, 3,245, 26,202,229,138,195,233, 68,239,100,253, 50,140, 35,189,147,215,208, 55, -125, 42,128, 61, 62,136,245,182,233, 91,114, 43, 42,242,213,162, 78,159,125, 18, 79,170,150,126,104, 83,248,204,147,154, 94,107, - 61, 91, 41,149, 82,236,247,123,254,252,231, 63,243, 31,254,195,127,224,239,255,254,239,231,216,212,213,106,149,108, 85,114,184, - 55,199,150,251,203, 87, 52, 77,195,114, 85,207, 74,254,232,229,122,171,138,108,222,233, 75,238,186, 88,164,167, 53, 83,155,220, - 0, 42, 69,190, 58,231,184,191,191,231, 47,127,249, 11,199,227,145, 60,173,250,172,213,115, 17,146,231, 57,239,222,189,163,174, -107,190,120,243,154,246, 15,223,177,172,106, 78, 93, 75,211,118,148,147,128, 48,144, 2,169, 74,134, 97,129, 49, 10, 66,160, 44, -165,184, 89,212, 21,221,233,136, 82,158, 63,254,241, 59, 30, 15,143,100, 69,201, 98,181,226,227,199,143, 52,205,145,232, 29,121, -102,168,138, 26,109, 13,125,219, 37, 77, 79,206, 48, 36,188,113, 20,175,178, 11,208, 13, 61,206, 59,122, 63,166,128, 24,185, 22, - 78,109, 51, 63,175,156,243,168,168,121,255,225,150, 87,155, 21, 77,157,113,117,117, 65, 89,149,132,224,184,187, 23, 52,237,197, -197, 5,195,112,195,113,232,232,250, 22, 53, 14,148,197,146,171,203, 13, 93, 47,106,254, 60, 47,208,186, 34, 43, 86,156,218, 17, - 31, 44,118,185,168,132, 41,187, 46,102,177,195,221,221, 29,198,168, 89,177,253, 91,107,147,252, 58, 61,252,123, 39,214,147, 40, -208,138,224,153,211,157,158, 70,181,110,222,177, 79, 35, 84,128,193,121, 98, 86,176, 40, 44,121, 28,208,140,140,163, 96, 60,179, - 44,163,107, 26,134,190, 37,179,154,177,147,127, 95, 44, 23,188,186,186,160, 48, 23,194,185,181,154, 60,183,212,181, 88,148,170, -114, 65, 81, 87,103,254,105, 3,137,120, 84,102, 86, 10,152, 40,244,177,210,136, 96,105,232, 3,206,183, 4,229,146,144,198, 81, - 38,240,199,110,123, 67, 94,212,148,133, 70,199,192,235, 55, 47,217, 53, 3, 58,179,244,110,148,224,134,166, 33,175, 69, 48,152, -153,140,227,177, 21,159,172, 22,146,213,224,100, 45,225,149,236,200, 51, 20, 88, 67,244,242,250,253,244, 57, 69,159,210,213, 12, - 40,177,251, 97, 20,109, 35,149,245,232, 2,205,224, 24,130,162, 15,154, 99, 55, 48,142,189, 48,229, 39, 44,232, 25,209,203, 90, - 89,159, 20,169,242, 14, 46,162, 85,164,208,150,104, 53, 81, 5,198, 48,166, 21,231,243, 17,251,228,135,252,109,215,125,238,179, -213, 90,211,247,227,188,167,250, 45,159,253, 25,212,228,140,235, 60,119, 52,211,245,112, 54,162,127,150, 69,157,212,237,147, 0, -108,194,213,206,162,199,170,226,212,118,196,232, 25,186, 39,208, 77,215, 73,119, 99,108,206,227,221,205, 92, 32,140, 49, 82,231, - 37, 5, 29,159,110, 31,249,241,175,191, 16,128, 55, 95,189,101,177, 92, 39,162, 91,198,232, 2,251,211,145,139,229,130,227,241, -200,221,205,141,224, 37,157,128, 43,108, 81,227, 81, 12, 1,154, 97, 72,113, 58, 2, 54,106, 59,177, 51, 29,142, 71,137, 93,141, -162,224,246,234,201,238,119, 58,157,208,177,195,197,129,136,149,235,124,178, 88,166,195, 96,154, 22, 77,239,103,250,245,122,189, -102, 24,134, 89, 37,255,187,175,191,153,199,162,119,119,119, 28,143,194, 0,159,198,232,139,197, 66,222, 59,233, 26,211, 62, 1, -106, 52, 90,201, 94,218,132,167,245,139, 8, 20,159,219, 23,229, 62,242,179,183,252,124,141,130,214,194, 97, 56,251,190,207,119, -162,147,254, 66, 77,137,142,105,213, 99,149,150, 98, 35,248, 51,142,191,100, 86, 27,155,205, 69,160,120,201,159,166, 68, 70,201, -193, 42,171,159,130,207, 55,119,124,249,230, 21,206,121,156,143,216,188, 96, 85, 46,104, 58,185, 39, 46,175, 94,205,187,206, 58, -129,124, 38,118,126,158, 25,246,135, 35, 93, 39,186,133, 97, 24,184,190,190,150, 85,199,181, 63, 67, 78, 63, 21,149,104, 89,131, - 76, 22,179,139,139,181, 76, 40, 99,162,198,165,207,108, 18,126, 22, 69,193,227, 86, 92, 13, 74,117, 51, 72,232,112,216,179,219, -109,233,221,200, 48,116,140, 99,178,144,142,142,102, 18, 54, 42, 32,106,186,161,231,212,117, 2,133, 10,162,225,240, 65,186, 43, -131, 73,209,216, 82,244,196, 24, 24, 6, 1,216, 60, 57,144,106,148,138, 60, 62, 62,162, 18,249,110,234,198,149, 82,188,122,245, -138,135,135,135,249, 26,155, 88, 8,101, 89,242,241,227,199, 89, 61,255,227,143, 63,202, 90,105, 24, 24, 6, 17,205, 45,202,197, - 60, 42,215, 74,225, 82,122,153, 27,100,178, 70,240,207,104,134,126, 28,102,184,149, 39, 98,180,165,233,218,196,252,144,207,108, - 82,193,159, 71,212,230,185,157,133,219, 2, 38,219,243,151, 63,253,153, 15, 63,255, 68, 81, 20,108,214, 53,203,101, 77,239,188, -136, 12,251,158,193,133, 4, 72,146, 48, 29, 77,192, 69,143,209,138,186,170,185, 92,175,216,250,129,174, 61,208, 52, 71,110, 63, -125,166, 94, 45,169,235,146, 50,183, 56, 63,144,103,165, 36, 10,170,136, 27,122, 17, 10,134, 8, 94, 82, 28,155,174,127, 90,107, - 18, 33,122, 52, 17,163, 60,206, 13, 28,142, 59, 46, 54, 87,103, 19, 54,131, 54, 5, 85,189, 6,229,248,225,167, 95,121,247,234, -146, 23, 47, 94,202, 58,218, 79,118,235,241,201, 10,217, 52,180,167, 99, 66,141,107,214,139,154, 24,101,218,243,184,111,168,151, - 11, 94,188,254,146,160, 44,109,215, 97, 23, 85,129, 49,122, 38, 87,121,239,201,140,226,216, 52,108,183, 91,178,172, 72, 35,210, -240,108,252, 22, 60,130, 89, 12, 10,131,140,218, 99,244, 41, 57,198, 61, 19, 61,249, 32, 81,148,168, 48, 83,168,138,162, 32,104, -131, 46, 34,144,147,231, 79,194,142,113, 28,209,177,225, 97,127, 34, 55,150, 23,151, 87,100,214,112, 89,172,200, 46,150,188,123, -253,130,235,213, 2,173, 70,246,187, 59,178,220, 48, 14, 30,147, 89,170,202,160,116,160, 90,150,201, 14,116,139,213,154,152,105, -122,167, 41,179,156, 60, 51,216,168, 9,195,200, 56, 70,180,181,228, 88, 76,166, 48, 74,184,203, 56, 79, 28, 35, 85, 97, 40, 42, -121,200,222,239, 91, 54,155, 13,247,251,247, 73, 80, 23,192,123,118,205, 81, 64, 20, 4,202,188,160, 29,122,241,135,163,104,251, -129,253,169, 65, 41,147,186,173,145,209, 15,212, 85, 65,102, 13, 58, 90,220, 48,226,156,248,185, 29,145,195,233, 72,223,183,172, -234,130, 48,180,140,169, 64,209,153,165, 25, 4,172,211, 5,205,169, 25, 24, 93, 67, 12,130,198,181,214, 82, 23, 57,101,102,207, -186,232,128,138, 1, 77,148, 81,187,247, 68,229,112,195,200,232, 29,131,235, 49,249,147,207,124,186, 64, 39,149,250,228, 51,159, - 14,236,243, 3,220, 24, 81, 56, 79,191, 55,141,212,206, 65, 39,147, 40,110, 94, 73,156,117,147, 33,137,102, 72,135,192,180, 19, - 62, 71,213, 14,195,240, 12, 31,123,110,153,243,222, 11, 42, 51, 10,220, 98,202,130,238,123,185,249, 66,154, 44, 41,155,205,177, -154,213,162,162,216,172, 0, 69,211,203, 53, 83, 46,215, 96,115,142,221,128,213, 30, 77,160,204, 50, 90,163,105,247,178,115,188, - 88,175, 88, 46,151,156,186,150,178,168,184,121,216,178,125,220,163,109, 65, 94,212,100, 42,163,111, 3,104,131, 75,209,153,211, -104, 60, 16,201,107,225,164, 47,139,122,126, 45,152, 82,178,196,155, 46,101, 2,200, 4, 35,207,114, 84, 94, 80,102, 57,219,237, -150,110, 28, 25,218,110, 6, 92, 44,202,138,190,105,185,191,185,101, 28,251, 25,118,210,187, 62,217,195, 4, 33,172, 53, 12, 67, -138,111, 84,138, 60, 51, 4,147,216,243,130, 64, 18,138, 94, 94,224,220,147,128, 74, 41,206,186, 81, 55, 31,230, 50, 61,208,243, -254, 87,172,107,157,168,238, 66,124,150,243,110,173,198, 24,197,216, 15,179,134, 35,166, 2, 71,232,146, 6, 19, 45,163, 79,110, - 6,109,200,242, 76,128, 58,133,157,167, 76,130, 14, 29, 83,161, 8, 89, 97, 49, 99,206, 48, 74, 1,252,225,211, 71,190,249,242, -181,208, 18,135,129, 24, 37,225,173, 40, 10,182,143,123,150, 43,201,222,190,127,220,145,231, 57,155,205,154,182,109,232,219,150, -205,213, 21, 33, 74, 0, 8,209,203,115,193,218, 4,161,217,205, 40,214, 41,135,221,123, 79,215,246, 28,143, 71, 25,167, 18, 5, -133, 75,156, 39, 19, 79,137,131,118, 30,201,123,247, 84, 48,207, 17,154,200, 58, 78,132,113, 2,205,209, 9,111,221, 37,215,200, - 4,162,153, 68,135,226, 32, 2,165, 69, 16,172,162,198,245, 50, 89,213,233, 94,210,134,164, 48,151,251,215,230, 25, 38,123, 90, - 9,228, 73,100, 57, 89, 28, 79,167, 19, 87, 23, 23, 40,165, 88, 44, 22,233,158,238, 40,138,146,178, 20,109,208,205,205,205, 92, -160, 76, 66, 81, 99, 50,138,194, 72,116,105,240,244,219,145,207,119,183,120, 63, 38,242, 96, 90,177, 69, 63,107, 43,196,230,150, - 4,181,153,100,112, 76, 43,220,112,102,121,187,184,184,144, 41,201,122,205, 42, 93,219,198,200,235,123,243,230, 13,135,195, 65, - 40,154,255,252, 79,236,183, 15,252,254,247,191,231,250,250, 90, 2, 91,138,138, 81, 43,186,182,193,165,107, 75,197, 18, 77,192, -187,145,182, 57,162,195,128, 31, 10, 74, 27,185,186,186,224,112,216,242,233,243, 7, 14,199, 29, 88,184,187,187,225,250,250,154, -183,175, 94,178,223, 31,103,111,124,235, 6, 41, 12,220, 40,207,250, 74, 34,106, 67,136,146, 54,167,196, 5,102, 51, 67,161,114, -108,223, 73,211, 53,118,228,101,205,208,123, 8,162, 51,240, 17,202,172,226,238,254, 51, 86,137,237, 47,203, 12,139,186,192, 22, -249,108,123,172,234,146, 97,168,105, 7,137,204,237,186, 70, 70,238,233,243,184,125,104,136,106,228,250,234,138,205,197, 75,177, -180, 41, 37, 89,188, 50,110,237,176, 86,246,114, 1, 1,117, 76, 35,145,169, 51,159, 21,176, 81,104, 85, 6,241,155,146,110,248, -185,155,215,231,106, 96, 5, 41,138,209,121,135,181, 50,242,206,170,138,251, 67,139, 31, 12,177,144,124,229,206, 57, 14, 77, 75, -163,123,238, 30,182,212,245,134,172, 52,180,163,160, 7,139, 92, 83,230,134,186, 50,224, 60,174,148,215,123,219, 61,144,155, 2, -165, 45,167,182,147,236,224, 94,132, 32,139,170,130, 32,197, 5, 26,138,122, 37,227,212,193,205,241,120,218,106,148,242,140, 78, - 33, 28,160, 40,113,144, 41, 81,172,237, 71,222,191,255,192,246,241,196,175, 31, 62, 83, 93, 92, 17, 77, 70, 63,122,110, 62,125, - 34, 6,136,126, 96,181,172,249,235, 79,191,240,242, 52,160,140,168,207,239,239,183, 51, 41,172,239, 91,220, 56, 18,189, 64, 70, - 78,167, 35, 93, 47, 15,140,186,174,209,131,103,191,223,115,220,239,168,138,156,254,116,100, 81,151,188,121,243,134, 92,103, 52, -237,158, 67, 55,160,178, 26,101, 21,165, 45, 37,137, 42, 29,116,231,168,215,190,239, 41,139, 2,149, 91,178,104,240, 22,108,166, -137, 81, 30, 36, 93,223, 51,250,129,194, 20,226, 53,142, 14,239, 98, 10,227, 41,229,223,182, 32,226,113,163, 0, 30,220, 24, 8, -209,225, 92, 76, 15, 47,149,146,223, 28,227,216,211,247,162,230,159, 44,116,114,221,120,140,201,146,104,196,167, 76,128,140,209, - 11, 11, 25, 35,116,164,209,245,196,240, 68,166,155,108,113,217, 25, 83,250,156, 44,231,188,195,102,133,104, 2, 66,100,153,213, -104,109,105,135,158,161,119, 79,112,153, 20, 58,163,141,198,133,136,241,224,162,163, 88, 46,104,187,129,159,223,127,158,139, 16, -171,225,205,139,107,150,151, 27,186,246,136,239,123, 54,155, 13, 95,127,245, 37, 74, 41,254,250,243, 47,172,215,107, 62,222,222, -209, 13, 30,112, 20,133, 71, 27, 43,221,250, 48,206, 59, 90,165, 34,139,101, 77,147,126,125, 60, 52,244,167,128, 27, 70,180,234, -201,243, 12, 31, 53,135, 99,115,134, 92, 85, 51,191,126, 76,191, 23,130,227,120,148,156,123, 99,158, 10, 46,157, 9, 69, 43, 32, - 34,174,245,197,102,238,148,142,109, 51,223,139, 82,236,149,228, 73,220,211,247, 61, 62, 4, 48,210,181, 89, 34,109, 27,230, 12, -233,115,141,130,216,215,192, 35,164,199, 39,241,163, 0,107,108, 54, 57, 30, 52,222, 50,239, 68, 39, 27,211,180,190,201, 18,102, -149, 16,159,165,188,161,210,123,214,162, 74,232, 19,158,179,239,123,250,113, 16,240,203, 48, 48, 58, 71, 84,154, 66,231, 73,133, -237,136, 88,246, 93,224, 52, 4,222,188,120,197,241,216,176,127,220,225, 99, 75,181, 88,115,106, 58,154,166,225,197,139, 23,124, -250,244, 9,215,119,188,123,247,142,174, 61,241,203,175, 71,172,201,185,186,170,185,189,149,232,233,203,171, 43,238,238,238,208, - 90,243,167, 63,253, 73, 60,247, 62,208, 14, 61,227,224,230, 34,103, 82,157,219, 60,195,141,195,252, 30,158,210, 9,197, 54,165, -149, 69, 27, 43, 76,238,200, 44, 8,156,174,235,201,217, 49, 58,121,150,206,107,206,179,255,149, 41, 80, 37,119,210,193,247,105, - 74,230, 99, 4,239,168,138,196,103,143,158, 44, 75, 68,207, 16,136,137, 0,154,101, 25, 99,122,190,100,214, 10, 73, 47,203, 25, -199, 97, 46,158, 79,167,147,228,203, 55, 13, 67,215,241,184,223, 83, 37, 86,197, 55,223,124,195,118,251,192,229,229, 37,175, 94, -189,226,243,103, 9,190,145,253,188,227,242,114, 51,171,226,155,166, 65, 27,249,153,147, 70, 40,203,114,226,220, 16, 6,209,186, -100, 66,126,180,214, 98,179, 64,189,216,204,194,183,170,170,120,249,234,154,211,177,101,181, 90,177,217,108,184,184,184,152,249, -231,135, 99,195,246,241,128,177, 5,175,223,125,193, 87,239,222,242,238,205, 75, 92,140,244,157,192,200,172, 2,188, 67, 33,247, -144,252,252, 56,179, 52,198,177, 71,159, 52,163,235,121,253,250, 53,221,208, 19,186,158,122, 37, 5,196, 15,223,127,207,213,213, - 21, 47, 95,190,228,215, 95, 63,240,226,133,216,151,243, 60,103, 89, 11,155,193,245,114,127, 87,101,145, 50, 25, 50,130, 10,100, - 78,161,163, 70, 41, 9,114, 81, 72, 99,178, 92, 95, 50,244, 34, 64,204,139,146,227,177, 33,183, 22,109, 75,126,121,127, 67, 81, -175,120,251,234, 90,236,124,195,128, 54,240,242,106, 61,147, 89,243, 65,214, 98, 77, 59,206, 46,177,188, 90, 50,120,203,221,253, -227, 83, 65,157,229, 88,109, 51,114,107, 9,206,211, 13, 35,198,203,151, 98, 20,172, 19,119, 88,232, 86, 82, 61,186, 41, 29, 42, - 23, 1,198,100,122,137, 74,167,139,219, 36, 28,212,153,210,178,111, 9,126,228,226,114,141,247,142,195,254,145, 87, 47,174,200, -203,154,227,233, 19, 86, 27,246,251, 6,187, 18,216, 71, 53, 74,103,217,122, 80, 81, 49,250,128, 85, 2,139,177, 42,240,120,255, -145, 87, 23,223,128,118, 44,150, 21,101,189, 36,152,130,125,211,113, 60, 14,168,188,132,144,209,184,145,247,119, 59,214,139,142, -223,127,253, 37,133,146, 93, 79,244,129,193,203, 8,215,247, 45, 23, 23,235,116,216, 25,186,232,232,181, 33, 51, 5,195, 16,112, - 49, 98, 84, 96,189,185,166, 94, 62,242,240,227, 7,190,120,251, 38, 9,206, 12,135,227,137, 62,104,110, 31, 79, 92, 95, 93,240, -254,102,203,246,228, 57,245,159,217,108, 54, 56,183,151,209, 73,138, 44,172,106,177,188,124,110, 27,238,238, 30,104,218, 65, 42, -176,209,209,181, 3, 1, 24,199,158,178, 42,208,214,242,213, 31,254, 64,215,117, 28, 93,128,177, 99, 76,226, 49,101, 51,154,238, -148,196, 80, 26,173,159, 48,189,206,185,196,209,142, 24,163, 25,134, 62, 37, 96, 69,198,182, 79, 69, 87, 36, 43, 53,174,141,180, -199,227,188, 59,213,218,208, 28,122,154,195, 17,173, 21,139,197,146,182,109, 18, 21, 80,244, 20, 74,129,214, 34, 86, 27,131,140, - 26,181,178,140,174,199,141,225,201,178, 99,213, 60,209,153,254, 29,131,146,152,207,160,136, 42, 96,109,206,208, 15,132, 32, 59, - 62, 99,173,164,248,133, 0, 10,108,110,240,193,145,217,140,171,205,229, 76,197,154,210,187,242,212,133,159, 91,242,178,162,146, -135,171, 54,232, 66,144,194,243, 14, 94, 73,145, 25, 92,160, 31, 3, 33,209,244,138, 50, 67, 43,240, 78,188,180,199,230, 64,119, - 60,224,251,158,151,175,126,199, 79,239, 63,177, 90,173,200,203, 37,167,206,209,156,122,242,186,146,174, 41, 58, 46, 86, 43,168, - 46, 48, 58,144, 89,203, 98, 89, 96,122,207,114,189,166,172, 42, 78,221, 73,130, 88,130, 34,179,150,102,191,149,247, 25, 3,175, - 94, 94,207, 83,137,105,255,152,105, 67,212, 18,130,113,119,119, 55, 31, 0,168,167,207,221,123,207,169,235, 25, 83,202,219, 52, - 22,206,178,140, 49, 41,200,197, 67, 59,130,177,132,105,125,225,196, 68, 54,166, 3, 51, 4,209, 28, 8,153, 47,127, 6,155,177, -214, 82,102,178,151, 44,138, 98, 30,245, 26,163,201,114,195, 98, 81,209,247, 45,101, 89,203,207,203, 51,234,122, 57, 91,134,140, - 78,201,114, 77,155,118,140, 41, 50,212,245, 60,238,238,137, 65, 97,178,140, 24,195, 28,222,179, 63,157,120,120,120, 96,179,190, -228,167, 95,222,115,113,113,129, 10,145, 74, 23,252,229,135,143,120,239,168,138, 18,231, 6, 50,171,248, 47,255,248, 3,255,231, -255,254,134,161, 57,241,246,213, 53,223,255,240, 35,139,213, 5,117, 93,179, 61, 28,121,241,250, 21, 47, 46,215, 20, 38, 96,227, -192,186,174,248,226,171,111, 56, 52, 45, 95,191,124, 69,140,145,135,237,142,113, 28,121,245,234, 21,215,175, 94,178, 77,249,225, - 70,105,176, 22,165, 37, 42, 58, 38,183, 75,150,139, 71,249, 98,189, 38,164,162, 49, 36,219,216,232,197,237,147,167,168,207,221, -238, 17,148,104,150,148, 10,248,113,164,176, 1, 91,101,228,101,133,243,229,252, 93, 77,228,182,182,109,231,201,101,140,145,177, -239, 81, 33, 80,165,177,249,228,143,206, 44, 41,202,152, 52,165,145,235, 94, 41,205,113,215,112,177,186,100,183,221,243,250,245, - 75,116,136,220,223,220,178,250,166,226,242, 98, 45,147,216,194, 18, 53,152, 44,227,253,199, 15, 92,110,174, 88,174, 55, 52,199, - 19, 87, 87, 87, 40,147,241,233,230,150,139,139, 75,190,252,242, 43, 22, 85, 45, 43, 21, 60,203,186,194,102,242,236, 49, 40, 30, - 30, 30,248,248,241, 35, 74,169,217,122,150,231,185, 20,126,233,121, 48, 29,220,101, 94, 96,140, 98,185,170,113,110, 72,227,254, - 58,173, 8,100, 85,183,223,237,121,255,254, 61, 31, 62,127, 38,179, 5, 69, 81,137,234,223, 39, 70, 9,142,171,149,225,143,127, -248,154,230,212, 17, 11,147,156, 5, 39,138,162,224,254,113, 75,136, 34, 56,141, 81, 38,171, 99,132,227,169, 97,177, 88,176,235, - 58,186,247, 31, 82,234,103,195,245,235, 55,220,222,222, 82, 47, 86,220,223, 62,240,238,221, 59,172, 54,116, 77, 75, 76,147,148, - 73,147, 50, 53, 26,117, 93,178,221,110, 41, 76,142,115,105, 82,219,119, 51, 44, 74,245, 35,245,114, 37,103,165, 53,184,224,249, -245,195,123, 50, 91, 80,215, 37, 95,188,251, 29,119,159,223,243, 95,255,241, 95,217,125,125,192,228, 5,139,202, 96, 99,224,110, -123,207,106, 81, 73,145,157,114, 30,140,178,156,246,123, 50,109, 40, 12,172, 23, 25,109,103,216,239, 31,184,188,184,166,113, 35, - 54, 42,200,108,134,154, 18,121,166, 92,102,253,148,105, 43, 74, 79,139, 3, 76, 22, 25,137, 66,239, 50,138,220,102, 50,126, 74, - 91, 28,151,196, 66, 83,184,134,214,154,122,185, 96, 28, 58, 78, 9,106,147,231, 57,203,101, 77,158,215, 16, 34,199,253,137,101, - 45,255,173, 42,115, 22,155, 11,186,174, 99,113,121,141,138, 57,132, 17, 21,158, 4, 92,163,107,201,203, 12,173, 12,251,253, 17, - 99, 51,202, 69,206,174, 15,188,255,240,145,187,199, 3,117,181, 36,203, 13, 63,252,252,129,127,255,183,127, 36, 43,106, 84,244, -104, 61,204,137, 77,147,141,161,119, 35, 46, 38,114,154,182,140,126, 16,225, 89,132,118, 28, 41,108, 69, 12,208, 12,178,175,241, - 67,160,117,247,156,250,129,211, 16,132, 66, 55,120, 62,223,222,210, 37,234,146, 53,142,219,251,247,188,121,117, 73, 94, 86, 84, - 69, 65,153,186, 19, 93,166, 21, 70, 84,108,119, 13,152, 41, 87, 56,224, 93,192, 68,155, 62,163, 37, 55,183,183,114,160, 38,171, -132,119, 17, 99,123,193,229,134,145, 67,215,145,101, 54,113,153,253, 60,254,158,112,139, 19, 98,116, 38,134,157,169,212,229,226, -180,115, 66,210,212, 1,207,201,121, 89, 70,211, 52,243, 56,126, 2,143,204,163,217,232,231,157,237,116,157,156,131, 46,206,133, -113,191,165,198, 77, 83, 28,157,217,103,187,252, 41, 41,105, 24, 92, 10,222, 88,206, 55,210,185,159,219,185,100,233,234,135,103, - 22,185,105,252, 57,117, 77,211,231, 50, 29,234,211,248,115,154, 54,217,114, 33,172,116, 15, 62, 12, 88, 34,168, 48,119, 83,110, - 28,208, 38,163,237, 6,108, 54, 48, 12, 66, 70, 51,153,149,107,116, 89,115,125,181, 97, 81, 22, 60,220,239, 49, 49,112, 31,239, -121,184,187,231,242,197, 75,134,161,227,112, 60,210,116, 3, 89, 86,240,226, 98,195,106, 81,177, 40,172, 8, 39, 83, 16,196,116, -168,143,125, 79,115, 58,112, 72, 52,182,135,135,187,148,118,183, 36, 47, 37,212,161,237, 78,244,163,248,102, 81,162,182,143,137, -177, 16, 20,216, 34, 23,171, 84,242, 6, 79,162,171, 62, 49, 9, 48, 26, 99, 52, 81,171, 39,250,227,121,198,122,210, 63, 76,129, - 78,198,104, 50, 99, 33,133, 31,201,142, 57, 50, 14,154,237,237,199,167,181, 75,140, 9, 46, 35, 34,217, 97,112,243,218,102,236, -135,121, 13, 99,140, 65,197, 64,219,119,146, 48,101, 45,202,136,141, 47, 76,138,123,109, 25,189,227,235,111,191, 73, 73,101, 59, -154,148,189,224,156,195, 46, 44, 69,185,228,212,157,184,185, 63,114,123,255,192,183,223,126,203,221,231,143, 92,174,215,116, 93, - 75, 94,149,178,162, 26, 71,170, 66,236,173,199,195, 30,231, 60,198,228, 84,213, 83, 96,201, 50, 69,200,118,157, 64,119,190,251, -238, 59,254,252,151,127,149,201, 72,211,160,148,228,135, 23, 89,142,177,242, 25,141, 93, 79, 85,148,179, 88,208, 71, 37,147,170, -190, 35,250, 56,175,129,150,203,101, 26,205, 70,110, 62,125, 16,209, 87,158,113,117,177,166,115, 17, 6, 55,135, 38,157,195,149, -206, 3,147,206, 61,220,147,200, 48,203,141,172,213, 84,192, 59,149,166, 1,102,206,173, 7,205, 97,119,160,174,107,186, 83,199, -245,245, 53, 93,115, 18, 10, 32,145, 60, 65,185,198,113,164,233, 90, 78,173,172, 9, 47, 47, 47,185,184,186,228,197,171,151,220, -223,222, 49, 12,142, 79,159, 62, 73,176,202,205,141,184, 50, 8, 88,171, 25,198,142,113, 28,112,253, 48,239,225,223,188,121, 51, - 23,132, 77,211, 64, 7,222, 31,230,247, 55,110,215, 97, 0, 0, 32, 0, 73, 68, 65, 84, 56,175,112,163, 35,179,144,105,197,161, - 57,225,210, 14, 60, 6,133,143,176, 90,110,120,241,250,213,108,231, 60, 54,146,152, 87, 47, 86,148,121,129,181,154,171, 43, 1, -221,188,127,255, 30,133,225,226,226,146, 87, 47,175,249,235, 79,191,112,181,185, 72, 99,107,207,152,198,217, 54,207, 18, 57,212, - 81,106, 97,216,215,203, 37,251,195,137,207,159, 63, 66, 80, 44,214,155,249, 90,253,238,187,239,248,248,241, 35, 99,194,165,143, -157,195, 15,146, 45,160, 8,216, 44,163, 94,228,140, 67, 71, 76,255, 77,110, 51, 28,145, 94,129, 27, 6,218, 83,131, 75, 86,101, -173, 45,125, 18, 66,238,118,134,119,175, 94, 83,175, 46,201, 15, 7,126,249,120,131, 49,154,255,248, 31,255,150,139,245,134,159, -127,250,158,248,242, 37,153, 57,119, 18, 13,232,169,121,142, 35, 70, 71,190,249,242, 53,255,253,159, 31,249,245,215,239, 41,171, - 5,214,159,229, 40,159, 51,217,139, 44,199,100,249, 51, 20,171,181,150, 81,188,108,105,199,102,228,193,146,114,155, 99, 74, 93, - 10, 81,190,148, 24, 99, 82,232, 89, 98,112,184,161,199,106, 69, 89,137, 18,114,177, 94,243,242,213, 53, 15, 15, 15, 84,117,134, -177,242,192,209, 54,227,216,108, 33, 26,170,178,130,193,203,223, 29, 3,135,174,101,191,149,204, 99,173, 2,219,199, 29, 15,135, -150,221,177,231,225,216,241,254,211, 45,183, 15, 59,242,188,144,189, 82, 81,241,226,213,107,116, 94,224,218, 35, 0,141, 11, 88, -165,105,187, 22,173, 21,131, 50,233,198, 25, 9, 78,212,181, 74, 69,218,126,100,127,106,120,145,215,168, 90,113, 28, 6, 62,109, -143,180, 3,152, 12,134, 0, 62,128, 79,221,171, 79, 35, 54, 27, 28,214,100,228,165,229,230,110,203,178,206, 24,235,154, 62,147, -241,215,178, 94,160,181,162,239, 59,222,126,249,133,248,203,211,238, 50,207, 74,116, 38, 29, 85, 55,244, 44,150,213, 12,233, 17, -126,182, 56, 20,164,179, 46, 24,157, 67, 27, 25,243,105,173, 49, 40, 84,202, 54,206,243, 28,165,159,196,107,231,118,163,233,225, - 26,210,142,123,170, 60, 39,129,148,181,150, 44,207,161,239, 37, 86, 49,137,183,226, 48,204, 7,128, 82,242,112,115,222, 75,172, -166, 82,100,121, 78,145, 56,211,192,236,121, 61, 39,208,157,175, 9,154,227,241, 25,207,125, 72,129, 21,206,201,195,237,152, 24, -220,231,197,200,180, 95, 13,114,177, 61,179,226,157, 91,226,126,235,143,159,148,248,211,193,174,148,124, 94, 33,189, 46, 99,204, -156,112, 54,246, 98,117,186,216,172, 89, 44, 42,238, 13,248, 32, 93,252, 56,142,212,117,197,177, 21,129,219,175,191,254,202,183, - 95,125, 77,158,231, 60,220,124,230,186,200,121,251,246, 45, 38, 47,104,123,249,121,139,197,147, 10,120, 42, 62, 78,167, 35,104, - 77,230, 28, 85, 85,113,121,121, 57,167,177, 77, 42, 95,239, 35,230, 44,176,163,107, 7,162, 50,104, 45, 34, 41, 31,131,216, 65, -173, 38,183, 26, 63, 6,154,227,126, 22, 25, 74, 32,139,153, 5,120,211,103,233,189,135, 32,251, 88,129,151, 60,191, 70,166,207, -109,142,228, 69,137, 16,214,249,185,104,204, 50,177, 44, 21, 69,193,254,116,146,145,123, 94, 18, 2, 44, 86, 75,154, 83,162,210, - 1, 89,145,138,188, 36,152,235,251,118,254,126, 70,239, 88,148, 75,148,210,244, 78, 72, 98,211, 68,162,235,186, 25, 63, 92, 20, - 5,155,141,176,217,125, 20,148,104,185, 40,217, 29,182,252,211,159,254,133,111,254,143,255,196,237, 63,222, 82, 45,150,180, 77, -203,106,115,205, 48,202,103,113,121,113,193,208, 55,140,163, 63,131, 40,217,153, 20, 55, 21,172,162,129, 80,188,123,247,142, 23, - 87,215,220, 61,220, 99,173,158,167,150, 70, 41, 22,139, 90,198,230, 99,207,110,155,192, 39, 74, 97,149, 88,131,213, 32,249,244, -227, 32,182,203,205,102, 77, 85,150,100,153,225,225,238, 70,158,135, 81,212,244, 22,113,175, 76,197,234,116,223,158,139,196,206, -217, 14,231,248,228, 44,179,137,164,239,165,173,154, 0, 40, 90,165, 93,188,231,216,156, 40,235,146, 99,219,112,109, 46,121,249, -250, 21,159, 62,125, 20,113,116,150,201,159, 75,223,245, 20,177, 60,157, 1,227, 56,162,140,230,250,250, 90, 28, 16,233,250,184, -185,185, 33,120,209,228,200, 8, 61,155,167,100,199, 97,228,225,120,194,253,203,159,196, 38,151,229,207, 52, 50,207, 44,146,209, - 83,151, 25,203,122, 49,175, 35,150,203, 37,125,223, 81, 47, 86,188,126,253, 58,173,223, 44,139,197, 83,113,126,121,117,205,106, -185,196,234,200,215,111,175,233,251,158,235,235,107,118,143, 7, 62,125,250, 68,211,246,115,128,215,148,133, 97,242,132, 21, 79, -170,255,221,238, 64,110, 13, 89, 85,114,121,241, 18, 55,142,236,247,143,148, 89,137,213,240,112,119,195,122, 89,179,172, 75,242, -164,188, 95, 46, 23,184,174, 39, 88, 77,145, 91,154,230,200,219,215,175,184,188, 88,242,235, 47, 31, 68, 93,175, 69,132,234,199, - 1, 55,136, 93,217, 13, 29, 46,104,121, 22, 91,141, 81,162,157,232,251,142,247,239,127,165,239, 4,134,164, 85,228,230,254,158, -247, 31, 62,177, 40,191,161, 42, 87,116,221,136,174, 75, 50,155, 99,237,200, 56, 38, 1,167, 23, 4,246,245,171, 87,140, 33,242, -245,187,215, 12,195, 53, 31, 63,126,198,126,248,240,129,162, 40,102,155,129, 62, 19, 45,157,223,224,211, 67,239,188, 8,144,223, -179,226, 75,143,162,102, 38,168,180,111,151, 81,109, 85, 21, 73,217, 42, 35,171, 76, 27,250,190,149,188,233, 40,190,198,162, 44, - 1,143,206,114,180,209,140, 94, 58,127,239, 35, 38, 68,218, 20,217, 23,163,167, 61, 30,216, 62,236, 57,182,162, 94,141, 38,103, -183, 63,241,211,135, 91,238,119, 7, 30, 79, 3,251,227, 64, 96,192, 5,248,119,223,125,137, 45,107, 78, 93, 79,110, 51,174, 55, -215, 2, 98, 8,145, 33,117,138,170, 42,233, 78, 13,237,169,157, 15, 52,163, 13,199,177,227,177,237, 96,127,160,137, 57,157,143, - 20,171, 26,227, 3,121,189, 32,203, 10, 17,236,160,146,119,122,164, 75, 74,245,186, 42, 82, 42,146, 65, 37, 5,173, 49,138,122, -185, 98,177, 94,226, 93, 96,140,145,168, 2,171,205,134,186, 44,233, 6,161, 98,157,218, 99, 26, 71, 39,134,114, 33, 35,103, 31, - 53,101, 81, 48, 12,178, 23, 53, 70,179,217,108,158,101,109, 79,157,151,115,110, 78, 72, 59,239,224,167,117,202, 36,110, 27,210, -200,243, 28,239, 58,171, 83, 83, 65,247, 91, 96, 76, 60, 75, 70, 27,210,175,167,131,122,234,130,167, 7,241,164,176,157, 66, 36, -126,219,185,187,248,100,104,155,126,182,188, 23,121,125, 93,223, 63,179, 73, 77, 86,184, 41,151,123,232,250,255, 33,210,245,124, - 28,127,158,247,126, 94,208, 88, 43,129, 30,206, 43,108,148, 44,232,204,102,242,144,117,142, 48, 12, 4,239, 40,172, 73,150,155, - 4, 92,178, 10,107, 43,138,170,100,117,177,225,213,171, 87,220,220,136,176,166,200, 45,139, 34,231,203,111,190,166,107, 7, 30, -118,123,238, 30,118,108,140, 37, 43,170, 57, 32,228,176, 63,193, 52, 41, 80, 34, 76, 58, 30,143,108,183, 91,140, 49,156, 78, 39, - 14,135, 3, 81, 49, 39,119, 77,187,240, 83,219,207,202,255, 60, 29,150,159,111,111, 80, 17,170,186, 38, 51,150, 99,115,194, 40, -177, 40,217, 84,212,101,105,135, 25,125,192,235, 32,171,137,179,116,184,249, 32, 15,114,120, 43, 12, 74, 11,108,134,248,116,207, - 71,255,212, 57,202,161, 46,215, 91, 53,250,244, 29,137, 62,226,176, 63,113, 58,157,102,213,175,208, 21, 21,193,249, 89, 1,190, -217,108, 88,173,175,196,227,156,158, 65,180, 82, 4,250,192,179, 67, 61,248, 49,169,173,171,249, 26, 38, 41,185, 93,107,249,249, -151,247,236,246, 71,208,134,166,109,113, 78,161, 9, 84,101,142,235, 59,236,197,130,162,200,229, 53, 13, 14,215, 13,248, 32,208, - 20, 17, 91, 70,108, 86, 48,142, 61,109,219,177,168, 42, 94,188,120,193, 79, 63,253, 52,219, 7,125,112,248, 65, 50, 31,170,170, - 96,181, 90,176,127, 60,200,117,173, 51,116,166,196,182, 27, 18, 45, 45,137, 76,199,209,161, 85,143,214, 69, 82,111,139,176,179, -235, 58,162,202,158, 21,164, 19,136,101,186, 23, 38,145,214,116,255,156, 43,242,103,135, 17,147,199,221,206, 78, 18,166, 24,226, - 24,230, 40,223,251,251,123,190,254,230, 75, 62,126,252, 64,136, 79,110,135,195,225, 48, 23, 55,211,115, 97,226, 65,236,247,130, -112,109, 79,242,231, 14, 59, 89, 83, 88,163,168,138,146,110,144, 0, 48,173, 20, 70,103,243,174,125, 76,248,227,182,105, 80,169, -136,214, 42,202,186,106,182,172, 90,198,193,209,169,145,178,172,201,179, 74, 50, 16, 14, 59,234, 36,218,123,247,238, 29,151,221, - 41, 69,202,202, 51,226,226,226, 66,146, 11, 75, 75,161,224,195,175, 63,243,230,205, 59, 30,183,114, 29,157, 78, 39,170,178,230, -151, 95,127, 69,103, 57,101, 81,113,117,125,205,177,109, 0, 41, 34,155,166,193, 26,195, 41,137, 30,151, 85, 73,119,178, 73,247, - 35,186,142, 41, 83,254,213,171, 87,172, 22,130, 75,119,195, 72,140, 75,177,227,154, 72,223,158, 88,175, 87, 68, 4, 74,163,141, -145,102, 24,225, 25,220,220, 61, 50,140, 14, 29,131, 68, 20,171,136,178,130,145,205,179, 12,140, 88,222,178,205,154,213,162,164, -107, 15,252,211,191,252,133,224, 60,191,255,246, 75,134,190, 35,120, 41,216,235, 90,172,218, 66,127, 21,151,214,105,255, 72, 64, -177,170,114,242,205,146,246,240,136,157, 0, 18, 15,251,180, 3, 3,242,204, 82,100, 50, 42, 94, 44,107,217,145,167, 7,106, 76, - 68,170,144,124,169, 97,234, 32,211, 67,106,112,194, 27,118,103, 93,161,196,154, 10,193, 77, 23, 37, 62, 6,238,182, 15,180,163, - 67,101, 21,202,104,246,167, 29,218, 84,210, 49,188,255, 32, 15,186, 83, 79,181,232, 56,157, 68,172,151,165, 28,241, 62,194,190, - 29, 89, 40,195,177,117, 68,147, 99,203, 26,211,121,140, 51,212, 58,199,100,150,177, 31, 56,244, 29, 63,125,248, 72,102, 34,175, -175, 47,209, 89,206,126,183, 21,202,211,208,179,185,188,102,244, 15,108, 31,238,230,131,104,126, 88,120,169,129,127,221, 30,177, -217, 7,154,193,115,241,242, 37, 69, 85, 19,149,193,152,140,227,110,207,122,189,198, 24, 35,145,126,227, 72,150,155,121,215, 91, - 85, 21,199,253, 78, 30, 38, 17, 78,109,199,169,109,232,251,145,118,104,185,186,186, 98, 56, 60,242,184, 11,180,221, 19,111,187, - 40, 36,195,119,183,127, 68,181, 41,185,201,228,120, 95, 51,122,151,124,208, 5,214,100,207, 56,235,211,195,121, 26, 35,158,251, -186, 39,107,206,116, 8, 79, 15,142,243,177,171,140,197,226, 12, 85,152, 59,221,233,208, 61, 59,164,167,135,184, 78,163,194, 73, -232,227,196,178,141,139,144, 87,245, 51, 50,217,185, 29, 42,198, 72,149, 23,207,252,236, 83,215, 84,150, 53, 85, 85,193,225, 9, -110, 50, 21, 25, 50, 85,144, 2,179, 76,105, 85,231, 80,150,243,174,230,188, 40, 57, 63,236,167,223,179,118, 90,195, 32, 10,116, -239,105,142, 39, 50, 21,102,152,203,241,176, 75,197,105, 72,158,226,200,118,247,192,230,234,154, 31,127,252,145,195,225,192,221, -231, 79,104, 21,185, 88, 46, 80,214,240,227, 15, 63,225,162,166,237, 7, 1, 0, 21,162, 36,174,138,140,190,109, 40,178,140, 16, -124,130, 13, 41,250,113, 72, 90,149, 50, 65,115,100,218, 49,133,164, 72,226, 84,196, 90, 63, 79, 89, 98, 20,155,141, 27,122,226, - 40,244, 42,163, 52,203,186, 34,183, 25,235,245,138,246,212,200,136, 54,120,177, 23, 1, 54,147, 52, 59, 81,111,155, 89, 43, 51, - 9, 98,149,138,130,137,214,176, 92,174, 19,231,224,121, 39, 63, 29, 64,209,201,129,125,245,226, 21,135,195,137,227,233,132,195, -115,106, 27,178, 44,103,117, 81,227, 83, 36,172,168,183, 61,223,124,243, 13,235,229,130,183,111,223,242,253, 15, 63,115,127,127, -207,221, 86, 2, 73,218,166,159,159, 51,115,166,118, 89, 66, 72,121,210, 49, 60,125, 30, 41,121,171,174,107,198, 99,203,231,219, - 45,223,252,254,143,252,235, 95,254,132, 49, 57, 15, 15, 15,148,245,154,221,110, 71, 93, 90, 46,215, 27,138,162,100, 8, 29, 58, - 58,124, 16, 4,243,100,145,147,130,210,147,151, 5,247,247,247,124,247,221,119,108, 86, 43, 57,236,172,161,105,122,249,156,198, -145, 49,113,201,203,178,164,235, 58,148,150,124,237,243, 20, 67,239, 61,171,205, 58,165,240,121,202, 66,184, 12,109,219, 63, 21, -186, 33, 62,179,126, 78, 5,231, 84,228,158,163,153,207,175,229,233, 16,142, 74, 12,149,115,247, 59, 63,147, 21,202, 26,124,140, - 12,110, 20, 43,223, 73, 14,176,122,181,100, 12,158,101,177,228,250,197,171,164,215,216,206,247,209,195,195,195,124,160, 77, 69, - 48,136, 37, 14,224,219,111,191,101,189, 90,176,217,172,200,173,162, 44,178,153, 96,151,167,149,209,207, 63,255,204,225,112,224, -219, 55, 47,103,190,132, 4,210,216,217, 82,167,149,165,172, 47, 25, 70,207,245,139, 75, 22,139, 5,171,197, 82, 20,222, 43, 17, -206,109,183,247,108,183,247,228,133,197, 57,177,114,158,142, 91,136, 3, 58, 46,249,239,255,242,103,222,189,121,195,203, 23,175, -249,245,151, 15,244,125,138,198, 53,130,127,125,216,237,229,103, 25,146,181,173, 96, 97, 23, 28,247,242, 92, 89,173, 86,156,246, -135,121, 58,210, 52,141,132,201, 4,207, 97,247,136, 77, 90,165, 93, 10, 36, 26,146,221,240,152,190,231, 85, 93, 83,213, 5,139, -133,132, 45,245,227,192,208,142,184,200, 12,236,241, 33, 74, 82, 98,140,184, 97, 76,208, 50,185,191,156, 27, 88, 46, 69,151, 50, - 6,193, 19,111,239, 79,252,245,167,247, 20, 69,197,171,171, 13,206, 39,189, 81,158,205,194,217, 16,101,162, 53,246, 39,222,190, -125,203,118,187, 99,236, 70,254,230,187,175,177,255,249, 63,255,103,118,187, 29,119,119,119, 82,177,181,221, 92, 13,180,109,139, -205,210, 46, 39,225,252,230,138, 62, 17,213,156, 27, 8, 81, 44,109, 50, 4,146, 3, 96, 26,217, 15,195, 64, 85,139,192,230,112, -216, 83,212, 5,203,122,195, 98, 81,225, 66,192,196, 72, 94,229,184,177, 0, 99,232,134, 14, 31, 27,188,143, 28,219,142,222, 43, -124, 52,228,121,193,114,179, 34, 83,129,205,213,134,125,239,232, 67,195,167,135, 71,202,178, 70,101, 37,203, 77, 70,182, 50,168, -228,111, 29,134, 94, 52,123,105,127,126,232, 6,218,155,123,110,110, 62, 11, 43,222,104, 70, 91,177,221,239,216,239,247,148,101, -129, 10,210, 41, 45,163,101,177, 94,179,189,189,165,237, 6,180,205,137,218,162,172, 4, 21,180,253, 56,171, 60,167, 64,134, 60, -207, 89,111,150, 79, 59,102, 43,149,238,169,109,147,117, 67,211,142,142,182, 61,137, 61, 39,179, 12,163,231,184,221,114, 56,156, - 48, 70,113,117,245,130,139,171,203,249,179, 83, 73, 53, 62,197, 87, 78,105, 87,179,127, 54,145,236,166, 67,245, 60, 54,117,122, - 72,156,119, 2,231,157,242,121,234,217,249,238,238,183,156,111,245, 63,217,183, 78, 15,249,233, 66, 59,127,224, 76, 7,243,116, -240,156,251,206,127, 11,167, 57,255,251,231,113,236, 56, 2,221,252,153, 78,239,247,124,132,255,219,236,247,169, 80,153, 94,203, -179,107, 53, 62,135,235,204,158,120, 39,145,173, 90, 41,130, 27,233, 92, 0, 55,130, 31,209,165,101, 81,215,232,212, 33,159, 79, - 68,246,251, 61,119,247, 91,153,150,100, 37,187,253, 35, 86, 65, 85,230,172,210, 46, 27,244,172,242,182, 40,148,201,101, 63,171, -149, 32, 77,157, 48, 25,148,177, 44,151, 75,209,157, 36,240,203,244,158, 66,178,242,148, 70,196, 69,243,131, 49,207, 89,175,215, -100,153, 68, 82,126,241,246,221, 60, 90,215, 90, 39,197,191, 79,120,202,171,153, 84,183, 88, 60,101,183, 79,118, 45,185,119,253, -156,150,246,100, 97, 19, 27,156,160, 46, 19,119, 32,234,103, 43, 28, 99, 12,221,105,160, 92,212,188, 93,110,208,166, 23,205, 65, - 18, 51,173, 86, 11,110, 31,238,103, 95,186, 82,224,188,120,136, 31,221, 56,147,195,218,182,165, 29,134, 57, 51,126,210,228, 76, -223,239,106, 37, 48,152,105, 15, 59, 29, 54, 19, 29,109,121,177,194,155,140,159,127,249,149,191,249,195,255,198,143, 63,254,136, - 49, 57,205,110, 79, 85, 46,232,135,129,187,219, 7,105, 82, 22, 11,138, 80,176, 81,150,126,240,196, 0,203, 74,172,188,199,182, - 33,183, 25,151,155,139,249, 90,253,253,239,127,207,237,237,109,178,159,245,160, 2, 89,102, 68,129,108,211,164,204,201,253, 25, -140,236,177,167,251,111, 34,225,137,104, 83,118,224,203, 98,153,136,110, 67,250,190,108,130,239,196,103,211,178,233, 51,158,166, - 68,211,235, 57,191,135,195,236,120, 49,104,107, 48, 8, 38, 90,165,123, 97, 26,169,135,137, 25, 79,206,251, 15,159, 88, 46, 68, - 75, 96,114,217, 69, 79,147,162,201, 70, 56,253, 51,133, 42,101,153, 0,177,242, 60,199,165,134,103,154, 28,196,196,119,111,154, -102,190,151, 71, 39, 77, 88, 93, 47,249,183,255,238,239, 80, 42,166,124,134, 78,178,215,241,140,131,104,114, 58,183, 99,251,176, - 19,129,157, 22,237, 69,215, 53, 24,171, 25,134,142,162,200, 80, 58,242,135, 63,252,158, 47,223,189,101,153, 50,236,203, 92,190, -203,239,190,251,142,203,205, 6,231, 28,111,222,188,225, 95,127,248,129, 47,191,252,146,253,225,132, 15,176, 40, 43,124, 8,162, -204, 79, 5, 74, 93,215, 92, 95, 95,211,158,132,161,254,120, 56, 80, 23, 37, 89, 89, 81, 6, 33, 63, 22, 85, 77,211,245,188,200, -114,134,177, 39,122,201, 0, 89,173, 47,216,237,182, 28,142,210,245,255,243,159,255,196,203,237, 53,125, 63, 10, 38, 55,129,105, - 22, 85, 77, 85, 47,249,124,187,165, 31, 70,180, 23,209,245,208,247,114,168,235,140, 56, 40, 78,167, 3,227,197, 10,215, 15,188, -124,249,146,119, 41,126,118,183, 21,142,198,139,203, 23, 40,149, 9,224, 45, 4,153,136, 88, 89,125,201,186,178,231,225, 94,248, - 20,117,189, 96,232, 3,246,235,175,190,101,124, 51,226,190,147, 81,233,169, 57, 72,229,124,115, 43, 41, 90, 74,139,193, 75,167, - 28, 89,173, 48,193,147,165, 47, 86,133,124,174, 12,229, 73,171,103, 81,215, 20,244, 80,215, 53, 6,197,246,254,158,139,205, 10, -107,181, 36,221,244, 35,251,102,143, 53,242,192,177, 6,156,145,234,118, 28, 60, 89,181,224,112,236,200, 77,142, 45,114,170,229, -154,178,176, 88, 19,217, 30,143, 88, 13, 14,205,177, 29, 56,245,158,104,164, 67, 31, 66,164, 29, 29,195, 56,162,136,180,237, 9, -107,224,102, 59, 8, 73, 13,225, 0,163, 35,253,141,164, 48,185, 96,176,170, 64, 27, 69,204, 2,193,150,140,100,140,100,148,203, - 74,194,237, 59, 71, 55,140, 12, 78,128, 47,198, 88,150, 85, 69,223,202, 14, 84,233, 72, 63, 26,142, 41, 15,183,174,107,154, 67, - 67, 55, 14, 24, 20,101, 37,121,201, 1, 69, 52, 6,157,231,220,220,221,147,101,134,213,230, 66, 0, 7, 33,178, 59,156,230,241, - 87,150, 21, 12, 67,196,230,102,134,189, 76,163,246,201, 58,104,108, 49, 31,102,206,185, 20,151,163,208, 49,162,210,205,205,132, -160, 76,187,186,169,163,176, 89, 70,212,233, 80,215,154,160, 82,222,245,180,167,182, 50, 30,196, 24,225,246, 27, 9, 13,137, 33, - 16,148,198,156,129, 71,206, 31,246,255,179, 40,213,223,242,224,165,208, 80,207, 8,106,211, 88,245,124,228, 62,173, 3,206,243, -172,167,159, 57,189,239,243,215,112,206, 71, 63, 63,236,126,251, 79, 8,129, 56,142,233, 6,137, 12,125,139,246,129, 60,211, 9, - 68, 99,217,110,183, 84, 73, 3, 50, 29, 54, 83, 6,116, 81, 20,184, 32,159,101, 89, 22,179,183,118,185, 92, 10, 77,204,121, 33, -207,101, 57, 62,166,155,176,109,228, 80,138,134,186,174,200,138,114, 78,142, 82, 74, 49,122, 73,175,235,251,113,134,122,144, 70, -150, 81, 49, 43,162, 15,135, 93, 26, 7, 14, 4, 55,160,115, 33,235,185,177,231,184, 31,231,168, 77,107,237,140,144,149,244, 44, -217,233, 63, 60, 60,112,115,127, 71, 63,200,158, 49, 51, 2, 59, 58,167,249,233,200,188,190,152, 52, 20, 62, 89,131,228,208,183, -148,229,146,170,172, 1, 77, 81, 84, 84,213,130,227,233, 68, 81, 72,136, 80, 89,212, 51,178, 52, 4, 15,189,124, 23,143,251,157, - 64,147,188,158, 59, 81,107, 45,198, 78, 19, 36,159, 98,127, 5, 62,179, 63,202, 24,184,239, 26,201,219,174, 42,150,203,101, 18, -106,141,148, 69,201,205,195,142,110,240,212,203, 21,110, 12,212, 85, 69, 12,142,170,204, 25,220, 72, 63, 56, 22, 75, 67,158, 43, -138,210,242,120,104, 24,186,136,206,228, 25, 53,193, 80,166, 32,162,237,253, 3, 95,125,241, 37, 67,215,211, 52,167, 20, 21, 27, - 69, 95, 16,100, 95,220,154, 41,252,198,160,140,122,158,127,160,229,192, 19, 54,189, 20,111, 69, 38, 48,165,187,227, 65,166, 12, -203, 92,220, 33, 81, 86,148, 33, 58,250,161,157, 39, 77,195,216,205, 77,194,212, 13,203,252,208, 67,148,112, 17,163, 53, 38,173, -163,226, 52,173,139, 41,147, 67,235, 68,160, 27, 49, 10, 73,198,172, 68,139,115, 56, 72,231, 62,121,212, 39,102,196, 48, 12,244, - 41,137,238,213,139, 23,114, 47,104, 97,193, 55,199, 99,122, 45, 37, 77, 59,242,223,254,249,159,231,136,223, 9,104,227,211,174, - 61,179,150, 31, 62,254,223,232,196, 77,247,126, 20,170,165, 73,130, 62, 96, 89, 75, 1,234,250, 65,132,127, 73,171,161,136,228, -185,229,184,123,100,181, 94,144,105, 67, 93, 10, 40, 77,220, 54,242,190,175, 47, 47,201,108,193,224, 61,155,171, 43, 30,254,203, -127, 73,123,249,129,110,232,217,239,142, 28,219,134,221, 97,207,114,185,156,159, 5, 46,197,187, 90, 45, 58,158,182,232,185,184, -186, 4, 45,176,176,201,203,127,115,247, 64,219,157,168,178,138,141, 90,225, 93, 79,211,245, 12,163,167,105,143, 68, 31,120,220, - 31,168,171, 5,195,152, 4,186, 46, 80, 41, 43, 46, 8,155,116, 47,222,227, 19,212, 73, 5,203,104, 61,131,119, 20,165, 65, 27, -195,234, 98,195,203,151, 47,169,151, 43,242,162, 38,114, 96,119,232,249,244,121,203, 23,111, 95, 82, 20, 21, 49, 12,160,100,114, - 21,163, 52,222,235,245,154,227,126, 79,102, 20, 47, 46, 47, 5, 28,119,177, 92,254, 95,247,247,247, 51,208,127, 28,133,148, 84, - 37,122,149,196,238,149,100,121, 54,123, 79,149,214, 44,106, 25,143,234,244, 32,176, 86,246, 9,122,234, 26,173,153, 9, 96, 32, - 15, 13,165, 21,203,229,130,190,235, 56, 29, 27,129,211, 63,238,104,251,150,178, 16, 80,199,246,241, 1, 99, 51,238,238,182,244, -131,167, 29, 29,135,166,225,238,126,203,118,247,200,241,116, 66,105,205,199,143,159,197,154,227, 34, 93, 63,114,232, 6, 60,154, - 83, 63,240,184, 63,202, 7, 76,100, 28, 6, 6, 55,146,217,140,195,241,196, 24, 34,203,245,134,222,121,118,167,150,253,161, 37, - 47,107,180,201,233, 71, 79, 51,244,132,160,112, 62,242,240, 32,251,144,160, 53, 65, 25,218, 78, 88,227, 50,170,201,168,202,130, -174,105, 88, 46,234, 25,218,224,188,127,214, 57,215, 41,186, 86,184,224, 41, 54, 54,203,208, 70, 64, 18,101, 89, 83, 21,181,224, -254,148, 37, 32, 34,151,113,116, 41,225, 78, 49,142,226,131, 52,214,208,119, 3, 49, 6,170,178,166, 44,202, 68,147,139,207,186, -224,169, 19,155, 48,175,231,221,251,121,199,254, 91,174,248,111,217,236, 83,167, 63,253,254,121, 74,218, 36,170, 83,191,241,213, -206, 73, 92,103,249,236,231, 34,153,223,170,239,189,119,207,118,254, 79, 66,157,167,168,214,233,181, 79, 35, 72, 57,180,211,251, -253, 13,189,238,183,133,195,249, 62,253,188, 99,159, 14,127,233, 40,106,172, 82,248,177,199, 26,195,114, 89, 83, 79,254,106,107, -184,188,216,136, 72,212,187,121,223, 93, 85, 53, 81, 27,134, 97,228,226,242, 2, 19,101,135,253,159,254,151,255,149,183,111,191, -224,151, 95,126,229,234,197, 11,218,174, 39, 43, 23,243,248,173,235, 91,174,175, 47,249,234,171,175,248,247,127,247,119, 28,155, - 35,251,253,129, 79, 31, 63,177,125,124,228,112, 60,177,221,110,217,237,228, 16,187,185,187,229, 38, 41,142,135, 97,192, 59,233, - 24,143,199, 35,119,247, 55, 84, 69,193,221,221,221,204,243,110,154,134,221,110, 71,223, 39,181,238, 56,242,248,248,200,110,183, -167,239,251,249,125,119, 93, 71,115, 58,161, 52,100,185,165,174, 42,150,203,154,170, 42,169,138,156,204, 26,140,213,212, 85,137, -201, 12,153,205,211, 30,209,206,113,185, 74,105,172,145,248,219,166, 19, 11,150,210,150, 49, 4,242,178,160,159,227,125, 73, 25, -212, 82,200,191,126,253, 42, 49,202, 13, 49,138,152,210,207,206,150,132, 93, 13, 79,105,126, 82,200, 72, 39,239, 93,138,120, 77, -133, 94, 81,228, 16, 61, 87,155, 11,140, 82,124,247,187,111,230, 28,110, 5,140,110,100,189,150, 78,174,172, 43,234,170, 74, 35, -101,195,241,112,194,230, 5,126, 12,148, 85, 41, 49,176, 54, 99,247,184,227,234,250,138,155,155, 27,254,240,135, 63,112, 56,236, -137,120, 9, 63, 73,254,127,231, 7,170,178,102,127, 56,177,219,239,137,137,213,177,223, 29, 57,117, 45, 90, 27,124,162,169, 93, - 92, 92,224,157, 99,185, 92,224, 67, 32,207, 44,187,199,173, 60, 59,109,206,144, 20,232,147, 96,117, 66, 52,159,175,203,230,100, -184, 84,204,207,215,124,130,209, 40,165,103, 46,190, 79,194,213,233,158,105,219, 22,107, 12,163,147, 60, 0,165, 53, 49, 68,142, -199, 3,139,229,130,170, 40, 49, 70,158,213,101, 90,151,149,101, 41, 98,203, 52,150, 62,236,247,228, 69, 33, 34, 93,239,249,221, -183,223,176, 90,173, 57,118, 45, 77, 55,200,222,216,202,223,157,165,108,140,190,239,201,242, 60,173,249,101,181, 21, 83, 10,159, - 78,148,182,190,107, 89, 44, 75,134,190, 37,166, 28, 10,173, 53,199,227,158,162,200,146,127, 31,114,107,105,154,150,195,254, 64, -158, 21,108,214,151,172, 86, 27, 84, 84, 44, 18,101,113,177, 88,112,121,121,201,114,181, 17, 49,101,240,233,121, 26, 88,173,215, - 51,169,238,112, 56,204, 98, 94, 31, 20, 69, 89, 51, 56, 79,219, 13, 60, 60,238,249,124,123,143,182, 25,218,102,180,109, 35,194, -187,162,160, 31,197,225, 20,149,102,185, 94,211,143,131, 40,233,157,151,215, 48, 58,198, 0, 62, 8,148,200,133, 72,215, 15,236, -143, 13,221,224,240, 33, 50,142, 81, 24, 46,218, 48,184,129, 97,236,185,184,220,112,177,185, 32, 16,185,187,189,231,112,104,165, - 24, 54,150,199,135, 71,214, 23, 43,214,235, 53, 16,176,153,161,174,139, 52, 73,233, 8, 62, 80,148, 37,187,199, 71,154,246, 68, - 81,230,216, 67,115,122,150,145,109, 19,108,165,235,155,244,165,100, 2,129,112,142,253,241, 40, 30, 72,163,231,209,204, 19, 65, - 74, 82,216,230,160, 13,245, 52,130,117,206, 49,166,138,240,246,254,142,224,146, 24, 43, 6, 34, 96,180,230, 97,247, 72,112, 3, -193, 43, 62,124,252, 44, 66,168,216,129,181,180,131,224, 17, 25, 13,102, 24,248,120,123, 7,222,211,221, 63,146, 79, 81,159, 90, -124,186, 30,139,201,114, 70, 31,232,199,129, 60,177,211,119,167, 6, 99, 36, 38,242,126,119, 36, 0,182, 88,144,149,154,209, 41, -180, 68, 32, 73,212, 29, 48,122,176,185,112,147, 51,155, 17, 2, 20,185,136, 9, 61, 10,149,148,162,121,158,211,166,135,165,182, - 54,165,213,105,148, 73,126,106, 55, 50,184,145, 97,116, 88,173, 49, 90,252,146, 49, 70, 50,109,176,166, 16,253,129,243, 51,184, - 98,178,110,249, 48, 50,186,128, 15, 17,229, 38,171, 75, 33,172,243,212,209, 77,130,165, 16, 60,120, 97,220,143, 49,136, 56, 72, -107,114,163, 49,249,147,178, 61,132,144, 18,234,164,170, 31,131,127,182,123,158, 16, 25, 49, 50,179,147,157, 27,102,189,193,196, -153,158, 42,234,243,212,212,243,195,124, 58, 84, 39,141,192,249,206,126, 42, 6,164, 43, 52,207, 66,100,206,139,133, 24, 35, 62, -253,255,243, 3, 93, 58,247,152,130, 74,178,255, 97,164, 63, 11,137,188, 20, 13,121,138, 98,157, 64, 74, 82, 44,216, 4,232,144, -181,210, 97,187,199, 13, 3,139,244,208, 47,138,130, 83,115,100,117,121, 65, 85, 47,147,136,108,164, 44,106,222,126,177,224,245, -235,183, 2,198,216, 92, 82, 86, 5, 15,159,111, 57, 28,119,124,255,253,247,172, 47, 46,248,244,233, 19,151, 78,176,167,167,211, -137,166,149,159,237,198,158,221,110,199,151,239,222,162,172,225,205, 75, 1,122,172,214, 75,138,178,226,216, 72,231, 25,149, 38, - 16,231,131,121, 22,146, 5,143,115,145,220, 90, 76,189,128, 16,185,188,248,255,249,122,175,102, 75,178,244, 60,239, 89, 38,221, -182,199,149,109, 55,109,102, 6, 3, 12, 72, 4, 4, 50,192, 32, 3, 87,250,211,212,173, 20,146, 66, 4, 67, 0,133, 33, 6, 26, -180,171,170, 46,115,236,246,233,150,209,197,183, 50,247, 62,213, 77,117, 68, 71,119,205,116,213,217, 38, 51,215,103,222,247,121, -151,227,232,116,191,223, 99,180,226,252,252,156,171,171, 43,209,120, 36,177, 95,211, 52,172, 30,238,229,154,173,107,166,211, 9, - 58,179,148,101,206,213,197,197,232, 10, 40,243,140,207, 62,251,140,183,111,223, 82,239,247,216, 60,103,189,222,178,219,215, 84, - 85,133,106, 26,238, 87, 27,148, 50, 60,125,118,129, 74,121,141,245,161,101,187, 63,176,217,239,228, 26, 48, 36,174, 64,135,115, - 9,173, 26, 3, 54,141,120,157,115, 40,147, 97,139, 2,151,198,212,121, 33,136,219, 35,226,211,208, 36, 85,248,160, 14, 31, 93, - 32, 9, 86,163,139,156,125,211,146,169,192,155,247, 55,252,230,171,207,120,245,253, 15, 60,123,246,140,119,239,222, 97,141, 66, - 91,195,238,208,112,113,174, 88,158,205, 41,172,216,130,234,218,163,144, 72,230,229,114,142,139,128, 18, 81,153, 82,138,127,249, -151, 63,242,228,201, 19,222,127,120, 59,234, 83,218,182, 69,183,112,127,191,226,252,252,146,119, 31, 62,208, 29, 14,116,174, 31, -247,168,109,219, 17,131,162,174,101,180, 29,189,103,183,219,137,224,202, 24,138,170, 28,137,136,128,236, 90,149, 98, 49,155, 99, -203, 74, 88, 26, 93,151, 16,175,106,180, 39,122, 47, 33, 79,211,106,146, 72,118,110,140,220,205,178,140,186, 77,194, 85, 43,247, -115,239, 58,138, 50, 7, 45, 7,117,115,216, 83,183,226,175,223,172, 30,168,170, 9,251,205,134, 98, 50, 33,106,197,118,187, 21, - 14,134, 82,220,221,221, 81, 37,102,251,114,185,100,191,223,227,186,150,175,190,250,138,106, 58,225,143,127,252, 35,219,219, 15, -252,213,159,125, 41,123,230,132, 40,158,166,164, 49,155, 9, 94,246, 79,255,242, 71, 98, 84,204,206,132, 31,145,229, 70, 8,163, -192,229,243,167,216, 34, 31,247,238,243,201, 84, 68,113,200,234,101, 49,157, 73, 6, 64,110,217,110,183,172, 31, 54,252, 31,255, -251,223,179,156,205, 9,209,113,247,240,112,156,188,165,235,193,123,137, 52, 62,191,184, 0, 45,235,170, 67, 35,226,183,106, 58, -167,110,123,186, 78,156, 31, 77,211, 82, 77, 51,178,114,194,110,183,163,239, 3,179,249,153,160,102,187, 7,172,181, 44, 22,103, -152,162,144,179, 42, 43,216, 29, 26, 58, 23,104,186, 32, 57, 9,214,242,176, 57, 96,173,165,245, 29, 93,231,168,221,134,106, 54, -195,100, 5,147,217,156, 72,141,139, 17,101, 20,189, 11,244,206,147,229,150,170,202, 88,109,214,212,135,134,231, 79, 95,112,117, -245,148,221,246, 21, 62, 42, 38,229,132,135,219, 27,254,233, 15,255,130,214,240,171,207, 95,208,116, 59,124, 8, 44,151,162, 65, -120,255,254, 61,104, 67, 81,201,154,105,170, 53,182,105,154,241, 80, 7, 80, 33,117,122,125, 51, 86, 63,167, 66,164, 24, 37, 20, - 36,198,163, 10, 83,107,131, 25,233, 87, 97,228,250,158,118, 72,234,228,223, 7, 54,188,132,201,139,207, 86, 69, 81,188, 43,125, -210,237, 25, 67,136,138, 60, 61,224,178, 92, 46, 78, 23, 34, 70, 89,148,213,248, 24,164,242,212, 18,255,170,180,197,164,177,179, -137,130,202, 52, 8, 88, 4,130, 0, 34, 82,184, 71,136, 16,122,225, 97, 91,125,154,231,237,209, 73,253, 59,160, 26,253,216,105, -114,114,216, 68,200,179,159,117,162,195, 8,115,168, 86,251,190,151, 17,124,242,216,142,194,145,188, 36,211, 57,198, 28, 71,204, - 74, 13,241,142, 45,117,221,138,175, 50,170,180,111, 85,143, 20,220,114,176,241, 40, 39,121,128, 87, 12,197,214,118,187, 29, 71, -155,156,104, 29,134,110,221, 53, 18,199,121,186, 75, 61, 29,143, 63,218,177,158, 40,220,143,182, 49,253, 51,197,249,233,120,124, -120, 16,158,142,227, 79, 25,241,191,148,252,246, 75,169, 96,167, 59,115, 57,124,120,244,115, 31,101,125,199,227,228,226,201,147, - 39,227,110,246,227,216,210,225,251,236,186, 70,196, 39, 39, 35,252, 1,246,178, 88,156, 37,251, 82, 79, 49,153, 82, 76,166, 40, -173,153, 47,150,204,230, 11,178, 44,227, 15,255,244,223,249,252,229, 75,190,248,226, 11,254,207,255,237,127,229,246,254,158, 23, - 47, 62,225,238,254, 30, 83, 84,132, 84,184,104,107,208,209, 16,149, 92,195,226, 36,240,146,241, 22, 3, 90, 65,102, 84,218, 25, - 11,194,118,120,157,226,127, 53, 40,101,211,200, 80,152, 6,243,197,108,252,190, 7, 69,185,172, 3,202,145,218,118,113,113, 49, -118,239,167,201,123, 85, 89,146, 21, 18,129, 44,111,220,227, 92,207,230,176,229,182,200,104,235, 61,231,231,231,178,207,215, 25, -206, 93,203,196,105,116, 51,136, 64,179, 42,133, 85,176,175, 15,220,173,146,214,192, 90, 50, 50, 16,123, 59, 12, 41,134,192,102, - 35,129, 67, 69, 94,225, 19,127, 96,120,118,124,124, 29,140, 19, 38,205, 24,253,202, 73, 0,145,235, 3,170, 84, 28, 90,199,203, -103, 23,124,251,227, 43,190,249,234,115, 46, 46, 46,216,172, 31,136,193,177,221,110, 40,171, 5, 77,223,241,246,195,123,137,215, -212,208,181,123,156, 55, 99,177,103, 50, 75,212,242,235,174,119, 35,230,247,234,234,138,223,254,246,183,252,195, 63,252, 3,179, -153,104, 25,154,195, 65, 14,107,164,104,171, 91, 25,239,239,234, 6,148,166,237,142,214,208,224,193, 59,207,118,179,167,200,114, -230,115, 57,184, 86,171, 21,251,180,203, 30,174,185,178, 44, 89, 46,151,163,199,187,235,186, 81,196,117,186,138, 58,205, 82, 56, -157,192,141,171, 47,163,127, 54,189, 27,188,215,217,137,176,181,239, 69,219, 80,165,226,113,191,171,165,147, 45, 10, 65,237, 38, - 71, 70, 85,228, 76, 38, 19, 98,145,243,245,215, 95,243,230,245,143,252,240,195, 15, 44,150, 11,158, 62,123,193,108, 54,147,241, - 58,208, 52,178, 62, 80,137, 99,241,213, 87,223,240,228,201, 19,158, 93, 93, 38, 93,190,167, 57,212, 28,154,154,201, 98,142,206, - 68, 23, 16,163,120,231,179,204, 66, 34,226,109, 54, 27, 65,245, 54,189,232, 0,148,101,185,184,228,221,187,119,188,123,255, 19, - 16,168,166,147,113,250, 52,155,205,184, 76, 4,184, 67,219,240,226,197, 11,234,182,161,191,190,101,181,217,164, 21,145,136, 86, -239,111, 86,216,172, 98,187, 23,119, 64, 85, 85, 20,121, 37,216,224, 62, 98, 51, 37, 41,153, 77, 75,211,245,162,242, 55,150,188, -144, 53,136,243,129,106, 50, 61, 50,218,173,166,138,140,252,135, 34,175,232,125,160,154,206,184, 95,109, 88,175, 55,236,250, 22, -231, 59,130,135,186,113,172,119, 61,159,126,250, 82,120, 31, 90,176,189, 38,207,200,109, 14, 90,147, 23, 21,247,171, 53,223,253, -240, 35,147,105,193,114, 94, 16,145,100,212,217,226,140, 75, 47,221,151, 86,134,186, 57,224, 35,216,213,106,245, 51, 17,209,248, -112,142,138,214,245,143, 14,253, 33, 38,244,200,117, 15,224,193, 4,176, 49,153,228, 17,114,210,233, 95,126,240,178, 19, 33, 14, - 74,205,148, 77, 22, 35,154,180, 75, 9,167,137, 78,134,128, 28,146, 38, 29,246,222, 69,124,116,216, 40, 72,207,222,123,137,121, - 13,226,207, 84, 70, 18,227, 72,201, 79, 90, 13,133, 66, 18,177, 56, 79, 8, 10,239, 57,138,201, 62, 58, 88, 98, 84,114,168,171, - 72,145, 31,195, 15,156,115,104,100, 79,165,173,194, 88, 69,157,198,113,189, 31, 60,254,137,197,156, 46,210,224, 35, 42,137,166, -134, 67, 71, 14, 85,241,200,214,237,129, 24,213,152,212, 52, 28,184, 3, 46,115, 54,155,141,161, 4,167,222, 85,180,128,130,246, -187,157,128, 68, 6,102,122,148,207, 42,179,233, 51, 83, 26, 98, 16,107,196, 71, 32,139, 97, 71,171, 83, 30,124, 28,139,174, 52, -162, 71,209, 54, 39,150,183, 16,240, 30,250, 24, 32,249,218,163,210,132,132,118,125,236, 69, 29,246,214,238, 68,197, 27,211,195, - 72, 98,123, 67,136,196,152, 61, 18, 9, 61,246,162,135,159, 21, 12,199, 44,247,161, 48,180, 39,113,160,254, 81,240,144, 82,114, -147, 12, 15,175, 1, 6,114, 26, 58,162, 16, 13, 68,232,123,124, 34,207,245,125,207,182,109,120,242,244, 74,146,159,218, 38,117, -192,146,209,220,121,199,118,223, 80, 85, 21,171,251,123,174,223,191, 99,115,127,207,191,186,234,189, 36, 0, 0, 32, 0, 73, 68, - 65, 84,253,171,191,228,234,234,138,197,217, 25,127,243, 55,255,158,255,251,191,253, 19,127,250,254, 7,162,145, 7, 59, 90,225, - 79, 32, 57,130,241,205,152, 78, 74, 14,117,123,124, 77, 90, 58, 48, 19, 36,117, 80, 50,209, 19, 43, 66, 67,166,115,180,130, 24, -228,225, 62,159,207, 31, 21,221,195,123, 28,174,149,167, 79,159, 30, 65, 32, 39,135,102,158,231,156,157, 11,104, 67,197, 64,140, -154,204, 24, 14,181, 99,179, 90,163,141,226,251,111,255,117,220, 81,203, 97, 55, 88,164, 96,121,118,145, 68,159,129,222, 57, 30, - 30,238, 56, 12,240,165, 76,139, 37, 78,165,216,198, 64, 82, 60, 43,110,110,110,228, 33,102,244,168,138,215, 70, 40,101,130,159, - 85,192, 81, 92, 41,223,189, 26, 53, 13,196, 65, 87, 33,215,119, 8, 64,102,200,139, 9, 63,189,254,158,213,102,199,175,190,252, -156,127,248,251,255,194,164,204,217,174, 55,204, 22,151,116, 49,178,218,108,217,108, 54,152, 89, 9, 65, 48,166, 89,110,232, 67, - 71,239, 90, 76, 86,224, 83,194, 86, 89, 22,163,210,252,155,111,190,225,187,239,190,163, 42,196,157,112,119,119, 39,106,252, 52, -249,113,251,122,252,220,195,201, 52, 74, 89, 67,235,122,114,107,198, 73,153,181,150,229, 82, 70,196, 67, 14,198,233,170,107,192, -176,206,231,243,113, 12,127, 10,143, 26,174, 29,231, 28,218,154,177,232, 67, 43,186,193,205,162,178, 71, 5,238, 72,119, 51, 25, -121, 94, 98, 77, 78,150, 21, 35,144,101,152,168, 89,107, 71, 12,110,215,117,236,251, 94, 44,100, 79,174,228,224, 60,136, 94,163, -174,107,230,139, 51, 90, 52,127,122,115,195,102,243, 45,187,221,134,232, 3,117, 35,211, 95, 21,146,200, 46,179,124,114,240,252, -240,246, 86, 44,114,174, 21,139, 50,142,182,217, 96, 51,149, 18,248, 2,153, 49,100,182, 56,113,183, 84, 50, 49,214,153,240, 33, -202, 9,191,251,221,239, 8, 81,115,126,241,132,235,235, 15,168, 86,222,115, 53,153,113,113,249,132, 98, 50,193,199,136,205, 50, -222,125,184,230,233,211,167,188,120,254, 9,247,235, 21, 93,215, 51,157,205,152, 78,167, 76, 23,103,236,235, 30,147, 68,181,103, -103,103, 16, 35,219,237,154,249,124, 62, 82, 20,135, 41, 83,150,101,248,244, 28,209, 90,108,139, 15, 15,235,241,190,245,190, 79, -224, 37, 61, 70, 75, 15,207,249,221,161,161,109,229,207,233, 59, 89, 11, 40, 21,201,114, 73,204,220,239,247,146, 70,216, 73, 66, - 42,105,255, 62, 89,206,169,219, 3,215,183,247,252,244,246, 3,246,243, 23, 76,171,140, 67,221, 39,204,241, 19, 33,182, 98, 40, -186, 68,210,252, 88,125,252,113,178,214,240,160,252, 37,161, 19,128, 53,249,163,255,127, 56,148, 66, 16, 92,232,240, 0, 29, 4, - 80, 67,106,155,115, 18, 21,232,156, 75,135,177, 8, 43,116,136,116,173,163,245,142,168,156, 36, 57,197,152,128, 10, 9, 54, 18, - 2, 54,202,107,156,148,121, 18,228, 25,162, 49,105,124, 44, 99,100, 21, 21, 93,221, 16,140,194,164,202,181,119,145,222, 71,162, - 74,157,170,111,113,191, 16, 27, 58,132, 80,108, 54, 98,137,232,199, 47,243, 40, 38, 50,118, 56,104,197,178, 16,162, 39,248, 72, - 12,160,245,209,250,147,231, 57, 38,207, 30,169,194,251,222,211,236, 15,168,168, 79,118,216, 10,239, 35,109, 59,228, 29,139,242, - 93, 41,177, 94, 13, 66,146,161,114,119,206, 97,179,234,103, 29,244,105,226, 90, 85, 85, 35,151,185,174,235, 71, 7,187, 86, 26, -171, 37, 88,229, 99,235,215,169,149,230, 84,156,118,218, 13, 75,212,169,164, 55,124,220, 93,159,118, 90, 31,239,184, 79,255,252, - 83,238,193,233,174,123,184,196,108,250,249,167, 69,131,252,252,159,199,189,158,238,255,135,247, 50,136,196,140, 49, 76,167, 83, -177,201,157,252, 57,109, 35, 28,124,171,164, 16, 25, 16,229,157,243,148,133,144, 4,123,215,211,119, 14, 59, 45, 65, 91,154, 67, - 75,211,108,201, 15, 53,177,115, 92, 93, 93,177, 94,203,205,253,219,223,253, 78,242,162,117, 54,130,119, 66,140,146, 72, 24, 3, -190,119,228,185,165, 79,247, 85,153,201,161, 46,216, 75,233,216,173,210,130,212,141, 73,131,161,193,104, 3, 65,246,114,153, 86, - 84,121,134,142,199, 17,237, 48, 22, 6,198, 85,201,240,224,159, 78,167,163,136,175, 72, 76,239,225, 0,186,184,144, 4,169,122, -191, 67,197, 72,153,103, 24, 53, 39,207, 68,216,117,121,126,201,118,183,163,105, 28,243,249,146,237,254,192,119,155, 29,251,125, -141,177, 37,231,231, 23,212,237,129,237,102, 79,221,181, 20, 69, 70, 81, 77, 70,209,230,112,239,187,164,240,214, 70,179, 94,111, -152, 76,166,210, 17, 37, 85,251,112,221,142,154,143,143,220, 14,201,127, 33,173, 65,140, 8, 3, 75,130, 76,186,174, 19, 85,242, -190, 33, 68,195, 15,175, 94,243, 63,255,199,191, 97, 50,145,105,197,174,105, 57,180, 13, 69, 33, 83,199,213,106, 69, 22,132,229, -221,198, 72, 94,102,248,232,112, 33, 96, 85, 20, 61, 64,231, 70,158,131, 8, 23, 91, 94, 60,255,132,221, 86,162, 82, 1,122, 23, -112,190,197,230, 37, 90,215, 96, 28,147,164,115,105, 59, 57,212,219, 84,192, 77,206,151, 73, 20, 42, 1, 53, 86,203,170,110, 50, -145,149,222,144, 68, 88,215,245,248,204, 25, 18,201,134,235,249, 20, 94,180, 94,175, 71, 15,249,112, 79,103, 89, 38,218, 37, 99, -196,166,151, 68,149, 67, 67, 33,211, 8,125,212,176, 4, 79,215, 69,170,170,164,235,250,241,217, 50, 68,222, 14,207,175,125, 93, -227,130,167,200,115, 62,121,241,124,212,111,212, 93, 75, 48, 18,156, 35, 59,108, 33,238,217,172, 32,207, 82, 6, 69,219,178,217, -238,232,190,255, 62,137,196, 60,243,249, 60,169,228,107,148,242, 40,167,165,238, 11, 1, 23, 36,241,208, 38,106, 95,211, 52,178, - 6,212,146, 42, 24,162,226, 80,183, 60,127,254,156, 79, 62,251,148,203,203,115,138, 73, 37,169,127, 73,144,249,176,190, 31,167, - 13,219,237,150,162,170,216,237, 14,172,247,123, 98, 39,163,247,174, 91,179, 90,111,233,195, 49,120,233,254,238, 6,239, 69, 88, -189,152,206,232, 93,251, 72, 84, 92,150,249,120, 14, 20, 89, 46, 17,229, 70,222,175, 34,224, 66, 18,119, 86, 57,198,230, 64,164, -111, 27,105,252,124,160, 42, 44,133,181, 28, 56,208,165,104,218,229,124, 65,223,123,218,102, 45, 83,218,184, 23, 54, 69, 84, 20, - 69,142,205,114,206, 46, 47,232,235, 61, 31,110,238,152, 76, 42,184, 58,163, 15,158,186,110,249,236,197, 11, 64,167,103, 92, 98, -112, 76, 38,179,113, 31, 49,216, 90, 78, 15,233,224, 85, 98,186,135, 95, 16, 89, 41,156, 11,248, 56, 44, 97, 99, 10,113,146,174, - 79, 0, 52,169, 18,183, 3,234, 78, 68, 96,125,239,233, 67, 47,149,119, 0, 21, 5, 96, 99,163, 74,137,111,138, 16, 61, 74, 43, -124,232, 9, 41, 35,215,104, 77, 12, 8,133,201,121,238, 19, 36, 95,105, 75,208, 50,186, 30, 55,195,177, 39,215,138,112, 34, 10, -235,130,224, 28,117, 18,115,136, 7, 59, 48, 12, 42, 30, 29,234, 74,145,165,125, 79, 32,162,189, 27,109, 74, 38,229,178,135,225, -225,147, 2, 46,148, 50, 24,163,126,246,231, 88,125,140, 22, 84, 74,113,136, 7,122,142,233,101,101, 89,146, 23,150,195,190,161, -105,119,216,204,136,106, 86,137,106,120,236,174, 99,196,106, 45,118,163, 24, 41,171, 34,161, 30, 69,177, 58,116, 2, 69, 81,160, -180, 38,184, 14,215, 53, 4,215,161,162, 79,121,242, 66,163, 82, 39,246,176,143,253,227, 98, 97,138, 76,171,114,236, 14,162, 34, - 69, 36,154, 49, 27,123, 8,238, 25, 3, 27, 4, 50, 47,184,208,100,139, 58,142,251,101,196,139,146, 16, 32,149,198,208, 31,119, -234,167, 74,250,161,227, 25,118,169,131,205, 77,169,228,233, 53,199, 17,237, 96,101, 27, 58,243,161,227, 24,214, 15, 31,231,124, -203,126, 47, 16, 59, 47,157,112,250,126,108,154, 10,101, 69,206,245,245,245, 8,186, 41,166, 26,141, 88,161,188,115,120, 31, 56, -155, 77, 88,175,110,185, 92, 46,185,186,186, 34, 75,194,209,166,245,114, 72,228,121, 18,251, 4, 65,160,170,199,160,157,210, 10, -166, 87, 43,137,197,213, 26,185,153, 91, 75, 81,138,101, 50,183, 25, 69,102,136, 49,208,119, 45,202, 40,209,182, 16, 8,193,113, -168,101,100, 58, 28,224, 89,218, 89, 31,106,193,106, 14, 10,232,188, 40,200,211,161,222, 38,168,143,235, 36,254, 55, 75,208,155, -182, 22,235,143,242, 25,229,249,133, 8, 53,187,142,190,247,156,205, 22, 76,231, 11,188,210, 60, 60,172,229,225, 93,230, 28,154, - 3, 33, 58,138, 50, 35,207,202, 81, 91, 19,212,177,128,236,181,162,235,122,172, 45,199,164,182,186,110,198,123,112, 68, 20,107, - 57,148, 76,234,216,143,197,166,232, 64, 78,157, 11, 74,105,124,240, 68, 52, 30,216,237,107,242,170,226,167,119, 31,104,219,150, - 79, 63,121,201,135, 15, 31, 88, 44, 22,108,119, 59,102,182, 96, 50,155,209,117, 53,109, 7,121, 97,105,219, 26,109, 42,138, 34, -103,123, 56, 16, 99,193,116, 90, 37,154,154,140,177, 59,215,243,246,253,123, 46,159, 60,225,219,111,191,147,241,114,223,179,217, -110,105,219, 14,135,162,105, 26,124,240, 20,249,177,192,246, 28, 49,189,241,108, 33, 49,205, 77, 67,211, 28,152, 79,165,168,104, - 58, 55,118,252, 3,129,243,112, 56,140, 26,130, 65,187, 52,124, 70, 35,225, 47, 29,192,251,125, 45, 49,172, 33, 29,238,138,116, -168,187,180,234, 43, 82, 3,224,137, 94,166,156,109,104, 80, 1,250,206,211, 30,182,156, 37, 77,198, 48,157, 69, 43,108,158, 81, - 78, 42,250, 86,138,198,253,126, 79,190,148,226,227,254,254, 94,238,121,239, 40,178,140, 44, 3,187,156, 72,104,138,247,244,125, - 96, 90, 86,228,133, 77, 89, 1,178, 90,186,185,185, 97,191,217,161,188,100,139,151, 38,226,201,176,214,140,122,142, 44,147,177, -127,149,139,133,243,252,236, 82,214, 72, 70, 38,122,179,153, 88, 2,241,129,119,215, 31,104,250,142,179,139,115,130,243, 60,172, -239, 37, 8,200,117, 35, 51, 68,186,228, 61,187,237, 62, 77,237, 12, 89, 94,142,215,209,126, 95, 75,252,181, 23,175,252,217,242, -130,243,165,136, 7,155,230,192,253,253, 61,193,119,120,231, 32, 90,242,228, 0, 43,243, 66,166,179, 61,146, 73,162,115,180,151, - 6,172,202, 50,138, 60, 23,110, 65, 38,212,188,190,239,165, 8, 10,145,178, 20,251,106, 83,119, 16, 28, 42,230, 84,101, 41,147, -215, 4, 66, 82,202,160,172,198,237, 58,102,211,138,222,138, 91,227,167, 15, 55,120, 34,139,217,132,197,164,224,254,254,158,105, - 85, 80,229, 25, 77, 35,141,162, 29, 30,110, 81,241,179, 44,236,199,251,173,159,119, 99,162,204,238,241,238,241, 78, 83,226,238, - 30,243,188, 67,226, 78,159,118,124,105,213,150, 30,194, 30,215, 54,228,234,200, 15, 15,120,121, 48,120,141, 10, 65, 44, 55,202, -160,213,144, 29,236,169,242,169,120,111,244, 96, 11, 74, 40, 82, 36, 83,216,183, 77, 58, 76, 18, 23, 91,107,180,150, 76, 91, 99, - 21,182,180, 18,131,121,218, 45,170,227, 97,236,156,123,212,137, 30,145,170,199,195,252,212, 35,126, 44,120,142, 19,142, 83, 33, -226, 64,100,115,206,161,128,178, 26,200, 88, 54,237,110, 59,172, 21,241,219,100, 82,208,183, 45, 49,120,186,190, 29,247,105, 3, -188,161,239,123,154,246,232, 15, 29,170,241,211,221,240,240,192, 24,118,253,167, 92,239,225,192,245,241,227, 81,103,120, 68, 96, - 59,237,206,135,223, 59, 60,140, 73, 88,202, 95,156,116, 40,245,232,129,125,250, 57, 28,255,126,124,157,197,209, 99,171, 30,253, -250,180,147, 31,198,251, 33,136,247,243,244,181,157,142,160,135,204,235,211,113,244,233,180, 97, 72,177,210, 26,148, 81, 24, 45, - 64, 22,180,102, 82, 76,104, 93, 47,126,243,172, 32, 55,134,201,116, 46, 7,255, 65,186,135, 42,207, 70,139,205,179,103,207, 89, -173, 86,156, 47,207,216, 29,246,196, 96, 88,173, 86, 68, 37,186,143, 56,232, 60,140, 88, 26,155,166, 97,189,126,224,124,246,140, -170,200, 48, 70,186, 21, 77, 18, 92,134, 56,126,102, 89,110, 40,138, 28,239, 58, 66, 47, 59, 52, 31,188,116, 87, 40,116, 60,186, - 19,134, 32,144,225, 80,216,110,183,104,173, 25,180, 51,167, 32,144,225, 90,170,170,138, 89, 53, 17,200,198,253,221,200,153, 88, - 46,151,172,215, 27, 46, 46, 46,100,205,161, 13,117,219, 81,150, 19,230,115,104,211,159,223,117, 29, 58, 51,148,121, 78, 36,241, -207,137,114, 15,251,240,179,213, 76, 81, 84, 63,155,226,140, 5,246,232,162, 80,143,108,141, 33,196,159, 57, 53, 6,118,198,116, - 58,165,239,188, 32,149,145,241,241,235,215,175,249,242,243,207,121,243,230, 13,139,197, 57,235,219, 61,219,221,158,203,139,115, -148,150,231, 73,232,123,242,188, 2,107,201,202, 76,114,204, 67, 79,153, 79,208,105, 18,166, 84, 79, 85,201,158,117, 96,154, 59, -231,177, 38, 35,203,132,102,105,242,108, 12, 11, 2,240,169,145,233,250,110,156,168, 13,215,189,220,143, 29,185,213,204,102, 51, -118,215,183, 35,253,113,184, 63, 6, 27,230,221,221, 93, 34,169,233, 81,136, 54,104,103,142, 59,245,164,128, 87,136,151, 63, 9, -143, 79,139, 88,121, 94,125,132, 89,246,210,148,180, 7, 25,253,218,148, 97,159,229, 34,224, 27,127, 86, 8, 82, 20,173, 31, 40, -203,146,219,219,219,145,250, 56, 20, 22,222, 59,124, 2,220,156,205,101, 34,116,117,121,158,220, 18,201, 45, 4,124,184,126, 39, -161, 86, 85, 37,133,100,145,167,231,199, 81,163, 35,233,142, 25, 85, 94,140,225, 77,243,249,156,144,118,230,231,231,231, 92, 95, - 95,179,219,237,184,190,185,229, 15,255,253,195,104, 33,238,124,119, 66,125,180, 40,163,228, 51,222,237,136, 17,138,162,162,235, -125, 74,106,243, 84, 85,197,124, 54, 33, 51, 90,132,165, 79, 46,200,178,236, 56,197, 58,127,206,147,243,115,182, 59,153,138, 88, -123,212, 15, 21, 69, 65, 93,183, 84,229, 76, 82,249,148, 74,145,227, 17,101,213, 8,188, 25,104,132,109,215,241,238,221, 59,156, - 75, 99,126,224,238,126,197,135,155, 21, 86,105,102,149, 8, 21, 23,139, 25, 23, 23, 87,180,173,216, 86,171, 20, 16,211,119, 50, -221,126, 88,137,139,229,234,242,156,236,229,115,238,238, 30,200,159,157,179,152, 95,224,131, 99,189,122,192, 30,154,250, 35,129, -210,227,221,250,184,207, 84, 10,133, 34, 6,127,114,115,105, 2,154,168, 3,250, 81,152, 0, 40,157,208,128,105,172,162,198,135, -177,124,121,202,128,213, 82, 57, 74, 85,155, 14, 36,101,176, 54, 71,103, 26, 23,122,162,150,238,127, 60, 80,144,144, 9, 25, 91, -203, 69,252, 63,254, 43,144,231,153, 96, 46,131, 4,168, 88, 12,193, 24,162, 50,160,100, 21, 32,113, 12, 39,221,170, 98, 76, 10, - 82,201,170, 18,117, 36, 40,137,171, 84, 86,194, 19,156,247, 50,122, 63, 57,128,140,138, 39,226, 47, 65, 35,250, 49,131,222,211, -167,131, 55, 70,121,109,235,245,195,216,201,139,160,171,161,239, 58,124,175,185,243, 61, 85, 85,140, 55,123,223,247, 73, 80,149, -145, 89,133,138,134,174,115,100,121, 49,250, 76,135,238, 84, 41, 37,192, 5,173,143,168,208, 44,123, 52,158, 31, 10, 57, 53,124, -159, 33, 8,184,226,228, 65, 75, 8, 24,165,208, 89,134, 79,135,166, 73,175, 55,126, 36,210, 57, 61,156, 71, 33,158,115, 99, 62, -119,112, 61,164, 3, 89, 69,149, 2, 14,204,207,244, 28,143, 14,245,147, 76,130, 71, 56,211,152,172,111, 63,183,159, 63, 18,196, -141,106,233,143,126,198,240,186,157,235, 30, 21, 15,206, 57,201, 39, 40, 75,246,187,154,222, 71,148, 9,128,166,109, 59, 84, 31, - 82,124,172, 5,164, 99, 85, 72, 23,162, 77,228,252, 47, 37, 38,178,169,221,168,240,118,195,154,201,232, 17, 25, 92,215, 53, 42, -180,244, 79, 47,198,215, 28, 83,145,172,173, 26,119,120,170, 80,163,238, 96, 4,240, 12, 5, 89,215,165,253,179, 34,207, 11,156, -243, 28, 14,245,152, 16,229,156,167,239, 29,187,157,112, 20,228,179, 96,220, 3, 55,141,208,183,238,238,238,208, 81,162,117,239, -239,239,137, 49,178,181,150,243,179, 51, 62, 92,223,164,168,204,146,186,235, 89,111,119, 52, 78, 4,134,189,115,244,161, 75, 66, -170, 2,107,115,122,231,177,214, 99,180, 73, 24, 98,249,238,180,178,100,182, 24,247,252,189, 11,160,142,208,162,177,120, 28,166, - 68, 90,252,189,164, 8, 88, 55, 8, 73,135,201, 95,154,218, 77, 38, 19,138, 44,167, 9,138, 60, 43,177,177,135,216,243,195, 15, - 63,240,151,191,249,154,197,108, 14, 9, 70,213,120, 41,166,139, 1,138, 85, 85, 76,166, 21,117, 23,201, 82,162, 90,239,252,163, - 21, 81,212,138,128, 26,175,169,191,248,253,191,225,143,127,252, 35, 77, 93, 51,137, 48,169, 91,108,145,203, 53,225, 29,196, 99, -252,108,138,156,127, 68, 56, 28, 38, 79, 67,212,242,164,204,217,239,123,161,219,105, 73, 88, 43,138,129,183, 31,132, 65,160, 53, -209, 59, 92,215,208,118,233, 30,235, 29,153,129, 42,193,153, 72,154,139,222, 59, 24, 86,170, 33, 80, 85,211,132,154,109,198,239, -129,168, 30, 9, 70, 31, 30, 30,152, 76,100, 53,149,229, 80,215,245,184,174, 43,178,124,132,203, 12,246,102,128,155,235,247,172, - 86, 27,202,197, 5,251, 90, 4,118, 81,103, 84,115, 69,221,123,222,188,191,225,254,254, 30,223,181, 34,208,236, 26, 98,140,124, -242,242, 57,159,205,151,180,222,177,121,216,210, 52,109, 10, 83,234,199,181,192, 81, 88, 43, 5,185,214,154,122,183,103,189,145, -194, 98, 40,104, 46,206,175,120,114,245,146,247, 55,215, 52, 77,195, 98, 33,250,163,206,181, 84, 41, 13, 46,207,115,252, 36, 74, - 26,100,215, 49, 67,216, 31,135,166, 37, 51,154,190,217,163,162,167, 42, 50,250,166, 33,244, 61,101, 37,147,174,139,179, 25,147, -242, 9,117,115,206,195,195, 67, 42, 6,196,137,114,121,121, 14,104,190,253,215,215,116,206, 39, 90,222, 80,228,167,213,172,181, - 68, 60, 69,166,176,218, 82,102,138, 77,189,231,176, 77, 13, 94, 91, 51, 45, 43,246,181,228,215,107,173, 89,158, 95,178, 88,204, - 56, 52, 45,251,122,135,206,172,192,141, 20, 99, 22,196,102,179, 67,107, 97,164,156,151,138,253, 52,227,108, 54, 39,183,169, 24, -202,178, 12,159, 30,228, 1,228, 16, 34,130, 15,184, 24, 48, 81, 32, 50, 42, 14,157, 82, 76, 74, 97,145,191, 21,182, 32, 6, 81, -138,139,232,204, 72,164,166,206,208, 86, 88,185,218, 74, 64,115, 64,196, 93,210, 88,104,130, 10,116,157, 48,115, 3,158,166,247, -137,184,165, 81, 70, 66, 17,172, 54,104, 44, 30,159,170,115,149, 60,172,226,207, 60,230,182, 11,214, 84,143, 83,134, 4,159,215, -162,102, 39,170,196,187,131,224, 2, 1,151,120,207,113,120,231,112, 50, 58,214, 74, 70, 81, 58, 42,124, 20, 64,191,239, 59,130, -209,248,254,168, 68, 53,218, 18,117,127,210,229,171, 4,241, 16,180, 98,159,186,194, 76, 27,172, 53, 82,252,104,141, 77,225, 46, -110, 94,129,209,196, 49, 40, 99, 58,234, 15,198,125, 88,122,253,206,247, 16,196,230, 52,236, 70, 35,162, 64, 47,203, 82, 62,135, -116,144,107,173,201, 82, 80,140, 75, 9, 69,129,136, 9,102,172,212, 71,158, 63,195, 91,151, 3, 66, 37, 4,230, 41, 39,253,116, -164,125, 10,125, 25,139,160, 40, 29, 74,244,242, 96,214,195, 40, 48, 42, 57,212, 58, 71,231, 4, 99, 42,118, 27, 37, 15,178,132, - 43, 85, 81, 19,149,240,145,229, 34,145,239,106,152, 78,156, 98, 95, 7, 71,130, 20,129,241, 17,128,230, 81,104, 77, 86, 28,245, - 29, 73,168, 71, 80,146, 27, 63,116,247, 49, 98,173,232, 34,140, 49, 34,224, 81,154,188,172, 88,173, 86,242,126,149, 1, 2,166, -169, 37,119, 62, 8, 29,208, 90,139,153, 78,216,220,239,121,179,253,137, 47,191,252, 21,109, 47,185,233,251,186,166,237, 29,202, -150,224,123,122,223, 99, 16,151, 7, 97, 8,151, 9,108,183,219,227,200, 53,203, 5,186,164, 79,240,188, 65, 37,140,171,147, 34, - 50, 68,178, 34, 39,215, 6,239, 34,193,230, 28,186, 14,215, 74, 28,171,182, 57,101, 85, 81, 84,213,152,161, 32,137,110, 17,147, - 25,218, 94,108, 60, 89, 22,216,108, 37, 14,246,254,238,142, 16, 28,243,137, 68,250,234, 8,173,235,216,214, 53,229,100,198,195, -122, 69,221,108, 36,155,193, 26, 10, 99,104, 59, 71,236,165, 59,203,115,139,201, 10, 81,184,167, 20, 70,239,197,186, 57, 76, 4, -198,221,120,244,163, 27,161, 40,138,212, 8,132,147,188,137,152,198,199,131,232, 81, 29, 73,119, 41, 29,238,168, 33, 49,228, 69, - 42,100, 51,217,101,219,220, 82,239, 35,239,111, 86, 52, 93,228,201,211,103, 92,223,222, 49, 47, 13,214, 69,148,239, 8, 58,176, -235, 58,206,174,100,111,124,216,239,152,164, 22, 69, 68, 34,129, 60,147, 49,109,150, 21,236,246,123, 50, 99, 88,175,215,252,246, -207,126,205, 15, 63,126,199,205,245,245,137, 61,210,160,173,194, 6, 77, 31, 3, 86,107,138,170, 66, 27,184,111, 14, 34,232,237, - 37, 44,202,135, 64, 89,100,244, 62,210, 57, 1,137, 12,227,246,170,170, 82, 50, 96,160,170, 42,174, 46,167, 99, 7,123,106,249, - 28, 51,236,145,226,173, 77,133, 72,151, 72,160,195,164, 96,136,231,181, 54, 67,169,149,128,102, 98,164,239, 69, 20,216,182, 13, - 10, 7,109,224,236,236,156,178,152,224,123,199,253,237,157,128,155, 10,105,204,154,195,142,229,114,201,110,183, 99,179,219,243, -227,171, 31,192, 7, 62,253,252, 11,178,162,192,251, 72, 72, 65, 60,190,235,169,169, 81,137, 63,112,251,225,154,178,204,201,172, -101,187,221,177,217,252,191,124,247,253,143,120,215, 97,108,142, 70,138, 38,194,227, 9,158, 4,175, 72,154,160,247,114,232,158, -159,159,139, 91,196, 8, 73,241,235,175,191,166,154, 20, 60,127,254,156, 73, 81, 50, 91,138, 19,164,172,114, 97, 3,120,199,247, - 63,252,200, 23,159,125,206, 98,177,224,135, 31, 94,241,238,221, 7,230,115,197,167, 47, 95,240,249,103,159,240,238,221,107,238, -110,111,104,154,134,183,111,223,114,182, 88,242,245,215, 95,115,168,247,220, 94,223,241,231,127,246, 13,211, 42, 67,227,185,190, -110, 88,221,175,112,109,201,147,139,115,230,243, 57,151,103, 75,186,164,159, 40,203, 60, 89,158,125,138,151,118,212,245, 1,163, - 35, 69, 94, 49,159, 78, 37, 40,234, 80,163,181,101, 90, 78,233,251,134,221,118, 69,145,139,178,190,170, 26,238,239,239,201,178, -130,243,229, 25,135,195, 78,206,169,100, 93,142, 62, 64,208, 56, 15, 15,235, 29, 83, 59, 99,189,218, 82,149, 83, 38,211,146,178, - 44,177,213,116, 42,220,233,222,137, 66, 60, 66,240, 78,186, 76, 99, 36,139, 57,165,144, 13,123,244, 40, 51,115, 81,152,167,133, - 63, 17,162, 68,179, 73,176, 65,223,209,180, 29,185,145, 88, 69, 69,196,121, 39,147,242, 76,172, 45, 42, 6, 76, 4,229, 93,218, -193, 75,103,174, 77, 82,173,167,195, 96,236,178,148, 2, 29,101,207,172, 60, 62, 56,114,157, 73, 60,166,214,100, 86, 0, 18, 2, - 49,105, 37, 10, 82,105, 80, 41,168, 2,136,170, 23, 53,122, 58,250,187, 93,195,108, 54,145, 84,182,166, 22,101,234,249, 25, 86, - 27, 14, 77,205,249,242,130,125,189, 99,231, 26,166,217, 36,169, 33, 29, 30,207,164,202,168,166,179, 71,227, 76,185,241,100, 34, - 17,130, 59,166,130,161, 48,153,101,146, 2, 41,250, 94,244, 4, 89, 38,194,173,152,253, 28,146, 50,120,214,219,182,166,109,123, - 32,164, 93,185,193,135,136,177, 89, 18,122,100,184,232,232,187, 30,157,246,233, 33, 4,178,162,160,233,156,192,117, 70, 31, 58, -228, 73, 80, 56,240,249,139,211, 56,210,147,241,248,104,239, 74,177,153, 31, 39,120,141, 93,111,202, 83,142, 90,130,114, 60, 17, - 45,231, 39,133,205,196, 65,209,245, 18,252,163,148,100,125, 7, 79, 31, 34,133,150,144,147,232, 35, 46, 56, 84,212,152, 44, 79, -197, 33,216,220,159, 40,222,143,129, 22, 10,143, 9,134,233,164,196, 16,233,124, 18,138, 41,147, 32, 25,158, 38, 81,217,142, 30, -250,152, 58, 63,153, 36, 25, 13,184, 30,155,220, 3,161,119,228, 89, 73, 89, 76, 56,212, 45,135,186,133, 16,105, 15, 7,202,178, - 28,105,110,179,170,100,183, 59,208, 25,136, 94, 58,160,162,170, 88,109, 54,204, 30, 54,172,183,123,246,135,142,206,235,100,137, - 9,100,249,132, 24, 28,101, 94, 80, 22, 25,109, 93,243,252,226, 5,117,221,144,217,130, 60, 47,232, 93,160, 40, 42,182,187, 3, -243,249,146,222,123, 98, 63,140, 99,161,239, 28,177, 15, 20,133,196, 28, 11,139,161,161,238, 29,109,221,137, 8, 42, 68, 54,187, -189, 92,247, 64,235, 61,141,147, 60,251,214,213,216, 34,199, 84, 83, 58,231, 49,185, 32,146,243,162, 96,179,105, 57,116, 61,173, - 19,161,157, 86,138, 46, 90, 62,220,124, 16, 53,183,143, 56, 87,147,217, 2,147, 65,136,142,174,111,136, 58,173,209,186, 48,250, -200,171,233, 4,173, 35,237,174,166,174,219,180,250,145,123,196,121,185,246,167,211, 57, 79,159, 62,103,179,122, 96,251,176,197, - 24,195,121, 74, 96,235,250, 22,101, 45, 93,219, 98,109, 78,244,125, 74, 35,139,248,228,253, 15,218, 80,119, 53,231,103,115, 14, -245, 14, 27,192, 44, 22,156, 93, 61, 99,167, 13,187,250,129,127,250,246, 13,127,241,213,151,108,214,107,150,179,130,155,219, 91, - 92,223,147,207,102,212, 84,188, 95,237,185, 88,102,204,203, 9,174,239,152, 77, 42, 38,209, 16,148, 34, 63, 43, 89,173,183, 18, - 44,148, 50,224,119,187, 45,174,235,248,221,111,127,203,159,254,249, 95,168,219, 6,180, 34, 43, 51,150,203, 57,215,215,183, 16, -100, 74,209, 30, 14,156,159,157, 81,230,249,120,104,159,157,157,241,244,233,211,209,114,120,113,113,129, 37,229,172, 15, 43, 62, -147, 97, 76, 54,162,186,103,179, 25,155,205,102, 20,189, 54,251, 3, 93,215,224,250,158,186,105,168,235,142, 67, 35,215,224,122, -187,225,254,126, 37, 1, 33,101,193,102,183, 77, 22,215,122,100, 19,120,231,200, 50, 41,132,230,147,169, 80, 48,107, 17, 24, 14, -176,170, 79, 94, 60, 75, 76, 8,135, 49,242, 60,217,237,118, 60,125,250,148, 31, 95,191,226,238,126,141, 50,134,175,191,252,146, -208,181, 76,114,203,139,203,165, 20,201, 40, 33,105, 30, 14,184,166,102, 90, 22, 28, 14, 59,188,181,204,167, 19, 41, 90,186, 94, - 50, 27, 66, 64,231, 86, 18,224, 92, 18, 62, 42, 81,173, 11,168,169, 37,179, 70,242,215,203, 34, 77,106, 37,240,230,211,151,159, -136,231, 63, 6,126,245,249, 75,158, 61,121,202,213,211, 39, 66, 47, 53,122,164,163, 26,148,140,235, 87, 43,218,253,142, 79,159, - 63, 97,181, 90,177,189,191,225, 39,213,211, 7, 71, 57,157,240,112,183,102, 50, 59, 35,132,140, 31,190,127,203,211,167, 87,116, -117,195,143,223,191,226,243, 47, 94, 80, 21, 57,207,159, 94,210,247, 45, 49, 42,254,245,251, 31,248,243,223,253,158,103,207, 47, -121,255,254, 61,147,106, 46,182, 81,231, 71,177, 97,231, 27,209,100, 21, 22,144,231,167, 85, 22, 29,114, 92,171,112,153,100, 73, -156, 47, 39,244,237,158,168, 50, 86,247,119, 50, 77,202, 83, 44,108, 85,178,221,174,209,165,224,167, 47,159, 92,241,246,205, 79, -148, 19,195,122,115, 64,133,158,170,122,137,202, 74, 34,150,201,124,142,237,250, 6,239, 28, 33, 6, 84, 72,227,236,232,199, 95, - 23,101,118,178,171, 61,250,149, 81,160,163,136,194, 84,240,178,243, 34,226,162, 65, 5,208,218, 96,135,177,102, 16, 33,154, 30, -224, 38, 94, 40,241,193, 59, 50,109,200,172, 65,197,158,222,136,135,209,135, 30,109, 50,108, 38,118,149, 83,134,249,209,179,156, - 97,204, 4,215,181,204,166,243, 49,205,168,109, 91,180, 82,148,197,100, 12,228, 56,181, 59, 13, 93,230,112, 16,239,118,187,180, -191,179,148, 47,158, 51,159, 47,168,170, 18,239, 3,135,195,158, 24,193, 26,198, 78,123, 50,153,226, 92,207,225, 80,227,163,231, -108,185, 32, 34,158, 97,173, 20,138, 12, 84,164,107,123,186,182, 17,107, 91,240,116, 46, 64, 47, 23,116,136, 18,203, 72, 82,195, -254,143,200,103, 63, 31, 23,107,156, 11,132,208,166, 12,108,217,107, 14,197,214,176, 55, 31, 44,120, 67,112,132, 73,133,151,119, -225,103,144,152,186,235,199, 29,253,199,233, 79,131,250, 61, 36, 13,164, 79,255,148,203, 96,216,151, 91,180, 58,174, 65,130,138, -226, 63, 72,187,190, 67,202, 89, 30,132, 64,206, 4,108,186,142,164, 19,247,233, 80,151,131, 94, 35, 29, 62, 90, 38, 0,210, 57, - 75, 58,152, 88,175,100,210, 65,136,196,148,218, 20,245, 56,247, 71,171,100, 39, 81,134, 2,141,103,160,230, 5, 20, 58,197, 76, - 43,130, 23, 49,231,197,116,138,209,199,207,223, 26,133,209, 2, 3, 17,177, 76,131, 10,129, 50,207,101,103,156, 37, 38,118,232, - 8,206,224,251,134,190,111, 9,193,240,176, 94,203,216,190,110,241, 72,232, 12,198, 82, 86, 83,201, 34,104,107, 66, 47,235,149, - 42, 47,201,115,203, 97,191,102, 54, 19, 18,214,221,106, 45,241,181, 69, 78,140,138,205,110,199,249,249,241, 58,214, 26, 72,255, - 94,166,176,142, 69, 57, 97,127,168,217, 91,217,237, 14, 44,245,224,250,148,150,232,177,198, 96,134, 96, 31, 47,215,159, 85,150, -172, 42,232,187, 3,147,217,140,217,114,145,214, 96,144, 39, 31,239,106,183,195, 1,198, 90,180,182,168, 94,226, 54,211,188,139, - 60,151,120,222,120, 66, 27,108, 26,225, 91,132, 52,230, 63,213,155, 12, 68,187, 65,236,213,182,109, 2,126,244,143,138, 78, 18, -138, 53, 51, 86, 10, 46, 47,137,128,202, 10,118,117,127, 56, 48,159,205, 88,206,231,143, 86,132,117, 93,115,191,218,208, 28, 26, - 98,211,243,230,253, 53,127,253, 23,191,149,228, 51, 5,161,221,227,162, 97, 91, 55,148,231, 79,177,197, 84, 10,145, 34,199, 40, -141,205, 12, 46,104,234,166, 67,217, 40,174,132,212, 84, 12,251,227,205, 70,112,163,255,246,175,254, 13,171,245, 90,248,252, 89, -198,229,147,171,100, 3,147,107,125,189,149,149,199, 16,142,210, 59,217,109, 15,192,153,205,110, 39,100,194,204,142,142, 11,151, - 68, 70, 74, 41, 73, 47, 75, 32,155,213,106, 37,175, 51, 51, 9,221,107, 33, 10,124, 42, 47, 38, 52, 73,200,232,130,104, 36, 80, -226,174, 25, 64, 85, 67, 65, 85, 20, 5, 49,179, 73,227, 18, 8, 42, 48,201, 39,100,182,224,112, 56,176,234, 58, 46,151,226,195, -119, 93, 79,149, 92, 25,138, 72, 89,202,191,223,222,175, 88,111, 54, 60,121,246,156,167,207,159,115, 86, 22,172, 87,247,163,126, - 37, 70,249,111,159, 62,185,228,243,207, 62, 65, 69,161, 28, 14,206,139,187,187, 59,174,175,175, 69,216, 25, 2,251,195,150,217, -124,158, 14, 99,209, 75, 13, 58,143, 44,203, 40,115,209, 26, 85,133,132,197,228, 86,190,135,178, 44, 41,242,138,135,205,158,135, -251, 21,111,223,253,196,119,223,127,155, 18,204, 90,218,182, 30,221, 39, 89,150,241,226,197, 39,156, 45, 23, 50, 62,207, 51,140, -146,243,104,187, 91,211,246, 94,158, 53, 65,145, 23, 57, 42, 9, 65, 47,206,102, 52,109,203, 97, 95,115,113,121,206,235,215, 27, -158, 61,123,198,135, 15, 55, 84, 85,197,219,119,111,184, 60, 91, 82,148,130,104, 30,220, 54,117, 93, 51,153,201,235,175, 38, 57, - 93,215, 96,181, 56,201,150,203, 37, 90,181, 4,111,196, 55,159,103,168, 16, 9,141,147,123,214,123, 84, 76,147, 80, 3,187,132, -229,237,186, 33,138,217, 83, 77, 39,146, 40,216, 29,104, 90,199,195,190,230,108, 83, 19,231, 21,214,150,216,208,119,194, 11, 78, - 15,243,143, 15,192,120,162, 58, 30,132, 85, 68,121,192, 58,239,208,193,202, 33,172, 44, 54, 27, 84,217,210,233,231,133,133, 40, -126, 85,162,198, 88,198,104,199, 24, 20, 49,234, 49,242, 53,207,252,184,147,175,202,233,120, 24, 15,254,202,225,208, 57,245,122, -102,185,161, 57,236, 71,214,118,215,117,100, 77, 51,218,155,134,238, 83, 68, 74,199,244, 36,109, 12,218,100, 24,155, 49,157, 45, - 36,219, 89, 25,178,188, 32,162, 89,111,182,212,117,139,247, 61,214,230, 24,155, 49,155,231, 18,153,216, 57,246,251, 29,125,239, -197,154,212,123,162, 10, 35,148,134,244,192,243, 17, 34,226,145,138,200,129,232,250,158,174, 23,135,193, 64, 68,235,251,131,236, -247, 63, 58,216, 79, 59,229,199, 59,235,254,209,254,216,230, 25,125,239,198,226,199, 24, 77,223,139,136,202,245, 34,140,138, 1, -124, 56,190,198,227,206, 80, 75,120, 87, 28, 28, 14,160,209,143, 14,254,144,118,223, 33, 77,104,134,119,152,194, 29, 65,153, 17, - 73,249, 49,227,125,248,253, 40,131,210, 3,210, 82,143,187, 84,121, 13,226,146, 80,137,127, 32, 35,218,128, 66,166, 70,138, 32, - 94,123,147,196,154,233,240,142, 10,140, 30,236,148, 98,207, 51, 70,130,133, 80,226,209, 7, 48,131,144,142,193,123, 31,192, 43, - 80, 90,244, 15,202,211, 37, 30,192,252,108,201,124,190,164,105, 26,222,191,127, 47, 65, 43,133,193,185,200, 98, 82, 81,152, 20, - 20,211, 53, 84,153, 33, 51,145,194, 20, 40,166, 68,231,233,154,154,135,187, 59,218,190, 39, 43, 23, 16, 60, 15,183, 55,120, 20, -109,226,144, 71,223,162,203,156, 44,147,112,149,223,252,230, 55,220,222,222,208, 52, 53,219,237,154,233,100,137,115, 61, 69, 81, - 50, 95, 76,217,237, 54,132,216, 17,251,142,222,117, 40,239,208, 38, 96,202, 2, 77, 96,117,243,150,166,149,181,200,114,185,164, -180, 6, 76, 68,227,208, 70,163,179, 92,214, 59, 81,209,247, 97, 36,237,161,250, 65,128, 32, 93,242,100, 42, 43,165,166,195,245, - 14,223,247,172,238,238,105,157, 28,184,193, 51,130,107, 6,109, 6, 32, 60,109,159, 68,178,185,167,117, 98,225,210, 64, 89, 20, -227,250, 38,120, 70, 30, 61,193,227,186,150,195,110, 59,222,171,131,117,242, 52,254,119, 40, 4, 78,199,247, 90,107, 38, 41,208, -102, 49,159, 82, 22, 54, 9,245,170, 81, 28, 40,175, 81,166, 41,239,175,111, 40,202,146,250,176,163,156, 76, 89,223,175,248,240, -176,163,108, 68, 25,253,100, 57, 99, 90, 10,202,212,164,216,204,182,115,160, 20,243,249,140,253,174, 29, 11,106, 21, 21,239,223, -127,224,197,139, 23,124,245,213, 87,252,253,127,253,175,108,247,123,174,111,111,169, 94,191, 22,113,219,195, 42,185,101,228,129, - 28,130, 40,154,219,206, 61,198, 30, 43,217,159, 63,185,186, 64,199, 83,129,174, 73,233,136, 50,217,124,120, 47,123,228, 47,191, -248,156, 23, 47, 94,240,236,201, 83,178,220,176,186,187,231,251, 87, 63,114,123,247,128, 45, 50,118,219, 61,161,247, 18,133, 29, - 21,196, 64, 89,138,138, 95,163,176, 70, 67,150,161,163, 77,107,210,227, 42,107, 62,159,179,223,109, 78, 60,244, 11,225, 20, 40, -131, 82, 98,141, 44,210,132,113,120,134, 14,184,213,105, 18,181, 12,182,185,182,173,233,251, 22,165,100, 77,248,229, 23, 95,243, -234,213, 43,153, 36,172,215, 28, 14, 59,140, 81,204,102, 19,206,207,207,121,242,228, 10,212, 17,217, 60, 76,126,199, 20, 72,215, -225,219, 3,187,122,155,156, 53, 97, 84,181,183, 93,143,210, 37, 93, 18, 99,122,239,121,120,144, 4, 78,177, 2,171,177, 64, 24, - 68,161, 15, 15,162, 97,234,122,217,245,111, 86, 15,248, 8,147,106, 73, 87,183,184,206, 39,225,116,224,233,211, 43,116, 6,171, -205,150,166,111,184,184,122,146,206,160,192,135,247,183,212,187, 45,183,125, 75,150, 25, 14,189,172, 51,130,146,172, 5,101, 32, -132,140,166, 61, 48,159, 79,120,246,236, 5,222,189,103,191, 57,112, 56,236,185, 88, 62,197, 51,165, 13,154,204, 89, 98,104,104, -211, 10,226,200,230, 8, 28,154, 6, 99, 21, 77,223, 37,237, 70, 63,218,114,251,222,211, 25,195,106,119,224,253,237, 67, 90,235, - 22,216, 92,107, 92,116, 40,143,164,235,244, 1, 31,122, 57,116,241,248, 86,246, 86, 85, 57, 37, 47,100,143,211,187,150,182, 17, -184,203,192,180,206, 10, 51,166, 64, 13,202,200, 34,221,212,167,176,143,143, 65, 33, 90,217,241,247, 12, 34,140, 83,191,241,128, - 7,253,184,131, 29, 14,247, 65, 73, 43,222,195, 14,173, 45,121,110, 9, 1,154,230,144,118,255, 33,217,228,134, 29, 93, 71,219, -138,208,170,170, 42,250, 62, 2,142,213,106,135,115,171, 49, 7,122, 40, 36,134,125,117,223, 11, 6,114,168, 0, 39,179, 41, 31, -110,238,199,162,227, 84,125,126,164, 59,181,227,251, 27,246,194,195, 40,219,100, 89, 18,132, 61, 62,196,199, 77, 67,130,212, 12, - 23,210,105, 82,147, 73, 41,121,222,203,255, 71, 84, 88, 43,185,184,206, 57,188, 11,163,171, 96, 0, 1, 29,149,227,169, 72, 72, -106,239,225,117,125,236,117,127,100, 53,250, 31,112, 10, 62,246,174,255, 18, 21,238,116, 47,248, 51, 86,188, 58, 58, 39,204, 73, -241, 56,112,173, 31, 5,140,156,188,126,127, 82, 4,145,178,221, 51, 37, 86,199,143,189,242,227,116, 71,137, 38, 68, 17, 48,153, -161,180, 22, 19, 61, 69,153,243,244, 66, 50,154, 95,190,252, 84, 14,149,122, 63, 10,253,242,220, 50,171, 50,130,111,201,114,205, -180,180,156,233,230,217, 0, 0, 32, 0, 73, 68, 65, 84, 76,138, 89,154, 32, 25, 38,101,134,235,123,138, 66,172,142, 26, 48, 58, -160,180, 36,183,237,219,142,250,176,147,207, 66,121, 98,148,142,250,254,254,158, 50, 87, 34,150, 76, 86,193,188,202,209, 7, 97, -165, 55, 77,141, 54, 98,101,243,193, 9, 18, 52,244,130, 93,141, 22,140,146, 76,242,244, 29, 44,150,203, 17,130, 49, 32,126,125, -148,107,210,117, 94, 38, 88,165,220,147, 93,138,239, 85, 74, 73, 52,233,196,141, 16,148,225,240, 30,162,113, 59,239, 4, 67,156, -238,199, 65,172, 20, 66,224,254,230, 33, 69, 73, 38,139,161,210,144,231, 68, 23, 8, 10, 65,141, 38,193, 82, 68, 14,235, 1, 78, - 50,184, 51, 78,237,136, 67,193, 48, 36,129,157, 90, 28, 79,249,222, 69, 81,112,168,119,236, 82, 30,182,206, 28,147, 16, 81,109, -143, 14, 61, 83, 3,235,237,158, 63,125,251, 45,127,253,151,191,225,187, 63,254, 51, 79,158,189, 96,219,116,216,173,196, 18, 19, -228, 16,201,178, 44,101,146,139, 79,223,207, 42, 98,208,100, 89,142, 89,102, 98, 61, 66,141, 64,168,249,124,206,114,190,224,250, -250, 70, 98,168,211,117,121,234, 78, 25,210,206, 54,155, 93,186,246,253,168,130, 23,216,142, 92,215,235,245,250, 88,200, 39,113, -177,220, 55,114, 15,124,242,201, 39,227, 84,237,213,171, 87,212,135, 29,103,103, 11, 10,155,113,177,148,238,119,183,223, 51,159, - 84,180, 78, 4,152,109, 74,202,115, 33,142,159,163, 15,253,163,164, 67, 99,229, 89,219,181, 82,132, 13, 19, 22,153, 14,157,143, -186, 7,148, 8,231,178, 20,113, 60,222,127,189,227,254,246,150, 44,122,102, 85, 57, 58, 4,234, 20,110, 53,240, 0, 62,188,123, -199,183,223,126,203,126,191,151,128, 48, 34,211,169,224,183, 47, 46,206,249,241,205,171,209,186, 23,130, 19,178,232,184,234,115, -178, 67, 6,129, 46,101, 25,101,126,196, 69,119,206, 99, 77, 73, 94, 77, 56, 59, 59,123,180,106, 43,203, 9,121,158,115,126,126, - 62, 94,211,195,127, 51,144, 54, 55,219, 21,207,158, 94,113,119,191,162,107,106, 66,176, 24,163,164, 19,182,150,109,211, 80, 69, - 73, 9, 93,109, 87, 92, 92, 92,208, 52,141,232, 11,182,123,153,192,118, 7,178,108, 70,211, 53, 84,147,130, 34,159,178, 54, 6, -157, 28, 46, 74,123,156, 43,113,189, 76,168,118,113, 79, 85, 21,216, 76, 17,247, 29,179,249,140,166,107,241, 14,188,107,199,198, -117,152,106, 13, 76,134,190,239,198,194, 87,244, 84, 2, 30,234, 93, 96,123,168,201, 30, 54, 44,150, 75,230, 24,236,108, 90,225, -189,165,109,123,154,198,163,241,105,204,174, 33, 41, 5,139, 34,163,170,166,201,207, 23, 49, 58,144, 25, 75,140,185,164, 86, 37, -251, 74, 49, 73,123,143, 62,137,172,114,251,136,253,125, 36,239,164,174, 57, 72,192,139,120,162, 3, 58, 69,215,121, 82, 78,180, -115,156,159,159,211,159, 28,136,167,170,106,215, 58,194,198, 97,172,194,187, 72,239, 90,242,172,100, 50,149, 15,113,183,223,136, -250, 54,202, 78, 81,233, 40,161, 41,209,209,181, 66,246, 26, 14,238, 83,251,221,112,152, 13,135,219,122,179,123, 92,168,100,114, -129,215,135,150, 60, 47, 37,181, 76, 25,208,154,168, 98,210,210, 11, 44,161,105,154, 19,154, 92,186, 33,188,176,219, 69, 24,150, -136,119,234,152,114, 71,234,104, 85, 26,249, 57,231, 8,125,143,210,199,204,229,225,144,108,219,150,128,194,164, 0,130, 48,140, -156,181,193,102,249, 81, 75,144,212,237, 67,216, 3,104,137,131, 76,162,188,225,253,157, 6,178,156,238,176, 63,142, 47,253, 56, - 42,242,151,226, 81, 79, 81,176,167,213,247,105,197, 95,228, 22, 29, 3, 81, 88,154,227, 4, 32,166,215, 32,224,145, 1,116,227, - 25,128, 2, 58,137, 18,197, 89,145,174, 11, 45, 25,120,167,175,121,120, 47, 10,249, 25,222, 57,240,142, 76, 23, 84, 69,129,234, - 58,206,150, 11,206,150,115, 32, 50,169, 50, 46, 47,159,115,127,247,129, 15, 31, 62, 80, 31, 26,137,235,204, 13, 77,211, 99, 13, -156,159,205,199, 34, 78, 84,172,162,167,168,170,138,105, 85,113,104, 58,108, 81,241,176,218,208,116, 30,115,210, 65,106, 21,152, - 76, 36, 44,201, 24,205,127,251,167,255,135,207, 62,125,206,167,159,190,148, 44,114,223, 49,157, 86, 88,155,227,241,227,125, 87, -218, 12,239, 45,174,235,142, 48, 17, 31,232, 29,152,188, 32,170, 72, 31,101, 87,186, 62, 72, 46,248,100,162,147,165, 74,209, 75, -234, 54, 40,185, 62, 58, 39, 42,229,197,108,206, 97,183,103,191,221, 81,239, 15, 35,116,137, 16, 57,180,245, 72, 29,115, 9,162, - 82,239,247,236, 82,112,147,214, 26,155, 85,100, 90, 31,147,203,138,130, 69, 37,158,219,182,239,248,234,139, 47, 70,122,157, 92, -203,158,174,147,128,140,249,124, 78,215,251,241, 48, 28,226, 96,155, 52,109, 27,254, 30, 44, 84, 42,117,133,189,119, 28,214, 53, - 15,247,183,228, 74,115,104,106,108,222,136,224, 74, 91,116,232, 49,211,130,166,241,252,248,250, 13,255,233, 63,252, 13, 46, 70, - 14,117, 67, 57,153, 97,204,154,178,154, 48,173, 68, 35, 51,153,148,130,237,117, 82,200,207,243,156,174,245, 52, 93, 63, 10, 38, -173,201,199, 2,117,189, 94,243,242,229, 75,190,252,242, 75,254,175,191,255, 47, 84,211,233, 8,133, 25,240,188, 49, 70,138,236, -152, 51, 30, 19,138,217,245,199, 2, 56,234,192,100,178,148, 34, 42, 4,212, 9,139, 98, 40,174, 63,220, 92, 83, 21, 37,243,233, -100,188,151,170,188,224,217,211,167,188,252,228, 57,175, 95,191,230, 95,254,116,143, 34,240,228,114,201,118,159,115,119,191,194, -213, 61, 77, 42, 64, 50,163,240,125, 16,215, 80, 18, 61,107,101,199,221,254, 64, 90,108,154,142, 15,205, 45, 23, 23, 23, 84, 41, - 31, 92, 14,118, 61, 66,141,154,100,189, 91, 46,231,228,185,165,235, 26,152, 22,100,133, 37,170,156,169, 19,110,188, 15, 61,145, -200, 31,255,244,175,201,150, 54, 77,215,181, 60,227,111,111,111,248,233,253,123,208, 50, 73, 26,197,174,189,195,249, 46,173, 11, - 42, 73,205,140, 30, 39,110,119,188,215,232, 40,103, 83, 52,145,224, 3, 42, 77,117,150,203, 37,159,126,250, 41,179, 68,140, 27, - 62,251,219,219, 91,222,188,121,115, 4, 33, 13,211, 94,109,232,155,150, 42,179,196,188,192,232,146,135,213, 22, 26,197,243,231, -207, 89,111,182,172,112,188,124,241,132, 34,159,240,227,235, 55, 76,138,146,178, 42,248,244,147,151,220,220,124,224,252, 66,192, - 78,197,195, 14,109,114,180,146,247, 35, 17,202, 13,145,158,122, 47, 19,188,139,139, 11,186,125, 67, 40, 69,140,121,117,117,134, - 46, 50, 54, 7,177,129,234,166, 29,237,141, 89,106,202, 84, 98, 62, 12,231,232,105, 99, 37, 77,176,164,101,238,155,158,245,190, - 70,221, 61, 96, 5, 46,146,147,219, 78, 36,254, 3,102, 48, 61, 12,135, 78, 57, 70,201,186, 29,118,174,101,158, 97,243, 9,189, -119, 99, 40,200, 64,180, 58,181,109,156,102, 1,127,220,221, 17,181,216, 30,126, 65,221, 60, 60,248,135,157,219,208, 61,156,162, - 20,143,221,122,129, 65,211, 7, 71,166,107,246, 77,137,142,138,186,107,152,150, 19, 58,175,208, 49,200,190, 87,105,180,201, 41, -176,232, 44, 27,133, 93, 56,136, 6,170,124,130, 41, 12, 56,104, 92, 67,236, 35, 42, 83,216,104,192,130, 53, 5, 65, 7,108, 76, - 23, 21,134,246, 80,227,250, 32, 17,150,182, 64,105, 69,223, 5,218,246, 64,145, 75,176,129,119, 17,165,122,140,206,112,186, 19, -155,157,210, 9,201,122,154, 71, 30, 70,187,160,160, 18, 99,130,112,216, 71,164, 63,128, 62, 4, 48,150,204, 88,140, 78, 35,209, -168, 9, 26,140,206,198,195,255, 99,196,164,124, 63, 6, 99, 44, 89,145, 63, 98, 19, 12,227,210,225,175, 97, 12,250, 75, 9,107, -191,148,134,118, 58, 38, 29, 42,234,211, 9,192,105,231,252,184, 96, 80,227, 63,101,178, 32,126, 12,149,210,156, 4, 31, 58,124, - 22, 50,166,180, 10,234,166, 75, 26, 13,247,136, 84,119, 26, 82, 19,131, 35, 6,135, 33,162, 99, 0, 5,214,104,114,107, 40,237, - 52,141,248, 35,151,151,151, 44,230, 83,218,230, 64, 12, 78, 4, 76, 49,144, 91, 67,102, 52,170, 16,209,212,124, 54, 29,175,195, -162, 40,168,155, 61,209, 9, 41,107, 58,157,114, 56, 52, 68,157,243,176, 94,243,253, 15,111,209, 74, 81,228, 9,227,153, 68, 77, -101, 89, 82,101, 98,251, 10, 81,209,246, 29, 77,223,225,155,128,177, 57, 54,207,121,241,226, 69,210,124,136,144,202, 42, 75,244, -178, 59,245,181, 28,130, 89, 81,146, 69, 17, 86,117,181,194,197,128,119, 29,109,211,161,136,163, 72, 75,118,116,134,216, 11, 22, - 51, 70, 17,156,174, 31, 86, 99, 39,125, 56, 28,198,204,241,197, 98,129, 82,138, 95,255,246,207,198, 73,212,144, 49,160,181,166, -156, 76,152, 78,231,100, 89, 1, 74,240,183, 93,223,143,121,213, 67,167,247,240,240,192,237,253, 29,219,237,118,156,100,237,247, -123,118,183, 55, 50, 37,216,108, 83,145,235,127, 70, 23, 28,174,155, 1, 61, 43, 54, 61,199,122,189,150, 34, 50, 56, 84, 42, 46, -142,211, 24, 53, 6, 31,105,163,184,127, 88,243,225,250,142,233,252,156, 31, 95,125,207,217,133, 36,117,145, 23,172, 55, 15, 92, - 44, 39, 73,128, 21, 81,209,227,124,135,201, 10,140,209,180, 93, 61,190,143, 54,244,105, 66, 97,133,158,230, 35,255,241, 63,253, - 29,239,175, 63,140,145,198,109,219,146,249, 48,142,216,135,215,101,140, 97,154,203, 33, 19,195, 17,168, 36,105,100,187, 71,208, -168,225,121, 57, 76, 43,186,212,177,169, 40,163,237,121,149,227,218,134,204,106,206,206,150,252,250,235,175,121,247,238, 45,239, -222,189,163,111,101,231,156, 89, 77,171, 36,244,199,247,125, 10,154, 74, 1, 74, 39, 42,250,182,109,153,230,179,113,186,224,156, -163,111, 61,219,237,150,252,252, 28,107, 53,211,233,244,209,253,106,140,161, 50,102, 12,120,105,118, 30,215,183, 50, 49,154,207, - 71,100,241,161,150,134,233,183,191,253, 45,231,231,231,148, 89, 62,222,147, 98,233, 60,208,244, 61,127,250,238,123,182,251, 61, -237,161,149,123,212, 74,148,244,176, 71,215, 39,208,174,178, 16,155,218, 36, 37,132, 22, 54,227,229,139, 23, 28, 14,135,113, 18, -176,217,108, 30, 77, 36, 7,203,222,128, 67, 31, 40,115, 93,215,209,247, 22,183, 63, 80,205,166,148, 85, 69, 94,204,105, 59, 71, -239, 68, 24,122,191,217,114,121,190,164,115, 82,132, 44,231, 21,234, 66, 73, 42,167,210, 84,165, 60, 15, 98, 12, 24, 35,235,194, -221,126, 71,116,210, 24, 75, 17, 11,251,253, 22,124,224,229,203,151,204,230,211,145,248,248,236,249, 11,118,109, 77,231, 29,214, -138, 21,213,187,152, 98,188, 45,121, 85, 10, 96,202,105,188, 23,189, 74,116, 33, 1,137,228,251,156,206,231,178,222, 10,142, 67, -231,233,110, 87,216,186,149,244, 52, 31,197,242, 20, 6,230,114,202,212,246, 93,251,200,247, 59, 60,248, 93,240, 24, 39,105, 82, -238, 35,232,201,241,161, 95, 31,199,236, 39, 99,221,161, 50, 31,246, 2, 3, 7,124, 0, 78,124,220,217, 13, 89,206, 2, 21,233, - 79, 70,197, 6,239, 37,197, 12,165,136, 40,124, 84,116,189,168,168,125, 16,219,136, 79,135, 65,136, 2,237, 80, 6,140,178,100, -121,134,239, 29, 4, 79, 16,207, 30,157, 15,208,120,130,139,116,174, 99, 54,153,147,151, 25,209, 67,239, 59, 58, 31, 8,222,163, -208,228, 89, 46,135,173,235,137,202,161,141,193,230,133, 16,229,114,169, 48,251,222, 19,122,159,198,231, 62, 89, 52, 2,189,151, -202,185,170, 42, 82, 58,137,176,213, 7,219,224, 96,192, 27, 49,190, 58,113, 2,196, 58,118, 44,144, 68,148, 22, 98, 32,116,195, -225,151,214,165,189, 35, 87, 39, 35,204, 36,118,235,189, 40,244,209, 10,227,143, 7,110,248,133,239,241,151,254,254,248,175,211, - 3,122,184,113,237, 71, 15,219,211,172,245,211,209,188,119, 17,175,196,247,236, 34, 41, 23, 64, 39, 42, 17,130,134, 76,202, 59, -143,164,170, 9,124, 72,110, 34,137, 79,228, 81, 12,236, 35, 28,237, 0, 1,138, 17,155, 89,170,178,192,106, 4, 60, 49, 45,153, - 23,134,232, 68, 44,120,117,117, 69,140,145, 55,111,222,176,219,237, 70,197,241, 48,190,211, 90, 75,140,101,122,111,211,233, 20, -109, 32, 4,143,119,194, 16, 80, 98, 31,193, 88,168,138, 92, 70,253, 90,246,156, 33, 4,234,195,129, 24, 58, 1,102,232,136, 54, -150,251,135, 53,117,211,145,101, 57,214, 8,101,111,191,223,115,126,126,153,180, 29, 98,137,212,134,148,227,157, 0, 77, 74,209, - 29,246,100,161, 39, 58,199,108, 94,240,226,197, 39,124,243,201,211,180, 54,144,240,141, 17, 58,100, 13, 69,150,147,165,135,165, - 11,138,162, 88, 48,157,207, 1, 18, 28, 67, 14,221,162,154, 50,157, 78,211,126, 82, 30, 36,235,245,154,221, 86,162, 93,135,207, - 99,189,222,210,186,158,190,105,233,210,164,101, 20,182,166,149,213,128, 89,181,214, 98, 50,233, 16,157,239,240, 81,165, 46,240, -241,122,234, 52,106,116,248,204,139,162,120,164, 45,177,214, 82,228, 37,187,245,154,201,100,138, 79,161, 71, 25,140, 68, 64, 31, -101, 61,247,167,239, 95,241,251, 63,251,134, 31, 94,191, 66,155,140,233, 92,242,182, 15,102,199,126,191,101,181,153,200, 68, 98, - 72, 62,204,122,180,205,136, 49,176,219,237, 88,206, 23, 60, 60,172, 9, 94, 30,214,222,123,222,188,121,195,215,223,124,195,213, -213, 21,111,222,253,132, 66,143,175,177, 40, 10,122, 47, 97, 36, 67, 24, 80,244, 50,149,139, 39, 5,182, 49, 34,118,236,125, 76, -238, 91,185,199, 93,186,200, 21,102,124, 86, 86, 9, 26, 52,164,246,237,247,123,170,170,228,197,203, 39,252,249,239,126, 77,215, - 53, 92,223,221,203, 14,185, 48,116,157,124,214, 77,221, 97,148, 18, 43,229,112, 47,198,152,178,225, 3, 15, 15, 15,162, 83,168, -196, 34,107,181,225,238,238,142,253,126, 47,106,253,171, 11,202,178, 28,195,105,242, 92,190,191, 73,153,243,250,213, 59, 73,129, -212, 71,241,241, 98, 49, 99,190,156,201,116, 52, 4,150,203,101,162,208,221,201,207, 41,202, 17, 40, 51,141,142,171,191,254, 75, - 30, 86,119,180,251,150,201,180,100,158, 14, 41, 89, 85, 29,153, 10, 3, 67,126,128, 39,101,153,104,162,238,238, 55,204,102, 19, -150,203, 57,251,253,158,251,251, 21,219,237,150,111,191,253,150, 55,111,222, 60,122, 46,124,254,249,231,252,230, 55,223,208, 52, -226, 32,216,111,182,252,250,155, 95,137,192,211, 9, 99,228, 87,191,250, 21,189,139,220,175, 55,248, 0,211,249, 18,143,226,254, - 97,131,181,150,139, 96, 56,236,107, 38, 85,201,229,229, 37,171,213, 29,187,251, 91,234,166, 39,120,203,102,123,160, 42,231,210, -121,107,205,100, 82,178,237,214,220,108,111,120,245,234, 21,147,178,160, 44, 45,187,109,205,122,117, 67,208,226, 78, 24, 32, 65, -174,119,180,125,143, 54, 29, 89, 89, 72, 76,173, 53, 24,107, 57,212, 13, 46, 19,117,253,164,152,140,239,107, 50,153, 96, 84, 28, -115, 66,236,237,253,195,120,216, 14,187,144,143, 31,212,167,201, 96,121,158, 19,125,160,233,250,196, 18, 46, 30,239, 45, 79, 58, -180,190,239,199,176,249,211,189,186, 36,123,249,116, 3,232, 71, 85,250,199, 10,245,225,225, 52,144,153, 6,225,140,152,253, 11, -138,114,114, 84, 46,147,143, 93,137, 60, 36, 2,177,144,238, 89, 23,250,209,152, 88, 39, 52, 97,140, 10, 27, 12, 42, 59,178,202, -197, 14,150, 49, 79,138, 96,231, 28,251,122, 47, 86,131,162, 32,203,242,244,129, 14,136,203,140, 44, 83,227,127,235,189, 26,227, -104,135, 14, 20,186,147, 68,179,156, 24,101,242,192, 71, 29,236,233,103,127,140, 39,213, 63,203, 85, 30, 30,156, 1,245,232,160, - 61,245,180,158,238,202, 63,214, 53, 28,105, 80,253, 35, 1,207,233, 24,253, 23, 15,201,255,159, 3,253,151,118,234,195, 67,105, - 40,236,134, 3,113, 92,193,216,244,158, 61,184, 32,188, 4, 31, 24, 85,234, 58, 61, 8,133,193, 30, 8, 46, 18, 93,192, 40, 81, -199,231,121, 57,230, 81,159,230, 24,200,232, 42, 41,241, 83,151, 94, 22, 57,243,105, 82,165, 22, 57,147,170,192, 31,246, 44, 23, -103, 24,155,243,238,189,168,114, 55,155, 13,109, 43,124,237,139,139, 43, 2,176,217,237,199,104,211, 67, 35,163,176,103,207, 96, -127,216,178, 90, 61,224,187, 30,215,183,184,182, 99, 95, 55, 76,231,226,217,239,251, 54, 1,155, 84,154,202, 48, 38, 96,201,126, - 60, 48, 91,206,152,206,150,248,104,169,219,134, 69, 53, 67,103, 25, 79,158, 60,225, 55,191,254, 29,109, 87,143,244,180,178, 16, -145,216,249, 66, 86, 0, 86, 7, 98, 12,220,223,220, 81, 78, 43, 94, 62,123,193,161,173, 89,223, 63, 80,119, 45,153,177,236,155, -154,253,221, 67,226,104,203,248,119,179,223,177,221,237, 33, 74,116,240,160, 26, 62, 63, 63,231,254,254,158,222,199,145,209,221, -165,152, 97, 57, 16,212, 56, 42,119,206, 81, 85,211, 81,249,156,101, 89, 26, 61,186,244, 64,155, 8,240, 35,141, 67,187,174,163, -233,100,212,219,187,150,222, 71,136, 38, 37, 17, 30, 99,156, 79,187,244, 97, 61, 52,188,142,225, 58, 10, 33,176, 63, 52,146,221, - 94,149, 56, 31, 31, 37, 3,138, 45,202, 97,115,203,183, 63,190,226,247,191,255,115,162,201,184, 95,175, 88, 46,206,120,247,225, - 61, 85,190, 16, 14,124,150, 49,159, 75, 50, 90,219,245,104,221, 48,153, 45,200,140, 98,187, 90,243,213, 55,191, 97,183,219,165, -213,149, 36,143,189,123,247,142,201,164,228,215,191,254, 53,175,223,190,225,112,216,143,233, 95,211,233,148,114, 82,200, 88,219, -133, 35, 42, 54, 38, 97,233,160,155, 49,154,162,154, 18, 82,243,115, 26,250, 20, 99,164,181,162,121,105, 14, 7,172,209,148,153, - 37,168, 19, 50,163,142,188,251,233, 45, 95,124,254, 41,247,247,247,188,121,243,134, 76, 43, 38,211, 89,138, 73,149,105,211, 24, -229,236,143,235,171, 1, 98, 52, 66,112,170, 66,146, 9,171,140,251,123, 81,179,159,157,157,177,217,236,152,205, 38,227,103, 62, -224, 87,203, 20,175, 26, 93, 63, 22, 46,183,183,183, 40, 21,199,140,133,237,118,203,235,215,175,169,170,138, 55,111, 94,115,126, -126,206,217,124,193,237,237,173,232, 49, 30,110, 37,107,192, 42, 46, 22, 23, 76, 22, 19, 20,102, 4,223,196,232,217,111, 15, 35, - 16,109,184,238,134,235, 81,104,139,226,211, 31,174,199,217,108,193,197,197,197,248,252, 89, 44, 22, 99, 17,180, 90,173,132,122, -119, 38,201,139,109,189, 5, 96,177, 88,176,212, 57,119,235, 29,117,179,103,189,171,185,190,121,224,211, 79, 63,165,237, 28, 69, - 53,227,139, 95,125,195, 15,223,253,145, 79,159, 63,227,199,215,111,248,219,127,247, 63, 49,153,230, 56,215,178,217,174, 18,125, - 79, 44,222, 69,145, 37, 34,159, 99,183,219, 48,153,148,148, 85,206,135, 15, 31,176, 90,145, 23,178,250,236,125, 71, 23, 20,187, - 77, 67,215, 56, 84,148,169,106,219, 57,250,216,160,178,156,162, 20,160,205,160,124,215, 73,248,119,190, 60, 79,120,241,156,179, -197,108,108, 64, 54,155, 13, 54, 96,210,222, 85,161,109,193,180,154,141,213,122, 53,153,142,106,187, 65, 72, 81,101, 37,155,205, -134,203,203,203, 20, 61,104,200,178,252, 81,194, 88,159, 56,211, 62,212,132,168, 49, 54, 27,241,123, 54,179,212, 77,207,116,182, - 76, 93,161,163, 73, 65, 41, 67, 56,133,181, 86,190,212,180, 91,206,211,190, 42,164, 84,184, 44,237,172,134,232,207,192,128,145, -149,202, 54,248, 40,162, 19,155, 83, 84, 83, 54,155, 13,243,249, 92, 66, 57, 50,169, 72,209,150,125,221,142,249,231, 93,219,141, - 15,180, 44,203,152, 45,206,120,120,120,160, 72,158,231,206, 5,178,172,160,247,145,172,176, 66,211,242, 82, 69,238,235, 54,141, - 93, 69, 69, 61, 40,221,234, 86, 70, 80,109,211, 48, 75,170,106,225, 43, 7,234, 86,186, 67,223, 8,217, 42, 1,160,208,218, 98, - 76, 54,114,158, 7, 44,164, 4,152, 36,102,123, 58,180,251,222,143,254,214,143,139,129,143,119,225, 31, 71,162,186,148, 22, 6, - 97, 12,122, 57, 21,203,157,174, 65, 78, 11,138, 71,202,248,143,132,119,195,207, 25,110,176,225, 90, 24,126,223,105,193, 49, 60, -152,188, 23, 95,170,119,129,222,123,138, 44, 35,162,233,122,143, 11, 61,185, 5, 23,122, 84,212,216,220, 96,172,193, 71,151,146, -225,228, 53,100, 86, 99, 77, 62, 22, 36,167,185,237,190, 23, 33,148, 10,114,227,247,185, 29, 87, 74,121,158,211,244, 61, 14,197, - 54,229, 94, 15, 15,111,173, 53,249,100, 74,147, 30, 24, 90,107,170, 16, 81, 54, 99,181,219,139,213,104,189,199,232,128,115, 34, - 66, 43,202, 9, 38,207,184,154,206, 88,158, 95, 48, 89, 44,153, 44,206, 40,166, 51, 14,135,134,229,217, 25, 90, 73, 10,212,151, - 95,124,198,211,167, 79,200, 51, 9,126,113,189,167,115, 61,171,213, 74, 86, 78, 62,142, 58,140,250,208,115,216,238, 36,178,113, -208, 69, 56, 81, 80, 55,206,227, 99,160,217,183,152, 92,131, 87,236,155, 29, 70, 9,179,220,106, 67,221, 54,148,121, 49, 30, 58, - 67, 55, 73,240,148,182,163, 72,246, 78,173, 53,235,213, 22,239, 34,147,180, 83, 29,180, 2,195,164, 41,207,133, 95, 62, 20,249, -101, 94,200, 62, 93,171,113, 44,106,140,193, 22,185,100,192, 87,213, 88,196, 40,165,168,219,102,236,220, 93, 12,244,157, 56, 69, -234,186, 30, 15,237,225,154,215,218,166,188,234, 60, 41,218,197,122, 89,215,245,216,189,135, 16, 70, 63,249,114, 89,201, 61, 56, -169,232,123, 39, 36, 64, 83,209,245, 53, 63,190,122, 75, 94, 84,220,221,221, 48,159,207, 33, 68, 54,235, 21, 23, 23,103,105,167, -124,199,114,185,228,236,252,130,253,190,102,183,222, 80, 78,103,204,103, 83,174,223,191,165, 44, 69, 77,159,220,152, 76, 38, 19, -110,111,111,121,250,252, 25,191,249,250, 27,254,241, 31,255, 17,215,181,146,220,183, 90, 73,204,174, 70, 72,101,173,161,235,146, - 15, 91, 71,140,102,156,220,100, 89, 65, 72,140,120,165, 20, 70,229,104,155,225,251,110, 20, 75, 13, 7,175,142,129,213,106,197, -239,127,255,123,110,175,223, 51, 89, 87, 60,127,126,206,118,187,229,233,147, 75,190,252,213,231,188,123,127, 45, 1, 55,243, 57, -121,239, 89,173, 54, 4,223, 83,164,245,138,214,154,170,170,142,129, 70,169, 73,170,138,103, 92, 94, 60, 97,189,121,160, 21, 48, -158, 76,116,140,165,233, 28,183,215,239,217,108, 54, 84,101,129, 86, 25,247,119,183,228,198,210, 57, 57, 48,191,252,242, 75,118, -187, 29,219,237,158,249,124,201,229,213, 21, 46, 53,118,255,252,207,255,156, 14,227,158,159,126,122,155,158,109, 25,157,139,212, -174,199,230, 57,187,118,195,191,190,191, 37,244, 73,165, 53,164,158,121,177,240,157, 70,243, 14,205,165,209,154,202,244, 50, 57, - 77, 80,162,182,109,199,231,230, 23, 95,124, 49, 22, 75, 67, 48,207, 31,254,240, 7,254,246,111,255, 61, 55, 55, 55,252,240,221, - 94,216,238, 33,208,245,145, 62, 68, 54,245,154,160, 51,170, 73,193,190,169,199, 98,243,230,253, 27,158, 62,121,193,195,106,203, -211, 39,207,121,243,211, 91,254,195,223,254, 59,174,174, 46,248,187,191,251, 59,254,243,127,254, 95,120, 88,237,104, 27,199, 97, -191, 77, 33, 75, 59,154, 70,242,213, 15,251, 45,211,105,193,231, 95,255,138,222,213,188,255,240, 19,180,134,174, 15,152,228,220, -112,173,136,233, 76,227,216,237,247,244,206, 49, 95, 76,153, 47,103, 99, 35, 59, 60, 83, 69,119,226,153, 76, 10, 98,240,104, 99, -120,184,189,145,181, 90, 94, 76,137, 58,226, 90, 71, 86, 25, 14,219, 3, 46, 58,170,201, 2,101, 21,185,206,113, 68,140, 45, 37, -153,198, 43,130, 54,108,182, 53, 69, 49, 73, 94, 74,131,209,150,221,126,195,116, 50,231,242,242, 9,111, 94,191,101, 58,171,240, - 78,225, 92,143, 34,147, 17,107, 15,101, 57,161, 62,244,132,232, 68,201,235, 92, 34, 83,229, 35,192, 98, 24,239,157,122, 67,119, -187, 29, 89,150, 37, 36,224, 2,165, 12,117, 2,140,156, 70, 25, 94, 92, 92,140, 9, 70,215,215,215,146,169, 91,203,206, 98,181, - 90,141,213,219,169,125, 96, 58,157,114,127,127, 63,254,156, 87,175, 94,241,197, 23, 95,112,119,119,151,114,181, 23,108, 54,155, -177,155, 29,108, 5, 74, 41, 46, 47, 47,249,241,199, 31, 57, 63, 63, 31,167, 29,101, 41,116,159,135,135, 7,242, 60, 31, 67, 16, -134,157,227,112,192, 23,133, 84,200,167,221,242, 48,105, 88,175,215,143,146,154,134,159,119,122, 40,170, 19,145,201,169, 38, 97, -120, 32, 75, 18,214, 17,155, 43,187,250, 56,122, 85,135, 95, 15, 68, 55,130, 34,170,128,198,164, 95,139,192, 80, 69, 37,243,176, -148,103, 45,121,199,142,204,136,213, 79, 69,240,193,141,255,187,198,128,142,244,173, 19, 20, 48,134, 54,122,250,214, 16,240,233, -231, 72,247,109,221, 41, 2,182, 65,117,234,100, 50,208,167,206,197,209,123,253,209, 52, 71, 60,229,167,194,190, 83, 27,160,164, -188, 73, 70, 0, 39,118,190,161,226, 63,212,150,207, 62,255, 28,231,156,248,102,209, 96,115,202, 42, 27,169,125, 49, 69,126, 86, - 85,197,217,217,217,216, 57, 74,181, 60,167, 44,114, 66, 87, 19,124,207,114, 54, 31, 31,148, 38,203, 48, 70,138,212,188,170,216, -237,107, 9,180,216,109,184,187,187,225,221, 79,175,229, 70,238,122, 25,177, 39, 10, 88,219, 72, 87, 23, 82,145, 55,142,165,125, - 72,241,187,146,198,148,219, 2, 93,100, 52,125, 63, 82, 21,139, 32,122, 14,109,139,180,102,202,112, 49,146,151, 19,148, 49,244, - 81,118,205, 85, 37,201,126, 93, 91,167,169,211,113,122, 51, 48, 11,230, 41,228, 99, 8,208,185,186,146,131,103, 8,139,169,107, -193, 75,231,182, 24, 59,240,193,158, 86, 85, 21,121, 85,166,206,183, 75, 2,184, 3, 62, 30, 15,146,195,225, 32, 1, 23,113, 72, - 38,108, 31,117,171, 63,139,129,254, 40, 27, 92,190, 75,253,179,162,117,248,254, 93,144, 0,152, 67,211, 82, 88,195,159,190,255, -129, 47, 63,123,201, 79, 63,253,132,181, 53,101,145,147,101,102, 68,254,198,228,251, 70,201,103, 80, 77, 10,250,182, 97, 90, 86, -108, 15,210, 96, 88,171,113, 62,142,238,151,197, 98,193,213,213, 37, 79,159, 62,229,236,236,140,245,122, 77, 84,114, 24, 79,178, -105,122,158,185, 71,108,251,227,123, 18,115,168, 45, 64,123,253, 51,119,208,105,234,101, 94, 22, 56,159,132,158, 33, 77,122,242, -138,159,126,250,137, 60, 83,188,120,118,133, 49,134,103,207,158,209, 52, 29,239,111,239,200,108,158,154,128,236,209,231,118, 44, -152,244,163, 85,233,195,131,116,166,171,245, 61,121, 38,215,222,106,181,161,200,114, 22, 11,225,185,107,173, 89, 46,132, 9, 50, -159, 76,185,222,109,121,254,252, 57, 15, 15,119, 35, 25,241,255, 99,235, 77,131,109, 75,239,242,190,223,122,215,188,214,158,247, - 25,239,124,187,175,122,146,186, 91, 18, 8, 97, 98, 7,100, 11,162, 42, 65,108,134,114, 4, 4,203, 78, 19,149, 10, 59,229,144, -170,160, 15, 96, 91,134,162,108, 97,176,131, 49, 50, 40, 33,102, 40,197,178, 21, 72,165,224,147, 44, 69,118, 8,136,214, 8, 45, -117,183,122,188,125,231,123,238, 25,246,184,230, 41, 31,254,239, 90,103,159,150, 85,213,213, 45,245,213,189,251,236,189,246,251, -254,135,231,249, 61,174,235, 18, 69, 17,158,231,209,235,245, 40,242,156,119,189,235, 93, 60,120,240,128,186,174,187,244,180, 60, -207,185,114,117,135, 56,205, 56,153,207, 89,204, 22, 84, 84,132, 94,136,235,122,157, 56, 50,232, 5,167,211,183, 14,111,173, 40, -235, 6, 67,137,120,207,247, 28,124, 59,212,218, 16,177,202,181,190,250,243,231,207,179,179,179,195, 96, 48, 96, 62, 63,225,181, -215, 94,227,198,141, 27, 28,159, 28,234,148, 63,197,173, 91,119, 40,202,154,222,112, 68,156,164,212,134, 73,133, 69,213, 52,236, -239,236,115,124,124, 76, 94,138, 13,251,222,193, 33, 23,206,159, 99,111,123,194,237, 59,247,217,222, 30,242,198, 27, 55,120,234, -169,183,243,218,171,215, 57, 57,153, 51,159,159,128, 97,163,148, 37, 34, 76,173, 69, 49,140,138,249,124,206,238,222,148,232,245, -136,197,106,137,239, 15, 81, 86, 69, 85,155,152,166,139,235,249,164, 69,195, 42, 78, 88,175, 35,188,192, 39, 77,115,153,186,232, -207,178,179, 51, 91, 22, 71,135,135, 80, 22,130, 9, 55, 77, 92,199,193,106, 12,147,170, 46, 73,243,146, 97, 24,208, 24,153,228, -115, 27,146, 51,237,187, 2, 5, 72,178,132,154, 10,163, 81,140,198, 83,178, 36,167,172, 97, 50,222,226,248,248,152,126,127, 72, -191, 55, 20,210, 86,158, 51, 24,140, 68, 25, 73,163,197, 87, 50,162,137,210,164,243,119, 59,142,141, 19, 88, 92,188,120,145, 87, - 94,121, 5,207,243,232,247,135,154,108,228, 75,226,148,109,147,231,146,234, 22, 4, 61, 86,171, 21,166,105,107, 33, 21, 76,167, - 83, 22,139, 69, 55, 70,115, 93, 87, 56,220,122,231,105, 24, 70, 7, 4,176,109,187,251,245,158,231, 17,134, 33, 71, 71, 39,157, - 58, 55, 8, 2,102,179, 25,219,219,219, 44,151, 75,157,208, 69, 23,182,208,130, 51, 90,187,202,102,103,184,189,189,221,141,231, -139,162, 96,181, 90,117,138,204, 36, 73,186,108,100,165,148, 4,127,140,199, 90,112, 83, 16, 4,190, 70,133,230, 58,192, 65,242, -198,119,119,183,245, 1,178, 57,238,174, 37,177, 74,255, 21,232,207,199, 48, 54,194, 78,180, 30, 66,117,206,242,214, 87, 94,107, -168,154, 30,195, 25,173,135, 31, 76,195,160, 54, 68,168, 87, 86,133,228, 87, 27, 2, 32,162,150, 4,189,178, 41, 49,145, 67,183, - 41, 27,138, 42,167, 49, 74,242, 42,167, 46,106,138,186,144, 95,111,130,137, 73,163, 26, 76,195,212,170,116,131,198,104,160, 42, -105, 16,248,137, 97,153, 26, 11,219, 90,215,236, 51,234,223,150,210, 39,160, 27,186,247,161,213, 0, 88,166, 73, 83,231, 40,165, - 87, 16,166, 22, 1, 81, 99, 42,179,131,245,136, 88,174,198,208, 59,186, 44,203, 4,249, 91,215, 28, 29,207,136,227,184, 11,176, - 0,177,197,213,141, 33,227,254, 90, 7,227,100, 57,171, 72, 70,143,109, 46,185,239,187,212, 85,129,170,107, 76, 26,122,161, 79, - 85,200,239,111,219, 54,105, 81,179,142, 51, 6,147, 41,171,117, 44,112, 29, 67,144,154, 70,163,197,161,141, 69, 20, 69,221,151, -180,168, 55,166, 45,149,136,109, 12, 75, 81, 25, 21,101, 93, 82,102, 57,208, 80, 58, 13, 78, 93,225,185,138,154, 6, 63,112, 49, - 77,132, 10,233,186,212,133,128, 95,134,195,161, 46, 22,165,224, 9,117,241, 44, 35,225, 16,223, 11,116,120,196,170,131,199, 68, -203,136,244, 48,215,126, 94,233, 16, 90,156,169,227, 56,132, 97,200, 50, 90,227, 90,173,149, 79, 46, 25,101,138,199,122,177, 88, -176,184,125,135,213,106, 69,127, 56,144,169, 80, 89,159,142,211, 77, 83, 23, 26, 54,101,221,144,151,165,132, 10,233,110,164,179, -124, 90, 22, 69,154, 82,181,211, 31,173, 57, 41,203, 82,162,107, 65,108,153, 27,211,169,214, 6,170, 12, 45, 30, 74, 10,156,190, -207,241,108,201, 83, 79, 62,201,206,222, 46,179,147, 67,124, 95,128, 43,174, 31,176, 92,172,186,247,138,186, 33, 79, 51, 92,247, -236,164, 74, 41, 3, 27, 19, 84, 77, 85, 54,148,117, 69, 86,100,220,185,115, 71, 18,190,166, 83,121,127, 60, 79,166,140, 85, 77, - 18,197,221, 26,209,214,103, 69,211,198,244, 73,181, 76, 83,202, 51,209, 22, 51,242,236, 11, 74,161,106, 4,106, 69, 45,192,154, - 48, 16,223,249, 58,142,176, 92,135,248, 56,209,207,162,129, 50, 44,246,246,246,168,107,152,173,214, 88,166,141, 97, 90,100, 69, -165,237,179, 74, 20,234,121, 77, 89, 75,244,171,237, 90,152,153,121,166,224,112,189,128,134, 37,129, 47, 63,135,109, 74,119,184, -179,179,195,120, 60, 38, 12,124,108,101, 64,211,224,233, 73,140,151,134,156,204, 22,122,215,237,234, 51, 90, 26,168,209, 72, 66, - 82, 70,195, 73, 87,208,141, 39, 67,113, 29,149, 37,158,107,114,240,224, 30,183,223,184,205,209,252,136, 58,175,177,236, 6,127, -216,199,117,183,186,230, 75, 92, 10,193,153,139,205,178, 44, 38,219, 91, 58,240, 5,125,246,202,217, 23, 71, 9,139,197,130, 55, -174,223,224,238,157,123,164, 89, 66,150, 37,204,231,115,194,208,151,162,173, 40,112,109, 15,203,114,240, 3, 7, 47,240, 56,156, -157,160, 76,135,241,246,152,241,100,155, 87, 95,126,141,178,172,153, 12, 71,132,253, 62,163,241,128,215,111,222,100,177,154,243, -240,229, 11,124,243,197,215,184,246,208,101,150, 11,177, 2, 62,244,208, 21,158,123,238, 27,244,123, 30,158, 23, 48,232, 79,112, - 28,135, 94, 63,192,243, 28, 76,213,240,240,181,203,140, 6,161,104,133, 12,139,163, 89,196,157,187,135,204,151, 9,149,206,232, - 8,195,144,188, 40,181,251, 64,206,124,183,116,187,201,167,101, 88, 4,158, 75,224, 58,184,142,133,109,105,194, 72, 93, 97,217, -174,131, 81, 42, 80, 25,113,156, 82, 84, 37, 61,191, 71, 93,215,140,199,211,110, 87,178,189,189,221,237, 50,102,179,133,248, 31, - 27,131, 59,247,239, 49, 30, 12,181,114,214,212,187,179,180, 83,115, 10,213,204,234, 42,175,182, 11, 23,219, 71, 69,158,151,188, -242,202, 43, 93, 37,152,101, 89, 55, 38, 76,146,132,245,122,221,165,218,180,178,126,211, 52,201,115, 81,226, 39,217,113, 55, 14, - 59, 62, 62,238,132, 3,237, 30,165, 21,124,180, 42,112,217,251, 24,156,156,156, 48,159,207,187,189,225,131,195, 67,182,183, 36, -230,111, 62, 63,161,105, 12,130,192, 35, 77,115,148,130,178,108, 24, 14,251,172, 86,145, 88, 44,202,154,193,160,167,139,149, 76, -239,155,214,120,158,199,112,216,239, 44, 13,134, 33, 84, 39,185,208,209,217,189, 11,141,141, 28,200, 56, 49,141,152, 76, 38, 40, - 19, 86,203, 8,203,150,125,228,114, 53,239, 96, 61, 52,170,251,123,195,233, 94,189,165,153,177, 65,245,234, 68,110, 84,152,202, -150,255, 31,154,129,175,211,237, 90,117,185, 99, 90, 90, 49, 95,158,142,172,203,242,172, 32,174, 60,237,152, 74, 61,221,144,228, -189, 18,229, 89, 56,154,205,111, 53,234, 91,124,236,242,231, 26,157,176,177, 81, 13, 86,163,244,235,151, 41, 65, 94,136,200,208, -177,237, 55, 89,122, 20, 52, 85,199,161,223, 84,181,203,165,110, 80, 23,245, 41,177,236, 63,163, 71, 40, 75,217,167,215,186,131, - 43,114,205,195, 86,178, 10,120,229,181, 87,245,158,176,234, 38, 30,237,186,192,182,109,242,236,212,202,216,142,123, 11,173,242, -246, 18,143, 52,137,160,174,176, 77,131,222, 74,212,170,237,168,204, 80, 22, 69,117, 74, 89,203,138,188,139, 75,149,213, 64, 65, -191, 55,236,222, 31,137,120, 61,213, 6,180,162,210,246, 63,182,229,224, 5,162, 0,238,245,122,248,190, 71,217,148, 84,117,214, -169,151,155,166,193, 49, 79, 19,216, 22,139, 5, 32,180, 53,154, 70,143, 94, 75,201,244,182, 44,150,139, 21,101, 89,119,246,209, -214,215, 92, 20, 5, 89,145, 67, 35, 9,111, 74, 41,129,168,232,241,102, 75,139,235,107,145, 93, 43,174,173,171, 90,176,192, 85, -133,178, 36,112,200, 80, 74,236,176, 24,100,101,165, 21,145,208, 96, 81,111,192,148, 78,185,254,117,231,233,222,220,177,111, 10, -118, 55,147,249,218,103,190,157,238, 85, 77, 13,166,162,174, 12,210,178, 36,175, 27,124,219,225,104, 62,231,161,171,215,248,243, -197, 9, 61,207, 38,137, 86,114, 70,172, 99,130, 32, 96, 48, 24,108, 36, 9,154, 93,119, 43,234,127,151,117,154, 2, 74,162, 89, -203, 18, 48, 56, 60, 60,212, 59,249,190,124, 86, 74, 46,201,182, 83,204,203,170, 19, 42,182, 44,251,238,251,161, 12,138, 82, 70, -167, 54, 6, 5,101,247,236,110,106,108,210,188, 68,169,156,189,193, 30, 73,158,113,253,245, 27,108,111,111,227,121, 62, 73,146, -113,124,124, 76, 86, 84, 56,158, 79, 47, 28, 48, 25, 79,137,162, 68,232,127, 27, 48, 43,207,243,186,162,169,253,126,180, 83,155, -126,191,207,106,181, 98, 52, 26,201,238,215,178,176, 76, 89,117,204,231, 16,250, 62,142, 99, 11,219, 61, 79,169,202, 28,207,147, - 9,102, 16, 4,124,243,155,223,148, 9,149,158, 0,156, 59,119,129,227,227, 99,110,222,188, 41,147,153,181,104,146,190,255,251, -191,159,209,104, 36,206,136,227, 7, 24,134,193,133,253,115,236,239,236, 18, 69, 81,199, 45,104,155,167,246,172,111, 47,246,246, -142,104,133,134, 69, 93, 80, 85, 5, 81,148,144,166, 14,101, 89, 11,154,184,106, 88, 44, 22, 29,135,225,224,193,125,157, 89, 82, -178,179, 59, 97,107,107,194,151,190,244, 21, 40,149, 0,198, 28,147,161,209, 48, 25, 13, 24,140, 38,152,142,135, 81, 21,248,174, - 13,142,197, 67, 15, 61,196,189,123,119,152, 47, 78,200,179,152,239,250, 75,239,226,224,112,134,111,154,156, 28,175,176, 44,193, - 5,239,108,109,243, 61,223,243, 95,242,252,243, 47,178,183,187,131,101,121,221, 93, 53,155,205, 56, 62, 58,224,222,253, 91,100, -201,154,178, 41, 57,119,254, 18,101,158, 98,234,187,161, 30,112,167,174, 0, 0, 32, 0, 73, 68, 65, 84,172, 45,156, 74,206, 27, -201, 13,169,197,227,238,218, 40,203, 60,165,115,150, 13,166, 49,224,202,197,115,244, 2,191,123,254,235,186,198,202, 18, 25,153, -140,135, 3,210, 52,197,115,108,234, 82, 46,242,225, 80, 42,170,192,115, 73, 34,129, 40, 20, 89,218,117,208,242, 5,183, 88,197, -218,150, 18, 23,236,237,157, 99, 57, 91,178,179,179,199,122, 29,129,169, 40,234,130, 60, 90, 82,150, 57,195,225,152,120,177,198, - 11, 3, 22, 11, 97, 19,251, 97,159,178,134, 82,143,222,143, 78,230,242, 1,154, 38, 73, 22,177, 92, 75,224,133,239,251,140,167, -219,204,102, 51, 66,205,226, 46,117, 17,176, 92, 46, 25,141, 70,221,193,179,183,183,215,141,237, 15, 15, 15, 25, 12, 6,157,114, -185,237,232,243, 60, 23, 97,129,173, 24,143,134,196,201,154, 34,175, 24,142,250,216,150,203,108,126, 76,224,247,116,231, 42, 44, - 97,195, 48, 48, 45,133,239,135,120,190, 67,145, 22, 56,182,137, 2,118,183,167, 68, 81, 76,211, 84,120,158, 40, 18,155,170, 96, - 50, 26,112,235,214, 29,241,118, 90,138,221,237, 41, 73,180,210, 7, 93, 13, 85, 73,180, 90,136,231,176,134,178, 49, 68, 77,156, -156,194,115,222,124, 25,183, 17,179, 69,118, 54,218,242,140,184,142,154,166, 42,186,152, 88,165, 4,236, 98, 40, 11, 3, 37,142, -186,166,189,132, 91,148,106,163,105,108,198, 25,175,121, 89,201, 56,211, 80, 74, 80,172,166,146, 36, 59, 3,237,179, 55,191, 5, -107,123,154,190, 37,201,108,150,121,118,204, 8, 16,122, 46, 70, 29,163, 84,131,103,157,189,184,165,195,203,190,229,144,171,244, - 95, 57,116,220,118, 41, 72, 78, 61,207,157,144,176, 44, 59,255,111, 77, 35,113,170,101,141, 99, 89, 88,142,173,223, 87,227,140, -214, 32,207, 43,137, 54,104, 26,177, 70,233,162, 66,240,147, 89, 87, 92, 58,142,131,178, 69, 37,237, 27, 22, 89, 85,225,123, 46, -142,165,247,167,166,133,107,219, 66,184,179,109, 60, 83,232,138, 85,145, 99,155, 22,118, 24,202,248,215, 86,167,135, 88,110,118, - 23,102,155, 47,221,138, 78,171,170,162,168, 75,202,120,205,114,189,214, 49,177, 6,181,158,116, 84,250, 16,183,117,193,210, 22, -178,126,224,146,100, 37,209,106,141,109, 75,241, 93, 85, 58, 20,169,110, 72,117,146,150,227,185, 98,187, 43, 37,235,121,189, 94, -211,235,245,200,171,146,160, 17,152, 76, 94,149, 36,121, 38,241,170, 85, 67, 83, 72, 36,104,170,167, 19,134, 97, 82,212, 21,166, -178,240,130, 80, 82,193,148,161,247,150,165,196, 52,171,211,206, 58, 43, 10, 61,117, 58,157,206,108,174, 82, 54,147, 5,223,124, -137,119,105,110, 85, 67,165,170,110, 26, 39,187,249, 80,222,175,170,162,106, 12,170, 6, 94,122,249, 85,206,253,229,239,144, 96, -144, 34, 37, 8, 2, 26,211, 97, 48,156, 16,250, 1,158, 23,224,251,174,144, 4,131,128,213, 42,146,181, 2,210, 41, 85, 85, 41, - 58, 31,163,193,118, 76,148, 33, 77, 75,175,215, 99,119,119,151,193, 64,166, 18,141,125, 74,179,236,246,192, 58,226,184, 54, 78, - 9,108,134,169,176,108,228,140, 44, 74,138, 56,163, 44,191, 85, 8,107,219, 54,166,146,238,237, 40, 73,184,127,120,132, 23,246, -168, 11,233,124,143,143,103,184,126, 72, 99,136,195, 96,103,103,135, 91,183,238,144,100,226,247, 47,235, 83, 33,178,178, 76,113, -211,234,239,189,237,104, 55,138,169, 88,175, 86,108,237,108,107, 85,247, 28,219, 21,174,128, 92,236,115,250,253, 0, 85, 55, 26, -230,213,116,171, 80,211,180,217,217,217,147,149,162, 22, 82, 46,230, 43, 60, 79, 92, 5,127,246,103,127,134,109,219, 76, 38, 19, - 14, 14, 14, 49, 77, 1, 24, 61,255,226,203, 58, 58,186,236, 26, 48,199,113,152, 78,167, 93,177,216,174,198,226, 56, 62, 67, 27, -148,239,159, 69,150,172,176, 76,131, 40,146, 92, 2,219, 22, 48,139,239, 73, 6,252,211, 79, 63,189,241, 90, 11,150, 75,177,179, -237,238,238, 50,157, 78, 25,246,119,152, 78,167, 24, 10,250,195, 0,215,181,137,179,156, 91, 55,239, 80, 82,224,218, 54, 69,217, -240,198, 27,111, 48,159,139, 6, 99, 56, 28,114,239,224,152,245,242,132,119, 62,250, 4,135, 15,102, 76,183,134,120, 97, 64, 81, -138,189,111, 60,238,115,239,254, 93,198,163, 45, 30, 60, 56, 98, 57, 23, 27,102, 63, 20, 18,228,238,206,132, 87, 94,123,133, 7, - 7, 95,163, 54, 44, 80, 46,181, 33,188,132,170,106,132, 70,218, 22,170,182,217,241, 15,140, 70,120, 29,117, 93,227,234, 59,216, - 82, 66, 46,109,155,102,203, 82,138, 52,139,169,139,154, 85,188,162,231,247, 48, 76, 24,246,251,152,150,193,241,225, 33,171,120, -197,176, 55,196,116, 76, 9,114,143, 87,132, 94, 72,156,136, 16, 0,160,223,235, 99, 90, 22,139,197,140,233,214,152,245,122,201, -231,254,159,255,192,123,255,218,247, 97,168, 70,198, 61,142, 75, 93, 75, 16,196,114, 57,239, 14,175,118,247,219,142,192, 91, 32, - 62,192,254,254, 62,179,217,140,193, 96,192,205,155, 55, 25, 14,135, 92,186,116,137,163,163,163, 78, 0, 81, 20, 5, 55,110,220, - 96,127,127,191,131,130,180,187,240,186,174, 59,140,108,235,121,221,220,193, 13,134,178,179,158,205,102,210,125,249,110,119,112, -223,190,125,187,203, 80, 14,130,160, 11, 88, 40,138,130,170, 46, 56, 60, 92, 50,234, 15,184,113,243, 46,151, 47, 93,212,107,136, - 62,121, 94, 17, 69, 43, 93,253, 46, 89,175,151, 93, 44,160, 76, 1, 68, 33,122,124,124,216,169, 22,219, 15,112, 83,228,214,102, -125,183,171,134, 83, 20,173,210,196, 57, 3,215,245,187,159,167, 21,120,217,182,121,166,195,193,104,206,170,194,141,166, 99, 76, - 83,159,245,140,191,217, 74,216, 78, 0,218, 67,180, 45,138, 54, 59,170, 55, 43,236,207, 90, 17, 79, 47,227, 86, 55,176, 41,226, -115,109, 19,163, 46,116,215,224,156, 65,252, 70, 81, 4,182,250,207,218,230, 90,109,131,161,225, 65,117, 37,151, 54,111,218,177, -158, 17, 11, 86,181, 48,229, 53,136,167,253, 57,218,215,213, 94, 40,109,119, 44,136, 93,163,203, 9,104,139, 38,199, 17,151,133, -229, 58, 68, 89,129, 1, 56,190,139,231,123, 12,123,190,132, 1,233,209,110, 94, 34,254,243,174,203,172, 72,210, 24,234,138, 48, - 16, 72, 82,123,136, 75, 39, 33, 33, 15,117,173,180,120, 52,237, 28, 20,242,235,228,249, 78,210,132, 40, 78,200,155,138, 32, 12, - 69,168,167,137,112,226,123,181,137,227,136, 60, 73,217, 82, 19,154,218, 32, 74, 98,140, 24,198,211, 17,142,227,146,166, 49,161, - 31,116, 63,115, 59, 77,243, 60,143,192,239,225,251, 62,113,150,130,198,192,182,184,205, 77,206,123,180,204,136,214,107, 48,132, -110,103,185, 54, 77, 41, 94, 99,215, 21,236,114, 94,213, 36,121, 70, 94, 84, 56,206,233, 78,191, 44, 75, 84,161,186,176,139, 86, -115,210,174, 65, 54,167, 54,237,116, 96,243, 57, 19,135,131,234,116, 37,109,170, 97, 7,179,169,196, 45, 97,217, 46,168,154,117, - 20,177, 92, 71,236,237,237,113,227,149,151,196,206,138, 28,140, 69,166,119,225, 58,140,164,245,233, 59,150,205, 42, 90,147, 52, - 9, 69, 41,105,119, 73,154,162, 44,155,225,112, 72,161,113,163,195,225,144,221,221, 93, 14, 15, 15, 59, 66, 91,170,127, 93,235, - 57,175,170, 74, 68,189, 27,175, 31, 67, 46,247,164, 73, 89,215, 53,101, 94, 96, 57,167, 24,222,117,146,118, 2,211,188,144,226, -199,118, 60, 48, 20, 81, 44,184, 98,170, 8,199, 11, 48,149,141, 82, 38,131,193, 0,207, 59,102,182, 90, 10,111,190, 57,157,124, -180, 86,101, 3,227,204,119,163, 61,255,218, 11,239,248, 88,130, 69,198,163, 17, 74,201,148,212,182, 12,124,199,165, 23, 6, 84, - 69, 46,216,223, 68, 82, 32,223,242,150,183, 48,159,207,187, 85,229,235,175,191,206,229,203,151, 89, 46,151,188,245,173,111,237, -206,185,219,183,111,115,253,250,117, 61, 41, 61,209, 64,161, 83, 43,173,157, 23, 20,101,197,157,187,247,186,117, 79,219,129,110, -166, 49, 74,114,153,194, 54, 43,202, 66, 51, 1,168,186,184,239,246,207, 19,129,117,197,185,115,231,216,221,157, 10,218,184, 47, - 83, 25,223, 11,153,205, 22,216, 78,128,161, 74, 92,223,194,118, 12,162,213,140, 50, 79,185,112,233, 33,206,239,187,140,198, 91, -188,242,242,117,194,176,143, 97,154, 28,159, 28,242,202,245,215,121,215,219,159,226,133, 23, 95,230,219,158,122, 27, 89, 90,144, -172, 35,109,223, 59, 98, 50, 29,113,112,112, 72, 20,173,112, 93,155,193, 96, 32, 86, 81,215,167,169, 13, 70,195, 9,182,229,208, - 24,138, 92, 36, 63,162, 61, 73, 18,202,198, 66, 41, 19,219,114, 57, 89,204,169,141,134, 65, 47,208, 63,139, 62, 79,107, 89,217, - 28, 30, 30,146,246,251,221, 90,194,113, 28,233,212,107, 42, 20, 38, 61,223,163,169, 4, 95,185,191,123,142, 91,119,238,176, 53, -153, 80,164, 9,231,247,247,184,119,112,151,192, 11,201,203,140, 60, 77,100,158,239,186, 44, 22, 43,138, 50, 35, 12,125, 12,195, -228,228,228, 8,165, 44,222,243,158,239,102, 60,158,114,120,120,128,105,218,184,174,176,112,119,119,183, 57, 58, 58, 97,186, 53, - 33,207,202, 46, 59, 58, 12, 67, 86,171, 21,219,219,219, 58,227, 55,224,254,253,251,221,165,215,126,217,238,222,189,219, 29,174, - 85, 85,177, 92, 46,113, 93,169,176, 31, 28, 62, 96, 50,158, 48,155,205,152, 76, 38,172,215,107, 38,147,137,182,160, 4,132, 97, -216,141, 16,197, 3, 27,147,101, 9,166,217,170,169,229,224, 88,173, 18, 29,165, 39,227,159,147,147,156,126,223,215,236, 98,147, -245, 58,145,240,142,104,197,229, 75,231, 89,175,151,186,211,150, 17, 79, 20,173,169,170, 83,231, 64, 28, 23,250,141,151,168,207, -229,114, 78, 24,134, 44, 22, 11, 44,219,236, 14,181, 65,127,208,253,172,134,162, 35, 35,189, 89,225,222,141, 44, 13,179, 19,192, -180, 2, 56,215,115,186,135, 95, 46,170, 55,165,170, 53, 85,199,169,119,180, 42,166,105,212,153, 75,249,205, 34,165,170,178,186, - 66,163, 85, 50,119, 94,219, 13, 75, 98, 59, 26,111,191,128,173,149,103,179,219,222,180, 56, 22, 89,138, 99, 25,184,174,141,235, -152,250,242, 16,177,150,162,194, 54, 79, 11,139, 86,191,208, 94,176,114,249, 42, 29, 45,139,206,119,215, 69, 17, 70,119,192, 11, -223, 64, 70,120, 93,103,191, 97,145, 49, 26,249, 57, 28, 75, 94,183,173,109, 89, 77, 93,161, 12, 25,243, 91,166, 65, 81,215, 52, -117, 73, 93, 85, 84, 72,231,218,160,217, 11,101,197,106, 29,163,104,176,116, 65, 18, 98,146, 23, 21,113,154,146, 38, 57, 37,101, -151,136, 87, 85, 18,165,106,152,134,230,142, 75,164,102, 85,137, 21,175,172,114,170,188,234, 34, 54,229,253, 83,250,179,171,197, - 14, 83,136, 88, 45,116,250,148,121,193, 56, 28, 10, 68, 38, 89, 19, 6, 33, 39,179, 4,101,214,212,105,132,101,217, 12, 52,206, -214,166,196, 51, 29,176, 20,142,165, 48,125,159,172, 40, 40,170,138,181, 6,208,216,182, 43, 81,174,250, 89, 72,178, 84,112,201, -141, 92, 46, 74,127,238,163,209, 8,219, 49, 41,244,107,109,119,200,174, 39, 62,247,186, 49,200,171, 26, 83,217, 36, 45, 21, 75, - 89,242, 89, 25, 85,183,134,235, 4,110, 90, 84,212,126, 94,237, 51,246,230,148,192,206,179,174, 11,162, 54, 44,197,104, 36,140, -167,168, 74,178, 34,167, 46,229,231,178,244,110,120, 54,155,241,208,197,221,174, 72,240, 3,151,170,108,136, 83,237, 0,169, 27, - 22,179,130, 52, 73,152,110,109,225, 56,234, 76,129, 81, 85, 21, 85, 83,208, 20,121,167, 53, 88, 46,231, 93,225,223,106, 46,148, -101,211,235,245,136,146,184,139,233, 21, 1,223,217, 73, 86, 94, 36,216,174,163, 19, 21, 26, 77,189,108,186, 53, 80,169,249, 29, -105,145, 51, 91, 46,200,179,130,222,160,223, 77,104, 44,203,166,200,115,214,235,152,254, 96,132,109, 59,148, 24,108,109,237,240, -224,100, 70,165,233,108, 53, 13, 77,158, 83,233,239, 67, 69, 69, 93,159, 90,120,227, 36, 99, 50,153,176, 88, 44, 25, 12, 6,108, -111, 11,231,188,215,235, 81, 85, 5, 71,247, 15,176, 45,209,198, 36, 74, 18, 54,227, 56,166,223,115,169,170,154,249,124,193,209, -209,241,233, 90, 68,119,217,182,229,118,162, 57,215,117,121,238,185,231,186,113,180,105,154,244, 2,151,170, 46,186, 21, 98, 89, -150,164,209, 82,236, 90,182, 73,158,197, 18, 59,234,137,131, 10,117,106,207,107,170,130,192,119,187, 85,113,211, 52, 4,190,172, - 80, 92, 39,232,108,119,101, 85,116,207,212,149, 43, 87,112, 92, 11,215,181,185,118,237, 26,223,248,198,235,210, 73,175,142, 56, - 62,233, 51,232,251,164,105,194,124, 46,163,123,219,234,241,202,203,175,179,142, 50,166, 91,187,244,122,125,198,211, 9, 94,207, -231,213,215,222, 96,203, 11, 41,139, 6,223, 15,153,205,142,216,218, 27,115,254,252, 57, 14, 14, 14,120,219, 91, 31,231,235,207, -189, 72, 89,200,196,175, 5, 60,165,105, 44,129, 49,147, 9,183,238,222,161, 40, 52,233,175,182,206, 52, 45,173,203, 3, 26,162, - 64,200,127,182,206, 94, 48,170,154, 40, 73,176, 77,133,157, 21,104,154, 46, 85, 13, 86,127, 16, 82,148, 37, 73, 28, 11,109,205, -130,119,190,243,157,252,250,191,250, 87,244, 7, 3,254,227,231, 63, 79, 89,150,204,230,199, 76,167, 83, 94,120,254,121, 46, 94, -186,132,161,171,251,235, 55,111,112,254,252,121,182,183,183,249,202, 87,190,196, 39, 63,249,111,121,223,251,190,143,159,253,217, -127,192,239,254,238,111,115,254,252, 69, 70,163, 17, 63,242, 35,127,147, 31,255,241, 31,101, 56, 28,147,166, 49,127,247,239,254, - 15, 60,255,252,243, 88,166,195,173, 91,183,248,216,199, 62,198, 15,253,208, 15,113,238,220, 57, 62,252,225, 15,243,199,127,252, -199, 68,145,228, 61,183, 23,188,239,251,252,204,207,252, 12,239,127,255,251,137,227,152, 31,251,177, 31,227,250,245,235,221, 62, -107, 54,155,177, 53,221, 34, 12, 67,126,239,247,126,143, 75,151, 46, 1,240,204, 51,207,112,255,254,125, 76,203,224,245,235,175, -242,139, 63,255, 11,124,240,131, 31,196,247,125,254,254,255,244,211,124,254,243,159, 35,207, 75,118,118,182,249,195, 63,252, 67, -170,170,226, 63,253,167,255,212,105, 8, 76,211,228,194,133,125, 62,254,241,143,115,245,234, 85,146, 36,225,163,255,224, 31,242, -167,127,250,167, 76,182,183,249,210,151,191,200, 39,127,239,147,252,213,247,254, 85,254,241, 71,127,158,103,191,248,103, 76, 38, - 19, 26,106, 38,227, 41,191,243, 59,191,211,237,118,126,250,167,127,154, 87, 94,121, 5,165, 20,111,220,184,206,199,255,213,175, -243,158,247,188,135, 95,251,181, 95,227,245, 55,174,243,137, 79,124, 2,211, 52,249,252,231, 63,207, 79,252,196, 79,240,228,147, - 79, 98, 41,115, 35,240, 66,199,187, 54,141,228,150, 43,177,149,136, 56, 78, 30,214,214, 22,216,217,254, 54,216,242,170,169,207, -116,225,101, 94,157, 65,227,110, 18, 4, 91, 97, 75,219, 65,182, 29, 83, 43, 20,108,247,182,109,103,146,101,153, 88,173,170,156, - 90, 89, 40,133,136, 26, 55, 46,244, 66,239, 91,101, 76,100, 96,121, 54,174,229,119, 95,250,170,170,164,138,246,125,150,161,199, -237,219,183,169, 1, 91, 41, 26,195, 16,117,108,224, 98, 34, 29,105,158, 23, 20,165, 4,218, 72,213,223, 30,134,116,133,141,196, - 88,170, 78,232, 88,215,122, 39,101, 26,194,250,214, 69, 73,217,137,153,154, 78, 95,208, 52,213, 25, 55, 65,165,137,110,178, 19, - 46, 48, 29,147,170,212, 23, 18, 21,117,237, 10,227, 32, 12,216,218,154, 16, 37, 25,118,108, 98,109,216,109, 48,108, 98,173, 4, - 15, 3,225, 44, 88,122, 4,111,233,168,224, 34, 77,201,154, 90, 72, 92,166,234,162,108, 77,109,225,236, 53, 62,166, 1,182,105, -176, 55, 29, 19, 69, 17, 59,211, 17,174,107,179, 92, 26,162, 67,169, 82, 74, 87, 46,121,179, 81,236, 76, 69,180, 89,150, 5,141, -149, 17,186,226, 81,119,188, 64,130, 89, 54, 46,203,246,146,108,167, 93,167, 93,178,252,172, 65, 16,144, 91, 22, 65,191,167,131, - 38,116,186,223, 6, 29, 49, 78, 50, 42,180,200,169, 23,162, 44,139, 52,207, 5,248,169,108,177,199,101,197,233,138,167, 44,207, -132, 54,181,148,182, 86,135,179,201,164,111, 71,216,213,198,132,169,253,125,218,238, 57, 77,197,194, 53, 91, 46,160, 31, 82, 38, - 9, 71, 39,115, 46,238,111,177,181, 35, 34,212, 56,141, 25, 79,182,168,242, 76, 70,164,185,104, 13,146, 56, 99, 54, 91,176,181, -181, 37,132, 60,211,214,145,182, 50, 93,204,242,130, 36, 90, 99, 15, 28,226, 40, 98,107,178,205,197,139, 23,153,205,102, 44,151, - 75, 34, 77,242, 59,147,185, 46, 93, 67,247,172, 85, 85,195,114,181, 34,236,247,116, 49,108, 97, 89, 53,150,233,136,125, 87,191, -255, 85, 85, 80, 22, 37,105, 20,107, 84,171, 79,150,164, 88,150,195,238,222, 57, 86,243, 25, 85, 85,118, 84,183, 94, 18,211, 15, -125,142,143, 15,120,245,245,235, 88,142,131,107,218,212,170,162,108, 10,253,158,105,118, 4, 70,247, 26, 13,195, 16,123,101, 89, -114,254,252,121, 86,171, 21,129,223, 35,142,100,100,237,232, 85, 84,154,198,244, 66,159,241,120, 76,146,150, 12,135, 3, 14, 15, - 15,201,178,172,155,100, 14, 6,125,110,222,190,197,238,238, 46,113, 28,115,251,246,109,170,170, 98,127,127,159,193, 96, 64,154, - 68,228,121,202,165,243, 59, 20, 69,214, 93,252,105,154,114,235,214, 45,142,142,142,244,110,221,211,108, 46,121,125,182,166,202, - 73, 83, 38, 77, 88, 93, 85,156, 63,127,158, 60, 43,241, 52,183,196,113, 60,198,163, 9, 7, 7, 7, 92,188,116,129,123,247,238, -113,239,222, 29, 86,171,136,251, 15,238,145, 36, 17, 85,101,224,185,125,124, 47,100, 50, 25, 99,219, 6,135, 71, 39,210,241,155, - 54, 89, 81, 49, 26,247, 57, 89,220,151, 93,126,158,114,101,235, 42, 47,190,244, 2, 85, 93,241,248, 91,223, 74,242,224, 4,229, -184,188,252,234,117,246,246,167,220,187,123,200,133,139,123,156, 63,127,129,215, 95,127,131, 71, 30,185,198,215,190,246,220,153, -230, 52,240, 4,229, 59, 26, 15,112,173, 35,178, 52, 38,203, 83,178, 82,145,229, 53,141,229, 81, 86, 6, 73, 26,117,235,203, 60, - 19, 1,174,163, 44, 60, 15,154,178, 33,138, 18,198,195,254,155,178, 46, 20, 86,150,151, 88,174, 3, 70, 70,146,231,248,142,203, -207,254,195,127,196,255,241,111,255, 29,191,245,219,255,134,191,243,183, 62,136,233,184, 40,211,230,100,177,196,118, 60,106, 67, -225, 90, 54, 77, 93,233,157,163,197, 98,190, 98, 60,158,242,245,231,158,231,163, 31,253, 40,158, 27, 80,215,176, 94,137, 8,229, -255,250,131,255,155, 79,126,242,147, 40,195,226,202,213, 75,252,214,255,246,111,248,238,239,254,110, 65, 21,246,122,220,187,119, -143,239,251,190,239,227,219,191,253,219,249,213, 95,253, 85,222,253,238,119,119,209,168,109,119,109,154, 38, 47,191,252, 50, 63, -255,243, 63,207, 51,207, 60,195,175,252,202,175,240, 35, 63,244, 55,160, 46, 49,141, 6,199, 18,175,251, 47,253,210, 47,241,235, -191,254,235,124,230, 51,159,225,201,167,222,202, 39, 62,241, 9,190,243, 93,239,198, 86, 6,182, 50, 56, 62,122,192,187,191,227, -219,120,247,187,191,147, 95,255,248,111,240, 93,127,229, 47, 99, 91, 6,191,249,155,255, 43,191,252,203,255,156,207,126,246,179, -252,224,127,253,215,233, 7,125,134,189,190,252,158,255,244,159,240,155,255,250,227, 60,255,252,243, 92,187,118,141, 95,254,165, -127,198,143,252,200,143,136,128,195,182,184,115,243, 38, 63,244, 55,254, 58,190, 31, 50,232,133, 26, 52, 3,191,242,203,255,140, -223,254, 55,255, 59,159,250,212,167,248,208,135, 62,196, 63,250,135,255,128,159,250,169,159, 34, 47, 37, 83,248,198,235,215,249, - 27,255,226, 87, 24,244, 71,252,235, 79,252, 38,191,247, 59,191,199,167, 63,253,105,126,224, 7,126, 64,194,106, 26,169,142, 91, - 75,147, 82, 18,210,210, 84, 18, 33, 88, 81,106,148,169, 8,218,219,247,193,181, 37,135,221,106, 26, 44,211,162,105,106,109,183, -171, 58, 20,108,211, 52,228,177, 68,118,182,252,231,190,158,102, 40,213,208, 52, 37, 84, 41,161,239,162,144, 3,138, 58,167,201, - 75,108,199,164, 23,122,164, 73,130,213,212,244, 92,147,129,223,211, 2, 35,177, 9, 89,150,194, 48,173,174, 99,142,162, 8,213, - 52, 40, 29,167,216,162, 21, 61,111,168, 87, 18,142, 14,206,136, 8, 3,135,237,173, 17,166, 1,179,197,156,170, 40,233, 13,250, -120,142, 79,148,172, 89, 45,150,100,133,216,115, 12,211, 70, 25, 6,166, 97, 96, 89,138,172, 41,169,138, 12,163, 81,168,198,192, -168,114,253,254, 24,148,133, 6,125, 24, 22,166, 22,112,158, 78, 46, 64, 41, 61,206,167, 33,215, 9,101, 89,145, 82,163,197,123, -182, 69, 89,200,191, 87, 70,131,107, 26, 56,142,173, 81,179,224, 88, 6,131,192,195,177,109,138, 44, 98,119, 60, 68,149, 49,117, - 59,222,211, 88, 94,133,236,124, 7, 97,143,245,122, 37, 44,251,162, 96, 52, 28,138,176,173,174,133,219,109, 89,148,149, 48,235, -139,178, 68,209,224,186, 14,138,154,120, 53,199,115, 37,139,121,208,243, 24,244, 68, 8, 85,100, 34, 2,115,109,147, 50,173,240, -245, 65,232,251,174,126, 46, 50,173,147,200,201,243,170,179,186, 41,189,151,203,243,130, 52,215,150, 82,211,198,210,254,112, 73, - 86,148, 75, 84, 66, 96, 2, 76,199,195, 53, 61, 76,251, 20,211,155,166, 41, 85, 89,227,123, 22,166, 97,146,233,192, 14,217,227, - 43,168, 43,226, 68, 46,168, 56,139,207,140,204, 79,201,134,154,195,176, 33, 24,108,193, 46,155,132,191,166, 57,157,226,212,117, -201, 96, 52, 36,203, 19,170,170,192, 52, 13,138, 34, 39, 74, 34,140, 38,103,107, 60,228,240,228,152,146,183, 96,121, 62,182,235, - 48, 13, 29,146,245,146, 65, 47,192,115, 76, 22,235,181,232,104,234, 74,186,223,126,129,101,187,152,202, 32,240, 66,154, 90,192, - 40,212, 50,145,169,138,146,126,216,227,238,157, 91, 92,123,228, 45, 92,187,118,141,187,119,239,210, 40,131,178, 42, 58,206,135, -178, 28,162, 40, 33,203, 10,221,145,214,172,163,152,178,174,153, 45,151, 29,226,185,169,141, 78, 92,167,148, 69, 93,198, 40,195, -160,204,114, 86,235, 5,231,246,246,137,163, 53,171,229, 2,163,110,184,113,235, 62, 15, 95,189, 66,150, 46,121,229,213,151,120, -228, 45, 87,113, 28,155,241,208,229,219,158,126,140,131,219,183,137,226, 24,211, 13,112,149,131,225, 66, 94,102, 68,122,172, 95, -100, 5,142, 99, 11,217,179, 40, 59,178,217,131,251, 15,164,128,235,245, 57, 60, 60,228,210,165, 75,120,174, 35,145,165,166,137, -167,225, 50, 96,146,166, 49, 65,224,203, 4, 50, 90,201,234, 44, 73,177, 93,143,162,146, 98,237,220,133, 11,220,190,125,155, 91, -183,110, 49,153, 76,120,248,218, 85,118,183,183, 24,245, 61, 20, 37, 69, 94,113,116,116,196,157, 59,247,240,253,144,225, 80,184, -244, 23, 47, 93, 17,116,175,113,138, 7,111, 11,191, 40, 17,234,163, 50, 45,238,222, 19,143,118, 93, 30,118, 62,238,162,168, 56, - 62, 62,150,233,158,109,179,183,183,207,193,193, 1,247, 14,180,117, 57, 90,227, 88, 46, 65,208,103,185, 76, 89, 71, 57,126, 24, - 10, 39,160,172,137,210,146,147,197,146,218, 52, 40,200,240, 66,139, 7,135,183,177,172,154,243,187,123,220,191,115,159, 11,123, -231,121,227,222,125,202, 34,197, 13,124,182,119, 70,188,240,194,171, 60,245,228, 19, 12,123,125,230,243, 37,239,120,250,109,124, -241,139, 95, 36, 78, 99,118,118,118, 41,202,146, 55,110,223,230,187, 46,254, 37,162,117,198,254,206, 62, 55,239,222,199, 84, 16, -120, 46,135,139, 37,158, 55,192,208, 40,231,229,114,201,120, 48,164, 44,107, 12, 85, 3, 57,118, 96,179, 92,174,169,203,188,131, -124,249,190,207,254,254, 57,140,199, 30,125, 75,211,162, 2,135,195, 33,199,199,199,220,189,123,151,171, 87,175,118,163,212,231, -158,123,142,107,215,174,145,101, 25, 47,191,252, 50,239,122,215,187,152,205,132, 68,119,253,245, 27, 92,187,118, 13,203,178,184, -119,255, 62,219, 91, 91, 93, 94,242,243,207, 63,207,149, 43, 87, 80, 74,241,142,119,188,131, 95,252,197, 95,100, 58,157, 18, 69, - 17, 79, 60,241, 4,231,207,159, 71, 41,197,107,175,189,198,227,143, 63,206, 82, 63,220,215,175, 95,231,226,197,139,221, 46,106, -189, 94, 51, 28, 14,121,233,165,151,120,226,137, 39,186,234,253,203, 95,254, 50, 79, 63,249, 86,154,166,225,213, 87, 95,229,226, -197,139,100,133, 60, 28,223,248,198, 55,232,245,122, 24,170, 97,127,127,159,183, 63,249, 54,162, 40,226,193,193,125,174, 92,185, - 66, 83, 21, 20, 85,195, 27, 55,110,243,232,227,111,165, 44, 75,174,191,241, 26, 79, 63,253, 52,119,239,222,229,226,185,243, 60, -251,236, 23,184,116,233, 18,105,150,112,235,214, 45,138,162,224,224,222,253,206, 38,244,222,247,254, 85, 44,165,120,254,149, 87, -120,242,209, 71,187,200,197,158, 46, 82, 92,215,229,217,103,159,229,123,190,231,123, 68,145, 89,215,124,229, 43, 95,225,169,167, -158, 66, 89, 38, 95,255,139, 63,231, 45, 15, 63,140,194,192,180, 28, 94,120,225, 5, 30,121,228, 81,148,109,209,239,247,121,246, -217,103,249,246,119,188,179, 83,129, 43, 26,124,215, 70, 25,160, 26, 80,182, 69, 82,150, 2, 25,209, 64,134, 50,215,157,176,105, - 2, 13,131, 80,192, 5,149,254,240,187, 24,219,178, 34, 45, 36,213,174,209,206,130,162, 40, 48,245, 62,202,178, 68,129,111, 40, -225, 37,215, 29,240, 64, 14,102,219,209, 10,223,188,229,117, 27,223, 2,184,145, 52, 53,249,245,101, 81,119,251, 54,215,117, 9, - 67, 73,253,107, 74, 41, 16, 90, 62, 65, 85, 54,186,210, 31,104,117,171,224, 54,243,172,236,212,175, 45,227, 57,207,115,182,118, -118,187,135, 90, 66, 63,236, 78, 76,211, 30,250, 81, 20,201, 30, 84,219,157, 90, 5,105,173, 59,150,179, 90, 0, 61, 78,175,228, -215,180, 19,146, 22, 8, 84,116,171, 14,217,255,154,134, 65, 47, 8,113,109, 9, 10,242, 44,139,233,104,200,120, 52,192,213,129, - 70,203, 85,196,122, 29, 75,130,156, 50,169, 49, 4, 95,172,213,181,121,150,202,179,170,121, 9,171,213,138, 44, 59,237, 94,218, -125,104,251,186, 91, 80,211, 98,177,192, 50, 96,107,123,210,165,151,157, 10,197,228,125,107,243,152,187, 81,164,182,244,149,101, - 73, 86, 84, 20,141, 60,123,182,125,186, 82,217,236,216,171,242, 84,160, 38, 81,162, 50,237,200,178,140,178,174,177, 93, 95,231, - 19, 72,154, 97, 75,145,107, 21,243, 74,127, 30,155,194,183,205,245,201,124,181, 60, 35,140,107,167, 64,237,136, 86, 98, 60, 79, -115, 36,218,220,237,118,138, 86,214, 13, 69,145, 49, 8, 66,146, 36, 98,107, 58, 22,138, 93,191, 47,154, 29,199,194, 82, 10, 83, -213, 12, 67, 31,207,172,249,182,167,158,224,177,135, 46,241,141,231,254,130,104,177,228,226,249, 11, 84, 53,220,190,125,155, 70, - 41, 92, 47, 16,119,139,166,118,217,158,240,198, 77,203,166,204, 11,226, 84, 46,117,211,118, 24,244, 71, 18, 93,154, 38,156, 63, -127,158,249, 98,197,141, 91, 55,121,238,249,111, 16,134, 33, 24, 50,242, 79,178, 74,107, 9,164, 81, 73,226,148,198, 0,101,218, -148,154, 81,208, 52, 13, 89,113,170, 81, 41,203,146,104,181, 20, 97,102, 35,182,185,115,122,223,189, 53, 30,113,225,194, 37, 22, -179, 21,239,120,199,211, 28, 63,184,195,124,113,200,183, 61,253, 86,122,125,143, 44, 73, 81,202,226, 75, 95,254, 11,238,220, 61, - 2,195,166, 86, 38,113, 26,177, 76, 86,216,174,104, 99, 22,179,165,254,179,106, 61,213,147,149, 66, 75,217, 73,147,152, 71, 30, -185,198,237, 27, 55,201,139,152, 11,123,123,212, 77,206,246,116, 34,162,228,162,196, 84,246,105, 86,124, 42,205,151,227, 74,116, -118, 85,148, 12, 6, 3, 66,189,223,238, 5, 1, 39, 39, 39, 44,150, 51,174, 92,186,200,219,159,124,140,187,183,223,224,246,173, -187,220,191,127,159,131,163,227, 78,164,104, 24, 6,111,123,242, 73, 1, 19,233,166, 67,184,231,250,181,233,117, 78, 69,131,161, -181, 65, 52,213, 25,231, 77, 16,244,116,216,147,216,142,143, 78,230, 2, 21,243, 3, 12, 74, 84,157,115,110,111,135, 85,148,113, -116,114, 76,111, 48,198,178,109,234,198,100,177, 94, 49, 24,140, 8,194,144, 60,203, 24,141, 70, 20, 69,214, 69,215, 38,113,198, -100,180, 35,118,216, 44,230,234,229,243, 60,241,248, 35,220,191,115,147,171,151,207, 51,236, 7, 44, 22, 11,108,219,228,249,231, -159,231,165, 87, 94,163,215, 27,144,102,114,238, 62,250,232, 91,200,162,136,235,215,175, 83, 99,146,228, 21,181,237,112, 50, 95, - 83, 52,194,149, 56,153, 45, 80,182,141,107,186, 58,230,184, 16,238,188,235, 8,155, 63,240,216,219,217,234, 44,153,143, 63,250, - 24, 22,208, 65,248,163, 40,194,182,109, 33, 7,249, 62,179,217,172, 59, 12,218,209,161,227, 56,157,141, 99, 48, 24,116, 94,240, -170,170, 72,147,164, 43, 4, 22,139, 5, 67,109, 37, 43,203,146,223,253,221,223,229,153,103,158,225,107, 95,251, 26,253,126,159, -175,126,245,171,120, 90,193, 94, 85, 82, 81, 13,135, 98,141,107,171,241, 54, 83,189, 5,195,132,189, 94,167,144,108,127,136,227, -147, 25,219, 91, 83,130,160, 39,126,118,125, 56, 60,243,204, 51,156,156,156, 48,153,142, 56, 60, 60,228,226,185,253,206, 14,145, - 36, 9, 59, 91, 19,230,203, 53,105, 26, 83, 21, 25,174,227, 16, 45, 87, 44, 78,102,184,150, 73,158, 37,184,142,131,239,121, 36, -113,140,107, 59,124,247, 95,249,203, 52, 27, 35,231,109, 93,160, 28,222,185, 67, 16, 4, 58,106,113,201,236,248,152,160, 39, 66, -163,205, 60,223,214,214,182,183,183,163, 63,108, 91,236,118,134,140,169,171,186,224,137, 39, 30, 39,142, 99, 9,253,176,109,194, - 48,192,180, 12,138, 44,215, 8, 66,151,192,247, 48,145,157,154, 93, 85, 82,137,235, 93,122, 82, 85,100,105,130,163, 78, 57,202, -117,115,106,203, 10,253, 83,203,146,164, 35,217,228, 69, 65, 89,229, 34,106, 74, 51,237, 52,144,135,200,118, 68,140,200, 6,202, -182, 83,231,154, 14,166,215,156, 81,141,183, 99,252,110, 95,109,153, 29,253,110,211,134,180, 25,199,234, 56,214, 41, 60, 71, 43, -185, 27,101,144, 87, 37,235,117, 68, 28,199, 34, 68,209,118,151, 52, 77, 73,116,184,208,122,189,102, 48, 24, 96,187, 46,105,158, - 19,173,230,221,202,196,247,253,142,131,111, 89,206,153,157,111,251, 90, 54,237, 99,237,104,189, 21,235, 73, 17, 33, 69, 64,173, - 35, 97, 55, 53, 7, 18, 4, 98,146, 21,185, 48, 25,154, 10, 67, 91,153,164, 83, 56,237, 40,125,223, 39,205,196,226,212,116, 97, - 51, 66, 15,244, 3,147, 32,236, 73, 55, 91, 55, 96, 40,108, 71, 64, 20,134, 50,197,154,104, 9,235, 90,105,209,144,237, 24,244, -250, 3, 1, 59, 89, 30,121,101, 48, 91,202,119,199,243, 2,234,162, 32,206, 42,150,145, 92,224, 21, 22,182,103,226,248, 62,110, - 48,144, 11,164, 44,181, 80,203,234, 10,163, 14,126, 83,215, 66, 61, 67, 8,136,117, 13,149,134, 5, 24,166,137, 97,138,227, 67, - 58, 74,163,123,207, 54, 63,215, 70, 91,232, 78,199,205,213,183, 96,143, 55, 71,135,155,249,233,109,209,101, 24,205, 6,119,252, - 52,224,163,235,218,170,114, 99, 85,114, 74, 61,108,139, 46,101, 90,154,201,111, 98,160,176, 76,139,187,247, 14,120,199,147,111, -195,245, 66,150,139,136, 74, 57,212,212,152,174,143, 31,244, 48, 44,155,229,225, 49,217,201, 76,166, 86,165, 36,226, 57, 94, 64, - 93,150,172,227,148,166,170,176,204,146,245, 42,102,103,103, 7, 47, 12, 88, 46,151, 4,161,207,195, 15, 95,229, 27, 47,190, 32, -194, 40, 79,104, 97,102,137, 6, 78,105, 33,166, 78,102, 44, 75, 9,196, 50, 77,251, 12,110,187,253,231, 22, 62,213, 84, 69,119, -118,197,113,204,205,213,146, 32,232, 81,100, 85,103, 3, 54,173, 41,135,135,135, 20,229, 0,207,177,153,205,142,121,226,137, 39, - 48,237,235,172,214, 9,113, 94,144, 21, 41,139,197,130,176, 31,116, 96,170,150, 5,145,231, 57,158,239,116,197, 85,211, 52,204, - 78, 18,190,254,245,175,147, 39, 41,147,169,136, 7,123, 97,175,131,200,148,165,112, 33,218,117, 72,123,166,155, 27,106,108,211, - 52, 89, 69, 17,190, 43,251,245,209,104, 68,211, 52,108,109,109,241,229, 47,127,153,197,201,113, 55, 41, 76,146,172, 3,228, 56, -142,195,107,175,190,122, 6,152,211,234,122, 76,211,208,254,109, 69,221,212, 80,213, 26,131, 91,117,205,160,136,166, 75, 44,203, -193,243, 61, 38,147, 9,211,237, 93, 17,112, 54, 13,161,239,210,239,185, 68,171, 5, 55,111,223, 39, 47, 11, 28,207, 99, 54,159, - 19,132, 67, 93, 36,187,120,174,203,160,223,231,238,221,187, 92,185,114, 73,248, 45, 94, 8,141,197,116,107,135,157,237, 61,238, - 31,220,230,245, 55,110,226,218, 22,142,101, 48,155, 47,201,178,180,179, 63, 94,186,242, 16,105, 94, 50,159, 47,169,106, 41,116, -142, 14, 15,121,226,209, 71,249,234, 87,191, 74,216, 31, 81, 20, 57,202, 18,193,219,122,189, 36, 28, 78,168,235,154,190, 78, 10, - 12, 66, 79,163,154,107, 93,224, 84,248,158,172,208, 44,125, 46,157,204,103, 88,155,241,154,173,130,238, 43, 95,249, 10,239,125, -239,123,249,220,231, 62,199, 15,254,224, 15,146, 36, 73,167, 80,127,240,224, 1,223,251,189,223,203,151,190,244, 37,126,224, 7, -126,160,179,247, 24,134,209, 93,184,173,167,112,185, 88,156,185,164,143,142,142, 40,203,146, 31,253,209, 31,213, 34,179,136, 60, -207, 5, 39,233,121, 29,206,181,237,196,218, 47,169,235,186, 76, 38, 19,234,170,226,135,127,248,135,249,195, 63,252, 67,222,247, -190,247,241, 71,127,244, 71,140, 52,220, 98,181, 90,105,148,164,205,103, 62,243, 25,222,255,254,247,243,233, 79,127, 26,219,182, -249,206,239,252, 78, 94,248,250,115, 12, 6,146, 63, 60, 26,141,164, 72, 8,250, 12, 7, 3,138, 34,131,186,225,107, 95,251, 10, - 63,250,129,191,201, 31,252,193,239,243,158,247,188,167, 19,175,236,237,109,243,165,103,191,192,143,255,232,127,195,191,255,247, -255, 39, 65,224,241,200, 35,215,248,234, 87,191,138,227, 72,140,102,171,210, 12,195,144,126,191,143, 31,134,204,231,115,254,228, - 79,254,132,247,189,239,125,124,238,115,159,227,253,239,127, 63, 47,189,244, 18,119,239,222,229,210,165, 75, 40,106,198,195, 1, -158,231,241,224,193, 17, 55,174,191,193, 59,222,249, 52,207, 62,251, 44,223,241,174,239, 66,249, 14,253, 65,136,165, 12, 10,219, -166,172,114, 6,189, 30, 65,224, 65, 85,147, 87, 37, 69, 42,185,221, 24, 13,134,230,131, 7, 65, 64,232,249, 18, 65,171,191, 88, - 74,163,122, 55, 83,244, 2,207,161, 70,233, 48, 28,173, 32,173,234,110, 60,239, 56, 14,243,197,137, 56, 18,244, 65,221,142,237, - 55, 61,212,237,179, 33, 19, 20,217,233,119, 66,159,110, 92,118,122, 89,182,191, 71,150,101, 20,105,138, 95,185,221, 65,221,230, - 72,183,158,213,178,172,206,236, 90,187,105,131,235,117, 32, 31,215,117, 49,181,235,161,155, 16,104,161, 9, 24,250, 82,117,207, -112,204,109,219,214,151,126,211,137,179, 54, 51,225,219, 75,189, 77, 16,227, 63,147, 76, 39,157,168, 37,226,172,186,162,169,196, -182,181,138,147,238, 98,108,139, 98,215,115,201,171,152,170, 16,241, 83,221, 64, 85, 87, 26,141,107,158, 65,234,182,144,162, 86, -113,110,188, 73, 12,214, 49, 31, 92, 71,248, 5,166, 34,202, 50,226,188, 68, 57, 30, 94,207,161,174, 26,209, 53, 56, 30, 77,147, - 81, 52, 6, 69, 99,160, 16, 75,162,132, 27,193, 42, 90,157, 41,106, 10,173,177,104, 59,245,150,254,102,234,139, 95, 68,164, 43, -233,254,221, 0,215,245,191,133, 90, 86, 85, 18, 97,218,178,242, 55,247,228,237,251,182, 73, 69,108,159,139, 77, 7, 72,171,144, -143,227,245, 25,223,114,251,123,116,145,196, 8,193,176,157,184,108, 62, 99,166,105,118,160, 32, 44, 83,131,132,224,248,104,206, -241,209,140,225,112, 76, 94, 42,150,177, 92,138,195,233, 14, 89, 94, 74,194,150,235,201, 36,203,116, 4,142, 19,167,120,181,238, -166,117, 6,185, 97,100, 12,123,226,239,182, 61,151, 59,119,238,112,237,145,183, 48, 28, 12,120,228,225,107, 92,191,121, 3,106, -105, 74, 28,207,208,231, 93,137,105, 89, 24,134, 64,131,202, 26, 93,236,216,122,213,147,159,129,233,100,137,172, 47,171, 34,235, -166, 31,151, 47, 95,102, 57, 59, 17,106,165, 35, 90,140,249,234, 4,215,245, 88,175,231, 40, 19,122,123,251, 66,184, 67, 38, 35, - 89,150, 17,197,137,232, 54,148, 73,150,200, 74,201, 82,182, 46, 60,229,215,216,142, 71,158,131, 99,217, 58,243,124, 34, 19,165, -173,137, 88,200,178,140,221,189, 41,203,249, 66, 11,148,253, 83, 53,186,101,225,104, 65, 98,155, 57,229,135, 79,184,195, 0, 0, - 23,234, 73, 68, 65, 84,121,167, 68, 53,128,123, 7,247,217,221,222,225,177,199, 30, 99,111,119,155,197,201, 33, 43, 53,235,188, -242,231,173,211,226, 70, 38, 78,156,129, 0,181,207, 13, 8, 0,199,245, 92, 60,203,196, 49, 45, 76, 75,220, 10,190,239,211,239, -247, 59, 29,150,176, 25, 32, 47, 10,238,221,187,207,122, 45,223,183, 97,255,188, 52, 99, 85,205, 91,222,210,231,202, 67, 87,113, -108,159, 47,125,245, 43,172,163,132,120,181,102, 56,180,187, 41,210,114,185,100, 60, 30,119,100,211,245, 58,230,249,231,159,167, -170, 26, 92,215,164,215, 27, 48, 28, 79,240, 92,139,176,231,179,187, 51,161,170, 75,234, 82,154,140,157,157, 29, 12, 67,158,201, -213,114, 65,230, 8,219,125,107,107,139,149, 70,248,110, 6,154,153,134,194, 54,173,238,153,143, 99,113,171, 88,150,169, 83, 22, - 79,145,225,104,184,219,106, 25, 97,181, 35,173,245,122, 77, 20, 69,244,122, 61,126,238,231,126,142, 79,125,234, 83,252,196, 79, -252, 4, 95,252,226, 23, 73,146,132,193, 64,170,251,143,124,228, 35,252,198,111,252, 6, 71, 71, 71,252,254,239,255,126, 87,161, - 21, 69,193,116,107, 75, 70, 75, 73,194,133, 11, 23,186,170,205,178, 44,126,225, 23,126,129, 63,248,131, 63, 32, 73, 18,126,235, -183,126,171, 59,156, 54, 89,210,109,133,222, 34, 15,231,243, 57,159,253,236,103,249,192, 7, 62,192,131, 7, 15,136,227,152,167, -158,122,138, 15,125,232, 67,184,174,203, 79,254,228, 79,210, 52, 2,214,240,130,128, 82, 31,162, 31,249,200, 71,248,149,127,241, -207,249,201, 15,253,247, 84, 69,201,103, 63,247, 25,158,127,238, 47, 58, 52, 43,192,229,203,151, 73,211,148,245, 98,129,239,185, -156, 28, 30,243,211,255,227,223,231,211,159,250,119,124,248, 67,207,240,255,253,241,159, 98, 91,138,166, 42,120,248,234,195,252, -194, 63,254, 40,255,242, 95,254, 47,252,183, 63,246,227, 64,205, 23,190,240, 5,110,190,113, 93, 95,150, 38,139,197,172,251, 18, -252,218,175,253, 26, 31,248,192, 7,168,170,138,127,246,177,127,194,199, 62,246, 49,254,187,191,253,183, 88,175,215,124,240,131, - 31,164, 23,120,172, 22,179,238, 75,122,114,114, 68,150, 37,252,189,191,247, 83,124,252,227, 31,231,153,191,243,183,249,194, 23, -158,101,249,224,128,166, 42,101, 47,109,137,191,188,237,130, 74,125,248,231,105, 76, 85,228, 18, 65,137, 77,232,187, 88,253, 16, -211, 80,148,185, 88,116,114,101,208, 84, 66,174,146,176,166, 6,163,169,193,148, 68, 38,148,209, 9,145, 42, 61,254,171,170,170, -139, 40,180, 44, 11,195,178,207,116,169,157, 5,206, 48, 40,242,156, 68, 7, 61,152,161,169,249,244,218, 79,156,231,146,143,110, - 55,152,150,131, 99,123, 29,126, 52,111,133, 79,181,129,101, 74,103, 80, 42, 81,174,103,113, 78,154,102,146, 50,181,129,193,173, - 57, 77,234, 2, 8,122, 61,202,186, 38,213,151,199,116, 58,197,178, 44, 86,171, 53,171,213,138,173,237,173,110,236,222,118,129, -242,190, 91,128,162,168, 50, 50, 29, 50, 82,111,136, 8,171,170, 33,207, 75, 57,208, 55, 34, 65, 13,195,236, 68, 59, 34,202,147, - 64,145,208, 10,161,145,206,177,170, 27,138,198,192,178,108, 25,221,246,132,247, 96,216, 46,141, 25, 81, 86,167, 66, 60,154, 74, -168,104, 40, 74, 33,228, 80,214,154,240,135,146,212,193,178,198,168, 26, 77, 79,131,188,172, 73, 83, 25,113, 27,150, 75, 81,156, - 6, 49, 97,172,201, 11, 61, 57, 41, 96,181,150,238, 78,169,140, 36,173,206,196,123,230,185,240,215,219,207,115,243,146, 85,234, -212,193,144, 87,149, 20,117,160, 49,192, 18, 77,105, 53, 53,119,238,220, 17, 85,252,198,136, 92, 14, 96,153,240,100, 27,246,180, -174,123, 86, 74,175, 51,106,198,158,219, 17,245, 54, 63,215,118,194,215, 54, 27,158,231,117,108,140,205, 52, 64, 17,221,169, 83, -110,128, 82, 50, 57,168,229,249,110, 45,159, 77, 93,234,204,116,113, 62,220,184,121,151,199, 31,123,132,123, 15, 22, 84, 52,216, - 40,146,162,226,240,232,136,178,168, 53, 63, 35, 36, 78,115,114,125, 40, 43,211,213, 60,251, 16, 67, 89, 52, 26,123, 90,150, 37, - 94, 24,116, 78,156,178, 44,217,218,154,240,218, 27,215,233,133,125,237, 23,151,181, 92,221, 24, 34,238, 44,100, 98,147, 68,107, - 93,120,211,173, 85, 54, 5,129, 6,218,206, 71, 45, 33, 45,165, 8,226,168, 4,173, 29,250, 33,219,219,219,124,253,207,191,132, - 97,212,236, 76,251,196,177,124, 22, 59, 59,123,156, 28,207, 8, 92,135,166, 42,137,150, 11,166, 59,219, 76, 38, 19,142, 78, 14, -101,252,191,225,172, 57,117,209, 20,221,165,222,212, 98, 7, 59, 60,184, 39, 93,103,146,240,194, 11, 47, 48, 30,142,206, 92,178, -202,172,207, 88, 88,197, 53, 42,175,185, 21,238,218,182, 77,180, 90,114,116,114, 44,132,192, 34, 99,107,123,155,237,237, 41, 97, - 24,118, 49,175,237,179, 28,199, 49,215,175, 95,239, 26,199, 86,196,219, 78, 63, 77,211,164,110,228,153,178, 29,125, 25, 98, 96, -219, 38,129,235, 9,127,101, 60,102,157,196, 44,151,107,202,170, 97, 52, 26, 19,199, 49, 47,190,248, 34,127,242, 39,215, 73,226, - 53, 77, 89,128, 41, 97, 74,187, 59,231,136,210,132,201,116, 27,219,117,200,243, 84,160, 99,113,194,213,171, 87,241,125,159,233, -116, 10,149, 88,165,253,112,196,173,155,119,168,178, 10,211, 50,184,125,255,128,225, 32, 32, 47, 51,178,178, 96,208,243, 24, 14, -250,172, 15,143,105, 26,131,209,104, 64, 93,151,242,189,113, 2,230, 39, 51, 30,127,226, 81,190,244,149, 63,151, 60, 6,195,192, -182, 20,189, 32, 20,103, 75, 24,146,233,125,249,106,181,194,119, 93, 64, 38,161,150,107,115,124, 50,199, 48, 21,187,225, 16,211, - 20,167,137,241,246,167,159,108, 22,139, 69,167, 58,110, 19,116,218, 47,234,169,117, 8,142,143,143,217,217,217,233,184,228,251, -251,251,172, 87,113,247, 69, 60, 58, 62, 98,119,103, 23, 52, 42,178,173,214, 91, 31,167,160, 80,227,206,178,182,249, 69,108, 59, -163,123,247,238,117, 31,240,209,209, 17,163,209,168,155, 20,248,190,143,167, 49,140,113, 28, 51, 30,143, 89, 45,196,186,182, 88, - 69, 93,215, 86, 20, 5,142, 39, 31,124, 18,201,235, 59,183,183,195, 98, 49, 35, 12,116,192,132,109,118, 95,200, 40,138,240,189, -144, 40, 94,209, 15,123,248,161, 71,150,228,164,169,188, 86,223,119,181, 66,217, 36,244, 67,202,186,228,238,237,187,216,142, 67, - 93, 67,111,208,151, 61,151, 46,106, 90,178, 93,203,180,223,222,222, 38,138, 34,170,170, 98, 50,153, 72, 24,133, 45,170,214, 52, - 21,171, 80,154,202, 94, 85, 48,185, 9,127,237,175,125, 47, 63,248,131,127,157, 15,127,248,195,184,142,116, 66,138,154,192,243, - 81, 10,138, 44,147,136, 62,203, 38, 78,101, 28,216,142,156, 7,131, 94,231,149,110, 53, 12,169,238, 88,218, 29,113, 93, 22,148, -117, 69,148,136, 47,182, 45,178, 90, 44,164, 97, 72,229, 93, 86, 98, 55,164,170,181,136,198, 58, 51,126,246, 92,193,109,174, 86, - 43,193, 46,234,189,106, 85, 73, 80, 76,187,150, 40, 52, 48, 65, 25,167,194,185, 52,139, 9, 61,175,179, 3,137,213,166,209,157, -186,236,223, 13,204,142, 93, 80,150, 37,121, 89,117,161, 31, 89,150,201,207,174,171,250,166,105,232,247,135, 58,244, 67,124,194, - 23, 46, 94,212,118,150, 82, 51,200, 35, 29, 39, 42,239, 69, 89, 23,221, 33,210,250,188,219,160, 25,177,114,101,103,114,233, 79, -147,246,132, 93, 95, 22,149,206,122,118,241,108, 27,215,177,112,117,232, 14,181,228,214,247,122, 61, 57,208,146,140, 40, 78, 37, - 90, 83, 35,127,107, 13, 7, 10, 60,159,197,106, 41, 93, 84, 33, 17,152, 65, 47,196, 82, 38, 81, 18,163, 48,112,125, 15,163,129, -162, 42, 41,178,156, 36,203,197, 82,103,152,221,115,223,118, 68,237,132,203,182,237,174, 91,222,236,168,187, 36,191, 74,176,179, -155, 20, 55, 41,216, 78,147,209,218,177,106,158,231,152,202,238,254, 89,206,140, 81, 55,170,109,223, 67,185,156, 74,157, 36,118, - 54, 29,177, 61,220, 91,151,130,229, 90, 28, 30, 30,118,136,229,205, 46,117,181, 90,225, 56, 86,167, 45,104,119,233,155,160,160, -147,249, 76, 64, 28,166,194,243, 36,115, 91, 86, 64, 22,166,178, 49,117,162,162, 66,198,173, 14, 13,174, 5,131,208,229,187,255, -202,127,193,127,248,252,127,100, 56, 28,234,226,250,164,155,130,164,105, 42,190,123, 75,126, 63,199,178,233, 13,250,132, 65,191, -195, 23, 55,181,100,156,143, 7, 67,252, 94, 40, 99,101, 3,129,219, 52, 13, 47,188,248, 34,175,189,113, 3,219,145, 53, 78,154, -215,164, 89, 46,190,241, 66,206,213, 92,175, 15,218,137, 71,154,103,103,198,214,165, 78,195, 76,163, 53,179,249, 49,161,231, 49, - 30,143, 89,206, 78,184,124,249, 42,111,123,226,109, 92,184,112,158,175,126,249,207, 72,147, 53,174,163,176, 84,195, 91,159,120, - 66,156, 67, 39,115, 26, 67,241,205,151, 95,231,149,215, 95,103, 48, 26, 81, 98,240,210, 43,223,164, 49,192, 82,118, 71,186,147, -192, 45,177, 94,245,195, 62,150,101, 50, 25,143,137,227, 53,150,130,203,151, 47,176,158, 47, 56, 57, 57, 98,208, 15,241, 60, 17, -255, 73, 90,154,167, 63, 63,100,199,141,234,158,167,233,116,218, 9,157,155, 74,166,170,158,227,114,233,242, 5,154, 34,229,225, -135, 46,179,191,191,223,157,153,235,245,186,155, 46,204,102,179,174,249,235,206, 0,253, 93,175,170, 74,236,149, 74, 59, 70,138, -130, 44,145,230, 66, 53,114, 62, 45,151, 75,173,209, 40, 89,172, 87,154,112, 40,228, 83, 83, 25, 28, 30, 30,144, 39, 49,105, 81, -146,101, 57,189,254,128,172, 44,217,217,222,163, 49,208, 86,193, 1,150,229,224,248, 30,163,209, 64, 68,162,174, 71,208, 27,114, -116,188,226,232,232, 24,215,117, 24, 13,251,140,135, 33,189,208,163,200, 99,150,243, 99,222,241,244, 83,216,166,120,234, 93,219, -225,224,224, 30,190,235,114,112,112,143,215, 95,125,141,135, 31,126,152,171, 15, 95,227, 63,254,191,127, 66, 89, 43,210,178, 33, -206, 75,210, 2,178,170, 70,153, 46,115, 29,225,123,116,116,196,120, 40,182,213,186,146,105, 99, 26,197,108,109,109,113,225,194, - 5,193,146, 15, 6, 88,131,176,135,103, 59,204,231,115,178, 88, 30,208, 54,242,180,165,104,141,250, 3,214,235, 53, 15, 93,190, -194,122, 45,204,231,157,233, 22,165,222,107,186,174,126, 16,178,126, 87,153,141,199,227,174,210,239,245,122, 93,182,112,187,187, -111, 47,133, 36, 73, 58,174,180,231,201,222,163, 61,124,219,127,223,118,192, 73,146,176, 92, 46,187, 60,221,249,124,142,239,122, -204,231, 75,108,215,101,127,127,159,227,217, 28,219,245,104, 26,136,227, 20,101,202,225, 49, 91, 46, 24, 15,135, 18,191,217,239, - 19, 69, 43, 6,131,129, 64, 66,108, 33, 67, 93,186,112,158,251,119,239, 97,154, 13, 91,147, 45, 44,123,170, 11, 9,249,249,146, - 36,194, 50, 76, 28,199,228,194,254,190,164, 76,149,130,186,189,116, 65,224, 51, 77, 37, 94, 87,203, 86,236,236,237,202, 88, 41, - 12,216,154,140, 37,175, 58,207, 80, 52,216,150, 34,207,165,144, 90, 44,231,236,237,237,177,179,179,195, 71,255,209, 63,230,226, -165, 11, 28,220, 59,224, 99, 31,251,167,216,150,137,109, 26, 27, 7,113, 73, 89,149,212, 85, 41,227, 38,215,166, 44, 5, 65,154, - 23,226,185,246, 61, 11,203,247,113, 92,139,170,200, 64,143, 39,139,162,160,214,162, 58, 73,158, 43,186, 29, 95, 23,185,106, 53, - 26, 6, 33, 7,177,237,200, 37, 87,164, 89, 39, 28, 19, 77,131,234,186,179,246, 48,111, 43,233, 60,203, 58,197,115,171,127, 48, - 49,168,202,138,180,206,207,248,213, 91,241, 85, 86, 22, 27,105,116, 6,113,148,106, 81,149,161,169, 88, 13, 73,150,119,211,150, - 44, 21, 63,112,109,212, 26, 6,115,250,108,181, 62,117,215,117, 57,214,145,163,237,101, 32,172,113,121, 47, 90,239, 53, 40,221, - 13, 6,152,182,221,189, 31, 0, 89, 81,225,251, 33,166,109,117, 23,153, 88,231,160,200,115,170,178, 38,203, 4, 83, 25, 6, 30, -195,225, 64, 50,195,115, 57, 96,162, 40,193,114, 78,180, 37,166,164, 40, 74, 26, 67,188,246,150,130,162,200, 41,171, 28,207,113, -137,146,152,192,243,201,138, 28,211, 80,164,101,169,255,123,129,194,160,104,100,197, 98,152, 10, 12, 37,221,162, 97, 96,155,182, - 22, 23,173,186,177,127,187,135,110,167,101, 98,235, 75,206, 4,167, 24,134, 65,165,193, 63,242,157,114,112, 28,227, 12,241,111, - 52,156,116,197,119, 27, 64,212, 38,150,181,159,197,166,229,175, 5, 36,181,135,111, 95,163, 87,219,162,106, 51, 78,181,170, 42, - 84,170,116, 40,148,219,105, 85,218,226, 83,138, 72,179,187,236, 91,184, 82,123,233,183,162, 79, 41,254, 78,119,174, 70, 45, 62, -108, 3,147,120,181,194,192,196,177, 77,234,162,132,186,192, 81, 13,243,147,154, 47,127,245, 57,214,235,152,249, 98,133, 99,235, -201,128, 46, 94,179, 52,101, 94,151, 12,250, 35,121,255,170,146,197,172,160,204, 11,134,195,161, 4,104, 88, 22,134, 49,232, 58, - 82,128, 94, 47,160, 40, 50,194,176,207,213,171, 87,121,249,181,215, 9, 29, 7,211,180,137,146,181, 78,159, 20,138, 97, 86, 86, - 36, 73,122, 70,136, 89,149, 13, 85, 41,151,128,169,108,156, 64, 59, 83, 18, 33,106, 54, 58,219, 94,254,204, 21, 89,150,114,247, -238, 93, 30,122,232, 33,214,171, 57,113,180, 32,137, 86,220,185,115,167,179,160,174,162, 24,215,181,233, 5, 66, 89,155,238,237, -224,251,210, 9,174, 86,145,254,115, 69,119,208,174, 67,155,166,198,178,220,174, 96,222,187,112, 78,242, 44,234,154, 75,151, 46, -145,196,107,238,222,189,199,112, 56,148,162, 73,199,163,214,117,173,167, 36, 90,119,227,184, 52,134,234, 10, 68,163,105, 48, 12, -197,104, 50,198,178, 44,210,180,226,100,182,224,229, 87, 94,227,181,215, 94, 67, 25,162,153,113, 76,139,229,114,137, 82,116,218, -130, 94,175, 71,197,233, 88, 94, 48,225, 50,237, 52,244,100,160, 46,228,249,105, 51,222, 93,215,237, 38,108,105, 38,197, 65,221, - 52,140,134,114, 57,215,117, 13,166,133,111, 9,241,206, 80, 22,235, 36,214, 73,113,170,115, 94, 93,188,120,145, 40,138, 88, 46, -215,154,154, 40,107,149,162,177, 56, 58,153,177, 88,173,217,217,217, 1,101,241,198,141, 91,216,150,226,202,229,139, 84, 13,172, -151, 43, 46,236,238, 50, 30, 73,195,102,155, 6, 77, 61,229,141,235,175, 81,148, 25,235,245,146,157,157,109, 30, 28,158, 80,196, - 9,142,237,146,229,154,102, 87, 53,120,142, 67,189,161,125,147,201,136, 34,205, 51,106, 67, 73, 65,162,207,107, 51, 74,176, 90, -207,105, 43, 74, 91, 44, 22,132, 97,216,229,152,175,215,235, 46, 28,165, 13,183,111,211,120,242, 60, 63, 13, 50,208, 65, 15,237, - 23,175, 61, 20, 55, 19,215,218,241, 91,171,236,109, 85,236, 45,201, 72,196, 69, 69, 39,252,104,247,182,237,110, 44,138,162, 78, - 1,219,238,234,107,253,231,108,238, 48, 91,232, 74,235, 73,150,244,171,152,133,142,204, 20,255,251,152,163, 7,247, 25, 13,250, -146,220,214, 11, 9, 3,143,183, 61,249, 4,119,238,220,193,118, 76, 70,163, 33,195,225, 80,167,142,193,149, 75,143,162,148,226, -224,224, 30,227,203,151, 89,173, 86, 88,142, 8,160, 14, 14, 14, 24,143,199, 58,141,168,228,242,229,135, 58, 80, 75,219,201, 92, -188,112, 65, 95, 98, 21, 77, 3,151, 46, 94,160,168, 74,252,192,235, 50,154,127,230, 35,255,115, 55, 6, 31,143,135,140, 6,189, - 46, 98, 84,198,221, 13, 69, 81,163,244,100, 35,209, 62,223,142,244,102,158,198,170,214,117,205, 98,177, 56,195, 52,207,180,149, - 69, 41,165,109, 90,226,245,109, 15,231,246,162,110, 59,180, 60,146, 67,167,189,212,219,209,185,101, 73,231, 26,111,132,145,180, -251, 95, 33,238,213,221,254,117,147, 39,158, 87,167,133,129,231,121,100,113,220,169,201, 55,189,224,173,210,190,219,173,229, 69, -167, 10,151,157,157, 28,236,131,241, 64,239,104, 79,223,163, 60,207,169,234,166,123,214,218,103,210, 52,205, 78, 80,179,185, 74, -216,244,237,111,198,201,182,160, 27,217,217, 91, 27,113,181,242, 58,215,113, 66, 85,201,175,181,149, 73, 20,203,123,191,180, 45, - 44, 67,117, 1, 30,178,167,173, 41,106, 97,247, 91,214,233,200, 48, 77,147,238,114, 44,138,130, 90,191,191, 85, 35,159, 73,156, - 38,221,119,169, 73,155,110, 61,101,154, 38,101, 81,139, 13, 77,229, 24,117,195,122, 53, 39, 79, 11, 92,207,150,157, 99, 93, 98, -212, 13,166,209,136, 0,199, 16,132,172, 50, 33, 12,250, 56,174,197,124,181, 60,141,178,212,211,136,182,227,111,191,239,109,226, -225,230, 8,188,253,223, 90,166,120, 55,125,209,171,180, 77, 80, 81, 93,215, 29,107,190,165, 70,218,154, 4, 88, 33,249,228,173, -163,228,238,221,187,186, 67,119, 58, 98,100, 75,130,236, 4, 97,154,150,216,142, 97,139, 60,165, 41, 69,247,208,148, 50, 29, 48, - 91,188,170,237,144, 38,114, 9, 68, 81, 66,149, 39,248,174,195,168,231,115,255,224,144,237,237,109,190,249,205, 23,152,142, 39, -140,134,125,238,220,188,165, 73,150,123, 4, 65, 64, 79,235,129,170,178, 38, 47, 11,130,192, 97,119,123,204,249,243, 23,233,247, -251,164,121,217, 53, 50,182,109,243,244,211, 79,178, 88, 44, 88, 69,146,228,118,249,194, 69,102,139, 37, 81, 26,225,249, 62,150, -237, 48, 95,172,136,179,188,123, 15, 90, 13,146,232, 10,242, 51,107, 72,223,243, 79,125,249,202,198, 84,114,193, 25,117,211,233, - 88, 48,106,166,227, 61,162,245,146,199, 30,123,130,227,195, 3,190,254, 23,127,206,214,214, 22,147,201,132,147,147, 19, 2,207, - 97, 48,236,113,114,251,142, 60, 3, 24, 84,205,233, 57,153, 35, 77, 92,156, 38,167,226, 57,163,102,185,156,179,179,179,197,241, -241, 33, 97, 24,240,232,195,215, 56, 58,122, 32, 49,181,163, 17,247,238,221, 59, 21,190, 42, 40, 26, 57,219, 84,155, 77, 81,201, -196,101,216, 23,119,199, 82, 79, 83,167,211, 41,119,110,221,198,117, 20,251,182,131, 82, 34,174,174,171,138,178,204,153,142,198, -157, 14, 38, 73,146, 14, 21,155, 22,185,158,100,200,243,209, 24,116,100, 76,168, 81, 13,152,150,129,173, 53, 68,237,121,225,186, - 22,150,105,224, 57, 46, 89,145, 51,234,247,136,162, 21,111,127,251,219,217,223,223,239,220, 39,203, 85, 68,154,166,204, 87, 43, -110,222,188, 41, 81,196,149, 20,144,163,209,136, 63,255,250, 55,120,236,177,199,120,241,197, 23, 25, 12, 39,100, 89,193,197,203, - 87,136,215, 43,188, 48,192, 48, 32, 43,100,146,100, 59, 30,199,179, 37,227,190,207,114,189,162,200, 51,158,120,236, 17,102, 39, - 71,168,186,228,191,122,239,123,185,113,227, 6,139,249, 9,231,246,118,152, 47,150,157,158, 36, 74, 42,220, 32,224,240,120,134, -227,184,172,215,194,108, 89, 47,151,157, 70,168, 13, 97,106,181, 11,134, 97, 48, 30, 12, 49,223,250,248,227, 31,173,170, 74, 7, - 68,248, 93, 7,221, 90, 83,214,107, 9, 41,105,197, 47, 45, 95,185, 21,210, 88,142, 37,160,255,186,196, 80,114,216, 91,150,169, -199,180, 6, 73, 18, 83, 86, 5,166,169,168,155,138,178, 44, 80,166,209,253,115, 89, 86,111,218, 89,202, 15,213, 90, 95,218, 63, -171, 21,128,181,151, 67, 43,164, 49,148, 18,255,174,178,176, 44, 27,203,150, 24,214,214, 10,212,235,133,250, 82,209,216,192, 44, -163,172, 74, 30, 28, 60,128,166,214,113,117, 22,231,247,247,168,203,146,217,201, 9,189, 48,196,119, 93,166,211, 17,166, 50, 48, - 16, 74, 85, 28,173,160,105, 8, 67,159,166,170,177, 29,139, 44, 47, 69,240, 84,228, 68,209, 26, 71, 35, 30, 61,215,197,117,108, - 38,147, 49,211,233,132,201,120,204,246,100,194,160,223,199,178, 12, 92,219, 33, 78, 19, 34, 61, 22,175,138, 28,219,146, 61,157, -101,154, 2, 69, 41, 37,235,218,113, 44,242, 44,101, 48,232,163, 26,180,159, 84, 43,137, 45, 19,203, 84,212,117, 69,158,103,221, - 62, 82, 53,208,232, 11,170, 69, 86, 54, 77,131, 50, 77, 12,165,186,100,180, 6, 3, 67, 9,251,189, 40,114, 10,221, 77,181,126, - 97, 67,239,141, 13, 93, 33,183,171,146,178,148,139,209,243, 60,182,183,167,120,158,139,101,153, 56,142,123,122, 17,234, 41, 77, - 43,128,179,109, 27,207,113,177, 76, 19,199,178,241, 92, 87,194, 63,234,154,241,120,140,227,184,132, 65,159, 40,138, 89, 69,107, -108, 71,242,156, 13,101,146,196, 25,158,231, 99, 89, 54,101, 89,177,140,214, 4, 97,136,105, 90, 52,205, 70,152,129,237, 96,233, -103, 70, 44, 45,161,196, 46, 46, 87,162, 96,118,156,174,187,144,113,126,137, 31, 4, 4, 97, 8,134,193,122, 29, 99, 89, 54, 75, -205, 51,207,242,140, 52,203,136,163,132, 44,205, 72,139, 66,166, 16,121,155,109, 94,235,189,158,141,229, 88, 66,160,179,228, 61, -206,138, 66, 14,254, 34,167,110, 26,104,164,216,181, 93,143,176,215,199, 82, 38,235,213, 74,246,215,202, 2, 12, 28,219,165, 40, - 4,243,106, 91, 14, 73,156,202,123,167,163, 52, 7,253,161,116,119, 40, 70,163, 17,190,126,159, 29,219,102,208,239, 51, 26, 14, - 41,242,156,209,104,168, 89,251, 6,253, 94, 72, 89, 20,120,174,131,231,185,148, 69,142,169, 20,121,150,107, 45, 65, 35,147, 58, -173,174, 22,245,173,164,214,197,113,210, 41,147,219,203, 84,104,141, 83, 61, 18,245, 80, 58, 17,207,178,236,238,179,239,247,251, -140, 70, 35,246,247,207,211,235,245,197,115,111,219,221, 42,165, 85, 94,215,212,221, 74,173,141, 62,238,245,122,204,102, 51, 81, - 99,235, 41,217,166, 88,178, 69, 61,183,197, 99,154, 38, 52,117,205,100, 60,194,216, 64, 27, 27,202,196, 15, 66,234,186, 33, 8, -251, 40,211, 36,207,210, 46,117,173,170, 10, 76,106, 6,131,128,107, 15, 93,197,115, 93,174, 61,124,149,239,248,182,119, 50, 30, -246,120,226,209, 71, 56,191,191,199,227,143, 62,194,206,206, 54, 15, 95,189,130,231,184, 96,128, 99,219,114, 46,148, 37,179,249, - 66, 43,183, 19, 94,126,249, 37, 22,139, 5,113,180, 38,138, 19,210, 52,227,232,248, 4,215,243,136,181,178,187,172, 16,198,119, - 45,116, 73,233,140,101,215, 94,234,130,186,213, 14,152, 74, 82, 38,209,212,195,104,189, 34, 8, 3, 6,253, 62,121, 94,224,249, - 46,211,201,132,197,108,198,122,189,226,228,228, 4,211, 80,152, 10, 78,142,142,216,158,110, 49, 24, 13, 89, 44,231,172,227, 24, -215,113, 72,243,130,176,215,231,228,248,132,186,105, 40,139,211,102,200, 80, 45,134, 87, 44,138, 79,190,237,109,220,185,115, 27, -131, 70, 8,159,119,239, 82, 20, 57, 65, 16, 74,242, 95,221, 80,150, 25, 24, 74, 79,106,164, 19, 87,166,197,116, 58, 37, 47, 10, -137,165,157, 47,132,107,175, 12,118,247,246, 56,184,127,192,114,181,100, 58,157,178,187,187, 11, 13,164,105,194,241,209, 17,190, -239,201,251, 76,195,214,116, 74, 47,244, 9,123, 1, 69, 33,197,186, 20,118, 10,199,177, 81,134, 60,251,134,209, 48, 26,141,232, -247,122, 76, 39, 99,134,253, 1,231,207,239,113,254,252, 57,174, 94,185,204,213,203, 87,120,232,225,135,184,122,245, 42,215, 30, -126, 8, 83, 25,184,142,203, 98,185,212,136, 92, 7,219,118, 52,219, 95,166,138,182,235, 80,228, 37, 69,153, 51, 28, 74,236,178, -161,164,120, 93,175, 34,214, 81,196,104, 60,229,232,240, 80, 79,154,125,142, 78, 78,152, 78,166, 44,151, 11,124,223, 99,123,186, - 37,152,240, 94,200,238,206, 54,243,217, 49,239,124,199,219,177, 76, 52,200,169, 97,190, 88,128,206, 76, 80,134, 73,156,164,146, -224,135,129,235,248,160, 20,182,237,176, 94,173,177, 93,155, 52, 75, 41,235, 18,199,118, 80,134,169,197,140, 82, 28,175,162, 53, - 86,146, 36,221,109,223,142,181,219, 74,189, 13, 81,105, 47,211,182, 3,223,236,170,138, 13,102,243,230, 88,109, 83,240,177, 25, - 46,209, 22, 13,155,182,168, 86,188,211,218,161,218,221,230, 38,166,180, 13,118,104,199,168,237,101,223,142, 28,187,145,110, 85, -119,104, 80,249,187,123,166, 19, 19,241,199,233,127,119, 28, 7, 83,129,231,185,250, 98,204, 69,177, 28,184, 29, 68,191, 44, 5, -240, 34,118,130,146, 60,175, 59, 14,111, 86, 52,148, 85,125,198,135, 43, 41, 90, 97,151,252,212,239,247, 37, 13, 13,168,234, 2, - 43,178,116,183, 8,179,227, 19, 28,207, 37,240,220,174, 90,119, 28,135,192,115,116,113,112, 90,205,139, 64, 70, 4, 26, 89, 38, - 25,236, 74, 87,163,155, 54,162, 77,117,241,217,248, 72,117,102,244, 93,212, 21,142,237,209, 24, 27,182,162, 13,122, 88,251,255, -175,235,154,102,131,186,118,154,103,221,208,239,247, 59,162, 95, 59, 22,219,252,143,211,242,200,181,127,190,237,118, 55, 85,232, -237,142,172, 21,195,108,118,141,106, 35,161,237, 44,191,254,212, 94,150,231,249,198, 78,223,255, 22,235, 83,251,108,182, 74,238, -246,239,121,158, 51, 24,141,186,247,189,125, 77,109,182,182,236,221, 77, 61, 33, 49, 59, 59,201,230,179,196, 70,154, 87, 89,152, -216,174,137,231,135,244,130,176, 19,113,210, 40, 12, 12, 12, 69,199, 2, 23,193,152,140,212,106,141, 99,109,187,225,118,116,222, -254,124,155, 83,133, 77,117,172, 82, 74, 38, 15,165, 80,181,138,118, 26,209, 52,178,182,177,244,247,165,170, 40,139,188,187, 24, -154, 90, 64, 57, 40,131, 94,175, 7,166, 58, 19, 4,212, 90,126,154,166,161, 23, 14,186,239,229,104, 52,234, 58,237,241, 88,246, -164,135,135,199,167,163,124,173,203,168,107,209, 83,136,239,217, 60, 19,196,209,238,204,219,207,222,176,140, 51,251,252, 78,249, -171,133,114,237,243,208,126,191, 90,175,254, 38,221,175, 44, 75, 81, 63,155, 38,202,180,104,148, 8, 46, 45,203,162,169,234,206, - 61,211,212, 37,182, 50,104,202, 76,222, 31, 27, 29,178,225, 17, 6, 30,139, 69, 70,153,165, 36, 73,196,201,225, 3,162,229,162, -251, 30,221,189,127, 32,236, 4,221, 33, 94, 71,177, 88,173, 9,122,125,242,178,102,111,111, 79, 79, 47,211,110,130, 25, 4,158, - 48, 12, 92,183, 11, 21,210, 90,195,141, 28,248, 54, 76, 72,117, 29,249,230,179,253,102,238,131,101, 89,255,127, 91,103,179,157, - 32, 12, 5,225,175, 38, 68,177, 88, 17,142,237,170,135,247,127, 36, 31,160, 90,139, 96,143, 32,127, 17,232,226, 66,220,116,145, -109, 54,201,220,147,204,220, 59,131,241,158, 82,133, 49, 6,165, 53,195,196,106,172,204,146,245,122, 69, 93, 44,169,172,224, 34, -246, 99,194, 48,164,168,107,154,214, 82, 55, 45,227, 56, 61,206,251,222,101, 67,252,183,170,170, 20, 10,123,120,144,101, 25, 77, -121, 39, 73, 62,217,237,118,220,239,133, 68,213, 90,137,199, 21,151,197, 5,208,187,243,158,177,245,180,183, 22, 6, 39, 8, 2, -180, 86,156,142,103, 54,155, 13,106, 28, 72,146,132,143,253, 59, 81,188,157,100, 96, 69,240,234, 79,178, 89, 79,154,166,228,191, - 55,183,151, 48,160,115,122, 27, 68, 81,132, 89, 72, 13, 25,122, 59,197, 88,139,220,243,130,114,211, 18,115, 28,247,219, 86, 62, -172,199,243, 55,135,195,129, 60,207,185,100,153,243,221, 0, 80,158,176,116,151, 52,117,201,123,101, 89, 74,223,208, 8,182,105, - 93,141,157,113,208, 62,236,196, 36,120,124,157,142, 20,215,140,234,118,197, 55,154,177,111, 73,211, 31,238, 69,201,163,107,165, -223,170,105,208,222,146,178,105,169,235, 30,213, 88, 70, 43,247, 92,123, 62,102,161,196, 11,222,243, 80,147,149,181,214, 98,100, -181,143, 67,162, 40,114, 35,230, 93,215,241, 7, 99,242,166,153,201,181,177, 94, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, -}; +137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, + 13, 73, 72, 68, 82, 0, 0, 1,245, 0, 0, 1, 26, 8, 6, 0, 0, 0, 8, 90,206, 70, 0, 0, 0, 25,116, 69, 88,116, 83,111, +102,116,119, 97,114,101, 0, 65,100,111, 98,101, 32, 73,109, 97,103,101, 82,101, 97,100,121,113,201,101, 60, 0, 3, 29,109, 73, + 68, 65, 84,120,218,236,189, 9,184,101,215, 85, 30,184,214, 62,247, 85,149, 74,150, 69,201,182, 36,207,182,108, 3, 14, 6,227, +148, 12,105, 51,180, 2,229, 38, 76, 25, 32, 18, 31,233, 4, 58, 12, 82, 66,210, 29,147,175, 45, 41,157,116, 67,186, 25, 44,165, +137, 51, 0,253, 89, 33, 77,103,160, 33,150, 29,135,208, 31, 9,113, 57, 56,216, 38, 9,184,130, 13, 4, 27, 27,201, 50, 6,100, + 89,182,202,146,165, 26,222,123,119,175, 62,195, 26,254,181,239,173,170, 87, 85,239,149, 84,230,108,125, 87, 85,245,222,189,231, +158, 97,239,189,166,255,255, 23,139, 8,205, 99, 30,243,152,199, 60,230, 49,143,203,127,148,249, 22,204, 99, 30,243,152,199, 60, +230, 49, 27,245,121,204, 99, 30,243,152,199, 60,230, 49, 27,245,121,204, 99, 30,243,152,199, 60,230, 49, 27,245,121,204, 99, 30, +243,152,199, 60,230, 49, 27,245,121,204, 99, 30,243,152,199, 60,102,163, 62,143,121,204, 99, 30,243,152,199, 60,158,242, 99,113, +166, 95, 48,243, 94,124,159, 29,116,127,255,122, 65, 41, 84,106,165,223,237,255,126, 66,127,183,107,252,186,153,170, 55,143,121, +204, 99, 30,243,152,141,250,222,141,193,104,115, 41,124,195,223,248,230, 47,250,129,155,191,244,197, 95,181, 88,112,247,175,223, +251,209,119,127,255,207,188,239,127,223,220,174,199,118,219,176,207, 99, 30,243,152,199, 60,230,241,135,105,240,153, 34,218, 61, +136,212,135, 3,238,251, 43, 95,247,121,255,240, 71,191,245, 21,223, 45,199,159, 32,186,234,106,226,103, 93, 67,191,248,190,143, +222,255,221, 63,246,174,191,113,223,131,159,121, 91,255,158,109, 11,182,231, 72,125, 30,243,152,199, 60,230, 49,143,157,143, 75, + 89, 83, 31,140,250,254, 43,182,158,184,138, 30,124,128, 78, 62,248, 49, 58,241, 59, 31,160, 19, 31,250, 48,253,241, 47,120,222, + 13,191,244,195,127,234,159,124,253,171,159,255,183,250,247, 28, 82,131,206,243,227,153,199, 60,230, 49,143,121,204,227,169,105, +212, 71,195,254,198,119,252,222, 79,252,216,175,126,242,125, 7, 15, 29,160, 69,199, 84, 31,126,144, 78,124,240,191,210,179,175, +216, 56,240,175,255,215,111,248,223,254,230,183,124,241, 63, 98,166,151,205,134,125, 30,243,152,199, 60,230, 49,143,243, 52,178, +151, 56,253,126,160,127,125, 78,255,250,130,191,244,229,215,190,238, 71,190,238,121, 95,191,127,155,232,228,233, 45, 42,251,123, + 35,255,194,151,210,190,107,159, 69,111,123,247, 7,127,227,123,126,252, 93,119,124,252,248,201,127,215,191,183,210, 5,164,226, +231,244,251, 60,230, 49,143,121,204, 99, 54,234,123,103,212,209,176, 95,221,191,158,247,229, 47,189,234,219,255,249,183,222,240, + 93, 47,188, 98,113,224,196,137, 45,162,174,163,242,156, 23,209,129,231, 63,159,238,251,131, 79, 61,118,219,143,190,243,135,223, +241,190,223,255,241,254,189,159, 49, 91,189, 27, 70,125,143,174,109,248,206,195, 52,149, 15,134,113,127,255, 61,247,127, 54, 79, +158, 63,108,215, 59, 15,120,246,119,223,148,159,253,237,239,188,255,114,254,158,167,248, 58,155, 39,220, 60,158,178, 70,221,198, +144,246,127,122,255,186,238,250,167, 47,254,228,191,248,246,151,252,245, 47,191,254,202,235, 79,157, 92,142,129, 57, 95,247, 60, +186,226, 5, 47,166, 77,169,244, 63,255,228,123,254,233, 63,252,217,223, 24,106,237, 31,163,243, 64,199,159, 99, 33,220,160,175, +157,140,227,253,189, 56,182,195,239,124,123,255,199, 17,253,231,157,253,231,238,250, 44,223,108, 62, 43,174, 87,157,147, 35,106, + 60, 14,195,175,134,231, 62, 24,145,123,251,107, 59,190, 11,223,211, 30,159,118,123, 14, 94,132,193, 28,175,183, 55,154,199,119, +248,217,252,236,111,127,231,158, 60,251, 75,245, 61,151,208, 17, 58,251, 60, 91,115,255,103,163, 62,143,243, 25, 23, 74,105, 43, + 52,165,197,175,122,198,211, 54,190,240, 25, 87, 46,158, 81, 37,188, 0,214,255,245, 27, 17,139,253,132,237,231,254,219,225,187, + 15,110, 45,229,228,247,254,252, 39,254,237,223,251,211,207,255,211,175,185,246,202,207,217,220,234, 63,113,252, 83,116,234,224, +211,104,227, 25,215,209, 63,184,237,166,111, 59,252,210,235, 62,239,117,111,250,165,215,127,250,241,205,119,211,238,208,222,110, +238, 95,111, 56, 79, 79,249,222,254,117,180,191,164,123,230,105,243, 89,147,101,184, 89, 95,103,114,240,204,152,188,169,127,255, + 61,234,184, 92,140,113, 31,190,243,237, 23,240,185,163,253,235,181,187,108, 96, 6,195,242,222,230,199,131,193,188,115,158, 29, +187,110,200,119, 62,207,238,190,233, 30,117, 94,142,207,119,111, 30,151,202,168,143,124,243, 43,247,119,135,127,224,107, 95,248, + 67,223,250,202,107,111,186,250,138,141,125,149,203,100,176, 75,153, 94,253,223,121,209,165,127, 15,127,114,215,197,191,121,250, + 93, 31,155,203,150,112,221, 94, 44,168,192,113,182,151, 91, 84, 79, 50,125,251,107, 95,241,165,175,122,233,179,222,250,157,111, + 60,250,125,239,253,208,195, 63,217,127,255,105,186,244,124,246,113, 97,246,155,251,240,231, 45,187, 17,185,205,227, 73, 29,239, + 61,207,247,223, 58,108,190,253,243,191,101, 47,162,230, 39, 97,220,124,134,107,156,141,250, 83, 97,158,221,125,211, 45,189, 97, + 63, 54,223,190,121, 92,170, 72,253, 89,119,127,227,139,223,248, 61,175,121,238, 87,108,158,168, 36,149,169, 43, 60, 5,240,194, +211,171,255, 59, 87,158, 76,239,240, 26,126, 63,196,246,181,255, 71,167,233,253, 50,253,174,235,255,177, 40,220,121,154,137,237, +115, 66,181,255,251,233, 19,155,244, 69, 47,188,246, 89,111,255,161,111,250,209,239,249,241, 95,124,217, 79,255,251, 15,253,112, +255,219,135,105,247,196,106,142,158,229,119, 71,214,252,251,237,253,185,190,118, 54,236,159, 53,227,152,102, 98,142,245,207,244, +168, 70,242,135,244, 89,223, 10,115, 96,136,180,222,220,255,238,198, 93,122,246, 67, 84,182,147, 26,241, 94,204,179, 91,215,252, +236, 80,111, 76,110,238,141,201,189,243,148,216,227,121,118,251, 59,143, 66,198,100,253, 60,187,251,166, 27,231,136,125, 30,151, + 36, 82,223,191, 81,110,248,134,151, 31,122,181, 60,177, 69, 91,167,250,160,185,214,201, 72,123,102,221,226,121, 14,187,219, 21, + 42,207,184, 86,141,123, 29,131,116,170,154,197, 31, 63,167, 22,190,212,201,240, 15,209,252, 80, 98,239,166, 67,108,158,222,162, +171,247,237, 43,255,239,237, 95,247,189,175,254,188,235,191,240,111,252,196,123,110, 63,189,181,124,223,110, 24,246,254,220,207, +154,218,212,232,252, 13, 20,233,179,195,186, 8,239,154,167,208,101, 61, 6,163,122,207,186,200, 91,141,246,176, 1,223,219, 63, +255, 55,129, 17,188, 97, 23,159,253,189,230, 68, 92,202,161, 41,225,195,141, 83,123, 4, 34,248,217,168,239,197, 60, 91, 19,121, +171,209,158,230,217,221, 55,237,213, 60,155,199, 31,162,113, 33, 60,245,110,115,171,126,234,103,126,253,225,255,204,229, 52, 93, +185,111, 73, 87, 94, 65,116,240,128,232,171,198,223,247, 87, 58, 80, 54,123,227,188,213,123, 2, 7, 39, 35, 95,235,248,202,224, +143,254, 61,245, 84,255, 58,217,239, 56,253,159, 67,118,125,248,183,108,234,251,165,127,127,165,173,101,165,237,211, 75,250,222, +111,126,245,145,183,223,253,205,255,234, 69,215, 61,253,155,212,236,239, 41,223,190,223,120,135, 69,247,218, 38, 98,186,121,158, + 62,151,245, 24, 50, 45,183,237, 36,149, 62,188,175,137,168,239,184,204,175,253,230, 38,122, 68,156,200,205, 26, 61,206, 99,183, +230,217,237,239,188,109, 39,169,244,225,125,159,101,243,108, 30,151, 73,164, 62,132,197,159,186,227,103, 31,248,190,159,255,205, + 79,126,211,203,175,191,226,133, 67, 34,189, 14, 86,119,154,154,189, 13,158, 76,246,137,205, 90, 94,245,130,171,254,200,119,127, +229, 75,111, 56,176, 56, 80,234, 96,160,135,154,250, 16, 91, 15,134,125,243,113,226,142,169, 60,255,149, 84,158,245, 82,226,167, + 95, 79,124,224,233,212, 91,110,170, 79, 60, 76,242,153, 7,169, 62,252,161,254,223,189,177,231, 43,250,239, 93,210,178, 63,112, +125,124,147,190,226, 21, 47,120,193, 47,220,253,205,255,248, 79,220,249, 47,187,143, 60,248,232, 91, 41,192,123,123,101,216,239, +239,175,234, 94,240,164, 15,239,198,113,215, 32,162,143,237, 18,210, 26, 17,254, 23, 68, 55,219,141, 99, 92,138,235,109,206,115, + 71,199,187,128, 8,249, 30, 10,112,229,161, 1,104,119, 25,215,214, 49,245, 62, 68,144, 67,148,120, 63,220,195, 61,139, 16, 27, +196,253,177,139, 77, 47,247,199,203,115,244, 2, 40,111, 23,195, 2,216,129,161,190,184,121, 54,157,219, 92, 91,159,199,158, 26, +245, 33, 41,254, 68,255,250,192,127,184,239,241, 55,246,175, 43, 52, 90,110,199, 51,190,246,139,174,253,206,111,186,241,197,207, + 62, 88,246,149,237, 49,165,222, 91,243, 83,167, 72, 78,247, 31, 95, 62, 65,221,231,126, 5, 45,110,252,115,212,189,248,143,157, + 49,133, 32,143, 60, 64,219,247,189,131,150, 31,125, 79,239, 0,236, 27,235,236, 67,201,126,243,196, 38,125,238,115,158,113,245, +191,250,219,127,234,199,190,250,245,111,126,228,147,143,158,250,247,180,247, 13, 97,118,133, 35,171,134,237, 86,141,152, 14,175, +249,253,253, 20,169,225,227,103, 56,198, 27,224,179, 67, 26,247, 30, 56,238,173,212, 32,109,245,152,119,237, 4,189,223,191,247, + 86,141, 18,110, 56,223,243,218,139,235, 61,203,181,222,161,199,197, 13,121,215,145,226, 16,209,226,184, 44,163,217,161,102,222, +156,251,189,240,231, 29, 23,107,212,251,227,231,103,117,251, 59,239, 81,195,123,135, 62,255, 67,205,251,143,142,243,242, 60,140, +159,102, 18,214,207,243,201, 57, 25,142,119,207, 89, 62,123, 68, 95,135,207,228,156,235,113, 44,109,126, 41,235,218,159, 21,243, +108, 30, 79,222,184,144,180,245, 16, 13, 15, 57,242, 97,162, 63, 68, 19,127,252,163,253,235,119,245,245, 81,102,186,242,238,155, + 63,247,251,127,254,182, 47,254, 11, 47, 60,184,239,202,237,229,146,228,212, 19, 84, 31,249, 4,213,227, 31,239, 35,244,199,104, +223,215,220, 78,251,111,254, 7,107, 13,122,242,116,175,121, 17,109,188,250, 59,105,227, 75,255,242,104,208,137,151,147,221, 30, + 13,251, 22,125,209,203,158,253,204, 55,254,229,155,238,238,127,248, 2,218,123, 89, 89, 92, 96, 23,180,208,123, 99, 52,108, 38, +247,169, 55,126,166,104,255, 6,253,253,123,149,122,181,110, 28,134,205,233,144,190,239,237,148,107,255,237, 49,223,164,245,225, + 51, 26,223,254,245,230,225,125,103, 57,198,112,252,183,171, 81,189, 84,215,187,238, 90,239, 83, 67, 49,111,122,231, 55, 48,245, +142,188,104, 52,130, 55,104,132,120, 33, 35, 63,171,233, 56,239, 93,227,124,217,152,128,167,119,223,180,163, 84,179, 30,239,220, +243,124,170, 79,159, 41, 75,241,102,253,243,108,215,104,115,242,190,139,184, 23,243,152,199,101, 17,169,147, 70,195, 91,250, 34, + 48,166,221, 11,159,121,224, 27,223,244,173,159,127,215,215,124,238, 51, 95,118,250,100,165,229,178,127,203,233,147, 68,219, 91, +131,212, 13,241, 6,209,254, 63,243,195,212,189,226,235,253, 96,143,157, 60, 77,191,240,190, 7,232, 23,222,255, 0, 61,242,248, + 73,218,232,152, 94,254,156,107,232, 79,222,248, 82,250,163, 47,121,246,116,224,231,191,154,120,223, 85,180,245,238, 31, 33,218, +183,152, 78,161,143,252,183, 31, 63, 77,127,254,171, 95,241,170,127,254,142, 15,126,231, 47,252,234, 3, 63, 72,123, 68,119, 83, + 35,118,115, 19, 17,158,239, 49,110,214, 13,165,245,204,143,130,147,128,209,236, 13, 20, 72,251, 99,231,112, 54,222, 12,155,220, +189,224,241, 31,110,206,251,214, 33, 50, 62,131, 80,204, 27,104, 21, 43,128,199,186, 25,162,155, 55, 63, 73,215,123, 72, 55,245, + 67,224, 92, 29,131,207,239,213, 56,114,142,136,234, 98,230,213,174,151, 95,206, 96, 16,111,104,141,186, 59,207,183,191,243,254, +254,247,199,224, 92, 6,163,119,219, 46, 56,193,248,172,214,205, 37,159,123,253,247, 31, 63, 83,132,125, 65,243,188,143,182,207, + 33, 86,115,191,190,142, 54,198,252, 8,124,199, 33,117, 58,110,188, 68,106,118,123, 50,207,230, 49, 27,245,243, 25,150,242,190, +250,107, 95,113,205,247,222,115,203,231,221,254,188,167, 93,113,197,201, 39,250,232,124,217,219,215,173,211,250, 77, 29,241,246, + 19,180,241,101,223,149, 12,250,127,250,240,131,244,250,159,122, 23,221,255,201,207,208,129,253, 27,180,177, 40, 84,250,163,189, +255, 99,143,208, 91,254,227, 7,233, 27,111,124, 9,253,175, 55,127, 5, 29,236,127, 87,174,251,124, 90,188,226, 22,218,254,181, +159, 36,186,234,186,241,107,199, 34,186, 48,253,237,111,123,205,119,253,187,247, 62,240,150, 62,152,255, 77,154, 74, 4,187,109, +208,219,232,245,158,243, 60,198, 13,122, 12,220, 80,110, 91, 83,219,189, 75,163,219, 55,235,134, 98,223,125,227, 89, 14,127, 7, +108,114,183,181, 70, 65,191,251,205,176,137,222, 49,136,169,224,251, 52,229,126,107,179,153,220,210,212,209,241,220,142, 60, 73, +215,123, 7, 28,239, 78, 5, 49,182,207,106,175, 35,220,221, 50,188,111, 94, 23,189,106, 57, 98,184,174,123,118, 89,122, 23,175, +225,248, 26,234,218,189, 48, 71,110,222, 5,163,126, 71,154, 75,217, 40,222,213, 27,202, 35,205, 61, 24, 34,236,163,103, 49,158, +121,158, 55,105,113,117, 90,242, 60,191,251,166,117,233,243,187, 52, 75,113,236, 44, 14,208,173,234,228,226,156,124,237, 37,216, +147,243, 60,235,207, 93, 94, 63, 27,170,121,236,124, 92, 44,106,220, 12,250,139, 95,247, 85,207,253,177,183,125,251,203,191,239, +217,251,247, 93,113,226,244, 22,201,246,137, 17,240, 54,214,209, 59, 30,237, 44, 63,243,249,180,248,146,111,243, 15,127,248,227, +199,233,219,126,236, 23,232, 55, 30,124,140,100,223, 1,218, 26,106,230, 27,251,105,223, 21, 7,232,202,167, 93, 73, 7,174,188, +146,222,250,159,127,135,126,232,173,239,241,207,116, 47,253,227,196, 7,251,232,125,121, 98,250,246,254, 10,182, 55,183,232, 85, + 47,185,246,250, 47,121,249,245, 95, 67, 78,130, 59, 47,131,123,199, 89, 94, 67,164,241, 72,179,216,110,187, 0,160,213,155,154, +232,242,198, 51, 29, 67,127,142,104,251,195,106,116,207, 54, 6,181,187,181,162, 56,106, 24,238,108, 34,158, 35,103,216, 48,205, + 96,190,118,157, 65,129,115,123, 50,175,247,126, 61,222,189,107,142,181,235, 81,238, 48, 15, 46,198,161, 59, 71,228,185,110, 88, + 13,250, 62,253,238,221, 26,183,158,227, 26,240,103,135,212,176, 93,236,152,230,210, 26, 67,173,117,244,215,158,101, 30,174,159, +231,183,191,243,150,117,117,110,253,142,179,206,243, 33,114,239, 95,119,158, 11,141,174, 25,131, 91, 48,130, 86,167, 97,207,134, +150, 32,246, 98,158,205, 99, 54,234, 59, 54,232,124,205,149,139, 35, 63,243, 63,124,222,219,222,248, 13, 47,250,239,135,100,252, +233,186, 53,209,209,134,218,247, 70,127,248, 5,143, 47,161, 77,234, 62,247, 43,137,159,246, 76, 63,192,157, 63,245, 30,250,240, +239, 61, 74,143,110, 51, 61,248,248, 54,125,236,209, 77,250,157, 79,158,236,163,246,147,116,252, 84, 31,233, 47, 22,116,245,213, + 79,163,127,245, 43, 31,166,163,239,255,136, 90,245, 5,117, 55,124, 37,201, 99, 15,143,220,247, 33,165, 63,104,220,236,187, 98, + 31,125,203, 77,159, 55, 44,224,167,211,249,215,214,223,112,150,215,145,102,145,189,246,124,165, 98, 65, 91,220, 47,253, 92,198, + 71,211,207,247,156, 37, 45,215,142,219,206,113,188,163, 77, 42,239, 6, 56,191, 86,194,242,174,179,157,223,154,115,187,212,215, +123,215,165, 18,254,209,107,121, 67, 19,165,239,198,102,107, 66, 36,119,194,235, 94, 90,197,106,188,225,108, 56,136,243, 48, 24, +135,155,103,124,239, 26, 67,118,188,249,249,110,208, 54,239, 58, 27,208, 76,141, 43,222,207, 91,207, 65,169,187,237, 28,198,248, +140,243,252,188, 55,184,213, 99,237, 25,141, 85,159,207, 27,154, 40,125, 54,234,243,184, 36, 70,221, 20,101,158,246, 21, 47,185, +234,175,191,231,175,124,193, 91,190,229,229,215,188,242,196,137,229, 64, 56,235, 13,250,214,116,212, 62, 58, 31,232,106,188, 24, +254, 44,227,159,229, 57,175,240,131,124,228,161, 79,211,191,121,223,239, 18, 29,188, 98,162,185, 13, 98, 51,253,159,203,254,195, +159, 57,189,164,143, 60,124,130,238,255,196, 9,218, 18,166,218,255,252, 29,191,241,209, 56,129,103,190,148,228,228, 99,253,223, +182,245,108,164,255,107,165,207,127,222, 53, 47,233,255,245,108,218, 59,192,220,205, 26, 69,158,111,138, 23, 13,212,241,243, 48, + 10, 71,119,184,161, 28,219, 97,154,246,216, 25,206,233, 72, 99, 96,119,114,126,247, 62, 73,215,123,255,165,210,223,215, 18, 2, +106,181, 31,167,139, 75, 73, 31, 87,227,253,146,254, 26,110,212,204,202, 93,240, 26,254,125,141,190,231,120, 50,116,147,227,181, + 91, 81,250,177,179, 68,170,247,238,102,116,186, 67,195,116,239,154,117,182,126,158,239,172,174,125,236, 60,156,225,243, 57,183, + 61, 41,237,232, 61,222,205,121, 54,143, 63,196,227,124,107,234,150,110,127,206,119,252,177,103,125,255,143,127,227, 11,191,123, +163,118, 3, 31,189, 55,200,253,143,165,142,246,117,144,135,149, 33,229, 94, 88, 85,229,164, 55,234,251,168, 28,122,129, 31,232, +129,135, 31,163,147, 67,187,213,167,239, 15, 63,193,224,109,131,129, 23,161, 79, 63,190, 69, 91,155,219,244,188,171, 23,244,153, + 83, 91,113, 18, 99, 61,189,119, 4, 78,159, 32,190,226,170,254, 99,131, 81,223,166, 23, 95,119,213,181,251,247,117,215,159,222, + 92,126,224, 60,175,235,108,122,215, 8,156, 57,164,222,244,205,231, 41, 19,123,228, 12, 27, 14,157, 43,186, 70,145,158,179,112, +163,119, 90, 10,184,255, 44,215,120, 94,199,106,207,237, 18, 94,239, 37, 1, 14,169,227,214,214,188,239,188, 24,110,186,126,118, + 39, 98, 55, 3,206, 96,120, 14,239,109,178, 73, 23,164,244,166,145,239,205, 59,113,200,148,179,126, 28,174,123,248,220,133,114, +214,119, 54,151,250,136,184,255, 78,218,129,241,188,216,121,126,182, 12,198, 13, 59,152,203,187,142,130,215,103,179, 58,207,102, +221,247,121, 92, 2,163, 62, 70,191, 87, 29,232, 94,243,119,190,254,121,119,223,118,248, 89, 95,182,185, 73,116,106, 99,146,124, +149,101,111,184,183, 42,237,219, 87,232,209,229,178, 94, 49, 88,230,161,161, 75, 7, 31,150,109, 63,216,181, 87, 31,164,110,223, + 6, 45, 7,164,219,168, 23, 47,106,212,245,207,225,103,125,132,255, 68,111,248, 63,122,234, 20,237,127, 37,156,170, 44,251, 87, +111,228,183, 79,245, 14,192,211,123, 71, 98,208,159,175,116,205,149, 27, 7,175, 62,184,239,208, 39, 54, 79,158, 87, 6, 98, 39, + 45, 67,181,182,105, 20, 42,163,213,220,184,195,175,192,205,224, 6,173,211, 95,200, 56,116,150, 8,240, 98,198, 5, 25, 97,125, +239,225, 75,124,189,123,190,217,169, 65,127,123,115, 29,183, 93,202, 14,125,131, 3,208,159,199,157, 20, 41,217,225, 62,222,188, + 14, 71,176,195, 12,211,161, 29,102, 89,134,113, 15,237, 2,103,253, 34,230,210,145, 51,124,231,174,148, 92,128,231,254,164, 82, + 34,245, 60, 86,231,217,156,118,159,199, 30, 27,117, 75,101,111,124,254,117, 7,254,220, 79,125,203,139,239,250,163,215, 30,188, +246,228, 16,157,239, 95, 76, 6,189, 55,230,139,193,160, 95,209,209,223,124,199,239,191,255,133,159,179,239,115,190,251,240,179, + 94,120,106,136,218, 45, 90,223,218,162,250,201,223,161,242,252, 87,143, 7,123,249,115,159, 65, 95,250,178,107,233,151, 63,240, +112,127, 22,139,201,136, 23, 53,232,166, 11, 87,167,207,158,122,228, 9,122,217,245,177,246,228,177, 63,232,163,244,199, 72, 78, +127, 14,177,118,140,145,106, 78,193,152,252,223,245,244,187, 70, 79, 4,155,236, 8,230,218,225, 70,127,168,137,138,111,120, 10, +207,137,227,187,240,222,203,233,122,119, 98,208,239,124,146, 90,238,162,186, 24, 93,196,125,108,185,233,231,138,100, 81,136,102, +224,172, 31,185, 0,101,180,221,154, 75,187,109, 72,205, 33,127, 82,245, 13,206, 96,208,239,156, 13,250, 60,246,218,168, 91,186, +253,218, 91,190,248,154,215,255,253,175,123,222,255,116,253,129,141,125, 39,122, 99,203, 7,167, 16, 92,122,227,126,160, 55,168, +167,246, 17,253,143, 63,247,209,159,187,231, 61,159,120,219, 63,190,229, 69,183,143,105,248,225,211,157, 54,120, 89, 20,146,135, +126,211, 15, 92,122, 99,255,183,254,204,141,244,117,191,245,255,245,225,126, 31,117,239,223,167,221,221,212,168,143, 17,124,255, +191,199, 79,208,171,254,200,115,233, 47,252,183, 95,224,159,173,159,248, 64,191,249,110, 17, 47, 55,167, 55,246,198,182,244, 95, +248,200,227,167, 78, 62,118, 98,243, 51,123, 24, 61,221,165,234,102,184, 89,158,239, 34, 52,110,236, 94, 27,220,167,202,184,220, +174,183,221,104,239,217, 73, 38,103,143,230,219,241,126,190,237, 36,130, 61,155,241,184,161,201,196, 28,238,127,118,190,153,147, + 97,158, 31,189,220, 55, 59, 48,164,200,202,184, 71,179, 4,247,175, 75,121, 43, 34,253, 13,151,100,158,157,157, 83, 63,143,121, + 92,180, 81, 31, 11,221,139,142, 63,247, 7,255,196,115,254,254,235,255,155,235,191,102,123,155,232, 68,111,156,121,127, 25, 35, + 99, 57,185,164, 43, 23, 76, 15,156,222, 62,245, 23,255,249, 71,126,226,157, 31,122,236,167, 6, 43,251,187,143,110, 61, 68, 44, +159, 47, 30,169,247, 63, 61,112,144,150, 15,188,155, 22,199, 31, 32, 62,244,162,241, 11,190,246, 85, 47,162,123,254,242, 31,167, +215,253,227,119,209,137, 79,159,238,223,179,127, 66,180, 15, 31,220,236, 13,253,137,147,244, 71, 63,255, 58,122,203,235,191,158, +174, 60,176, 49,157,213,214, 73, 90,254,214, 91,137,247,237,159, 16,246, 99,234,125, 57,214,225,239,251,248,167, 31, 62,181,185, +124,152,246, 86, 89, 14, 59, 90, 93, 8, 8,231, 73, 51, 18, 79,210,184,108,174, 87, 81,230,173, 65,127,178, 1, 75, 23,235,216, +180,160,179, 11,201,156, 12, 77, 94,238,252, 44,104, 3,122,107, 99,208, 95,251,100,212,174, 85,237,174, 53,232, 51, 48,110, 30, +187, 50,202, 57,140,250,181,111,248,186,231,254,216,237, 95,118,253,215,156,234, 13,250,214,193, 5,241, 21,221, 24, 64,211,137, +222,160, 31,232,232, 23,255,224,137,135,110,250,241, 15,126, 95,111,208,255,175,254,167, 15,244,175,223,255,237, 79,158,250,237, + 17, 36,183, 84,208,211, 96,168,135, 20,251,246,227,180,245,238, 55,166, 47,249,238,175,254, 2,250,143, 63,252,103,233,117,223, +240,133,244,226,107,246,211,129, 62, 2,127, 90, 89,210,107, 94,246, 76,250,209,239,249, 42,250,165, 31,188,153, 94,124,221,213, +254,254,237, 95,253, 9,146, 79, 63, 48,242,217, 69, 65,120,180,189, 28, 65,121,191,253,123,199, 7,136,252,195,180,135,141, 93, + 46,112,236, 38, 26,247,169,116,126, 71, 46,211,235, 61,147, 65,191,245, 41,102,208,119,203,144, 93,236, 56, 68, 23, 70,231,186, +208,185,180, 87,134, 22,175,225,174, 29, 26,244, 93, 45, 29, 53,237, 85,103,131, 62,143, 75, 26,169,211,243, 15,237,187,233, 47, +126,225, 53, 95,189,121,170,183,145, 79,219,232,163, 99, 38,217, 20,234,122, 11,191,255,202,142,254,217,251, 63,245,193,191,250, +150, 7,254,206, 99, 39,151,239,234,223,254, 41,154, 26,189, 28,248,165,251, 62,243, 43, 15,126,102,235, 59,158,121,112, 99,177, + 20, 9, 18,220, 21, 7,251, 48,254,151,104,251, 61,127,143, 22, 95,246, 58,255,158, 47,122,225, 51,233,141,223,241,149,244,195, +127, 97,155, 62,254,200, 19,180,111, 99, 65,207,185,230,202,149,243, 89,254,214,207,210,246,175,255,179, 49,234, 31,189,142,210, + 59, 24,203,218, 7,236,117,236,235,254,214,119,221, 55,168,212,124,102,143,141,250,133, 44,242,148, 66, 29,234,182,151,138,103, +189,195,113, 63,156,223,142, 16,190,103,209,164,191, 28,174,247,114, 50,232, 23,108,236,180,121, 11,206,215, 59,207,243, 24,119, +192,247, 15,247,231,124, 75, 77,135,119,120,158,135,119, 57, 59,177,147,243, 57,118, 1,247,127, 54,232,243,184,172,141,250,226, + 69,215,236,127,217,161,253, 29,157, 28,216,100, 67,212,221, 71,231,251,170, 80,221,207,244,250, 95,248,216,209,255,243,237, 15, + 14, 97,247,127,213, 69,248,132, 26,211,238, 15, 62,189,249, 43,111,253,192,241,247,253,213, 47,189,246,198,237, 83,203,222, 25, + 40,154,134,239, 35,246,131, 87,209,242,215,255, 41,201,201, 79,210,226, 53,175, 35, 62, 24, 98, 52, 7,122, 99,254, 34,136,202, +125, 12, 41,247,255,242,147,180,253,190,255,135,120,168,189,247,198,156,134,148,123, 31,173,211,214,246,168,113,243,174,223,126, +240,227,191,252, 91, 15, 13,169,241,211,123,101,212,155, 22,159,231,179, 49, 28,109, 22,243,158,181,182,188,192,113, 20,162,152, +161, 97,202,145, 29, 40,230, 29,185,140,175,247,178, 48,232,107, 84,245,206, 23,155,144,245, 2,206,179,102,219,212,227,135, 90, +252, 13,231,169,127,126,104,135, 32,187,118, 46,221,251,148,184,255,147,140,237, 13,187,116,172,217,160,207,227,146,140,179,165, +223,187,223,122,232,228,135,126,111,115,185,125,240, 96, 71, 7,183,150, 52, 96,227, 30,239,170,252,249, 55,223,255,211,189, 65, +255,254,254, 61,239,239, 95,159, 84,131,174,237,211,198, 38, 47, 15,253,253,255,240,208,189,143,246,159, 89,244, 47,218,170, 19, +106, 78, 69,105,232,202,171,168,222,247,111,104,243,173,223, 70,203,255,250, 86,146,199,126,127,253, 66,120,226,225,254,125, 71, +105,243,109,223, 65,219,191,246,143,122,171,127, 96, 84,148, 35, 69,225,113,217, 32, 30, 64,118,157,208, 15,252,204,175,189,173, +255,200,239,232,247,239,186, 81, 7,222,242,121,111, 62, 74, 67,194,205,240,142,115, 68,186,151,122,180, 74,102,119,236,224, 94, +220,113, 25, 95,239,153, 12,250, 49, 58,187,102,193, 57,157,190, 70, 98,248, 72,115,207,206,119,190,189,161,137, 94,119,108,236, +128,182,229, 70,228, 2,231, 5, 53,206,217,249,142, 59,118,112,158,248,158,163,123,216, 56,229,248, 78, 35,112, 61,175, 93, 1, +200,173, 49,232, 23, 53,207,230, 49,143, 11, 53,234,244,169,199,183,127,245, 91,126,250, 35,119,189,249, 67,159,254,208, 59, 62, +126,226,161, 31, 61,246,240,177, 47,255,135, 31,252,219,247, 30,123,228,239,208,212,250,114, 72,185,159,164,220, 64,101,248,251, +201,223,121,248,212,191,249,193,127,255,241,183,111,244,145,190, 60,190, 61,210,222,198, 28, 60,235,235,224,211,137,182, 31,165, +173,119,255, 80,111,220,255, 28,109,254,235,219,104,251,221,119,211,246,127,250, 7,180,253,203, 63, 66,155, 63,255,215,104,243, + 45,223, 74, 91, 71,239,236, 63,255, 64,239, 8, 92, 61,137,210, 24, 4,174, 22,146,211, 76, 27, 7, 10,253,147,163,191,253, 91, +255,238,191,252,254, 79,211,148,122,223,218,237,232, 92, 35,166, 65, 8,228,112,179, 65,156,207, 70,137, 94,249,212,249, 9, 54, +253,157, 24,138,189,154, 4,154, 26,199, 40,238,200,153,164, 73,129,242,117,232,114,189,222,179, 24,244,215, 94,100,153,192,218, +117,218, 11,231,203, 64,129,124,251, 78,148,225,160,141, 46,222,227,243,149,198,189,249, 98,163,223, 93,146,141, 61,114,166, 54, +168,107,208,232,180,199, 25, 29,188,150, 91,207,212, 82,245, 12,116,179,221, 52,232,175,253, 44, 0, 29,206,227, 41, 58,206,150, +126, 31,140,227, 35,255,241,254,207,252,223,253,107,152,224, 87,169, 17,255,120,255,122,180,127, 61,174,239,105,101,197,172,223, +250,199,127,228, 29, 15,190,241, 85,207, 63,248,226,111,125,229, 51, 94,122,242,177, 77,226,167,239, 35,218, 95, 38,165,185,225, + 99, 27,125,164,221,191, 70, 4,251,167,222, 79,219,159, 56,230,135,227,210,159,218,162,127,255,149, 79,107, 86, 73,255,218, 92, +246, 31,185,130, 14,236,223, 71,199, 62,252,208,241,191,246,143,254,243,221, 26,165,183, 14,198, 78, 55,248, 11,105,213,122,219, +249,108,178,170,150, 54, 24,186, 55, 53,134,110, 72, 77,174,211,171,182,212,167,109, 44,123,237,217,223, 67,185, 29,230,173,106, +132,239,129,115, 59, 66,129, 32,190, 95, 29,155,195,151,219,245,234,117,173,139, 58,223,124, 30, 83,225,222, 11,224,174, 31, 81, +135,201,218,125,222,223,220, 7,107,107,219, 26,207, 99, 23,192, 32,192,235,187,255, 34, 80,222,247,194,249, 12,156,245,155,215, +116,119, 59,215,103,111,213, 84,246,153,230,146,207,193, 11,228,195,159,207,181,220, 10,243,241,189, 67, 23, 55,138, 86,192, 38, + 44,133,231,117,239, 5, 58, 51,150,190, 95, 63,207,178,130,222,185,206,121,230,174,207, 99, 87,140,250, 82, 13,247,182, 26,241, +162, 63, 59,173,175, 37,157,185,111,249,240,153,199,171,200,111,252,165,159,249,200, 15, 60,227,202,197, 15,254,119, 47,189,250, +185,167, 30,221,236, 93,131,222,144, 31,232,130,191, 62, 89,112,162,125, 7,206,206, 67, 27, 69,105,250,255,157, 94, 82,237, 29, +132, 43,158,125, 29,125,224,193,227,143,223,114,215,127,184,235,209, 39,182,222, 5, 78,198, 94,143, 99,106,208,207,123,147, 28, +140, 0, 8,216, 28,194,141,254,201,158, 8,202,137,190, 69, 35,148, 27,154,200,179, 29,195, 6,120, 11,157, 35, 61,249, 84,190, +222, 53,227,124,163,178,139, 49, 62, 55,208,206, 83,217,247,156,175,131,163, 17,232,225,139,137,210, 33, 90, 95, 39, 27,123,239, +121,172,149,163, 20,109,139,223,112,142,251,185,167,142,171,202,209,162,163,105,206,207,173,103,201, 54, 93, 40,242,255,169, 48, +207,230,241,135,112,148,115,152,209,193, 56, 63,161,155,248,208,126,244,211,253,235,132,254, 92,206,241,217,193,240, 63,250,216, +201,229, 59,255,204, 61, 31,250, 95,254,217,175,125,234,131, 7,246, 21,218,120,108,139,234,163,189,237, 29, 16,245,122, 20, 30, +254,227, 53, 47,253,111,116, 31, 54,251,104,254,177,109,226,227,167,233,138, 67,159, 67,239,188,255,209,143,127,205,247, 29,253, +190,251, 31,122,252, 95,234,185,157,160,189, 67,189, 31,213,205,245, 22,109,196,113, 49,250,223,195,113,110,212,227,237, 36,210, +191, 87, 55,151, 61,247,214,181, 41,204,141,231,248,174,225, 94,236,248, 30, 60,149,175,247, 18, 15,171,163,238,116,238, 12,247, + 97, 40, 7,220,118, 1, 37,129,155,215, 56, 6, 23, 27,225,250,177,207,209, 69,173, 53,164, 99,103, 67, 58, 51,200,111,108,114, +211,191,239,146,164,164,161,165,234,253,231,156,227,179,186,219, 60, 46,195,193,103, 74, 55, 50,239,138,126,203, 32, 59,119, 80, +189,221, 47,248,139,175,185,246,187,254,143,175,125,238,159,124,238,213,251, 22,219,167,133,182,135,182,172,125,212,206,139, 50, + 69,238, 5,190,115, 56,175, 65, 91,102,187,183,211,167,150,212,109, 85,218,216, 96,122,172,255,217, 15,189,235,145, 95,252,187, + 63,119,223,155,182,150,245, 87, 41,168,116,219,201,171, 56, 75, 26,117,151,174,109, 87,134,166,130, 91,239,125, 76,109, 95, 64, +207,246,221, 60, 47, 75,135,163, 88,199,209, 29,118,131,187,236,174,247, 73,122,238, 55,208, 42, 54, 97,108,250,242, 84,166, 0, +158, 35, 75,240,118,200,196,220,137,136,123,205, 32, 28,105,158,251,209, 39,171,190,172,233,241,195,205,249, 28,219, 67,160,222, +133,206,149,217, 82,205,227, 41, 99,212,205,176, 31,232, 95, 3, 87,237,250, 23, 92,179,255,171,110,253,138,107,255,244,183, 31, +126,230,151, 60,239,170,141,141, 65, 26,118, 56,135,218,127, 95,133,175, 28,100,224, 75,255,115, 86,142,251,167, 78, 45,235,191, +120,255, 35,191,241,166,247,124,226,231,126,253, 99, 79,252,124,255,211,223,211,204,193,201,214,160, 95, 78, 70,125, 30,243,248, +172,114, 86,206, 98,212,231, 49, 27,245,121,236,253, 88, 92,130,239, 24,146,231,150,178, 63,245,187,143,156,126,203,223,250,217, +143,189,251,239,190,227,193, 47,254,146, 23, 61,237, 75,254,236, 43,175,121,245, 43,159,123,240,217,135,246,119, 87, 94,185,224, +125,139,194,165, 15,206,229,196,178,110, 62,186, 89, 79,124,248, 19, 39, 31,190,247,125,143,252,151, 95,190,255,241, 95,249,131, + 79,111, 14, 81,204,192,127, 27,154,169, 15, 53,244, 61,227,164,207, 99, 30,243,152,199, 60,230, 49, 27,245, 51, 56,155,253,107, +211, 12,251, 96,144, 31,121,124,251, 15,254,237,111,126,250, 93,253,235,154,254,223,215, 29,220, 95,158,113, 96, 81,158,190,209, +241,190,237, 42,219,167,182,229, 51, 39, 78, 47, 63,213, 59,169,159,160, 41,197,254,152, 58, 7, 79,208,185,129,122,243,152,199, + 60,230, 49,143,121,204, 70,125,143, 13,251,200, 97, 87,163, 60, 68,218, 67,250,252,161,254,117,223,137,211,117,209,191, 58,120, +255, 16,129,111,233,107, 83, 63,179, 61, 27,243,121,204, 99, 30,243,152,199, 60,158,124,163,222, 26,119,163,199, 13, 5,238, 2, +127,162, 81, 23,248,115, 54,228,243,152,199, 60,230, 49,143,121, 60,197,140,122,107,224,205,112, 19,229,150,169,179, 17,159,199, + 60,230, 49,143,121,204, 99, 55,140,250,147,132,184,156, 13,249, 60,230,113,121,143,129,211,110,212,196, 99,243,237,152,199, 60, + 46,237,224,153, 46, 49,143,121,204, 99, 30,243,152,199,103,199, 40,243, 45,152,199, 60,230, 49,143,121,204, 99, 54,234,243,152, +199, 60,230, 49,143,121,204, 99, 54,234,243,152,199, 60,230, 49,143,121,204, 99, 54,234,243,152,199, 60,230, 49,143,121,204, 99, + 54,234,243,152,199, 60,230, 49,143,121,204, 70,125, 30,243,152,199, 60,230, 49,143,121, 60,229,199,226,203, 14,127,249,200,105, + 43, 92,168, 20,109,137,198, 50,117, 50, 19, 82, 57, 24, 38,251,103, 98,146,247, 63, 44,180, 74, 46,159, 62, 54,124, 70,244,151, +147,166, 12,235,159,162,159, 24,223, 39,170, 60,195,211,187, 86, 41,118,241,111,118,109, 26, 38,109,196,174,223, 51,117,106,213, +238,235,227,223,135, 3,251,161,152,244, 61,250, 57,137, 99, 11, 51,173,244,108, 75,215, 56,125,150, 36,206,157,253,251, 89, 15, + 39,112,110, 2,239, 43,254, 51,198, 3,234, 29,176,195,142,191, 27,186,213,145,158, 51,199, 59,147, 30,143,255, 78,224,239,249, +196,135,243,152,158,147, 62, 67,189, 55,178,246,194,252,241,250,119,137,254,127, 60,142,216, 79,194,247, 99,189,108,246,251,171, +159,100,129, 39, 20,231, 48,252, 87,216,238, 24,143,231, 36, 50, 93,127,149,169,219, 46,235, 9,248,251,196,167, 87,124,111,153, +158,238, 56,165,244, 30, 72, 29,230,142,244,199,153,186,249,225,147,236,202, 32,194, 80,188, 35, 31, 83,204, 21,210,115, 26,126, +184,148,144, 51, 28,206,167,235,191,160, 12,191,215,185, 88,117,210, 47,251,239, 26,214, 71,167,247,106, 60,215,113,254, 79,127, + 14,223,103,243,143,241, 61,210,222, 99, 34,184, 27, 49, 7,244,190,250,122,211,103, 21,107,134,210, 12, 43, 58,139,134,249, 91, +116,210, 8, 60,199, 88, 20,250,121,157, 15,130,235, 90, 68,103,230,244, 60,236,190,139, 79, 49,209, 53, 67,240,251,233,220,252, +189,122,226,211,239,245,189,172,175,161,123,114,149,241, 25, 23,102,159,125, 2,243,186,234, 92, 24, 78,107,252,187,192,115,215, + 27, 34,253,131, 30,158,195, 82,127,191,212, 47,175,112, 67, 36,118,133,241,252, 42,254,160,185,119, 62, 31,216,158, 41,251, 92, + 37, 61,231,113, 62,226,106,133,133,201,120, 92,125,128,204,120,220,216, 23,200,183, 84,134, 85, 79,249,196,154,231,230,123, 18, +115, 28,143,113, 71,144,118, 25,251, 94,138,123, 66,177,207, 72,172, 87,189, 52, 95,131,220,236,176,184, 67,216,123,112, 82, 84, + 93,215, 85,159,193,248, 30,184,119,176,217,164, 97,251,239,180,119,192, 74,104,182,116,138, 37, 48,205, 77,145,124,203,216,206, +205,148,203,236,186, 38,225, 81,219,227,237, 90,137, 4,254,148, 52,199,241,185,250,254,232,166,133,253,235,198,115,238,111,230, + 48,135,139,206, 73,246,103,100,231,133,119,114,250,158, 56,199, 56,207,241, 29, 85,215, 77,157,238, 93,126, 8,186, 25,136,221, + 39,209,121,192,107,182,252,120, 62,248,172, 22,217,160,219,188, 10,227,158, 62, 44, 48,169,117, 75,242, 7, 32,226,155, 51,249, + 3,167,213, 9,140, 22, 74, 98,194,227,147, 98,203, 33,152, 97,162,180, 15, 77, 70, 7,118,124, 22, 56, 27,156, 36,246, 75,191, +239, 18,198, 12, 22,137,200,234,164,105, 23, 77,108,199,240, 5, 18,134,212,222,104,199, 42,110, 26,237,196,107,108,214,112,155, +216, 38, 4, 79,134,196, 39,173,253,158, 5,254, 14,150,142,153,214,117,144,101, 48, 25,163,115, 6,207,140,209, 56,235,255, 43, +126,142,115,250,134, 97, 46,136, 59, 38,122, 20,150,244,104,197,157, 13,155,128,146,159, 89, 63,191, 22,220, 56,117,130, 27, 80, +193,125,107,186, 62, 48,136, 29,199, 38, 87, 56, 12,200,176, 80,151,186,160,211,181,234, 6, 98,198,132,193, 9,173,163, 81, 47, +212,245, 63,221, 24,223,163,102,102,216,120,185,234,137,137, 26,207,233,186, 55, 96,205,143,139,187,216, 83, 70, 67, 63, 24,137, +162,198, 32,206,149,196, 54, 88, 74,107,102,188, 36,137,249,128,142, 15,131,249,225,100,138,100,101,126,134,127, 25, 75,191,250, + 28, 36, 10,143, 60,230,197,244,243,226,134, 93,124, 74,135, 99, 41,234,216,185,145, 55,195,172,127,247,249, 62, 28,143,197, 55, + 85,189,125,227,231, 23,157,206,166,254, 25, 9,108,128,195, 87,143,207,168, 63,203,170,247, 96,116,162, 6, 71,141,101,124, 70, +230, 12, 87,158, 2, 4,174, 60,254,174,168, 23,180,148, 28,112,132, 67, 16, 78,147, 8,220,107, 14,163,203, 44,104, 83,199,187, + 85,235,180, 32, 11,231,109,192,230,115,236, 23, 53,238,171,221, 55,120, 14,196,178,178,229,177,175, 23, 73,235, 88, 56,187,239, +213,238,107,114,253, 98,111, 98,162, 21, 47, 69, 40,156, 51, 55, 48, 50, 57,172,195, 76, 24,142, 96, 6, 45,246, 58, 48,216,212, + 56,119,246,123,137,223, 78,159, 21,253,121,126, 95,118,150, 24,130,152,112, 78, 4,182, 76,105, 54, 86,150, 53, 27,175,128, 50, +184,196,254, 84, 99,114,170, 67, 79,186, 15,180,198, 62,230,109, 37, 56,239,244, 85,225, 44, 69,112,225,187,185,206, 19,221, 55, +212,137, 55, 71,190,221,124,195, 33,215,199, 32,211,185, 78,206, 6,249,119,143,115,188,155,246, 42,233,154,128,205,246, 89,136, +246, 88, 98,175,229,216, 36,146, 61, 30,191,161,214,241,179,195,255, 23,165,176,123,110,165, 20,194,233, 36, 48,111, 71, 47, 75, +208,224, 83,114,143, 91,131,202,226,211, 12, 2, 76,120,244,104,148,241,115,248,112, 25, 38,134,164,103,176,250,252, 25, 12,141, +197,101,220, 60, 59,243,192, 56,187,236, 5,139, 17, 16, 9, 90,244, 39,232, 45,226, 82,144,213,240,126,184,159,165,153, 92, 30, +203,195,198, 43,201,105,178,251,144, 61,229,194,173,115,193,144,113,128,251, 37,152,173,136,239,100,120, 95,225,200, 6, 20,142, + 37,183,178,129,241,100, 96,109,153,115,202,100, 72,242, 40, 69,141,123,236,163, 28,243,195, 38,167, 71, 28,156,188,112,187,127, + 85,239, 71,129,223,143, 81,121, 19,217,226,121,248, 70, 33,147, 57,234,250,121, 59,254, 93,224, 62, 37, 7, 10,156, 1, 48,172, +104, 96,109,130,244, 38,218, 55,148, 58,156,221, 16,189,219,247,143,206, 5,251,115,152,238, 95, 68, 83, 5,238,231,104,224, 41, +126,215,161,163,148,214,141,172,108, 14,204,197, 55, 70, 94,227,107,166,117,169,215, 25,134,135,194,152,233,245,143,191,109,140, +119, 60, 74, 78,155,161,109, 38, 17, 93,112,108,146, 30,217,135,177, 23, 61,126,181, 89, 55, 94,252,176,153,113, 90, 45,163,203, + 10,199, 45,130, 65,206, 52,121,171,125,253,120,191,166,251, 89,221,237,236,157,165,206,162,157,233,147, 27,122,126, 12,207,175, + 74, 60,219,149, 4, 87,147, 1,227,198, 73,234,250, 77,118,112, 42, 24,182, 55, 17, 73, 71,178,235, 95,170,186,181, 80, 14, 40, + 10,172, 67,139,180,196, 50, 26, 50, 57, 51,147,195,202,227, 60,151, 20,111,209,116, 95, 52,123,217, 58,237,133, 96, 79,173,248, +123,140,104, 57, 12,182, 25, 60, 48,202,152, 9, 21, 48,238,126, 14, 2, 89, 27,248,157, 88,230, 65,154,125, 15, 51, 22,238, 64, +163,195,178,154,108, 36,207, 6, 82, 24, 37,145,118,219,247, 8,187,216,252,194, 12,147,228,243,146,106,142, 85, 56, 28, 85,150, +112,111,117, 13, 23, 78,251, 45, 53, 6, 28,141, 55,169, 3,111,182,132, 57,246, 50,134, 12,182, 69,213,150, 5, 28,231,113,149, + 49,163,180,172, 97,228,253,126, 87,113, 7, 58,219, 64, 78,247, 65, 32, 47,199, 12,171,157, 37, 69,230,195,218,174,144,173, 94, + 20,184, 64,155, 98,131,199, 26,155,139,110,214, 26, 29, 79, 49, 0,187,193,176, 3, 69,148, 38, 43,233,241, 48,188,106,124,106, +108,104,110,200,212, 50, 51,230,177, 96, 54, 88,186,145, 53,156, 77, 81, 44,155,183,167,209,135, 26, 20,255, 17,156,207,100,236, +112, 29,228,236,130, 27, 87, 14, 87, 47,210, 32,182, 65,174,139,226,155,180,182, 70,154, 53, 61, 20,114, 15,159, 5, 82,176, 80, +218,224,182, 76,193, 28,145,152,196,218,245, 84,144,230, 98,205,185, 19,209, 8,134,241,222,169, 81, 43,156, 50, 20,118,255, 10, +184,153,204,217, 51,102, 76, 9,193,164, 19,129, 20, 49,135,225,133,105,152,178, 9, 12,199, 23, 72, 7, 23,119, 0, 56, 69,211, +118,150, 37,127, 90,231,140,221,185, 49,220,155, 54, 45, 48,118,195,117,117,227,247,151, 40, 23, 80, 68,103,113, 68,184, 70,157, + 3, 21,114, 23, 67, 44, 95,212,105,233, 10,107, 65,197, 34,115,245,218,213,120,155, 51,103,206,119,193,247,132,233, 12, 67,143, + 70, 70, 36,151, 26, 56, 28, 53, 18, 88, 71, 41, 82, 99,207,185,242,184,221, 67,182, 44, 21,120, 24, 28,203, 72,161,231, 8,111, +250,123, 50,196,162,169, 76,198,247,176, 27,133,136,226, 57,140,187,222,222, 33,115,210,105, 52, 30,145,149, 26,184, 50, 57,114, + 34, 77,170, 97,216,140,224, 25, 22,221,123,134, 59, 86,237,169, 12, 14,134,206,245,186,146,200,183, 53, 18,169,119,243,243,151, +169,252,196, 41, 83, 42, 77,134,119,124,142, 16,118,187,115,100,137,125, 77, 7, 20,219,165,173, 12, 5, 89,168,194,217,144, 77, + 27,126,153,230,132, 62, 91, 72,244,249,140, 27,239,183, 6, 22,197,253, 43,105, 2,243,216,127,184,241,179,101,197,218,114,206, +166,233,125, 19,176,248,246,119, 81, 67,148,162, 74, 8, 59, 43,126, 31, 58,250,220, 62, 69, 74, 6, 93, 56,175,123, 43, 5,180, +233,228,200,222,197,131,177,223, 47,209,241, 5,135,197, 83,239, 77,246,218, 3, 44, 42,201, 9,182,204, 99,172,165, 40, 7,132, + 49,167,100,212,219,247, 82, 74,201,151, 53,251,255, 52,255,134,140, 31, 87,141,200, 9, 50, 57,195, 62, 82,214,167,134, 33, 23, + 4, 78, 21,222, 96,142,108, 24,100,112, 45,184, 50,103,103, 81, 56, 71,205,195,173,232, 10,120,168, 66,145,124, 98,140,178,167, +213,192,201, 0,115, 68,194,196, 43, 81,168,111, 13, 37, 60,101,129, 52,155, 71,200, 77,105,134,121,117, 2,141,229, 2,136, 68, + 69, 96,193,106,164, 73,140, 11,162,172,250, 10,152,130, 55,195,194,148,235, 43, 77, 93,179,164,243,136, 40,126, 74, 9,194, 6, +170,147,175, 27, 83,156,145, 58,182, 7,230, 89, 0, 76,236,149,105, 97,217,121, 12,155,236,184,184,139, 46,190, 66,238, 61, 70, +202, 95,220,136,216,195,182,148, 19, 75,212,130, 24, 34,127,223,212, 56,188, 1,187,254, 2,179, 54,162,123,115, 64, 20,131, 32, +225, 32,165,103,228,233,239, 48,190,177, 52, 75, 78, 51,115, 78,151,162,113, 47, 66, 77,153, 71,235,155,120,221,240, 28, 58,153, +210,178, 4, 53,237, 66, 80,199, 5,231,178,112,202,229,128,179, 18, 89, 7, 75, 51,122, 52, 78,150, 86,159,158,203, 66,207,163, + 88,228,174, 24, 20,143,210,201,106,237, 83, 73,165, 88, 20,103,231, 39,120, 78,154, 81,225,108,156,160,162,183,130,239,224,180, + 75,114,206,202,123, 61, 55,140,176,173,130, 97,179,169, 44, 9,129, 17, 27,228,228, 26,248,103,224, 24, 44,144, 97,146,168,209, +143,243, 21,106,197, 98, 62,166,104, 74, 93,166,103, 80, 97,166,216,249, 87,216,200,164,194, 78, 9,207,190, 43,134,193,224, 28, +129,233,170, 17, 41,250,239, 26, 43,124, 40,171,232, 4, 31, 82,159,246, 92,198, 84,168, 93, 11, 24, 99,150, 92, 59,183, 77,188, +106,100, 91,154,108,130, 27, 99, 2,195,204,240, 30,116,190, 74,137, 44, 81,137,249, 45,128, 35, 24,174,205,157, 82, 72, 15,139, +228,148, 62,227,186, 45, 77,101, 94, 34,136, 32, 89, 13,241, 69,247,163, 42, 24,177, 7, 46, 69, 96,191, 10,103,111, 93,109, 28, +231,169,192,116, 99, 48,226,109,169, 32, 48, 23,246, 63,143,250, 61,211, 35, 9,121,132,206, 73,197, 32, 81, 2,127,226,126, 34, + 56,111,145, 89, 44,190,190,132,172,172,201, 41, 34, 71,131,206, 24,136, 17,135,125,210,231, 80, 88, 34, 53,143,129,138,167,221, + 4, 12, 46,141,198,188,154, 67,211,133,109,178,183, 21,199, 43,173,150,209, 8,237, 71,141,185,225,115, 79,116,245,212,240,232, +198, 57, 90, 35,253,185,176,186,164, 27,119,191,200,236,245, 71, 68,139, 73,171,180,203,164,136, 7,103, 29,167, 84, 50,231, 9, + 33, 12,222,159,120, 29,220, 38,169,195, 24, 82,109, 87,255,110,168, 41,161,214, 53,246,205, 56,101,142,113,255,147, 12, 80, 41, +232,105, 83,118, 24, 56, 69, 3,156, 82, 91, 98,233,153, 2, 94,175,166,214, 28,188,149,192, 82, 76, 57, 73,142, 48,186,254,111, + 93, 89, 73,191,155,129, 71,224, 70, 74,239,235,239,113,162,238, 91, 83,127, 75,152,142,113,179, 43,185,204,193, 43, 21, 12,207, + 42, 88,242,150,225, 89, 89, 68, 94,210,166,214,150, 18,204,104,113,204,129, 38,211,225,155,150,101, 52,244, 2,221, 91,206,110, +190, 71,236, 29,100, 43,208,147, 22,187,119,220,148, 78, 36, 47,106, 75,253,217,117, 5,234, 64,220,227, 40,234,176, 21, 77,173, +118, 35,254, 4,140,183, 70,232, 5, 34,242,130, 6, 94,196, 61,127, 78,128,201, 56,134,164,123, 32,107, 82, 64,195, 23, 86,200, + 57, 97,210, 87, 50,184,105, 0,255,233,130,239,108,222,168,147,215,217, 17,164,122,164, 84,245, 58, 45,189,105, 78,230,180, 17, +139, 59,147,211, 86, 2, 53,118,116, 8, 36,167, 91, 69, 8,162,137, 41,242,245,244,169, 58, 13, 83, 54, 76,103, 72, 97,127, 54, +182, 23, 21, 12, 2,166,208,125,204, 32, 86,157, 79, 2, 37, 34,139,230, 11,236, 87, 34,185, 22,222, 89, 9, 4,162,196, 12,226, +130,115,119,252,137,228,242, 46,163, 81,194,116,172,174, 9,230,198,191,154,230,135,101,137, 24, 2, 34,204,106,141, 64, 64, 50, + 71, 98,114,114,204,249,242, 0,137, 37,213, 87, 5,246,179,182,156,110,166, 16, 83,211, 67,246,164, 86,168,135,235, 69,212, 53, +233,120, 2,227,215, 64,107, 51,166, 39,239,230,171,165,106, 40, 97, 32,162,164,194,206,103,153, 10,241,107,147, 6, 60,199,105, +223, 44,238, 32,101, 0,172,225, 86,248, 12,217,193, 48,232, 77,233,146, 41,165,210, 89, 56,239,151, 5,174,219,239, 55, 96,179, +212,225,173,122, 35,108,189,133, 19, 11, 40, 39,155,231, 16,216,162, 93, 98,205,136, 76, 54,153, 61, 48, 35,116,194, 0,211, 80, +205,161, 54,160, 98,157,246,232,133, 45,224, 10,105,218,132,210,100, 52, 58,250,160,121,125,238,217,128,104,133, 27,208,157, 80, +147,122,101, 79,149,121,125,152, 48,221,175,199,226,240,192, 48, 83, 32,224,104, 8, 71,234,150, 97, 2,120,157,147, 17,184, 53, +149, 22, 4, 82,236, 81,255, 66,116,175,109,100,188,130, 90,143, 8,118,213, 41,102,132,180, 83,142,198,170,192,125, 5,112,160, +213, 0,171, 4, 80,131,160,254,107, 0,144,194,232,113,138,130,150,166, 25,225, 95,167,145,102,160, 52, 5, 48,214, 96,236,168, +137,242,192, 89,192,115, 14, 67, 33, 9,215, 16,169,250, 72,162,217,220,169, 2,169, 46,189, 38,195,109, 48, 0,213,108, 99, 55, + 99, 92, 32,106,199,249,133, 27,100,199,232, 16,134, 49,181,133, 26,191,159, 28,150,113,126, 49, 32,243, 75,227,161, 67,244, 55, + 45, 40,241,164,157,221,139, 14, 54, 47,223, 52,172,102,206, 17,133, 21,221,112,212, 57,247,107, 43, 80, 63, 12, 32, 78, 56, 68, + 57, 58,111,192, 30, 88,107,131, 84,162, 88,253, 89,162,230, 61,221, 31, 43, 81, 77,169,116,115, 44,170,103, 16, 74, 68,213,122, +225,149,197, 29,217,201, 0, 27,128,114, 58,195, 49,186, 67, 99, 37, 16, 69,154,115, 33,158, 75, 25,235,152, 75, 70,244,111, 48, + 30,170,215,225,217, 81,230, 14,137,211, 96,128,137, 87,139,224, 86,218, 99,214,182,146, 17, 49,143,251,214,184, 6, 58, 63,199, +170,207, 61,230, 16, 0,164, 34, 15, 26,224, 47,150, 12,239, 2, 28,209,228,223,135, 67,194,250,240,121, 77, 54,210,192,198,146, + 88, 22, 78,223,112, 87, 2, 89, 30,211,181,151,126, 35,214,210,132,197, 41, 77,118, 34,130, 24,210, 50,137, 4, 99, 70,215,168, + 95, 15,248,228,213,144,234, 99, 42, 88,178,247,162,142, 30,154,109, 65, 39, 5, 35,113, 48,142,109,128,185, 66, 85, 49, 67, 14, +243,166,182, 44, 5,110,114,168,186,159,113, 97,207,136,133,227, 16, 14, 83,251,243,246, 41,100, 6, 74, 32,127, 87,210,232, 88, +246, 77,123,182, 36,188, 74,193,140,100, 19, 37,153,243, 90, 43,172, 75, 4,228, 73,100,118, 45, 96, 41,148,113, 63, 81, 91,103, +159,135, 35,144,119, 41,144,199, 54,246, 66,102,151,144,165,247, 21, 16, 61,101,197,234,180, 70, 24,162, 18,243,234, 83,106, 2, +235, 58,176,230, 74,138,122,128,234,226,155,166,214,213,106, 51,217, 24,234,235,162,145, 92,129,135,100, 57, 22, 17,159,172,204, +145, 38, 36, 72,211, 23, 77,111, 79,105,147,140,128, 23,143,196,162,150, 85, 74,190, 14, 96, 49,120, 58,135, 82, 36, 31,121, 98, + 79,183, 11,162,193,201, 35, 4,187,110,105,192,109,136,190,198, 61, 91,180, 6,107, 70,205,162, 97, 1,195, 88, 0,156, 24,115, +106, 50, 7, 75, 69,225, 70, 93,136, 82, 70,133, 20, 81,206, 45, 32,208, 83, 73,146, 60, 98,191, 38, 48,174,150, 93,106,169,111, +182, 56, 58, 78, 60, 8,175,235, 14,143,165, 32, 40, 9, 29, 33, 18, 44,222,171,113, 81,195, 84,216,157,163,201, 25, 16, 77,129, +149,148,150,102,141,190,166, 20, 55, 43,208,211, 12,136,126, 54, 2,110,189,215,172,181,227,233,107,187,142, 61, 90,137, 58,174, + 56,192,174, 51, 58,137, 71,225,122, 93, 14,168, 25,230,110, 25, 83,243,108,105, 58, 45, 31, 20, 68, 2,115,170,238,233,253,176, +147, 43,193,230, 72,204, 14, 52, 48, 2, 78, 36,214,228,217, 61,119,134, 40,121,169, 0,194,194,156, 0, 57, 78, 31, 29,140, 59, + 87, 63,230, 18, 92,121, 95, 0,117,186,211, 27, 93, 73,128, 49, 86,131, 63, 45,231,162,231, 84,192,136,151, 49, 59, 49,172,219, + 42,144, 92,129, 20,205,144, 22, 23, 71, 37,103,194,103, 98, 85,104, 38,174,232, 92, 90,208, 84,155,246,154, 63, 75,206,192,177, +213, 95, 99,173, 14,255,218,178,247, 58,118, 96,218,243,138,214,186,209, 73,136, 52,103, 0,181,136,195, 25,163,222,121,136, 4, +101,206,230,149, 6,123,194, 92,146,129, 64, 50, 85,193, 77, 93,191,179,106, 20, 91,189, 62, 26, 70,219,172,202,132,254,135,122, + 42, 82, 14, 57,211,108,199,121, 61,188,106, 85,119, 78, 2,251,144, 64, 29, 88, 54, 5, 70, 79,115,141, 2,120,151,228,112,227, +121, 50,166,208, 17,225,158,163,215, 64,189,175, 98, 15,176,174,205, 80,214, 96, 94,165,135, 6,131,136, 82, 90, 60,131, 96,129, + 58,218,100,140,253, 30, 87,201,199,133,160, 40,147,125,193, 14,217,156, 7, 67, 62,101,253,244, 58, 75,209, 61,196,102,100, 25, + 29,110,204,224, 90,109,220, 50, 94, 69,231,231, 82, 51, 99,198, 52, 50,251, 84, 36, 50,216,195, 70, 52, 57, 18,101,220, 79,150, +106,220, 23,206, 55, 47,211, 54, 84, 74, 84,187, 17,111,236,188, 92,182,104,172, 36, 80,211,116,103, 75, 70,193, 91,148, 89,192, +235,109, 96,235,211, 67,140,132,162,123,157, 64,235,170,146,211,194, 14,246, 25, 83,106,101, 60,183,174,161,169,173,162,231, 97, +147, 67,220, 5, 11, 0,187, 32, 85,196,185,110, 59,188,107, 9,165, 4, 75, 93, 91, 68,140,245,241, 66,136, 4,141,122, 76,251, +221, 9,180, 5,155,142,164,146,129,128,115, 21, 84,175,201,232, 20,224,185, 34, 79, 57, 60,237,194,171,209, 31, 65, 58, 74, 52, +210, 49, 32, 24,166,171, 45,226,152, 82,203,178,226,157, 91,165,192,241, 18, 2,153, 30,142, 58,120,181,180,235, 0, 30,177, 26, + 42,208, 71, 44, 19,192, 80,202, 40,138,226, 52,132,121, 74,201, 26, 56,205,129,106, 80,118,209,235, 93,104, 54,104,201,147, 83, +233, 53, 84, 7,231,229,224,162,211,141,104,187,143, 52,221,155,214,250,172, 59,176, 84,220,192, 48, 96, 59, 74,131,176, 47, 8, +212,202,148,144, 84,126, 89, 5,255,181, 78, 83,161,228,158, 10, 37, 13, 4,230,182,166,162,165, 52, 42, 9,217,108,153, 17,187, +111,162, 40,127, 51,212,200,121,183,243,169, 37, 12,171,165,250, 82, 41, 14, 1, 94, 94,229,230,148,221,234, 40, 64, 76, 86,219, +180,140,224, 84, 14,224,224,252,121,129,148, 87, 25, 56,138,243,177,103,238,148, 58,168, 55, 10, 56,241, 85,162,238, 94, 45, 82, +243,140, 92, 73, 96,241, 41,179,210,112,247, 25, 0,173, 16, 20, 84, 10,218, 17, 98, 53, 10,212,117,141,214,104,169,114, 6,140, + 3, 97, 68, 13,215, 92,213,168, 12,127, 43, 94,106,171,126, 30, 85, 16, 20, 88,162,254,205,145,186,182,232, 94,146,193, 23, 0, +164,182, 98, 9, 88, 22,108,172,101,179, 7, 50,101, 70, 68,203,109,183, 52,103, 69, 92,147, 6, 89,142, 45, 18,172,201,115, 42, +103,250, 61, 46, 37,167,249, 89,146,241, 46,220,102,175, 50,184,140,145,190,138,107,172, 16,148, 59,162,204, 20,249,243, 72,195, + 11,170, 41, 88,198, 88, 50,144, 77,212,112, 27,143,158, 69, 60,235,231,193,165,239,207, 60,101, 89, 25,168,192, 33, 78, 18,207, +207, 74, 33, 85,241, 64,253,255,182,244, 1, 15, 24, 21, 67,188,219,164,173,186, 70,170, 34,236,141, 65, 48,166,223, 59, 46, 30, +221,224, 70,230,117,118,216, 44, 29,167, 1,209,232,178,165, 68, 73, 54,114,150, 86, 47,224,193, 5,136, 45,170,136,150, 70,116, + 47,185,106,109, 26,144,139, 82,193,248, 58, 48,132,129,244, 66,224,148,160, 95,108, 6, 76,143,167,128, 52,140,228, 43,166,215, + 37, 3, 34, 8, 0, 19,200,220,183,168,161,168,161,112, 35,168, 27, 46,210, 14,208,235,207,117,166,184, 71,190, 88, 56,248,151, + 9,203,156, 22,223, 68, 65,140, 8, 77, 82,221,201,193,118, 21,232, 28,232,125,115, 60,175, 82, 56, 34,121,155, 7, 37, 68, 53, +204,201, 27, 54,233, 5, 68,187,211, 36,171,186, 97, 14,148, 35, 67,127,199,245,111,203,228,112, 85,219, 14, 52,216,241,114,195, + 32, 18,163, 40,245, 2, 78, 72,135,243,173, 4,128,207,178, 27,139,148, 69,178,180, 40, 80,229,120,224,107, 14, 60,244,233,188, + 12,180, 85,160,124, 51,206, 49,189, 71,204, 19,168,106,255, 96,236,198,227, 83,166,217,113,160,222, 11, 8,104,148,148,150,151, +184,255,176,233, 21,230, 44, 90, 4,233, 68,145, 0, 20,226, 94,154, 32,114,236,112,187,241,119,219,117, 9,217,142,225, 25,118, +206,225,237,156,253,193, 32,104, 36,145,166, 21, 73,184, 16,155,161, 53, 17,226,160, 30, 11,155,152, 25,180, 40, 37, 73,142,108, +134,181, 40,145, 93,169, 6,230,246,239,116,206, 66,195,243,102,199,208, 36,254,140,129, 64, 97,222, 10,148,153,108, 83, 21, 72, + 83, 24,206, 1,179, 23,219, 85,130,255,139, 25, 52,201,130, 17,200,113, 47,137,179, 60,165, 56, 11,148, 80, 70,148,177, 81,239, + 10,240, 41,252, 51,211,220, 50,102, 9, 98, 22, 48, 0,112, 62, 51, 79,223, 58,214,190, 53,250, 50,195, 92, 56,156,129, 42, 1, +182,115,202,154, 70,246,108, 70, 66,163,224,162, 6,166,141,184, 83, 56,209, 96, 49, 37,237, 83,146, 82,179, 83, 68,203, 43,185, +119,214,115, 95, 4, 43, 24, 64,195,144, 41,229,112,251,152, 57,131,131, 0, 0,202,148, 29,136, 21,173, 19,225,140,225,106,153, + 33,190,103, 67,202,190,193, 14, 85,194,108, 76, 56,116,152,129,137, 76, 38, 39,129, 23, 14,175,169,201,200, 67,160,161,108,135, +209, 30, 89, 54, 25, 84,130, 12,131, 85,212,238, 77,152,144,222, 64,107, 0, 60, 36,210, 22, 60, 57,215, 46,236, 4, 40, 65,172, +171, 15,118,105,169, 0,161,193,246, 44, 54,186, 46,140, 34, 3,130,123, 48, 88, 30,253,150,100, 28, 25,235,114,190, 89, 51, 76, +248,168,185, 22,168,247, 86,137,197, 95, 52, 85, 84, 7,210, 60,136,134,116, 86,235,102,106, 12, 91,127,244, 46, 12,169,165, 55, +208, 11, 54, 49,130,142, 86,244, 97, 48,121,146, 60, 70,219, 46, 13, 53,137, 25,114,100,218, 51, 3,141,143, 37,170,200,238,121, + 5, 16,138,129,206, 97,136,211,186, 2, 38,137, 69,195, 14,138, 1,254,120, 42,210, 3,138, 91,116,143, 31,193, 65,154,154,166, + 48, 86,163, 66, 22, 77,142,217,152,130,238, 88, 51, 43,150,106,210, 77,171,144, 71,174,104, 68,138, 34,246, 55,116, 46, 44, 13, + 61,218,143, 83,189, 49, 57, 53,138,136,104,132, 87,194,145,216,208, 13,142,128,227,239, 17,167, 11,151, 72,176, 20,116, 1, 44, + 33,125, 60,156,203, 6,164, 44, 43, 5,122,188,227,136, 12,167,107,159,190,223, 40,103, 38,140, 50,122,205, 69, 28,145,187,232, +255,190, 49,214, 91, 39,241,155,241, 59,235, 68, 93,219, 26, 22,209, 40,214, 0, 4, 48,141,200,188,102, 95, 48, 91, 65,137,147, + 62,166,254,181, 20, 82,184,161,188, 8, 8,232, 64,184,209,150, 87,156,162,196,188, 30,144,132, 42,130,186, 33,109,240,130,194, +207, 55,148, 54,130, 61, 53,246, 54, 37, 51,243,238,101, 2,101, 97, 42, 19,105,106,184,150, 24,208,241,226,120,117,173,204,179, + 4,135, 29,132,122,204, 70,150,138,142,186, 33,172, 45,202, 45,171, 26, 15,156,179, 0, 81,198, 43, 64,173,148, 21,196,167,229, +182, 44, 19,179,212,181,159,140,130, 12, 37,132, 8, 38, 42, 82,222,120,114, 8,106,230, 19, 58,238,131,146,113, 98, 40,183, 77, +115, 96, 16,214, 89, 88, 6, 83,168, 1, 70, 33, 70, 37, 11, 74, 5,248,117,226, 50, 91, 38,101,188,140,126, 87, 95, 42,243,127, + 73, 1, 30, 52, 44, 64,161, 0, 32, 18,102, 90, 56, 59,144, 1, 12,105,197,184, 40,171,196, 49, 37,128,100,149,200,170, 58, 64, +214, 49, 4, 37,202, 24,173, 6,146, 3,131, 75,148, 95, 27, 67, 77, 43,101,196,196, 64,139,138, 75,163, 5,194,140,146, 88,224, + 57, 52, 92,239,150,190,140,224,103, 2, 26,158,149, 95, 70, 39, 16,116, 15,136,179, 19,224, 41,118, 88,187, 30,171,115,147,208, +213, 64,208,246, 11,211,116, 41, 37,241,155,140,113, 61,125,157, 57,192,195, 62, 58,130, 25,181,164,168, 89, 26,203, 48, 17,100, +202, 28,251,160,107,111, 40,255, 77,217,129,234, 2, 74,139, 33,154,145,132,122,167, 0,180, 16,114, 18, 33,205,164,155, 42, 99, +125,164, 68,234, 83,132, 87, 56,164,164, 27, 51, 65,218,200, 34,212,142,197, 35, 48, 55,192,131, 2,153,184,204,146, 59, 26,152, +234, 53,144,122, 17,240,204, 26,138, 94, 82,159,227, 21, 66, 99,166, 13,113, 0,189, 36, 69, 81, 25,112,193,171,133,119,247,164, + 71, 73, 81,137,180, 74,251,149,104, 72, 45, 77,202, 73,144,129, 27, 89,219, 72,227, 58,242,147, 25, 0, 52,224, 52, 97,234, 54, + 30, 86,186,175,120,237,142,204,133,109,107,161,128, 52, 3,127,237,227, 73,166,115,171,223, 57, 7,145,151, 69,255,222,173, 58, + 69,232, 83,217,163,172, 56, 30,251, 0, 24,103,124,211,165, 1,165,152, 28,141,188,193,161,110,134,180, 38,214,205,183, 80, 32, + 73, 43, 69, 54,161,148, 44, 19,234, 94, 49,141, 28, 77, 53,222,253,185, 90,136,110, 66, 72, 60,100, 14, 2,152, 85, 58, 30,223, + 35,181, 38,177, 23,166, 76,181, 43,118, 63, 96,243,198,159,101,208, 96,240, 81, 45, 61, 95, 5,152,222, 40, 26,209, 72,216, 58, + 91,192,210, 73,132,140, 59, 67,232,139,211, 15, 71,100, 21,242,124, 37,180, 20,166,107,162, 44, 27,172, 0,177, 42, 13,147, 70, +203, 43,146, 68,103,106,192,142, 36,202, 77,228,104,223, 41,187, 82,165,137,169, 70,197, 44, 90,225,198, 87,201,226, 83, 85, 40, +161,168, 5,106,187,220,176, 3, 8, 36, 78, 61, 67, 8,145,147, 69,111, 5,138, 87, 5, 36,121,188, 6,168,179,180, 2, 93, 73, + 28,116, 90,147, 81, 22,216, 59, 44,183,192,128, 76, 46,109,125, 22,121,208, 72,197,100,201,249, 54,225, 68, 5,181,210, 77, 85, + 33,195,174, 83,236, 67, 85,108, 2,212,246,151, 80,158, 27, 29,171,130, 34, 80, 5, 34,111,110,192, 12,226, 64,181, 40, 1,138, + 43,249,185, 90,160,144,227, 33, 66, 22, 27, 0,115, 32,152,211,178,135, 88, 83,220, 92, 64, 70,181, 21,157, 90, 9,167, 37, 9, +199, 33, 75, 41,105,124,175, 32,243, 36,201, 24,103, 52,136, 64, 89,132, 83,116, 78, 18,216, 16,209,192, 8,245, 18, 86, 20, 80, +157, 7, 47, 0, 1,130,140, 78,137,108, 78,176, 6, 80,203, 74,180,212, 8,242, 62, 45,149, 77, 69,179, 60,155, 92,131,222, 93, + 20, 99, 33,160, 72, 25,138,141, 17, 48, 88, 80, 80, 52, 35,186,224,210,173,168,232, 44, 5, 80,213, 38,126, 1, 8, 62,210,232, +194, 40,216,148, 36, 46, 56, 16,214, 43, 56,234,156,166,119, 20,162, 84,175, 23, 13,187,102,208,128,244, 86,116,173, 69,142,201, +197,112,209, 73,130,208,210,255,130, 17, 94,195, 59, 55,113, 25, 51, 18, 54,121,145, 2,209,128,220,164, 1,118, 24,162,124, 76, + 75,193, 2, 46,148, 65,115, 40,202,144,167,185,100,212,166, 1, 42, 40,138,116,133, 66, 35, 91, 0,180, 83,146,254, 48,143, 41, + 99,198,201,201, 0, 90, 76,245, 49,142,122, 42,164,164,189,122,203,192, 59,230,201, 73, 25,254,126,176, 76,139, 96, 99, 52,232, +197,235,116, 75,240,248,247,117, 81,107, 55, 14,238, 80,243,217, 2,222, 48, 3, 11,149, 20, 0,181,209,177,215,127, 55, 10,195, +166, 88, 82, 57,195, 0,150, 62,161, 75,200,201, 46, 0, 40, 57,165, 30, 5, 12,172, 56, 16,199,234,166, 62,129,134, 19,174, 33, +246,130, 32,157, 66,173,214, 59,164,209, 36,244,195,113, 35,143, 58, 57,235,249, 87, 16,105,162,182, 34,217, 4, 84, 5,194, 39, +129, 53, 38,206,217, 78, 10, 92, 9,116, 19,231, 72, 14,112, 67,174,114,113, 32,143, 36,225,111,224, 1,155,242, 92,147, 6,197, +232, 95,198, 52,191, 56, 90, 90,128, 79, 39,133, 18,248, 77, 72, 32,226,111,121,210, 28, 0,193,148, 34,150,140,153,147, 41, 43, +215, 74,157, 22, 48,204,145,158,111,176,208,133, 60, 69,143,207, 47,107,115,176, 70,199, 89, 48, 37,145,181, 0,232, 91, 97,234, + 20,247,191, 80, 51, 34,107, 72, 8, 53,250,226, 20,218,233, 46, 21,172, 72,121,115, 92,170,127,207, 20,201,141,233,254,113,109, + 23, 23,183,177, 0,222,128, 85,196,220,100,122,216, 17, 15,168,200,150,203, 43,130, 25,240, 70,201, 44,171, 2, 82,163, 16,137, +193, 82, 73, 84, 61,206,217, 38,202, 96, 79, 2,177, 29,228,154,155,248, 14, 3,117,176, 21,211, 9, 57,114, 20,169,145,204, 34, + 1,229,183,160, 2, 2, 91,200,179, 83, 28,202,115,210,158,103, 56,201,157,123, 96, 5,246,125, 78, 58, 1,228, 24,143,170,223, + 81,147, 96,168, 35,223, 9,128,110, 44,192, 10,145, 96, 42, 0,133, 45,148,117, 56,199,165,206,143, 87, 55,111, 25,207,115, 49, +214,114, 11, 39, 0,200,240,179,106,104, 72, 16,228,168, 28, 41,181,162, 0, 43,134, 72,158, 17,124, 65,109, 58,145,136,207,196, + 86,129,136,195, 37, 20,161, 78,198,171, 22,209, 63, 27,224,183,216,240,167, 90,176, 78, 86, 6,217, 68,151,163,148,188,176,129, +147,139,155, 66,113,222, 34,212, 97, 65, 52, 1, 27,200, 20,206,109, 56,186,204, 58,214,250, 90, 8,155, 80, 1,189, 98,135,227, + 71,251, 20, 67,114,199, 4,103,255,126, 75, 98, 90, 67, 20, 73,138,127, 90, 95,113, 17, 20,130, 72, 81,109, 24, 77, 17,182,165, +163, 59,189, 7, 29, 71, 9,198, 1,100, 83,184, 57,213,124,244,189, 75,125, 62, 54, 17,247, 73,120,198,126,143,244, 81,141, 17, +121, 25,106,213,177,185,143, 92,111,173, 15, 85, 80,200, 27,126,191, 81,108,193, 85, 55,222, 94,179,132,247, 14,115,182, 43,224, +120,137, 4,251, 65, 12,172, 36,176,192,139, 99, 16, 88,211,111, 35, 66,123, 76,193,218, 26,152,194,162, 73,118,182,142,127, 31, +163,241, 98, 72,123, 43, 39, 76,145,236,160, 41, 80, 20,177,159,203,123,202,203,183,101,204, 29,240,114,217,227, 69,211,163,110, +155,119,184, 12, 76, 2, 45,198, 54, 82, 76, 95, 31,177, 62, 57, 39, 29,141, 91, 60,149,220,121,148, 83, 0, 16, 42,205,122,170, + 88,103,166, 86,112,133, 18,238, 69, 26,220, 74, 75,179, 66,223, 77, 32,202,172, 76, 80,210,106,165,164, 81, 1,142, 93, 33,145, + 37, 55,157, 41,134,127, 25,217, 53, 12,197, 50, 78, 58, 54,147,209,237, 34,189,109, 37, 65,230,100,188,186,100,192,128, 11, 14, +217, 12,151,178,165, 53, 74,146,198, 86,193,107,131,136,223,249,196, 73,183,187,186, 35,229,234,149, 78,133, 18,136, 50,217, 51, +145,194,185,111, 74,213,123, 81,206,212,240, 67, 76,162,152, 39,240,163, 59, 3, 0,128, 92,145,163,110,241,222,156,231, 73, 35, +149,154, 24, 53, 68,185, 95,135, 68, 23, 5,226,220, 72, 6, 69,116,114,119, 41, 81,130,120, 24, 55, 55,250,141, 2,165,180, 34, +103, 77,170,189,149, 87,118, 5,186, 26, 40,146,146, 24, 73, 97, 67, 4, 88, 17,230, 48, 10, 38,125,149,185, 85,129,243, 63,237, +195, 1, 50,119,225,117,100,168, 36, 65, 32,197,119, 41,150,194,215, 84,205,165, 56,201,160, 7, 85,101, 21, 40, 19,133, 61, 92, + 44, 37,116,152,145,136, 88, 40, 60,113,227,117,150,148, 40,206, 96, 11,211,212, 45, 58,235,184, 80,211, 95, 64,178,192, 9,208, + 47,108,195,198, 19, 76, 92, 81,192,194, 58, 55, 93, 12,240,160,160,150, 2,169,108,221,168, 37, 59, 57,147,193,233,112,193, 86, +136,174,166,141,180,166,135, 22,228,254,174,148, 4, 26, 49, 48, 97,210,126, 46,228,155, 67,214,234,143,137,108, 64,190, 49,213, + 6,212,177,165,160, 64,207, 84,235, 69,154,133,167,223,213,229,171, 64,157,152,140, 35,131, 78,117,174, 91, 21,164,222,105,180, +178, 80,197,174,253, 67, 74, 93,211,215,251,251,205,111,248,251, 88,227,209,251,177,173, 19,110, 41,197,233,124,251, 53,187, 51, +130,122,116, 2,119,138, 80,158,234,149,117, 4,115, 89,250,100,152, 67, 11,182,242, 66,113, 99, 55,124,118, 57,162,212,130,225, + 16,202,111, 37, 34,102, 75, 63,119,156,144,177, 17, 73, 84, 5, 26,150,209, 97,224,146, 50,104,192, 91,149, 64, 65,107,234,172, + 84,243,118,151,238,164,117,150,134,210,140, 4, 47, 34, 21,110, 77,105,202,162,191,226,210, 65, 62,106,181,179, 26, 49,254,172, +100, 21, 62,233, 18,194,187,112, 86,211, 98, 9,177, 2,177, 77,222, 13, 74, 77,221,192,200,128,167,240,111,225, 0,173, 22,236, +164,161,153,138,202, 89,179,206,128,100,165,137,204,106,219,139,169, 74,208, 74,155,102, 30,216, 4, 17, 32,118,154,206,205,106, +116, 85,157,205, 37, 56, 19,222,100, 5,140,253, 98, 40,145, 72,142,138,196, 27,148,212, 70,248, 9, 64,149, 10, 96, 51, 85,186, + 2,169,221,156,101,181,245, 55,148,102,100, 85,109, 5, 37, 85, 57,115,143, 49,244, 29,241, 21,165,237,165, 0, 90,233, 2,200, + 31, 4, 48,174, 83,121,163,134,209, 2,106,109,168,179, 31,236,163, 18, 64, 47,124, 30, 18,204,146, 10, 44, 7,204, 52, 22,206, +133, 82, 15,188, 18, 61,150, 82,115, 42,156,223, 45,136, 13,244,113, 34,248,145,140, 89,104,179,135,153, 98, 22, 14, 0,102, 77, +147, 34,104, 78,140,172,211,234, 78,126,105,164,234,171,179, 47,188, 76, 53, 69, 0, 32, 24,195,169, 12, 16, 21, 10, 73,153, 35, +210,192, 67,150,168, 67, 47,233, 44,121, 37,139, 77, 30, 89,187,208,208,120, 78,208,151,129,178, 6,132,151, 5, 91,237,126, 4, +234, 89, 45, 95, 51, 62,139,146, 82, 41,156,210,196,158,190,230,160,168, 20,230,246, 52,115,109,176,152, 2,215, 20,221, 84,104, + 32, 50, 44,220,237,193, 92,177,202, 93, 72,166,116,229,180, 68,208,230,152,162,123,155,213,164,195,249,224,212, 93, 39,113,202, + 19,121,159,129, 18,146,193, 57,232, 73, 44,146,230, 51, 56, 45,246,123,142,116,147,192,121,145, 58, 24,203,228, 53,199,247, 47, + 82,207,133, 44,162, 50, 24,247,109,201, 13, 84, 38, 16, 77,150,224, 36, 0,100,133,112,133, 56,103,155,176,233,136,228, 26,249, + 36, 2, 83,146, 76,231,112,158, 91, 18,216,147,229,178,142, 52,178,233, 57, 87,165, 28, 77, 5,168, 97,242,142, 75,130,205, 35, +229, 49, 82,181,134, 50,195, 23,110,142,167,186,212, 72,168,140, 27,106, 71,236, 93,209, 44, 2,223, 18,241,136,198, 40, 77, 12, +155, 76,213, 54,167, 5,133, 40, 44,130,177, 58, 22,160, 73, 29,172, 54, 78,157,234,212, 58, 66, 1, 25,142, 8, 31,213,178,106, +177, 40,160,115,136, 89,124,182, 75, 37, 24,151,231,181,212, 60,126, 15, 53, 82,200,204, 77,177,135, 83,186, 91, 10,138,185,168, + 65, 73,155,149, 57,105, 21, 74, 63,213, 65, 50,150, 55, 42,234,204,180,210,198,216,171, 32, 40, 88,193,162,176, 57,180,160, 0, + 49, 86,161,212,158, 18,203, 20, 78,137,235,108,110, 69, 36, 47,102,236,133, 0, 37,140,233,119,129,141, 74,175,177,178,131,218, + 70,166, 2, 75, 19,245, 69, 93,220,149,198,188,214,104,142,113,201, 28,231, 6,205, 45, 6, 96, 45, 40, 96, 35, 78, 99,179, 53, +180, 20,216, 56,155, 44,131,165,186, 75,206, 72, 67, 29, 55,158,117, 71, 40,150, 5,116, 59,111, 11,106, 81,121, 77, 77, 73,170, + 55,219,145,182,187, 85,224, 8, 64, 93,173,112,219, 14,183,250,196, 17,160,184, 5, 29, 17,106,233,202,251, 95, 1,102, 54,212, + 54, 94,215,146,186,181,164,208, 55, 88, 48,130,106,133,224, 11, 16, 57,157,239,159, 69, 65, 60, 10, 47,136,137,144, 53, 25,145, +120,142,168,161,207, 73, 18, 25,196,208, 82,250, 98, 2,127,187,168,176, 49, 15, 40,132,167,114,230,201,173,105,116,121,171, 32, +219,106,134,213,166,117,181,198,104,177,199, 58,179, 37,185,122, 21,116, 29, 36,219, 93,137,192, 35,149,138, 21, 71,226,112, 83, +165,102, 46,200,100,196,101,204, 88,141, 53,117,231, 79, 35, 95, 24,170, 73,157,214, 78, 83, 93, 8,123, 51, 67,106,202,110,120, +109,248,214, 21, 80,167,236, 26,209,160,150,228, 77, 17,196,105,106,158, 94, 7,163, 60, 81, 85, 86,235, 62,145, 90,175,190,105, + 79,233,149,168,111,154, 46,116,161, 16, 9, 17,132,148,147, 25,209, 80,225, 18,232, 30, 38, 98,124, 67, 16,141,209,107, 41,160, +160, 68, 96, 0,176,110, 86, 97, 14, 23,231,206,178,131, 6, 59, 14, 4,183, 29,107, 97, 96, 58,158,156,133, 14,188,229, 5,179, + 59, 56, 29, 35, 55,120,170, 27, 87,104, 57,187,109,105,219,106, 70, 96,122,206, 75, 85, 63,171, 92, 61, 13, 78,218,187, 90,234, +244,174,174, 96, 10, 22, 80,186,253, 25, 45,164, 52,169,168,152,141,216,202,176,131,150,130,203,218,116, 70,162,136,252, 88, 23, +134, 71,160,144,147,101, 88,240,236,168,223, 0,171,141,233,240, 36,106, 19,104, 84,140, 90,204, 0,141, 96, 59,225,196, 89,157, +234,215,177,139,118,194, 64,167,162,164, 84,133,202,138,216,169, 9,219,146, 34, 35, 72,154, 94,156,222,247, 27, 0, 75, 12, 26, + 4, 65,163, 9, 93,126, 67,121, 59,109,207,158,174,160, 92,174, 33,221,213, 65,113, 0, 21, 36, 17,125, 29,144, 71, 71,219, 74, + 35,173, 90,114, 64, 71,186,112,240,191,163,186,158, 41, 63,214, 84, 73,236, 25, 98,235, 93, 50, 6, 6,123, 77,190,128, 66,113, +169, 12, 34, 59,156,129,180, 77,100,105, 6,181,195,134, 65,208, 12,138, 25, 49, 4,121,159,153,132,131,216, 55,200,237, 26,200, +115,195,154, 45,160,105, 70,230,108, 75, 18,173, 79,210,162, 45,190,138,178,114,219,176, 23,213, 20,161, 73, 82,129,116, 31,140, +115,154, 27,123, 40, 8, 2,104, 87, 20,221, 56,233,209, 51,116,108, 91,145,196,165, 70,145, 13, 91,109,227,117,165,134, 64, 25, +241, 43, 32,125, 61, 61,207,178, 18, 49,167, 78,139,107, 48, 12,173,138, 93,139,119,162,100,218,129, 27, 33, 77,247, 55, 14,137, +231,202,171, 29,234, 76,153,212, 28,188, 81, 31, 65, 2,239, 19, 74,161,209, 15,190, 64, 22,197,235,219, 82,147, 16, 87,176, 67, + 98, 82, 84,232,153,193,209, 2,199, 5,169, 3, 15, 34,107,202, 3, 72,159,195,246,220, 65, 15, 37,199,110, 5, 46, 10,101,139, + 85, 1,122, 10, 60, 93, 61,108, 5, 24,193, 32,247,215,180,206,100,104,114,128, 84, 1,247,170,135,109,191,174,158, 47, 72,140, +250, 99,243,226, 75,110, 49,135,173,249,218,206, 71,150,178, 43,133, 0, 48, 22, 92,239, 17, 0, 40,226, 66, 29,174,152, 71,209, + 77, 75,192, 75, 92,210,100, 68, 77,184, 98, 1,242,150, 73,193,142,178,166,180, 55,237, 40,145,154,234, 40, 64, 26, 2, 29,177, + 48,146, 35, 77, 89,219,181,118,170,133,189,148,224, 12, 51, 20, 61,151, 16,109, 21,229,210, 71, 95,108, 67,255,178,223, 39,214, + 73, 59, 78,220, 90, 93,200,100, 20,184, 40,152,213,200,207, 71, 84,190,115, 2,142, 21,239, 58,229,114,167,150,165,224, 64,163, +155, 1,232, 58, 78,212, 13,139, 26,150, 35, 61,167,122,171, 85, 82,164,126, 17,228,181, 6, 93,165, 67,157,229,196, 99,141,198, + 47,133,115,141, 41,199, 29,224,168,170,192,145, 95,179,131, 86, 74,146,243,100, 72,243,121,111,112,138,243,228,166,149,239, 10, +132, 7, 26, 76, 8, 68,227, 24,128,182,109,163,151,169, 37, 35, 37,161,144, 80,219, 42, 32,158,212, 53,145,107, 56,202,212,182, + 62, 6,241, 32,172, 56, 23, 94,128,207, 32, 62, 5, 6, 38,194, 36, 83, 90, 35,234, 42, 8,164, 28, 74, 49,213, 29, 71, 1,167, +145,217,116, 30,130,143,156,219, 45,247, 27,105,101, 55,102,197,219,176, 98, 83, 15, 74,252,219,174,105,227, 57,105, 31,228,172, + 90,116, 1,172, 41,171,150, 1, 86,185,161,204, 82, 8, 12,171, 56,245,168, 85,195,172, 43,117,135,216, 11,176,219,152,245,214, + 0, 54,122,148,198, 82, 30, 28,128,113,133,163, 99, 26, 33,176, 75,146, 2, 26, 2,222,164,233, 48, 23,181,253, 44,106, 37, 77, +132, 45, 88, 71, 0,166, 70, 33, 94,225,110, 83,210, 46, 96,175,253, 11, 0,107, 19, 5, 18, 93, 6,206, 20,230,117,252,113,230, +213,212, 52,202,144, 99,253,158,241,251,219,213, 38,107,174,141, 32,211,139,101, 84,115,138,161,195, 37,182,109,157, 34,237, 58, + 81,219, 80, 59, 68,196,245, 75,120, 52,232,156,130, 80,107,175, 61, 5,252, 81, 38, 99, 40,221, 90,149,176,166,242, 4,130, 68, + 97, 79,151,220,213,180, 90,137, 76,163,111,111,182, 84,194, 17, 39,136,246, 13,100, 55, 1,134, 75, 60,232, 72,235,173,182,236, + 75,209, 21,103,121, 67, 19,171,111,189,194, 86, 33, 75, 0, 13,203, 18, 34, 41,132,244, 45,148,167, 53,144, 12, 71, 83, 5, 1, +238, 98,210, 46,112,142,189,170, 51, 25, 42, 89,235,158, 21,178, 41,168, 96, 23, 37, 90, 9,234, 0,148, 24,194,176, 75,122,127, +103, 53,238, 46, 64, 54,219,154, 70, 91,234,166, 84, 56,183,105, 45, 46,104,194, 9, 73, 27,233,221, 50,165,226, 71, 35, 40,208, +191, 36, 54,156,142, 10,200, 81, 22, 5, 21, 9,229,224,112, 50,122, 11, 7,175,161, 36,171, 0,223, 90, 38,225, 23, 70,196, 62, +110,102, 83, 19, 8,108,248, 99,226, 48,117,168,153,143,159, 45,227,217, 14,148,183, 33, 69, 95,192,216,111,148,206,107,130, 11, +192, 14, 44,149,159, 59, 69, 38, 77,177, 66,176,247, 60, 1, 90, 89, 82,127,242, 21,128,141, 88,121, 1,168,111, 94,191,139,187, +222,149,232, 7,110,247,177,122,235, 94, 44, 69, 69,218, 20, 83,114,130,120, 16,147, 57, 6, 16, 16, 81,150,102, 21, 44,198,154, +163, 81,161, 11,154,132,252,139,115, 87,205,105,146, 80, 36,115,168,119,202,132, 22,175,241,135,224, 76, 72, 84,146, 43, 1, 70, + 25,131,185, 64,195, 38,153,116, 34, 8,149,245,138,235, 71, 48,120,122,131,163,199, 93,201,181, 97,167,193, 41,201,149,179, 96, + 72,234,165, 94, 84, 76, 10,234,218,210, 8,162, 72,211,173, 78, 82,203, 92,108, 56, 69,222, 64,195,143,207, 17, 1, 23,108,254, + 36,172,206, 61,123, 38,178,211,245, 82,177, 67, 26, 1, 88,182,230,174,104,174, 39, 95, 27, 7, 18,178,187, 85,123,196,123, 94, + 70, 80, 78, 59, 59, 47,150,235, 88, 32, 88,143,215,115,219,169,101,180, 36,114, 52, 26, 53, 94,163, 19, 31,153,212, 2,233,125, + 44, 1, 54,190,177, 58,107,156,244, 61,180, 90, 0,221,228,115, 54, 1, 21,219, 82,139,224, 70, 85, 49, 3,165, 27, 72,159, 81, + 52, 87,154,200,163,231,203, 10,236, 19,200, 12, 71, 6,145, 80,119, 61,112,175,233,217,134,200,211, 16,177, 75,194, 50, 68,177, +136,147,131, 35,137,201, 64,161,227,143, 14, 31, 6, 71, 41, 18,151, 36,144, 70, 32,154,196, 64,212, 23,160,227, 76,148, 73,141, +254, 7, 27, 86,141,146,104,229,183,169,173, 43,186, 85, 35,197, 81,109,231,162, 32, 9,135,195,195,192, 39, 16, 31,204,169,111, +110,184,144, 32, 43,146,196, 50,132,178, 38,187, 3,191,124,130, 77, 2, 18, 46, 54,162, 27,239,178, 74,244, 92, 87,157,237, 9, + 4, 36, 41, 59,107, 41, 97, 79, 19, 23,137,118,145,147, 92,152,162, 15, 81,238, 48, 80,225,134, 52,239, 40,119,112, 43,140, 28, +226, 80, 19,234,138,214,214, 5, 59,152,178, 82, 78, 76,183, 55,106,137, 21,120,215, 76, 33,215, 89,200,142, 53,137,174, 88,204, + 33,181, 56,219,192,238,255,190,182,198,165, 72,216, 13,142,122, 82, 89, 83, 39, 67,240,147,219,135, 18,134, 29,145,230, 5,116, + 6,204, 73, 40,192, 53, 71,192,163, 40,180,112,164,131, 0,162, 56, 52,225,139,235,181,119,133, 1, 15, 17,247,166,131,180,108, +150, 60,129, 30,223, 0,244, 51,175,118, 41,153, 6, 24, 70,161,246,142,132, 34,210,181,116,128,141, 19, 92,164,199,203, 76, 19, +215,119, 91, 40, 37, 27, 13, 80, 40, 0,236,100,104, 41,199,168, 87,192,226, 70, 71, 32,237, 9, 97, 95,234,164,230,115,181,184, + 10,134, 58, 76, 93,136,214, 80, 3, 92,149,134, 59, 75, 32, 1,140, 10, 88,133,155,104, 21,120,119,230, 60, 20,201,209, 68,153, +114, 22,195, 90, 91,202,210,157,144,132,113, 80,214, 31, 3, 12, 94,156,190, 97,199, 5, 96,106,106, 23, 13, 44,148, 0,124,167, +242, 74, 11,180, 67,234,101,146,238, 68,204, 2, 5,144,169, 16,116, 16,162,192, 5, 24, 67,195, 82,254, 94, 15, 69,122,149, 59, +244,209,162,213,165,141,189, 67, 86, 24, 4, 84,182, 64,116, 17, 70,184,149,114, 31,137,209, 89, 7, 46,126,112,102, 97, 91,230, +117, 88,237, 48, 2,222,237, 26,105,194, 14, 76,139,230, 84,137,210,139,209, 50,164,216,145,134,197, 73, 98,139,146, 82,155,117, + 83, 19, 72, 95,175,164,217, 81,158, 90,208,108, 4,119,157,192, 33, 8,231,165,172, 66,201, 32, 75,139, 59,188, 0, 93,172,131, + 72,123, 98,143,101,167, 59, 26,125,114,104,177,251, 53,130,214,131,228,136, 95,224,134,174, 0,172, 11, 71, 19, 29,202, 45,161, + 9,187,176,249,253,196, 8, 20,179,134,184, 61, 76,185,114,203,216, 44,177, 53, 46, 89,183,183, 58,189, 44, 83,103, 64, 60,182, +190,236,188, 82,176,160,209, 14, 21, 1,160, 26,231,186, 78,225, 85, 90, 7,197, 68,202,160, 14, 73, 30,165, 25,230, 2,147,117, + 81, 90, 46, 47, 68, 93, 69, 82,182,106,124, 71,215, 41,103, 30, 34, 32,137,227, 38,110,165,214,130, 67,176, 67, 32,178,175, 14, +108, 50, 3,110,189,176,215,128,169, 33, 37, 11, 32, 41, 75, 88, 21,168, 37,121,255, 92,136,168,129,135,111,147, 96, 97,218,250, + 26, 98, 20, 4, 22,234, 57,110, 37,106, 15,143, 2, 46, 89,194, 16, 1, 78,210,226, 84,166, 5, 4, 29,187, 56,129, 42, 98, 51, +232, 10,100, 62,192,155, 53,157,121,144, 12, 25, 15,186,237, 28, 90, 6,100,235, 36,227, 26, 40,170,170,188,240, 2,252,108,144, + 75, 21,113, 42,157,101, 14,196, 35, 91, 73,148,168, 2,189,202,173,134,187,212, 55,116,154,238,180,186,118, 53, 9, 77, 49,193, +156, 2, 66, 29, 50,129,177,212, 97, 18, 77,103, 21,137, 29,160,170, 84,108, 81,145,203,220,255, 15,234,231,222, 94,149, 82,183, +168, 80,186, 2,101, 65,106, 53,141,154, 14, 79, 2,169,213,110, 93,195, 36, 1,145, 18, 74,242,170,104,224, 81,187, 63,201,176, +242, 42,235, 65,210,102, 4, 70,210, 56,254,134,203,240,106,204, 18,196, 71, 4,132,120, 36,156, 20, 41, 38,152, 63,221,109,228, +187, 67, 36,110,108, 21,239,198, 88,206,192,137,198,222, 16, 48, 65,167, 84,181,228,180,161, 68, 86,174,242, 36, 38, 99, 6, 27, +169, 66,172,153, 62,161,232,106,215,162,162,221,217,129,156,118,133,212,172, 52,234,105,222, 16, 6,203,149,188, 42,104,229, 77, +150,160,127, 66,139, 11, 88,169,170, 74,195,143,163,117,247,138,154,110,115,208,192,138,161, 11, 94,227,222,163,166, 71,166,177, + 67,185, 76, 90,144, 32,175, 70,206,222,181,142,179,122, 27, 24, 57,105,168,157, 9,163,208, 84,236,165,161, 55,147,112,171, 16, + 0, 12, 10,166, 4,185,178,103, 47,145, 85,242,158, 5, 80, 90,100,130,246,185,148,211,214,152,253,144,198,185, 17, 8,112,124, + 95, 40,185,239, 68,248,147,109, 96,178,166,153,151,126,113,213,108,238, 8,108, 27,152, 69, 53, 38, 64, 53, 42, 47, 69, 83,180, + 49, 89, 81,170, 73, 97, 65, 43,243, 92,127,183,204,222, 66, 0, 25,200,112, 97,169, 15, 56,120,101, 72,127, 49,133,161,120,160, + 42,155, 89,154,102,247,176, 72, 11,151, 38,146,228,240,242,176, 85, 34, 27, 34, 91, 1, 78, 85,141,172, 69, 73,237,108, 47, 74, +148, 2, 62, 96,226, 75,106,135, 27, 7, 50,112,163, 10, 87, 0,121, 88,176, 71,111, 68, 62, 5, 59,139, 81,164, 6,197,165,252, +196,121,216,211,241,187,212,122, 80,156, 75, 77,185,169,136,132,188,172,101, 47,140,143,110, 9,224,226,148, 44, 78, 42,221, 12, + 97,142, 69,178, 40,241, 57,214, 17,171, 52,237,101, 21,108,228, 29,205, 34, 27,129,205, 75,188, 78,195, 83, 63,230,224,210,150, +212, 6,215, 42,170, 92,197,107,222, 14, 82, 19,173,227,235, 61,233,188,129, 5,234,242, 7,199,178,170,198,190,101,110,172, 79, +240,112,239,182,128,170,100, 17,192,112,126,219, 38,162, 83,171,179, 46, 12, 57, 63, 70,246,154, 26, 54,240, 98,167,200,252,225, +248,131,194, 92,199, 89,239,156, 28,217, 30,101, 13,246, 58, 51,132,152, 92,178, 50, 84,106,231, 40, 77,202, 49,218,118,138, 75, + 54,150,201,176, 91,126,147,201,187,134, 57,111,190, 73,189,122, 83, 18,130,182,161,194,216, 76, 44,211,133,188,156, 17,125,140, +139,172,107,110,161,153,158, 49, 26,152, 80,255,134,158, 52,117, 58,130,250, 53,131, 70, 56, 11,226, 16,194,185,148, 34,161,177, +190, 86, 81,140,147, 24,147, 36, 30,116, 68,200,149,114, 15,135,160, 67,132,152, 14, 27,173, 19,129,220, 66, 43, 14, 73,106,138, +195, 33, 60, 19, 25, 94,214, 14,110,154,206, 68, 3,175,215,145,244, 17, 44,170, 47,146, 3, 22,148, 22,110,155,251,172, 68,229, +133,172, 61,115, 74,185,147,172,148,146, 37,129,207, 74,162, 23, 26,221, 45, 99, 20, 40, 1, 61,169, 97,107,144,164,164, 18,148, +252, 48,224,105,120,234,112, 94, 35, 65,149,173,177, 81,241, 50,172,173,243,109,194, 52,120,195,142,192, 70,245,168, 14,152,100, +166, 65,255,128, 25,212,240, 0,128,206,197, 5,125, 4,234,244,222,103, 4,105,158,201, 65,192,206,146,153,255, 79, 77, 95, 47, +203, 58, 90, 38,185,115, 10, 25, 8,135,149, 16,143, 50,163, 91, 9,208,117, 50,149,104,135,210,214, 64,229,221,238, 15,184, 93, + 35,160, 30,245, 49, 40,120,239,185, 61,108,151, 16,241, 5, 0,204, 5,104,169, 35, 93,185, 86,160, 47,180, 93,212, 96, 50,162, +215,105, 29,207,108,179, 40,156, 25, 17,158,250,195,118,170,165, 75,117,208,176,143, 28,136, 3, 22, 80,151,155,156,134,125,101, + 50,129, 82, 48,189,132, 90,221,128,190,205,218,109, 94,227, 52, 69,178,210, 68,226,130, 84,184,149, 8, 55, 54,199, 36, 9,153, + 80,198,160, 44,199,185,145,135, 80,116, 84, 74,158,219, 96,156, 70,222,187,138,236,152,124, 46,163, 80, 72, 86,201, 66,193,203, +138, 81, 58,228, 47,177,189,102, 18, 84, 78, 84,166, 22,104, 40,208,197, 45,138, 42,158,236,146, 73, 5,206, 48, 10, 81, 47,171, + 46,158,129, 90, 89, 44, 18,114,149, 46, 11,107, 15,173,134,160,206,106, 7,137,104,136, 0,177,133,101,105, 48,166, 89,140,162, + 50,236,168,212,165, 57, 63, 10,134, 43, 50,181, 18, 93, 40, 45,206,232,242, 67, 20, 63,124,182, 27,192,102, 92, 29, 80,212,129, + 72,140,213, 98,139, 16,244, 60,199,188, 25, 37,190, 41,185,177, 43,174, 24, 17,189, 9, 36,117, 41, 52,158,209,164,233, 0, 27, +153,149, 2,180,179, 87,110,252, 66,160, 57,221,110,200,209,236,198, 5,144, 76,170, 25,153, 24, 40,228,212, 58,165, 13, 22, 76, + 18,181, 68,180, 44, 86, 27, 62, 76, 83,150,195,156, 98, 74, 73,194,159, 66,171, 88, 27,195,102, 72, 34,187, 68, 17, 23,168, 89, +193, 60, 23,108,177,211,212,152, 89,233, 73,134,198,158,230,175,149,120,194,104, 72, 34,172,139, 54, 42,194,158,238,213, 51,130, +210,128, 46,217,231, 73,202,136, 8,172,112,236,163,144,186,188, 97,228, 73,105,223, 49,131,220, 53,251, 47, 74,116, 83,206,161, +185, 67, 84, 82, 37, 67,168,161,224, 39, 42, 92,170, 12, 81, 99,188, 13,187,176,242, 38,128,144, 40,166,167, 43,185, 41,143, 69, +175,214,200,201,193, 94,172,117,235,170, 0,197,100,208, 41, 53, 93, 65,218,155,183, 95,133,108,163, 64,214,213,154,127,141,199, +173,161, 6,186, 68,251, 0,165,130,192,181,240, 90,245, 89, 33, 99, 18, 69,182,217, 21, 37, 57, 24, 32,157, 83,108, 11, 56,107, +185, 69, 44,246,159,119,230,151,106,125,140, 70, 87,166, 38, 45, 3, 11,104,208,200, 88, 40, 34,191, 74,150,146,141,214,215, 8, +160,147, 36,108,100,251, 42, 99,249,135,173,245,170, 68, 1,185,180, 20, 8,104,116, 82, 96,227, 27, 35,116, 0, 72,120, 11, 58, +142,222,232, 29,168, 99, 85,201,185,228,130,145, 50,219,201,169, 60,101, 18, 94,152,248,119,194,171,117, 19,148, 58, 36,240, 54, + 61, 21, 99,244, 77, 64,211,231,198,142,171,242, 80,184,248, 34,189, 25,160,157, 86,112,195,143,218,128,124, 24,168, 18,110,144, +109,114,170,146,154,101, 56,170,222,117, 75,235, 21,161, 68,143, 67,204,124,165, 44,234,211, 10, 78, 20,228,215, 66, 52,134,136, +217,146,168, 48,208,122,208,145,246,181, 97, 41, 96,159,117,213, 97,183, 90, 99, 67, 97,221,134,244, 17,118,180,196,108, 12, 39, + 84,182, 68,244,169, 27,106, 41,173,244, 51, 39,145,148, 37, 68, 23, 24, 17, 59,154,187, 80, 52, 48, 33,107,244,177, 28,189,227, +197,120,126, 1, 24, 66,137,228,162,253,143,151,112,206,214,226,144,145,235,203,145,159, 96, 45, 63, 88,166, 72, 68, 1,132,144, +183, 21,108, 29,172,226, 35, 38,149,199,152,130,110,250,131, 71, 36, 28,124,113, 19,219,242,251, 38, 13, 41, 6,154,149, 76,209, +141,180,157, 10,154,206,154,146,211, 37,158, 62,175, 80,179,148,212,246, 20, 51,196, 34, 88,229,166, 53,180, 0,147, 61,228, 44, + 78,226,248, 29,241, 86,197, 29, 2, 87, 27,112,149,107, 15,152,228,174, 62,191,237, 17,160,105,156,224, 10, 37, 29,101,148,100, + 72,178,207, 91, 7, 47, 37,252,193, 52, 7, 10,236, 39, 72,113,244, 44, 14,175, 70, 62,133, 51,226, 97,154, 87,225,200,181,185, +244, 54,165,142, 93, 20, 49, 53,141, 53,105,143, 44,181,156, 81, 97,253, 84,125, 95,215,214,136, 97, 83,240,189,169,172,225,245, + 11,229, 61,146, 99,109, 88,175, 6,111,127,140, 11, 92, 23,254, 66, 27, 33, 85,111, 80, 67, 9,161, 77, 10, 36, 12, 5, 69, 2, +189,137, 36,225,229, 1, 24, 19, 58,245,129,104,168,170,235, 32, 73,167, 80,188,179, 36, 37,165,144, 0,167,226,117, 10,175, 35, +215, 21,111,225,141, 77,154,202,136,163, 42,222,239,129, 27,213,194,144, 14, 6, 38, 24,208,209,150, 32, 49,222,141, 74,149, 76, +203, 82, 53, 27,105, 76, 11, 89,209,127, 33, 23, 20, 19, 84, 99, 75, 83,169, 74, 9, 92, 8,143,201,251,161,209,208, 34,131,162, + 32,109,195,202,229, 29, 82, 81,157,170,238, 84,220,104, 42, 41, 49, 72,193, 80,197,250,155,175,130,120, 80, 18,181, 0, 2, 61, +128, 10,170,179,219, 84,130,112,147,118, 58, 0, 10,229, 52,185, 73,228,209,215,210, 70,188,180,162,184,148,116,132,120, 53,114, + 41,156, 29,136, 20, 39,224, 66,212,141, 98,105,116, 10,201,177,137, 80,147, 2, 34,123,175,164,126,206, 85,166,122,139, 71,163, + 32, 96, 96,155, 92, 5, 84, 42, 55, 81,142,178,181,167, 58, 52, 80,150,108,230, 49,120,229,227,171, 50,232, 18, 67, 37,148,163, +249, 68,162, 23,130, 64,137, 35, 99,189, 22,142,106, 88,146, 54, 60,214, 20, 83, 65, 93,117,160, 24, 26, 96,145,152,128, 91, 46, + 9,164, 71,208, 62,212, 13, 23,182,216,177,250, 48,229,254,235, 5,242,104,213,211,235,226, 14,139,121, 8,131, 55,189,173, 95, +214,113,208,231,208,185, 73, 14, 91, 5, 81,149,193,184, 88,234, 28, 29, 63, 44, 2, 50, 34,109, 41, 96,214, 94,231,229,169,149, +109,234,164,144,149,174, 28,224,131,156, 97,219,238,107,220, 27, 97, 80,192, 66, 99, 92,114,196,200,148,213, 57,189, 93,103, 44, + 84,172,217, 0, 71,184, 41,129,101,130, 83,220, 41,108, 70,211, 10, 87,181,198, 4, 84, 4, 75, 20, 22,167,141,113,185,212,249, + 87,180,135, 0,108,154, 20,125, 17, 10, 40,216, 85,215,238, 14, 26,145,203, 42, 67,230,111,201,128, 29,226,117,173,155,165,117, +213, 19,160, 44, 90,118, 54,148, 45, 43, 53, 2,115, 70, 24, 58,209,129,119,212,246, 8, 79,165,115,106,154,133,168, 1, 45, 18, + 45, 68,195,105,151, 4,218,194,236, 9,234, 58, 24,142,130,104, 21,233, 95, 52,122, 68,224, 43,182,134,118, 0, 58, 69,203, 98, +111,163, 48, 68,177, 35, 47,191,122, 89,104, 4,184, 57,101,169,120,166,143,147,176, 87,236, 17, 33,218, 67, 46, 77,205,200, 46, + 41, 83, 38,110,132,117,118,216,147, 92,220, 9,199, 8,127,156, 55, 29, 37, 69,212,164, 61, 65,148,186, 28, 22,237,217,144,130, + 68,205,115, 23, 47, 89,180, 51, 67,188,191, 67,203,162, 42, 82, 97,253, 78, 13,164,198,185,219, 5,106, 31, 57, 40,169, 73,146, +119, 86,132,210, 5,226, 65, 24,232,150, 26, 64, 47,186, 2,194, 25, 20,139,136,139, 64,255, 98,237, 52,197, 5,184,211, 97, 96, +205, 51,140, 94,178, 19, 40,206, 38,111,117,106, 24, 2,202,184, 65, 53,115,162, 0, 36,145,143,246,125, 0,162,226, 84,111,226, +148,121, 46,205,182, 24,218,246, 17,113,181,248, 1,163,122,181,101,136, 2, 94, 67,244,152,143,201,100,237, 16, 37,121,150,226, +221,118, 4, 55,228, 20, 89,163, 70, 48, 78, 19, 0, 79, 9, 59,141, 2,181, 48,132, 18,134,112,181,226,133, 58,220,166, 2,199, +156, 54, 46,236, 33, 77,192,199, 22,144, 37,180, 58,173,233,112, 11, 8,112,148,142, 50, 32, 18,121,174,232, 21,115,212, 97, 75, +163,169, 76, 77, 84, 47, 34,233,126, 13,235,107, 9,233, 49,230, 96, 46,160,132, 38, 67,234,205,235,105,133, 83,201,198, 88, 50, + 75,158,122, 86, 23,237,238, 53,234, 29, 44,227,185,142,148, 46, 47, 82,215,116, 79,185,113,126,173,241, 74,245,217, 86, 83, 79, + 4, 2,230,132, 52,132, 70,169, 32,100,227,120, 16, 5,232, 16,128,228, 18,178, 17,107,141,168,135, 43, 1, 91,230,108,138,204, +241, 2, 74,119,142,152,198,103,169,122,249,194,169,116,230,232,208, 42,169,121, 3,227,198,131,224,168,108,233,193, 64,178, 43, +172,113, 35, 64, 22,192,138,112, 30,173, 3, 32, 42,173,153,225, 48,124,202,254,141, 41,210, 49,202, 15, 74,176, 82, 35,195,106, + 27,118,213,118,152,203, 26,130, 38, 53,213, 34,114, 52,100,221,178, 86,145,239,177,103,150,149, 22,160, 77,166,201, 5,122, 50, +187,168, 45, 35,226,130,182,205,125, 52, 38, 9,231,204,170, 4, 24,229,139,138,117,102,166, 12, 88,213, 70, 70,165, 4,200,202, +230,118,105, 4,123,176,159,188,172,201, 68, 20, 9,204, 12,129, 70,197, 88,122, 74, 82,175,176,135, 33, 21, 0,155,147,112,133, + 78,124, 89,140,135, 41, 99,155,186,146,131,178,101,229, 92, 87, 39, 75,113,103,144, 43,182,218,197,242,104, 41, 37, 57,170, 37, +250,242,129,126,189,140,148,101,223,247,167,102, 32,163,193, 95,234, 70,104, 17,121,193, 78,134,172,245,113,207, 14,117, 20,205, + 94, 38,167,114,185, 12,149, 65,187,103,214, 14,192,203, 72,222,213,177, 11,118, 23,166,186,160, 49, 89,144,241, 6, 54, 85,225, +116,163,163,175,110,238,148,196, 70, 11,131,154, 92, 65, 35,161, 48,251, 2, 37, 70,102,168,217,214, 16, 55,119,195, 81, 35, 61, +136,208,139, 17, 78, 14,177, 35, 83, 6, 27, 21,208,123, 94, 74, 54,216,184,139, 8,182,171,163,200,181, 57, 48,146,179,120, 2, +166,107,144, 7,159, 50,103, 73,180, 38,228, 29,107, 13, 47,156,188,127,185,237,193,210,176, 20, 93,214, 96,154, 24, 6, 16, 67, + 58, 18, 56, 13,174, 91,158, 8, 31, 33,167,152, 67,174, 44, 83,153, 35, 15,208,146,135, 90, 89,129, 13,222, 22,121, 69,112, 16, +227, 70,219, 63,227, 5,173,185,158, 12, 84,113,199, 12, 20,132, 70,158, 58, 25,232, 78, 18, 32,200, 84,161, 10, 33,111, 94,114, +205,197, 1,117,214, 78, 86,235,165, 28, 45, 77, 69,213, 4,171, 69, 38, 53,250,193, 99,107,225,232, 79, 61,101, 99,120, 57,116, +135, 83, 97,148, 33,128,238,138, 58, 17,120,255,216,209,233,169, 49, 37, 40,224, 69,239, 0, 40,242, 36, 71, 80,144,139,229,187, + 10, 83,164,203, 17, 56,196,141,163,215,182, 29, 97,170, 73,130, 35,187,134, 32,112,161,105,251,226, 81, 56,136, 71,217,230,169, + 58,252,102,195, 75, 18,139, 2,186, 43,148,109, 24,248,228,196,180,166, 45, 10, 3, 85, 41,131, 81, 42,228, 89, 36,160, 23, 19, + 93,185, 68, 54,102,148, 45, 94, 20,213,125,200,192,193,137,245, 82, 21,241, 62,213, 47,151, 74, 5,170, 80,111, 26,190,125, 0, + 69,110,214,234,142,167, 55, 30, 2,213, 67, 95,123, 43, 13,150,101,165,223,124,234,216,215,168,222, 36, 46, 54,231, 29, 78, 56, +244, 57, 88, 36,255,190, 97, 87,120,205, 25,105,149,144,161, 28,139, 5,106, 80,153, 29,192, 49,237,197,222,200, 40,128,123,157, + 81, 15, 57, 82,229,145,201,228,196, 77, 98,192,249,176,107,207,214,152,147, 34, 43,115,125,152, 51, 75,221, 91, 58, 77,246,212, + 18,167,236,107, 10, 90, 27, 27, 93,178, 48,238, 25, 48,239, 42, 37,163, 63,238,149,218,164, 71, 85,161, 85,228,165,193,109, 17, +121,127, 0,107, 72,229,108, 22, 93, 7, 83,214,163, 78,118, 68,215,220, 66, 83,237, 21, 12,168,253,181,106, 0, 55, 4, 51, 3, + 13,181, 72,211, 95, 30, 30, 81, 85,103,127,188,107,202,115, 28,230,245, 88, 79,231, 46,130,205, 10,125, 0,148,110, 60, 49,177, +181,116, 61,178,120,164,225,230,228, 12,173,181,182, 46,163,254,129, 26,200, 14,100,239,152,104,133,182,193,160, 84, 22,117,111, +114,170, 90, 55, 78, 24,149, 50, 77, 53, 85, 85, 76, 43, 17,197,186,132,104,201,219,148, 72, 76,228, 22, 88, 67, 16,169,213,149, +205,222,196,108, 98,211, 48,142,165,213, 32,145, 42, 33, 13,219, 30, 15,151, 5,115,128,214,194,171,189,182, 5,234, 38,129,156, +172,121,251, 5,128,148,241,167, 25,132, 54,180,191,105,162,184, 49,150, 36,214,176, 86,219,127, 5, 72, 13, 41,120,147,129,137, + 46,118, 41, 16,138,150,180, 21,138,236, 18,116, 42, 65,165,173, 42, 32,232, 18,123,191,161, 61,173,171,145, 33,134, 49,189, 90, + 65, 59,194, 28, 5, 95,184, 46,107, 30, 98, 40, 67, 69,187, 72,167,221,230,196,209,183, 8,216,196, 20, 21, 51, 62, 39,118, 81, + 18, 97, 9, 74,202, 64, 88, 51,244,123,210,130,153, 34,244, 14,250,164,103, 48,216,106,212,137, 34, 72,176, 83, 69,175,101,138, +214,142,147, 94, 2, 62,171, 2,108, 5,101, 90,128,120,144,139, 75,164, 85,193, 9, 28,151,219, 57, 66,166,137, 33,107,197, 4, +242,169,161,207, 0,162,224,169, 44, 80,106,200,105, 98,153,170, 32,160, 78, 90,158,116, 73, 40,229,172,244, 22,202,114, 81, 75, +151,164,108, 55,214,188, 93, 59,130, 51, 95, 75,132, 80,115,199, 33,148, 40,245, 11,153, 11, 1, 71, 61, 48, 41,253,198, 60,164, +102, 75,180,148, 29,230,145,211,106, 17, 97, 46, 77,247, 57,145, 52,199, 16, 12,192,137,248, 72, 73,108,136, 65, 57,134,161, 73, + 7, 55,170,110,204,141,219, 35,146,250,103,184,150,126, 67,213, 21,161, 21,131, 59,174,193, 18,234, 32,140,105, 99, 47, 65,169, + 51,202, 40,141,154, 53,228, 3,224, 39, 33, 11,174,247,162, 67,134, 7,124,206,155,120, 49,167,242, 84,231,242,246,210, 0,156, +115, 9, 1,187,216, 37,249,100, 83,115,147,136, 90,189,206, 93,226,250,151, 12, 82,186,146,177, 14,198, 43, 95,104,118,121, 48, +248, 93, 97,232,190,166,105, 70,197, 39, 24,216,113, 97,237,153, 53, 91,103,142,163, 55, 86, 2, 59, 54,176, 62, 58, 46, 80,187, + 0, 92,138,144, 11,200,176,102, 6, 44,154, 46,188, 84, 76,199,164,102, 71, 42,252, 38,203, 26,241,182,237,201,181,132, 50,105, +195, 68,171, 86,190,131,210, 82,153,106,234,156,228, 77, 9,210, 33, 70,201,240, 72, 24, 38,181, 61,129, 78,117,200, 23,218,188, + 3, 65,163, 94,191,164, 72,205,135,186, 85,238,105,158,106,226,196, 77, 59,212, 80, 58,106,133, 85, 4,218, 10,177, 34, 93, 3, +113,205, 99,154, 53, 35,222, 27,242, 55, 46, 16,247, 74,145, 95,204,141, 32, 66, 24, 4,239, 48, 71,216,221, 10, 10, 78, 65, 0, +181,130,185,247,117,102,206,230,153, 57, 35,217, 77,201,205, 5, 34,156, 23, 9,168,106, 84,219,146,144,111,172,176, 97, 84, 9, +198, 2,166,235,163, 6,134,216, 98,114,222,246,164, 67, 80, 67,223,220, 64, 42, 53,234,238,152, 83,102,165,120,121,106, 21,232, + 39, 76,156,106,226, 25, 65, 29,124, 88,116, 72, 82,212, 2,217,101,166,232, 33,205,144, 65, 96,124, 14,170, 96,199,168, 88,200, + 97,108, 13, 40, 55, 81,219,162, 1, 78, 41,141,162,149,202,139, 57,154,181,132,102, 52,187,241, 9,206,174,155,116, 7, 56,160, +180, 71,160,186, 27,112,124, 42, 67, 49,104,171,155, 69,205,221,168, 10,208, 74, 57,177, 50, 86,116,182, 89,160, 59,156, 58,197, + 5,149, 27, 21,211,128, 89, 54,160, 85,178, 4, 88, 52,116,197, 41, 49, 5,176, 53,104,206,104, 49, 62,224,204, 25,110,106,207, +210,220,148, 17, 45,172, 88,141,109,125,134, 93,177,150,147,209,157,205,107,147,112,196, 17,161,172, 81, 28, 1,104,107, 82, 16, + 43, 74,207,148,136,158, 16,167,161, 80,118,164, 91,186,210, 37,229, 14,115,180,210,137,143,179,229, 2,167, 92,176,222,106,160, + 45,239,163, 32,169, 41,202, 74,205, 94, 34,173,202,107,196,100, 24,106,228, 98,152,149, 66, 40,216, 1,221, 14,121,133,213,148, +192,180, 72,237, 3,133, 77,110, 13, 50, 53,218,238,164, 20, 64,204, 86,105, 84,193,169,117,111,131,127,130, 18,154,239, 81, 85, +159, 15,212, 57, 22, 5, 36,197,245,199, 75, 0, 64, 58,192,184,145,104, 34,154,122, 26,120,137, 65, 49, 27,197, 51, 69, 19, 68, +121, 95,183, 1,248, 37,214,227, 87,159, 39, 78,241, 52,135,176, 68,249,215,203, 60,154,117, 93,106,219, 21,103, 16, 85,176, 25, +218, 80, 75, 0,132, 92,120, 67,131,157, 58,254, 94,170, 50, 78,198,140, 35,141, 89,209, 82,235, 74,194,114, 50, 43, 83,144, 80, + 22,170,231,160, 17,212,226, 96,183,152,186,105, 1,197, 98,179, 63,218,233, 90, 93, 72,222, 14,178, 1, 40,120, 51, 22, 11, 16, +114, 49, 35, 35,156,211,190, 2, 70,145, 81,161,204,249,238, 37, 23,138,147,209, 99, 7,152,213, 6,174,190,148,220,246,142, 90, + 46,106, 80,115, 99,115, 84,186, 4,118,146,194,174,108,188, 2,224,149, 84,203,146,198,171, 70, 61,234,180, 72,210, 20, 14,218, + 30,183,210, 89,168, 0,149, 56,172, 21,228, 92,155, 58, 30, 99, 95,105, 10,220,130, 68, 63, 97,147, 83,228, 6,216,212,110, 48, +201, 9, 0,165, 33,119,196, 76, 68, 72, 35,129,165,166,159,178, 67, 22, 78,152,221,255,226, 13, 88, 98,110,121,100,160, 26,247, +168, 50, 71, 96, 28,185, 81, 22, 99, 88,188,130, 17,131,221, 17,163,134,129, 28,108, 74,237,214, 80,160,116, 54,135, 53,240,209, +202,208,232, 4, 44, 57,228, 88, 11,234, 53,104, 90, 28,109,178, 44, 19, 80,141,128, 82,200,145,183,116, 67, 88, 41,107, 35, 52, + 25,217, 85,154, 19, 5, 56, 52, 53,230, 88, 41, 9, 4,210,157, 53,242,104,121, 59, 65,183,137,210,134, 71,230, 77, 84, 87,152, +252,254, 24, 74,122,188, 29, 2,152,149,101, 68,237, 77, 46, 28, 34, 69,110,174,137, 83, 74,217, 30,188,224, 42,215,125,161,235, +247, 36,225,166,111,132,253,179,227,105,147, 29,240, 29,166, 57,111, 25, 50,208, 87, 23, 46, 0, 96, 2, 71, 84, 51, 4,227,251, + 59, 74,157,229, 28,124,212,137, 99, 72,242, 26, 33,119,106, 81, 70,181,234,190, 80,185, 6,198, 2,247, 18, 23,208, 18,239,201, + 64,112, 63,133,146, 60,188,239,145,200, 71, 55,160, 27,178,148,220, 65, 43, 33,216, 20,125,198, 37,233, 40, 8,100, 29, 13, 95, +147,226, 63, 33,106, 92, 80,226, 70,227,131, 17,135, 46,200,212, 0,161, 44,211,247, 48, 60, 11,118,238,203, 44,219,132,239, 41, + 96, 52, 69, 64,134,185,138,103, 73, 93,179, 31, 16,237, 2, 96,234,208,165, 23, 23,163, 50,199,199, 76,185,173,255,209,160, 43, + 87,221,218, 63, 91, 54,199,198,130, 23, 84,155,174,125,100, 98, 88, 0, 90,174,214, 4,107, 64,159,215,105, 30, 14,248,148,225, +191,141,174, 3, 1,180,162, 1, 76,231,115,170,170,122, 25,171,110,133,116,147,113, 47, 32,238, 53,234,191,155, 44,108,225,160, +175,154,220,186, 6, 38,131, 35, 50,246, 83,231,241, 31,228, 66, 35,214,237,102,172,109, 22,214, 54,156, 52,166, 49, 22,140,117, +106,114,125,113,171,157, 99,234,142,215,116,222,169, 18,169,238, 66,232,177, 0,109,133,179,225, 65, 5,187,210,248,249,227,185, + 67,123, 88,105, 27, 23,160, 58,156, 79,126,242, 5,133,114,149, 45, 63, 52,137, 36,184,106, 23,121,247, 47,110,144,196,169,219, + 83, 42,163, 97,157, 20,144,146,212, 26,118,224,239,179, 62, 96, 75,227,144, 1,145, 25, 91,208, 55,140,120, 74,169,216,208,124, + 15, 0, 19,243, 42, 25,143,144, 79,107, 17,145,115,158, 65,192, 71,176, 73, 71,120,247,216,211,219,240, 14, 33,143,153,121,189, +222,203, 92,123,175, 35,253,174,170,188,110,161,104,104,227,140, 3,134,214,140, 9, 85,205,201,128, 9, 84,252, 12, 16,103,155, +249,232,132, 26, 47,223,210,214,195, 53, 45,131, 34,132,202, 88, 67,141,189, 26, 85,141,141,105, 32, 78, 49, 73,165, 17, 22,200, + 14,129, 51, 34, 2,101, 27,110,161, 15,110,240,130, 81, 22,104,137,146, 54,118,204,200, 0,143,219,192,111, 5, 53,223, 45, 2, +138,198, 24, 12, 29,171,226,120,144,161, 50, 60,135,176,175,145,209, 1, 16,142,178, 14,168,162,141,249,213,117,142,168, 81, 5, +155, 78,115,212,118, 85,173, 2,243, 7,157,213,144,193, 19, 53,220,196,185,191,180, 85, 16,198,231, 81, 76, 11, 72, 70, 35, 46, + 78,105,139, 66,108,139, 98,151,164,117, 95,189,174,234,211,216, 13, 36, 52, 49,129,246,179,162,160,225,165,119, 93,139,122, 40, +163,146,139,139,201, 96,102,179,128,210, 90, 86,134, 99,213,199,119,189,127,115, 80, 85, 36,163,104, 10, 74,160,230,222,118, 63, +115,233,235,134,254, 20,101,120,134, 12, 35, 72,142, 26,155, 9,186,242,149, 38,219, 96, 14, 65, 1, 38, 77,197,138, 11,102,131, + 4, 75,121,144, 25,224,226, 45,171,151, 88,238,160,234, 29, 43,161,162, 26,189, 55, 42,121,198, 12, 81,224,225,172, 2, 45,151, + 3,212, 37, 16, 40,214, 81,189, 66,139, 20,188,140, 32, 80, 32, 2,132,128, 34, 11,255,152,118, 65, 96, 12, 34,227, 66, 10, 32, +174,168, 59,220, 59, 10,203,241,175,195,183,110,140, 25,192, 13, 87,140, 51,172, 11,187,182, 69,204, 73,107, 81, 61,150, 61,120, + 98, 66, 77,114,176, 58,183,203, 84,143, 47, 26,104,104, 66,159,182, 89,188, 93,247, 2,133,230,163,255,121,240, 70, 55,202,164, +139,182,175, 76, 27,241,240,229,155,138, 54, 45,154, 98,119, 61, 94,174, 48, 73, 27,115,101, 17, 60, 52,110, 41, 9, 43, 27,170, +110,164, 19, 60,116, 47,176, 67, 14, 32,254,196, 43,123,154, 61,104,218,159, 66, 29,182,107,194,240,133, 34, 65,151,190, 64,121, +165,129,131, 57, 57,248,189, 22, 25, 50,131,160,129,131,222,178,146, 93, 80,152, 2, 9,159,227,121,160, 46, 1,167,152, 1,228, + 24,181, 36, 94,161, 86,129,103,145,196,153, 86,120,203,173,238, 0,170,143, 1, 2, 63,124, 34,113, 4,182, 72,109,181, 40,160, + 69,104,192,218,177, 78,200,130, 45, 49,161,105, 13, 92, 79, 7, 16,176,101,141,244,103, 5,170,210, 20,201,229,150,133,216,248, +199,187,181,141,180, 37,140, 52, 65,112,200,230,129, 33, 99, 91,153, 76, 59, 47,141,180,184, 70,164, 83,152, 18,176,178,186,112, + 57, 65,218, 77, 49, 27, 21,178, 14, 34,148, 10, 85,197, 28,154, 66,168,166,106, 40,229, 2,104, 96,143,222, 68,114,227, 13,137, +122,233,132,182, 47,193, 48, 16, 40,207, 16, 67,215, 47,120,230, 73, 72,137,147, 86,183, 57, 11, 94,155, 76,148,173, 2,254, 35, +131,234, 29,112,213, 17,125,137, 92,108, 9,231,117,104,246,195, 13,157, 72,164, 2,255,188, 1,147,182,101, 5, 10,106, 35,215, +208, 15, 16,138,172,138, 0, 0,175, 37,218,121,159,171,194, 78, 5, 98, 75,171, 18, 74,153, 70,187, 77,103,129,212,182,193,202, +132, 65, 90, 42, 53, 18, 27,243, 4, 29,218,120, 16,146,158, 1,246, 54, 96,142,190,226,145, 30,182,118,203,236, 89,192,212,121, + 77, 26,181, 55, 16,241, 97, 20, 75, 50, 53,202, 74, 73,252,138,214, 96,244,189,205,174,100,106, 27,183,137, 6,162,200, 8, 38, +197, 66, 0,252, 85,105,217,188,105,174, 47,193,217,168,156,251,142,196,179,215,200, 84,116,205,165,132, 38, 64, 66,177,196, 7, +236,170, 72,170,201, 74,185,214, 68, 13,164,201,164, 50,176,132, 10,246,158,176,114,162, 40,198,135,162,243,218, 36,222, 53, 49, +104, 58, 46,186, 63,200, 8,160,139,160,102,234,110, 56,106,111,140,239,208, 96,161,154,126,213, 52, 23,151,154,118, 55, 76,210, + 20,117,151,160, 46,171,175,178,220,220,234, 63,183,169,153,176,120, 88, 2,218, 0, 11, 4,112, 25,149, 1, 5, 88,172,135, 56, + 1, 18,187, 96, 39,170, 81,112, 68,124,115, 42, 32,251,215,206,161,210,136,137, 88,203, 82, 51,238,214, 56,192,248,165, 27,221, + 20, 37,109,169,216,128,165,163,237,223, 85, 36,215,165, 93, 65, 43, 0, 84, 37,101, 14,244,225, 49,224,195,148,175, 41, 85,117, +197,245,241,142,142, 74, 41,171, 94, 27, 76, 4,108,221, 26,218,233, 28, 53, 85,130,148, 16, 55,186,224,128, 42, 23, 20, 28, 17, + 74,245,204, 68, 18,178, 86,165,137,186,215, 50,153, 27,174,253,154,117,156, 69,120,224,218, 42, 53,231,140,206, 11, 52, 72, 76, + 17,128, 64, 59, 65, 20,188,201,170,104, 34, 38, 33, 60,165,174, 25, 28, 36,143, 1,172, 21, 38, 10, 70,164,166,191,236, 26, 7, +168,216,229,206,225,152,201, 50, 90,101,112,240, 59,148,214,116,208, 29,166,203, 53, 58, 17, 0,237, 24,154,148,213,183, 22,110, +132, 31,132, 64, 88, 47,169, 12,242,202,134,194,160,150,136,148, 27,161,220, 22, 51, 59,185,204, 32, 55, 27,178, 63, 78,173,113, +131,203,209,211, 32,182, 40,197, 41,128,190,123, 42,223,152,188,172,193, 99, 25,112, 34, 28, 5,140,168,175, 98,253,156, 27, 57, +209,102,125, 20, 14,232,199, 26, 69, 44, 11,241, 56,251,202,137,170,179,178,226,204,129,231,128,233, 89,100, 43,132, 89,155,112, + 70,220, 49,148,232,115, 47,210,106, 84, 8,148, 2,106,112,144, 5,180, 49,212, 56, 11,114, 11,120,133,154,227,128, 96, 84,137, +227,102,255, 33,220,139, 32,218,110,213,221, 76,179,194, 17,242,212,128, 97,236, 86, 74,198, 0, 69,123,246,234,157,217,170, 83, +247, 4,245, 98,162,141,171,243,251, 97, 14, 66, 7,206,152,191, 89,228, 3,231,175, 8, 52,240,146, 6,253,111, 96,225, 2,130, + 37, 8, 50, 45, 1, 46,100,237,217,204,128,195,144,102, 31,241,100, 72, 93,250,253, 28,211,219,250,172,157,231,205,205,197, 86, + 73,148,227, 41, 2, 71,234,176, 36, 64,116, 21, 40, 37, 55,194, 65, 21,210,188,117,140,204,167,142,150,211, 90,156,100, 96, 71, +233,215, 78,193,120, 91,219, 0,188,155, 64,120,130, 29, 0, 61,144,172,161, 7,211,128,116,151,152,133,193,118,185,218,251,192, +178, 58,139, 5,151,148, 18, 44,144,234, 49, 3,222, 49,170, 30,105,103, 48, 14, 21,176, 80,136, 3,250, 16, 76,144,138, 34, 0, +144,186, 20, 77,253, 27, 0,207,110,148,101, 19, 55, 53, 74,219, 22,227,148,162, 90, 82, 86, 45, 34, 64, 69, 38,121, 70, 73,140, + 62, 64, 75,162,110,175,228, 70, 4, 77,185, 91,154,110,221, 66,156,208,168,210,164,237,241,255,161, 51,220,240, 88, 11,123,173, + 37, 26,127,148, 88, 44, 92, 96, 51, 19,175,159,112,118, 97, 86,106,167,142,210,117,187, 26,189,175, 9, 22,118,110,231, 8,208, + 97, 97,192, 9,132,167,143,252, 87, 89,145, 26, 65, 68,177, 36,164, 44,181,202,123,203,172, 49,205,137,249, 75,222,185, 40,241, +188, 5,202, 40, 5, 0,126, 32,211, 88, 52,123,105,117, 96,211,125,239,152, 67,254, 81,255, 95,188, 77,166,165,157, 17,248, 70, +222, 43, 25,147, 31, 12, 25, 23,159, 59, 13, 37,146, 87,234,226,145,138, 76, 87, 9,189,150,163,119, 7,190,167,128,118, 2, 55, +224, 54,113,105, 78,108,223, 40,141, 98, 99, 20,125,129, 62,198,152,169,137,118,160, 94,223,213,212,120,229, 53, 60,107,225,166, + 71,182,117,225, 66, 96, 87, 49, 20, 83,158, 25,130, 10,139,113, 61, 81, 55, 5, 70,201, 48,223, 77,151,217,219,191,150,112, 36, + 57, 55,143, 74,116, 51,206,174, 42,179, 57,254,156, 5,160,136,114,107,209,180,152, 81, 78, 54,248,191, 75,138, 62, 8,174, 86, +200,211,142, 55, 64, 25,138, 20,199,223, 84,169, 43, 34, 59, 94,102, 40, 37,107, 52,112,238, 81, 49,149, 41,171,179,121, 68, 50, + 83,129, 0, 25, 79,208, 57,206, 24, 42,181, 97, 5, 36, 81, 57, 23,123,178,253, 37,211,236,156,118, 8,172, 75,103, 14, 36,164, + 16,234,122, 72,163, 40, 40,144,161, 89,197, 40,105,200, 26,232,110,193, 93, 76,127, 39, 40,151, 26, 29, 16, 29, 96,232,101,168, + 12,125,198, 64, 83, 24,136,191, 28,122, 10,149, 90, 45,136,245,250, 2, 2, 25, 22, 33,105, 48, 1,129, 41,218,230,154,101,136, +137,179,202,233,246,182,107,185, 87, 17, 96, 93,112, 52, 26,170,226, 58, 3, 75, 13,166,170,151,122,154, 70, 59, 72,157,115, 61, + 25,189, 75,154,101, 92,152,158, 45, 74,129, 22,239, 70,131,157,118, 40,137,190, 24,205,118, 97,138, 79,102,180,121, 42,185,117, +132, 32, 43,113,213, 39, 94, 35, 37,136,233,171,228,220, 81,150, 57,205, 41,101,117, 34, 36,154, 72, 76,128, 14, 48,130,204,192, + 53, 70, 48, 72,198, 73,250,132,224,213,120, 55,129, 73,160,199, 55,158, 11,178,132,218,137, 44, 89, 26, 42, 69,231, 9, 37,236, + 94, 31, 0, 12, 77,176, 95, 74,114,170, 50,207,111, 77,123,101,252,158,166, 20,210,106, 23,184,204,103, 13,137, 80,107, 91,107, + 65, 76,213,246,172,246,128, 10,166,120, 65, 13, 7, 37,114,205,232,228,164, 77,205, 39,171,158,122, 7, 72,221, 80,163,131, 6, + 39,208, 41, 9, 53,150, 11,234,108, 83,166, 96, 22, 68,189, 66, 67,224,142,214,107,252, 35,159, 90, 32,149,236, 27, 23, 87, 34, + 16, 76,106, 83,198,238,168,164, 62,201, 81, 38, 14,141,104, 73,207,159, 83, 87, 67,148, 57, 86,170, 77,137,148,176, 83,203,134, + 74,157,148, 70,138,184,205, 32, 65, 29,213, 82,250, 28,117, 71, 99, 82, 50, 56,107, 25,164, 26,198, 4, 42, 77,169,227,197,208, + 34, 24,249,241,204,203,204,241,134,190,230,212,162,173, 13, 92,153,218, 82,195, 28,146, 85,209,150,149,210, 82,114, 96, 40,181, + 99, 21, 89,181, 40, 34,205,222, 2,206, 98, 22,197,200, 10,144, 85, 69,123,114,135, 53, 78,109, 22, 69,107,191, 86,119, 39, 84, + 59,100,202,205,122, 24,130, 3,110, 36, 93, 65,119, 84, 98,145,230, 84,171, 64,241, 14,178, 4,233,162,221, 91, 43,158,157,100, + 66,249,224,154, 17, 7,109, 27, 82,160,202, 72, 82,182, 12, 28, 76, 27, 98, 16,167,101,156,240, 36,120,125,134,156, 79,177, 9, +160, 5, 37,225,172, 4, 91,172,233, 63,107,162,166, 74,205, 40,103,215,240,135,253,215,157, 59, 11,120, 26,200, 7, 85,212,126, +215, 54,189, 8, 8, 22,192,176, 16, 65,118,132, 67,240,138, 76,155, 62, 48, 65, 21, 5,144,240, 28, 43,116, 51, 20, 45, 75,152, +242,196,178,186, 3,128, 77,138,176,207, 3,106,206, 35, 49, 92, 70,208, 47,130,192,220,223, 14,122, 75, 86, 52,225, 72,255,233, +166, 25,109, 13, 67,128, 97, 56,223, 45,173,151,137,228,126,183, 8,117,203, 90,230,156,152, 96, 94, 43, 17, 78, 80,126,130,102, +247,190, 33, 99, 61,201, 82,179,154, 66, 42, 41,221, 37, 41, 98, 64,129,143,196,164,229,156, 70, 22,252, 94,232, 97,204, 40,244, + 1,157,190,218,173, 39,127, 75, 86, 78, 50, 71, 67,160,155, 20, 34,188, 57,137, 26,212, 96, 11,184, 29, 90, 77,189,183,185, 75, + 1,202,140, 87, 34,107,171, 83, 28, 79,201,210, 88,172,176,227,188,169, 2, 23, 25,121,226,148,187,154,153, 12, 85,234, 33, 2, +105,216, 2,200,118,110,244, 74,221,116, 2,192, 16,159, 51, 99,218,221, 34, 79,144,234, 12, 25, 92, 40,201,160,152, 74, 83, 30, +105,235,184, 83,160, 85,225,235,101,229, 59, 90, 16, 82,145, 12, 70,244,110,127, 46,148, 38,107,106,154,121,205,101, 77, 8,142, +232,169, 17,130,154,144,248, 53, 9,125, 75, 41,112,221, 93,172, 50,208,151,159, 54,211, 18,209,178,212,166,178,106,209,137, 82, + 19, 75, 35, 77, 75,188, 90,108, 5, 73, 71, 1, 36,186,235, 23, 24,195, 5, 56,238, 14,172,172,148, 49, 53,178, 34,171, 49,125, +183,210,219, 24,128, 73,210,168,151, 9,174, 69, 21, 55, 18,201,162, 82,148,244, 36, 36,177, 14, 64,229,105, 37, 11,197,224,201, + 87,104,105,166, 36, 90,143,118,184, 67,157,248, 44,147, 29, 88,160, 0,224,209, 10,123, 0, 50, 92, 18,134,105,154,135, 53,101, + 20,184,201,132,228,244, 34, 37,186,174,117, 38, 99,104,127,203, 88, 82,107, 88, 69, 12,169,110,178,242, 43, 0,151, 11,103,176, + 39, 65,127, 8, 1,156, 15, 39,217,194,166,190, 77,156, 29, 68, 51,136,235,162,123,161, 76, 59,196,214,151,141, 64, 83,126,110, + 1,174, 44,176,199,102,149, 82, 1,208,153,178, 24, 42,116,135,108,130,188, 42,156, 2,136,232, 69, 49,237,169, 53,201,137,115, + 0,135, 45, 43,101,133, 52,206, 82, 81, 29,234,181, 12,148,204, 21,241,176,220, 6,183,149, 45,247,253,125, 48,234,214, 11,124, +234, 61, 93,160,182,216, 0,109, 36, 43,169, 17,133,247,131, 45,245, 88, 48,145,152,251, 17,175,171, 76, 39,204,151,132, 74, 21, +139,248,137, 22,116,253, 80,104, 3, 61,124, 48, 38,182, 65,150, 96, 73,196,239, 18,135,131,193,176, 73, 35,167,159,141,149,160, +214,115,165, 44,182, 65,153,162,154, 22,109,154, 62, 89,100, 35,165,152,160,159,121, 43, 89,145, 37, 99,115,253,172, 18, 65,186, +122,162, 63,132,134,172, 82,182,176,159, 53,110,130, 90, 51, 50, 73,210, 54,115, 16,128,171,136,184,163, 79,122, 32,198,153,179, + 10,149,181,240,228, 21,100, 44, 96, 28, 40, 11, 24, 89,216, 88, 48, 67, 34, 17,229,152, 64, 75,138,178,245,253,206,115,199,148, + 61,246, 24,214, 86,154,177,185,229, 68, 91,214, 29,104, 12,177, 35,133,195, 81, 40, 66,169,189,111,234, 40, 5,124,122,198, 46, +132, 46, 69, 25,250, 10, 12, 42,100,165,227,228,248, 88,115, 35, 97, 4,200, 85,167, 84,174,212,104, 75,161,181, 37,110, 80,184, + 27,163,143, 82, 35, 2,119,222,191, 68,237, 27,148,249,194,200,114,206,146,152,193, 84,176,158,167, 76,193,105,174, 30,213,168, +217, 43,220,248,132,209,181, 71, 24,123,113, 79,198, 94,184, 1,218,129, 28,179, 69,174, 2, 53, 80, 65,176, 16,202, 53,167,159, + 7, 48,133,219,140, 28,103, 32,223,120,175,189, 28, 27,105,112, 6,161, 33,113,150,138,205,135, 14, 48, 16,141, 60,177, 64,169, + 79,162,182, 37,210,228, 86, 32,207,234, 32, 74,110,123,143,131, 42, 70,195, 50,146, 54,122, 39,114,169,106,156,242,220,116, 63, +100,230,148,210, 15, 3,205,137, 57,225, 29,212, 24, 48, 22, 37,131,230, 36,225, 40,176, 60,199,185,253,172, 97,153, 64,219, 32, +169, 16,218,125,238, 76,241,208,238, 75,151, 52, 67, 4,180,245, 61,115, 66, 33,157, 75,208, 80,203,156,177,105,223,211,192,147, +167, 18, 47, 2,234,138,150,146, 58,230, 20,208, 21,204,110, 58, 86, 40,148,146, 4, 65,174, 78,241,100, 7,221,110,209, 4,138, + 51, 13,126,107, 53,205, 77, 15, 66, 3,112, 59,222,141,185, 41, 32,145,207,201, 74,193, 68, 24,121,253, 27, 4, 45, 64, 21,136, +164, 74,131, 80,163,108,160,252,146,181,144, 43,244, 78, 20, 54, 52,188, 81, 86,130,170, 81, 97, 3,207,122,206,188,194, 49,207, +147, 85,128,110,130,111,229, 84,151,108, 83, 67, 37, 73,118,154,139,186,206,219, 13,220, 64,164, 68, 18, 22, 55, 29, 39, 20,234, +164, 81,207,192,235,106,140, 40,183,157,153,100, 13,146, 45, 34,134, 42, 17, 9,183,137,125,110,106,251, 72,235, 98,137,200, 28, +181,151, 25, 55, 23, 80,126,227, 84, 5,226, 84, 15, 23,173, 61, 87, 68, 95,131,138, 81,113, 96,144,248, 4,230, 70,123,153, 37, +163,111, 11,150, 12, 18, 10,191, 2,144, 77, 64, 3, 26,105,124, 12, 20, 58, 0,192,161,160, 13,161,108,101,179,153,178,172,208, + 34,177,176,103, 89,168, 9,208, 39,141, 19,162,142,166,234, 60, 59,183,187,144,211,204, 24,202, 19,228,220,111, 2,245, 45,104, +144, 83, 96,205,144,104,235, 85,200, 11, 26, 87,149, 57,218, 72, 6, 78, 62,100,156, 11,246, 23,231, 22, 32,157, 90, 18, 39,240, + 82, 5, 94,183,160, 0, 73, 6,184,133,194, 87,219, 87, 76, 64, 24, 37, 39, 86, 40, 25, 42,113,231,197,178,121,117,116, 12,150, +126,238, 44,152, 17,107, 86, 9,164,239, 44,181,137, 34, 0, 73,173, 16, 65,158, 8, 32,101,180,138, 37,240, 4,160, 99,190,162, +211,136, 13,124, 4,219, 74, 11,160,182,105, 69, 49, 78,132, 65, 31,163,117, 24,155,102,221, 4,209, 51, 7,254, 1, 37,224, 11, + 17,232,122,228,178,149, 55, 90,225,160, 24, 11,200,232, 26,115, 36,129,236, 26, 93,123,220,119, 10,101, 26, 43,212,232, 40,218, +170,106,211,157,130,206,180, 94, 90, 87, 92, 0, 5, 57,234,166, 30,202,146,186, 2,187,238, 0, 26,116,110, 11,163,178,170,210, +148,202,137,117, 34,194,218,250,114,198,130,213,172, 53,250,159,228,131,101,236, 64, 89,181, 71, 64,213,140,161,205, 29, 11,102, + 55,124, 15, 80,138, 45,116,120, 91, 26, 88,153, 20,172, 93, 39,113,156, 65,126,119,104,164, 82,188, 45,237,180,127, 12, 26,241, + 75, 9, 22,205, 0,238, 43,141, 0, 89,167, 89,182,165,139, 17,233, 62,100, 58,240,206,226, 97, 16,131, 18, 47,103,154, 32,146, + 57,146,139,125,227,164, 40,238, 89,140,252, 97,136,208, 58,120,174,157, 70,201, 99,203, 56, 9,112, 69, 69,177,116,168, 49,132, + 10, 83, 81,230,105, 77,188,214, 68, 21, 3,152,161,215, 49, 5,234,123,148,213,213,214,210, 50, 40,211,229, 28,101,143,109,130, + 93, 15, 91,214, 85, 70, 35,221,201,171,240, 9, 89,217,115, 86,251,247, 69,172,194, 41, 58, 95, 35,236,154,165, 96,129,160,105, +205,238, 77,226,181, 80, 89,201, 44, 96,121,160, 98,196,201,161,234, 39,196,169, 46,100,247, 27,251,244, 18, 73,114,100, 18,128, +206,162,103,224,128, 50, 90, 13,247,180, 5,250,120, 75, 70,152, 51,240,209,165, 81,228, 67,240, 22, 56, 28, 8, 76,243,186, 96, + 35,197,202, 13,101,107, 5, 68, 2, 29,227, 16, 43,192,141,142,129, 99, 5, 26, 70,115,177,251, 0,109, 32,167, 62,202, 2,233, +117,134,212, 36,136, 91, 64,214, 32, 20,179, 74, 40,214, 49,102,127,114, 93, 82, 76,117,112, 18,196, 30, 69, 44, 16,212,129,180, + 21,145, 10,206,167,109,182, 28, 32, 76, 3,154, 53,243,203,212, 58, 88, 0,181,236,247, 66, 82,218,148,215,116,180,178,121, 93, + 32,165,110,250, 18,168, 26,232, 64,173,138, 50,160, 28,142, 66, 69,192,152,221,200, 66,169,153, 65,106, 0,178, 42,210,106, 94, +139,165,132,171,149,142, 42,161,242, 20,100,183, 1, 10, 85, 34,192,136,116, 48, 0,143,168, 68,112, 2,206,115, 71,145,234,100, +206,202,113,227, 60,169,198,157,142, 10, 5,150, 12, 56,245,191,205, 77,143,154,244,138,102, 17, 48,216, 9, 57,218, 82, 64, 53, + 17,128, 62, 21,218,203, 34,108,155, 25,203,211,156,106,225, 5,231,111, 89, 93, 79, 4,242,174,214, 36,102,108, 0,132, 89, 89, +149,133, 85,237,218,118, 65,158, 81,216, 70,132, 87,114,237,190, 47, 22,118,117, 65,193, 18,152, 83,249, 74, 40, 57,130,232,145, +105, 8,176,138,195, 96, 80,102,171,206,180, 85, 58, 43,215,234,242,236,216, 43, 56,227,254,185, 0, 12,192,126,154,212, 83,139, + 26,225,177,157,179, 26,101, 82,167,167,176, 5,102, 66,167,105, 91,117, 25,166,189,114,250, 92, 22,152, 10,100,127, 94,170,157, +119, 43,100,199,243, 68,223,251,226,141, 38,164,100,113,161, 17,253, 94, 0,225, 96,202, 65,142, 42, 94,169,235,146,183,140,179, +237,111, 42,250, 11,120,203,121, 98, 74, 18, 8, 73,190,125,243, 48, 57,109,208,236, 53, 94, 10,100, 45,183, 30, 50, 32, 39,177, + 38,137,105,115,240,110, 11, 73, 66, 41,123,123, 20, 41,192,209,228,236,168,186,131, 60, 25, 73,108,239, 24,123, 1, 39,138, 88, +214,196, 78,213,143,104,151,151,186,174,101, 16, 78,180, 75, 12, 97,146,149,205,221,180,150, 89,107, 66, 46,140, 18, 15, 75,123, +162, 57,179,192,104, 81, 35,162,152,160,113, 78, 43,254, 96,252, 95,129,250, 58, 18, 88, 61,133, 23,116, 40, 54,218, 8, 56, 79, + 30, 85, 16, 67, 23, 51, 25,179, 59,163,238,129,162,156, 93, 77, 10, 0, 57,169,166,189,230,185, 99, 7, 98, 2, 76, 8, 3,226, + 55,241,139,165, 77,177, 54,202,124, 18,109,129, 71,193, 49, 67,212,139,105, 19,196,179, 29,249,169,192,207,157,228, 57, 83,115, + 71,221,252, 48,107,208,112,177, 53,162, 49,102,131,112,168,131, 81, 75,113, 2, 68,183,161,193,144,233,196, 56, 87, 85, 8, 99, +165,214,234,194, 53, 9,111,156, 80,207,168,184,200, 34,192,150,200,126,101, 97,202, 84, 42,138,190,232, 4,189,237, 37,157, 59, +224, 19, 82, 35,111,139, 64, 74,126, 62,141,225,193,146,151, 27, 19,230,180, 55,118,196,169, 14,139, 45, 90, 3,255,149,165,205, +132,172,129, 6, 39,198, 71, 76, 16, 81,135, 20, 17,237,208, 13,206, 28,119,108, 25,224, 10,154,148, 80,212, 94,202,100,228,235, + 7, 85, 21,155,255, 16, 58, 29,156,245,231,205,169,228, 38, 11, 52, 70,220, 53,122,173,219,218,149, 38,187,183,154, 41, 51,193, +169,210,136,135, 73, 40,152, 89,183, 55,239,169, 94,210,126, 32, 69, 92,208, 39, 36,141, 25, 58,124, 81,202,242, 56,216, 2,155, + 36,129,218,103,100, 70,200, 65,149, 85, 13,188, 51, 35, 40, 73,241, 5,160, 84,131,136,225,222, 44, 70, 5, 57, 90,173, 71,131, +131,205,169,245,238,212, 51, 96,136,208,183,209, 41,211,239,217,174, 83,220,188, 53,170, 74,202,164,179,129, 18,226,208,213,178, + 66,163, 24,129,118,178,212, 0,116, 85,231, 42,217, 30, 65,124, 13, 98,137,125,175, 48, 65, 37,113, 7,100, 84,199,220, 40,218, +198, 80,211, 13,150,174,236,152,128,179, 78, 13, 98,179,209,188,237,212,160,151,232, 90,134, 46,135, 20, 64,120,138, 56, 76, 63, +225,110, 76, 5, 8, 34, 42, 20,204,128,184, 1,218,137,166,198,190,129,221,145, 92,239, 68,148,120, 97,232,102,204, 12,186,229, + 0,111, 40, 32,205,169,217, 11,207,192,184,148,169,120,115,137,136, 84, 80,135,190,145,102,132,236,122,105,116,162,155, 46,221, + 83,141,164,138, 43,146, 53,156, 13, 93,239,146, 84,222,236,188,144,134, 39,128,202,156,132,226, 10,246,161, 27,255, 93,107,142, +104, 25,184,252,209, 63,185, 81, 95,114,205,121,201,148, 65, 84,168,176, 72, 72,203, 54,133, 5,218, 28,194,102, 10,186,205,145, +238, 46, 89,195,154, 32,165,213,144,224,162,219, 85, 28,215, 19,213,188,138,124, 70, 96,151,131,231, 4,174, 99,140,242, 38,185, +197, 78,130, 65, 49,105,197, 71,157,223,188,254,162, 81, 53,114,207,139, 25, 30,231, 18, 87, 64, 40, 55, 37,133,237,168,233, 82, +137, 6,158, 92,217,229,126, 11, 99,155, 69,149,222,115,174, 54,118,205,182,110, 59,156, 50, 42,108,245, 52, 87, 80,211, 79, 20, +187, 83,106, 88,107,133, 82,132,254, 92, 64, 80, 74, 56,117,161, 2, 59,163,224,186,178,166,254, 27,216, 0, 52,139,174,120,199, + 37, 0, 88,192, 39,101,206, 29,148,216,121,247, 29,204,181,232,226, 33,224,124, 32,186, 29, 83,222,209,174,152, 3,128, 75,178, +226, 52,142,173, 89,165, 57, 38,180, 18, 38,200,106, 13,223, 95, 5,122, 55,192,254, 34,107,200,236,220, 80,171, 68, 27, 33,165, +214,144,212, 86,240, 10, 60,175,112, 76, 77,175,223, 90,171, 70,180,108,160, 45, 84,168, 35,151,176,149,166,165, 88, 7, 17, 58, +175,192, 57, 67, 24,103,178, 7, 37, 99, 58,254,127,186,222, 44,214,186, 45,187,239, 26, 99,174,189, 79,243,245,183,239,202,213, +223, 42,199,109, 57,196, 22, 78, 28, 39, 16, 64,142,128, 32,144, 72, 68,128, 72,121, 0, 30,224, 33, 18, 47,188,241,200, 19,111, + 72, 72,145,120, 64, 81, 64, 40, 36, 36, 2,146,216,142, 19, 57, 78,202,177,203,198,213, 87,185,110,221,106,110,127,191,251,245, +237,105,246,154,131, 53,231, 28,205,127,172,125,110, 69, 55,247,250, 59,231, 59,103,239,181,215,154,115,142, 49,254,255,223,191, +172,100,112, 94,173,115,132, 54,145, 81,209,224, 97, 44,235,226, 60, 19,174,120,221,221, 4,136, 14, 33, 98,154,162, 99,230, 7, +143, 56, 86,131,133,141, 61,138,149, 32,137,116,160,175,169, 3, 98, 72,231,221,182, 46,181, 42,124, 54, 92,186,192,129,190,117, +157,203,200, 45,183, 13,186,167,223, 41, 46,214,186, 25, 70, 31,180,187, 97,222, 85, 61, 32,193,225,180, 64, 62, 59, 7,168, 75, +112,100,210,127, 54, 99, 43, 70,103,245,165, 51, 63, 26, 45,175,214,152,251,111, 58, 0,126, 51,133, 40,193,143,255,197, 23,101, + 78,194,174, 0, 82, 84,225,212, 82, 75,243, 97,104,183, 13,180,174, 93,172, 66, 23,177, 89,241, 20,107, 39,254,194, 65,202, 18, +202,237, 59, 89,101, 40, 36, 21, 32,234,217, 42,249, 38,221, 46, 70, 45,152, 5, 31,109, 42,225,181, 60,174,186,157, 99, 55,175, +197,125, 57, 27, 24,111, 62,171,224,247, 20,156,208,142,179,118, 80, 18,102,185, 29, 71,194,226, 36, 40, 14,139,205,151, 57, 42, +242, 12, 11,130,220,110,150, 36,226, 19, 65,161, 69,188,254,162,155,130,115,213, 53, 11, 60, 44, 63, 18, 51, 87,175,170,196,219, +180,136,148, 44, 41, 17, 44, 87,214,200,174,183,184, 83,171,248, 4, 54,244,194,214, 26, 35, 31, 39,132, 66, 62, 47, 57,188,151, +156,183,210, 27, 9,173,172,107, 16, 93, 99,251,129,112, 14,172,224, 56, 85,119, 17,139,206,228,138, 30,236, 38, 56, 90, 50, 56, + 22, 10, 69, 86,121,216,249, 50,164, 37, 87,161, 86,204,216,255, 49,101,201, 7,199, 2,226, 98, 69,195,145,150,149,159, 47, 85, + 95, 37,134, 64,144,177, 59, 42,189, 41, 44,131, 2, 26, 5, 59, 11, 77,188, 2,139, 8, 0,103, 10,168,112,145, 61, 80,247,124, +148,146,188,233,240,184,116,133,120,241, 62,103,154,161,234,125, 36,171,176,146,117,107,206,132, 71,238,142,100,129,174, 21,123, +177,161, 39,163,145, 30,168,212, 71, 1,119, 73,160,170, 35, 88, 37, 68, 91, 43,229,186,123,138,141,156, 88,124,145,183, 77,145, +210,129,135,247, 42,183,228, 61, 53,106, 25,172, 9, 30,133,187, 10,110,103,176, 52, 57,167, 64,120,213, 10,167,236,231, 95, 11, +213,116, 84,227,220,122,160,190,217,168,181,160,134, 73,194,238,234,218,152, 50,185,208,173, 20, 94, 1, 61,226,253,142, 67, 40, +152,129,211,189, 47, 73,182, 46, 21,138, 46, 9, 63, 57, 83,104,130, 58,192,165,232,102,220,115,200,197, 69, 97, 6,167,178,140, +138,105, 50,151,203,152, 33, 23, 5,209,228,252,132, 70,120,155,151, 53,189, 38, 21,252,102, 42, 17,230,178,108, 88,231,187, 97, +207,108,240,152, 73,195,159, 42, 34,147,109,141,102, 16, 29,167, 28, 8,197, 82,123,228,176,142,212,140, 6,201, 4,222,251,241, +185,118, 97, 92,143,202, 37,141,102,157, 84, 63, 83,161,101, 47,125, 19,239,238, 20, 41,206,172, 48, 81,105, 71,183,159, 45, 47, +126,170, 4,153,216,181,207,254, 74, 17, 77,217,137,185,162, 61, 40, 99, 79, 42,160,132, 15,170, 19,144, 22,147,183, 48, 83,163, +114,235,189, 66,227,186,192, 66,103, 63,111, 45,237,192,244, 52,145,140, 41, 21,225,253,197,189, 70, 53,199,117,109, 59, 11,179, +174, 92,176, 81, 35,227, 60,158, 73, 12,136, 64,230,111,204, 98, 24, 72, 76,206, 47, 94,249, 40, 61, 70,212,148,190, 41,210,179, + 66, 10,156, 68,104, 5,182, 30, 9,105, 71,209,224,199, 25,187,172, 68, 64,169,133,205, 81,129,161,118, 98,108,102, 49, 35,239, +163, 21, 0,153,176,228, 57,243, 4,162,157,181, 0, 49, 16,167, 2,139, 79,246,137,123,156, 34,132,126, 48,116, 8,216,124,250, +194,105,195, 68, 53,246,122, 30,137, 26,139,128,191, 72,186, 23, 59,138, 17, 54,233,232, 10, 6,255,157,156,184,104, 98, 21,241, +185, 91,127,248, 10, 90,124, 24, 70, 28,124,225,103,237,206, 13,220,160, 48,171,184, 96, 75,211, 90,151, 65,180,111, 42,249,132, + 60, 88,185, 1,246,181, 6,156,212,205,233,239,112,158,237,241,202, 43,237,109,222,245,115, 37,200, 20, 40,177,241,175,162,130, +133,131,167, 31,145,172,165, 71, 94,242,138, 82, 73,142, 10,229,252, 81,242,106, 92, 66, 65, 7,131,115,102,182, 77, 57, 94,152, + 65,207,202,144, 79,142,118, 57,246, 17, 29, 91,214, 60, 69, 75, 56,130, 52,138, 23, 61,214, 10, 23, 36, 89, 48,226,141, 32, 6, + 22,230,222,206,247,119,215,137, 10, 7,107,221, 59,176,150,244, 94,246, 49,181,236,159,119,177,248,157,209, 93, 41,184, 81, 24, + 71,124, 30,138,107, 68,169,150,176,133,142, 14,249,212, 53, 24, 24,240,224,179,123, 11, 2, 98,222,131, 18,173, 33, 92, 5, 78, +105,188, 90, 98, 81,116, 87,244, 52, 84,245, 89,169, 42, 58, 43,233,198, 84,162,167, 89, 20,219, 54, 55, 89, 26,217, 72,228,195, +112,173, 78,113,211,206,113, 75,228,171, 32,148,181,156, 51,209,207,228,176, 17,131,220,245,131,130,186,218, 27, 97,219,237,134, + 14,131,245, 51, 62,187,121, 30, 66,184, 18,203,126,181,144,158,185,134,218, 67, 99, 91,107,157,161,187,200, 48,146,156,149, 80, +105,126,117,189, 71,218,109, 48,233,209,179,223, 39,243, 0, 17, 53,214, 59,107, 4,107, 87,206, 23,184,254, 3, 83, 91, 58,213, +171,244,142,200,166,229,204,118, 20,109,251, 69,118,129,170,122, 66, 65,165, 87,152,208, 9,154, 30,108,244, 66,239,113, 28, 62, +166,114, 90,139,189, 8,126, 7, 39,206,120,158,254, 97, 75, 72, 64, 69, 47,249,238,129, 22, 24, 76, 95,179,150, 47,188,155, 24, + 10, 80, 40,169,146,253,198,194,154, 36, 49, 47, 86, 98,185,149, 39, 87,144, 88, 39,146,103,246,130,250,129,252,123, 5,117,220, + 16,226,225, 66, 56,178,240, 14, 78,215,107, 61, 59,195,113, 68,220, 6,144,142,133,234,122,184, 4,253, 49, 40, 81,245,120,194, + 23, 64, 96,250,169,114,149,200,135, 33, 33,193, 79, 69,238,193, 58,228, 33, 8,103, 6, 6, 50,224, 76,161, 21,181,141, 98,124, +129,138,244,204, 7,144, 52,168, 9, 29, 6, 71, 7,133,131,220, 86, 72,246, 52,204, 19, 69, 84,176,255, 99,115,100, 85,198, 15, + 17, 75,129,168, 88,134, 89,106,241, 3, 4,107,143,223, 99,130,129,233,141,243, 86,194,235,227,137,119,246,164,155,240, 44,207, +143, 67,205,159,179,179,221, 86,184,182,190,165, 11,159,113, 48,153, 88, 30, 44,120,156,243, 74,114, 24, 92, 12, 51,242,131, 9, +238,255, 69,219,249, 46, 20, 36,224,129,103, 19, 41,103,158,140,174, 15, 53, 63,107,218, 58,225, 89,226, 62,174, 21,186, 77,146, +216, 8, 99, 93,130, 7,219,206, 74,109,253, 40, 4, 10,116,208,171,152, 35,163, 68,151, 71, 32, 30, 53, 90,165,209,253, 98,136, +124, 78,121,230,140,115, 86,128, 43,219, 65, 94, 38,183, 90, 38,140,175,183, 96, 57, 84,252,122,192,115, 14,168, 39,184,169, 48, +160,224,252, 67,156, 62,207,110,121,140,167,135,205,214,165, 85,103,243, 71,163,168,141, 25, 29, 23, 40,144, 13, 11, 86,255,251, + 5, 86,103,140, 90, 5,196,109, 36, 40, 6, 67,161, 29, 34, 10, 5, 95, 97, 83, 48, 60, 10, 97, 51, 5,146,232,150, 77,107,217, + 92,173, 93, 62,233,104,201,198, 13,253,159,101,131, 61, 71,207, 59,219,179, 82, 60,214,151, 75,160,107,125,212,162,135,211,131, +205,198, 51, 18, 4,194, 96,104,154,226,126, 44,131,114, 74,243, 32,186,219,231, 91,107,180,136,139,147, 16,173,195,166,247,120, + 29,237,232, 9,174, 91,159,133,175, 51, 25, 38, 21,195,169, 16,111,228,172,107, 46,123, 63, 48,128, 69,115,218,244,244,194,222, +117, 56,171, 59,141,138,155,180, 98, 42, 90,149,201,126,113,157,224,249,178, 39, 91,146,117, 56, 3,175, 88,197, 28,173,123,230, + 21, 29, 14,230, 9,133, 81,173, 78, 78,195, 98,252,123,224,115,174,208,106,226,189, 62, 44,175, 92,103, 24, 7, 75,145,190, 68, +104, 3,179, 83,105,137,237, 53,107, 49, 50, 23, 25, 83, 11, 72, 86, 52,183,120,144, 9,197, 49, 48, 51, 41,120,136,101, 73,169, + 92,177, 17,129,230, 1,206, 85,174,134, 93,161, 71, 11, 3, 94, 80, 71, 25, 5, 46,104,154,227,195,123,114,200, 76, 17,247,112, + 26,131, 47, 85, 86, 18,155, 71, 65,150,180,109, 48,201, 85, 0,115,184,238,189,172, 32, 40, 41, 0,242,208,113,131,228,252,103, + 94, 29,166,214, 49,180,152,103,189, 39,195, 76, 2,232,232, 28,236,185, 39,152, 33,161, 42,111,228,134, 78,182,174, 66, 88,127, +236, 84, 77, 57,235, 26, 43,101,251,161,162,248, 99,183, 5, 81,206,183,102, 14, 35,172, 51,241, 67, 32,106,115,201,181,251,195, +157, 43,133,188,162, 26,123, 39,204,249, 77, 17, 14,158,119, 86, 91,207,120,237, 67, 48,217,219,227, 74, 90,225, 42,201,218,181, +111, 55,203,120, 55,118, 81,102,102, 82,131,106, 16,190,166, 96,162, 42,161, 76,230,117,116,113,204,181, 25,244, 45,222, 37,235, +111,114,210,195,218, 80, 53,114,179, 55,105,135, 75,224,103,182,234, 71, 42,175,196,244,251, 40, 32, 73, 66, 84,217, 91, 47,176, + 42,101, 71,143, 10,140,215,128, 69,193, 6,224,153,252, 80, 95, 74, 73, 88,218,128,250, 84,181, 11,199,172,223, 64, 83, 99,195, + 82, 97,102,111,181,110, 18, 65,179,226, 38,160,226, 87,182,180, 58,209, 54, 46,180,170, 35, 7,221,158,208,105, 56, 44,236,125, + 87, 72,155,116,101,126, 70, 54,219,168,178,232,129, 4, 1,118,235, 3,107,191,167,244,112, 95,245, 94,147, 26,148,202, 98,172, +119, 19,238, 10, 71, 1, 68, 17,172,213,143, 39,203,102,110, 60, 1, 31,159,200,236,247, 9, 10,181, 35, 85, 80, 84, 96,199,157, +215,209, 59,108, 27, 30,120, 36, 6, 98, 38, 15,213,250,120,206, 99,230,110,255, 27, 44,247,225, 31, 55,110,123,142,243,208, 13, + 93,139,173,229,170,118, 85,188,217,233, 80, 87, 72, 16,120,213, 90,242,226,169,130,197,249, 21,182,166, 15, 41, 62,248,170,122, +232,218,114,200,152,182,174,233, 32,183,161,171,165,109,167,105, 48,214,227, 47,128, 45,180, 52, 26, 20, 37,141,139,143, 92, 93, + 16,112,185, 51,141,115,175, 8, 43, 66, 14,110,154,183,174,132, 61,159,189,112, 48,150, 93,121,139, 98, 38, 87, 66, 34, 33,206, + 0, 22,171, 86,128,228,121, 51,195, 33,131, 49, 54, 82,162,219,144, 84,222,116,145, 13, 3,225, 55,171,204,104,247,193,218, 98, + 20, 1,179, 44, 57, 17, 64, 40,139,248,226,224, 80, 66,161, 11,237,119,179, 59,133,181, 47,128, 12,101,149,141, 45,123, 83, 14, + 73, 40,206,125, 55,112, 28,144,152, 43,164, 17,174,125,180,121, 51, 69, 93, 1, 35, 15, 64,225, 38,147,221, 87, 20, 74,106,191, + 97, 45, 99,192, 98, 82, 25,233,115,113,176, 9,101, 61,108,192,146,240, 61,126,175,136,195, 65, 96, 40, 45, 43,133,172, 30,164, + 11,115,174,235, 57, 70, 4, 49,219,215,120,207, 2, 27,125,137,215, 10,160,214, 85,107,146,163, 42, 5,184, 10, 90,143, 80,108, + 52, 44,104, 56,191,102,135, 90,216,251,177, 84, 54,247,166, 11, 92, 31, 0,130, 48,151,232, 40, 24,159, 29,218,195,177, 49, 49, +216,137,116,206, 93,241,176, 41, 73, 41,207, 32,244,243, 3,184, 7,166, 8,161,147, 62,176,162, 37,162, 83, 91, 11,209,238, 41, + 31, 70,151,142, 64, 70, 13, 71, 60,101,213, 57,254, 9,174,194, 98, 77,171, 49,211,108,213,101, 93, 10,145,165, 98,106,243, 79, +225,228,207, 76,157,137,200,156,128,231,187,112, 28,148,139, 9,121, 65,160, 42,241, 59,157,188, 41, 49, 82,137,240,151, 81,110, +249,114, 8,194, 50,226,176,167,166, 4,121,208, 36, 21, 24,111,141, 31,184, 89, 5,193,172, 34,165, 77,187, 81,145,116,201, 62, +178, 41, 53,251,210,201,179,215,193,210,181, 84,164, 67, 43,161, 93,131, 58, 42,208, 30,184,212, 14, 35,109,173,175, 53, 2,169, + 84,119,193,166, 79,226, 12,108, 50,222, 73, 98,125, 23, 61, 36,170, 71, 28,163,161,199,172,120,142,231, 64,162,163, 90,171,142, +129, 39, 53,244,118, 1,158, 10,167, 37,148,228, 99,190, 60,154, 20, 21,220, 64, 78,116, 43,227,254,154,149,113, 96,107, 18,153, + 21,183, 12, 95,186,137,247, 88,103,253,162, 57, 19, 54,138,156,108,143,237, 27,104,217,131,178,181,238, 64,209,121,190,135, 40, + 25, 29,179, 93, 83,158,253,243,113,122,232,100, 27,177,173,149,250, 28,104, 43, 95, 33, 5, 64,183, 23,237,117,176,119,165, 38, +129, 41,169, 62,123,155,246, 32,216,188, 40,156, 83, 33, 35,229,181,252, 29,218, 35,200,249,165, 4,217,216,223, 76, 18,206,148, + 87,226, 59, 61,245,165,106,138, 57,197,180,230,181, 58,188,240,169, 50,210, 52,110, 66,250,155,219,174,120, 15,193, 30,139,112, + 1,216, 62,136,240,100, 69, 42, 2, 42,216, 10, 59,237,162, 39,143, 33, 4, 5, 24,102, 21,251, 34, 40,113,242, 90,171,253, 48, + 71, 58,218,158,144,249, 4,152, 78,243, 36, 51,103, 66,148,112,182,239, 8, 99,139, 44,183,170, 19,238,147, 4,236, 46, 12,185, + 50,234,219, 46, 25,207,187,230,175,187,112,131, 34,150,114, 4,171, 20,168, 46, 65,181,219, 31,226,178,114, 44, 33,192,166,181, +165,138,255,185,172, 22, 63, 15,112,112,133,237,120, 24,125,174, 24,153, 67,128, 55,206, 8,122, 36,211, 21, 14, 53,173,207,206, +117, 3, 41,172, 45, 51, 93, 88, 8, 68, 70,105, 44,194,208,130, 94, 85,228,136,130, 65,103,131, 95,107, 19, 22, 85,107,173,142, +131, 85, 41, 28,211,185, 18,168,226,190,104,105, 11,178, 47,130,182,193, 79, 37,219,147,170,142, 84,172,253, 42,115, 18, 48,153, +139,197,253,249, 18, 86, 36,180, 72,114, 5, 50,227, 42, 25, 5, 91,176,204,249,148,153, 83, 89,227,235,108, 86, 80,247, 18,155, +189,177,116,237, 96,191,191, 83, 2, 24,199,224,214,102,170,237,117,111,178, 72,192, 34,113,221, 21, 82, 16, 98, 50, 54, 43,115, + 53,216,134,173, 89,210, 67, 28,201,113,136, 30, 85,152, 85,156, 69,241,161, 35,208, 29, 59, 26, 82, 67,183, 81,194, 90,225,246, + 51,177,182, 34,101, 20,171,109, 18,235,145, 38,123,250,150, 85,219,218,230,109,107,182,132,250, 93,210,220,217, 72,145, 72,149, + 4, 85,121,153, 96,148, 54,238,155,254,222, 74, 25,221,142,110,107,134,176,159, 50,245,235, 97,243, 92,195,246, 82, 58,220, 75, +178,234, 22, 66,135, 69,241, 67, 80,209,174,214,192,193, 46,155, 96,221,244,131, 65, 66,206,154,111,192,116, 23,160, 97,154,220, + 15,110,215,181,118,241,103,219, 27,183,155,152,233, 8,208, 13,205, 57,210, 54,230,185, 86,239,120,184,224,216,244, 25,100, 97, +181,227,129,111,135,128,158, 99, 2, 4, 74,209,200,241, 41,109, 72,186,222,110, 38, 24, 63,219, 40,172,120,107,189,234,137,161, +162, 83,165, 11, 46, 71,198,233,174,171,216, 41, 35,123,157, 33, 49,222, 87, 81,181,187,145,230,250, 87,102,234,127,183,204,154, +179,190,252,179,105, 39,165,173, 68,102, 55, 99,201,199, 4, 0,126, 73, 1, 18, 34,112,113, 25, 98, 24,247,243, 58, 64, 24,196, + 43, 74, 27,120,170,147, 93,163,164, 3, 70, 86, 39, 83, 18,156,212, 68,173,130,164, 40,217, 23,133, 69,170,164, 36, 76,162, 37, +195,241, 30, 61,180, 36, 37,105, 82,116, 18,166, 23,161,217, 14,135,158, 53, 24,208,166,236,181,121,244,202, 23,158,229,240, 8, +190,147,125, 81, 83, 74, 27,138, 44,247, 80,201, 67,213, 10,246, 51,145,172, 41,112, 7,113,137, 57, 25, 65,116,109, 20,155,170, + 34,109,138, 74, 41,110,140,139, 86, 63, 39,124,118, 84,178,182, 41, 77,250, 48,137,251,186,219,102,185,229,141,218, 5, 45,211, + 62,218,188, 19,193,235, 80, 69,168,189,247,153, 48, 25,176,132,117, 12,187, 30, 37,131, 77, 38,136, 80,244, 98, 78,215,221, 9, +218, 93,198,205,176,205,112,204,215,163,130,159,176, 61,198, 28,233,128,112, 96, 52, 21, 55,113,142,220,148, 21,200, 35,173,137, +184, 96,241, 16,195,147, 86,184,238, 73, 86,111,188, 3,132,108, 86,186, 81,196,115, 41, 64,186, 43,185,165, 13, 89, 10, 99,163, + 44,142, 20,230, 18, 54, 69, 28,171, 57, 56,165,112, 78, 94,235,155,139, 86,246,234,139,118,183, 5,195, 66,142,211,252, 20,213, + 10,243,122, 37,144,245,121, 46, 84,195, 12, 76,241,216,140, 89, 91,204, 64, 43, 99,206,132,178, 34,137, 83, 46,188, 26, 25,216, +179,104, 27,176, 85,225, 41, 60,188,104, 64, 75, 85,130,162,110,222, 22, 39, 7,232, 89, 23,114,129,152,184,106,171,214, 19,231, + 4, 84,224, 83, 58, 63,239, 1,161,193,195, 50, 14,161, 38,228, 43, 97,173,100, 61,177,140, 3,171,104,164,167,126,174,150, 11, + 80,131,248, 87,109,132,209,227,228,180,131, 0,157, 10, 49, 54, 65,141, 5, 91, 52, 71, 28, 27, 31,130, 23,202,179, 51, 96,205, +170,146,104,146,177,118,169, 93,179,209,212,220, 30, 88,116,100, 36, 96, 21, 4,171, 52,131, 27,203, 44,117, 94, 24,148, 30, 72, +211,151,174, 10,192, 35,221,176,163,157, 61,254,172, 91,215,150, 53,104,211,196,128, 14, 12,170,105,212, 16,221, 8,241,156,132, + 73, 36, 51,198, 84,127, 81, 64,124, 44, 41,129, 52,214,240,145,138,184,211, 63,153,244,190,157,163, 35,204, 58,116, 1,189,204, + 92,119, 3,248,214,186, 52, 64,239, 11, 43,244,120, 63, 83,127,169,147, 54, 28,106, 15,112,177,128,224,246, 27, 55,219,214,155, +183,129,190,159, 24,225,157, 64,182, 6, 23,129, 25,105, 62, 93, 33, 4,179, 48,170,211,205, 63,184,154, 95, 85,242,182,163,172, + 8, 71, 18,103,135,156,114,132, 71, 2,118,135,173, 15,133, 57,250,243, 42,106,169, 41, 76,222, 39, 71,165, 96,174, 96,178,213, + 96,254, 53, 39,161, 21, 37, 68, 41, 59, 42,150,147, 37,207, 65, 3,149, 82,100, 36, 6, 44,236,241, 53,132,128,194, 21,215,104, + 42, 43,205,130,227, 54,197, 63, 96,194, 32,150, 53, 45,135, 96, 76, 11, 51,162, 10,194,184, 16, 82,114, 98,226,217, 34, 34, 2, +237, 61,247,232,115, 82,187,218, 24,161,219, 41, 74,113, 17, 93,228,130,143,135,172,128,162,186,120,235,114,188,222, 9,197,120, + 20,121,194,133, 11,188,191,226,236,121, 59,169, 22, 10,247, 3, 23,176,202,171,218,183, 43,100, 11,188, 78,244, 42,195,121,146, + 41, 19,200, 44,162,149, 33,149,110, 84,236,163, 31,239, 7, 76, 72,183, 16,156,207,195,184, 41,177, 12, 24, 5,148, 28,182, 54, +166,124,160,166,240,176,150, 77, 25,255,152,144, 73,133, 65,110,109,179,227,144, 14,253,121, 83, 98, 99,181, 86,161, 80, 18, 58, +150,178,117,177,210, 26,136,227,225, 76, 85, 2,242,214,238,147,106,132, 12,233, 45, 66, 42,144,162,103,207,149,110,234, 81,209, + 73, 34,133,249,223,183,215, 63, 1,113, 14, 4,101,118,227, 70,113, 16,252,107,118,212,141,248, 72,195,211,230,170,100,103,173, + 68,152, 77,130,221,232, 38,213,239,159, 82,117, 86,201, 29,227, 41,218, 70, 29,243,218,162,130, 58, 1,156,145,120,206, 69,213, +188, 5, 65,210, 97, 1,104,141,134,235,136, 57, 74, 96,141,234, 22, 67,100,184,231, 48, 4,155, 19, 37, 16, 12,193, 44,216, 54, +192,162, 60, 83,235, 44,246, 54,245,164, 8,212, 89,163,134,167,113,176, 30, 34,171,113, 8,152,109,243,183, 50,202,172, 81,214, + 17,208,245,197,241, 5,181, 4, 8, 7,116, 9,108, 73,159, 69,162,173, 13, 93, 91, 49,111,113, 69, 93, 78, 73,236, 3,175,253, +203, 56, 20,185, 80,185, 86, 7,207,196,119, 25,179, 93, 93, 90,125,230, 61, 67, 97,192,129, 84, 69,113, 44,140,200, 68,153,253, +184,238,133,106, 78, 87,160, 54, 30,168, 1,146, 18,181, 6,146, 89, 32,205,117, 37, 43, 33, 33,232, 57,138,118, 34, 45, 39, 37, +162,123,195, 42, 37,170,205,233, 66, 57,158,188,171,105,239,161,172, 4,102,125, 52, 97, 99, 68, 99, 65,130,213,124, 51,208,176, +234, 3, 4,156, 35,115, 37, 48, 26, 93,144,239, 41,209,242,134, 57,217, 16, 21,137,191, 41, 36, 24, 37,101,106,145, 12, 55,192, +246, 50,173, 30, 76,166,149,231,147, 50, 54,114, 21,103, 26,121,224, 54,187,175,177, 25, 11,206,246, 47, 64,181,114,254,125,180, + 54,224,229,142, 19,248,176,163, 69,110,194, 37, 65, 13,157, 48,229,165, 95,242,184,161, 64,203, 91, 95, 83, 33,240, 65,162,119, +214, 1, 43, 10,151,169,197,121,238,158,232, 36,113,115,153,242,178,119, 12,101,176,249,189,161,193, 65, 80, 11,162,159,184, 47, +154, 36, 35, 49, 81,100,136,235,144,183,170,101,108,232, 83, 41,224, 69,151, 62,247, 52, 8,129,147,200,120,110, 16, 69,221,204, + 53, 64, 65, 31,242,201,213,178,113, 66, 53,157,135,171,246, 96,230, 88, 38,125,192, 70,167,144,166,141,181,197, 67,229,111,135, +166,194, 6, 74, 10, 78,244,216,171, 3, 30, 50, 14, 37,213, 23,213,137, 87, 8, 77,139, 39, 78,149,152,110,250, 34,145,250,180, + 82, 14,187, 83,192,218, 1, 4,109, 74,251,172,172, 27,208,174, 97,111,235, 13,168, 76,183,201, 72, 44,194,166, 82,239, 11,246, + 52,170, 1,110,223,191,153,124, 35, 20, 16,234, 5, 68,166,117, 93, 38, 53,232,110,128,205, 30,149, 40,233,194,209, 22, 25,163, +254,117,206,182, 24, 20,105,210,205,177,198,120,195, 54,208, 90,225,160, 75,218, 17, 96,111, 33,251, 67,109, 64, 67,235, 16,110, + 96,246,111, 30, 96, 65,158,125, 94,139, 92, 68,104,254,250, 58, 42, 97,193,246,177, 17,198,236,119, 88,241,210, 43,209,141,118, + 17,106, 28,238,203, 6,226, 96,135, 42,157, 76,101,223,223,111, 81,187,220,168,220,135,146, 89, 23,214,126,125,244,165,111, 70, +155,190,139,187, 52,132,100,140,200, 74, 56, 1, 84, 21, 78, 23, 72, 17, 93, 76,232, 2, 99,240, 3, 84,181,218,213,234, 15,200, +216,215, 11,108,154, 56,198, 20,127,125,237, 90,177, 50,218,135,117, 89, 63, 19, 64,219,117,252,107,173,100,125, 80, 11, 30,153, + 28,142,164, 93, 66, 35, 40, 74, 28, 12, 59, 10, 65, 56,119, 69, 76, 24,187, 73,188,160, 81, 69, 55, 32, 75,173,123,129, 88,169, +133, 9, 93, 71,235, 60,120, 69, 12, 5,206,134, 35,197, 34,241, 10,246,195,176,245,190,209,174,143,222,215,133, 87,208,144,222, + 33,172, 96, 17,164, 36, 10, 12,195,129,234, 38,164,250, 30,102,227, 92, 1, 58,102,215, 57,148, 81,149, 79,214,218,169,163, 45, +215, 69,148, 53, 7, 59,219,148,169, 10,132,141, 73,128,134,184, 39,196, 85, 15,245,178, 77,126, 51,136, 57,187,248,192,156,112, +196,121,198, 1, 68, 37, 87, 56,154,202, 83,208,167, 25, 81,137,190, 34,155, 45, 33, 69,199, 73,182, 62,129,101, 10, 29, 50, 33, + 46,149,149,249, 70, 32, 58, 18, 61,162,232, 27,151,125, 58, 13, 38,186, 73,136,102,152, 5,110, 30, 33,208,205,132, 42,156,130, + 77, 30,188, 9,129, 52, 9,113, 27,132,175,217, 37, 44, 87, 34, 16,159, 82,245, 4,108, 66,177, 42, 9,178, 83, 32,235,218,178, +126,209,191, 28,175,171,230,166, 10,122,147, 45, 24,133,135,106,211,149,245,186,209,250,195,135, 1, 35, 28,124,100,131,151,109, +240,154,192, 9,146, 33,245,104,130, 81,197,164,222,117, 19,194, 77,173,245,181,101,157, 93,179,251,101,207,197,114,131, 3,126, + 49,242, 6, 74,104,115, 39,246,175,123,197, 48,141, 83,243, 72, 20, 12,225,141,161,109, 11,140,116,250,102,167,186, 17, 31,173, + 38,247, 66, 84,214,166,254,246,108,115,138, 14, 16, 59,210,122, 26, 21,179, 31,112,234,126, 50, 92,153,252,243,104,129, 21,193, +115, 82,117,250,102, 2,251, 87,238,172,184, 74,217,231,226,236,126,234,182,216,142,195, 78, 25,129, 96,246,155,167,177, 73,240, +196,225,247,238,158,213, 18, 54,187,246,222,102,101,190, 79,218,121, 48,118,183,109,124,203,170, 59,155, 87,184, 66, 69,214, 99, + 94,167, 62, 70, 97,100,115,167,220,109,248,223, 12, 48,136, 46, 5,102,136, 68,102, 24,127, 48,232,108, 37,229, 19, 16,104, 14, +172,219,196, 90,201, 56, 8,198, 4,143,122,224,147, 18, 52,163,102,209, 45, 0,248,176,245,168, 87,206,125, 51,154, 92,144,196, +180,241,251,185,138,164,152,233, 17,123,101,237,218, 26, 22,171,246,185,168, 26, 59,154,123,203,159,237,106,208,212,218,231,101, + 66, 41,200, 10, 31, 75,100, 29,179, 89,123,211, 69,215,205, 74, 48, 14, 49,114,160,182,208, 85, 99,208, 15, 47,243, 16,142, 9, +229,156,119,137,240,239,209, 77, 97,112,207, 79, 54, 26,105, 23, 98,183,234, 42, 69, 7,182, 40, 36,165, 29, 72,250,199, 63, 91, + 65, 0,163, 94, 36, 70, 85,242,152,210, 62,162,218, 20,191, 71, 88, 15,186, 21, 32, 28,109,175,153, 13,134,211, 30,149, 57, 8, +129,110,105,229,188, 79,136, 3,185, 16,246, 34,238, 45,199,130,107,195, 83,210,234,217,120,164,221, 19,166,180,247,226,196,214, +108, 90,105, 15, 96, 12,210,174,199,160,182,205,161,222,234, 34, 79, 11, 91, 81,154, 28,179,219,216,132, 80,184, 58, 14, 73,181, + 91,226,192, 85,208, 59, 64, 37, 70,161,133, 67, 68,169,247,184,232, 13, 81, 96, 51, 12,179,227,114,231,182, 67,185, 2,106,108, +205,218, 20,157,197,149, 2, 74,237, 85,133,104,235, 95, 89,249,232, 66,113,171,155, 14,135,175, 18, 49,135,196,184, 41,137,163, + 35,217,103, 39, 5,132,117,130, 26, 1,232, 28,200,126,126,138,208, 42, 44, 85,128, 96,148, 65, 24, 92, 97,230,231, 34,181,104, + 45,167, 8, 65, 66,228,164,172,128, 12,228, 98, 37,111,191,111,178,127,213,216,209, 72, 50, 50,241,150,120, 92, 97,219,236, 70, + 69, 93, 18, 33, 13,169, 92,122,128, 2, 17, 80, 1, 45, 66,133, 39, 76,148,123, 93,248, 2,211, 17,250, 75, 33, 0,196, 18,198, +102,132,151,116,221,237,104,213, 85, 10, 90, 87, 5,209, 32,230, 42, 91,107, 76,199,102, 46, 68,153,216,178,134, 21,145, 88, 71, + 71,104, 28, 48,198, 90,176, 85,239, 47,131,152,138, 49, 22, 16, 68, 60,230, 79, 47, 83, 40,120,123,247,118,226, 20,239, 29, 17, +171,106, 15,153, 20, 43,170,227,158,182, 1, 78, 37, 90,250,120, 10, 31,214, 30,192,211,130, 48,179, 32,151,189,192, 20,180,108, +178, 13,178,144,143,125, 24,170,173,126, 8, 41, 83,160, 73,173, 45, 94, 86,176,152, 13,199,181,158,192,238,103,155,176,181,183, +171,129,162,244, 64,214, 46, 76,123,192, 61, 63, 61,178,230,141, 66,199, 90,156,151,173,166, 73, 1, 86,211,159,131,185,134,205, + 83, 66,140,233,209,153, 58,107, 22,157, 27,123,137,128,217,236, 74, 31,243, 67, 46,115,130, 1,201, 42,148,199, 62, 55, 89,139, + 84,237,189, 56,198,122,242,202,211, 69,147,225,223,140,131,122,149, 32,164,185,112,179,228,188,116, 99,152,218,181,105,247,203, +188,131,150,126, 89,233,114, 74, 7,255, 52,212,167,141, 50,120, 58,232,215,161,214,221,168,190,218,231, 53, 85, 31,145,141,195, +189,249,168,171,199,201, 9, 58,121,116,243,240,208, 36,187,157,224,176, 62, 87, 81,255, 51,210, 50,194,234, 88,245,180,107,160, +156, 22,175, 91, 10,224,139, 11,116, 86,173, 50, 47, 49, 50, 41,171,184, 94,244,181,143, 80,161,113, 32, 68, 16,142,232, 70,236, +226,191, 73,187,201, 29,173,186,139,214,187,160,233, 70,215,160,246, 12, 86,162,217,100, 99, 16,193,170,177,104,254, 60, 21, 25, + 35, 12,140,116,141,235, 27,136,223, 10, 22, 65, 81, 59,160,200, 72, 72, 75, 96,164,222, 21,152,225,217,168,105,108,234, 26, 43, + 0,169, 97,174,137, 17,235,108, 77,159,156, 53, 82, 60, 81,177,171,236,193,141, 19,156,164, 28,195, 45,192,151,200,220, 22,232, + 46,170,214,198,199,140, 84, 66, 88,137,232,241,202,126, 8,104, 5,212, 80, 21, 50,136, 84, 64, 12,177,206, 67,155, 10,228, 71, + 67,123, 51, 80,131,156,196, 93,177,217,129,224,140,101,181,105,235,108,200, 79,217, 0,171,199,116, 34,244, 66,211,138,172,181, + 26,216, 51,115, 8,250, 60, 27, 28, 95,107, 68,159, 74,226, 88, 51,102,155,186,194,148,112,106,205, 0,200, 84,170, 83, 18, 2, + 79,226, 45,247, 20, 30, 81,130,199, 34,144, 40,132, 74,127,130,179, 26,121,101, 92,114, 30,180,181,122,221, 98,163, 85,105,138, +102, 29,167,183,170,215,123,226,225,157, 44, 48,179,182,195,219, 70,207,133,197,211,250, 40, 41,188, 5, 41, 89,168, 11, 40,170, +186,111,115,187,105,156, 82, 45, 39,216,113,241,237,129, 44,195,122,225,116,182, 82,250,125, 36, 43,234,125, 41,188, 90, 92,216, + 43, 52,242,123, 79, 64,205,173, 69, 32,103, 50,252,164, 81,140,163,114,155,198,226,166, 11,162, 20,116, 15,228, 57, 38,166, 70, + 49,140, 74,236,192,231, 97, 22, 5,114,164, 11,218,167,172,221, 56,173, 56,182, 43, 16,140, 64, 51, 41,197, 0,140,159, 57,233, +236, 60, 34, 46,241,160, 19, 73,108, 5,137,116, 84, 18,149,207,172,129, 5,162, 91,205, 26,196,189,109,172,115,105,120,239,237, +115,236, 80, 11, 21, 89,133,152,212, 54,215, 26,156, 9,201, 30, 93,111,107,249,181,138,195,158, 51,174,129,111, 48,236, 82,104, + 11, 19,176,171, 86, 8,255, 97,111,175,118,234,153, 29, 95, 11,150, 98, 51,164,122,105,119,130, 15,162,130,229, 21, 43, 28,219, +217, 2,157, 7, 19, 27, 18,132,126, 56, 47, 93, 97, 39,166,147, 81, 5,252,104,133,235,230,132,243,233, 85, 3,195, 28,130,147, +241, 6,252, 71,215,100, 57,179, 3,140, 0, 3,191,233, 41,186,167,191, 29, 30,160,155,214,158,151,170,218, 6,210,248, 79, 46, +145,222, 70, 96, 57, 36,132,103, 21,128,226,208,232,102,249, 28,219, 5,114,195, 19,223,239,207, 89,198,104,196,188,226,192,186, +247, 81, 99,251,187,187,217, 21,228,165,112,178,252,149, 41,148,252,189,114, 87, 27,151, 29, 72,134, 48, 84,122, 53,236, 24,237, +136, 86, 28, 29,154, 42, 94, 45,215, 46, 10, 27,115,239, 34, 41,181, 2, 41, 36, 62,122,237,247, 79, 43,160,218,193, 87,176, 90, + 94, 29, 50, 25,178, 4, 36,242, 45, 4,245, 30, 8, 86, 50,236,183,123,233, 5,248, 26, 26,197,219,239,231, 26,106,118,102,208, +109,217,136,165,228, 0, 40, 9, 91,171,104, 7,175, 91, 0,219,215,235,156, 71, 44, 41,161,180, 52,161,220, 52, 78, 46,164, 39, + 77,216, 96,121, 5,139,225,146,103,169,198, 9, 39, 1,133, 48,175,178,153,121, 21, 87,178,246, 77, 99, 30,139, 69, 27,226, 66, +147,124,222, 4,113,172,226, 23,141, 32,141, 45,251, 36, 33,137,141, 87, 57,190,230, 51, 46,241,161,162, 82,143, 25,213,178, 64, + 28,130, 74,194, 55, 47,187, 41, 0, 88, 33,104,213, 4,154,151, 0,193,173, 10,136,129,204, 82, 33, 24,252, 97,130,178,200, 24, +183, 19,105,130,179, 96,147,129,130, 49, 80, 24,208,183,186, 64,215,181, 47,220,207, 85,156,200,118, 5,196, 73, 12,222,232,146, +218,214,250,145,110, 1,139,105,106,243, 41, 20,241, 27,189, 97,251,173, 45, 2,144,151,162,222,239, 80, 99, 50,228,132,179, 42, +191,109, 20,130, 91,183, 76,118, 72, 40, 94, 89, 49,102,124, 20, 93, 60,213,223,221,103,125, 46, 61,166,240,139,178, 10, 16, 41, + 28, 30,156,170, 60,142, 3,161,109,144, 43,120,137, 43,176,153,221,186,196,171,251, 32, 17, 13, 41,127,191,207, 79, 75,217, 11, +245, 40,133,247, 20,244,177, 40,112,192,123, 28,172, 98, 85, 6,103,173, 7,175, 96, 61, 98, 89,212,129, 58, 29, 36,201,154, 20, +217, 30,211,235,227, 50,113, 64,134,111,152,150,238, 70,192,110,199,212, 58,175,250, 96,179,235,237,124, 61, 90, 90, 21, 43, 35, +235,186,129, 66,138,126,110,197, 90,235, 20,126,105,102,138,148, 68,235, 12, 20, 75, 8,132,244, 47,155,151, 35,147, 66,159, 1, +239, 94,244, 54,250,168,164, 75,201,160, 29,118, 63, 51, 28,172, 13, 57, 88, 85, 72,216,198,143,106,133, 11, 43,159,185,131, 74, +172,107, 27, 78, 73,120,163,240,176,241, 68,113,129, 89,239, 22,244,247,184, 9, 5,190, 61,147,117, 3,154, 14, 2,117, 60,193, + 33, 80,217,236, 82,125,225,247,208, 17, 21,144,182, 17, 65,239,128, 77,227,123,171, 90,248,108,188, 97, 98,201,177,209,139,175, +117,193,150,111,221, 30,219,240,107,255, 57,189, 85,207,234,249, 70,134,189,136,195, 87,138,106, 38, 12,100,206,122,128, 21, 61, + 52,213,106,144,158, 73, 59, 92,236, 86, 51, 39,168,149,226,221,149,109, 35,241, 89,139, 0, 99,183, 61, 21,110,220,119,243, 60, +251,236,189, 23, 15,106,247, 20,198, 53, 50, 44,218,209,245, 1,138, 35,141, 3,133, 39,162,217,181, 4,239,211,136,122,229, 0, +234,232,202,191,105,252,120,189,127,200,177,202,235, 49,180,117, 45,139, 23, 44, 12,227,141, 1,180,153, 18, 70,151, 65,160,205, +144,109,191,124, 50,179, 87, 67, 67,109, 29, 54, 4,222, 99, 13, 95, 16,123,170, 25,177, 12, 84,155,178,162,170,153, 80,166, 40, +122, 17, 83,205,176, 90,147,149,193, 3, 45, 93, 9,229, 88, 41, 98,189, 64,221, 24,116,177,125,190, 59,187,175,158, 51,109, 76, + 96, 54,158,215,212,120,192,101, 29, 61, 41, 43,239,113,174,214,236,253, 87, 89, 7,215, 0, 35, 27,211,228,160, 46, 55,154, 95, +202,228, 6,245, 39, 99,148, 44,101,149, 47, 51, 82,213,132,202, 42, 16, 57, 70, 43,182, 32, 86, 13, 76,152, 20,242,176,194,211, + 2,197,168,152, 29,103,249,123, 91, 98,183, 8,118, 81, 28,187, 85, 65, 65, 10,236,158, 82,219, 56, 39, 5,176,218,198, 82, 64, +248, 87,152, 35, 85,205,138, 92,173,198, 10, 84, 26, 49,214,225, 11,194,124,128,206, 86,134, 2,184, 56,253, 42,179,206, 3,185, + 72, 30,234,227,134, 69, 6,189, 0, 72,178, 45, 53, 78, 16,251,105,239,133, 35,195,220,148,246, 65,242,131, 17, 3, 28, 10,146, +143,155, 57,111,240, 12,179, 78,206, 17,141,222, 53, 90,113,184, 25,201,103,253,122, 78,206, 24,231, 74, 43,207,124,176,188, 13, + 37, 85,124,174,203, 17, 81, 91,121,173,139,245,247, 37,240, 26, 61, 94,147,141, 55, 1,144, 28,197,198,246,235,147, 2, 83, 56, + 58,204,211,228,179,239,238,181, 5, 92,105,242,119, 42,219, 91, 0,254,232,119,184, 68, 62,122,116, 57, 33,174,173,196, 34, 90, + 69,128,200, 24,131,178,138,138, 80, 10, 0, 72, 87,120, 84, 84,227,234, 70,118, 62,247,197,184, 56,104,131, 2,137, 26,208,129, +192,203,212, 89,187, 79,220,231,212, 93, 76,167, 7,143,254,223,162,249,224, 78,206, 28,255,111,204,184, 71,139,187, 32, 7, 68, +108, 99, 12, 75,154, 37, 60, 26,156,203,121, 34, 46,150,211,119, 59,145, 31,106,194,237, 82,156, 11,192,138,112, 13, 18,221,248, +125,211,102,138,184,217, 58,174, 67,175,192,219, 38, 63, 71, 80, 85, 31, 35,180,247,185,219,197,117,175,226,218, 4,242, 61,103, +211,175,199,188,107,239,115,227, 97, 66,189,154,159,107, 28,178,121, 8,218,230,221,232,202,204,117,176,209,217, 58, 27, 38,192, +174, 17,206,213,219,240, 86,105,206, 58,158,176,131, 26, 87, 63,123,216, 24,162,127,127,141,125,197,227,170,189,193, 91,146,144, +111,192, 99, 34,227, 99, 3,222,116,209,131, 93,193,160, 31,208,183,136,117, 88,171,145,200, 37, 66, 94, 0,103,222,237,188, 27, +208, 78,248,215, 57,181,223, 17,187,185, 57,152,134, 29,160,163, 59, 65,136, 52,133, 76, 57,181, 92,189, 85,154,192, 43,213, 79, + 54, 12, 98, 16,175, 32, 37, 82,189,176,221,103, 54, 40, 33,220,236, 97, 35, 66, 44, 45,195,129, 3,219,180,107,207, 53,248, 0, +153,177,222,183, 69, 74, 63,198, 25, 99, 30,117, 49,175,121,118, 30, 31,166,128,106,190,164,153,114, 93, 37,129,197, 7,103,148, +179,220, 18,247,235,100,166,233,106,204,139,234,179,181,162,176,132,252,230,130, 73, 93, 82, 66, 18,129,186,187, 64, 23, 35,200, +108,133,203,138, 14,144, 3,119,216,219, 62,197, 59, 3, 56, 49,240,197,161,138,118, 81, 98,129,107, 93, 30,123, 77, 83, 9, 17, +222, 30,112,196, 14, 42,197, 54, 17,214,141,123, 10, 63,188,182,217,172,250, 44, 37,130, 93,250, 58, 32, 97, 54,231,178,194,148, +218,198, 65,209,149,240,121, 56,173, 90, 25,156,124,138,107,150,108,188,232,194,169,229,150,224, 48,192,246, 38,244, 74,151, 85, +186, 88,129,164,172, 18,177,189,172,194,212, 49, 59,215, 3, 18, 8,196,246,137,119,140,142,153, 68,159,227,224,132,166, 40, 34, + 23,117, 78,112, 32,237, 65, 22, 48,127,100,196, 55,227,156,151, 2,216, 2,223,231,130,170, 2, 94,125, 86,161, 30,115,142, 74, + 53,213,151, 19,184,176,103,175,237,244, 62,156,213,141,175, 78,206, 23,144,181,248, 78,255,142,103, 19,232,245,108,162, 60,145, +200, 88,112, 68,170,147,237,196, 15, 67, 54,147, 45, 17,100, 49, 14, 92,166,154, 15,116,138, 35, 75, 25,209,178,142, 79,157, 20, +173, 93,252, 0,154,102,128,160,230, 30, 66, 74, 93,255, 74, 20, 10,237, 71, 84, 9,122, 99, 7,188, 84,157,193,151, 16, 17, 79, +211, 70,215, 46,113,241, 20, 3,141,206,194, 67, 92,100, 89,204,198,169,218, 7, 61, 57,217,193,181,181,193,121,155, 99, 72,227, +144, 60, 15,231, 89,149,136,190,182,207,185, 26, 73, 80,220,141, 17,127,215,188,229,170, 20,175, 49,251, 29,191,103,231,163,185, +121,214,246,191,222, 19,109,254, 30,218,150,226, 45,233,121,183, 11, 78, 2,136, 20,227,128, 57,235, 8,103,214,103,113, 26, 66, +184, 18,210,105,140,101, 30,215, 21, 68,133, 66,106,251,227,248,204, 44,167,220,242, 27,128,190,105, 33, 77, 62, 86, 50, 81,170, +217, 51, 57, 88, 43, 67, 72, 41, 41, 58,218,128, 99,166,244, 23,179, 97, 23,139, 37, 96,152,239,107, 50,164,118, 77, 70,245, 62, + 43, 55,165,130,230, 77, 53, 7,192, 84,233,154,168,221,233,211,177,157,148,161,172,109, 85,219,164, 15,164,104,110,107,209, 69, +116, 20, 93,138,195, 75,229,176, 85,143, 53, 87,212, 18,115,227, 52, 43, 54,122, 86, 5,143, 38, 42,145,177,111, 45,136,120,180, +215, 33,208,178,231,228,255, 75, 84, 60,104, 19,251, 3,205,154,128, 83, 98,145, 17,137,156,107, 15,177, 23,129, 4, 31,222,235, + 90,120,107, 73,178,106,158, 1,236, 32, 50, 90, 91, 46,116,130,228, 53,108,237, 7,220,166, 56,226,208, 55, 85,152,255, 9, 48, +209,109,225, 19,245,169, 34,143,157, 86,249,212,178, 90,172, 99,142, 84,246, 91,206, 24,232, 96,232, 4,102, 16,167, 21,104,125, +114,228,139, 23, 74,148, 43,219, 40, 39,115,173,235,131, 92, 24,223,190,109, 6,148, 82,246,130,153,110, 39, 87, 21,200,249,230, + 98, 63, 39,130, 30,132, 99, 44, 19, 22, 10, 89,229, 67, 91,198,252,190, 95, 81,192,230, 18,237,255, 53, 29,145, 97,190, 14,128, + 23,243, 74, 67,197,237,144,162,137,163, 99,161,167, 64, 54,255, 31,144,215, 68,157,215, 92, 70,183,166,216, 38, 70, 32, 54,195, +136, 93, 75,172,163,224,186, 71,135,133,215,142,204, 24,117, 73,182,115, 98, 65,107, 22, 56,193,138, 85,144,122, 87, 32, 93, 78, +171, 81,101,231,230,192, 31,155,181,110,247,108, 69, 2,201,128, 99,227, 25,202,225,126, 93, 54, 20,157, 38,206,247, 33,242,210, + 49, 19,160,185, 11, 24,146,211, 72, 66,125, 76, 18, 66,193,186,202, 16, 88,139, 50,199,204,187,194,117, 2, 78,134,227,109, 57, + 3,163, 55, 67, 65, 79,154,132, 38,110,213,164, 52,178,114,134, 70, 74,125, 24, 84, 63,166, 64, 49, 71,142, 59,104, 32,108,153, + 45, 25,112, 53, 14, 67,164,133,128,250,207, 39, 69,123, 75,248,196, 89,225, 53,211,196,201,168, 80, 37,171,230,171, 70,145, 38, + 55,175,194,102,252,222,168,112,253,205,217, 84,141,166, 87, 67, 20,216, 90,233, 59,163,223, 53,133,246,214,219,240, 49, 13,148, +136,109, 22, 19, 27, 71,241,100, 99, 70,171,234, 69,131, 90,236,115, 48,241, 31,219,200,152,198,248, 36,170, 86,241,136,216,208, + 82, 76,206,102, 24,211,157, 50, 66, 94, 28, 11, 44,250, 58, 43, 80,254,198,104, 33,242,212, 99,206,221,206, 64, 50,230,148,203, + 97,165,186, 3,160,125,161,152,191, 86,175, 73,133,232,219, 93, 75,123,107,123,173, 58,115,108,173,174,186,114, 78,102, 23, 37, + 64,210, 54,221, 3,197, 65, 66,141,145, 99,172,160,133, 80, 85,109, 73,247,176, 28, 44, 23,230,244,228,100, 41,243,183, 52, 29, +180, 63,220,234,102, 20, 22, 35, 43,102, 54, 64,105,196,135, 24,145,178, 73,112,196,200,222,134,120, 77,100, 98, 59, 83, 61,148, +117,198,175, 22,240,102, 11,168,207,189,101, 14,185,220, 99,167, 38,218,167,182,139,110, 16,161, 14,103,104, 78, 35, 69,203, 69, +125, 32, 59,155,214,173, 78,184, 49, 83,178,148, 83,153,226, 96, 16, 17,181,240, 19,189, 11,160,167,125, 63, 73, 15,209,226,166, +132,152,170,192,166, 34,160, 63,168, 66, 73,177,137, 97,107,147,207,154, 9, 98, 13,107,136,181, 68, 18, 80,199, 22, 33, 95, 12, +146,181,192,132, 89,150,237,108, 76,242, 2,193, 36,121, 3,181, 57,104,241,153,112,129,223,171,200, 83,142,108,110, 46, 96,169, + 19, 78,194, 42,187,129, 89,243,136, 17,183, 59,102,247, 37, 54, 35, 51,142, 10,165,202,220, 57,123, 98,240, 14,201, 34, 49, 14, +240,141, 29,152,188,221,238, 92,133,146,108,151,182,185,247, 91,206,105,112, 81, 17,148,149,216,193, 15,174,137,171, 91,224, 48, +170,142, 1,237,122, 20,155, 31, 98, 44,105, 90,136, 49,183,158,147, 21, 7,103,221,104, 5, 93, 13,108, 98,148,134,233, 20, 2, +121,235, 8,203,135, 32, 26, 19,230,133, 14,160,132,210, 31,230,253,200,138,112,229,112, 9, 65, 79,252,187, 4,123, 28, 88, 15, +118,111, 85, 64,209,146,112,234,212, 21,202,121,234,104,194,193,255,141,104, 76, 73,252,122, 63,128,184,223,186,248,204,116, 8, +226, 40, 11,126,197, 8,101,213,243,230,101, 50,186,226,198, 91,123,109, 67,179,195,155, 85,231, 14,123, 16,181, 63, 89, 87, 7, +108, 98,181, 66, 6,129, 77, 28,204,134,101, 29, 22, 63, 92, 79,158, 7,225,132, 50,207, 64, 24, 27,160, 71,211, 82, 68,189,218, +193, 37,220, 30,209, 21, 48,209, 95,124,150,113, 31, 87,115, 60,184,121,218, 58, 4,165,207,232,197,219,245,250,222, 13, 44,100, +197,153, 89,234,219,253, 82,213, 78,167, 66, 60,251,157,237,128, 52, 83,248,194,197,146,202, 60,131,161,120, 53, 27,158,253,112, + 27,181,107, 52,121, 17, 89,193, 57,162,218, 10, 23,104, 7,219,127,166,217,153,245,165,179, 5,170,119, 35, 68, 0,131,229,235, + 3,185, 80,114, 28,102,120,149, 76, 55,121, 46, 60,129, 77,186,127, 94,101,116, 90, 54,205, 49, 99,157, 7,125,175, 21,238, 69, +195, 39, 91, 21,131, 25,133, 49,138, 84, 59, 93,119,247, 20,119, 84,244,246,187,204,103,221, 86,186, 45,154,201, 42,227,133,110, + 45,208,189,187,108,170, 39, 68,111, 96, 99,138,181, 68,246,100,232,222, 74,215,197,172, 48, 39,239,165, 34,170, 32, 16,196, 46, + 26,110,222, 89, 76, 96, 11, 69, 1,172, 97,153, 24, 42, 15,108, 27,179,218, 9,106,226,126,115, 58,113,199,129, 66,214, 64, 25, + 80,202, 78,133,247,196, 13,198,138, 70,207,187, 9,155, 92, 96, 37, 74, 37,115, 56, 69,180,192,135,112,140,252,228, 91,197, 22, +147,128, 27, 97,226, 12, 23,180,155, 68,119, 33,113,180, 57,192, 46, 86,185,180, 27, 98, 91,216, 71, 73, 72, 55,235,110,185,169, + 68,172,174, 88,123, 47,232, 95,238,245,149, 76,151,139,150,176,105, 0, 52, 53,139, 71, 59,168,207,201, 27, 20,101, 59,249,166, +205,112, 29,217,152,229, 37,242,145, 93, 92, 86, 2, 33,202,179,138,193,166, 24, 87, 68,224, 11,164, 72,169,223,181, 9,120, 98, +166,133, 56,109,142,208, 14,157,213,219, 65,207,231,191, 30,166, 2, 92,247,194, 40,155, 6,113,156,182,231,148,170, 86,124,166, + 14, 55, 46,248,221,165,144,147,204,144, 19,239, 17,222,118, 61, 11,104, 31,192,195,142, 97, 68,142, 10, 37,132, 41,144,218,105, + 80,228,102,135,225,124,175, 39,226, 32,160,125,115, 45, 9,118,142,130,170,133,252, 44,140,205, 75, 23,208, 57, 94,159,216,172, + 2,145,205,186,243,120,213,168,237, 97,118,168,136, 17,182,176,186, 42, 49,159,156, 98, 19,100,224,147, 48,166, 11, 10, 60,159, + 32,194,156,128,197,143,125, 92, 76,142, 99,160,100,101, 92,109,116,205,236, 65,236,183,162,130,101,172, 18,235, 47,191, 85, 97, + 27,179,176,233,166,163,100, 52,211, 1, 76,206,194,210, 53,208,108,122,101,252, 76, 95,234,186, 46,164, 64, 7,146,193,207,173, +152,108,195,157, 82, 92,144,234,161, 35,129,140,150, 96,189, 66,158,123, 73, 7,248, 10, 44,115,127, 30, 75,241,106,115,144, 4, +237,115,178, 98,102,118,139,227, 8,103,105, 63, 96,214,129,234,212,175, 71,221,137, 90,239, 70,245, 60, 24, 29, 59,218,157,159, +249, 1,124, 82,219,106,157,107, 26,213,186, 35,162,134, 8, 41,216, 34,165, 59, 74, 77,145,111, 44,232,241,109,147,190,247,234, + 72, 88, 44,178, 48,198,214, 70, 26, 82, 45,104, 72,215,110, 30, 7,143,134,199,222,205, 51, 96,194, 77,128, 57, 14, 24,157,218, +167,180,200, 30,196, 90, 67, 8, 88,245, 96, 96,201,147,198,232, 16, 40, 52, 12,250, 52,220, 12,179,146,255,180,194, 55, 34,106, +137,121,123,196,238, 86,255,252,145,187,177,217, 76,227,244, 51, 54,241,229,107,187,185,163, 62, 75,149, 8,222,176,106, 9, 32, + 11,224, 54, 72,180, 54,239,204, 20, 83,205,136,183,109, 29,236, 34,120, 90,151,128,173,176,172, 54,207, 64,173, 50,240, 99,125, +230, 40, 25,214,206,128,121, 53,205,108, 97,251,128,160,229, 45,102,235,128,184, 83,215,186, 25,118,111,240,173, 39,111,223, 72, +178,229,224,204,207,172,126, 5,218,181, 85, 25,193, 27,171, 84,251,169, 94,252,103, 91, 50,211, 24,165,241, 56, 44, 89, 14, 8, +180, 71,153, 32,189,147,242, 98, 99,205,158,137, 35,200, 99,163,155,232,176,143, 96, 86,112,120,120,189, 67, 81, 67, 76,199, 94, +226,143,150, 98,255, 29, 7,218, 15, 61,215,193,127, 59,145,151, 16,252, 52,209, 12,250, 90,141,166, 70,106,195,105, 27,250,116, +208,248,238, 91, 31,223, 68,155,155, 35,112,194,253,183,186,136, 52, 91, 75,171,118, 54,131,168,230, 80, 34, 67,147,246,170, 69, +171,160,118,255,130,141,164, 42, 4,194,232,121, 46,156, 51, 70, 60,224, 5,114,107,222,176,171, 5, 14,173,193,212, 23, 56,117, +135,128, 30, 82, 2, 73,163,113, 81, 57, 47, 33,232,100, 80,155,226,140, 86, 64,100, 87,113,184, 51,129,127,215, 99, 27, 57,111, + 62, 20,138,119,139, 10, 70,226, 33,164,202,131,206,130, 87,193, 33, 97, 79, 99,128,191,176,183, 36,203, 74,236, 89,178,184,207, +227,194,160,219, 70, 16,159, 76,156, 2,215,217,230,251,150,134, 38, 51,152,215, 36,197, 49,143,234,125,142,180, 58, 96,117,123, + 60,180, 80,210,217,228,144, 17, 3, 10,173, 56, 20, 73,184, 74,174,178, 31, 11,244,178, 22,110,135, 80,239,252,252,124,180,185, + 85, 60, 53,107,207, 53, 70, 98, 1,150, 98, 47, 72,217, 85,250, 93,208,213,212,236, 74,154, 74, 61, 19,216,104,253,120, 81, 60, +241,152, 44,181, 44, 14, 79, 53,188,238, 90,172, 4,187,220,202,146, 18,213, 53,210,228,156, 79,129,136, 90,197,228, 42,243,192, +186,139,110, 49, 67,208, 88, 29,228,188, 14,235, 89, 9,147,251, 90, 33,241, 26,139,137, 67,219,255, 59,223,185,248,208, 73,192, + 59, 45, 2,250, 70,172,208,177,217,194,106, 44,191, 19,186,190, 85,146,107, 67, 36,208,187,227,106, 71,196,112,115, 14, 24,203, +140, 74,206, 70, 65, 80, 22,187,143, 6, 36, 75, 37, 11,153,139,229,150,207,102, 71, 51,219,100,113, 71, 77,255,124, 38, 13, 37, +210, 17, 75, 1,148,119,183, 2, 58,127, 99,210,253,105, 56,128, 68, 15, 56, 77, 20,218, 65, 72,186, 55,246,251, 69, 15,122, 93, + 20, 72,102, 57,183,248,102,163, 71,178,119,101,120,149, 3,187,217, 42, 51,180,104, 91, 99,187, 44,162, 27,109,155,216,226, 45, +142,252, 28, 98,178, 9,222, 20, 49,173, 42,112,142, 42, 93, 2,178, 95,156,165,206,105,222, 78, 54,150,131,121,129,128, 96,194, +149,153,100, 45,214,129,198, 43, 98,226, 8,241,240, 16,244,102, 38,187, 81,129,195,121,205,214, 26,134, 89,101,234, 52,200, 42, + 21, 70,198,124,170, 85, 25,109, 79,153, 97,115, 45, 48,195, 21,244,120, 19,148,196,170,198,110, 85,115,237,109, 42,125, 14,166, +104, 57, 78,133,227,102,146,136, 28, 45,202, 14,142,170, 75, 32,105,168,120,110, 48,235,105,182, 3, 87,138,244, 13, 81,180, 68, +183, 7,178, 0,142,212,168, 81, 86,209, 88,123, 91,124, 1, 81, 13,195,193,192,105,210,214, 22,219,201,133,105,237,119,180,205, +189,199, 56,106,143,175, 45, 12,211,242,127, 75, 1,216, 67,251,203, 29, 99, 26,179,218,241,251,108,254,183,141,141,167, 28,141, +164, 44,181,221,248,226,189, 29,162,166,142, 65,109,202,227,162,214, 40,163, 97, 44,191,179,244, 69,166, 58,184,133, 20,252, 98, +201,103,130, 33, 17,232, 23,135,135, 62,216,180, 96,245,171,129, 55, 19,135,198, 96,112,142, 86,253,171,136,210,212,250,113,228, +103,136,219, 42,192,101, 40,133, 5,141,141, 74, 24, 98, 53, 13, 3, 10,155,250,216,124, 75,168,244, 81, 4, 70,251,176, 38, 76, + 77, 75,102, 91,235,184, 9, 70,131, 74,110,220,123,208,135,233, 88,138,219,134, 76, 4, 40,171,204,136, 16,150,141,191, 91, 5, +168,133,253,209,152,160,203, 63, 42,154,130,228, 50, 10,128, 7, 1, 61,205,143, 43,133, 32,254, 50,108, 79,235,110,156,179, 12, + 86,100,179,182, 0,238,118,213,195, 87,218, 56,231,143,190,251, 3,122,240,232, 62,125,246,229,231,232,229,231, 95,238,162,173, +208,105,140, 92,110, 27, 71,120, 53,174,125, 96, 81,133, 55, 89,100,105,219,104,218,127, 91,156,166, 34, 34,113,198, 47,138, 44, +166,115,240,199,211,154,172, 25, 21,157,171,138, 44,115,212,217, 63, 59, 63,148,246,223, 23,156,209, 80, 78,187,142,105, 28,206, +235,249, 78, 15, 20,186, 16,215,209,113,240,106,249,124, 23,157, 2,201,173,190,254,247,105,134, 50,106, 32,129, 43,128,183,132, +193, 49,178,211,185, 56,205, 14, 23, 34,240,139,147, 10,196, 48,218,201, 33,104,110, 87, 36, 79,213,179, 57,126, 85,132, 50,131, + 30, 67,118, 2,202,245,145, 72, 56,212,245,228,157, 69, 23,166, 65,108,108, 63,164, 56,183,161,130, 42,125, 86,255,253,166, 23, + 55,136, 73, 23,181,135,118,154, 96, 87,237,239,128, 90,103,248,250,185,191, 12, 31, 45,232,166,207,231, 42,136,155, 54,190, 71, + 21,112,177,116,219,103,251,217, 6,203, 89, 54,224,121, 62, 31,212, 62, 27,131,241,112, 2,116, 72, 79,155,169, 31, 40, 97,203, + 59,134, 37, 82, 49, 54,118,146,208,141,161,148,216, 36, 45,203,185, 16,167,168, 86,140, 48,213,112, 57,111, 59,184,242,151, 1, +112,162,162, 0, 66,184, 69,130,176,139,123,154, 45, 93,105,227,190,215, 18, 74,103, 77,246, 26,112,173,104,103,187,117, 78,187, + 3,237,115, 45,218,118, 53,113,174,141,150,134,133, 74, 43,136, 58, 54, 46, 3,150, 86, 83, 36,106,133,191, 17, 78, 4, 56,198, +170,198, 78,254, 72, 83, 52, 11, 80, 19,142, 76,209,117,192,153, 93,181,244, 0, 48,185, 91,235,190,117, 84, 98,166, 12, 51, 39, +136, 64, 37,137,128,156, 82, 74, 48,130,183,203,191,183,147, 95, 63,116, 4,112, 45,105, 54,219, 95,247,134, 99,150,172,179, 38, +209, 89, 97,204,150,150,251,230, 96,171, 7,128,221,120, 88, 45, 96, 98,185,103,170, 69,134,182,192,160,205,176,178, 53,219, 11, + 1,120,131,116,174,215, 31, 78,107,229,170,197,105, 0, 70,138,122,113,103, 79,242,234,159, 89,171, 8,142,167,209, 26,227,241, +245, 58, 67, 88, 71,155,213, 41,112,198, 69,125, 76, 96,107,138,249,190, 64,101,105, 45,190,154, 83, 8, 86,217, 5, 53,188,235, + 62,247, 69,161, 13,129, 88, 49, 67, 40, 28,185, 74,171,224, 14,165,151,217,188, 52,230, 64,186,192,152,133,147,102,240, 81,136, +139, 68,209,166, 41, 85, 32,242, 23, 42,216, 74,217,143, 42, 32, 40, 68,236, 17,175, 2, 23, 80, 24,229, 99, 1,152, 49, 26,125, + 17, 1, 50, 20, 72, 95,119, 43, 88, 39, 73, 59, 87,179,163, 61,139,182, 72, 85, 49, 61, 21, 23, 51, 89,199,201, 22,252, 2,236, +125, 11,132,194,131,147,139,147, 84, 64,105,217,238, 78,104,131,206, 94,123,142, 63,188,123,159,126,255, 91,223,163,207,188,112, + 68,219,227,171,244,222,221,167,244,244,209, 67,122, 66,199,203, 2,253,128,174, 95, 57,105,178, 38,122,241,185, 87,179,192, 21, + 91,224, 19, 32,114,204, 63, 88,129,126,214,123,112,187,241, 62, 76,141,110,254,252,194, 0,232,146,208,201,168,107,102, 56,126, +204,173, 35,126,175,160,229, 54, 0,227, 54, 75,159, 99,246,123, 30, 81,172,160,150,213,142,196, 14, 85, 21,122,240,208, 79,120, + 10,171,155, 56,187, 62, 98,112, 69, 71, 13, 99,108,190,209,100,184, 1,227,153,245,195,137,204,251, 18,151, 95,106, 36, 1,114, +140,200,236,152, 91, 29,198, 19,213,191, 56,123,190,246, 54,119,183,197, 85, 1,113,159,117,241,102,157,185,131,253,217,252, 7, +106,147, 27,223,111,154, 8,165, 62,114,245,209, 89,181,231, 39,224,127, 90, 88,149, 14,227, 16, 61,192,197, 8,118, 30, 46, 42, + 9, 84,113,191, 20,198, 33,208, 25,123,245,255, 86, 8,143,174, 63, 22,233,204, 46,202,179,176,152,162,162,192,112,193, 12,141, +130,169,135,237, 80,184,124,159,182,155, 11, 56, 84, 54,219,166, 76,180,135,174, 77,213,251, 41,195, 8, 57,193,152,181,189, 55, +204,250,213, 55,145, 94, 39,179,141, 35,216, 69,110,123,185,213,100,230,252, 41,103,157, 19,110, 42, 33, 9,183, 83,151,229, 92, +155,147,163, 0, 88, 35,148,224, 97,189, 27,109,172, 80, 71, 90,203, 49, 34, 66, 99,182, 81, 38, 80,190,235, 34, 54,105,244,101, + 81,160,201, 72,228,137,170,210,196, 62, 81, 81,135, 87,185,159, 16,150, 15,100, 8,224, 86,226,138, 50,152,193,172, 66,177,126, +173,166,173,251, 98,177,189,104,215,165,168, 47,180,170, 7,212, 22, 61,247,124, 42,130,178,147,218,166, 77,175,210, 61, 80,164, +159, 94, 99, 30,230,152, 83,235, 96,232,134,234, 98,161,102,101, 60, 56,128,212,172, 40,151,250, 3,213,238, 13, 93,249,139,158, + 20,219,195, 68,203, 1,104,179,209, 64, 17,245,211,122,199, 85, 15, 35,227,186,232,195,172,243,116,214,216,213, 46,229,152, 59, + 55,118, 89, 36,199,162,213,103,108,108, 94,216,241,179,219,175, 26,122,161,210,255,204, 22,152,246,243,203,116, 0, 46,137,156, +168,231, 15,133,104,139,174, 86, 8,175, 97,221,200, 85,249,158,238,175, 61,241,120, 74, 21, 66, 23, 92, 89,117,122,176, 5, 76, + 0, 31,242,140,132, 82, 92, 59, 82, 72, 82,218, 97, 84, 68, 90,133,115, 89, 37, 8,114, 18, 11,162,132,159, 1,148,151,132, 88, + 5,103,209,146, 56, 7,225,121,135, 65,187, 37,223,136,138,118, 76, 65, 14,118, 62,180,229, 73,132, 65, 64, 84, 37, 94,147, 81, + 85,125,231,221,155,116,239,238, 77,250,233,215, 63, 79,151, 15,143,220, 70, 38,160, 11, 24, 34, 32,142,145,136, 0,230,213,222, +237,148,125,164,161,128, 47,254,249,159,237,206,233,112,123, 48, 68, 94,160,145,233, 20,197,229,254,249,202,119,191, 79,191,241, +149,111,209, 79,189, 60,170,184,247,239,111, 59,204,228,231,126,230, 39,233,228,116,166,247,110, 63, 89,254,198,125,122,237,213, + 79,199, 33, 4,186,120, 2, 42,115,239, 10,105,151,171,214,201, 67,112, 88,153,235,165,206, 33,202,117,220, 41, 52, 81, 38, 11, +200,129, 8,101,154,180,171, 5,213,155, 19, 27, 49,204,170,142, 68, 57,232, 64,122,213,171, 17,178,118,176,242,246, 53,216,226, + 50,220, 72,156,248,215, 67, 96, 96,173, 37, 12,255,193,160, 36, 11, 28,242,236, 13,241, 88, 88, 78,210, 76, 78, 40,114,123, 29, +102, 14, 28,135,159,217,187,146,163, 57,177,172, 75,219,209,137, 44,198,242,183,127,236,119, 77,147,187, 81,146, 99, 74,195,152, +156, 93,223,237,218, 83, 8, 50,167,120, 79, 49,230,161, 64,100,187,183,157, 64, 63,148,129, 45, 62, 38,211,207, 99,171, 89, 12, + 70,233,179,231,196,249,255, 74,110,244, 51, 89,173,177,254, 84,107,200,109,156, 27,192,206, 81,209, 4, 76,214,142, 67, 85,216, + 15, 33, 41,145, 70,165, 62, 90,219,163, 45, 82, 48, 1, 11, 32, 21,118,122,180, 80, 34,104,142,135,208,196,148,126,194, 32,192, + 89, 39,158,141,185,129,139,104,109, 65,229,160, 78,217, 3,108, 31,124,127,101, 32, 68,171, 62, 7,171,206,121,102,224,158,219, +177,139, 53, 46,210, 1, 25, 18, 57,225,222, 54,173,118,120,169, 49,211, 55, 53,169,222,144, 9,208,175,167,139, 34, 17,164, 49, +230, 46,166,152, 95,254,217, 78, 30,222,193, 49,216, 94,110,204,105,164,104,153,136,102,249,218,238,252,124,252,206, 77,233,173, +191, 50, 65,123,124, 86,123,204,114,227,109,143, 54, 81,185, 50,171,160,166,106,174,242,120,111,173, 77, 56, 30,198, 10,150,192, +200, 7,174, 16,101,232,130,173,182,216,180, 22,118,107,151, 47,215,162,183, 34, 13,156, 50,113,132,213,244,246,220, 54,108, 41, +214, 57, 49, 59,221,164, 84, 47,101,104, 87,157, 55,245,106,169,125,109, 89, 92,249, 8, 16,140,214,170,109,139, 70,187,134,211, +120,189,211,225, 70,149,185, 83,136,253,140,219,223, 90,238,140, 21, 77,204,194,139, 70,142, 54, 32, 72,213,232,200,152,215, 3, +198,181, 61,252,218, 14, 53, 92,112,164, 84, 69,170,157,219,255,192,239,111,213, 78,142,170, 77,235,163, 43,127, 35, 62, 88,220, +170,215, 99, 34, 85,244,229,225,161,171, 54, 61,118, 95,170,112,230, 27,173, 15, 27, 76, 73,234,205,144,239,190, 10, 1, 76,244, + 40, 76,250,179,217, 28,129, 0,141, 96,212,197,104,209,210,138,199,218,206, 52,215, 61,235, 28, 66,142, 25, 21,230,173, 57,188, + 60,175, 95,121,227, 45,122,116,255, 67,186,241,204, 33,125,225,213,207, 83,221,205, 0, 77,162,149, 32,145, 29, 0,195, 78,150, + 67,161, 43, 96,164, 75,182,137,126,249,187, 63,160, 47,127,229,247,233, 47,253,249, 95,162, 47,126,250,245,254,123, 8,232,132, +103,203, 75,127,227,253, 15,151,207,254,140,238, 61,105, 59,230,121,191,175, 14, 14, 15,233,236,233, 35,223, 84,249,232,234,114, + 95,109,137,155,111, 26, 71, 35,110,155, 19,140,106, 31,167, 78,163,233,245, 27, 85, 97, 45, 27,171,210, 9,218,224,176,185,123, +220, 40,123, 49,228,163, 48, 75, 79, 3, 76,181,149,248, 3,208, 2, 40, 69, 81,220, 47,180,176,237,103, 20,123, 93,227,212,172, +133, 77,141, 40, 84, 93, 27,204, 55,222,223, 74,157,252,218,186,250,189, 48, 4,243,136, 51, 57, 74,235, 18, 84, 76,155,139, 14, + 86, 21,251,119,204,193, 1, 59,106,242,123,125,102, 84,236, 42, 51, 56,114, 88,237,190,118,113,102,181,137,233,132,161,141,252, +166,200, 7, 16, 12, 52,240,240, 22, 24,221,152,168, 25,196,156,181, 74,238,188,250,193, 98,224, 95,253, 32,103,118, 78,137,145, + 84,220, 10,213, 93, 52,101,142,232, 98, 1, 29,133,219,244,102,113,205, 65,215,173,149,209,111,110,227,152,241,251, 56, 43,248, +181, 99,220,159,195,205,228, 35, 19, 70, 78, 86, 59, 14, 92, 62, 26,243,210,153,170,138,195, 8, 16,127, 48,219,211,126,196,228, + 25,199,150,107, 29, 6, 49,207,173, 22, 16,191,173, 88,224,140, 61,105, 7,121, 12,245, 48, 85, 73, 39, 66,180,197, 69, 7,137, +179,141,173,196,233,175,183,206,107,228, 11, 23,142, 89, 15,169, 65,223, 85,160,110, 70, 45,177,233, 19, 32, 65, 33,176,196,189, +159,141,140, 38, 90,189,216,197, 60,159,129,100, 55,247,141,216, 33, 48,253, 96, 81, 59, 94,169, 87,158,237, 97,107,243, 57, 37, +153,245,107,115, 48,245,141,104,249,255,168, 54, 65,217, 46, 46, 84,191,121,116,238,188, 59, 61,117,205,129, 50, 35,199, 72,164, +135,120, 76, 99,179,154, 6,175,181, 85,219, 85, 55,174,186, 59, 83,161,142, 93, 87,139,105,229, 8, 60, 41,246, 15,193,226, 98, +160, 4, 61,173, 91,160, 15, 79, 43,112, 77,240,186,199,233,172, 58, 21, 74,180,203,193,109,214,180, 44,154,178,209,248, 73, 91, + 60,122,197, 16,160,142, 14, 18,217, 49,156,208, 75, 82, 51,183,107,215, 59, 3,184, 58,183,138,125,121,111,187, 86,234,159,231, + 47, 69,207,188, 14,209,138,109,138, 18, 9, 77,190, 5, 9,199,166, 76,113,146, 30,225, 43, 8,122, 1, 11, 34,220,152,130, 22, + 54, 4,184,184,200, 19, 68, 93,100, 81,180,106,163, 66, 84,220, 12, 17,127,194,121,134,156,161,251,208,159,164, 76,169, 35,140, +248, 3,203, 18, 28, 74, 4,172,152,216, 98,136,184, 82, 9,176,141, 72,246,174,251, 53,139,225,183,227, 99, 49, 4, 1,116, 2, +237,208,117,255,228,108,249, 12,207,233,228,228,156,158, 44,247,124, 99, 98,204,243, 89,160,119, 5, 48,202,169,235,193,222,174, +229, 32,122, 56, 34,218,102,185,206, 70, 88,126,215,157,187,247,233,135, 31,220,167, 47,127,245,107,244,137, 23, 63, 65, 87, 14, +142,104,103,213,246,114,216,188,255,240, 17,125,120,247, 30,157, 46,135,234,167,167,117,249,247,188, 28, 58,216, 91, 0, 71, 71, + 91,186,118,165,208,195, 39, 15,188, 59,133, 38, 89, 46,152,189, 29,108,101,214,251,182, 63, 63,165,250,125, 53,153, 58, 94,171, + 81, 82,104, 10,225,193, 81, 64,248,230,135,243,154,187, 50,246,236,168, 78,102,116,193,134,189,141, 53, 29,173,175, 39, 2,159, +145, 91, 95,160,210,178,184,123,181,202,209, 84, 82, 92,107,215,179,216,253,111,105,118,211,228, 35, 51,139,114, 30, 21,106,245, +159, 49,104,123, 3,154, 66, 38,214,221,205,250,220, 67,114,164,146,180, 88, 21,223,189,128,209,113, 89,108,190,147, 90, 22, 1, + 38,196,209,209,236,163,134,174,131, 56, 24,240,180,190,215,108,212, 50, 75,222,133, 28,135,212, 24, 13,141, 91,121,183,220,123, +162,232,104,118,141, 82,197,243,175,183,190, 85,219, 83,145,143, 18, 9,128,164,113,188,166,140, 21,229,244,219,189,218, 91,233, + 10,183,177,192,153,222, 85,237,240,164, 93, 46,156,139, 70,177,110, 89, 11, 15,189,238,101, 51,244, 92, 37, 10,135, 98, 69, 30, + 57, 32,116,144,237, 14,151,202,168,189,174,237,206,114,130, 13,241, 7, 98, 27, 81,130,228,148,162,209,180,213,142,179,114,118, +158,183,171,106, 25, 3,227, 35, 85,201, 3,100,204,207, 57, 34,111,188, 45,236,243, 96, 83,214,234,188,213,173, 64,125, 22, 49, +249,141, 27, 2,204, 26, 45,124,137,164, 27, 2, 6, 52, 46, 12,197, 4, 62, 48, 15, 76,192, 54,102, 7, 37,184,117,175,128,120, + 79,171,226, 34,161,106, 30,170,201,177,217,207,189,170,175, 26,155, 91,124,222, 86,204,159, 59, 27,140,103,130, 36,165,226, 23, +189, 9,194,236,212, 61,146,182,244,193,150,113,218,238,155,183,161, 24,107,133,133, 93,171,151, 25, 22,200,206,249,215,121,149, +183,170,230,193, 70,174, 57,235,154, 45, 22, 16,150,252,138, 20, 41, 29, 13,244,223,127, 62, 78,240,197,170,117, 19, 69,237,140, + 18,184, 27, 21,194,121,241, 69, 59,102,183, 69, 15, 22, 99, 65,154,207, 78, 52,164, 56, 80,155, 98,185,213,115, 84,231, 3,198, +161,164, 37, 59,141,207,230, 53,146, 30,115, 88, 44,144,194, 35, 19,117, 35,104, 85,138, 2, 49,250,161,105,217,104, 92,101,110, +178, 89,187,206,182,219,234, 61,100,164, 49,210, 3, 79, 60,229,106,142,145,108, 87,144, 36,250, 98, 7,223,244,159, 83,128, 82, +230, 16,165, 1,175, 32,125, 14,168,194,143, 71,200, 17,136, 84, 7,134,185,181,172,107,154,155,122,151,134, 50,148, 40,183, 92, + 81, 12, 10,130, 42, 9,181,113, 84, 80,171, 49,132,172,210, 18,253,224,146, 17,187, 22, 55,219,170,231, 15, 62,186, 69, 63,251, +185, 23,232,163,247,111,210,131, 23, 63, 73,151,182,135, 73, 88,143,208,228,188,177,155,186,133,189, 51,181,215, 4,212,247,209, +178, 6, 94,255,137, 87,232, 55,182, 91,250,254, 91,183,232, 55,127,247,203,244,239,253,234,175,210,118,187,245,142,217,246,112, + 75,199, 71,135, 93,243, 51,151,203,116,249,198,229,174,118,111,207,225,253, 71,143,232,242,241,134, 46, 31, 93,163, 23,158,185, + 66,167,187,121, 4, 16, 89,232, 20, 67, 88,201,100,201,140,145,130,230,109,100,155,123,176,137,174,170, 89,213,123,110,123,224, +154, 37, 70, 16, 18,186,154, 94, 73,207,112,240,242, 3, 55,133,100, 91, 43, 43,111,239,238,106, 32,190,149, 41,111, 93, 41,194, +113,136,173,143,186, 81,117,175,185,135,176,204, 33,190,235,207,177,196, 44, 92, 40,131,158, 28, 34, 36,174,141, 48,199, 77,255, +152,206,231, 65,135,235,254,115, 79,192, 24, 99, 9,135,200, 89, 2, 92,245,234,213,215, 71,123, 45, 60, 69,118,187,225,165,203, +100,102, 72,197, 75,247,132,113,149,173,196, 17,172,173,111, 93,147,177, 57,136,216,106, 27,187,213,243,241,123, 56,192, 94,182, +134,214, 90,125, 12,218,181,183,108,204, 15, 1,222, 60,119, 9,144, 1,202, 68,157, 50, 82, 38, 87,218,139, 17, 36, 61,111, 61, +238,243, 77,155,213,215,224,125,226,200,217, 68,185,226,136,117,138,252, 1, 93,230, 39,187, 53,140,247,209, 2, 93,186,232,172, +221,101,219,104,197, 68,126, 3,206,162,162,161, 99, 98, 49,108, 85,152,125, 98, 50,218, 22, 6,127,152,176, 72,128, 91,174, 54, +172,182, 40,119, 26, 79,139,140,219, 76, 97,177, 88, 62,204,205,118,163,237,237,240,127,247, 88,187,246,231, 27,173, 44,117,161, +175,218, 30, 19,157,215,247,153,198,110, 14, 65, 11,136,112, 18,254,147,129, 1, 15, 97, 40, 2, 94,232, 68,106, 75,234,100,157, + 25,139, 64, 10, 23,244,226, 10,156,234,168, 96, 76,210,216,107,119,115, 56, 6, 24, 98, 38,155,224,116, 51, 54,100,111,111,105, +197,108, 94,237,190, 1, 79, 37,241,206,169,148, 32,178,205,122,208,153,200, 57,219,157, 96,165,179,109,177,214, 41, 7, 39, 32, + 67, 67, 40,197,146,122,230,139,167, 56, 13,253,133,183, 17,101,234,155,120, 63,228,109, 88,253,253, 83,180,134,129, 89,221, 71, + 16,172,120,197,141,162, 98,217,172, 53, 22,206,162, 27,174,135, 40, 88, 30,116, 50,161, 93,136, 85,113, 94,119,179,135,244,123, +104,211, 81,149,163, 52, 25,124,103, 81, 4,170,156,157,199, 60,119,158, 65, 33,227, 68, 30,181, 7,114, 10,123,232, 99, 7,168, + 92,215,130, 51,239,118,149, 96, 32,248,124,206,225,229,197,231,117,209, 9,128,205, 80, 56, 99, 97,215, 34, 73, 65,145, 28,231, + 94,187,184,149, 53,172,115,110,196,162,188, 66,136,192,106, 17,202, 94, 23, 46, 66,167,152, 37,147,118,247,208, 54, 46,220,138, +141,182,157,135,110, 45, 7,191,111,254,248,221,254,156,207,117, 89,120,166, 51,250,241,237,119,233,103, 63,249, 69,154,219, 8, +170,224, 76, 31, 90,138,171,188,229, 84,125, 98,172,171,132, 88,246,241,242, 57,254,214, 31,124,107,249,185, 59, 58,223, 30,209, +123,183,111,209,191,250,206,183,233, 75,159,123,189,127,214, 39,119,207,232,107, 63,124,159, 46, 45,139,252, 79,125,230, 53,186, +245,248,140,206,151,103,226,225,201,174,199,156,190,242,220, 76,219,105,219, 95,231,221, 7, 15,233,219,111,127,141,126,237,151, +127,145,118,187, 93, 42, 24,162,163, 34,221,126, 41, 18, 90, 36,158,224,254, 81,125,130,119, 10, 1,120, 21, 7, 37,179, 65,213, +160, 23,182,255,218,110, 64, 72,184, 25,107,178,129, 75, 54,136,178, 86,125,202,134, 93, 64, 60,152, 15,232,184,128, 86,191,169, +230,149,141, 80, 48,103, 1,117, 83, 53,130, 88,216, 34,165,205, 27, 13,107,178,181,104, 88,149,226,206,162,208,206, 71, 79, 95, + 35, 61,156,247,106,127,163,157,221, 9,218,240,162,179,249, 25, 50, 5, 38,178,232,218,113,224, 28, 34,216, 1,101,137,159,103, + 32, 27, 18, 74, 25,243, 35,253,113,130,116, 52,208,220,112,216, 59,197, 5,113,170, 95,105,159,231,172,220, 22, 29, 23,155,118, + 99,234,251,226, 80,172,147,234,154, 38, 15,222, 34,167, 50, 50,174,125,160, 51, 25,157,154,170, 10,124, 56, 28,177,228, 80, 49, + 24, 97,152,226,127, 68,234, 78,193, 75, 48, 14,131,173, 97,205,209,113, 68, 7,253, 67,139, 76, 91,118,129,195,120,191,163,221, + 81, 21,142,192,133, 0,161,138,118,215, 16, 26,228,156,228, 16,118,152, 62,206,213,192, 50,218, 63,147,251,107, 85,154, 55,145, + 43,107, 11,141,220,221, 38,156,153,218,108,139, 53, 33, 72,171,116,209, 74, 83, 40, 22, 95,131,216,244,217, 54,122, 82,167,178, +242,181, 3, 20,159,115,114,156,189, 49, 1,148, 39, 65,136, 13,110,122,184, 8,135, 50, 80,237, 87, 54,223,169, 38, 18, 83,232, + 1,147, 42,103,161,173, 87, 33, 92,102, 14,133, 45,149, 17, 0,145,144,118, 7,155,184,209,166, 2,209, 56,250,186, 54, 17,144, + 51, 14, 5,182,248, 21,135, 43, 68,234, 28,120,124, 9,176,167, 62,179, 12,200,189, 11, 15, 1,176,226,126,219, 73,207,205,224, +133,247,236,105, 27,227,180,191,189,131,142, 66,235, 68, 20,107, 59, 21, 39,152, 13,139,207,121,124, 22,221,182,144, 19,245,216, +185,214,208,242, 21, 2,166,244,242,197,211,179,104,181,251,130, 53,167,182,161,117,170,135,128,101,216, 70, 34,116, 68,146,216, +174,184, 0, 71,114,242, 95,228, 57,230,179, 56,120,151, 4,125,219, 66,222,158,116,119,150,138,153, 68, 5,154,172,228,187,216, +176,217, 55,136,156, 11, 14,132, 70,204, 29,185, 8,159,158, 54,244,149,173, 13,243, 73, 97,214, 40, 92,124,134,138, 24, 97, 95, +120, 96, 1, 77,100, 58, 11,141,105, 85,250, 31,126,135,238,221,187,189, 84,192, 87,232,214,253, 19,122,229,122,161,183, 63,184, + 73, 63,245,169,207,247,175,135,214, 47, 31,100, 46, 46,219,215,252,251,152, 21,182,194,224,187, 63,120,143,190,254,189, 31, 46, +143,200, 68,135,203,230,124,114,122, 68,191,247,213, 55,104, 62,188, 66,239,188,127,147,190,253,173, 63,238, 85,227, 65,211,177, + 92,189,186,220,102, 79, 6,178,179,117, 44,151,127, 31, 31,110,232,185,171, 7,116,116, 88,250,185,121,226, 33,124,157,168,164, +160, 25,166, 41, 98,159,196,228,146,106, 85,180,195, 95, 17, 21,191,101, 38, 64,118, 74, 68, 71,112, 56, 65, 86,135, 68, 1,155, +149,193, 84,112, 46,111,154, 84,188, 71, 92, 36,183, 28,188, 55, 65,127,172,125, 62,140,118,223,162,186, 15, 73,193, 81,189,133, +108,166,119,142,116, 52,117, 66, 83, 0, 15,199, 97, 96,214, 48,153,254,156,157,171, 78, 66, 9,109, 45, 93,206, 15,186, 22,215, + 93,115,172, 45, 67, 11, 73,230,154,194, 83,109, 4,224,196, 70,195,210, 2,115,157, 11,206,185,129,250, 8,106,117, 54,203, 30, + 65,119,197,198,156, 86,233, 74, 4,252,116,155,110,109, 26,176,169,183,211,125,223, 43,161,248, 39,173,200,221,169, 34,154,118, + 88, 32, 81,206, 90, 56, 48,231,111, 26, 38,239, 70, 19,228, 90,216,111, 55, 8,143,105,151, 10,116, 3,221,111,175, 62,121, 42, + 14,115,106, 26,178,205,209,225, 65, 16,177,116,161,243, 86,136,207,206, 52,221, 24,194, 1, 2,251, 26,146,162,204, 45, 22, 31, +226, 27,148, 99, 0,109,204, 87, 27,145,141, 77, 36,229,191,203, 84,230,101,130, 88, 73,118,181,112, 59,217,181,170,188, 20,139, +235, 27, 55,121,157,207,244,121,211, 19,148, 30, 16,122, 88,205,102, 26,143, 91,169,106, 81, 3,189,133,205,229, 64, 37, 14, 65, + 77, 1,124, 41,146, 90, 87, 46,178,100, 64,152, 32,223,185, 70, 11, 51, 33,163,221, 89, 83, 72,253, 31,158,252,100,128, 19, 73, +144,234, 18, 7, 46,240,228,242, 57, 8, 64, 82, 88, 73,137, 69,195, 14, 56,224,100,104,191, 84, 60,225, 14,194, 1,106,192,166, +125,161, 46, 32, 54,177,170,221,176,182,230,209,133, 47, 11, 67, 48, 65,136, 30, 82, 56,201,176,219, 89,226,153,145,222, 56, 63, +136,102,131, 10, 79,139, 10,245, 12,211, 73, 30,181,137, 94, 93,123, 80,121, 21,204, 34,156,161, 38, 9, 29, 88,199,120, 91, 42, + 28,210,172,194,153, 37, 70,216,170, 75, 48, 63, 54, 97,230,115,202, 63,160,148, 80, 8, 59, 99,210,147,120, 58,164, 68, 38,117, + 23, 61, 50,136, 68,169,128,109,146,131,104,149, 98,134, 1,211, 12,175,135,177,108, 41,185,155,144,242, 25,136,243,129, 99,149, +195,200, 53,236,104, 72,147, 19,225, 92, 89, 19,250,233, 1,238, 83, 26,167, 82,232,205, 31,189, 69,103,203, 1,107,183, 59,161, +151,158, 89, 42,232,101,161,124,252,116,215,219,150, 83,175, 70,227, 26,161,236, 38,151,232, 28,155, 2, 65,228, 40,100, 49,204, +203,107,253,167,191,247,213,158, 57, 61,109, 14,233,210,229, 3,186,113,149,233,228,108, 75,175,191,246, 28,253,252, 39, 95,163, +219,183,238,208, 31,125,245,219,244,250,167, 63,217, 23,196,179,179,230,251, 29, 12,135,163,163, 3, 58,220, 22,239, 26, 94,187, +190,165,131,227,103,250,184, 70, 32,107,219,198, 69,134,231,196, 48,161,192, 86, 87,151,234, 71, 26, 36, 12, 48,146, 70, 72, 55, + 9,154, 72, 46,224, 8, 68, 21, 95,160, 27, 36,233,150,246,204, 1,171,196,251,154,190, 13,102,187,229, 64,202,198,163,107,172, +207, 62, 43,142,182,168,247,185,109, 16, 27, 50,232,142,174,179,179,254, 12,116,137,216, 26,143,208,160,173, 40,128,198,158, 11, + 88, 15, 75,140, 44,195,196,141,102, 12,129,209, 86, 8, 33, 61, 85,210, 14,202,150, 25,161,196, 59,107, 61,187,211,161, 14,140, +234,102, 19,252,125, 17,107,101, 27,100,166,166,104,100,214,206, 86,223,107,106, 8,229, 90,101, 60,169,171,200, 80,159,253, 83, +153,106,210, 87, 84, 27, 37,251,236, 34, 63, 75, 24,206, 20,122, 28,208, 35, 72, 80, 44, 59,147, 67,233,123,126,159,108, 71,183, +164, 20,128, 51,225,122, 59,143,207,110,115,216, 68, 85,170, 72,236, 10,100, 71, 7,110,180,163, 50,102,127, 2,129, 45, 6, 39, + 72,249,232,107,164,178,245, 12, 10, 98, 45, 1,185, 41,209,138, 86, 3, 65, 90, 0,135,130, 95,227, 55,139, 9, 50, 70, 42,141, +121, 4, 43,156, 88,219, 33, 96, 94, 30,206,214, 2,238,215, 90, 41,110, 62,175,228, 33,196, 34,159,215,227, 56, 64, 23, 10, 72, + 1,243,182,222,154, 35, 15,145,152,200,229, 78, 50, 26,152, 23,227, 92, 19, 3,109, 82,255, 50,183, 8,130,162, 91, 32,219,109, + 99, 31,174,184,237,100,140, 13, 74,138, 7, 76,124,122, 70,149,110,141, 87, 48, 83,138,214, 53,149,182,119, 94,173,162,173, 88, + 81,216, 15, 85,110, 53, 69, 53,235, 63,171,178,223, 11,182,138, 49,108,111,129, 11, 78,204, 19, 40, 74,128, 55,143,183, 75,213, +211, 80,209, 42, 91, 8,114,233,115, 20, 45,163, 7, 27,175,179, 67, 36,114,148, 41,115,216,199,250,129,165,192,156,124, 66,113, +219,228,135, 39,143,203,129,234, 28,176,136,144, 31,128, 85, 3,173,130,115,200,241,155, 25, 9,203, 24, 7,231,184, 87,143,214, + 69, 97, 39,182, 67, 86,254,117,127,239, 37, 73, 99, 41, 69,189,153,121, 93,194,111,142, 93, 42,123,110,216,193, 23,148,159, 27, + 14,125, 10,102,122, 71,223,125,252,174, 54,134,185,122,237, 42,201,187, 13,110,197,244,240,241, 19,186,241,153,151,232,207,253, +252, 47,209,225,178,241,246, 69,201,188,186, 16,201, 27, 33, 53,226, 97, 50, 24,116,192,148, 67, 78,108,177,108, 13,176,227,227, +163,190, 41, 63,122,242,100, 57, 68, 92,163,237,114,112,248,254, 59,119,233,120,121,207,191,246,103,126,137,174, 28, 29,210, 59, +239,126, 72,187,238,212,168,116,208,184, 11,219, 33,154, 58, 62,222,210,245,203, 91,186,251,224, 81, 95, 7, 63,251,153, 47,118, +224, 17,179,100, 26,159, 80,178,136, 82, 21,176, 61, 81, 84,242, 80, 0, 5,221, 17, 97, 52, 42, 30,131,141, 92, 4,249, 8,236, + 0,149,208, 59,196, 51, 44,208, 73, 26,215,127,194, 25,106,232, 97,132,246, 52, 22, 3, 8,212, 90,202,115,204,241,237,176,162, +127, 97, 66, 32, 12,122,244, 41, 51, 2, 4,194, 41,152,113, 17, 98,183,225,246,223, 58, 75,192,224,177,243, 9,228, 60,174,179, + 67,103, 12,110,132, 26, 28,223,112, 45,207, 67,140, 72, 55,197, 72,168,138,187, 5, 74, 23,212, 42, 78,182,195,105,118, 29,120, + 69,232,184,232, 33, 43,163, 96,153, 13, 61,107,156,119,162, 76,114,172,213,125,235,254, 89,149, 26,107, 82,217, 0,117, 20,174, +139,197,228, 18,176,222, 33,108,202,115, 71,166,226, 32, 41,129, 80, 34,149, 17, 5, 48, 72,196,105,117,166, 11,235,131,141,225, +111,110,149,227,236,137, 81,235,132,202, 88, 3, 4, 68, 69,235, 89, 23,114,170,101,197, 90, 6,133,135,228,162, 0, 23, 14,100, + 85, 91,152, 72,155, 95, 68, 97, 20, 23,213,163, 10, 85,233,189,217,140,157,175,232, 44,222, 42,234,162,127,110,118,142, 68, 70, +162, 21,190,234,130,224,150,245,130,232,109,105, 70, 1, 15,165, 15,126,237,253, 36, 20,244,113,141,192, 24, 46,233, 1,142,247, + 77,171, 64,146, 24, 59,186,184,184, 80, 10,131, 89, 53, 89,221,153,224,170,103,136,125, 18,180,198,164, 87, 41,126,179, 5,125, + 75, 82, 88, 8,148,153,177,137,173, 69, 89, 38, 80, 44, 37,243, 8,216,188,200,236, 22,184,240,145,203,170,209,106,220,129,105, +117, 47,141,147, 56, 94,120,161,149,101,139,202,126,155,153, 71, 43,148, 28,169,201,144, 44,136,253,106,198,160, 55, 56, 48,112, +218,168, 83,228, 55, 83,138, 29,101, 87,107,115,114, 9,248, 98,186, 98, 6,224,189,226,140,113,134,128, 7,230, 85,212,235,234, + 64,152,176,173, 24, 45, 91, 86,213, 56, 6, 47,149,189,153,185, 35,147,129,180,199,246,121,121,117, 17,115,135, 78, 19, 92,254, +123, 55,199,130,153,175,213,152,155, 30,180,176,168,229,189, 92, 57, 46,116,233,112,162, 39, 75,149,126,165,168, 82, 89, 83,221, + 41,209,224,132, 34,210,239,227,201,143,129, 84, 30, 23,163,121,132,255,244,159,252,105,122,251,189,155,116,190, 59,163,167, 39, +103,116,239,254, 29,250,212,167, 63, 65,191,246,171,127,146,166, 89,186,231,252,213,151,159,163,127,244,219,191, 79,223,253,227, + 55,151,253,122,219,215,192,170,222,223,214,154,111,122,158,102, 38,121,255,163, 91,244,242,107,167,116,163,137, 82, 61,222, 82, +160, 75,192,233,144,147,194,114,148, 23,129,157, 35,118, 96,192,228,238,139,136,186,194, 46,104,133,150,254,224, 77,120, 36,167, +141,213,116,158, 91,224,232,204,144, 95,128,248,208, 2,109,124,194, 97,157,216,207,139, 64, 16,251,185,236,162, 48, 1,209,164, + 10,211,102, 32,116,166,181, 58, 14,126, 30, 25,203,226,235,111, 20, 70, 27,104,149,177, 23, 17, 93, 87,216, 5,117,147, 59, 2, +156,196, 88,103,255, 61, 13, 63, 61,180, 84,243,176, 72, 11,132, 5, 89,204,173, 61, 99, 42,122,235, 22,184, 70,200,107,227,220, + 57,248, 28,189,243,160,220,140,150, 26,216,174,247,220, 17,193,209, 57,116, 34,160, 35,244,213, 81, 35,176,145,171,240, 88,212, + 33,228, 69,143,146, 0,251, 65, 78,161, 50,158, 70,216,127,247,148, 70, 46,125,164,220, 88,250,158,132,168, 72,111, 11,181, 41, + 88, 36, 26,109,148, 92,143,182,105,213,176, 88,232, 91, 35,126, 89,171,173,228,212, 38,198,185, 33, 72,148, 24,100,242, 12,130, + 25, 89, 39, 61,137,228,255, 70,134, 54,164,224, 32, 76,222,209,176,158,138, 19,179,137,128,225, 75, 58,221,246,159,181,153, 52, +189,198,252,139, 74,135,179,205, 1, 55,229, 10, 24, 66,255, 29, 81,153,134,149,167, 4,150,211, 39,187, 65, 3,203, 85, 60,167, +215,197, 80, 73, 91,200, 38,167,141, 97, 74,126, 87,193,106, 30, 14, 81,146, 84,122,236,225, 46,209, 32,200, 66,139, 88, 96,166, +177,199,109,217,197, 40, 93,164, 56, 75, 22,246,217,255, 20, 22,195,235,245, 51, 41,187, 37,192, 11, 50, 90,213,101, 98, 72,232, +163,148, 17, 62,238,105, 72,123,227, 8,121,113, 8,132, 85, 57,144, 91,108,209,165,126, 93,156,243, 30, 85, 83,133,211,190,243, +169, 10,167,144, 11,194, 32, 33, 10,106, 84, 59, 81, 67,142,164, 90,141, 48,114,116,117, 79, 50,186, 49,139, 7, 32, 48,160, 90, +153,147,248, 59,179,228,241,192,192,209,122,231,124, 42,212,235, 83,124,195,231, 2, 63,191,128, 85, 19,132,114, 41,170,104, 21, +165, 75,123,163,105, 94, 85, 17,112,174,225,240,155,167, 12,116,137, 64, 24,238,203,197,134,190,252,205, 55,232,143,190,241,109, +250,235,255,225, 95,164,131,237, 54,249,238, 77,140,122,178,220,111,239,127,248, 81, 23, 71, 29, 29,108,163, 90,169, 21,153,102, + 49, 70, 88, 85, 11, 54,158,193,131,130, 29, 52,108,211, 44,250,194,219, 2,253,226,115,215,135, 85,106,249,249, 87,142, 46,245, +236,129,207,125,242,165,222, 49,104,230,221, 63,248,206, 15,233,255,250,251,191,222,223,203,195,167, 79,251,125,114,222, 29, 36, + 99,106,126,120, 48,209, 7,183,159,210,147,147, 71,180, 93,190,127,115,112, 56, 44,163, 18,247,167,152, 21,211, 79,126,197,109, + 81,158, 98,214, 19,192, 74, 26,199, 48,163, 92, 49,187, 5,170, 4,192, 36,180, 60, 18, 57, 7,162,148, 68,175,180, 75,172,139, +216,157,178,150, 55,214,211, 18, 97, 79, 62,147, 7, 93,164, 15,118, 56, 16,172,109, 67,159, 61, 57, 15, 99, 83,107,136,194, 10, +228,128, 72, 20, 14, 86,168,209, 84,210,198,204, 30,251,103,159,247, 52, 26, 11,222, 41,154,180, 99, 12,237,119,107, 83, 79,197, +197,186,243,185,246,165,107,228,200,207,234, 20, 26, 90, 29, 76, 60,176,188,119, 72, 24,212,215, 37, 69, 29, 83,154, 67, 51,243, + 46,136,113,214,225,132, 69, 77,160, 88,237,228, 77,129,220,232,254,217,110, 32, 38,215,158,171,141,231,168,236, 9,107,189, 51, + 82,161, 72,198, 8,103, 73,188,151, 36,178,163, 72,148,116,114,228,212,216,239,151,182, 16,235,168,254,238, 18, 11, 2,122, 91, +177, 3,150,162,224, 32, 29, 44,165, 59,225,106, 80,115,139, 57, 40, 84,217,139,186, 95,112,174,242,202,185,164, 4,172,230, 85, +236,108,102,142, 83, 25,151,152, 1, 58,243,106,154,116, 46,203,148,131, 87, 25, 32, 22,153,229, 29,213,181,248,141, 79,158,179, + 44,206, 12,142, 69,172,236, 45,142,184,169, 8,122,255, 19,238, 44, 73, 66, 86, 0, 4,109, 3, 27, 31, 25,155,213,130, 49,183, + 2,150, 20, 1,107, 70,220, 67,226,209,149,218,162,218,176, 43,189,147,190, 64,109,120,216, 2, 38,104,181,251,189, 2,158,206, + 33,204,179,138, 0,125,198,197, 49,159, 3, 31,201,190,183,142, 81,128,242, 38,231,213,189,110,173,236,170,122, 3,193,249,109, +168,228,187, 87, 95, 83,208, 24, 75,215, 2,225, 41,148, 19,188, 74,129,143,198,168,105,149,148, 26,168, 36, 48,155,100,155, 54, + 1,102,135,140,175,177, 96,119,131,210,166, 35,171, 10, 61,116, 6,178, 18,121,173,133, 97,156,178,203,211,156,157,163, 2, 71, +138, 20, 69,239,103,173,136, 3, 1,201,106,108,142, 51,248, 11,254,238, 58,203,156, 48, 16,166,105, 49,183, 7,244,187, 95,255, + 38,253,163,223,252,109,250,143,254,237, 63, 71,175,188,240, 44,237,118,115, 2, 71,117, 87,213,246,144, 78, 58,100,105,184, 28, +166,102, 35,218, 28,211,241,229,203,189,114,241, 72, 98,195, 32,251, 34, 37,217,238,233,138,101, 94,141,218,195, 58,214, 50, 7, +218,181,105,175, 99,163, 52,198,195,163, 45, 93, 61,190,212, 43,192,179,229,251, 62,186,117,151,142,143, 46,211,221, 71, 15,233, +188,249,229, 39,246,174,217,249,249, 41,221,186,247,152, 62,253,210, 21,186,117,231, 41, 93,191, 52,209,213, 75,135,206,115,199, +231, 56,150, 58, 24, 1, 72,248,170,237,144, 34,122,111,176,113,225,105,245,253, 41,232, 69, 18,168, 75, 4,226,110,144, 27,142, +235,139, 85,207,192, 80, 55, 60,106, 98, 35, 8,174,233,218,149,128,240,120, 1, 72,140,221,223, 19, 67,243,221, 70,116, 12, 7, +126, 14,113,237,164,133, 71, 21,164, 31,230,238, 69,216,134,178,246,152,112,243,197, 88,233, 42,105, 13,142, 24,106,134, 74, 94, +203,172, 13, 67, 80, 18,173,248, 10, 49,106,171,112, 72,225,148, 3, 98,215,178,236, 63, 66, 90,213,216, 20, 36,144,211,197, 15, + 41, 22, 35, 28,106, 95,120, 50, 57, 8,150,226,149, 59,167,107, 48, 90,238,112,109, 74,113, 96, 81,116,135, 25,128, 86, 74,255, + 51,241,224, 60, 14, 89,155,131,229,134,101, 69,114,218,120, 81,128,195,142, 11,153,143,192, 41, 46, 56,167,180,163,180,107,133, +168, 4, 54,103,236,192,123, 38, 45, 37,119,193,222,134,207,117,109, 25, 11, 59, 79,179, 30,100, 91, 4,124, 66,105, 22,153,219, +150, 72,176,195,251, 10, 71,254, 81,105,147,179,228,227, 27,196,133, 97, 65,233, 2,174,121, 58, 16,172,129, 29,217, 78, 23,179, + 51,137, 69,115, 45, 99, 22, 73,129, 53,178,130,151,250, 76,220,130,112, 64,254,204,251, 71, 49,215, 1,136,134,244,164, 86,107, +133, 74,159, 17, 89,154,129, 32, 22, 19, 74,235, 25, 50,230,121,176,122,123, 45, 37, 28, 74,210,177, 9, 22,200,181,166,156,199, + 13,162, 40,255,112, 74,136,178,200, 55,115, 74, 46, 4, 79,116,194,207, 65,160, 34,182,202, 90,130,158, 71,147, 68,136,137,199, +177, 98, 27, 57,230,231, 69,192,249, 81,140,109,158,189,214,248, 58, 96, 5, 76, 85,104,114, 85,240,158, 49, 59,121,103, 35, 99, + 30, 28, 10, 22,226, 2, 63, 91,128,156, 72,208,250,151, 85, 38, 93, 86,113, 11, 70,186,164,174, 12, 87, 19,111,170, 75, 64,181, + 50,125, 94,125,114, 74, 15, 31, 62,162,103,158,187,209, 29, 52,109,147,175,141, 0,132,224,142,166, 26,239,208,160,221,178,201, +110,251, 66,117,176,149, 14,131, 57, 56, 56, 94, 54,223, 51,165, 23, 78,125,238,205,216,239,147, 81, 41, 86, 32,157,121, 39,145, + 66,104,137, 78,128, 39,103, 59,122,225,249,107,244,169, 87,158,165,239,190,249, 22, 93,123,254, 89, 58, 62,216,208,243, 47,191, +216,245, 5,219,229, 96,241,137, 79,188, 74, 63,248,222,143,123,152,203, 75,207,222,160,119,111,126, 68, 87, 47, 95,233,240,166, +118,232,104,163,130, 22,216,116,227,234, 49,189,240,236, 49, 29, 29, 40,160,100,171,150, 50,145,125, 24, 13,231,249,126, 42, 10, +236,178,111, 38, 90,137,104,162, 88,240, 3, 0,134,235,160,223,122, 95,156, 41,144, 61,158,152, 1, 74,251,155, 76, 36, 9, 42, +113,255, 58,100,150, 39,241, 30,246,212,145, 97, 95, 97,131, 76,217, 28,217, 17, 97, 94,252, 84, 4, 36,241,100, 78,249,139,177, + 29, 92,181, 26,150, 63,114, 20,108, 77,137,160,130,246, 70, 2,176,142, 5,195, 24,137,207,191, 49,114, 43,250,112,161, 3,113, + 74, 32,188, 19,170, 57, 10, 8,139,205,245, 66,178, 26, 15, 68,237,182,221,245,117,224,152,228, 16,184, 79,241,249,136, 2,100, +124, 14, 94, 2, 42, 67,145,226,102,201,140,163, 43,167,139,149,222,251,246,220, 69,236,107,220,131,174,166,217,140,107,185,217, + 40,127,217,241,146,102,173,160,216,196, 4, 78, 67,102,160, 31,149,106,156,218, 43,177,111, 40, 88,206,176, 64,219, 46, 9,228, +100, 88,186,112,143, 78, 85, 2, 12, 53,167,236,197, 77, 27,190,182,220,112,142,239, 25,198,148, 23, 55, 81,206,184,181,192,100, + 37,204,185, 80,184,133,191, 47,169,133, 56, 81,135,252, 6, 47,241,158,243,184,154,247,186,158,209, 37,143, 7, 31, 35, 87, 81, +196, 29,142, 35,241,170,108,120,173,245,187, 39, 74,115, 49, 74, 62,204,172, 23, 91, 93,236,189,246,139, 72,228, 80,227,169, 61, + 17,204,128,227, 28, 35,214,139,218,164,208, 66,134,185,115,126, 93, 5, 40,130, 5,145, 78,233, 40,226,194,180,245, 44, 25, 30, +184,124,138,150,172,203, 68, 79,170, 11,196,152,100,125, 25, 38, 21,126, 50,128, 78,224, 96, 89, 60, 87, 57,116,109, 92,240, 48, +138, 51,237,212,157, 3, 90, 32,125,204,198,158, 91,234,138,101,132,118,127,129, 67,100, 86,165,239, 93, 19,131, 12,121,181, 64, + 25, 14,191,234, 72,229, 13, 73,239,245, 42, 62,199,245,241,161, 76,125, 67,252,232,163, 59,244,149,111,124,135,118,231, 39,244, +119,126,227,159,208,127,241, 87,254, 10, 53, 55, 77,133,141,174,109,214,231, 29,193, 42,116,116,116, 68,135,203,223,187,122,101, + 67,207,220, 56, 30, 29,181,205,166,179, 45,110, 63, 62,161,175,252,206, 87,232,236,228,132, 46, 31,115, 7,133, 20,222,210, 79, +254,228, 79,208, 75,207,189,170,140, 6, 35,104,133, 21, 41,116, 21,227,195,255, 31,255,167,191, 77,167, 15,110,210,151, 62,243, + 12,125,238,250,203,116,243, 81,155,225, 47,135,136,235, 55,134,125,118,249,157,143, 31, 63,166, 39, 39, 79,232,209,227, 39,125, + 30,123,122,118, 70,151,142, 43,157,205,205,159,222,102,175,115,247,184, 55, 27,211,233,217,121, 99,105, 83,221,218, 60,189, 0, +118,148, 46, 16, 31,178, 87, 80,251, 51, 15, 73,129, 58,123,154, 97,130,144,161, 10,179,251, 42,105,207,138, 74, 95,214,136,132, + 8, 0,170, 48, 42,176,233, 97, 9, 61, 17, 23,116,123,168,211, 3,152,237,232,224, 73, 74,110, 33,112,115,112, 20, 54,190,118, + 98, 38, 8, 70, 19,199,152, 2, 93, 77, 73,111, 99,139,207, 36, 14,176, 26,238,130,170,226,191,245,104,137,178, 72, 24, 45,153, +150, 52,105, 5, 12,224,186,187,197,176,148, 28, 71,156, 56,199, 18,157,162,222,246,159,156,120, 71, 26,114, 54,174,225,228, 56, + 71, 63,138,114,232, 84, 24, 58,181,214,125,138, 52, 60, 96,200, 23, 88,227,182,155,212,224,181, 60,123, 19,235,142,251,166, 36, +194, 36,219,237,223,153, 30,109, 92,116,249, 88, 63,255,234,191,108,220, 71,145,186, 37, 38,152,232,102,255, 2, 16, 14, 73,217, + 15,201, 10, 3, 87,154, 87, 82,231, 96, 40,203,234, 52,149,208, 82,116,193, 23, 64, 93,137, 8, 18, 75,122,209,165,112, 35, 97, + 55,129,170,103,101, 34,206, 39, 98,168, 74,243,141, 8,108, 13,108,101,113,201,162, 32,180, 77,225,205,135,162,126,194, 77, 73, +168,174, 4, 97,123,237, 79,206,117,246, 90,210,150,212,180, 43,129, 89,254, 57,251, 67,213,184,161,243, 67,130,149, 71, 14, 46, +225, 11,132,132,177,161,114, 30,164,130, 88, 46,220, 15, 54, 30,192,121, 19,242,244,169, 68, 75,154,247,126, 31,118, 68, 46,178, + 44,175, 43,209,168, 0, 4, 26, 30,204,185, 42,101,160, 17,230, 81, 18,118,124, 99, 97,140,177, 14, 37,255,186,117, 21,156, 39, +173,177,160,113,125,178, 82, 30,145,156,184,235, 99,104, 75,238, 62,112, 18,204, 9, 4,187,100, 60, 44,224,117, 77, 45,108, 1, + 29, 40,185,196,159,143,173,223,245,136,104,138, 57,143,148,184,178,199,151, 46,209,183,126,240, 99,186,125,255, 1, 93, 61,222, +208,111,127,229,107,244,133,207,127,145,254,210,191,249, 43,116,170,132,195,174,124,111,155,250, 82,209, 63, 93,254,145,101, 67, +223,220, 56,164,103,174, 31,211,213,171,215,250, 97,189,208, 24,139,189,123,235, 1,125,229,107,111,244,205,246,112, 90,170,250, +237, 33, 93, 58,186, 74,127,248,198,215,232,191,250,171,255,217, 82, 73, 95, 94,214, 32,142,195,117,178,110,142,195,142, 97, 65, +231,229,251, 62,184,243,184,183,226, 15, 54,135,157, 44,184, 93, 14, 27, 54,126,107,243,253,247,111,222,161,243,221, 57,157,207, + 13, 19,123, 70,135, 7, 79,151, 53,111,162,121,219,236, 75,215,233,164,121,173,151,247,121,255,254, 99, 58, 95,254,235, 64, 3, +132,136,215,189,175,188,113,249,216, 5,115,211, 9,238, 33,230, 36,248, 12, 72, 9, 0,127,192,142, 74,192, 69, 24, 32, 20,180, +196,161,224,117,213, 1, 3,245, 59, 70,217,114, 9,164, 49, 79,200,111, 80,250,156,243,233,199,215,125,100,231, 25,241, 4, 58, + 0, 87,190,186,107,132,189, 93,159,215,190,128,125,149, 20,167,141, 93,190,174,254,233,148,204,241,179,230, 58, 59,208, 39, 85, + 66, 28, 20,208, 21,168, 2,196,102, 99,220, 87, 77,165, 46,162,246, 81,235,218,149,248, 60,121,101,115,205,153,183,227,186,111, + 4, 36, 11,188, 23,112, 19,219,136,236,187, 65, 96, 99, 55, 23,140,172,195,167,112,221,179,120,227,137, 19, 92,136, 16,117,171, + 51, 94, 86,164, 97, 47,240,106,209,177,216,114,122,174,202,220,245, 77,182,253,112,203,146,213,212,156, 2, 50,126,194,205, 88, + 55,118, 63, 85,130, 26,154, 86,202, 79,187, 57, 25,169, 74,190,241,174,163, 32,101,159, 1, 9,232, 87,161,117, 76,229, 42,236, +161,100,140,228, 5, 14,220, 11, 4, 2, 65, 95, 66,203,154,141, 0,226, 33,202,179,204,164, 94,229,204, 23, 73,107,179, 88,196, +102, 77,226,123, 75,227,161,148,104,151, 61,240,130, 41, 95, 66, 23,144, 69,120, 79,244,228, 15, 23,103, 88, 80,222,248,179, 80, + 34, 41,178,215,115, 75, 36, 29,113,248, 98, 25, 98,114,163,197, 70, 1,174, 48, 61,186,134, 45,112,132, 6,248,169, 61, 40,127, + 5,246, 39,190,224,144,178,122, 8,215,221,150,189,235,144, 65, 56,180,106,107,198,161,136,247, 24, 12, 97,215,241,142, 89, 64, + 87,176, 53, 95, 64,240, 86,120, 37, 42,229, 61, 85,125, 58,128,128, 96, 52,157, 20, 64,201,171,153,199,112,240,129,209,145, 69, + 62,150, 8, 99, 33,212,196,164, 0,154, 53,227, 29, 14,121, 85,194, 14, 39,240,140, 34,124, 7,180, 18,255,231,175,255, 54,125, +243,205,183,232,223,248,229, 95,162, 47,255,254,239,209,175,253,185, 95,165,167,205, 38,212, 68,170,208, 38,110,237,247,134, 99, + 61,106, 65, 41,167,203, 6,122,178,108,164,103, 76,215,158,127,161,199, 1,183,161,251,188,252,206, 7,247, 31,209,213,235, 87, +168, 44,127,118,126,250,164,127, 4, 31,222,191, 79, 39,239,190,223,231,241,215, 91,204,239, 92,233, 99,112, 58,253,127,103,173, +245,184,221, 46, 27, 53,211, 71,247, 78,232,218,229, 67,122,249,229,103,250, 90,215,130,147,166,163,229,103,222,186, 75,111,124, +239, 71,116,184,124,223,211,211,167,116,178, 28, 54, 78,150,215,117,118,184,115, 78,208,157, 7, 39,116,120, 99,162, 23,159,189, + 68,119,239, 61,160,221,242,123, 15, 1, 53,157,198, 44, 4,118, 64,194,209, 83,242,206,164,153,178,211, 42, 9, 68, 96,230,132, + 41, 81,245, 72, 66,109, 71,144, 12,227,207,149,168,137,145,164,198,176,169, 91,224, 8,175,239,183,110,255,146, 20,195,235, 0, + 48,200,200,136,183,189,158,159,234,186, 52,203, 30, 58, 56,141,229, 36, 54,241,243, 10,158,119,137, 14,224,211,243, 74,143,158, +158,210,157,187,119, 59,162,247,236,108,166, 79,191,250, 34, 93, 62, 58,238,206, 10,134,103,149, 61,107, 60, 51, 71, 72,225, 47, +253,253,106, 36,170,239, 91, 28,233,135,209, 13,133, 80, 40,134,199, 33,217,153, 74, 36, 43, 82, 78, 68,244,233, 59,163,104, 60, +132,172,178,130, 49, 17, 38, 28,162,208,220, 53, 62,230,246,217,132, 14,170, 74, 2, 20, 57,115,223,186, 24,144,104, 58,216,251, +203,193,185, 7,199,151, 26, 62, 64,109,177,119, 2,158, 84, 61, 53,109,148, 20, 86, 29, 17,104,220,118,145,125,129, 7,115,168, +158,189,213, 94, 87, 26, 23,145,149,133, 67, 86, 12,105, 94, 29,155,246,245,115,148,245,141,224,139,190,232,161,202,178,160,212, + 19,197,153, 63,174,191, 96,169,233,130, 73,201, 15,111,138,201,196,223,197,107, 97,136,164,155,129, 61,155, 20,200, 91,186, 88, + 39, 48, 5, 90,190,246,150, 48,185, 96, 14,123, 65,229,207,235,249, 41,239, 31, 8,240,107, 56, 91,114, 12, 39,192, 69, 66,241, +149, 97, 60, 40, 20,147,240, 40,251,254,196, 1,136,112, 40,142, 41,237,173,165, 44,233, 68,179,103,109,219, 19,149, 17,121, 56, +205,138,146, 0,198, 29, 89,221, 23, 89,148,147, 90,153,156,118,187, 16, 54,231, 51,139,183,197, 25, 59, 42,133, 86,243,114, 74, +254,245,100,109, 43, 23,139, 66, 93,241,127,209,215,172,181,155,170,132,226, 29, 40, 39, 6, 50,142,168, 2,252,131,152,204, 92, + 91,150,252,252,170, 75,129,208, 85,130, 10,106,125, 29, 63,245, 51,175,211,175,252,202,191, 70,255,245,127,247, 63, 44,155,224, + 83,218, 30,108,232,147,159,124,141,206,219,235, 59, 56,240,247,208,168,100, 47, 93, 62,166,127,255,223,250,211,244,183,254,206, +175, 47, 63,238,104, 89,164,183,244,220,179,207, 82,105,182,164,121,100, 4, 60,126,252,132,238, 63,124, 28,136,232,165,202,190, +255,232, 9,157, 61, 58,163, 31,254,224, 77,122,229,213, 87,104, 87,207,114, 68, 44,229,231,174, 21,177,175,127,230, 51,244,120, +249, 57,151, 55,143,233,250,229, 3, 58,218,110,232,225, 82,137,223,187,117,139, 94,186,113,131,222,125,231, 61,122,252,224, 81, + 31, 31,180,181,237,252,108, 57,100,236,198, 61,114,114,118, 70,219,165,178,159, 20,201,252,194,141,171, 29, 21,122,126,190,139, +197,148,178,125,209,169,140,123,204,122,254,248, 3,247,158, 90,177, 36,219,104, 95, 35,231, 44, 78,203,234, 24,184, 71,121,125, +244,133, 1,158, 51,242,167, 56,200,165,130,105, 60,143,130,172,134,240,189, 42, 39, 93, 67, 89, 86,175, 56,158, 54,233,106,117, +150, 53, 46, 57, 20,231, 70,157,107,122,135, 55,223,187,219,175,215, 15,222,248, 22, 61,121,252,152, 46, 93,185, 68,175,125,242, +117,186,118,253,153,126,128,250,250,215,191, 69, 55,174, 93,161,205,114,111, 60,184,255, 17,253,236, 79,254, 44, 93,189,114,217, + 53, 94,123,191, 3,131,184,236,149,119,132,182,138,255,118,179,207,190, 69, 5,133,102, 83, 21, 11,153,177, 54, 61,142, 56, 75, + 30, 53, 50, 35,232, 9,246, 40,198, 17, 23,175,216, 20,112,168,134, 4, 70,147,105, 23, 27,119,115,234, 29,170, 86,201, 14, 67, + 74,223,244, 16, 44,141,182,158,113,164, 42,169, 96,216,116,197,157,132,141, 74, 48,202,209,243,121,165,191,113,203,178, 53,226, +143,101,200,250, 12, 70, 66, 24,199,201, 90, 37,144,127,204,185, 29,141, 85, 63,158, 46,161,253,233,170,243,181, 66, 23,239,176, +204, 85,196,181,121,111, 1,200, 37, 81,190, 97,237,212,205, 48,156, 21, 4, 94, 0, 74,145,214,179, 32,145, 11, 54, 30,156, 85, +102, 69,177,251, 74,177,149,147,102,200, 23,139, 81,210,169, 6,111,244,245,104,130, 17,134, 2,116, 50,156,121,163, 38, 46,253, +130,139, 4, 94, 43,111,123,194,162,174, 14, 18, 28, 80, 30, 20,123,249,140,120, 37, 2,163, 36, 77, 88,189, 14,193, 81,130,100, + 77, 0,231, 86,168,111, 89,137, 31,190,158,230, 72, 38,231, 17,222,119,171,200,133,212,165, 30,200, 41,155,207, 49, 58, 20,172, +115, 33,227,160,194, 5, 20,241,160, 35,240, 84, 37,194, 25,233, 74,175,137, 26,201,117,135,162, 40, 19, 94, 99, 8,121,239,192, +150,143,128, 94, 21,196,137, 43,117,127, 66, 33, 80, 97, 46,134,151, 29,208,166, 20,106,214,159,251,233, 47,208,223,254,187,255, +144,254,248,205, 31,209,181,107,215,233, 83,159,253, 36,253,249, 95,249,147,244,228,201, 73, 60, 43,170,238, 61,217,157,209,147, +147, 19,154,207, 79,250, 38,249,195,119,238,211,215,191,241, 77,250,210, 47,124,137, 46, 93, 58,162, 55,223,250,136,222,251,224, +118,247,148,183,153,252,211, 93,123,173,203,102,123,222,218,226, 91,250,198, 55,190, 79,127,234, 95,255, 37, 79,202, 66, 86, 56, +126,190,187,221,192, 10, 31, 45,213,221,243,151,153, 94, 89, 42,237, 7, 39,231,116,122, 86,233,225,221, 91,203, 70,254, 39,232, +100, 30,126,229,115, 13, 27,106, 85,248,209,246,160,131,103,234,201, 89,255,251,151,143, 11,221,184,188,165, 75,203,107,249,196, + 82,233,207, 2,179,110,180, 45, 18,239,165,220,237, 47, 78, 31,211, 89, 48,221,155,128, 8, 84,106,210, 52,240,218, 67,233, 31, +193, 74,147, 98,141, 33, 89, 73,182, 57,223, 76,107,143,186,113, 38, 47, 28,105, 9,239,235, 59, 88, 86,221, 46, 7, 43,144,192, +186,234,233,132,192, 64,108, 26,157,135,143,207,251, 40,228,176, 81, 76,203,180,220, 23, 68,135, 75,193,248,242,203, 47,245,238, +202,193,242,204, 92,187,124,212,231,206, 47, 61,115,153, 30, 45,155,254,233,217, 35,186,177,189,209, 63,219, 52,171,222, 91,103, +139,191,190,222, 16,213,246,123, 71,213, 54, 78,123,251,220,139,120,122,220,208, 44, 84, 13, 95,177,162, 66, 32, 69, 46, 23, 19, +226,241,167,160,125,146,154, 14,255, 76,107, 32, 19,132,149,185,144,129,163,155, 71, 53, 20, 62,189, 96,218,168,177, 37, 92, 19, + 61,208,166,237,183, 83,129,110, 89, 25,179,119, 13,232, 34,245,203,219,222,188,233,164, 29, 41,238,201, 19,192,224, 57,233,136, +200, 19,187,252,141, 64, 42, 15,129,213, 34, 61,112, 48,183,244, 83, 37,175, 64, 45, 64,255, 17, 20, 42,172,187,226,107, 85,233, +133, 93,122, 89,121,182,121,175, 37, 36,180, 2,227, 92, 36,102,185, 64,124, 36, 31,103,243, 77, 2,139,253, 83,186,249,104,241, +239,239, 65,109, 86,214,166, 14,112, 44, 23,205,140, 87, 64, 26,190,160,106, 95,145,174,210, 92, 29, 42,224, 20,191,153, 42,116, +206,197, 6,211,254, 41,116, 53, 17, 89,255, 31, 22, 46,131,149, 63,110,234,156, 32, 49, 89, 20,199, 56,211, 79, 53,119,180,201, +246,230,205,208,230,242, 88, 85, 80, 35,239, 93, 71,145, 11, 23,217,189,247, 2,113,149, 93, 20,163,204,124,127, 13,181,174,218, +106, 80,153, 23,172,166,246, 11, 52,198,110, 68,244,245,193,162, 5,108, 8,107,199, 50,237,181,222,153,120,111,146,132,108,104, +180,190,237,155, 74, 57,102,162,254,172, 18, 28,208,135,210, 63,128, 52,177,152,183,168,219,223,252,231,255,138, 62,243,169,215, +232,222,253, 71, 46, 60,141, 67,203,178, 72, 31,110,233,159,254,139, 63,160,255,245,127,251,135,180, 59,125,180, 84,200, 31,210, +183,191,119,159,142, 55, 91,250,214,183,191, 71,207,189,248, 18,253,181,191,254, 87,233,254,237,179,190,206, 28, 77, 59,250,224, +230, 93,186,118,233,128,206,150, 69,248,153, 99,162,211,221, 17,125,243,251,239,210,173, 91,183,233,165, 23,158,239,162,216,205, +102,202,221, 20, 26, 54,220,135, 79, 79,123,149,254,206,123, 55,233,149,207, 95, 27, 98,243,165, 74,251,224,214,125,250,231,191, +251,135,116,253,133, 87,122, 54,250,189,187, 15,123,245,119,116,112,188, 84,133,188, 28, 28,218,120,224,136,110,221,125, 76,219, +165,194,251,228,139, 87,232,241,227,167,203,159,109, 70,186,111, 17, 21,227,194,145,136,193,222,151, 78, 99,124,225,140,118,204, +113, 37,171,183,245,128,230, 76,111,154, 84, 48, 30,247, 88,133, 78, 38, 11,238,183, 0,209, 18,200,152, 65,225,146,127,230, 97, + 9, 53,127,123,192,105,100,101,114, 17,239,180, 9, 0,138,195,127,207,153,215,101, 35,213,181,255, 90,114,151,173,189,143,211, +211, 93,191,158, 79,159, 60,162,227,131,102,129, 19,122,245,213, 87,251,143, 56,121,186, 92,239,205,142,182,205,205,180, 92,167, +143,238, 60, 92,238,131, 13,189,243,225, 45,122,225,229, 79,140, 88,217,202,123,197,148,192, 6, 28, 93, 77, 81,242,169, 70,193, +182, 13,114,170, 35,254,118, 86, 28,119, 49,145, 72,245,107,196,101,117, 32,242, 53,199,114,203, 1,143,110,182,105,231,230,239, +195,175, 10,146, 69,221, 66, 87,192, 66, 39,121,124,227,200,104, 6,235,116, 27,201,204, 90,185,215, 1,170,209,200,236,113,109, + 27,135,126,110,243, 37,125,140, 91,251,189,148,176, 32,184,168, 72, 79, 48, 18, 81,155,142,140,148,162,255, 22, 63,145,161,237, +129, 96,118,129,169, 86,148, 48,147,242,113,187, 50, 0, 29, 86,253, 79,145,252,181,228, 26,145,124, 64, 16,222,171,202, 86,172, +167,213,146, 64,121,161, 71, 49, 6,190,248, 84, 77,149,120, 79,178,170,126,214, 89,208, 23,156, 10, 98, 67,149,213,226,204,123, + 62, 99, 78,135, 11, 89,105, 2, 56, 55, 64,120, 29,179,201,161,228, 70,218, 31,243,133, 34,189, 4,122,161,181, 40,145,215, 44, +150,220, 50, 68, 31,245,218,107,127, 81,222,247,202, 14,152, 94, 22,229,175,103, 35,193, 42, 17,239,130,230,250,218, 3,203,232, +211, 18,120, 19,188, 30, 89,192,207,157,214,155, 47,231,206, 70, 41,116, 17,235,101,128,199, 56, 9,128,208,122, 39,101, 85,141, + 51,103,187, 32,173, 52, 19,112,237,214,228, 58, 59,176, 73, 66,152,114,160,154, 85, 16, 36, 31, 99,109,140,131,206,190,124,129, +221,191, 76,123,182,169,246,245, 75, 71, 71,244, 23,255,194,175,208, 27, 63,120,155,190,255,131,119,130,233,173, 64,140,150,106, +246,245,111,126,159,158,185,118,131,206, 78,151, 74,120,222,209,217,249, 57, 29, 94,190, 78,175, 62,243, 44,157, 46, 11,236, 31, +253,225, 31, 47,139,208, 33, 61,121,122, 78,187, 58,104,115,141, 61,241,240,124, 71,207, 95,191, 76, 7,103,103,116,239,209, 73, +111,147, 31, 44,213,201, 31,124,227,123,244, 7,191,255,213,222, 62,223,148, 56,176,212,166, 74, 94,126,255, 59,239,188, 67,151, + 14,132,222,190,117, 66, 31,221, 63,237,231,174, 15,110, 61,165, 55,127,244, 17,253,248,157,191, 77,207, 63,115,157,238, 61,188, + 79,207, 92, 30,179,255,166,188,111,182,186, 71,143, 43, 29,110,199, 12,246,230,237, 71,244,232,201, 25,125,255,237, 59,116,124, +184,252,201,243,167, 52, 29, 61,204,214, 38,184,150, 5, 2,172,220, 61, 4,109,150,205,178, 0,183, 14,196,224,106, 84,255,252, +170, 38,247,225, 51, 61,218,199,243,114,157,118,189,186,109, 99,136,102,245,107,255,110,154,148, 2, 10, 27, 90,169,223, 5,102, +233,168,196, 17,141,117, 13,113,184, 64, 97,150,115, 4,218,225,104,222,205, 25,167,236,247,197, 20,250, 68, 60,106,123,100,175, +170,223,209,105,162, 7,209,147,179,153, 30, 61,122,210, 43,238, 7,247,239,211,135, 31, 45,215,246,248, 18, 29, 28, 93,166,155, + 31,221, 94,238,143, 29,221,187,253,126, 23, 47,182, 24,216, 23,111, 28, 47,215,108, 75,223,252,222, 15,233,231,127,238,103,187, +107,161,106,145, 41,176, 30, 59, 2,156,247,105,148,100,116, 58,245,179,142,247, 84, 65,233,175,127, 95, 56,131,189, 4, 85, 82, + 53,158, 28, 31,145,226,186, 86, 18, 56, 41, 82, 41, 75,230,204,120,224,151,228,142,167,107,217,184,119, 14,170, 58,180,200,215, + 5,204,116, 80,164,122,211, 37,180,132, 76,220, 3,171,113,241,107,139, 30, 46,251,162, 49, 77, 27, 26,179,136,178,170, 86, 37, + 11,183,214,149, 43, 35,223, 56,111,202,185,112, 22,128,162,200, 69, 78,234,253,160,228, 11, 36,224, 97,247,146,253, 3, 65, 10, + 78,160,189,214, 62,158,122,121, 15,252,144,173, 73,251,164,174,143, 17,108,173,121, 5,184,203, 8,237,109, 34,178,178, 0,174, +187, 11, 49, 10,224,253,217, 58, 95,100,241,160,139, 21,233,171, 86, 45,113, 10, 13,202, 55,234,202,105,176, 71, 97, 16,218,183, + 46,238, 79,245,179, 85, 11,103,144, 12,115, 68,248,190,194,171, 41, 41,239,201,247, 32,204, 35, 14, 10,124,225, 97, 47,119, 89, +156, 90,152, 28, 0, 31,231, 62,224,253,195, 21, 95,132, 0,134,153, 60,206, 54,253,253, 2,113,110,223,148,176,122,103, 57,198, +213, 91,114, 94,145,192, 72,136, 51,161, 78, 56,247,242,121,221,106, 73,201, 3, 53,183, 87,211, 9, 46,206,219,109,163,170,253, +182, 41, 23,240, 39,184,111, 52,151, 47, 31,211,139, 47, 60, 67,255,238,191,243,103,233,191,252, 27,255, 61,253,229,255,224, 47, +208,171, 47,191,208,103,208,109,113,223, 76, 27,250, 51,191,248, 51, 52, 63,253, 58,189,247,222, 41, 61, 42, 91,122,112,242,148, + 78, 78,239,209, 92,183,116,233,242, 17, 29,109, 15,233,238,195,167,203, 34,127,115, 89,216, 79,187,152,238, 96, 91,122,182,249, + 59, 55, 79,233,149,103,142,232,120,217,192,191,241,199, 63,162, 79,124,226,101,250,202,215,190, 75,127,247,239,255, 22, 61,247, +236,141,158,194, 38,189,237, 62, 47, 7,130,121,249, 89, 19, 93,185,116,212, 63,231,247, 62,122,208,127,198,118,185,254, 79,151, +159,217, 84,248,111,191,125,107,249,231,131,206,245,254,254,242,239,134,184,237, 29,203, 22,209,187,124,223,225,193,209,178,241, +236,232,203, 95, 63,233,223,255,245, 55, 63,234, 26,197,233,215,191,213, 55,148,131,178,113, 75,210, 78, 31,209,243,211,167,244, + 83,175,127,113,249,189, 87,150,141,248,140,182, 7, 91,122,239,157,183,233,206,189,187,253, 51,105,170,249,205,242,103,207, 61, +119,195,243,178,219,120,160,181,160,107, 29, 9,147,117,174,190, 62, 22, 93,143,219, 34,221,174,113,179, 1, 54,142,253,193,193, + 65, 63, 28, 88,140,245, 84, 70,199,162,253,249,209,209, 97,199,218, 54,194,223,164,246,222, 30,165,218,190,103,249, 59,135, 71, +203,247, 28, 28,182,156,237,158, 41,191, 81,127,244, 65,107,131, 55, 45, 66, 67,231,206, 99,246,124,247,206, 61,122,249,149,151, + 50, 0, 75, 52, 19, 28,153, 27,222, 61, 50, 5,189,249,180, 55,201, 91, 55,124,225, 68, 31,125,116,159,238,222,190,219,175,227, + 7, 55,111,210,219, 55, 63,162,207,125,250,117,186,123,247, 65,191,110, 13, 2,244,227,183,111,246,123,230,210,242,126,238, 60, + 60,165,203,243,134,158, 44,135,171,183,222,125,159, 62,255,185,207, 82,237, 0,163,200,128,247,241, 18,199,243,141, 46,130,116, +104,175, 54, 94,154, 52, 9,145,226,251, 58, 53, 78, 71,202,202, 93,119, 75,155, 89,233,192,182, 43,156,164, 55, 99, 93, 17, 48, +132, 22, 14,237, 17,174, 21,133,129,239, 34, 9,169, 27,217, 40, 22,118,165, 90,161, 26,123, 84,252,255,117,100, 1,224,118, 85, + 12,167, 54,181,140,246,141,147,112,198, 7, 87,221,143, 46, 51,108,118, 53,250, 60, 9,235, 8,115, 85,155,199, 23, 20,112,240, +190,175, 48,237,180,146, 33, 33, 73, 85, 41, 31, 51, 15, 93,109, 31, 57,201, 7, 78,178, 34,251,149,242,218,254,192, 89,201, 41, +178, 47,192, 73, 89,207,120, 22,244,238, 27,239,149,136,123,254, 71, 22, 40, 62,121,127,110, 6,106,117,111, 79, 95,208,149,200, +109,115,216,232, 80,100,101,155, 87, 89,205, 86, 87,251,181,251,156, 45,125, 15,132,116,188,231,204, 99,204,155, 80, 33, 95,201, +109, 95,145, 61,251,153,248,189, 81,192,178,177,190, 39,246,161, 29, 12,247,134,164, 22,117,113,182,179,232, 61,187, 47,144,231, +236,157,167,152,139,229, 72,199,117,139,156,211,161,149, 25,233,116,208,214,118,198,245,190,237, 48,125,214,240, 32, 95,164,133, +240,177,146,185, 68,164,238, 5, 5,165,131, 16,175,157, 9,188,234,184,200,197,214,198,212, 49, 42,217,175,135, 47, 78, 91,130, +187,185,137,198, 78,123,117,121,231,238, 61, 50, 74,188,125, 26, 13,183,122,251,206, 93,250,157,127,245,255,209, 47,255,226,207, +210, 51,215,175,210,147,147, 83,250,218,183,191, 71,207, 46,155,237,102, 89, 20,143, 14, 14,250,235,252,210,207,127,129,190,254, +181, 55,169,158, 61, 71,245,228, 46,157,237,174,208,116,112,101,217,244, 30, 44, 21,248, 67,186,255,160, 45,234,203, 90,179, 59, +165,159,255,252,179,244,198,219, 19,221, 91,254,172,109,106,103,203,207,220, 46,149,220,235,203,134,248,255,252,131,223,164,223, +248,245,127,186,108,186, 39,244,236,149,131,101,179,222, 45, 27,212, 65,143, 74,125,240,240,241, 96,203, 47,255,253,232,201,152, +197,183,138,103,211, 66,158, 58, 46, 86,150,247,115,222, 25,239,219,101,115,107, 11,252,233,178,209,119,147,110,203,187,104, 1, + 30,210,254,217,116,204, 39,107,219,187,129,111,120,249, 59, 77, 81,223,214,249,147,147,221,114,128, 24,185, 13,237,107, 39,109, + 6, 95,207,150,205,242,168,255,189,210,137,120, 76, 79, 78,155,183,253,168,199,145,158, 44, 39,163,233, 76,232,221,247,111,211, +229, 43, 87,232,234,242, 79,131,217,220,189,115,191,191,134,218,187, 5, 67,208,184,217, 76,254,145,180,247,178, 59,111,213,237, +211,190,233,155, 0,172,106, 62,248,166,104,178,166, 87,149,181,135,211,152, 0,203,221, 86, 45,173,172,141,150,151, 13,125,179, + 28,150,218,161,163, 93,179,135, 15, 31,210,127,242,159,254,199,244,197, 47,124,142,222,191,121,151,254,241,255,253, 79,232,241, +227, 71,116,255,254, 29,250, 27,255,237,127, 3, 17,172, 21,170,121, 93,159,214,114, 30, 94,187,152,212,141,164, 29,181,179,229, +125,124,123, 57,148,189,255,254,251,203,189,114,157,222,253,224,102,183, 56, 62, 88,222,219, 76, 55, 71,103, 96,249,219,143,158, +158,117, 61, 67,187,194, 45,193,111,179, 61,167, 43, 71,155,229, 16,120,218,121, 7,197, 28, 89, 37,235, 94, 92,151, 27,210, 88, + 15,223,233,175, 93, 59, 86, 99,238,108,161, 77,250,117, 27,137,136, 50,246, 77, 91,102,143,138, 68, 76,180,172, 54,105, 70,247, +136, 9, 96, 11, 88, 21,106, 46,232,132, 32, 49,206, 50, 68,234, 10, 60,100,154,137,186, 31,176,148,118,165,214,134,151, 10, 26, + 19, 29, 63, 76, 77, 40,183,124,200,137, 23, 44,150, 67,137,137, 61,181,203,237, 92, 87,153, 20, 11, 80,201,172,171,154,117,165, + 74,208, 34, 94,111,172,169,165, 27,185,238,235, 18, 34,227,252, 64, 24,183, 54,172,185,106, 23, 83,193,194,174, 33,235, 48,151, +213,108, 94,146,141,135,147,227,110,127,182, 13,158,227,149,223,248, 99,148, 0, 32, 4,148, 80,142, 75,158,217,237, 85,226, 96, + 77,227, 85, 89,184,167,188, 93,133, 95, 4,225,117,149, 65,173, 55,136,199,190,238,217,244, 50,111,158,147, 18, 61, 35, 70,243, + 6,107,167, 85,216,212, 36,195, 22, 62, 6, 74,158,213,232, 43, 41,185,181,170, 99, 46,159,146,111,232,116, 89, 64, 90,165,103, +139, 73,155,209,209, 90,184,185,246,131, 67,134,242, 58,147,128, 10, 37,150,187,251,251,203,170, 29,143, 39,117,230, 61, 43,229, + 69,214, 13, 94,145, 3,246,187, 25, 89,117,139, 78, 4,111,126, 10,175,102,230,146, 15,187,208,201,216, 27, 82,168,160, 20, 59, + 87,173, 29,125,231,254, 35,250,155,255,243,255, 65,255,249, 95,251,203,244,247,254,214,255,190,108,214, 63,232,173,210,221,242, +166, 47, 31, 30,209,233,201, 19,186,189,108,200, 87,150,251,230, 55,255,241,239,208, 63,251,173,223, 91,254,123,166,127,240,247, +126,131,254,223,127,240, 79,232,213,215, 94,161, 87, 94,126,126,100,119, 47,191,224, 95,254,139,175, 44,155,212, 97,159,111, 95, +186,124,173,231, 70,157,158,159,208, 82,123,210,195, 71, 79,250,230,215, 42,204,155,183, 31,244,248,137, 6,168,105,214,179,246, +247, 63,186,243,136, 14,249, 50, 93, 62,216,208,135, 31,222,166,179,179,167, 42, 32,162,190,193,182,234,244,188,169,214, 15,134, + 93,106, 55,139, 46,138,181,131,101,158, 46,255,180,205,177,173,105,143,207, 39, 58, 95, 42,241, 67,174, 75, 53,184,237,155,163, + 28,110,250,207, 41,203,230,187, 45, 35, 16,166,119, 64,151,159,115,186, 28,108, 58,163, 99,158, 59,215,190, 89,174, 78,207,199, +120,237,228,228,100, 57,136,156,121, 87,161,211,224,101,180,203,219,106,222,243,177,150,205,170, 5,142,156,215, 29, 93,127,230, + 89,122,237,211,159,163,199, 79, 78,233, 51,159,188,188, 44,188, 51,125,231,251,143,250,220,255,242,241, 97,255,252, 90,181,221, +236,117,237,230,106,213,116,107, 73, 47, 63, 97, 84,215,205,243,191,124,243, 89,175, 86, 75,215, 43,180, 67,192, 80,239,239,150, +235,119,176, 84,255,203, 65, 98, 87,251,161,170,232, 33,245,124,217, 8,251,251,224, 97,119,122,248,240,108, 57, 88,237,186,197, +239,215,127,235, 95, 44,159,237,247,151, 10,250, 14,221,126,239,195,254, 26,127,250,139,159,161,183,126,240, 38, 61,247,242,171, +253, 48,113,245,218, 53, 79,194, 76,150,185,181, 72,151, 8,194,146,116,251,151,113,208, 57, 91,222,243,251, 31,126,216,221, 83, +143,159, 60, 93,106,201,218,175,117, 27,167,180,247,217,174,101,235, 8, 93, 59,100,122,225,153, 75,253,176,118,239,209,233,242, +218,199,181,158, 45,184,107,226, 68, 28, 68,129,238, 74,222,170,139,221,172, 85, 48, 3, 34, 91, 34, 32, 78,224, 33,239,223,176, +113,141, 64, 28, 98,167,213, 26, 6,207,207,116,129, 6, 18,132,169,130, 57, 84, 28,137,160, 6, 14, 72,118, 90,152,177,167, 2, +213,197, 45, 88,163, 26, 63,160,197, 3, 87, 71,239,218, 62,180, 41,135, 91,207,146,238, 21,131,190,233,145, 89,171,148, 46,225, +228,205,147, 85,197, 45,123,120,189, 85,197, 69, 23,204,100, 1, 92, 18, 21,241,199, 88,147, 68, 82, 7,223, 46,119,145,180, 5, + 96, 49,188,226, 7,160,144,143,181,242,200, 29, 1,150,248,122, 84, 80,235,145,188, 16, 75,110,197, 59,124,136,202, 5, 44, 99, +242, 13, 91, 96,110,153,196,196,118, 83, 10, 42,147,247,197, 93,152,187,194,107, 67,251,234,180,193,144,109,110,176, 21,113,255, + 50, 68, 39,154,110,128, 24, 80,182, 14,102, 79, 94,107,230, 61, 5, 76,106,116, 72, 98,244,243, 5,240, 24, 74, 52,187,189, 46, +198, 42,115, 56,251,227, 25, 36, 13,156, 5,193, 72,209,108, 1, 29,203, 2,242,220,141,109, 87, 74, 63,188,127, 74, 55,174, 77, +125,145,203,116, 97,206,116, 1,150, 4, 75,221,239, 6,201,190,173,238,130,176, 22, 12, 55,194,201, 5, 95,116,162, 91,109,194, +128, 2, 10, 1, 91, 66,189,194,134,254, 49, 80, 32,204,235,202,115,160, 60, 58, 65, 85,174, 84, 76, 80,148,174, 78,126,235,199, +239,209,195, 7,103,244,191,252,205,191,183,108, 22, 87,232, 11,127,226, 23,186,101,237,244,108,238,145, 39,143, 78,238,211,195, +119,222,161, 47,188,244, 9,122,251,253,155, 75,245,117,141, 14, 46,189,178, 84,149, 66,239,221,190, 69, 63,124,231,193,178,169, +125,111,217, 24, 43,221,184,113,131,222,250,224, 33,125,234,149,163,101, 3,175,116,237, 90,237, 30,241,246, 65,180, 42,253, 59, +111,188,177,108, 86, 91,186,126,137,233,222, 82,173,223, 91,190,231,168,101,155, 47, 47,249,241,242,251,238,221, 95, 54,253,221, +125,250,236,203,215,232,167, 63,247, 34,253,195,223,254, 70,135, 75,181, 78, 2,181, 57,123,111, 75, 47,155,224,178, 24,236, 58, +142,118, 4,116,156, 45, 95, 63,175,197,253,209,237, 57,109,155,111, 59, 40, 92,125,230,152, 90,193,221, 20,240, 71,199,219,238, +139,238, 72,218,222,138,158,187, 34,190, 35,109,151,119,187, 91,170,236,221, 84,151, 13,102,183,124,255,220, 55,159,161,155, 18, + 58,147,168, 6,219,193,228,232,104,211, 43,236, 39, 79,207, 70,171,123,217,116, 31, 60,126,184,220,147, 79,232,202,178, 97,190, +245,214, 59,244, 96,185, 63, 31,220,157,232,234, 1,117, 92,238,182,243,190,169,103,186, 91, 22,120, 19,119,157,212,209, 17,104, + 45,248,254, 25,109,198,250, 50,129,203,162, 46,155,222,184,183,199, 88,133, 33, 66,183,125,182, 35, 57,175,234, 6, 47, 99, 44, +162,243,254,105,217, 56,191,253,173, 55,232,171,127,244,205,229,215,157,209,103,126,226, 39,232,210,114,184,248,218, 27, 55,151, +107,203,244,193,205,127, 78,247,238,220,166, 95,253,213, 95,166, 63,245,203,191,188,108,206, 7,253,119, 12, 62, 25,216,102,250, +235,157, 35,216, 4, 45, 53,250,127, 54, 42,223,141,203,151,186, 78,160,165,225, 53, 69,119, 59, 80, 93,189,122,165,183,219,219, + 65,164,117, 70,118,202, 65,105, 29,135,246, 57,180,141,169,137, 21, 27,187, 63, 44,159,146,236,165, 4, 72,108, 73, 17,150,193, + 41,170,171,145,160,152,213, 79, 71, 7, 98,194,192,148, 18, 41, 52,113,140,135, 75,194, 58,228, 88, 96,244,225,175,208, 86,121, + 20, 9,137,165,162,158,250,236, 18, 91,205, 17, 49,101,178, 29, 52,100, 95, 71, 65,188,209,176,187,232,250,110,188, 2,156, 50, +230,178,171,125,123,235, 97, 84,239, 2,252,114, 3, 1, 8, 90,131,176,114,221,107, 49,230, 83, 29,175,100, 28,100, 98, 7, 89, +183, 82, 97,126, 65,185,117,205, 73, 8, 23, 30, 93,230,253,170,132,149,151,139, 57,234, 68,129, 91,117,229,177,240,126,246,185, + 91, 18, 1,169,133,103, 20,137,185,238, 30,212, 38, 89,212, 34,252, 3, 67, 96, 8, 65, 43, 32,188, 91,123,200, 3,244,195,169, +173, 29,101,152,236, 29,156,236,132, 88, 36,110, 42,113,200, 10, 93, 0,163, 97, 96, 78,227,195, 32,132,129, 5,213,218, 91,190, +217, 21, 79, 32, 74, 57,203, 89, 24,176,254, 80, 50, 97, 19, 59, 14, 43,184, 15,182,184, 19, 36, 2,189,223,203,123,188,119,239, + 9,221,249,232, 54, 61,123,253,181,126,191, 62, 90, 54,141,211,147, 45,189,242,234,115, 61,180, 35,108,167,188, 55,255, 31, 15, + 46,195, 8, 70, 98,195, 95,189,118, 89, 41, 58,121,213,221,241,249,162,228,171,177, 54, 66, 38,123,101,178, 54,238,207,195, 97, +154,230, 65, 16, 81, 57,160,128,113,237,211, 31,157,199,105,115,224,207, 70,251, 25,173,186,125,244,248, 41, 93,189,124,220, 55, + 70,195,150, 30, 28, 76,189, 74, 45,220,172, 71, 83, 95,252, 91, 43, 93,150,106,115,123,220, 4, 79, 59,250,234, 82,185, 63,122, +244,136,110,223,125, 66, 39, 79, 30,247,150,248,227,167, 79,233,242, 39, 94,233,228,183,221, 82,205,190,244,226,243,203,231,241, + 33, 61,120,112,107,169,202,118,244,214,123,111,247,150,113,171,160, 95,123,245,213, 94,157,141, 42,114, 89,240,143,143,151,127, +239,232,248,240, 26,125,242,165,101,131,110, 73, 89, 13, 72,179, 84,241, 31,222,185,211,175,227,219,183, 30,245,141,188,209,223, +234,211, 29,221,188,247,112,204,184,121,180,161,219,107,110,193, 93,231, 75, 37,127,184,108,128,191,240,243, 95,234,239,251,246, +114,200,104, 27,198, 7, 75,149,223, 42,231, 86, 61,190,243,244, 4, 18,242,150,141,113, 89, 5,127,242, 11, 95,236, 21,241, 59, +173,162, 92,158,243,243,167, 79,250, 38,180, 57,156,244,217, 92,238,251,214,214,111, 27,229,178,137,189,250,226, 75,244,116,121, + 61, 79, 78,158,210,189, 7,247,232,206,237,123,116, 89,253,212,247,239,221,235,175,127,183, 92,179,251,143, 31,208,181, 27,207, +116, 15, 62,151,179, 14,226,105,246,170,119,223,127,220, 15, 1,237, 62, 61, 63, 63,233,237,229, 70,201,217,148, 49, 15,111,250, +128,198, 16, 57, 83,159,124,175,198, 21,109,218, 34,101,219,243,119,233,248,210,114,247,140,170,123,154,150,226,140,134, 31,187, +117, 91,100,211, 80,187,203,247,159,143,141,184,109,148,231,149,123, 23,228,160,141, 23,150,215,112,233,248,184,127,182,231,103, +143,150,131,199,227,229, 96,113, 70,175,127,234, 21,154,187,168,172,208,167,126,226, 53,250,221,223,249, 29, 58,186,116, 68,191, +248,167,255, 44, 61, 93,222,107,235,132, 28,245, 89, 60,247, 67,155, 9,180,216, 45, 91, 18,163, 43,221,128,239,221,125,208, 63, +167,131,131,237,242,254, 91, 55,225, 76,199, 16,135,203,207, 60, 89,254,236, 96,169,224, 31,233,232,231,156, 14,151,131, 74, 59, +104, 29, 46,207,236,251,119,118,244,225,173,123,244, 83,248,108,248,198,142,186, 36, 78,112,184,170,161, 47,232,254, 25,237,110, +118,208, 26,195,211,104,196,185, 53,223,187,240, 69,238,252,125, 33,153,128,186,157,247, 2,147, 50, 45, 46,160, 49,242,177,156, +145,108,229,197, 2,116, 21, 3,189,231,237, 94,238,161,118,186,245, 20, 27,159, 39, 8,120, 85, 69, 85,135, 43,203,148,165,197, +128,172,127,108, 74,217, 74, 36, 56,131,151,149,178,154,176,114,196,247, 97,179, 17, 73,118,141,212,226,149, 11, 72, 52,235, 57, +252,122,166,184, 22,170,165,185,208,170, 97, 46, 25,235, 28,194,144, 28,148,177, 63,208,229,100,178,231, 11,196, 72,123,172,111, +216, 24,188, 43,194, 43,196, 67,201,219, 1,175,171, 72,202,176, 30,217,155, 86,135,205, 73, 96,195, 39, 0, 31, 8, 84,206, 73, + 64, 71,195, 42, 65,200,211,167,140, 74, 20,255,108,101, 79, 57,203,171, 49, 13,102,159,227, 44, 63,226, 34, 57,133,117, 68, 46, + 68, 22,172,161,200,173, 85, 94, 77,140,115,178, 44,198,223, 94, 54,157,174,104,237, 28,228, 3,122,241,165,103,199,188, 82,246, +106,239,116,157,115, 74,182, 0,159,128,178,229, 11,179, 4, 86,206, 98,230, 60,106, 16,168, 92, 82,182,246, 62, 89,198,105,134, +185,145,200,123,174,143, 20,246,177,103, 9,145, 36, 60,109, 98,169, 15, 62,186, 71, 95,251,195,175,209,201,227,199,125,209, 57, + 90,170,166,135,143,206,232, 95,254,254,215,232, 19,175, 62, 67,175,188,240,124,223, 56,218,134,213, 90,168,239,190,247, 17, 93, +186,116, 76,239,125,112,179,115,209, 79, 78,159,118,213,120,155,129,222,184,126,157,238,220,186,221, 85,202, 79, 31,223,239,139, +200,249,252,168, 1, 47,232,123,111,254,104, 57, 4,108,232, 75, 63,243, 69,122,231,253,119,232,253, 15, 63, 88, 42, 81,238,139, +247,203,207, 94,239,149,229, 11, 47, 63,223, 55,248,183,223,123,151,126,225,231,126,142,126,250,139,175,119,123,217,251,239,189, + 55, 4, 83, 77,179,214, 54,163,229,243,188,251,100, 71, 15,159,158,211, 75,207, 11,189,250,220, 33,221,186,119,178,188,142, 43, +203,207,254,112,217, 56, 31, 46, 27, 95,219, 32, 78,151,138,121,211,159,143,207,127,242, 83,244,133,207,126,169, 87,189,215,151, + 42,240,199,111,253,136,110, 45,135,130,151, 94,122,137, 62,243,217, 47,208,131,135, 79,250,239,232,155, 92, 79,147, 35,135,145, + 92,191,122,157,222,251,255, 9,123,179, 38, 73,210,235, 74,236,126, 30,251, 30, 25,185,103, 86,214,218, 59, 26, 4, 64,144, 32, +169,225,112, 25,206, 72, 38, 13,231,113,100, 50, 45, 35, 51,201,140,210,131, 30,244, 54,166, 23,189,201,244, 19,180,189,137, 47, + 35,211, 66,210, 40,137, 59,129, 33, 0, 98,237, 70,119, 87, 87,119,237, 85, 89,185, 47, 17,145,177,175,238,159,238, 57,159, 71, +132,123,100,246, 8, 48, 88, 55,170, 50, 35,220,191,229, 46,231,158,123,238,249,185,156,158,158, 17,254,157, 34, 66, 80,135,105, +187, 66, 4, 96, 48,236,234, 90,166, 89, 3, 47, 22, 75, 82,211,247,185,108, 52, 9, 43,255,244,231, 63,103, 32,147, 8, 57, 38, +248,253,177, 58, 74,100,252,107,187, 91, 82, 42, 87, 53, 0,106,104, 54,159, 32,163, 63,107, 83,114,112,112, 68,231,203, 90, 49, + 38,215, 37, 28, 65, 11,217,225,175,127,231,215, 72,166, 59, 62,121, 67,116, 97,164,235, 63,232,143, 53, 48,211,191,247, 2,214, +255, 1, 73,116,154, 86,110,237,221,147,219,123, 15,244, 89,234, 82,191, 60, 97, 50,214,188,106, 17,185,192,153,203,233,179,122, + 73,144,229,242,178, 90, 42,115, 47,128, 56, 28, 29,237,147,237,191,178,190, 45, 7, 71,111,228,178, 61,145, 15,179,105, 30, 37, +244,135,175,174, 84,229,221, 7,219,186,159,154,189,127,242,133,220,125,235, 93, 68,134,242,211,191,251,129,174,229,109, 25,233, +242,221,210,236,190,166,231, 2, 1,195,252, 62, 68,208, 83, 56,196,225, 72,157,242,153,190,187,158, 23,112, 19,134, 26, 80,161, +158,190,190,182, 33,206,247,184, 76,190,211,237,177,246,127,213, 25,170,243, 15,164, 92,204, 51, 40,203,105, 32,112,248,230,208, +237,155, 68,148,212,194,118, 54, 99, 23, 18,212,179,160,119, 62, 41, 47, 34, 49,107,231,193, 70, 84,147,194,198, 5,165,140, 93, + 76,131,156, 79, 66, 91, 30, 24, 19, 23,172,242,150,201,210,198,196,128, 83, 27, 75, 24, 35, 73,217, 53, 49,161,235,200,160,141, +114,100,226,240,110,124,216, 79,116, 26, 37,224,247,241,104,200,131,186,104, 77, 11,135, 86, 24, 19,155,245,234,121,179,254,208, +104,221,194, 44,209,205,111,168,179,219,155,250,170,227,206,102, 89,195, 97,121, 66,154, 21,145,175, 68, 70,191,226,207,230,186, +222,230,122, 77, 94,174,129,220,246,218,144,183, 27,131,167,165,218,172, 89,106, 89,139,101,150, 75, 10, 9,209, 26,184,149,175, + 16,123,137, 69,116, 17,150,183, 68,231,119, 71,199, 54,134, 71,115, 57,184,176, 81,206, 65,132, 40,102, 34, 76,203,232, 48,134, +249, 1,154,237,136,183, 56,116,158,131,219,162,140,111,179, 52, 72,196,196, 68,139,108, 28,142, 54,114, 19, 47, 62,148,152,149, + 69,144, 16,157,116, 55,131,155, 35, 80,130,245,150, 49,239,101, 10,129,231,234, 88,250,207,218,218, 26,179,141,250,217, 69,136, + 94,121, 52,156, 54,146,200,122,203,207, 52,191,208, 54,242, 51, 17, 90,157, 89, 18,192,185,214,219, 23,137,233,140,137,193,131, +113, 0,199, 92,171,172, 72, 92, 52, 50, 18, 32,197,175, 87,172,154, 30, 11, 80,227, 82,159, 51,131,133, 26, 44,152,209,231, 23, + 93,249,232,167,143,229,249,147,135,146, 47,173, 73,185, 82,150,106,109, 77, 58,237,190,252,235,151, 7, 98,224,160,187,109, 66, +198,125,205, 40,239,221,187, 39,153,234,134, 60,121,181, 79,180,163,217,188,144,175,189,247,158,188,251,246, 3,121,113,112, 34, +165,106, 69, 6,154,153,163,182, 62, 25,251,180, 31, 67,140,199,213,204,244,119,191,243,235,242,197,179,167,234,120, 79, 73, 50, +203,167,147, 82, 82,199,208, 83, 47,176,183,179, 75,146,212,199, 15, 31,178,126,140,204,176,221,238,168,211, 26,201,235,227,115, +117, 58, 25,201, 21, 50, 26, 60,128, 11, 97,228,221,189, 21, 25,108,149,208,130, 43, 63,126,116, 44,187,107, 5,249,119,255,225, +183,228,187, 63,253, 76, 14, 27,109,205, 70, 49,104, 37, 45,255,206,239,254, 3, 73, 77, 64,146, 27,240,157,171, 26,144, 32, 27, +172,119, 58, 34, 80,136,211,231, 64,159,252, 74, 41,173,153,190, 71,167,150,201,120, 50, 38, 49, 42, 33, 43,229, 50, 17,132,215, +251,251, 50, 28, 78, 92, 54,170,235,150,201,228, 36,173,118, 47, 87, 72,203, 63,251,167,255,190,188,247,245, 15,120, 46,191,124, +250, 70,254,252,143,255, 70,222, 28, 29,232,179,247,229,247,126,231,119,164,154, 75,203,133, 58, 97, 56,213,115, 13,162,126,249, + 55,126, 87,108,166, 36, 63,251,232,115,233,168,147,204, 36, 69, 54, 87, 43,178, 89, 83,231, 90,201,138, 76, 6,154,189, 15,184, + 70, 96,241,187, 64,163, 47,197,210,138,100,210, 57, 57, 56,124, 35, 71, 7,207,100,125,243,182,172,175,174,201, 40, 7,146, 97, + 64,187,236,147, 68,149,102,253,126,125,117,131,142,243,226,252, 68,166,227,190,108,109,172,106,224,144,162, 45,207,103, 82, 82, +219,124, 75,131,179, 11, 89,169,173, 48, 24,129, 56,208,241,241,190,244, 58, 23,178,182,126, 91, 86, 86,106,114,170,129,137, 32, +120,211,117,246,213, 31,160,238, 95, 42,174,200, 15, 63,125,163, 78,213,211, 32,161, 43,127,248,191,252,207,242,246,187,239, 75, +160, 14,248,163,159,125, 74,114,227,223,125,247, 7,242, 47,254,179,255, 68,138,156, 31,226,207,237,199,108,252, 50,238,248, 72, + 29, 56, 8,114,173, 78,155,129, 86, 79,207,140,155,114,150,208,239,233, 75,187, 7, 94, 65, 90,179,254,137, 35, 88,234, 58, 93, +105,240, 8, 88, 25,157, 12, 43,165,172,164, 83,110,236,173,245, 76,188,252,107, 35,200, 87,100,110, 67,164,224, 40,193,141,178, + 34,225,125, 15, 36,150, 76, 93,155,193, 21,227,116,153,235, 26,244, 98, 98, 82,173,215,145, 56,115, 93,119,195, 44, 75, 92,221, +208, 69, 21,245,153,243,182,113,137,145,158,173,216,165,166,176,197, 26, 36,207, 78,143, 23,234, 94, 33, 11, 19, 14,220,245,217, +133,109,244,225, 88, 68,127,154,116,145, 37, 91, 37,146, 75,128,162,145, 27,208,139,152,251, 52,215,214,199,124,133, 0,147,141, + 57,192,121,239,119, 32, 55, 19,207,162,179, 91,205,130,153, 24, 53,174, 54, 10,148, 88, 27, 79,246,151,159, 39, 38,120, 18, 37, +212, 45, 88,253,102, 25,113,136,136,237,199, 29,246, 13, 80,188,185, 46,173,227, 6,217,135, 25,221,156,160,101,226, 34, 58, 51, +246,119, 68,106,119, 14, 69, 93,235,187,151,216, 76, 97, 99,108,204,113,198,213,217,162, 34, 14,241, 89,233,114,147, 51, 55, 94, +188, 63,117, 9,197, 95, 60,245, 13,107, 16,209,138,240, 98, 51,198, 23,178,175,139,222,250, 40,177,237,250,208,155, 57, 92, 6, +248, 53, 28,215, 88,170,150,229,214,157, 77, 18,112, 82,169,132,212,207, 47, 9,189,139,231,221,208,204, 22,159, 82,230, 45, 15, +128,155,115, 43,174, 19, 17, 99,164,150,235,230, 32, 22,240,154,101,217,208,229,224,126,110,152,100, 49,168, 33, 10,163,219,155, +244, 29,162,229,170,104,159,172, 35,187, 1,106,253,249,199,207,229, 82, 51,178, 47,158, 31,200,203, 87,175,229,214,253,247, 36, +165, 25,219,139, 55,199,114,220,120, 69,193, 15,163, 25, 80, 81, 51,247,213, 21,205,160,213,145,252,210,183,126, 89, 68,157,202, +163,167,251,172, 15, 39, 51, 25,121,112,255,190,124,240,254,187,242,250,232, 84,141,242,136,182, 32,145, 46,177, 37,203, 51, 32, + 94, 25,169,150,242,242,107,223,252,186,124,252,232, 11,205,196, 79,165,148, 47,170, 3,197,207,102,229,188,217,145,175,191,251, +150,124,249, 98, 95, 94,189,121,195,119, 68,118,134,182, 46, 24,245,130,159,146,146,102,103, 59,234,180,225, 80,251, 19, 95,131, +128,169,220,201,150,100,163, 86,150,241,112,160,137,105, 85,190,120,117, 46,207, 15,206, 52,107,157,202,239,255,246,175,202,127, +244,159,255, 7,172, 73,223,219,221,148,239,254,221,103,242,191,254,225,159,202,231,207, 94,200,183, 63,120,143, 48, 51,236, 84, +194, 3,219,123, 34, 85,111, 34,255,252, 15,254, 99,249,225,247, 62,149,191,249,235,191,149,111,125,251, 61,249,111,254,229, 31, + 72, 46,151,145, 63,255,219, 79,228, 7,127,253, 19,214,212, 7, 26, 65,220, 86,199,248,214, 78, 69,188, 73, 75,254,211,255,242, + 15,228,155,223,252,144,142,203,157, 53, 79, 62,253,249, 99, 41,228,242,146,202,100,101, 28,140,229,228,232, 88,250,233,137, 58, +103, 13,138, 90, 77,249,167,255,236,247, 52, 3, 94,151, 31,252,252,137, 6, 40, 61,214,214,173, 58,177, 92, 14,165,142,130,108, +175, 23,165,172, 65,192, 79, 63,126, 41,101, 93, 55,148, 7,138,185,172, 58,245,172, 84,215,246,152,225, 67,147, 94,188,140, 20, +203, 21, 61,203, 70,122, 26, 4,140, 39, 46, 56,197,244, 56,212,159,215, 86, 87,117,125, 51, 68, 35, 70,186, 70, 64, 60, 74,185, + 4,185, 2,153,148, 58,200,242, 22, 51,223, 78,251, 82,106,171, 85,102,198,200,148,207, 78, 94,107, 64,144, 86,135,190,174, 54, +125, 42,171, 53, 93,231,181,164,124,249,124, 95,110,109,175, 75, 33,155,146,253,227,134, 84, 53,248, 43,106,252,241,206, 47,127, + 77,158, 60,125, 42, 95,124,241, 84, 3,131, 60,127,239,193, 78, 77, 3,132,142,180,154,117,253,255,247,244,115, 12,203, 0, 86, +108,108,160, 13, 2, 45,148,122,128, 56,160,220,211, 31,244,244,188,248, 14,134, 71,134, 15,127, 45,250,119,253, 17,147,199,172, +174, 21,130,188, 41, 74, 50,104, 69,212,231,156,132, 74,129,198,198,233, 34,230,134,201,151,118,121,198,122, 56, 87,222, 51, 18, + 87, 44,181, 81,229,184,232, 32, 39, 27,243, 49,102,169,149,218, 46,161,171,230, 26, 89,220, 92,215,151, 88,190,242, 54, 42,217, +188, 44, 75, 17, 77, 62,227,227,202,103,153, 89,204, 28, 92,107, 34, 66,166, 62, 30, 47,122,245,193,176,156, 59,243,197, 76,114, +180,176, 76,216, 35,233,156, 61, 34,196, 52,251, 30,157,147, 95,212,148, 23,144,129, 93, 86,172,136,150,145, 35, 53,101, 27,113, +198, 70,226,227, 8,227,140,226,184,195, 16, 43,215, 20,140, 76, 44,229, 95,146,156,141,214, 48,163,189,244, 38, 46, 3,187,236, +237,141, 68, 32, 25, 19, 87, 67,179, 18, 37, 49, 73, 68,135, 91,174,215,144, 99,125,199, 54, 46,191, 40, 17, 34,162, 23,129,169, +195, 89,217,203,237,243,113, 52,192,222,172, 74, 25,229, 31, 44, 75,188, 70,179,108, 47, 30,118,153,175, 32,166, 95,139, 44,163, +250,254, 75,145,173,137,136,113,196,231, 25,152,101,221,153, 69,251, 89, 12,174, 50,243,174,128, 88,223,120,116,180,162, 89, 76, + 28, 3,195,246,178,209,145,177, 58,169, 91,239,220,118,228, 34,253,171,141,205, 21,185, 56,173,203,145, 26,168, 7,111,239,198, + 37, 70,227,177,218, 13,101, 13,145,165,193,106,241,181,184,198,122,188,169,228,179, 20,244, 93, 35, 7, 46,144, 33, 19,205, 62, +150, 2, 92,123,131,246,129, 93,122,143, 89, 75, 41,136, 96, 24,154, 50,213, 12,116,255,205,185,124,247,207,190, 71,173,141,149, +213,117,205, 62, 11,116,166, 3,205, 28,253,241,136,144,104,161, 80,148,180, 58,238,163,227, 3,121,239,237,183,100,108, 82,234, +164, 78, 56,255,188,217,110,201,131,219,183,228,238,157, 29,121,121,124, 66,242,153, 64, 64, 70,191,163, 86, 46,200, 64, 29, 71, +187, 51,162, 67,255,198,123,111,203,207, 63,127, 36, 23,151,151,178,177,178,194,108,178,221,237, 74, 71, 51,180, 7,119,110,201, +195,167,207,229,228,226, 82,157,125,142,207,142, 22,184,190,102,106,111,223,189, 45, 21,205,206,211,126, 87, 29,149,145,102, 7, + 45,107, 73, 73,150, 83,114,217, 65,107, 88, 6,124, 56, 34, 49,107,165,164,116,250, 86, 86, 87,107,114,117,213,150, 63,250, 87, +255, 15,121, 16, 96,115, 55, 52,155,172, 22,213,129,123, 37, 41, 39,187, 82, 46,175,203,239,253,131, 95,149, 71,234,228,225, 36, +199,154, 53,255,223,127,242, 55,210,110,245,229,157,119,238, 73, 71,127,255,191,251,239,255, 39,121,247,254, 45,117, 88, 7,114, +161,129,135,151, 12, 52,139,206,129, 30, 39,199, 23, 45, 73, 39,124,249,219,239,254, 88,254,254, 39,159, 57,242, 28,225,113, 35, + 31,255,226, 75, 66,224,158, 9,164,156, 47, 73,165, 86, 85,103,148, 86,199,184, 34,231,103, 39,242,242,240, 92,170,221,169,124, +249,228, 53,217,233, 8, 46, 54,170, 26, 4,120,190,188, 58,189,146,213,178,187,212,105, 13, 12,144,169, 3,237,104, 15,221,188, +249,158,254,211,239, 95,176, 60,144,212,128,232, 74, 29,246, 91,223,249, 80,118,238,238,200,163,207,158,168,227, 28,177, 52, 2, +162,217,218,214,109,174, 33,160,248, 84, 38,199,224,234,188,209,147,156, 6, 75, 22,153,124,144,150,250,229, 17,255,190,213,108, +170, 99, 79,147,164,150, 74,231,230, 25, 31, 74, 42, 23,141,190,220,221,219,146, 42, 28,179, 6, 4,155,187, 85,169,148, 39,188, + 87,103,151,109,169,150,115,242,222,251, 31,202, 71, 15, 95,168, 35,238, 72, 38,105,245,188, 28,201,246,214,134, 52, 79,143,228, +243,135, 95,202,206,222,109,249,198,135,239,209, 81,219,176, 77, 15, 65, 33,178,126,140,177, 69, 90, 12,135,142,192,194,231, 25, + 29,178, 54, 79, 88, 93,127, 22,200,143,135,224,101,104,200,122,207,166, 12, 9,135, 94, 90,253,203,116,192,103,193,218, 79, 35, + 42,143,241,196,217,198, 80, 86,160,180, 65, 68,136, 39, 62,163,196, 46,181, 56, 75, 92, 52,109,222,102,101, 35,131, 11, 99,194, + 38, 17,229,231,153,239, 10, 34,227,194, 35,137, 78,196, 7, 45, 90, 87,157,194, 94,212, 68, 4,145, 18,244,130,246, 21, 23,218, +152, 39,159,209, 97, 82,126,164,165, 46, 44,113, 39,167,236,211,156, 13, 21, 9,199, 52, 70,190, 12, 16,164, 31,178, 17,103, 25, +253, 84, 23,120, 52, 26,210,217,131,204, 1,200, 11, 27, 56,251,159, 55, 15, 12,140,196,249,242, 17, 98,145,141, 8,139,217, 72, +173,124,137,102,183, 76,251,137, 18,192,254,127, 53,150,111, 16,162,153,123, 26, 99,150, 21,104,150, 48,133,165,249,210, 75, 98, + 2,118,201,217,216,136,230,175,124, 21, 7, 98, 30,252,120,145,182,189,133,131,182, 17, 88,216, 70,130,158,121, 59, 90,140,214, +111,174,179,237, 99, 58,146, 81, 56,223,187,214,199, 45, 17,102,121, 44, 68, 49,215, 58,226,231,109, 5, 54, 22,176,152,235, 45, +140,246,134, 82,177,141,194,207, 33,153,198, 91,230, 28, 92, 39,195,221, 12, 91,219,121,191,251,252,239,244,172,129,176, 3,152, + 15, 1, 10,234,118,179,254, 64,176,170, 49,151,187,223,237, 57, 34, 86, 54, 53,111,205,145,165, 18,207, 77,209,140,141,144,210, + 36,130,106,152,104,255,135,185,169, 6,100,174,195,250,198, 46, 77, 22, 12, 37,103,103, 60,145,217, 12,234, 25, 87,101, 41, 51, +143,149,170,110, 4,171, 2, 58,184,222, 96, 34,127,252,167,223,151, 71,143, 30, 74,183,217,160,147,255, 64, 13,242,235,227, 11, +205,114, 15, 41,224,225,251, 99, 53,174,234,140, 43,171,124,151,227,227, 67,205,198,223,146,214,200,215,224,232,132,153, 62,218, +160, 62,124,231,129, 20, 75, 5,205,244,247,201,126, 55, 28,200,101,165,209,184,148,245,114,150, 68,183,141,245,154,188,255,224, +182,124,242,229,151,210,104,247, 36,157, 74,107,144,144,101,134,134,108,108,123,125, 69, 51,252, 99, 57,175, 55,200,122,199,223, + 99,191, 18,154, 61,183, 59, 93,217,215, 0, 2,245,211, 86,179, 47,201,246,132,109,111,141, 43,119,102,191,118,127, 83, 78,175, + 70,242,248,229,165, 60,216,204, 74,187,121, 41,173,110,160, 65,198, 29,102,173, 72,224,166,154,148, 60,127,245, 82,131,132,177, +236,221,186, 37,157, 86, 67, 86,239,175,202,202,230,150,156,171,227, 6,249, 13, 33, 78, 95, 51,255,230,235, 35,201,169, 67,204, +164,211,236,197,175, 31,156,203,211,199,251,146, 72, 3,150, 31,186,204, 80,109, 27,216,234,151, 19,167, 17,255,248,255,248, 11, +246,184,227,229,225,132, 18, 6,245,233, 44,167,206, 13,135,125,125,246,162,102,191, 99,201,175,228,164, 92, 91,149,166,158,181, +239,253,240, 99,169, 86,215,244, 44,166,153, 61,119,116, 45, 46,154,154, 89,151,243,132,157,209,181,134,172,117, 99,173, 34,143, + 95, 53, 66,144,216, 74, 65,159,173,217, 62,209,191,119, 44,113, 64,249,141, 86, 71,126,248,175,127,164,251, 0,198,126,146,103, +123,162,255,212,147, 45,135,251,175,185,150,133,124, 94, 42,186,134,189,254, 80,122, 35, 43, 67,181,213,222,160, 47,167,141,103, + 46, 16,209,192,225,252,178, 33,117, 93, 88,212,191,141,201,161,139,149, 61,233,112,178,229, 98,142, 78, 53,147,178,122,143, 58, +242,248,197,144,235,239, 50, 92, 43,159,127,121, 37,187,187,187,122,119, 38,146,205, 23,229,248,188, 33,181, 90, 77, 6, 99,253, +153,230, 80,142, 14, 78,101,216,214,204, 94,223,111,181,182,226, 38,221,105,144,116,118, 81,151,195,163, 83,185,212,128, 2,240, +124, 89,159, 19, 65, 94, 90,147,193,130,102,226, 8,250, 70,163,177,107, 75,156,232,119,250,234,192,115,154, 40,234,207, 54,175, +122,114,107, 43,163, 63,103,228,213,209, 72,131,197,134,174,101,158,201,164,137, 36, 51, 86,150,120, 75,243,254,244,104,139,112, + 76,168,126,225,116,130,200, 64,176,232, 52,199,153,173, 15, 34,156, 47, 27, 29,134, 20, 78,117,179,145, 14,167,120,223,235,130, + 79, 99,151, 84, 27,109,212,122,216,200,148,204, 37,253,244, 40, 76, 31,229,205,121, 70,226,179, 43,162,101,106,167,219,145, 68, + 95, 36,198,222,161,149,197,243, 82, 98,130, 81, 76,202,174, 92, 72, 19,202,154,147,167, 96, 62, 38,174, 33,127,162,255,141, 66, + 0,136, 30, 19,212,102, 78, 81,228, 96,230,228,147,252,103, 50,140, 71, 34, 6,202,198,179,141, 32,214,187, 46, 49,102,115,212, +248,218,232,232, 81, 27,255, 57,187, 60,215,125, 94, 35, 53,241, 61,149,101,131, 25,231, 50, 71, 7,207, 44, 19,186, 36, 54,211, +122,161,167, 28,155,206,102,174, 15,108,177, 49,118,122,124, 80,130,141,169,163,153,101,233,249,249,204,110,123, 83,157,126,246, + 14,161,232,204,172, 46,190, 60,179,219,218,101,152, 40,194,120,143,126, 97, 76,123,220,196,107,229,178, 52,109,196, 46,177,254, +103,251,224,153,235,227,110,205,114, 79,187,137,197, 87,209,210,198, 60,144, 51, 81,185,152,184, 96, 44, 30,225,244,232, 82, 46, +207, 26,110,152,199,108,102,248, 92,192,195,211, 12, 38, 37,163,158, 26, 42,205, 50, 54,182, 87,101,123,119,237,218, 56, 95,115, + 3,148, 21, 15, 50,204, 66,244,194, 68, 46,230,146,144,208, 87, 49,100, 77,172,151, 63, 74,220, 48, 75,162,137, 38,222, 85, 18, + 69,170,230, 80,156,229,216,202,185,154, 94,152, 45,192, 56, 67,134,179,219, 27, 74,179,126, 41,141,179, 11,169,170,147, 41, 21, + 75, 84, 84,235,116,122,210, 83, 35, 26,248,174,247,186, 82,174, 74,167,219, 18,171, 78,254,193,131,119,228, 74, 51, 42, 24,126, + 60, 87, 95,157,202,189,189,109, 66,173,111, 78,206, 8,209, 6,225, 36,171, 64, 51,197, 82, 78, 51,251,243, 75,169, 85, 74,178, +177, 90,149, 31,127,242,144, 65, 83, 90,237, 4,122,165,209, 75, 93,200,166,101,119,163, 38, 79, 94,190, 86,199,212, 34,108, 12, +167,136, 25,217,200,210,240,186,103,154,213,131,209, 14, 39, 11,114, 86, 33, 87, 32,243, 59,175,206, 16,250,223, 63,250,172,163, + 89,103, 70, 29,142, 47, 31, 63,111, 73,175, 53,144,245,234, 72, 51,251,156, 60,125,217,213,224,161,197,218,121, 58, 87,212,119, + 45,200,169, 58,145, 98,169, 42,173,160, 44,231,175,223,144,189,158, 85, 59,132, 62,245,161, 58, 15,236, 31, 2, 22,124, 63,254, +147,162,131,240,248,188,200,110, 39, 65,142, 25, 50,251,230,141,165,195,244,244, 89,138,250, 25,200,196,224,164,241,119, 35, 72, +153, 6,174,131,192, 22, 93,141, 27, 90,241,231,167,231, 82,215,224, 5,136, 72,166, 80, 96, 79,118,253,234, 74,250,189, 62, 97, +242, 23, 89, 16,213,140,252,240,179,182,252,250,135,219,178,165,129,192,103, 79, 78,232,120, 77,210, 48,120,152,241,184,160,172, + 71, 51,173,166,119,164,206, 78, 63,145, 89, 58,187,151,244,189, 70,158,107,209,131, 93, 77,169,189,237, 99,112,141,102,189,105, +194,215, 67,238, 23,222, 13,106,114,236, 87, 7, 41,109,198,149, 98,189, 59, 65,201, 84,212,178,217, 2, 72, 2,161, 67,238,146, +211,128,200, 4,146,185,169,239, 50,233,137,245,184, 94, 31,126,240,129,116, 7, 67,146, 17,225, 55,158, 60,219,151, 96,116, 37, +223,120,247, 3,121,242,217, 39,116,244,253,137,165,254,126, 87, 51,243,164,190, 16,156, 58,191,115,109,157, 8, 17,122,212,193, +242,135, 14, 59, 8,154, 40, 3, 37,197,215,181,183,148,232,205,166,145, 52,122, 26, 8,245,116,109,167,146, 73,164,229, 47,254, +242, 71,114,120,240, 82,126,255,247,255,109,249,230, 47,125,192,119,159, 13, 97,185, 94,146, 90,192,129,158,141, 56, 80,107,174, + 35,105,145, 17,116, 38, 50, 64, 44, 94, 93, 51,215,147,162, 89,201, 90,174, 11, 65,153,175, 34,194,134, 53, 71,151,211, 4, 17, + 62,153, 9,187,176,108,124,100,243, 77, 0,224, 76,147, 37, 6, 83,204, 62,193, 61,116,242,184, 62,148,169, 77, 74, 57,231,200, + 41,122,203,195, 94, 70,247, 43, 16,240,128, 99, 47,230,210, 17,118,178, 51, 36, 65, 8, 35,216,185,222,115,192,218, 10,234, 65, + 94,120,129, 88,215,130,244, 95,161,200,154,146,241, 34,181,195,101,237,171,101,253,247, 89, 38, 27,165, 22,196,224,145, 37,177, +172,165,249,237,203, 60,132, 57,195,221,204,154,245, 69,162,131, 18,174,183, 41,221,212,158,102,226,179,201, 67, 41,208,184, 50, +156, 68,250,186, 35, 99, 55,231, 61,225, 86,226,168,251,162, 53,227, 90, 11,115,116,230,134, 72, 92,241, 40, 70,108,140,210,220, +100, 62,153,205, 70, 24,251,198,196,213,200, 22, 67, 24, 76, 44,136, 49, 17,249, 81,179,220, 55, 41, 18, 83, 82,138,139,157,216, +107,226, 67, 49, 50,219,146,196,238, 98,156,168,204, 5, 31,174,105, 26, 24, 19,227,109, 44,184, 19, 16,253, 8,228,236,244, 74, + 38,106,196, 16, 53, 67,246, 50,151,207,204,215, 19,231,185,172,217,195,153,102, 7, 48, 66,111, 94,157,232, 57, 68, 77,176,232, + 70, 10, 71, 51, 95,179, 68,102,177, 18, 31,210, 18, 27, 77,187, 20,252,197,198,187,154,136,190,129,137,147, 61, 35,229,165,232, +144, 26,107,151,137,114,222, 53,102,253,172,237, 14,117,108, 55, 99,217,204,207, 51, 12,196,161,174,195, 31,255,159,127, 38,159, + 62,121, 42,208, 69, 3,187,184,186, 82,147,231,111,142,212, 25, 76,217, 11,108, 53, 96,119,130, 34, 85, 57, 63, 59,101, 70,244, +246,123,239,203,241, 69, 67, 51,244, 22,159, 21,114,171,183,119,182,164, 80,200,200,243,253, 3,231, 68,130,128,193,249,122,165, + 34,154,126,211,168,227,144,173, 84, 75,242,179, 79, 31, 50, 67,192, 93, 71,240,142,224,106,119,125, 93, 42,154,225,255,228,211, +207,228,170,213,166, 13,240,194, 30, 99,144,163, 40,107, 74, 61,244,140,254,121,130, 89,118,119, 4,145,150,161, 6, 6, 89,125, +211,169,212,242, 9, 25,168,145, 31, 34,131,211,140, 9, 26,225,235,111,125, 67, 63,123, 67,146,133, 18,225,224,122,179, 37,117, + 13, 98, 90,157,145, 58,159,190, 58,214, 43,249,231,255,222, 63,150,131,147, 35, 61, 78, 62,153,222, 11, 68,199,253, 43, 50,114, + 8,222,192, 62,161, 46,142,118,170,124,214,233,171, 63,200,173,202,155,211, 38,237,215, 72,157, 96, 86, 29, 77,187, 63, 33, 90, + 9,135, 51, 26, 76,136,254,128, 39, 0,111, 59, 85, 7,181,170,107, 2, 97,152,253,227, 51, 57,189,172,235,179,106,112,163,142, +184,221,233,104,160,210,231,120,209,218,202, 10, 71,128,154,144,151, 82,206, 4,242,139,135,207,229,131,183,110,107,208,149,145, + 82, 33,203, 59,139, 30,246, 36,209,166, 44,185, 2,208,195,199, 48, 25,216, 96,148, 74, 32,164, 52, 13, 66,142, 7,108, 43,136, +203, 12,146,250, 76,168, 16,188,120,214,141,200, 70, 82,149,207,166,217, 18,135,179,158, 6,210, 2, 46,131,174,115, 54,227, 8, +183, 94,200,222,166, 86, 15, 90,245,216,114,232, 81,240, 6,117,109,204,155, 71,134,141, 99,134, 32,240,190, 6,122, 64,112,158, +190, 58,146,170, 6,116,251,111,222,200,197,197, 41, 17,136,102,227, 82,146,217,170,180, 71,129,236, 31,236, 83,177, 14,107, 58, +214,231, 70,173, 29,223, 3,165, 64,180, 64,102, 52,208, 6,124,223, 1,178,160,123,143,224, 1, 45,124,183, 55,171, 68,127,218, +186,167,121, 13,126,140, 6, 20,245,203,145,108,110,237, 74, 93,207, 17,214, 99, 4, 30,200, 44,231,182,139,123, 17, 11,178,109, +228, 46,205,147, 63, 47, 54,166,116,230,135,162,217,110,172, 54,111,108,204,134,199,234,223, 49,187,126,173,118,184,164,177,177, +228,164,231, 8,113, 50,142, 60, 47,203,128,207,109,255, 66,167, 63, 76,213, 23, 3, 96,230,188,168, 8, 53, 0,240,251,209,113, + 93, 70, 26,229,237,108,228,101,119,173, 40,187, 43,249, 80, 26,208, 25, 32, 79, 13,227, 4,103, 7, 12,120,254,119, 33, 54, 67, + 41, 69, 40, 47,169,209, 24,104,164,142, 99, 50, 24, 56, 37, 32,136, 6,224,162,215,202, 16, 29,232,201,235,131, 19,141,254,183, + 52,146, 46,107,246,148, 9,167, 30, 69,154,135,236, 66,101,199,216, 27,152,128, 17,184,220,204,152,100, 75, 13,233,139, 31,241, + 34,180,123, 19,135,172, 99, 53,143, 5,219, 57,214, 30,110, 23,144,104, 20, 94,181, 33, 27, 60,174,231,110, 99,146,159,241, 58, +121, 20,241, 55,203,177,193, 82, 43,194,117,137,117, 19, 21,127, 89,250, 76, 79,194, 6,228, 57, 20,180,232,127, 95,232,249, 47, +186, 24,226, 12, 76,115, 3, 35,115, 65, 58,139,214,169, 34,243,190, 34,202,124,215,152,113,115,245, 50,185,137,200, 25,229, 66, +196, 26, 6,194,183, 90,238,219,151,197, 60,128,197, 16, 4, 19,249,243,197,243,227, 28, 1, 82, 93,219, 92,151,186, 58, 39,100, +139,179,178, 89, 2,189,186, 26, 80, 22,213,240,194,200, 53,245,239,125,223, 70, 56, 35,145, 0, 99,233, 82,222,164, 3, 49,159, +133,108,150,186, 50,204,114,171,166, 93,136, 38, 93, 51, 5,178, 52,115,218,196,196, 95, 36,210,142,102,101, 65, 6,196,123,251, +204, 34,253, 24, 70, 7,131,136, 76,240,203, 39, 47,229,232, 76, 13,171, 73,170, 67, 95,227,251, 94,129, 89,206,150, 52,205, 40, +199,200, 70, 53,227,171,148,101,208,107,147,108,117,235,246, 93, 57,209, 53,105,181, 91,106,120,135,116,248, 27,235,171,180,150, +227, 65,155,131, 81, 32,221, 89, 43, 1,178, 46,211,240,247,244,126, 3,133, 1, 44, 11,200, 29,223, 3, 8, 21, 70, 10,246, 96, + 71,157, 46,148,194,126,242,217, 67,246,174,103, 56,200,100,241, 14, 78,212,101,241, 6,168,211,227,247, 80, 87,223, 92,169,200, + 69, 11,253,235,234,156,240,125,125, 16,168,134,142,201,237, 37,165,117,212,166,242, 91, 75, 51, 96, 32, 5,200,242,178,250, 78, +104, 93, 68, 6,120,119,103, 91,186,157, 46, 33,249, 32, 92, 39, 86, 59,195, 54, 40, 16,174,124,181,117, 24, 3, 59, 35, 74,165, +203,101, 41,228,139, 44,209,116, 52,161,129,243,192,122, 33, 51,205,160,158,107, 18,116,170,227,177,207,127,166,117, 77,210,168, +131,251, 83, 6, 58, 19,205,158,143, 47, 47,228, 84, 51,116,216,221,181,106, 89,182, 43,105,169,135, 50,180,101,180,148,233,207, +165,147,174, 71, 25, 9,102, 50, 83,144,175,191,187, 37,231,141, 46,161,232,161, 58,218,141,114,214, 57, 86,168,174,233,119,221, +218, 41, 75, 51, 57, 82, 71, 54, 98, 54,125,118,217, 33, 19, 28, 25,247, 84,215,162,170,129,192, 72, 29,104, 62, 99, 24,188,118, +213, 57,226,172,151, 10, 73, 6, 32, 40,137,126,237, 94, 77, 62,127,113,166,201, 84,146,237,129,107,149,162,180,100, 36,197,108, + 66,127,126,162,193, 80,159, 65, 13,216,243,176,219,216,171,213,114, 78,234,237,174, 58,214,190,238,163,161,182, 0,246,252,214, + 70, 85, 51,234,158, 92,234, 57,233,107, 80,119,120,240, 74,131,159, 30,215,113, 56, 77,202,227,163,169,126,127, 93, 26,205, 58, +207,150, 23,102,209,224, 20, 32,160,198, 21, 25,235, 90,161,214,238,143,172, 52,187, 39,243,249, 56, 40, 1, 15, 70, 9,150,206, + 64, 24, 36,207, 32, 88, 12,150, 57, 62, 63,229,218, 83,162,215,134,243,210,131, 96,110, 59,131, 57,243,221,196, 21, 41,237,130, +224, 59,183, 81,222,178,136,178,157, 75,102, 71, 37,156,226,156, 48,115, 77, 93,194, 68,178,108, 99,150, 6, 77, 89,185, 54, 53, + 51, 78,220,137,139,210,152,229,244, 54, 54, 42,197,206,125,129,137,176,230,226,195,187,236, 92,128,134,225, 66,185,148,145, 51, +141, 16,155,237,145, 84,114,186,152, 26, 57,218, 32,162,193, 99,160, 55,172,135,145, 76, 87,215,166,128, 40,119, 74, 61, 94, 68, +117, 70, 94, 29,183,168, 26,181,174,135, 25,209,213,120, 98, 53, 75, 40,241, 96,181,122, 99, 6, 2, 3, 61, 36,235,149, 46, 97, + 34,202, 30,166,211,142, 69,143,141, 44,230,231, 6,155,253,154, 34,139,103,136,189,224,117, 65,116,207,139, 72, 7, 70,250,237, +131,185,252,171,137,181,244,137,231,197, 51, 70,107,151,178, 81, 27, 19,244, 88, 16,235, 77,248, 93,203,142,224, 58, 41,202,222, +160, 79, 16,151,215, 93,160, 6,178,188,161,179,119,136, 72,160,206,160,251,107, 53,116, 27, 33,120,136, 89,192,195,178, 32,217, +205, 9, 90, 70,150,102,144,219,216,129,189,198,223, 54,209, 97, 37,113, 31,110,151,132, 19, 76, 52,142, 50,203,164,112, 19,231, + 53,152,104,163,216, 82, 75,225,146,114, 94,172,247,213, 68,153,228,113,230, 32,206,202, 4, 82,152,225,159, 31, 30, 94,170,145, + 26,203,131,251,155, 92, 59,127, 50,150,112, 82, 97, 4, 50,243,174,139,208, 68, 35,238, 37, 2,157,141,114, 41,110,234, 40,187, + 6,184, 71, 9,145, 17,114,142, 93, 38,178,219,136, 0, 70, 84,237,104, 86,250, 11,194, 12, 61, 32,175,133,122,228,225,254,249, +212,212,126, 33,127,244,103,223,147,227,227, 19,169, 22,139,242,246,253,123,242,250, 84,223, 95,179, 88,232,177, 2,197, 8, 8, +113,231, 53, 43, 26,202,201,201, 51,249,250, 7,111,203,239,254,198, 7, 78,234,148, 89, 89,149,142, 17, 70, 29, 48,254,179,195, +166,102, 90, 67,117,244, 99,231,168, 52, 43,107,245, 92,246,183, 81,204,202,147,215,175, 9,169, 22, 10,121,214,147,241,244,190, + 62,231,253,237, 45, 62,215,167,143,159,168,163, 24,134,164, 91,143, 48,184, 27,169, 9, 81,145, 52,181,188, 17,240,127,248,214, + 3,181, 17, 73,117, 18, 3,218,149,124,218,163, 54, 56,136, 92,152,210,245,209,163,215, 92, 27, 56, 62, 24,245,171,171, 43, 73, +238,237,241,231, 49,132, 37,167, 25,223,253, 91, 27,114,158, 77, 73,181, 84,146,142, 6, 43,207, 94,239,171, 99,203,144,228,135, +113,170,176, 53, 92,171, 16, 98,198,191, 19, 81,208,181, 1, 89,111, 50,105, 18, 85, 40,169, 51,251,217,231, 47, 37, 97, 33,210, +226, 18, 23,204, 97,135,235, 64,105, 21,239,142,243,133,236,115, 66, 78,194, 68,202,133, 20, 19, 26,144,210,138,172,179,167, 24, + 56,164, 83, 57,185, 85, 72,203,243,243,128,228, 46,236, 95,161,128,122,124, 64,117,180, 82, 54,144, 33,164,109, 33,219,170,159, +117,103,171,172,239, 91,144, 47,223, 76,229,170, 55,160, 72,203, 89,179,207, 0, 53, 77,101,186, 36, 3, 13,148, 81, 16, 28, 76, + 32,192,147, 49,204,222,207,186, 3,214,211,103,195,105, 0,162, 0, 90, 47,171,179,174,104, 48,118,121, 53,210, 44,120, 76,123, +139, 64,167, 8,117, 54,207,146, 63, 0, 22, 58,202, 12, 8, 10, 81,126, 5,138,113, 92, 31, 49, 80, 73, 39, 52,176, 27, 59,157, +249, 4,101,113,123, 50,208,224,226,178,121, 37,151,231, 39,115,165, 58, 79,131,180,108,190,172, 1, 10, 36,124,251, 82,211,192, + 97, 56,180, 92, 95,212,239,209,206,215,215,207,245, 66,206, 8,214, 30,173,209, 51,233, 89,227, 57, 17, 27,152,123,100,238,126, +176,232,192,129, 56,142, 21, 39,217, 75,145, 83, 59,165,252, 46,101,203,225,212,141, 44,228,193,131, 69,249,206, 70, 4,160,162, +109,193,146,136, 50,232,237, 92,155,222, 44,235,151,196,164,190,151, 96,111, 51, 67,165,189, 5, 4, 63,155,186, 23, 44,117,200, + 68, 66,129,217,200,242, 27,122,113,111, 16,228,138,232,150, 92,135,175,227, 54,210,218, 88, 2,138, 63, 75, 82,142, 79, 15,205, +206,206,186,164,245,194, 29, 15, 19, 97,155,148, 99,194,219,233, 76, 62,210, 39,115, 18,211,137, 90, 87,109,201,165,172,148,171, + 85, 70,247,136,174,222,191,155, 37, 84, 36,226,178,119, 56, 65, 58,245,142,131,134, 86, 86,170,100,179, 66, 2, 81,164,175, 7, +197,155, 19,131,208,122,132,199,193,197, 45,104, 96,241,238,123,119, 57,217,200, 70,178, 23,137, 79,115,117, 78, 31,144, 78,119, + 20,146,164, 16, 37, 23,121,176, 47, 27,109, 94, 48, 92, 86, 42,133,133,172,253,216,226,205, 6,134,216,185, 78, 87, 12,254,141, + 41,199,187, 78,150,185, 60, 35,178, 95,160, 17,254,212, 50,154,191,222,119, 30,201,242,141,189,217,195, 71,235,168,177, 49,171, +139, 14,129,107,213,218,112, 95,230,168,192, 12, 38,143,138, 7,217,168,115, 55,241,105,105, 75,255,238,130,129, 96, 81,203, 55, + 18,147,208,141,176,248, 34,232,145,137,193,193,177, 72,115,185,231,222, 51,215,234, 65, 50,143,138, 35,171,102,151,138, 49, 65, + 84, 84,201, 44,101,202,203, 19,240, 12, 13,212,201,209, 57, 21,189, 48, 8,162,113,121,197,121,195,103,103, 87,204,146, 6,172, + 1,142,231, 68,207, 40,233, 49,122,245,108,140,109,191, 24, 31, 57, 47,175,124, 69, 59,165, 93,194, 91,108, 76,199, 93, 34,138, +135, 11,184,221, 70,172,143,177,241,233,108,243,154,251,108,150, 18, 6,121, 16, 61, 11,230,165,175, 39,207, 15, 40,194,242,248, +241, 51, 57,215, 12,189, 90,174, 74,173,182, 42, 67,117, 92,179,169, 83,147,177, 58,109, 53,196,165, 66, 89, 26,234, 16,155,245, + 11,146,141,238,221, 90,147,223,250,246, 30,131,116, 39, 56,227,130, 45,126,143,254,255,225,247,190,144,143, 47,213, 24,171, 83, +171, 85, 87, 53,112, 71,166, 62,145, 85,189, 95, 31,171,195, 70,175,121,173, 90,209,207,159, 50,176, 71,253,117, 85, 51, 94, 12, + 82,249,226,249, 75,214,165,103,211,198,176,222, 57,206, 37,247,232,156,225,196, 71,236,184, 49,108,121, 75, 91, 48,161,199, 68, + 5, 82, 89,205, 56, 53, 99,214, 28, 89,218,221,138, 38, 6, 85, 89, 79,128, 84,149,165, 3,235,214, 52,211,108,181,228, 92,179, +193,157,205, 77,121,247,222, 30,245,222, 3,117, 72,232, 61, 7,108,158,201, 58,238, 14, 50,233, 97,167, 67, 50,111, 6,117,117, +223,159,151, 89,224,232, 81, 18, 68,224, 1,136, 28, 89,255,154, 62,255,173,141, 18,107,251,147,238,132,157, 61,201, 80,194,213, + 17,251,140,244,122,158, 58,168, 49,207, 22, 68,117, 96,131, 64,246,202,100, 74,180,113,105,253,249,149, 66, 65, 14,235,125,117, +180,250, 62, 24, 40,131,245,165,188,106,142,182, 13,236,254, 15,238,108,144,217,141,117, 67,246, 89,111, 13,229,183,190,117,135, +173,127, 54, 72,211,153,161,167,254,229, 81, 75,159,213,147,247,238,174,202,197, 85, 31, 85,125,126,111, 70,207,120, 49,151, 36, +162,241,214,173,117,221,219, 33,133, 97,214, 52, 48,232, 14, 38,106, 19, 39,234,200,147,178,181, 86,144,251,187, 85,253,255, 99, +182,206,109,212,114,186,230, 26,188,233,223,109,106,208,244,233,147, 83,233,168,253,196,249, 27,163,182,238,163, 78,142,251, 63, + 17,200,229,239,172, 87,100,107, 37, 47,141,246, 64,206, 53, 56, 56,175,159,200,229,133,115,232,197, 98, 69, 10,229, 85,138, 82, +189, 57,120,163,201,153,238,115, 54,199,247,233,246,251, 92, 51, 48,243,193, 95, 24,105,166, 63,183,141, 28, 32,102, 41, 68, 4, +255, 0, 84,103, 74,197,188,137,158, 85, 39,126, 4,219, 10,149, 63,182,102, 2,157, 10,249, 92,174,191, 61, 96,201,129, 78,210, +206, 38, 47, 46, 4,195,108, 68,105,110, 89,179,197, 68,101, 89,151,134,112,153,101,141, 50,123,179, 84,201, 44,177,192,140, 9, + 4,150,253,254,128,207,214,235,247,216, 98, 24,229, 90, 73, 4,161, 69,201,105,166, 8, 40,255, 38,146,247, 13,237,179,215,219, + 97,227,227,144, 77, 68, 78, 22,170,130, 73,212, 97, 32, 48,144, 73,134,230,205,247,195,204,192,202, 68,100,222,175,158,152, 15, + 58, 8,248,119, 38,153,209, 72,207,145,118, 16, 49,115,132, 95,164, 9, 30, 27,131,200, 24,181,120,252, 46,184, 61,254, 36,152, + 59, 13,141,229, 66, 38,159, 97,180,235, 50, 18, 97,205,205,255,226,181,172,212,202,161, 66,147,157,219,120, 60, 52, 46, 66,161, +144,149,170, 30,224, 94,111, 36, 31,127,242,132,198,168, 84,204, 73,123,165, 36, 37, 61,188, 47, 95,189,145,221,237, 13, 13, 36, + 42,252,187,145,126,175, 31,140,213,184,229,231, 78,177,209, 2,115, 53, 29,155,252, 53,159,108,108,100, 62,187,152, 65, 1, 24, +255,250,189,111,246,207,248,207,189,221,117,214,126,174,244, 18,238,238,110, 92,203,212, 61,207,187, 94, 20,191, 73, 14,112, 57, +221, 91,154, 29, 30,223,228,136, 35,138,212, 91,230, 26,238,198,196,148,222, 22,162, 48,209, 78, 3,123, 13, 82,166,254,183,137, +215,200,109,108,200,205, 12,246,241, 98,179, 90,237,117,149,246,165,122,184,137,207,152,183,209, 49,179,230, 90,196, 26,109,233, +178,177,126, 56,187,120,159,249,120, 71,135,184, 12,251, 26,208, 13,134, 33,184, 97, 72, 92,122,243,234,136,151, 45,229,121,172, +229, 13,250,221, 57, 28, 15, 24,182,167,153,205,106,173, 60,215, 74,158,243, 48, 99,188,135,136, 54,194, 87, 92,236, 88,184,108, +227, 64,203,140,193, 62, 47,202,216, 56,226,190,220,105, 97, 77,176,136,180,131,120, 27,205,140,179,130,255,114, 88,137, 56,130, +209,195, 47, 94,201, 95,252,229, 95,209, 65,109,109,108,170,129,173,168,115,186,160,163, 69,102, 28, 76,135,204,142, 83,233,146, + 52,175,154,210,106, 54,100,173,182, 34,169, 66,133,181,223, 94,111,151,243, 40,152,113, 37,146,132,223,103,181, 21,100,176,198, +142,229,131,187,123,242,100, 31,243,201, 83,122, 87, 10,242,209,151, 79,244,119, 47,245,142,149, 92,150,167,107,140,250,244,214, + 90,141, 80,244,195, 39, 79,195, 81,166, 1,101,102,103,193, 14,209, 82,100,185, 9,103, 63, 60, 23, 33, 19,198,165, 77,161,212, +168, 39, 95,187,183, 41, 95, 30,156,202,183,191,118, 79, 63, 63, 39,223,255,236,204,177,176,245,247, 71,106,107,122, 26,188,245, +212, 25, 6,158, 35,223, 66,222,182,221,106, 19,166,237, 7,125,238,111,210, 75,209,217, 57,200,124, 68, 2,159,155, 69,238,130, + 12, 40,148,161, 65, 2, 83,221,144, 73, 6,234,116,142,142, 79,165,152,201,104, 80, 88,146, 21, 13,122,250,227,134, 35, 90,134, + 89, 97,187, 59,228, 89, 32, 89, 48, 28, 90,130,145,177, 83, 13, 10,234,245,186,220,217,203,200,174, 6, 25,200,172, 91,157,150, + 36,130,145,180,122,122, 68,211, 5,126,191,193,124,248,222, 80, 51,218,156, 62,127, 87,142, 27, 85,169,104, 0,243,230,164, 37, +133,188,218, 25,117, 82,251,167, 29,253,124, 13,124,244, 59,161,174,214, 84,219,210,104, 15, 89, 55,175,150,178, 92,203, 11,205, +146, 87,139, 89, 25,107, 16, 84, 31,234,154,121,104,241,243,213, 97,231,104,111,223, 92,116, 49, 99, 78,214, 42,154,161,183, 6, +242,247,159, 28,200,157,237,138,180,159, 57,254,196,116,236,179, 92, 83,215, 64,102,165,148,145,141,181, 34,187, 2,224,106, 90, +250,157,248,140,132, 9, 97,110,193,216,211,145,188, 26, 5, 82,173, 84,229,217,203,215,154,209,183,184,207,168,247, 23,242, 21, + 78,163,171, 55,142, 72,116, 76,168, 63, 64,189,189,221, 13, 8,183,131,244,135,117,131, 32, 17,157,177,103, 40, 49,140,254,250, +188, 56,228, 41,109, 50, 76,164,240,153, 54, 28, 55, 59,147, 14, 54, 38, 19,202,123, 11, 17, 6, 44,253,196, 15,141, 3,248, 9, + 72, 70,141, 89, 86,145,186, 65,109,244,122,255,184, 93,146,211,142,106,139, 88,185, 46, 50, 54, 23,214,178, 11,210,242,120, 58, +150,166,158,189, 11, 77, 32, 39, 67,180,237,233,254,106,160,100, 82, 94, 88, 34, 8,207,190,174,249,160, 61,145, 91,187, 80,231, + 75, 44,148, 73,151, 9, 97, 95, 49, 70,219, 44, 32,233, 24,146, 96, 35, 8,243, 66, 11,211, 77,212, 75,146, 69, 8,199,165, 70, + 96,181, 48, 91, 35, 7,167,121,179,246,163, 80,180,127,160,155,125, 53,156,146,144, 4, 77,104,127,234, 50, 92, 59, 93,140,200, +244, 28,180,207,205, 27,170,131,134, 11,199,160, 0,177, 11,162, 83, 16,146,123, 76,224,241, 34, 98,193,209, 82, 1, 65, 6,140, + 49, 68,187, 7,140,175,120,222, 66,211, 61,180,243,120,174,131,195, 58,165, 63, 69, 47,207,152, 98, 6,206, 48,224,127,199,103, + 77,194, 73,155, 27,129,164,244, 57, 33,190,240,230,240,146,178,137,189,242,132, 53, 36,212,165, 90,122,235,218,173, 69,160, 48, +229,164, 35,111,238,192, 65,176,218, 85,231, 61,251,238, 47, 63,127, 45, 47, 94, 30,235, 5, 94,147,195,163, 11,110, 44, 38, 48, +237,239,159,204,197, 83,102, 9,214,157, 59,155,140,134,173,253,138, 30,242,101, 6,121,204,129,199,137,102,209, 49,171, 86,162, +195, 1, 34,172,121,107,150,209,245, 5, 49, 46, 50, 45,205, 44, 53,137, 71,107, 58,241, 32, 99, 73,162, 48,142,105,197, 53,203, +163,242, 66, 81, 65,249, 88,155, 98,156,133, 31,111, 2, 95,234,255, 51, 86,110, 84,223,181, 38,142,232,163,183,117,228, 84,204, +102, 45,148, 48,238,109,205, 72,179,154,217,193, 24, 94, 92,180,113, 56,217,142, 53,251,138, 78, 71,157,188,217,226,223,207, 32, +192,248,140,244,133, 94, 66,172,197,208, 46, 41,199, 68,200, 53,177,234, 66, 76, 98,121, 25,159,183,145, 14,151,133,212,165,157, +149,136,194,139,106,194,126,243,152, 30, 65,128,250,243, 84,157,249, 51, 57, 57,189,144,163,195, 55, 82, 81, 99, 91, 2, 81, 75, + 13,106, 71,207, 60, 51,109,102, 48,122, 71,211, 89,174, 73,171,221, 97,182,190,183,183, 45, 94, 42,203,172,116,111, 67,239,238, +196,245, 33,227, 63,147,209,104,142,104, 97, 13, 49, 3,252,238,102,153,179,210,247, 53, 43, 71, 6,254,217,243, 19,117, 50,112, + 66, 89, 6, 23, 56,242,128,209,119,214,215,104,116, 31, 61,127, 65, 29,113,102, 35,129, 11, 66,238,108,109,145,241,254,226,224, + 80,239, 67,154,164,169, 76, 90,157,103, 54,199, 80, 29, 78, 21,159, 3,118,253, 84, 51, 84,192,198,119,182, 87,137,178,129, 16, + 6,152, 61,233, 37,169,130,214,133,238,248,196,169,150, 65,146, 54,151,201,242,110,172,104,128,145, 83, 67,250, 98,255,141, 52, +219, 93,218, 30, 40,227, 5,190,204,225,208, 22,246, 92,255,137, 30,121,172,175, 38,142,180, 73,198, 58, 49, 23,100,137,245, 86, + 75,157, 99, 81,166,186,102, 59,171, 85,121,125,222, 33, 76, 12, 18, 26, 83,144,233, 98, 56, 10,178,180,209,176, 43, 9,235,166, +194, 65, 28, 6, 12,116, 56,183, 98,118,160,129, 38, 52,242, 53, 99, 50,110,130, 26,130, 25,172, 21,100,110,119,213,200, 62, 59, +184,148,111,222,171, 49, 1, 41,229,211, 18,232,239, 23,192, 91,208,164,163,217, 25,177, 29, 16,240,254,230,138,218,194,113, 64, +231, 95,201,123,146,212,239,235,168, 93, 76, 38, 29,123,124,164,142,229,170,163, 25,241, 8,202,125, 9,118, 50,116,193, 38,199, +224, 26, 61, 83, 95,236, 55,100,167,173, 1,130,254, 15, 89,120, 83,207, 2, 84,230, 14, 47, 59,236, 3,207,235,222, 64,244,165, + 55, 30,206,135,189,120, 33, 50,130,217,246, 40,131,100,114, 5, 77,146,158,179,125, 15,237,136,107,107, 91, 84,166, 67,231,194, +101,189,193,150, 61,160, 30,224, 85, 36, 67,153, 91,236, 39, 80,147,182,218,113,148,120,136,116,192, 17,250, 78, 17,175,233,185, +121,240,213,162, 37,153,111, 26,254, 57,124, 6, 2, 74, 55,212,197, 13,214,113, 53,119, 87,122, 2, 97,251,214,206,102, 56, 98, + 54, 8,199,192, 46, 74,122,179, 65, 84,179, 33, 86, 51,231, 53, 75, 52,231, 29, 72,102,121,126, 72, 4,142, 23,179,108,222, 34, +253,231,139,174,166,114, 33, 39,181,138, 38, 7,114, 32,195, 30, 74, 8,105,185,255,246,186,120,153, 68, 12,145,156, 14,244,172, + 52,204,124,178, 96,156,214,228,197,179,241,175,152,129,229,236,166, 23,111, 83,142,149, 48,163, 19,221,146,146, 44,105,228,119, +120, 12, 69,162,156,100, 43, 9, 70,204, 94, 56,228,221, 80,153,202,103, 36,133,218, 14, 46, 47, 34,116,168, 21,169, 55,149, 96, + 62,143, 62,136, 25,108, 63, 28,223, 10,120, 15, 3, 24,178,186,113, 9, 73,196,134,116,204,106,154,190,239,218, 71,112, 88, 61, + 31,117,170, 73,136, 10, 24, 58,105, 28, 20, 64, 78,184,124,136, 41,201, 4, 69,180,169,135,170, 92,192,208,137, 36,167, 29,129, +252,210,214, 15, 47,228, 51,100,168,226,123,241,243,104,187,192,112,134,164, 30,212,171,102, 75,186,250,119, 38,156,116, 4,209, + 7, 9,167, 23, 5, 24,146,128, 72, 74, 13, 11, 32,200,179,211, 62,163,236, 74, 21, 36,154,161,156, 93, 92, 73, 38,159,119, 4, + 64, 72, 98,226, 50, 99,157,208, 74, 21,238, 0, 2, 73, 7, 37,249,132, 91,102, 48,137, 49, 54, 62,131,126,169, 14,111, 99, 83, +190,162,179, 89,162,117,123,115, 3,106, 51,107,217, 88,130,215, 99, 78,202,139, 8,230,132,115,205,163,196, 63,137, 79,157,155, +205,142,191, 62,113,111,137,146,191, 16,100,143,212,200,189,120,176, 98,150,116,240,231,173,117,161, 80,195,108, 30,180, 93,240, + 84,162,164,194,216,168,193,144,240,226, 25,215,145,129, 78,139,148,103,231,147,155,156, 83, 82,227,138,218, 33, 38,114,105,180, +127,113,126, 37,107,171,121, 55,231, 58,194, 52,197, 30,225,115,231,170,136, 54, 26,180,196,251,216,237,141, 19,219,100,105,220, +128,141, 13, 9,138, 50,219,163,226, 23,179, 79,247,162,159, 28,138,105,152,104,177, 62,116,238,214,193, 11,116,146,208, 34, 7, + 67,253,103, 31, 61,148,159,127,250, 80,110,109,238,200,238,246,174,212,213, 97,157,212,207, 93,221, 24, 78, 82,215,160, 84, 40, +114,208, 72, 11,164,175, 97, 79,214,107, 53, 18,191, 14,224,160,213,224,130,217,140,207, 4, 9,118, 20, 6,245, 51, 36, 12, 66, + 46,165,156,102,126,131,169, 60, 63, 56,146,213,106,133,217, 58,140,109, 49,235,132, 99, 16, 60, 32, 8,222, 89, 91,165,163,126, +166, 14,213,132, 58,243,128,215,177, 71,187, 27,107,250,187,101,190, 41, 2, 92,160,121, 62,121, 57,152,149,221,155,215, 91, 55, +106, 43, 36, 98, 5,182, 68,155,241,246,222, 6,137,120,245,171,190,164, 0,221,103, 83,250,239, 45,169,149, 80, 90, 25,202, 85, +171, 67,187,130, 47,172,228,112,158, 82,114, 54,246,216,206,133,255,160,141, 44,151,118,210,176, 25,116,224, 36,167,180, 79,176, + 15,248,254,137,239,132, 78, 0,189, 99,248, 12,178,125,200,145, 54,244, 59,240,187,128,234, 43, 26, 40,108,215, 50, 20,186,169, +234,207,116,200, 14, 31,145, 92,134,179,155,162, 67,117, 83,209,192,224,135, 6,124, 38, 93,228,188,242, 46, 62,123,224, 70,157, + 14,135, 30, 33,102, 12, 96,153,248,234,184,141,144, 83, 80,211,172,174,170,206,112,162,217,118, 91, 19, 31, 40,206, 13, 53, 83, + 78,123, 83, 14,177,153,176,164,153,166, 29,201,167, 60,182,117, 53,219, 99,217,168,130,252,168,118,105,106,136,178,160, 20, 74, + 2,153, 26,158,157,181,138, 62,107, 74, 51,244,190,116,212,137,239,109,175, 72, 94, 3,134, 87, 7,199,114,222,236, 73, 95,179, +200, 84, 42, 47,109, 13,112, 11,105, 67,153,215,147, 78, 67,159,219, 99,128,135,214,102,188, 23,190, 23, 76,169,141,173, 93,182, +141,189,126,253,132,115,233, 49,122,182, 88, 40,107, 32,162, 1,207,209, 1, 5,140,128,222, 32,241, 66, 57, 5, 78, 23,237,135, + 8,188,160,104, 87,212,239,232,170,221, 30,235, 58,244, 56,194, 86,120, 15,189, 16,210,197,253, 69,217,204,141,142,245, 67,219, +144, 96,112,226, 38,215, 25,126, 46,246, 3, 35, 70, 49,187, 30,147,252,170,229, 82, 56, 84,199,196,245, 60,108,180, 76,182,140, +140,218, 56, 44, 62,211,136,240, 34, 51, 38,196, 92,235,242,137,183,176, 93,103, 64, 1, 69, 67,160, 13, 73,219,177, 63,224,119, + 32,209,139, 14,186, 68,187,163,111, 37, 54, 20,202, 26,185, 38, 45,123, 61,113,139,203,138,155,136,210,231,204,118,219,144,115, +179,144, 4,119,118, 46,137, 26, 5, 28, 39,160,202,122, 87,163,201,222,148, 15,139,195,132,108,252,180, 53,224, 2,239,213, 52, +170,204,185,105, 77, 57,195, 95,116, 99, 90, 77, 98,193,250, 54,174,141,173,169,145,117,103,132,133, 79,242, 48,128,132,129, 77, +152, 43,252,132,227, 90, 73,138,163,244,104, 64, 53,176,171, 0, 6, 24, 25, 54,106, 71, 73, 14, 56,240,209,247, 30,104,164,222, +109,169, 99,206,169, 65,209,131,151, 79, 16,170, 9,104,240,220, 48,129, 92, 6, 44,205, 62, 47,212,202, 74, 73, 51,148,190,252, +232, 71,159,234,101, 55,178,154, 25,139,237,118,121,121, 74,217, 42, 73, 47, 12, 62,188, 41, 15, 11,140, 78, 74, 35,247,156, 23, +112,113,187,250, 59,117,189, 56,152, 46,212,105,117, 24, 85,110,174,151,216,122, 35,120,127, 24,169,108,130,151,192, 70,216,249, + 35, 64,253, 54,203,236, 4,181, 92,108,120, 10,253, 45,179,177,174,193,178,195, 8, 35,174,104,155, 89,180, 94, 30,137, 44,151, +199,180,152,200,140,117, 27,149, 34, 53,179,129,229,241, 62,250,184, 92,161,137,147,222, 98,114,175, 75,125,250, 17,146,198, 53, +216,202, 46, 8, 32,174, 47,221,198, 52,254,231,239, 97,231,183, 96,161,232, 52,155,137,104,163, 35,225, 76, 76,109, 47,170,246, +196, 72, 94, 29, 8, 50,244, 55,175, 14, 53,168,107,176, 46,135, 31, 69,107, 27,158, 14,181, 91, 33, 12,143, 22,174, 33, 51, 54, +150, 23,172, 27,179,137, 79, 29,170,225,126,244,233, 99, 70, 17,247,238,223,161,168, 71,194,187, 89,143,125, 62,177,205, 68,155, +210,110,170,183,153,249,197,154, 59, 99,179,188,110, 54,146,224,219, 88,171, 5,156, 67, 32,145,187, 49,107, 19, 13,107,220,205, + 78, 79,158, 60,127, 41,159, 62,124, 44,199,199,199,178,171, 14, 29,242,173, 29,214, 44, 7,100, 27,131, 89,140, 59,153, 77, 57, + 81,143, 78,175, 43,211,209, 64, 29,250,170, 12,245,221,143, 47,206, 28, 3, 28,189,205, 24, 32,130,222, 99,127, 26, 27, 12, 49, + 11,206,159, 31,157,203, 90, 70,239,161, 58,198, 95, 60,217,159,171,126, 1, 22,245,195, 64, 21,164,184,102,167, 35, 47, 15,143, +233,224,209,174,138,146, 21,248, 11,123,234,208, 79, 46,234, 82,111, 94, 81, 49, 14,246, 3, 91,191,161,193, 5, 2,117,100,197, +200, 6,161,124, 7,225, 20,216, 16, 4,238, 80,115, 91,173, 22,244,121,125, 57, 62,221,151,237,245,138,102,178, 5,121,245,226, +133,124,231,195,119, 53,243,235,201,243, 55, 66, 70,246,101,179, 33,159,126, 94,167,125,185,119,255,125, 89,201,170,179,242,198, +242,224,237,175,201,163, 47, 31, 75,255,234, 74,126,247,183,127,147,109, 89,135,103,167,210,235,245,249,238,232,101, 95,175, 85, +244,121,179,234,252,211, 52,131,231,234,208, 97, 27, 32,136,130,254,122,100,154,191,241,222,134,124,242,234, 74,179, 94,203,174, +129,158, 6, 1,190,113,228,193, 2,230,126, 87,179,225,190, 99,109,175,228,155,171,101,169,106, 0, 4,100,228,249,171, 14,231, +157, 55, 7, 19,202,203,118,244, 25, 18, 26, 16,109,175,100,168,176,246,245,183, 54,228,238, 78,133,109,119,191,241,205, 93,217, + 63,186,144,239,253,252,137,124,253,222,170,148,179,129,124,231,151,238,145,117,127, 82,239,200,211,215,151,212,139, 71,208,243, +238,253, 85, 25,232,239,163,190, 14,221,253,163,147, 75,217,219, 44, 72,123, 96,101,165,130,224, 36,173,207,150, 32, 28,127,217, + 26, 49, 16,217,212,231,220,168,100,229,214, 70, 69,250,186,221,159,191,106,200, 84, 29,251,118, 45, 39, 67, 77,204, 32, 34,100, + 36, 35, 71,141,126, 56,124, 39, 45,165,202, 26, 75, 54,151, 23,167, 60,147,153,108,145,100, 56,112, 9, 94,237,191, 34,191, 1, +234,121,216, 87,236,183,245, 32,239,154,100, 80,131,172, 26,189,242,176,195,255,228,155, 59,178,165,207,245,175,126,112, 32,125, + 13, 36,209,222,136,191, 7, 90,179,185,190,206,128,174,213,109, 59,114,151,254,126,150, 2, 71, 62, 81, 17, 12,216, 41,106,112, + 74, 93,129, 96,192,231, 40,151,215, 92, 11, 94, 52,129,177,145,182,228,136, 32,215,141,202,152, 75, 35,148,237,172, 76,102, 22, + 9,137, 89,230, 16,221, 84, 90,156,143,165,118,115,239,173,254,111,164,107, 25,181,143, 51,155, 26, 83, 3,137,240,111,230, 45, +171,198,196,135,141,155, 40,243,254, 26, 22, 26,231,108,217,229, 18,160,243, 49,201,110,187, 69, 66, 67,171,171, 81, 80, 33,173, + 14,121, 76,226, 74, 90, 55,106,165, 82,100,212,152,176,110,228, 34,234, 61,200, 76, 17,229,181, 39, 14,158,247, 18, 83,126,102, +127,236,115,193,203,185, 20, 51, 88, 68,126, 40, 74,225,128,193, 88, 4, 97, 61,221, 70, 12, 29,231, 3, 39, 92,127,229,192, 79, + 75, 54,167,145,125, 94, 55, 82, 55, 61, 16,167, 94,149,148,137, 60,184,157,144,195,195,177, 28,235, 51,230, 52,170, 46,151,146, + 46, 3,245, 22,132, 57,212, 83, 81, 34, 0,204,212,239, 97,154, 84, 94,146,128, 94,213,127,107, 12,202,140, 4,181,156, 85, 76, + 57,210,200,113,140, 58,157, 26,190,188,102, 2, 65, 10, 4, 24, 95, 90,228, 23, 36, 57,241,139, 65, 75, 98, 33,224, 2,227, 90, + 72, 25,102, 56, 45,189,172,122,183,164,168, 23, 8, 63, 59, 82,231,130,127, 71,112,132,136, 21,204,235,179,243, 22,219, 68,138, +124,127,145,180, 30,130, 74, 49,171,193, 67, 33, 60,152, 54,174,148,182,172, 77,234, 69,218, 35, 66,104,214, 46, 59,244,136, 3, +193, 72,193,216, 28, 99, 49,145,233,236,230,186,182,254,204,127, 90, 23, 28,129,108,152, 43,100,221,140,223,101,213,178, 25, 33, + 46,114,250, 2,187,136,120,249, 28,190,107, 29,138, 77, 34, 9,159, 25,107,130, 0,142,117,236, 16, 70,138, 30,220, 40,211, 61, + 58,211,216, 70,234,212, 80, 43, 59, 57,185,160, 3, 65,205, 54,160,131,242, 73,178, 4,137,169,223,159,178, 23, 55, 5,102,103, + 56, 14, 50, 8,131,142,217,229, 66,143, 46,249, 29, 28,228,224,203,203, 23,175,249, 93,119,238,221,162, 54, 54,201,148, 54,218, +194, 98,227,115,237,162,206,120,121,152, 66,164, 7,214, 70,144, 25,187,204,137,159, 5, 65, 17, 45,129, 5, 68, 24,132,235,230, + 70, 90,162,230, 60, 30,141,229,203,167,251,242,127,253,233, 95,145,140,115,231,214,109, 42,154, 61,126,245,134,140,117, 8,167, +248,193,100, 78,242, 4,196, 10, 78, 1,132, 74, 42,149,178,116, 71, 35,194,215,236, 81,214,115,143,225, 37, 24,255,137,223, 75, +167, 18,139,185, 13,225, 90, 1,246,188,191,187, 33, 91,234,152,255,199,255,237, 47,233,120, 65,102, 66, 16,128, 44, 30,251,243, +206,222,174,156,104,118, 10, 7, 57,101,109,221,213, 10, 1,151, 3,210,197, 20, 46, 50,158,189,188, 58,161,161,203, 2,209,127, +238, 37,230,229, 46, 87, 94, 8,244, 51, 46, 25, 0,151,242, 21, 6,255, 84, 86,227, 40, 78, 95, 30, 61,254, 92,126,235, 55,255, + 45,102,170, 7, 71,135, 82, 93, 89, 35,225,113, 74,190,132, 6, 51,186,159,121, 93,139,149, 86,131, 14,245,241,227,231,178, 59, +184, 79,134, 58,116,201, 49,206, 19, 25,123,202, 75, 73,185, 80, 98, 16, 4,196,227,224,164,206, 41,107, 91,186,231,174,190,111, +152, 89,163, 55,189,144, 44,176,198,125,222,158,200,239,124,109, 93,254,135,255,247,139, 80,218,214,184,102, 39, 12, 34, 25, 91, + 14,168, 73, 37, 72, 50,114, 25,219,212,113, 25,128,132, 96,178, 92, 90,239, 67, 38, 83,228,160, 98, 4, 69, 96,202,111,130,116, +214,156,104,182, 61,146, 67,175, 35,207, 14, 91,242, 23, 63,121,193,132,101,160,153,250, 71,159,237,171,237, 12,228,211,151,117, +121,239,254, 45,217, 88,201,169,131,180,242,247,159,190,228,204,250,131,243, 54,137,111,245,206, 88, 78,207,235, 44, 51, 54, 58, + 35,194,218, 15,159, 31,202,222,214,170,126,247, 88,186, 3,159,123,182,183, 81,166,227,218,191,232,203, 71, 47,234, 68, 88, 1, +247,247,134,174,134,142,123,254,232,176,173, 54, 47,193, 18, 65,181, 88, 85,251, 90,150,102,253, 76,154, 26,120,161,204,128,131, +177, 94,168,134, 78,249, 76,223, 41, 67,210, 51,126,121,200, 44,213,205, 1, 65, 89, 19,182,113, 66,229,184,130, 6, 74, 61,185, +236,106, 50,165,123,250,254,253,187,114,126,121, 41,221, 78,147,172,250, 15,223,185, 39,111,221,127, 79, 3,166,190, 6, 64, 3, +153, 0,138, 71, 25, 73,239,228,149,238, 37,208,215,245,218, 29,217,220,218, 97,208,138, 63, 67,208,250,107,191,242, 77, 58,127, +172,115,172,220, 53,183,151,222,156, 16,103, 77, 92, 33,222,218, 40,207,103, 73,206, 91,188, 88,223,185, 89, 78,104,110, 84,238, +116, 63,131,210, 75, 64, 50,104, 58, 14,154,135,207,224,134,198, 44, 79,151, 52, 95, 49, 10, 34, 62,161,211, 68, 71,110,135,195, + 79,230, 36,250,104,146, 16,101,201,227,153, 96,224,144,185,130,200,129,168,181,168, 17,166, 7, 21, 31,245,134,165,148, 71,225, +127,102,194,186,235, 32, 70,192,201, 79,130,132,188,185,104,211, 72,230, 52, 66,174,170,243,111,247, 28,252,133,190,210,205,149, + 34, 97, 22, 76, 43,202,231, 51,172,223, 64,249, 41, 74, 67,162,208,133,157,240,114,183, 90,122,217, 2,143, 4, 17,252,103,152, +157,208,112, 99, 46,242,175,189,149,146,149, 53, 79, 15,210,170, 84, 14,166,242,250, 74, 23, 80,163, 95,182,165,232,101,177,225, + 32, 26,147,208, 40,218,104,180, 14, 88,214,128,121, 26,112,226, 79, 73,131, 0, 61,227,146, 72,229,245, 82,143,101,191, 49, 36, +188, 83,215,239, 68, 0,240,222,158,102, 6,122,209, 59,163, 64, 6,234,233,135,212,120, 54, 52, 30, 24,161,136, 90, 25,135, 48, +162,198, 7,134, 99,209,177, 24, 47, 59, 67,205, 2,146,252,110, 12,159,152,228,146,236,231, 5,145,103,255,211,231, 78,205, 73, + 15,103, 67,179,125,212,153,238,173,166,169,211,219,186,210, 0, 67, 63, 16,151, 46,157,116, 61,213,211, 32, 8,245, 84,220, 65, + 75,120,238,112, 78,125,103,224, 89,254, 72, 37,231, 92, 9, 39,141,234, 28, 20, 29,156, 56, 70, 47,202, 5,126, 96,230,228, 70, +182, 28, 34,114, 11,191, 39, 42,129, 56,107,237, 2,148,138,118, 25, 64, 97,133, 98,142,234,129, 32,202,112,156,169, 15,195,149, + 8,201, 78,193, 28,234, 70,182,229,121, 94,132, 17,238,218,253, 90,189, 17,191,143,229,155,192,213,133, 29,193,203, 25,254, 57, +194,111, 28,151,194,134,159, 51,239,200,243, 28, 3,219, 51,241,161, 56, 36,109,194,224,234,122, 90,244, 14,123,102,254, 60, 40, + 7, 65,148, 98, 38,208, 80, 43,166,165,161, 78,110,224, 59,193,149,153,178,214,236,217,177,166,181, 74,142, 89, 1,107,191, 32, +207, 53, 26, 50, 80, 35,150, 47, 21, 25,152,205,222, 55,166,128,103,221,243,217,144,137,238,234,128, 94,184, 22, 11,236, 44,176, +193, 82,123, 74, 68, 99, 62,176,225,251, 58,226,207,156,126, 16,216,249,122,216,240, 44,160,142,253,147,143, 31,202,207, 62,250, + 5,201,163,169,116, 65, 86,107,235,108, 9, 5,148,156,240,156, 2, 25, 36, 95,177, 71, 35, 14, 65,113, 72, 18,222, 19,173, 97, + 29, 4, 5,250, 57,112, 86,248,157, 77,205,148,241, 44,109, 61,199, 18, 50,223, 57,202, 50,132,237,112,214,144,169, 65, 16,228, +201,211, 23, 52, 21,172, 79, 19,114, 78,146,189,190,187,190, 42,231,186, 94,205,171, 54,127, 30, 1, 2, 69, 93,134, 67,190, 27, + 32,237,102,187, 61, 47, 33,160,150, 60, 0,140,170,207,218,247,134,116,128, 56,223, 65,216,166,135,191, 7,241,110, 50,117, 1, + 13,222,107, 69, 3,114, 4,219, 9,111,196,103, 67,191,116, 91, 13, 59, 68, 72,132,103,222,104,162, 49,226, 72, 82,220,131,118, +187,231,186,103,198, 19,102,167, 57,117, 42,157, 94, 71, 94,189,126, 35,247,238,190, 69,113, 26, 32,121,157, 30, 90,251,178, 12, +246, 97,107,208, 18, 88,171,150, 88, 43, 6,227, 59,229, 57, 43, 12, 2, 90,189,111, 24,248,127,251, 94, 89,126,248,184,161, 1, +121,129, 48,244, 88,127, 46, 0, 83, 91,223,161, 6, 54, 59, 50,226,112,124, 40, 85,235,194,129, 75,184,171, 32, 42, 66,165,207, +122, 78, 16, 9,123,129,243, 2, 7,120, 9, 54, 59,148,247,114, 57,205,166,171,228,161, 2, 73,112,136,146,149,134, 58, 69,128, +124,216, 11, 55,227,126,172,137, 70, 74, 14,207, 59,242,141,251, 43, 18, 12,147,242,253, 87, 77,169, 20,242, 82, 43,231,116,189, +138,154, 88, 9,145,129,169,102,182, 40, 63,226, 93, 64,128, 78, 27, 61, 39, 6,226, 65, 25,214,236, 65, 36, 68,219, 28, 80,142, + 44,208, 44,253,239,237,237,109,117,244, 3,121,179,255, 76,247, 69,223,207,100,165, 84, 46, 81,145,240,162, 89,151,118,167,165, +107, 80,230, 0, 28, 6, 48,227, 73, 88,242, 74,208,142, 13,212, 6,142,135,125, 41,230,243, 12,222, 32, 30,115,114,209,146,119, +190,241, 43,146,104,141,229,224,248,140, 1,249,215,222,126, 71,254,219,127,249, 95,201, 31,255,229,143,229,226,197, 57,231,204, + 67,243,189, 90,204, 75, 87,247,172,165,123,249, 95,255, 23,255, 66,110,221,190, 35,127,250,231,127,207, 82, 9,234,247, 27,171, + 21,185,125,239,182,171,179,207, 21, 47, 29,100,191, 12,173, 71,239,222,156,241,238, 45,156, 58,248, 6, 94, 12,117,244,226, 42, +155,209,233,144,215,185,176,243,182,101,218, 37,125, 28,216, 18, 79,207, 92, 92,152,195, 57,221, 41, 64, 6,207,139, 12,139,138, +182, 74,155, 27,218, 99,163,156,162, 72,170, 23, 97,219, 70, 21, 48,231, 5, 67,187, 64,114,147, 59,219, 59,114, 75, 47,107,167, +117, 37,232,140,128,204, 99,169, 92,113,189,222,232,107, 4,148, 12,225,127,117, 86,245,246, 0,179,249, 36,227,217,121,182,137, +168,137, 19,133,172,157,143,185,116,189,135, 62,179,191, 65, 95,163,247,146, 58, 66,153, 25,241, 80, 25,203, 15,230,147,215,134, + 26,113, 62,127,209,145,188, 70,179, 43, 26, 65, 59,109,102,212,179, 60,201,127,107,155,108, 87,172,251,246, 94, 94,142, 59,174, +150,239,135,125,138, 41,246,103,186,232, 10, 53, 86, 56, 97, 56,109,148, 14, 70, 80,237,153, 36, 53,179,201,176, 79,179,232,101, +230, 89,110,217,100,164,161,135, 5,223,211,212,247,186,226,231, 26,233,144,124,147,167, 35,192, 1,178,118, 26,206, 60,134,160, + 78, 78,134, 96, 23, 90,143,117, 75,212,131,144,129, 67,227, 26,141,208, 93, 40,236,106, 96, 1, 59,215, 31, 78,165,152,182,156, +206, 4, 71, 81,170,160,103, 86,191,187,133, 94,207,161,171, 21,205, 54, 56,176,115,136,121,198, 30,134,163,135,118,192,118, 45, +205, 11, 9,105, 76, 32, 20,248,115,182,129, 80,143,223, 57, 83,143, 25,208,148,217, 39,222, 7, 4, 68, 56,246,148, 73,134, 2, + 14,206,144, 98, 79,156,248,135, 13, 37,121,221,104, 68, 64,104, 88,151, 78, 71,191, 55,147, 33,235, 23,198, 28, 37, 25, 60, 16, + 50, 97, 63,100, 20,131, 17,139,125,135,206,243,130, 43,102,121,112,129,150,192,185,164,216, 7, 28,204,161,121,252, 59,227,225, + 25,100,133, 58,227,196,149,121, 16,156, 97,224, 4,214,158,207, 24,170,151,113, 61, 66,168,140,228, 39,212,217,248, 28, 66, 4, +197,134,235,229,186, 49, 28,169, 6, 65, 38, 68,182,144,121, 32, 99, 97, 80, 17, 58, 15, 56, 81,188, 67, 94,247, 16, 81,117, 74, +131, 63, 12,207,192,247,228,114, 30,141, 84,235,178,206,231, 33,164,207, 86, 36,215,201,128,160, 4,223, 5, 77,133,153,144, 6, +213,190,244,222,248,126, 16, 81,119,114, 23,221, 44, 17, 0,231, 36, 52,124,142,231,184, 34,206,145, 91,135, 84,205,100, 88,233, + 28, 70, 92, 27,236, 73, 3,138,105,154, 13,215,214, 55,100,109,117,141,146,163,251, 7,111, 88,246,154,114, 22,131,199,224, 27, + 40, 20,126,158,129,158,113, 18,176,221,161,203,208,113, 78, 96,224,183,215,214, 8, 91,159,170,147,185,189,145,115,103, 46,225, + 36, 78, 41, 22,162,207,133, 51, 9,196, 7,223, 83, 78,185,154, 35,214, 21,225,216,189, 59,219, 92,255, 87, 71, 39,148, 33,117, +123,232,133,100,178, 17,223, 15, 89, 51, 74, 96,168,133, 98,143,208, 95, 13, 7, 64,146, 19,116,187, 83, 32,174,118,249,236, 73, +246, 94,143,168,234, 86, 0,233, 45, 20,188,130,131, 40,105, 34, 0,110, 35,166,132,225,172,229, 53,152,203,161,198, 28,158, 71, +172, 47, 62,171, 63,238,234,154,141, 72,238,234,247,186,148, 49, 5, 11,219,234,159,165,117,159,161,204,134,128, 36,147, 54,236, +193,207,101, 11, 28, 89, 26, 76,251,172,235,131, 15,208,233, 13, 36,171,209, 63,156, 33, 96,119, 64,196, 67,245,230,111,223, 43, +200,243,179, 49,207, 74, 41, 11, 36,168,205,192,148,221, 52,161,176, 76, 55,225,218,178,128, 76,162,142,141,150, 46, 42, 25,122, + 38,218, 24,202, 90,126, 41,159,160,218, 28, 72,192,131, 98, 95,142,207, 7, 36,146, 97, 32, 12,158, 13,109,108,232, 67, 7, 23, + 34,173,137, 20, 16, 40, 48,254,145,112,149, 10,105,158,123,148,255, 96, 67,176,159, 69,125,102,116, 45,161, 36, 53, 28,161,247, + 92, 19, 8,116, 2, 52,156,204, 45,158,227, 92, 19,138,146,254, 92, 70, 19,156,222, 4,101,143, 30,207, 27,201,130, 67, 39,241, +141, 50, 72,185, 92,147,163,179, 11,125,135, 6,237, 39,130,213,205,141, 13,206, 77,248,242,201, 19, 18,239,118,214,107,212,244, +199,249, 31,133, 53,114,236, 33,212,225, 74,165,130, 92, 93, 53,201,223, 0, 9,178, 11,142,132, 62,240,189,237,162,148, 50, 9, + 57,215,243, 80, 0,177,172, 88,212, 36, 47,207,238, 37, 4, 70,232,122,130,133,200,132,179, 67, 96,187, 16,104,228,178,121,183, + 31, 32,252, 5,238,156, 67, 64,106, 93, 3, 48,236,209,172,251, 37,202,211,137, 13,139,186, 54,174,195, 44, 77,201,180, 50,211, +175, 52,177,142,156,165, 30,247, 57,183,199,196,100,221,103,208, 58,108, 40,202,188,201, 90,145,220,132,155,219,101, 92,146, 21, + 19,208,138,242,110,110, 8, 26,162, 66,159,241, 46,163,235,172,248, 64, 36, 38,187,205, 41,109,249, 82,133, 47, 9,242, 12, 90, + 70,178,136, 10,199,129,187, 64,112, 24, 24,110,159,112,112, 58, 88,182,232, 11,197,248,197,146,102,166, 57, 68,129,154,205, 23, +244,224, 96,131, 17,161,101, 83,110,154, 27, 28, 97, 64, 77,228, 33,127,118, 4,197,163,165,218,101, 34,112,112, 45,156,199,148, + 80,106,129,237, 58,208,169,166,212,161,100, 56,118, 49,149, 71, 93, 62, 45, 9,125, 54, 48,155,209,107, 73, 71,149, 74,203,204, +234,231,245,192,129, 17, 11, 86, 51,178, 86, 56, 20, 56, 52, 47,225,160,122, 40, 70, 77,194,137,116,200,130,144, 81, 31, 28, 53, +244,192,251,148,124, 68, 61, 22, 61,158, 1,201,117,234,144,225,153, 81,199,133, 65,246, 93,223,111, 86,223,117, 20, 24, 42, 54, + 37,209,122, 50, 24,211,145,108,111, 86,248,123, 29,141, 86,225, 44, 40,207, 56,181, 33,121,200, 93,240,193, 16,106, 81, 30, 7, + 46, 64, 67,122,193, 31, 91,192,233, 54, 12,164, 32, 76,145,228,123,120,243,104, 14,138,125,121,223,149, 28,240, 94,168, 39,159, + 94,118,157,222,118, 42,233, 74, 16, 96,137,134,159,137,231,193,197,200,146,141, 25,132, 36,138,144,168, 21, 18, 20,135,106,128, + 77,224,179,191,214, 61, 66,160, 65, 88,159,129, 8, 8,148,128,215, 58,122, 65,161, 50, 5, 24, 17, 66, 35,128, 91,199, 36,131, +244,245, 32, 39,169,173,141,142, 4,100, 61,100, 5,235,239, 96,128, 6,156, 29,116,159,225,100, 26,152,182,229, 9,141,144, 46, + 23,231, 66, 23,210,174,164,131,200, 63,163, 1,201, 32,156, 54, 68,189,246,148,211, 8, 55, 97, 48, 98,216, 91,148,152, 11, 85, +224,124,206, 90, 44, 19, 32, 63,141,156,227, 65, 16, 5, 18, 92, 65,207,101, 73,143,198,180,144,118,194, 40,190, 11, 97,200,162, +213,239,196, 89, 60,211, 8,140, 14, 36,141, 50,204,128, 90, 13, 54, 36,191, 56, 84, 33,152,247,155, 7,243,113,141,193, 92,161, +106,166,197, 15, 71,135,115, 62, 47,169,204, 80, 16,207, 17, 75, 19, 9, 23, 20,204, 90, 97,130,208,193, 51,172,194,249, 52, 73, + 58, 63,234,111, 35, 96, 64, 48,167,153,240, 15,126,250, 51, 78,208,170,174,109,161,249, 83,206,235, 77,117, 56, 87,122, 15, 7, +116, 84, 21,102,183,150, 78, 9,159, 53, 30, 15,217, 23, 93,212,251,220, 66,175, 53,246, 9, 26,225, 19, 16,172, 86,248,108, 16, + 14,129, 12,236,132,142,118,170,123,147,156, 51,105,145,133,194,116, 12, 39, 35,162, 82,224,162, 96,129,241,153, 16,137,201,171, + 33,254,252,233,179,208,200, 58,148, 0,247, 12, 40,194, 36,100,181, 51,128, 11, 73, 79,201,112,238, 3, 36,101,103,240, 39,156, + 17, 8,106, 12,144,188,217, 76, 8, 23,228,160, 22,140,253, 70, 96, 1, 82, 29, 50,220,118,183,205, 18, 86, 96, 71, 36, 97, 17, + 9, 9, 92, 15, 51,148,243, 86,202, 43,174, 83,135, 34, 38,194,207,100,214, 60, 26,115, 38, 57,157, 60, 4,174, 66, 9, 91,220, + 3,118,185,192,150,104,246, 26,152, 41,251,206,135,112, 46, 40,161, 21,178,212, 58, 31,233, 90, 2,149,203,165,171,114,217,179, +178,189, 90,148, 43,181, 99,103,205, 65, 72, 26,203,240,231, 16, 20,150,209,146, 22,102,122, 8,122,113,243, 70, 40, 73,232,174, +105, 92, 65,118,248,233,197,133,156,158, 39,228,157, 77,117,108,154,224,116,187, 99,105, 35,224,154, 90,158,243,188,102,121, 40, + 25, 20, 75, 69,169, 55, 52,163, 31, 77,153, 73,195,166, 6, 83,189,199,153, 33,247, 4,159, 15,148,119,255,188, 43,191,253,193, +182,156, 92,246,229,176,222, 19,147,116,236,115, 6,135,214,208, 9, 99, 13, 17,240, 37,210,152,221, 14, 7, 62, 36, 33, 49, 27, + 42,252, 1,165, 4,185, 15,250, 6,103,103, 7, 26,164, 66,214, 85, 19, 7,117,158,119,118,119,165,163,239,255,229,211,199, 60, + 63, 59,235,171, 28,207, 11,103, 13, 50, 33,206, 18,130, 42, 4,181,120,198,162, 6, 38, 77, 77,144,130,208,254,160,190, 62,156, + 36,228,217,233, 64, 38, 15,159,177, 75,165,195, 89,247, 41, 38, 11, 64, 46,211, 9, 19,106,158, 59,160, 25,252, 35, 4,128, 44, +193,128,151,133,105,117, 83,151, 40, 78,244, 89,239,238,109,186,164, 39, 98, 43,189, 88,181,217,178,155, 33, 90,182,115,165,173, +248,204, 13, 89,146,170,182,177, 14,219,229, 9,155,230,198,137,149,115,190, 19,236, 88, 46, 65,159,149, 45, 59, 30, 21, 74, 69, +198,154, 57,252, 30,213,197, 88, 16,161,205, 53,226,109,236,209,172,137,200,151,199,133,176,110,228, 45,199,106,246,128,223, 13, +178,244, 22,157, 19,178,116,192, 25,112,100, 84, 42,246,173, 99,122,178,191,209,177,112, 1,175, 19, 58,214, 75,102, 19, 62,157, + 15,198, 60, 90,155,112,109, 43,132, 14, 97,244, 82,161, 49,116, 25, 12, 24,160,136,216, 17,149,166,230,227, 90,221,214,128, 65, + 26, 4,125,105,183,134,122,136, 3,119,241, 1, 57,163,254, 61,130,113, 79,134, 61,127, 99, 66,170,144,181, 69,240,227,217,197, +184,187,164,231,152,166, 28,184, 16, 26, 28,163, 7,121, 45,167,207, 17, 12,244,162,117,244, 98, 76,168, 50,213,154,142,164,173, + 70,109,107,187, 38,190, 6, 42, 89,205, 22, 2,189,164, 89,113,146,144, 48,176, 48, 70, 46, 67, 13,168, 33,237,132, 58,198,122, + 73,114, 52,138,147,176,133, 14,231,134,189,176, 9, 7,113,155, 84,154,235, 93, 43,103, 99,100,184,211,166,139,140, 17,157, 22, + 53, 11, 2,148, 28,132, 61,240,179,249,170, 88,147,174,239,207,219, 21,170,197,180, 27,241, 24,138, 48, 92, 52, 71,115,152, 57, +159, 69, 43,142,240, 2,219, 96, 76,168, 14, 8,166, 73, 56, 6, 63, 28, 39,178,201,157,205, 42,133, 46, 50,105,223,193,246,193, +196,161, 27,200,140,194,201,123,161,254,158, 83,191,210,247,236,233,103,118,250, 30, 91,112, 80,178,200, 34,120, 83,199,139,245, + 71, 31, 53, 84, 9,124, 13, 2, 91,122, 22, 70, 84, 8,155,200,121,203,101,233, 80,188,242,168, 43,173,235, 91,206,208,152, 35, +208, 73,232, 97,239,245,133,245, 62,100,162,126,218,233, 15,224, 25,166,186,207,137,116,158,203,128,103,240, 49, 40, 35,140, 66, + 41, 82, 17,184, 94,225,179,198, 64,179,150,148,220, 95,203,177, 6, 10,131,118,119, 53, 35,107,197, 4,127,120,194,189,215, 64, + 65,143,203, 70, 33,201,178, 79,123,236,211,169,130, 7,146, 8,209, 2,124, 86, 30,196,172,156, 67,143, 16, 84, 6, 62,212, 46, + 82, 68, 28,230,218, 47,179, 22, 51,252, 30,122,101,167,250,121,157, 33,203, 42,108,235, 10, 38,174, 69, 19, 16,182,103,231,189, +169,194,144, 42,225,216,222, 97, 73,193, 36, 22, 98,133,248, 60, 4, 82,252, 67,232, 53, 34,120,212,127, 2, 45, 67,192,214,210, +172, 7,132,170,237,245, 77, 62,251,235,163, 67,205,240, 70,212,118,192,119,149, 10, 37, 50,193, 49,188, 37, 77, 68,101,204,243, +143,246, 35,244, 50,187, 1, 29,174, 75,100, 93, 29, 58, 6,144,116,123, 93, 26,124, 24,126, 4, 88, 52,192,198,159,139,177, 32, + 59,131, 1, 7,252,187,138,246,170, 4,218,228,158,201,238,230, 46, 59, 74, 30, 62,123, 65, 71,142,239, 7, 42,128, 59,140, 12, + 29,119, 33, 25, 6, 37,168,167, 95, 77, 38,172,177, 2, 61, 66,230,142,231, 65, 79,184,131,104,157,227,169,148,203,116, 56, 67, +168,149,205,214,199,120,132,171, 51,212, 40, 23, 57,169,107,214,105, 83, 60, 19,229, 92,222,217,136, 80,213, 11,118,198,248, 19, +215, 54,150, 48, 68, 1,177,206, 25,205, 18,113,126, 18, 80,175, 75, 26,158,115,252,147, 11,239, 57,116,106,202,193, 38, 1,123, +139,211, 96,249,235, 30, 98,141,219,189, 17,109, 78, 33,151, 33, 87,225,162,217,100,253, 24,207, 57, 24, 38,229,221,157,117,249, +214,189,169,124,246,170, 33, 13, 13, 8,193, 51, 98,137, 42,112,164, 79,135,156, 77,195,114,134, 80, 60, 11,129, 78,187, 61,164, + 3, 4, 34,129, 30,246, 85, 64,218,250,189, 79,222, 92,209,193, 90, 34,125, 25,102,176,104,113, 67,208,130,210, 6,218,196, 16, + 16,100,210, 21, 57, 24,105,240,174,123, 95,202, 78,165, 53,152,242, 78, 29, 95,246,164, 51, 28,115, 47,129,120,240, 76, 97, 77, +213, 17, 66,184, 6, 44,255,205, 90,153, 51,223, 79,234,199,220,111,112, 78, 92,251,160,200,230,218, 58,131,174,179,211, 35,162, + 43, 9, 47, 73,244, 17,200, 45,130,169,167, 47, 94, 16,221, 90, 93, 89,209,204,186, 64, 20, 1,178,191,184, 47, 32, 1,102, 72, + 50, 12,164,172,123,156, 73,101,233,144,225, 27,114,121,140, 84,205,203,106,165, 40,199, 23,231,114,244,209, 35, 61,199,235,206, +222, 4, 96,197, 39, 52, 24,210, 44,125,234, 18, 30,153,245,255,139,235, 38, 66, 59, 35,202,134, 64,123,146,122,207,208,121, 52, + 30,246,100,115,198,121,137,138,103, 69,230, 98,184,228,103,241,103, 49,205,142, 40,137,120, 70,144,155, 65,223,179, 49,210,214, + 68,100, 87,227, 48,185, 92, 19, 23, 91,136,119, 97, 47, 16, 60,123,201,188, 35,214, 70,116, 69, 88,219,143, 78,183,140,229,234, + 38,214,120, 99,150, 71, 48,203,210, 92,146,152,191,183,215, 40,116,118, 78, 24,212,117,244,199, 67, 58, 71, 56,231, 49,157,230, + 52,148,163,180, 60,104,148,121, 4,123, 19,211,128, 0, 99,129, 41,158,205,179,190, 22,104,150, 59,132,225,210, 13, 34,103,100, + 20, 80,179, 23,170, 86, 25,221,128,219,123, 27,132,145, 16,121, 50,138, 14, 13,244,112,226, 28, 12,224, 76,206, 99, 23,151, 85, + 79,167, 9,102, 31, 8, 8,242, 20,180, 81,131, 5, 50,134,102,236,193, 8,179,156,245,208,246,135,108, 15,201, 97,168,130,117, +145, 46,235,188,168,179, 33, 51, 74,186,236, 3,194, 19, 56, 16, 27,106,240, 3, 13, 18, 48, 88,129,211,134, 60, 76,117, 42,136, +209, 72,116,164,134, 19,207,214,108, 13,121, 33, 65,124,169,104, 36, 61, 26, 14, 41, 44, 83, 40,149, 37, 95,204, 49, 91, 77,154, +128, 19,236, 74,201, 52,107,110,224, 8,180,174,220,112, 2, 48,232, 57,150, 17, 9,165,239, 72, 28, 94, 56, 76, 37,218,159,237, +135,173, 64,253,192, 18,209,192,243,143,194,231, 79,133,181, 45, 24, 85, 27,238, 18, 53,173, 97,244,199,129,203, 70, 66,137, 69, +252, 92,167,235, 51,144, 64,229, 3, 34, 60,183,214, 80, 43, 52, 36, 23, 18,194, 54, 14, 29,216, 63,190,226,230,195,192, 33,163, + 46,103, 61, 70,204,142,167,228, 46, 56,146,121, 67, 57, 72,159,127, 6, 77,233,163,186, 58,237,238,152,237, 45,126, 73,141, 99, +198,163, 1,133, 19,113,235,238, 90, 1, 53,206, 17,127, 8, 35,103,165,204,159, 1,236, 55,144,250,101, 75,210,183,203, 12, 14, + 51, 97,151, 3,102,101,226,215,203, 5, 35, 7,103, 61,214, 22, 83, 41,117, 18,186,197, 57, 61, 75,158,158, 45,156, 17, 14, 16, + 65, 80, 22, 26, 2, 31,208,188, 46,225,230, 74,129, 98, 50,237,142, 58,190, 81, 66, 51,160,158,108,151, 86, 52, 8, 53,114, 90, + 31,202, 74,165, 32, 0, 94,178, 9, 97,112, 1,150,110,175, 63, 38,116, 9,126, 70,165,148,148,129, 58,130,130, 38,125, 59,165, +148,131,230,245,185,128, 32,140,245,123,219, 64,140, 80,190,240, 64, 10,213, 44,120, 8, 84, 98, 72,242, 39, 50,250, 58, 52,193, +145,138, 0,186,212,247, 42,102, 53,251,132, 75, 9,203, 11,172,175,195, 57,133,253,186,184, 35,108,157, 75, 38, 72,158, 2,215, + 99, 93, 35,250,214,144,106, 44,110,255, 38,142,119, 48,232, 79,228,240,240,165,252,252,209,107,221, 43, 53,225, 65,130,243,199, + 1,199,194,200,195,112, 0,149, 65,169, 7, 25, 55, 32,112,161,160,147,208,121,230,114, 69,182,183,249,190, 43,137, 33,176,218, +221,216, 32,220,141,172,203,134,123,134,224, 6, 60, 24, 47, 52, 96, 51,174,195, 36,236, 44, 0,107,254, 31,253,202,251, 82,219, +221,150, 63,249,254, 39, 68, 82, 30, 62,123, 54, 71,122, 0,233,207,234,242,142,181,236,202, 7, 8, 12,134,212, 92,119, 14, 22, + 65, 6,200,120,168,181,151,212,142,224,236,193,240,163,172, 1,166, 60,117, 48, 18, 18, 34, 82,174, 71, 29,250, 23,168, 79, 54, +187, 3, 66,205,197,130, 19,147, 74,171,189, 65,217,136,208,172,254, 12,178,216,169,174,215, 88,157, 93,207, 79,200, 3,117, 48, +248,110, 4,117,105,117,144,112,166, 16, 31,242,194,105, 96,179, 86,163,126,167,175,206,188, 79, 52, 15,247, 21,123,159, 73,162, +117,172,175,235,216,214, 12, 26, 83,201, 10,174,164,226,143,228,162, 81,215,128, 54, 35,183, 86,203,242,245, 7,106, 11, 18, 64, +236, 38,242, 55,159, 0,162,183, 60, 99,176, 89, 44,127,133,112, 59,214,223,233, 38,184, 54, 44,232,170,131,131,132,233,108,185, +100,160,142,209, 17,236,198, 64, 34, 97, 59, 89, 30,112,193, 11,238, 21, 56, 13, 21,117,252, 14, 97, 78, 18,210,135, 77,133,224, + 10,120, 66, 87,186, 54,224, 44, 33,241,186,189, 81,150,135,175, 46,201, 67,192,175, 67, 67, 96,183, 8, 94,143, 38, 62,234,212, +129,186,246,135, 78,255,159, 45,133,211,128,200,210,246,230, 22,229,131, 27, 23,135,156, 30, 87, 41, 85,153,161,231,212, 46,190, +120,253,138, 65, 34,150, 0,246, 25, 8, 2, 52, 16,122,236,157,159, 50, 41, 75, 18,162, 71,194,213,215,239,188,197,225, 46, 18, +246,240, 27,227,120, 60,176,103,224, 52, 77,113,191,244,187,209, 6,124,133,128,116,165,194,182, 68, 71, 6,157, 48, 48, 64,185, +161,144, 47,144,220,137,224, 5, 42,157, 44,251,120,174,157,143,173,167,158,171,139, 91,207, 44,134, 39,205, 68,183,102,245,242, +232, 96, 42, 19, 87,211,156,253,187,179,205,102, 73,166, 53, 18, 32, 68, 6,111,153,136,110,199,181, 49,211, 33, 71, 7,162,103, +173,246, 64, 3,234,180, 44, 88,108,209,177,215,209,225, 85,215, 70, 96, 45,120,102,118, 38,179, 38, 55, 72,104,199,149, 52,231, + 29,180,145,209,225, 38, 50,251, 61,217, 56, 63,102,228, 13, 3,131,195, 60, 33,169, 6, 34,252, 1, 35, 38,168,174,193,209,163, +102,131, 11,136, 75,229,249, 99, 18, 55,216, 46,132, 62,109,182,187,168,209,107,250,236,229,206,103, 22, 35, 88, 97, 36,175,134, +104,205,209,207,202,163,151, 83, 8,129, 34,114,151,112,102,112, 69,163,176,223,248,213, 34, 13, 3,106, 72, 56, 20,232, 83,189, +188,108,235, 38, 38, 66, 85, 41,205, 54,218,150,132, 62, 10,254, 35, 35,128,225, 7, 12, 59,117, 83,140,212, 43,176, 53, 14,151, + 22,193, 7,122,223,127,241,172, 45,171,250, 14,117,205,176, 42,106,237,199,157,177, 84,171, 73, 66,246,156,220,117,112,161,145, + 41,144, 9,144,139, 82,242,181,183, 86, 24,100,212, 86,242, 60,200,157,182, 26,193, 66,158,223, 11, 15,150,207,105,198,148, 72, +147,244, 82,111,244,165,170,217,168,225, 36,186,132,232,254,202, 90, 46, 36,101,153, 48, 11,159,117,167,137,101, 93,171,165, 27, +208,155,104, 22,220,243, 67,141,122,247,115,222,212,132,210,135, 46, 51,196, 5, 34, 4, 45, 51, 34, 85,136,207, 32,186, 15, 33, +220, 20, 9, 62,200,126,117,207,198, 78, 4, 35, 65, 41, 78, 23, 33, 2,210,228, 57, 15,215,176, 63, 10, 88,167, 2, 68,202,131, + 22, 76, 73, 18, 12,144,225,240,222,120, 66,191, 30, 56,206, 3,156, 72,128, 73, 89, 40,189,120, 97,253,216,250, 60,188,157,161, + 35,244, 36, 45, 58, 6,220,155,160,173, 67, 8, 23,122,114, 60,242,229,188,209,147, 59,235,121, 13, 98, 82,106,168,199, 82,208, +115, 95, 43,232,119,249, 3,121, 11,253,200, 33,243,219, 69,230, 19, 26, 5, 4,237, 8, 36,132,117,242,153, 68,177, 9,251,159, +125, 57,208,236,252,240,120,172, 70, 43, 77,195,113,209,153,106,240,233, 90,161, 32,159,128, 44,191, 62,113,142,117, 20,120,204, + 12,240,116,229,124,138,231,252,234, 74, 51,178,114, 78,130,130, 83,168, 98,192, 5,146, 38,166, 11, 34, 56, 53, 35, 26,209, 41, + 74, 31,186,134,103,231,106,236,213, 58, 5,181,188, 12, 52,155, 71,173,121,168,191, 87, 2, 99,216, 56,227,137, 53,154, 96, 58, + 87,218, 57,120,114, 48,172, 93,160,120,128,221,129,122,233, 58, 21,117,157,123,250,193, 96, 44,247, 70,208,165, 31,201,103,143, + 31,137,209,224,225,170,141,154,100,150,136,217,241,217, 57, 25,200,184,230, 40,137, 20, 53, 91,194,179,158,156, 93, 56, 12,131, +227, 86, 39,122,102,171,172, 35, 55,218,109, 58, 81,231,252, 83,114,119,103, 75,206, 26, 13, 50,190, 17,132, 90,158, 37,127,209, +211, 31,146, 47,103,119,158, 2, 84,226, 72, 63,127,250,119,159,200,221,237,115,217,221,222,148, 35,205,182, 2, 58,170,192,245, +247,227,121,198, 35, 7, 27,235,115, 34, 8, 32,124,174,142, 90,194, 17,176,156,128,150,205,242,123, 88,131, 77, 77,185,191,112, +240,169,164, 67,244, 0,169,186,254,251, 41,201,184,224, 65, 84,113,129,244, 27,216, 58, 74,194,104,210,245,123,143,134,148, 45, +197, 80, 26, 19, 78,131,132,154, 27, 74, 71, 99,189,163,184, 67, 73, 12,242, 1, 18, 7,135, 63, 69, 7,204, 40,108,131,156, 58, +190, 5,116, 53,166,122,119,245,127,126, 34,195,210, 3, 96,211,124, 49, 35, 93,189,139, 19, 59,150, 65,167, 78, 88,122, 98, 29, + 76,140,121,239,227,244,216, 73, 13,251, 25,181, 49, 3,181, 9,129,252,242,131, 77,121,113,218,210,204,123,200,119, 0,178,143, +255,161, 62,141,245, 6,138, 1,164,100,107, 3, 2, 51,101,249,252,241, 99,215,102,233, 39, 24,196,190, 57,107, 73, 10,168, 75, +224,133, 19,213,210,108,177,203,102,179, 68, 76, 75, 32, 30,163, 31,223,115,165,133, 66, 38, 39,103,154, 61,231, 18,150,157, 13, + 64, 21,158, 31, 91, 89,211, 4, 4,182,118, 24,142, 65, 77,232, 63,119,115, 53, 66,255, 32,242,130,100,135,137,103, 64, 28,113, +111,225, 56, 55,214,183,228,226,252, 72, 46, 53, 96, 41,230, 93, 59,231,218,218, 26,145,192, 71, 79,159,240,192, 22, 50,233,185, +238, 0,208, 24,148,102, 73,154,213,125,202,232,179,228, 51, 25,233,117, 91,186, 7, 80, 5, 77, 59, 29,253,193,152,229, 52, 4, +109, 62, 53, 19,124,150,115, 17,176,192, 41,143,237,136, 73, 73,128, 86,189,139, 58, 19, 72,112, 57, 28,137,214, 77,201, 67, 66, + 55,133, 38, 94, 50,197,243,202, 50,170,204,164, 96, 77, 76, 58, 59, 38, 24,199, 22,105,111, 33,102, 53,159,209,225,205,117, 55, +102,243, 48,100, 89,157,243, 6,177, 23,107,174, 87,175,237, 13, 53,109, 74, 42, 79,220,160, 32, 8, 2, 45, 79,176,180, 54, 58, +175, 66, 98,127, 22, 27,250,100, 34, 99,199,151,213,202,162, 29, 80,215, 52,226, 35, 1,194, 44, 17,164, 22,160, 30,114, 13,164, +152,137, 7, 26, 73,162, 6, 11,193, 7, 74, 6,122, 46, 51,155, 76,156,214, 57,224,179, 53,181, 74,187,181, 52, 47, 4, 72, 91, + 70,163, 80,108,228,105,103, 36,167,151,125,217,168,169,129,152, 36, 66, 65, 17,143,151,227,139,167,103,136,199,228,183,126,253, + 29, 26, 18,235,245, 9, 23, 35, 2,199, 10, 78,116,227, 87,215, 82, 97, 93, 50,193,108,117,168, 25,202, 17, 33,196,128, 81, 30, + 14,196,233,229,144,189,150, 89,227, 19,206, 15,194, 44,119,134, 91,248,250,124,233,140, 19,125, 1,179, 20, 4, 62,100,165,168, +131, 83,139, 88,109, 69,181, 92,212,204,119, 72,214,103, 85, 51, 59,200, 44, 30, 99, 6,114, 38, 41, 59,155, 5,102,154,132,247, +144, 97,161, 30,220,234,107, 6, 55,101, 45,223,183,105,167,130, 37, 46, 3,184,179,183,226,212,242,194,225, 41,154, 59,139, 38, +140,204,234, 81,171,199, 93, 66,171, 31,178,231, 74, 46, 77, 71,131,212,170,128, 90,162,102,130,221,145,171, 13,227, 75, 89,119, +181,118, 46,151, 30, 24, 55, 97,204, 15, 29, 48, 97,220,144,216,134,195,132,192,133,156, 1,117,216, 5, 64,241,192,226, 3, 39, +216,192, 76, 9,196, 19, 68,207, 36, 25,186, 76, 31,151, 31, 57, 38, 56, 14, 48,116,168,229, 50,155,132, 60,227,200, 15,153,231, +128, 46, 51,178,189,230,133, 53, 76, 55,234,179, 3,163,161,151,175,215,110,170, 49, 27,176, 39,118, 37,159,112, 1, 32,164,123, +117, 67, 51,198, 57,183,148, 6, 63,247,110,149, 88, 55, 67, 75,209, 68, 29,102,202,239,202,121, 93,200,174, 79, 99,188, 47,186, + 42,230,252, 0, 87, 15,189,184,130, 30,193, 64,222,221,205, 81,213,236,106,226, 8,114,112, 55,129,239,120, 30, 48, 30,191,248, +242, 66,106,213,162,220,191, 91,115,193,104, 72,158,225, 88, 74, 73, 80, 22,248,224,188,199,232,245,157,237, 28,207, 92, 7,142, +222, 80, 62, 77, 51, 60, 32, 2, 78, 17, 17,123,211,211,165,235,219, 44, 89,233,154,148,235,251,164,165,175, 6, 24,226, 38,216, +231,151, 7,109,201,171, 83,221, 44, 76, 73,140, 68,112,214,209,140, 11,235,104, 39,104, 59,115,252,113,116,112,128,220,196, 90, + 52, 28,123, 56,122, 24,231, 26, 19,182,112,159, 32,239,137,125, 84,187,172,103, 4,227, 61,251,242,226,233, 23,114,166,239, 94, + 40,148,233,252,186,189,115,105, 52,155,236,203, 70, 28,181,181,182,170, 1,106,151,176, 40,235,164,200,130,213,169,161, 77, 11, +122,224,103,141,166,147,174,132, 46,130,126,239,198, 74,149,237,102, 24,208,225,148,246, 28, 17, 15,217,236, 76,169, 43, 21,150, +170, 38,126, 72, 94,149,153, 88, 70, 64, 57, 89, 24,169, 35, 13, 44, 2,113,202,123,211,145,107,159,195,103, 82, 99, 93,179, 97, +252,251,152, 51,189, 93,107, 28, 32, 90,103,128,157, 45,130, 96, 77, 32,174,211, 3,255,153,137,137,224, 89, 8,191,163, 47,154, +153, 95,146,200, 85, 65,207, 20,202, 83,245,171, 46,137, 92,169, 4,132, 92,134,204,122, 17,184, 77, 67,253,123,156,133, 49,103, +154, 27,214,152, 45,187, 52,220, 29, 71, 59, 46,230,202, 15,212, 62,180, 59,186,126, 22,130, 46, 61, 55,107, 2, 65,152, 6, 1, +233, 76, 81,157,140,171, 43, 15,198, 41,218,169, 66,113, 69,207, 87, 70, 38,253, 22,154,255,244,158, 20,244, 76,184,128,178, 63, +232,202,143,191, 56,146,111, 60,216,150, 15,223,189,171,217,189, 47,247,183,234,242, 87, 31,189,148,122, 87, 29, 87,210,241,116, +112,119, 74, 44, 21,232,174,250, 16, 1,202,201,254,233, 5, 3, 50,181,253,180, 5, 89, 48,239,123, 19, 87, 75, 14,220,187, 80, + 58,215, 56,248, 28,118, 14,179,212,209,174, 89,208, 53,174,104, 22,220,174,150,228,178, 30,206, 93,247,220,157,188,184, 66,144, +130,154,190, 35,255,162,180, 24,168, 45,110,107,128,210, 27,246,157,224,205, 52,173,246,109,202,242, 89,161, 84, 35, 1,237,249, +139, 39, 50,213, 0, 39,151,175, 18,113,221, 8,209,156,243,139, 51,106,180, 35,184,160, 58, 39, 2, 50,104, 32,248, 46,192,198, + 62,129,172,251,224,222, 91, 50, 29,246,228,104,208, 97,245,200,159, 76, 89, 42,162, 94, 6, 7, 43, 77,184,103, 96,173, 3, 45, +157, 53, 48, 19,105,212,119,223,217, 94,167,222, 62, 8,137, 77, 13, 92, 70, 68,199, 2,138, 0,193,130, 98, 54, 1,184, 5,199, +167, 87,124, 14, 92, 0,216, 17,218,191, 80, 74,124,238, 16,231,147, 46, 77,100,214,198,140,227,118,125, 88,138, 44,143,160, 88, +250, 17,187, 84,235,182,209,214,178,153, 83, 13,230, 19, 80,169,198,231,207,180, 30,102,179, 57, 34, 84,246, 96,140, 86,223, 84, + 68,225, 46, 70,145, 91,234, 48, 54,215,100,183,173,216,155,132,230,228, 90,218, 62,215, 30,113,227,116,147, 88,108, 24, 67,176, +101,133, 80,137,199, 94,237, 12,153,201, 30,179, 22,212,202,198,232, 55, 29, 3, 2,118,209,179, 13,135,220, 35, 66,236,141,157, +220, 35,220, 78,187,221, 1,150,202,108, 15,159, 11, 88,252,240,168, 37, 37, 61,152,193, 8,135,205,147, 6,218, 97,208, 51,190, +226, 28, 23, 46, 37, 14,135,203,210,199,252,255,235,213,188,164,223,246,228,188,173,198,103, 63,208,172, 33, 73, 22,106,227,178, + 37,187, 59, 85, 70,163,189, 78,139,136, 71, 50,149,156,183, 56, 77, 39, 14,166, 27,243,176,120,132,127, 26,237, 49, 71, 34,226, +125,144,209, 17,214, 70, 43, 93,119, 72,149,162, 59,187, 69,185,181, 85, 20,148,193,177,224,168,177,206, 88,142, 16,186, 1,132, +219,237, 88,169,173,150,244,253,211, 76, 39, 1,239,229, 74,185,176,165,194,177,152,199,250,174,232, 97,133, 52, 34, 46,206,134, +190, 67,179, 55, 97,166, 60, 64,139, 94,202,208,232,103,211, 66,146,141, 31, 18, 67, 80,207,153,132, 82,138,126, 88, 87,129, 51, +182,161,192, 15,102, 78,207,100, 68,109, 8,227, 67,115,199, 15, 97, 95,192,186,189,222,152,153, 58, 39,201, 97,144,132,117,226, + 62, 1,161,176, 4, 47, 26,190, 27, 44,226, 68, 48,118, 36,192, 16, 46,157, 13,187, 97,237, 30,149,231, 68,154,168, 76,116, 86, + 42,141,183,126, 89,179, 53, 96,157,127,109,165,196,190,210,158, 26, 51,156, 1,244,203,154,176,133,134,165, 7, 24,134, 84, 86, + 46, 71,105,169, 38,199,146, 93,205,235,115, 76,228,224,228, 74,238,110,230,152, 65, 57,205,243,192,189,159,254,255,118,167,175, +127,223,147,119,183,211,156,161, 13, 87,137,207, 2, 63, 96, 38, 92,180,161,123,112,103,119, 36,103, 26,224, 65,213,202,159,234, +185,178, 41,174,157, 13,137,105,142, 7,162,217, 74,115, 32,149,244,148,132,195,100,182,168,199,210,147, 91,181,172,180,199, 14, +125,152,134, 23,178, 51,242,228,228,234,138, 4,166,189,141,172,228,203, 73,142,218, 28,170,161,172,148,243, 52,126, 53, 61,211, + 5,111,194,243,129,118, 29,148,122,154,122,169, 87,178, 26,160,165,212,144, 77,157, 60,234, 80, 51, 35, 4, 42,169,144,209,139, + 0, 25,155,148,152,250, 51,181, 87,102, 41,199,199, 71,114,112,116,198,115, 34, 94, 94, 86,202, 5,102,168, 47,247, 95, 19, 81, + 64, 0,134,115,140,214,180,203,250, 5, 13, 33,157, 57,219,203, 18,122,119,106, 12, 86,207,155,173, 80,192, 72,232, 48,171, 48, +136, 23,151,115,189,192,153,234, 20,178, 9, 71, 18,195,222,213,220, 52, 44, 19, 25,104, 17,182, 9,229, 52, 19,171,150,212,233, +232, 25, 33,217,211,115, 51,220,145,205,163,118,139,192,193,112,150,253,132,226, 53,179,217, 8,188,123,190, 63,135,244, 1,185, +163, 76,128,239, 70,166, 6,116, 8,159, 1,117, 73, 24,103, 4,136,248, 61, 60, 51,218, 72, 49, 59, 29,176, 58, 62,231,172,222, +101, 0,130, 6, 17, 56,137,132,113, 1, 18,101,169, 17,176,195,210, 4, 99, 66,179,120,207, 73, 24,240, 97, 36,170, 27,229, 42, +204,226,249, 25, 99,200,167, 14,136,174,193, 94,121,185,156, 6,165, 87, 68, 36, 88,114, 68,199, 15, 96,125,160, 22,169,146,116, +160, 59,209,191,146,228,164,171, 54,174,204, 86, 93, 36, 25, 32,212,253,189, 58,189, 95,123,127, 79, 62,184, 85,148, 86,243, 82, +246,214, 74,186,119,125,135,126,232, 90,128, 64, 12, 69, 57,148,114,160,115,209,235,117,228,238,214,138,188,183,183, 42, 71,199, +135,178,127,214,147,219,219,121,217,219,173,241,119,192,237, 72,176,172,144,112,200,173,113,173,160,125,142,155,117,214, 28,229, + 61,212,228,241,127,152, 9,235,122,108, 84,242,210, 86,103,141, 51,130,250, 52, 7,227,164, 50, 84,198,235,143, 58, 28,151,139, +251,112,214,112, 76,254,221,157, 29,182,142, 61,125,242,133, 6, 52, 73, 34,124,171, 43, 21,201,228, 75,242,250,240,141,180,218, +109,174,125, 16,118,197,224, 94,224,140,246,250, 14, 89,193, 20, 56,140, 96, 15, 64,144, 46, 84,212, 38, 55,121,144,129,224,224, +153, 18,105, 55, 84,107, 54,167,128,164, 61,223, 57, 96, 23,140,187,137,109, 64,123,159,191, 60,213,128,216,181, 7, 99,106, 32, +206, 19,203, 96,214, 33, 65, 25, 13,214,129, 6,116, 58,135,161,244,247, 84, 3,106,136,208,164,216, 50,200, 0, 40, 17,182,166, +145,185, 34, 33,252, 30,159, 91,101,163,208,181,185,145, 91, 22, 78, 56, 51, 49, 77,231, 25,236, 62, 27,146, 18,109, 25,155, 3, +230,161, 88,205,100, 50, 9, 17, 12,143, 9,213,178,218,228, 92,214,194,216,175, 16,178,137,100,222,118,166,140, 97,151,134,193, +176,224, 31,239,203,143,185,241,200,159,132, 66,100,201,169,157,145, 61,194,154,175,134,148, 1, 72, 87, 32, 15, 37, 93, 91, 69, + 48, 52,236, 63,221, 66, 97, 81, 13,213,121,223,213,109, 65,144, 71,237,111, 56, 10,168,244, 6,184, 41,201,204, 4,178,175, 29, +169, 55,186,114,116, 62,116,132,171,161,102,243,103, 23,114,111,187,202, 75,146,211, 3, 53, 13, 12,225, 36, 56, 73,144,220, 0, +231, 56, 66,133,107,121, 89,171,230,228,178,231,201, 89, 91, 55, 94,179,191,157,213,140,116, 53,115, 30,214, 10,146,201, 25,146, +175, 96,196,225,224,167,214,193, 56,104,237,154, 12, 93, 77,241,236,178,175, 78,117,170,135, 82,141,157, 30, 98, 8, 64, 32,107, + 72,166,243, 28, 71,201,118, 10, 77,153,198,195,182, 46,106,150, 25,165,111, 82,234, 36,125,182, 92, 0,146, 10,208,162, 86,200, +203,184,221,211,231, 83, 7,134, 78, 1,100, 17,104, 67, 73,250,148, 92,108,235,165,202,103,115, 28, 22, 65,195,109, 92, 45, 28, +239,145,101, 95,117,154, 61,175,144,165, 77,234,229, 27,232,191,247,209,119,157,205, 18,178,197,214, 36, 66,178,159, 63,107,247, + 19, 19,246,103, 35, 96, 8,187, 4,124,151,137,121,172,213,154,185,113,101, 16, 2, 34,163,231, 4,115,112,153,219,189,169, 51, +242,229,180, 6, 43,142,133, 62, 25,250, 52,236, 99,136,180,120, 83,102,161, 65,216,247,233,133, 68, 37,200,137,166,192, 52,179, +161, 80,140, 93,204,176, 7,211, 26,151, 15,240, 58, 10,162, 36,193,235,250,156,214,251,204, 62,186,253, 49,215, 12,217,212, 74, + 49, 45,155, 91, 25, 89,205,107, 86, 23,244,213,112,102,228,238,122,158,209,109,107, 0,166,241,156,130,198, 44, 10,169,203,134, + 58,254,139,122,143, 93, 8, 83,253,142, 84,216,118,146,154, 17,248,117,167,183,212,169,175,215,138, 26, 92,244,217,121,129,242, + 14,244,220,215, 75, 8,250, 82, 44, 61,180, 53,115, 46,102,245, 28,174, 87,168,115,237,107, 70,249,222,219, 25,185,210, 12, 46, + 49, 29, 74,144, 42, 58,110,128, 26,145,177, 77,200, 73, 3,193, 70,155,202,116, 9, 13,107, 86,245, 76,175,169, 99, 7, 25, 80, +115, 75,221,195,172, 28,169,163,185, 80, 99,184,149, 83, 35,147,112, 76,100,171, 6,233,164,111, 41,109,185,146,135,179,204, 72, + 61,103,229,209,241,128,243, 8, 80, 27,220,170,229, 29, 58, 21, 18,178,120, 64,116,205, 47,207,206,228,251, 63,254,148, 26, 15, + 61, 4, 87, 83, 55,119, 26, 50,161, 56, 75, 80, 90,195,143, 15, 72, 98, 74,168,193,198, 4, 66,159, 83,196,242,106,212, 81, 54, +185,210,236,157,245, 79,240, 25, 80,246,210,204,238, 88, 51,116, 19,246,151, 3,190,132, 67,238,135,250,219, 56, 59,187, 91,155, + 97,118,228,218,235,172, 31,204, 21, 9, 29, 71, 99, 36,223,255,228, 75,189, 3, 30,247,113, 50, 14, 66,114,220,128,231, 12,159, + 1,103, 73,231, 26,248, 97, 43,171,117,162, 48, 83,167,195,143,231,133, 97, 31,133, 89, 60, 78,208,120,226, 72,118, 89, 56,168, +144, 20, 74, 62, 12, 52,217,115, 25,217, 89,175, 18,125, 25, 65, 65,175, 61,144,119,238,222,146,111,191,127, 95, 46,251,137,249, +116, 58, 54, 17,169, 29, 8, 52,251,129,182,125,127,210,225,144, 40,148,249,250,131, 30,109,211,140, 32,152, 72, 39,230,242,194, + 88, 7,144, 71, 38,128,255,217, 72,145, 32,212,141,125, 1,211, 29,236,236, 62,207, 54,156, 6,178,244, 36, 53,159, 77,183, 73, +254,205,112,132, 78,141, 33,247,231,103,143, 53, 32, 31,109,202,118,101, 67,138,197,129, 36, 53, 99, 70, 9, 6,223, 5,244,224, +205,233, 25,229,111, 17, 60, 1, 85,202,231, 82, 26, 0, 92,241,238,162, 21,236,229,193, 25,235,230, 41,174,139,149,205,181,154, +252,202,215, 63,100,208,245,252,197, 11,218, 70,244,131, 59, 14, 83,134,118, 44,145, 64, 32,148, 32,193, 15,107,129,214, 98, 40, +110, 2, 37, 75,178, 68, 90, 36,162, 2, 56, 27,252, 24,232, 76, 4,122, 97,135, 19, 79,118, 54,183, 56,176,230,252,252, 88, 74, + 80,105, 43,173,240,231,209,226,251,226,229, 11, 71, 74,134,230,193,192, 17,160, 97,143, 1, 41,227,255,131, 28, 90,204, 23,216, +229,228,233,218, 84,202, 53, 38, 0,224,115, 96, 47,146,105,143, 42,114, 16, 24,194,179,145,195,144, 76,206,213,210,188, 80,227, +221, 75,184, 78, 16,148, 70, 64,248,244, 79,155,124,198,153, 42, 40, 72,119,176, 95, 88,163,161,222,253,239,255,232,177,180, 91, +117,151, 84,194, 6,235,185,127,248,229, 27, 13, 96,167,174,174,159,118,112, 61,234,251,236,181,207,165, 29, 1, 59,157,114,154, + 30, 8,132, 80,247, 71,146,147,112,147,242,108,152, 40,197,187, 77,163,202,156, 50, 79,156,162,140,249,248,132,118, 27,203,232, +177, 86,105, 36, 16,122,183, 51,185, 68, 76,212,107, 62,123,195,134, 83, 24,205,191,105,232,140, 93,140,144,157, 73,221,154,136, +108,103,108,222, 68, 68,117,211, 46, 16, 11,107, 23, 79,155,132, 80, 3, 25,192,190,211,168, 77, 38, 28,100,238, 37,179,132,148, +174, 52,123, 90, 93, 95,151, 36,136,107,161,145,247, 67,125,119,107,176,112, 96,111, 58, 77,118, 2,196, 94, 98,174,115,221,211, +104,242,226,106,196,168, 50,165,118,224,251,159,156,201,163, 87,154,105,111,215,100, 15,164, 37, 50,205, 45, 97,207,132, 31,246, + 82, 7, 97,180,111, 93, 47,111, 50, 53, 97, 70,248,147, 79, 46, 88,147,221,170,130,173,115, 37,173,190, 51, 42,200, 72,243, 56, +164,201, 36, 47, 4, 72, 23, 9, 24,123, 53, 50,141,102, 79,170,122,105,222,121,123, 75, 90,234,232, 1, 49,253,230, 7, 27,242, +228,196,167, 19, 51,137,172, 26, 98, 44, 98,211,137,175, 96,224,131,113,245, 80,120, 25, 48,148, 81,227,193,225, 64, 22,140,250, + 82,183,211,101, 68,186,178,186,162,198, 56,144,173, 66,146, 70,200,215, 67,253, 96,115, 77,141,208, 68, 58,186, 6,187, 8, 34, +244, 66,163, 92,112,210,241, 9, 29,226,162, 34,120, 65,130,138,250, 91,161,152,117, 7,206, 10,117,174,173, 31,204,135, 15, 16, +246, 18,119,168,251,157, 54, 29, 89, 79, 29, 60,158, 13,181,114,212,198,199,168, 17,250, 14,161, 72,231,178,244,124, 64, 32, 78, + 47,250,154, 37,141,212,128, 23,213,248, 88, 18,232, 0,111,215, 10, 9, 53, 8,234, 52, 39,105, 74, 95,162,118,157, 52, 14, 98, + 22,182,139, 7,140,136,131,208,232, 99, 23,113,225, 92,187,142,149,231,251, 77,117,210,129,236,173,164,244,243,123, 12, 88,192, +120,191,108,140,194,203,231, 0, 32,100, 84, 48, 40,149, 66, 86,214,213,169,103,189,156, 67, 3,160, 86,182,145,151,207,246,219, +188, 24,197, 98,142, 53,224,153,102,121, 78,247,240,150,102,202, 56, 73, 83,187,208,107,103,137,194,179,225,196,166, 41,247,110, +123,189,196, 11, 12, 3,247,236,245,149,148, 31,148,100, 71, 29,113, 71, 13,247,225,105, 95,179,143,177, 6,114,154,105,233,158, +213,138, 8, 24, 71, 44, 27, 76,135,125, 18,225, 78, 19, 67,150, 66,122,166,160, 25, 63,136,148, 67,125, 30,140,153,156, 72,173, + 60, 80, 87,158,145,177,238,249,177,190,219,116,220, 97, 16, 87,206,142,228,243,179,174,188,179, 91, 37,243, 31, 76,107, 72,169, +122, 84,213,242,228,170, 55,113, 98, 41, 97,237,179,164, 65, 31,148,197, 70, 19, 39, 62,129, 12,252,135,159, 61,162, 40, 7,224, + 71, 56, 16,177, 5, 57, 61, 63, 39,188,190,183,181,195, 32,233,184,238, 68, 69,210, 97, 15,120, 81,179,203,225,196,193,222, 80, +102, 67,134, 2,231, 11,199,208, 33,251,220,205,188, 62,173,215,195,182, 60,189,199, 54,201,214, 67, 39,184, 3,103,154,146,123, +123,187,234,116, 46,244,115,202,226, 52,118,194,122,158, 62,107,171,231, 83,114, 25,142, 7, 42,118,112,174, 24, 43,137,207, 64, +118, 56, 13, 91, 12,135,193,104,214, 33,201,179, 54, 51, 57,126,216,103, 78,109,116,148,141, 66, 82,104, 50,225, 58, 45,240, 30, + 9,207, 11, 69,146,198, 60,231, 24, 6,243,173,183,118,228,222,206, 42,201,168,133,188,102,204, 70,215,185,154,151,127,244,155, +239,201,127,248, 59,223,144, 63,252,235, 87,242,240,243, 17, 3, 10,148, 38,136, 54, 76,199,116,194,200,236, 18, 9,199,118, 71, +112, 58, 28,104,144, 3,216,189,221,144,222,192, 57,124,160,102,112, 66,104,185,236,247,154, 84,157, 76,120, 5,233,250, 3,182, +123,141,186, 93,102, 56,104, 5, 76,121, 89, 62,111,189,217,209,247,244,152, 33, 7,211, 1,245,227,213,124,235, 59, 4,210,214, +187,248,108, 95,239,180,102,197,247,183, 86,101,255,164, 33,251,234,164, 18,155,154,132, 96,162, 90,185,236,218, 45,197,241, 94, + 96, 67, 51, 80,217, 12,146,156,210, 85,214, 51, 15,233, 91,168, 78,130, 99,128,201,109,144,240,125,185,127,202,192,105, 99,181, + 42, 27,107,107,204, 96, 81, 10,157,181, 99, 66, 68,171,219,115,153, 42, 68,158, 54, 42, 9,218,207,146,102,222, 29, 50,211,123, +180,189, 43,133, 12, 3,200, 98,165, 70,190,197,225,241,190,116,219, 93,118,240, 0, 90,223,217,218,230,144,154,131,195,125, 6, + 98,176,107, 54,228,103,160,196,129, 97, 54,135,231, 13,201,176, 36,146,145,180,245,217,178,230,153, 60, 21, 10,209,117,131, 86, +217,209, 80,239,169,174, 55, 18,145,166, 38,112,126, 40,172,196,119, 14, 7,176,192,137,130, 40,237,135,211,237, 16,204,136,175, + 65,245, 40,193,115, 53,155,237, 1,254,211, 8,226, 53, 35,167,173, 63, 98,151,133, 67, 34,129, 0,160,132,130,243,145,209, 64, +158,181,248,208,153,129,199, 65, 97, 36,142,210, 53,124, 63,114, 2, 52,192,197, 16, 39, 34, 65,128, 69,197,206,121, 66, 9,138, +120, 57,247, 7, 30, 6, 73,138, 33,191,196,145, 90,147,204,252, 17,152, 38, 34,138,162, 30,147, 24, 71,218,163,156, 50,128,238, +192, 5,198,220,239, 96, 38, 91, 27, 72,204,135,123,145,222,246,155,243,244, 69, 73,193, 44,164,182,103,217,253, 60,123, 15,229, +164,109,100,158,156,141, 76,139,164,100,123, 88, 67,211,128, 45,195, 31,193,166,218, 57, 12, 16,246,145,131,252,133,113,165,212, +248,237, 59,117,181, 16, 10, 38, 41, 38,188,212, 80, 49,179,198,101, 77,128,148, 81, 83,214,144, 64,141,164,102,103,123,105,217, +216,244,121,209,135, 35, 95, 94, 30,117,229,222,157, 77, 94,182, 68, 34, 57, 39,131, 0,102, 65,198,198, 17,141, 41,231,160,241, +208, 1, 24, 50,129,203, 16,235,237, 17,165,106,251,221,129, 19,121,208, 75,148,175,172, 73,169,182, 78, 3, 71, 72,112,226,178, +104, 68,242,247,238,104, 86,185,186, 74,167,220,190, 26, 74, 73, 95,110, 75, 47,195,211,134,149,150, 58,169,247, 55,212,248,168, +161,223,222,210,104, 52,227,156, 27, 5,241,211,249,249, 0,122,182,175,193,144, 36, 19,161,232,138, 83,200, 35, 64,175, 27,253, +236,162, 71, 70, 49, 18, 16, 63,108,105,130, 60,226, 0,208,191, 30,240,103,175, 47,229,232,188,195,136, 29,207,136, 67, 94, 44, +229,101,125,163, 66,132,194, 11,213,203, 92, 59,148, 43,121,224,192, 76,216,214,229,145, 97,155,128,174, 54,167, 39, 45, 6,206, + 88,146,177, 38,100,105,207,178,118, 36,221, 83, 93,199,170, 26, 69,192,190,119, 55,146,108,239,226, 16, 76,100,249,122, 96, 55, + 43, 25, 57,109, 14,164, 51, 73, 56, 40, 20,123, 96,166,100,225,226, 38, 81, 77,206, 75,211,121,162, 85,200,103,111,124,210,205, + 49, 54,174, 29,197,132,157, 12, 24,106,209,188,234,146,224,149, 74,186,115,193, 73,119,104,103,210,247, 45, 39, 80, 91,155,200, + 16, 65, 71,194,245,104, 35, 8,216,172,104,246,130,190, 85, 68,238,104,209,225, 57,114,172,233, 9, 4,128,134, 66, 3,223,167, +200,135, 94,240,176,205,204, 11,123,169, 61,227,180,220,177,100, 24, 64,129, 33, 25,216, 3,180,251, 92, 1, 5,200,167,101, 85, +179, 89,167,132, 88,117, 25, 61,152,197,154,117, 77,212, 80,193, 9,118, 45, 32,207, 4,117,210,167, 96, 90,235, 89, 93,219, 90, +225,180,194,173, 66,192, 41,126,251, 23, 35,105,246, 12, 85, 17,239,149,245,140,246, 27,242,242,205, 21,131,155,119,239,148,168, +109,144,207,105,166, 2, 78, 9,122,157,195,251,144, 8,134,116, 60,102,232,233, 26, 7,114,222,118,206, 21, 48,231,203,253, 55, + 26,116,212,165, 84,172,176,206,250,234,232,136,236,118,212, 64, 81, 39, 7, 41, 9,114,171, 16,228,216, 94,219,145, 79, 30, 63, +149, 23, 71,199,204, 72,112,183, 42, 26,192,238,110,110,240,172,160,173, 13,107,129,169, 94,248,189,170, 26,101, 84,236,177,207, + 8, 26, 97, 92,207,175, 58, 82,213,223,193,120, 84, 12, 70,129, 81,124,173,142,232,211,167,199,242,193,189, 77,194,208, 63,124, +120, 44,127,244,253, 47,164,144, 10,228, 31,254,210, 45, 57,107,180, 72, 2, 68,246, 8,148, 98,166,244, 56, 27,133,137,189,194, +254,207, 36,125,157,212,243,148,142, 63, 17,102, 18,184,135,179, 33, 31,201, 80, 96,199,114,223,156,156,234,230, 74, 78,238,108, +169,227, 41,229, 24, 76,129, 28, 85, 46,107,144, 7,148, 78,207,206, 6, 16, 61,253,156,127,242,157, 45,249,147, 63, 11,136, 88, + 77, 38, 33,113,210, 0,113, 88, 85,219, 48, 38,178,129, 82, 9,136,171, 72, 78, 96, 87,134,152,240,232,187,206, 24, 58,207, 65, +155,129,102,189,175,129, 5,248, 31,134, 45, 3, 68,144, 80, 46,193,121,158,234, 93, 64,137, 16, 93, 28, 32,141,162,141,106,164, +206,103,164,182,168,144, 97, 39,181,248,169, 2,219,232, 32,197,219, 87,123,120,114, 17,200,206,198,154, 60,184,255, 22,187, 42, +142,207, 78,101,107,125,147,114,208,128,156, 49,154, 19,104,100, 54, 91, 12,249, 4, 5, 61, 47,200,146,179, 82, 74,105,144, 49, +186,144,114,169, 38,199,167, 13, 13, 58,251,154, 96, 20,156, 19, 4,113, 81,223,179,219, 25,184, 14, 7, 31, 45,172,186,142,234, + 88,241,221,224, 3, 13,201, 95, 48,122,143, 70, 46, 67, 78,184, 14,134, 86, 55,144,149,149,117,218,145,231, 47,190,100,119, 79, +185,186, 74,101,184,187,119,246, 56, 8,235, 82,159, 51, 49,203, 63,131, 89, 6, 26, 48,160, 11, 76, 78,238,110,175, 83,119, 62, +175,119, 37,147, 24,203,189,183,191, 73,206,209,133, 6,141,208,131,255,213,175,239,201,255,254, 93,135,108,116,245,108,160, 85, + 15,122, 2,150,156,159,177,107, 13, 37,100,237, 80, 19,240,125,240,217, 8,130, 49,100, 40, 55, 9,216,117,195,132, 38,112,124, + 46,170, 44,218,177,147,217,213, 59, 9, 13,120, 24,225,161,254, 30, 74,166,249, 76, 49,108, 33,246,200, 1,154, 65,227, 64, 1, + 38, 68,129, 18,146,156,186, 36, 17,237,209,240, 85,176,133,116,210, 18,146,127, 67,177, 43,190,173, 31,132,186, 18, 78,244,138, +106,158,198,241, 63, 12,215,211, 35,143,138, 50,212, 16, 86,130,134, 1,202, 3,233,244,156, 71,210,208,224, 27,140,125,188,195, + 68,131,252, 32, 64,103,152,126, 94, 38, 25,198,203,174,160,225,148, 63, 23,207,187,144,162,142, 12,188, 12,179,127,179, 68,147, +183, 17, 18,128, 93, 30, 51, 21, 33,209,205, 90,243,168,253,222, 31, 47, 10,253,174,113,222,101,219,248, 79, 74,179, 3,144, 43, +218, 26,137, 13,123, 45, 89,215,204,199,203, 84, 66,118,161,147,234,156, 73,156, 82,111, 59,225, 96, 70,100,147,233,108, 86, 13, +137,209,131, 84, 34,233, 6,117, 28,244, 77,191, 57,185, 34,147,189,213, 26,205,123, 30,177,169, 20,134, 9,117,186,193,171,249, +250,157,178, 60, 63,215, 72, 40, 3,135,226, 83, 15,222,179, 78,161,202, 98,212, 33,234, 80, 32,177, 76,213,208,131,180,148,119, + 25, 7,140, 7, 28, 15,216,210,155, 59,107,154,113, 56, 2, 13,218, 75,208,206,146, 12,220,212,247,141, 98, 74,222,174,234,103, +105,228,140,122,217,213,196,145,213, 0,225,152, 16, 66,194,198, 67, 40,134, 35, 96, 65,238,130, 19,166,196,160,139,214, 38, 67, +244,109, 59,105,200,182, 70,241,143,206, 93,107, 28,106,145,234,194,229,229,197, 64, 62,126,114,169, 89,118, 65,246,110,131,144, + 50,150,253,253,134, 20,122,152,201,174,153,129,153, 50, 16, 42, 21,146,172,173, 35, 19, 34, 65, 69, 13,145, 81,167, 60,214,108, +181,167,159,219,133,160,196, 52,212,186,159, 78, 92,240, 96,237, 92,222,211,145,109,156,210, 25,106,104, 80,227,218,222, 72, 17, +225, 32,195, 86, 92,171, 27, 46, 61, 34, 90, 76,115,106,118,144,237, 4,122, 88,115, 36, 14, 34,160, 33, 91, 24,239, 23,104, 80, +228,249,106, 60,176,183, 41,183, 79,122, 24,239,221, 42,203,160,235, 49,176,131,227,152,134, 4,159,213,106,158, 78, 29, 78, 30, +194, 64,248, 70, 72,255,142,212,169, 1,225,129,176,204,110,222,137,187, 92,249, 73,201, 20,211,178,157,247,229,181, 6, 68,175, + 53,200,115,162, 29, 78,121, 11,235,113,123,187, 68,185, 87,150, 37, 66,201, 91,142,116, 12, 28, 26,128, 59,157, 74,186, 81,171, +248,187, 91, 36, 56,170,145, 84, 47,137, 96, 10,207, 50,235,127,165,152, 82,216, 83, 10,246, 55,137, 90,112,132, 99, 75, 67,208, +132, 48,142,160,214, 91, 96,246,119,127,213, 35,177,232,103, 95, 52,229,209,203,150,220,189,191, 37,123,107,105,201,219,174, 52, + 80,247,213,247,134,246, 54,122,230,119,214, 10,186, 46, 99, 71,132, 97,180, 46,204,158, 38, 67, 53, 74,255, 31, 87,239, 21,100, + 75,118, 93,137,237,204,235,189, 43,111,159, 55,237,209,104,120, 16, 32, 9, 18, 36,130,193,209, 80,102, 66,154, 80,140, 38,164, + 95,125,234, 75, 63, 19,250,213,191, 20,138,152, 96, 40,244,163, 24,141,134, 49, 65, 98,104, 68, 82, 3, 96, 64, 52,218,160, 13, +250,181,121,254,189,122,229,235,222,186,117,189,203,155,153,218,107,237,115, 11, 61,234,142,138,126, 93,239,154,204,147,231,108, +187,246, 90,250,223,246, 64, 3, 12, 53,222,159, 61,218,151, 79, 30, 62, 35,187,226, 96, 98, 68, 52, 24, 85,195, 44, 52, 50, 57, +148,128,235,229,170,205, 42,107,224,209, 81,231,239,147,171,222,104,119,241,157,112,142, 83,119,156, 97, 36,224,248, 33,140, 2, + 4, 58, 12, 17, 12, 13,248,214,119,214, 86, 56, 66, 4,174,110, 56, 89,252,185, 94, 46,202,254,233, 25,203,161, 48, 86,159, 61, + 59, 35, 48,237, 31,125,251,101,217, 63,239,201,223,188,251, 80, 3,207, 54, 25, 25,235, 37, 13,184,250, 35,142, 35,213, 10,101, + 58, 17,138, 37,199,222,111,180,221,227,136,215,100, 24, 14,235,119, 3, 36,199, 61,233,144,158,152,141, 15,157,102,192,130, 46, + 24,239, 69,118,138,123,233,141, 35,121,184,223,228, 24, 22, 8,137, 10, 32,168,210, 63,220,123,124, 44, 99,205, 68,115,106,148, + 81,113, 66,112,250,159,254,232, 59, 28,231, 58,210,224, 56,157,188,202,178,243,247, 94,191, 37, 75,101,163,134,197,185,122,167, + 23,200, 49, 29,127,204,202, 2,198, 50,105,236, 33,118, 51,113,204,144,168, 60, 65, 81,203,163,140,159, 58,188,136,188, 4,200, +190,192,171, 63, 13,155,146, 79,168, 99, 67, 31,223,233,215, 15,230,232, 21,231,168, 72,182, 32, 18,154,169,241,246,116,239, 97, + 58,166,221,133,140,105,139,213, 2, 0,198,150,212,169, 47, 85,235,198,131, 62, 51, 58, 89, 10, 72,207, 35,130, 70,201, 76, 48, + 15,216, 82,170,149, 10, 50, 29,142,228,228,160, 37,255,244, 63,255, 79,164,211, 58,146, 71,154,177, 23,244,187, 80,149, 33,240, +111,100, 96, 71, 4,128, 96,157, 3,157, 42, 2, 99,216,218, 76, 2,128, 75,159,247, 8, 39,134, 64, 54, 95, 94,209,245,235,202, +233,233, 49,207, 14, 2,247,157,237,109,202,244,158, 28, 60, 35,177,151,239,250,175,224,153, 55,172,133, 48, 80, 66,133, 9,207, +112,117,101, 67, 78, 78, 62,213,100, 66, 19, 34,175, 67,250,215,121,144,228,179,235,245,251,242, 79,254,240,150,124,231,244, 92, +254,234, 63, 28, 75, 81,131, 27, 4,163,179,208,174,193,156,144, 1,153,201,188, 7,251, 19,154,182, 61,124, 75,174, 80, 20,159, + 78,126,206,223, 1, 67, 69,202,227, 9,196,184,198,172, 86,180, 47,218,146, 87, 35, 6,249,215,112,110, 83, 18,168, 4,166,194, + 69, 53,200,252, 28,112, 26, 54, 82,105,213,206,121,210, 50,231,128, 21, 28,171,114, 0,195,185,160, 36,102,165,207, 95, 40, 25, +199, 14, 8,108,201, 35, 42,159, 36, 95,154, 4,174, 18,128,224,113, 96, 90, 17, 97,200,117,100, 11,139, 45,155, 25,247,253,168, +223,214,189,131,106, 67, 70, 70,231, 29, 61, 67, 51, 89, 89,206,200,250,149, 42, 63, 99,255,177, 6, 65,221,136,204,136,226, 91, + 96, 1, 64, 32, 41,188,161, 40, 73,177, 51,207,164,204, 9,172,181, 74,135, 1,249,189,255, 8,244, 23,127, 89,183, 53,254,255, +227,241,191, 68, 75,131, 51, 94, 83,219,249,248,164, 39,229, 74,233, 18,212,224,233,195, 70,175, 32, 29,146,104, 85,122, 93,227, + 96,158, 32,192, 77,171, 35,156, 59,234, 75,160,210, 99, 67, 71, 39,156,166, 30, 30,156,169,149, 37, 29,251, 25,162, 71, 56, 19, + 27,173,104, 84,210,140,106,209,191,197,184, 92,210,105,152, 7, 24,141,152, 7, 44,211,101,245,198, 54,106, 25, 57,237,140,200, +238, 54,195,194,250, 89,205,202, 83, 44, 27,178,140,131,168, 79, 13,195,113,107, 40,171,137, 33, 29,212,106, 57,146,107,235,101, +121,112,168, 14,107,230,145,205, 14,125,205,136,155, 13,122,190,161, 60, 61, 25, 72, 48,205,202,221, 53,147,134,245,213,161, 94, + 91,201,201, 39, 71, 83,150,107, 29,115, 45,175, 21,221,250,193,196, 4, 68,224,116,179,122, 15,187, 43,101,205,206,231,226, 72, +206, 52,155, 72,243,115, 96,168, 70,152, 73, 13,140,220,197, 11,103,100, 77,123,235,141,109,169, 87,205, 32, 20,203, 5, 41, 20, + 50,156, 93, 69,196,143, 94, 12, 12, 31,198, 82,146,212, 7,159, 25,171,152,126,111,129,253, 45, 24,246,145, 94, 47, 36,105,210, + 98, 84,240,214,118, 64,139,132,101,179,192,250,228, 28,163, 66, 48,198,138, 71,200,140, 27, 69, 78,244,227, 50, 40, 89,199, 38, + 60, 49, 10,244,217,165,178,122, 29,122, 56,134,122,240,212,152, 65,171,121,145, 1,199,142,123, 29,129,209, 68,159,111,163, 38, +151, 35,114, 0,139,205,146, 57, 18, 71, 96, 98, 2,243,231,217,165,178,172, 55,132,229,174,163,214, 88,238, 61,186,224,104, 28, + 28, 8,156, 77, 94,215, 32,235, 16,212, 56, 28,197,164, 59,144, 40,231, 63,105,169,179, 25, 93,162,196, 69,140,149,107,181,158, +163,116, 45, 68, 51, 18, 41, 55, 21, 17,217, 56,221,130, 40, 42,118, 7, 3,255,223,208, 12, 7, 6,160, 55,154,177,108,111,212, +140,118,152, 61,199, 4, 23,147,111, 94, 88,249,193, 62,128, 33,192,167, 13, 70,129, 20,146,115, 34,156,199,193, 80,110,173, 44, + 75,115,146,210,128, 99, 42,245,149,138,220,209,160,180, 16,106, 68,238,231,165,162,207,239, 43,101, 99, 61,140, 28,187, 25,246, + 55,141, 68,232, 84,248,116,109,122,227, 57, 57, 16,112,240, 14, 47,132,220,227, 47,142, 78, 52, 43,171,178,234,112,222, 25,234, +115,238,176,231,140,253, 2, 80, 25, 24,226,144,117,214,202, 21, 58, 14, 32,166,129, 30,199,189,195,225,207, 28,179, 23,246,254, +212,105, 48, 28,183,206, 73, 92, 66,131,174,239,199,153,130,118,246, 92, 51,118, 84, 47, 86,107, 21,249,228,217, 1,185,216, 55, +117,111,183, 52, 75,234,234,243, 94,169, 86,229,191,255,147, 31,201,211,227,190,252,248,237, 79,228,168,217,101, 27, 6,129,192, +179, 35, 83,191,171,215,171,242,202,107,119,229,172,221,145, 81,111, 32,253,206,128, 21, 1,236, 81,172,107, 49,151,189,156,113, + 63,212,140,133,204,113,151,212,190, 30, 29,128,217, 24,163,224,101,146,160,129, 64,163,106, 34, 42, 47, 78,206, 72, 40,115,231, +122,157,122,239,152, 56,121,164,193, 70, 71,215,234,206,230,170,124,248,171, 71,146,187,106,253,242,173,186, 47, 39,167,231,156, +108, 0, 85,105, 95, 29,221,137,102,146,215,116,227,133,217, 4, 71, 39,129,171,129, 99,128,137, 30, 33, 99,247, 44,195, 13,166, + 67, 6, 37, 57,224,105, 90,194, 18, 56,246,121, 50,157,100,230, 8,105,233, 80,207, 34,236, 14,234,116,197,114,137,140,117, 30, +185,232, 35,242,173,147, 65, 79, 29, 87, 42,132, 17,118,154, 2,186,238, 84,158, 36,102, 97,126, 73, 50,244,244,217, 19,249,253, +239,255, 46,199,109, 87,150,234,148, 62,133,147, 10,103,186,246,154,129,230,242, 21,217, 2,246, 8, 36, 95,186,126,125,117, 12, +211,105,143,251,233,218,141,151,228,248,236,194, 90, 95,177,173, 23,174, 1,213, 20,128,148,179, 57, 79,202,249, 28,249,198,209, + 87, 78,171, 67,233, 30, 25, 69,119,165, 92,147,245,141,109, 57, 61,120,168,207,234, 92,182,214,174,106, 98,149,150, 90, 99,137, +147, 68,123, 79,238,179,124,140,247, 33, 24, 15, 64,247, 28,206,233, 52, 16,176,231,115,105, 50,114,122,115, 13,110,130, 21,249, +250, 27, 47,203,177,174,107,214,175, 82, 59, 62,140, 82,210,108, 94,200,137,238,185,127,243,227,148,238,133,145, 12,251, 29,241, + 55, 54,216, 15, 79,120,158,163,114,246,137,181, 33, 89, 25,238, 33,229,179,162,133,202, 90,194,177,170,161, 90,100, 68, 68, 38, +122, 15, 91,106,114,192, 88,219,169, 52, 91,167,178,210, 88,230,115, 49,241, 38, 43,213, 7,243,224, 55,122, 17,226, 95,242,192, + 91,171,208, 72, 96, 72,132, 20, 27, 95, 9,103,221, 67,167,171, 16,187,170,132, 38,103,216,183, 11,252,135, 1,133, 45,240, 76, + 56, 77,137,197, 24, 93,232,218,161,196, 9,129,239, 2, 73, 71, 96,215,145,116,114,223, 32, 43, 82,171, 37,205,246, 76,206, 58, + 19, 6,156,128,112, 20,171, 89,121,240,196, 68,113,154,205,129, 77,109,144, 15,198, 18,198, 5,127, 5,169,145, 57,246,103, 28, + 36, 9,242, 54,168,221,212, 96,215, 24,251,140,155, 2,173,130,148,155,124,241,190,100, 47,191,156,241,199,174,101,145,172, 37, + 71, 82,206,152,243,157,184,158, 6, 74, 28,112,134, 40,249,129, 57, 13,219, 27,229, 27,225,120,146,149,138,233,194, 99, 19,183, +160, 98,214,220, 74, 2, 32,110, 49,229, 52, 95, 74,122,224,162, 73, 87,114,169,130,100, 48, 79,169,239,197,204,250, 72,179,149, +181,122,202,202, 94, 97,124,201,111, 59,210, 44,115, 48,213, 27,203, 22,229,103, 79, 32,221,154,151,185,238,186, 70, 30, 89,117, + 36,173,190, 30, 62, 4, 20,136,190, 53,210, 67,143,171, 10, 9, 68,144,123,104,198,245,230,205,140, 70,165,158, 60,218, 15, 41, +159,154,136, 48,183,155, 97,166, 10, 54,165,243,142,102, 41,231,190,188,177,161, 81,114,106,162, 6,222, 39,169,195, 79, 62, 62, + 83,103,149,149,171, 27, 53,211,246,141, 77,204, 4, 27,116,164,166,255,137, 90,230,230,249, 72,182,116, 9,190,117,179, 33, 15, + 79,213,129,104,132,141,251, 6, 38, 1, 32,184,179,238, 80,138,217,148,149,207,232,156,230,140,192,234,101,115,250,150,213, 68, +178,177, 90,228,218, 97, 29,131,153,199,210,119,103, 8, 70,184, 41,163,197,179,110,192, 17,193,245,114,138, 6, 12,127,158,131, + 15,156,133, 85,155, 3,166, 19,153,219,252,117, 48, 11, 46,251, 87, 62, 40, 54,213, 1, 15,177, 81,208,134, 38,240,205,156, 97, +188,144, 87, 69,212,138,153,254,164, 16, 52, 52,199,251,231,134,208, 78, 17,208, 34, 6,164,138, 60, 2,134, 48,134,147, 8,205, + 80,135, 96, 46, 3, 47, 63,179,194, 49,213,194, 44,108, 6,121,144,199,210, 25,248,202, 83,137, 52, 3,190, 96, 94, 0, 34, 65, + 51,159, 17, 9,119,196,145,146, 96, 99, 94, 0,157,126, 62,100, 75, 6,134, 6,251, 8, 27, 18, 7,113,238,212,192, 46, 41, 87, + 9,164, 51, 74, 73, 70,185, 98, 64,205, 69,127, 41,114, 35, 90,227,153,207, 32, 7,217, 98,114,209, 38,114,125,169,200, 81,192, +162,101, 52,231,120, 35, 50,173, 64, 90,106,184,164, 4,176, 75,130,215, 50,212,108,253,160, 53, 81,131,152,148,151,175, 85,164, + 24,117, 56,102,213, 87,163,131, 89,106, 0,192,252, 56,116,200,148,196,101, 87, 11,231, 4,223,136,235,168, 21,242,114,162, 25, +199, 79, 62,252,140, 4, 38,208, 3, 0,225, 82,145,172,122, 35, 43,151, 67, 48, 72,159, 89, 85,157, 49, 12,100,200, 49,173, 80, +250,154,101,161,212,186,177,186, 42,159, 63,122,196,125, 56, 84,163,140,158,248,214,218,154, 3, 72, 89,153,222, 42, 24,214,219, +203, 80, 67,220,151, 71, 47,246,136,159,128,222, 65,206,149, 10,183, 52,123,255,206, 87, 94,227,244, 5,198, 67,127,247,141,187, + 50,212,235,249,159,254,244,223,170,163, 31,187,209,160,152,217, 97, 62,211,144,111,191,254,154,220,127,178, 71, 67,210,168,150, + 72,251,153,230,100, 76,154,253,206, 96, 30, 94,246,211, 81, 45,233,141,199,102, 28,225,184,211, 9,167,232, 22,240, 90,147,139, +204, 6, 83, 9, 9,147, 97,246,196,158, 23,232,148, 67,221, 27, 99,128, 44,179, 5,121,113,124, 33, 25, 53,146, 40, 47,195, 1, +126,114,127, 79,214,150, 74,116,194, 24,119, 60, 82,167, 28,196, 83, 78,199,128,230, 25, 34, 34,155, 26,100, 63,120,214, 36,184, + 50,229,148, 0, 25,132, 59,246, 64,246, 85,243, 73, 82, 92,195,233,164,242, 9, 78,142,248,169,156,196, 36,240,177,210,125,210, + 1,170, 38,179, 62,121, 21, 64,158,149, 70,212,142, 10,140, 31,113,116, 16,206, 47,226,126, 11,169,160, 71,157, 1,144,195,128, + 90, 23,227,165, 34, 4, 57, 86, 43, 53,102,238, 9,175,194,214, 20,170, 49, 50, 31, 73,183,115,162,103, 40, 43, 95,187,187,198, + 74,217,115, 77, 48,122,186,231,118,214,182,228,226,228,153,120,209,182, 92,191,113,157,148,208, 54, 81,227, 17, 99,129,189,134, + 74, 8, 70,206,242,137, 57, 3, 98,236,193,147,222,136, 45,178,107, 87,111, 16, 68,122,170,153, 56, 0,177,235,203,107, 82, 91, + 89,146,108,169, 38, 23,237, 35, 57, 62,216, 35,144,153,242,168, 44,211,179,201,168, 1, 76,153, 25,115, 81, 19,141, 90,181, 46, +104,197,102,217,167, 86, 91, 28,102,228,214,213,170,140, 70,192, 41,152,253,156,207,243, 2, 31, 6,219,133,207,185,123,109, 69, +202, 5,216, 94,223,245,150,147,151, 65, 52, 19, 15, 4,246,228, 42,137,156,224,143,163,125,197,249,198,121,159, 99,180,111,198, +236, 56,214, 96, 98, 62, 27,210,102, 12, 90, 45,201,232,243, 74,179,109, 19,112,198, 31, 65, 64, 86, 29,233, 69,171,205,192, 44, +225, 24, 75,243,122,214,112, 45,115, 74, 46, 39, 73,194,196,182,196,196,184, 20,112, 14, 22, 14, 29,118,198,215,235, 9,125,187, +134, 36,177, 31, 22, 16, 24,171,157, 92, 10, 42, 49,195, 71,192,231,219, 84, 75,180,232,113, 47,202,221, 81,236, 42, 18, 17,171, +145,231, 61, 59, 23,189, 81, 36,103,103, 67,105,181, 38,191,225,193, 96,240,103, 0, 59,252,119,238,116, 37,224,251, 96,235,166, +174, 90,190, 72, 66, 76,253,205,218, 0,214,146, 77, 48, 24,128,179, 39, 0, 22,108,133, 0, 6,130,243, 97, 49, 18,154, 77, 27, +163, 42,156,250,238, 86,154,101,164,195,254,156,101, 47,148,211, 65, 74,224,115,222, 59, 98, 41, 29,116,137,136, 26,176,161, 17, +192, 70,209,111,244,211,113,124, 22,243,163,198,254,101,162, 28,236, 69, 0,140, 18,106, 68,167, 27, 42, 89, 88,210,236, 53, 36, + 21, 37,102,145,227, 82,196, 89, 81,207,137,114,192, 80, 15,135,224,208,173, 75,182,144, 35,192, 12,139,218,200,123,178,147,211, +205,172,239,171, 64, 65, 44, 76,112,222,188,169,175,157,233,231, 38, 66,139,148, 49, 18, 53, 31, 4,114,126, 18, 73,115,160, 63, +205, 83,249,147,175, 86,229, 72,207,237,243,238,156, 44, 90, 59, 87,182,100,171,145,148,213,124,192,209, 58,248,187, 79,247, 59, +242,151,239, 28,114,211,174,213,178,178,189, 82,112, 35, 84,214,139,134, 28,237,206, 90, 73, 62,121,112, 38, 21,144, 86, 36,192, + 5, 63, 34,202, 30,216,132,233,168,207, 82, 24,254,229,193,163,202,155,190, 63, 99,165,216,245,106,134,165,100,180, 37,108, 67, + 24, 56, 36,165,145,113, 87, 55,192,121,199,198,140, 82,217,153, 92,223,206,105,224,227, 73,179, 59,209,195,174,107, 17, 78, 88, + 57,161,232,134, 68,108, 81,160,175,227,115,206,221, 74, 79, 36,108, 65,201,137,211, 1,117,121,120,172,238, 31,138,122,186,225, + 86,179,158,172,150,146,114,216,117, 36, 47,152,199,189, 84, 12,178, 22, 74,187, 63,145,193,204, 35,203, 21, 42, 11, 69,125,214, + 31,126,126, 40,119,175, 55, 88,242,135,225,100,194,224, 54, 38, 52,103, 9,174,137,108, 66, 0,129,193, 32,176,181,130,241, 26, + 65,213, 70,230, 60,192,200, 40,163, 82,138,227, 74,236,155,169,129,234,161,218,147,140,136, 71,216,220,170, 74, 67,157,235, 82, +201,170, 12, 8,218,154,173,161, 58,148, 54,199,114,190,249,234,154,148, 50, 37, 86, 29,184,114, 14, 89,159,116,188,239,204,214, + 49, 7, 13,167, 26,218,250,160,220, 23,198,114, 9, 86, 90,144,173,120,151,236,126,134,253,152, 76, 48, 30, 20,211, 88,131,139, + 0,212,184,208,188, 70,123,163,158,143,101, 31, 0,156,160, 39, 19,253,239,217, 64,157,136, 6, 86,245, 74,222,130, 42, 71, 17, +204,202,136, 19,156,161, 81,136,128, 78,239,233,115,119,101, 97, 53,232, 8,114,234,200, 58,244,123,143,245,207, 99,231,144,129, + 86, 47,171, 67, 7,107, 28,208,210,113,116, 44, 75,245,134,171,164, 37,216, 75,140, 98,251, 30,244,209,107, 26, 84, 31,106,118, +139, 64,120,185, 94,167, 24,136,105, 2,204,232,204,216, 63,198,136, 16,218, 79,154,237, 36,213, 8,110,174, 46,201,119, 95,191, +205,107, 67,239, 30,165,120,148, 38, 79,218, 61,217, 89,173,201,159,124,231, 43,242,158, 58,206,191,255,248, 1,101, 60,191,167, +175,253,209,239,126, 67,207, 79, 32, 75,106, 88,201,186, 54,155, 59,198, 73, 3, 3,194,130, 38,124, 39,118, 4,167,174,191,219, +108,212,104,168, 56,103,173,215, 14,188, 4,108, 4,128, 85, 16,248,192,250, 3,184,151, 39, 51, 28,176, 53, 35, 3, 40, 81,178, + 53,228, 56, 22, 28,112,235,188, 39,235, 43, 21,121,250,180, 35,141, 90, 81, 86,234,101,130, 45, 15, 79,219, 36, 92,249,226,225, +115,205, 60,215, 41, 54,130,231,120,128, 32, 64, 63,167, 86,206, 49, 16,197,184, 41,159,121, 50,226,158, 48,176,105,104, 60, 7, + 32, 58, 1,209, 82, 63,228,159, 3,111,198,246, 4,106,120,137,216, 16,227,216,147,222,112, 74,146, 44,246, 99,129,162,206, 37, +200, 82,136,253,197, 6, 18, 9,123,226, 75,160,224, 20,117,241,200,218,143, 8,100,150, 27, 13, 94, 19,250,194, 36,229,209, 51, +184,189, 92,144,167,195,148, 85,137, 18, 3,121,126,220,149, 98,177, 32,181, 82, 70,230,227,132,188,244,242, 43, 82,173,229, 57, +217,176,190,181, 43,205,211, 35, 61,119,214, 14, 69,229, 10,235, 93, 66, 96,162, 54, 4,180,179, 88,227,153, 38, 36, 0, 40,215, +107,187,250,220, 81,165,184,144, 55,191,250, 10, 9,165, 34,181,193,153, 66, 93,206,154, 39, 50, 30,245, 25,160, 99, 41,102,142, +179, 12,109,128, 76, 26, 18,210, 83,125, 93, 89,202,245,101, 89, 94, 42,147,150, 23,142,162,164,246,163, 59, 0,182, 67,215, 34, +167,201,144,218,163, 79, 30,189, 96,101, 5,130, 56,143,143, 58,242, 95,255,240,170,126,198,166,252,217,255,251, 88,157,239,220, +152,244, 60, 59,151, 28,185,117, 26, 1, 36, 38,115,124, 35,115,167,110, 8, 63, 18,184,177, 57, 95,131, 52,156,197,233,164,175, +231, 81,147, 23, 61, 27, 83,245, 11,157, 78,135,129, 44,168,152,225,128, 59,160,206,141, 50, 12,188, 19,180, 39, 33, 19,199, 84, + 26, 85,160, 20, 91, 91, 9,183, 55, 71,131,174,156,158, 60,103,159, 62,233, 0,112,158, 94,247, 82,189, 40,245,245,151, 28, 26, + 63,102, 27,216,254,153, 95,250,180,200,113, 7,100, 93, 9,220,216, 85, 35,135, 35,138,216, 10,102,251, 47,229, 49, 65,129, 94, + 0, 90, 83,253,145,141,187, 98, 29,158, 31, 15, 25,200, 47,148, 30,237, 28,135,174,140,110, 32, 66, 92,167,241,120, 69,108,145, + 46, 84,216, 22,224,246,144, 85,112, 27,113,132, 15, 64,133,200, 19,239,146,122,218,254, 60, 55,217, 99,207,198,186,147,174,178, +147,140,138,158,220,122,185, 44,185,167, 67, 2, 35,122,179,136, 76, 64, 8, 98, 33,122, 48,131,226,151,103,243,159,139,204,228, +203, 34, 36, 17,153,177,244,128,140,251,242,237,235,121,121,118,145,208, 0, 1, 8,216, 57,231, 76,171, 85,148, 47, 49, 95,171, +198,187,160, 7, 91, 29,227,195,233,144,229, 82,244,167,193, 37,238,163,111,173,198,187,154,207,208, 80, 32, 82, 69,169,102, 71, + 51,227,219, 53, 53,170,205,174,252,217,135, 39,236,215,162,219, 5,210,152,215,119, 42,236,187, 36,226,185, 17,154,232,218, 78, + 91,158,156,118, 52, 99, 95, 74,201,187, 29,163, 56,125,115,195,151,191,123,251,137, 58,158,152,194, 43,215,151,214,228,163,227, + 41,123, 85,234, 79,228,167,239, 31,179, 66, 1, 17,134,191,253,229,115,249,199,191,115,131, 64, 43, 3, 99,133,140,150,214,235, +121,121,243,238,138, 92,128,143,218,131,128, 77,134, 45,132, 70, 37, 75, 57, 67,148,244, 39,250,160,174,175,151, 76, 34, 21,229, + 44,189,249,191,126,255,133,116,218,105,249,254, 87,243,204,230, 13,105, 26, 90,118, 60,155, 80, 99,254,228,124, 32,109,189,214, +155,155,105,185,117,189, 40,216, 35,147,105,210, 70,221,244,181, 85, 61,204, 65,202,232,225, 39, 94,142, 15, 87,196, 69,157,112, +106, 25, 95,131,128,169, 20,138,190,108,109,136,220, 63,136,136,220,157,234,193, 94, 85,107,213,211,131, 83, 45,101,137, 94,231, + 70,250,210, 44, 5,174, 21,109, 0,148,228,209,215, 7,167, 57, 56, 10,160, 89,207,153, 80, 16,185, 76,125,246,185, 16, 37,154, +108,161, 26,170, 82,142,189,247,141,138, 26,177,106, 78, 62,122, 50, 34,114,149,125, 48,189, 39, 4,110,120, 38, 40,201,205,117, +239,244, 96, 4, 57,128,111,228, 54, 23, 99,140,255,232,186,174,151,233, 8,111,173,169,105, 85, 67, 51, 85,163,242,206, 7,135, +154,161,105,182,124, 52,148,240,182, 26, 29, 15,142,214, 64, 80, 9,167, 93,157,242,211,172, 38, 5,212,242, 54,128, 35, 12,116, +129,108,111,142,146,119, 62,115, 56,145,200, 1,101,204, 9, 65,199, 96, 52, 2,158, 96,198,234, 75, 87, 51,213,245,122,130,213, + 7,140, 47, 1,151,121,112,218,147,243,243,177,204, 86,117,239, 66, 25,207, 79, 17, 49, 31,187, 8,123, 58, 55, 7, 78, 42,106, +142, 84, 58,166,122, 16,230,244,251,242,151,191,252,216, 0,163, 32, 87,201,229,120,144, 81,222,133,161,131,243,169, 87,202, 28, +241,131, 67, 7,138, 29,253,180, 86,231,130,189,116,148,109,171, 24, 61, 42, 96, 68, 50, 43, 75,149,170,241,138,187,209,180,154, +102,129,120, 54,152, 77, 70,201, 26,227,101,224, 70, 71, 86, 14,208, 31,162,122,202, 95,114, 6, 60, 45,121,125,253, 82,185, 32, +112,119,141,162, 26,109,117,230,231, 26, 28,252,249, 79,127, 37,167,221,129, 20,212, 80,255,163,111,188, 42,119,174,108,200, 55, +127,235,171,242, 98, 56,145,243,123, 15, 73,199, 11, 33,159, 12,133,232,103, 18,129,158,153,170, 41, 41,222,111, 14,149, 16,135, +170,173,151, 75,134,175, 88,244,211, 89,233, 89,101, 2, 16, 80,244, 66,237, 10,131, 65,115, 26,211,169,169,172, 5, 28,229,131, +170,161,190, 31, 1,178,174, 81,251,188,203,242, 38, 40,129,203, 5,168,151, 25,122, 26,146,156,232,185,162, 45, 3, 70,202,144, +244,186, 25,106,132,175, 47,151,169,150,133,224, 6, 61,203, 68,228, 57,164,125,146,149,140, 20,201, 97,192, 21,156, 33, 65, 11, + 72, 83, 48,251,158,211, 12, 28,108,211,193, 80, 40,125, 26, 39, 98, 42,187, 77, 28,234, 58,197, 64, 60, 71,144, 39,104,166, 83, + 73, 4, 37, 17, 41, 65, 11,154,229, 6,243,169,209, 10, 75, 78,131, 27,107, 69,148, 53,248,130,128, 11,197,131, 80,185,210, 0, + 42,151, 52, 5,197,104, 2,204,199, 68,158,159,118, 37, 15,240,164,190,127,125,117,131,213,190,195,230, 80,191,115, 44,149,250, +140, 1, 41, 4,122,194,216, 50,200,136, 65,188, 85,252,150,151, 54,244,239,198,156,238, 41, 53,174,243,249,215,235, 53,125,206, +183, 37, 87, 66, 10,218,147,253,115,117, 82,195, 83,158,155,116,190,164,193,201, 72, 70,157, 46,131,108, 4, 80,100,223, 99,181, + 4,207, 35, 67,161, 38,172,251,149,141,134, 92,221,200,203, 69,103, 44,167, 77, 61,243,201, 18,215,187,168,193, 71,175,255, 88, +247,231,136,163,115,216,143,255,234,111, 62, 37, 94,229,160, 61, 33,241, 20,213,243, 28, 86,155, 65, 55,156, 97,104, 85, 79,164, +126,176, 87, 28,109,228,125, 37, 89, 29, 49,153, 98, 8,105,169, 63, 24,163,162,129, 64, 53,144, 98,182, 34, 37, 13, 6,123,234, +156,251,131,115,182, 17,170,249, 80, 42, 57, 77, 72,226, 20,155, 58, 64,203, 35, 99, 95,224,204,176,199, 32,197, 59,209, 32, 6, +184, 38, 40,242,193,167,130,140,172, 90,173,176, 42,128,140,254,162,125,166,223,145, 34, 43, 41,170, 66,105,125,222, 28, 1, 68, +229, 41, 90, 32,217,231,156,252,192,216, 40, 41,140,163,145, 28, 31, 93, 48, 8, 97,114,171,207,165, 92,174,104, 18, 58, 98,162, +130,117, 76,164, 50,180,203,228,125,153, 91, 34, 20, 57,109, 13,207, 85, 19, 57, 1,228,156, 58, 43,166,177,189, 38,118,127,127, + 89, 87,244,253, 47,143,206,155,120, 89,210,210,176, 48,252,146, 4,118,104, 99, 40, 11, 41,104, 40, 22, 18, 12,136, 12, 23, 51, +213,235,187, 89,201, 23,102,242,226, 36,148,158,110,190,147,238, 76, 55,163,149, 86,187,211,190,147,244, 12, 47, 75,160,151,227, +125,164, 98, 12,229,180,213,147, 63,186,147,149,168,234,201, 23, 7, 93, 82,113,214, 82, 86, 6,173,232,115, 72,231,113, 49,234, + 60,117, 97,159, 39,141,175, 23, 96, 29,140,133,245,103, 89,246,244,210, 14,232, 80,203,121,242,242,146,200,114, 89,183,144,102, +172,109, 53,192,127,245,225,169, 62,248, 57,213,195,126,244,221,146,108,169, 3,133,243, 4,184,204, 7,215, 51,156, 41, 22, 7, +101, 10, 93,148,183, 94, 47,203, 92, 51,230,147,139,145, 60,217, 59,101,214,137,135,253, 83,189, 6, 80, 48,162,223,142,205,117, +214, 26,177,119, 5,123,245,120,255, 66,254,246,221, 23,242,163,111, 93,225,198, 36, 1,220,220,122, 46,175, 92, 91,146, 51,205, + 58, 65, 65, 15,150,167, 61,125,223,118, 38,150, 91,119,234,106,108, 35,249,249, 23,109,205,234,115,242,242,110,158,179,253, 40, +239,126,250,240, 84, 55, 91, 74,190,114,123,149, 61, 43,244,207,169,222,133,185,114, 32,139, 51,160,243, 44,201,217,249,137, 12, + 70, 62, 51,254,181,106, 74,114, 60,112, 30,169,119, 1,192,163,216,169, 62,179,141,122,206, 84,138, 34,131,200,145,172,198, 79, +202,103, 7, 19,121,171,174,209,124, 70,179,186,130,102,137, 35,145,171, 75,190,188,180, 26,201,253, 61,141,236,211,136,234,244, + 32, 77,130,255,136,195, 24,217,246,170, 58,229,238,196,103,239, 11,165,156, 72,141,226,171, 55,235, 22,185, 70, 86,225, 8,157, +200, 12,199,149,244, 53, 69, 53,180,221,161,209,142,230,171,232,231, 38,165, 51,156,235,225, 79,202, 31,253,246,174,113,183, 35, +138,173, 22, 13, 60, 41, 19, 39,159,154,112,224, 54,227, 95, 70, 9,245,228, 76,179,198, 90, 77, 80,101, 12,144,161, 78, 3,215, +143,247,152,173, 67, 60, 3,198, 14, 7, 73,146, 89,215,239,119, 2, 76,177,127,217,195, 53, 3,104, 64,201,134,222, 19,184, 10, + 80,186,155,133,129, 27,217, 9, 57,143, 12,206,132,182,254,156,169, 49,106,233, 51, 4,174, 67,252,162,190,223, 14, 26,132, 50, + 48, 18,231,187, 81,150, 3,189,190,227,246,140,184, 2,181, 49,140,156,205, 65,199, 78,227,222,215,251, 8, 76,148, 5,243,231, + 23, 23,100, 42,131,128, 7,162,123,100,173,195, 89,207,230,117, 33,243,154,201, 49,171, 61, 62,111, 89,133,202, 55, 32, 17, 12, + 3,250,212, 4,196,169,193,107,182,154, 6,220,116, 6,184,221,239, 90, 6, 4, 6,188,241,136,226, 26, 13, 53, 44, 8, 48,209, +230, 1, 37, 40, 84,180,170,197, 10,199,170,186,195,129, 58,219, 10,217,213,128,143, 64,182,211,235, 13,168, 75,253,218,213, 13, +249,234,173, 29,130,227, 64, 30,210, 40,231, 41,155,249,191,252,203,255, 75,154,234, 60, 49,198, 58, 81, 35, 91,252,245, 67,205, +226,170, 82, 84,131, 12, 73,228,186, 26,199,216,113,254, 27, 71,190, 71,133,179,135,251,103,228,241, 71, 32,135, 89,100,100,116, +168,118, 1, 60, 53,119,202,125,111,222,220,150, 43,215,175,203, 63,188,243, 62, 73,153,224,220, 81,206, 46, 23, 50,186, 62, 41, + 53,226,190,174,243, 68, 30,105, 48, 7, 80, 26, 72, 84,230,243, 14,129,114, 32,106,154,103,234,242,210,171, 85, 58, 37,100, 67, +231,195, 64, 38,135, 26,128,117, 78,164,221, 27, 75,161,177, 67,163,141,128,107, 87,179, 93, 60,251,148,238,221,241, 40,203, 74, + 81, 82,109,196,206,181,149, 75, 41, 97,216,139,180,152, 30, 66,120,153, 73, 89, 53, 2,229,222,197,168, 18,144,234, 72,162,138, +211,192, 18,155,200,248,190,109,124,212, 35,255, 57, 20,219,170,186,214,155,155,187,114,116,214,148,251,143, 31,202,238,238, 45, +126, 22, 8,104, 78, 33, 91,221,238,144, 94, 56,157,246, 57,171, 61,132,118, 67, 18,137, 70, 74, 78,143, 79, 57,150,219,237,118, +229,249,139, 3,185,113,125, 87,159,199, 9, 19, 7, 42,155, 37, 76,172, 6, 28, 29, 51,150,176, 53,155,174, 46,201,206,213, 77, +181,111, 67,125,174, 35,105,237,239,203,175, 63,216,151,171, 87,182,217, 90, 40,104, 38,222, 30,154,172, 50,166, 11,234,213,154, +140,251, 67, 35,179,242, 77,137, 48,153, 45,235,107,243,178,181, 82,213,235, 25,113, 52, 53, 10,219, 70, 84,133, 22,192, 48, 38, +247,125, 81,247, 50, 24,251,154, 26, 4,190,180,187, 34,107,203, 43, 12,114, 30, 30,180, 40,207, 10, 76, 6,218,132, 8,198,216, + 6, 68, 21, 47,178,254, 55,218,177, 99,240, 52,120, 78,129, 18,109, 44, 36, 77,129, 1,191,208, 10, 56,239,156,115,228, 52, 26, +163,196,214,148,157, 43,250,252, 66, 76, 92, 13, 56,166, 56, 82, 71,221, 62, 59,214,164,115, 87,118,182,150,164,167, 89,124,186, + 81,226,200, 39,167,109,212, 65,223,127,122, 34,251,135, 7,172,204,208,201, 82, 48,201,132, 98,192, 40, 56, 30,119,168, 35, 2, +219,116,245,234, 21,233, 77, 51,210, 88, 94, 39, 89, 86,183,115,170,191,159, 50,211, 53,187,239, 81, 36,107, 56,177,245, 7,127, + 20,130, 2,210,114, 19,155,131,164,119,104,246, 23,149,177,129,238,191,114,226,114,238, 62, 94,160,237, 29, 40, 27,149, 91, 27, +249,156, 75, 74,236,119,147, 32,188,212,208, 72, 56,189,139, 47,243,198, 47,250,237,172,134, 71,214,139,183, 62, 63,112, 7, 9, + 75, 92, 66,219, 67,216,187,148, 5,142, 77, 24, 41,249,228,185,241, 6,167,220, 70, 47,100, 66, 57,106,235, 70,153, 8, 9, 58, + 22, 89, 57,126,126,239,149, 53,142, 7,193, 57,101, 19, 80,150, 50, 22, 50,148, 9, 48, 47,140,153, 89,148,255, 48, 38,210, 1, +152, 70,163, 75,244,129,112,157,141,186, 79,128, 7,140,223,148,116,150,186, 56,249, 20,153,158, 78, 52,114,109,158,247, 89,123, +192, 33, 6, 58,251,149,223, 91,147,164,102,143,147, 81,200,190,147,135,114,179,166, 13,141, 90, 78, 62,123,218,150,245,149,162, + 92, 89, 43, 49, 82, 73,194,233, 76, 34, 55, 87, 24, 90,246, 4,227, 15, 64,189, 46,227,171,183,150,229,189, 79,154, 28,239,120, +182,223,213, 77, 49, 98,207, 43,156, 59, 81, 12, 44,154, 46,198, 87, 95, 90,211, 13,156, 34, 83,211,114, 37,119,169,194, 68,130, + 7,252,228, 26,210,156,248, 28,127,187,182,189,164,175,211, 72, 77, 55,227, 64, 63, 23, 37, 23,148,226,128, 4, 71, 78,248,193, + 3,112,202,207,184,105, 63,124,112, 44, 95,127,117,147,235,148,240, 13,111,144,200,230,121, 13, 85,253,255,171,235, 5,110, 14, + 68,183, 52,152,158,245,166,218,122, 79,111,223, 59,145, 38,144,214, 43, 21,249,254, 27, 89,102,127,145,219, 52, 67,253,222,211, + 81, 68,212, 55, 21,214, 0,160,209,107, 91,207, 38,228,206,154,176, 85,112, 99,171, 44,159,237,245, 56,226, 7, 81, 28, 56,167, +219, 59, 21,215, 67,207,112,102, 87,156, 38, 59, 28, 25,214,168, 63,178, 40,158, 34, 27,236,203,134, 54, 95,239, 16,165,126, 4, +173,120, 83, 83, 27,183,166, 12,206, 50,154, 37, 99,146, 97, 55,155, 52,234, 6,207,152,237,224,144, 72,136,129,117,196,134, 78, + 90,233, 62,147,245,228,206, 78, 89,114,250,190, 49,178, 46, 80,153, 38,230,100, 85,195,252, 54,198,148,198,227, 57, 55, 61,156, + 18, 56, 17, 24,204, 88, 84, 73, 3, 30,185, 49,192,216,177, 70, 1,193, 75,242, 25, 53,248,208,113,134, 84,238, 60,101, 25, 2, + 50,181,124, 58, 36,133,231,246,154, 47,191,126, 8, 54,183, 88,174,172,164,245, 39,111, 4, 48,250,194,199,135, 3, 13,148, 82, +204,132, 80,114,197,115,253,240,139,115,249,230, 43, 53,106, 6, 32,170,247, 83,161,171,116,136,225, 39,116,139, 63, 84,131,242, +233,243,167,116,178,112, 88, 73,210,176,138, 99,173,179,214, 7, 50,107,128,223,144,113, 19, 88,231, 16,188,216,183,229, 74,129, +127,191,220,168,201,222,177, 58,170,126,207, 80,189,142,178, 51,114,138,132,198,199, 61,166,193,232, 14,251,166,128,150,206,176, + 2,131,239, 42, 21,234,164,111, 69,159,119,109,169, 66,156, 7,190, 51,237, 27,137,203,139,195, 51, 10, 24, 61,222,123, 78,212, + 61, 28,243, 71, 79, 94,112,223, 49, 40, 70, 57, 60,157, 35,173,237, 47,127,253,148,165,100, 4,189, 96,188, 67,198,191,181,218, +144,205, 90, 73,106,234, 40, 48, 47,221,236,104, 70, 95, 49,128, 26,218, 79, 23,104,191, 16,196, 40,204,146,231,228, 47, 0,173, +238, 68,142,143,247,228,197,209,129,102, 91,115, 13,202, 55,229,141,151,110, 81,205,176,165,198, 6,218, 5, 51,253, 57, 87,103, +135,169,240,195,179, 11,150,220,225,196, 61,210, 85,155, 20,113, 15, 66, 46,112, 56,112,186, 61, 35, 96, 33,170, 25,165, 92,150, + 32,167,226,101,244,108,165, 66, 50,188,129, 47, 65,156,102, 55, 0, 93,168, 40,161,162,146,156, 69,214, 94,144,216,181,180, 60, +158, 23, 76, 21,128,196, 10,140,134, 8, 38, 11,200,202, 10, 37,102,133,195,161,241, 71, 0, 20, 8,231,132,105,155, 4,207,236, + 76,188,138, 39, 5,125, 93,251, 2,128, 56, 19, 64, 65, 32,213,237,117,152,120,116,251, 3,233,232, 86, 88, 66,155,113, 52, 97, +191, 57,239,101, 13,220,120,142, 25,245, 50,247,250,105,179, 37,119,110,223,144, 91, 55,118, 53,187,222, 55,110, 11,189,215,219, +187,187,106, 91,183,109,116,115, 52,151, 23,167,125, 61,207, 77, 89,203,233,147, 31, 33, 49, 82,167,164, 1,227, 89, 39,144,171, +155, 5, 26,251,221,181,154, 60, 7,211, 29,122,239,250, 76, 94,122,233,154, 62,215,162,141,204, 57,241, 21,100,159,104,135,164, + 19, 1,193,134,199,167, 99, 13,204,212, 39,140, 52,184,235, 37,164,213,156,104,144,113,131, 21, 57,156,241,157,181,170,100,115, + 37,182, 93,215,151,133,189,110,204,202, 35,107, 7, 19,220, 92, 50,172,180,142,135, 41,130,118, 48,146,219, 40,229,245, 53,171, + 70,118,229,103, 88,165,227,136, 27,170, 41, 25, 35, 15, 91, 94,169, 73, 49,179, 34,149,146, 94, 59,159, 95, 66, 6,253,164, 84, +138,117,218, 11,236, 97, 84,104,193,156, 9, 60, 67, 78,215, 58, 32,150,198, 39,231, 6,130, 39,112,243,115,130,199,139, 24, 84, +146,242, 94,131,139,233,160,101,115,235,234,143,176,207, 65,164,150,215, 96,114, 78,173,132, 64,191,167,173,182,123, 74,159,228, + 57, 86, 63,180, 66, 32,143, 59,209,253,187,218, 88,150, 90,181, 42, 75,249,162, 94, 67, 69,191, 91,215,249,228, 72,186,154,245, +131,223, 96, 58,106,203, 69,251,132,159,133,107,109,172, 92,231, 90, 44,170,162, 1,171,171,134, 57, 42, 37, 3, 6, 10,240,175, + 70, 19, 28,186,236, 63,186,100,103, 68,224,158, 78,186,177,192, 75,167, 30,153, 63,154,155,144,215, 98, 90, 8,206, 62,116,224, +102, 2,241,176,183,127,252,110,151,233, 63, 22, 7,206,182,145, 30,202,141, 70, 86,238, 55,133,165, 72,147, 21, 68,233, 46,163, +206,160, 68, 66, 25,100,241,236, 63,197, 38, 76, 17, 83,147,219,147,227,177, 71,238, 97,148,111,107, 75,203,226,169,115,153,128, + 14, 81, 15,231,113, 43,164,200,194,193, 97,155,172,106,232, 7, 53,251,145, 46, 86, 65,157,120, 82,127,143,197,157, 88, 73, 85, +157,195,253,107, 89,153,119, 53, 10,188,152,200, 65,123, 32,121, 28,234, 92, 70,163,182, 41, 75,166,127,245,243,103,242,219, 95, +223,150,173,229,146,222,212,148,189, 27, 0,115, 80,202, 36, 98, 26, 84,169, 36, 11,240,229, 43,175,108, 17, 32,241,236,104,100, + 40,199,228, 98,222, 57,162, 67,195,189,131,148,224,250,118, 85,190,121,103,153,193, 7,122,125,144,129,197,107, 9,114, 99, 63, + 54,102, 32, 3, 98, 28,244,201,231, 81, 74,141,143,103, 76,116,200, 30,212,192,205,134, 61, 18,221,252,234,211, 67,246, 33, 17, + 25,191,255,217,145,172, 47,149,101,173,158,163,177,131,145, 52, 80,152,245,197,119,214,202, 26,252, 76,100,222,155,169,241,139, +164, 51,134,150,188, 81,240,130,173,239,188, 61,102,192,243,162, 85,214,181,202,112,243, 96,237, 47,244,215,195, 57, 39,221,165, +175, 75, 48,238,219,184,212,205, 21, 84, 70,132,196, 57, 40, 47, 98,166,250,241,193, 80,178, 26, 33,163,204,247,106, 54, 65,244, +122,180,208,223, 69,100, 10,253,237, 9,116,143, 99,130, 78,240,255, 66, 28,161,149, 1,123, 26,165,151, 48, 7, 29,155,163,193, +122,122,234, 32, 91, 35,220,119, 79, 52,246,146, 84, 96, 1, 85,232,202, 78,152,203,135, 51, 71,214,103,228, 37, 54,146, 5,206, +106,100,202, 24, 29,171,107, 0,215,239,142,200, 86,135,204,247,218, 82, 36,155,165,172,201,176,206,251,114,114, 48,190, 36,133, + 24,207, 46,100, 48,115, 37,170,132, 33, 67, 47,153,155,220, 97, 36, 75,154,254, 57,187, 94,231,124, 57, 14, 67, 76, 5, 43, 35, + 40, 89,114, 37, 98, 72,184, 6,175, 70, 12, 92,241, 83, 91,139, 53,218,239,200,233, 73, 71,215, 41,197,192,196, 72, 83,230,228, + 33,135, 49,141,216,195, 70,230, 25, 51,184,213,144,149,242,175, 8, 68, 6,147, 1,175, 25,178,168, 64,103, 95,160,231,205, 30, +219,156,251, 18, 8,119, 80,136,162,116,158, 36, 5,176,207, 67,142,234, 72, 78,157, 50, 28,253,238,198,134,236,157,156,169, 65, + 25,235,186, 7,174,188, 22, 25,192, 38, 54,240, 23,104, 61,193, 89, 80, 68,171, 96,110, 72, 94,144,110, 44,122,117,221, 65, 95, + 86,234, 13,102,187,126, 50,199,209, 49,202,184,170, 35,126,105,107,153,164, 57,121,125,239,179,125, 51, 22, 0, 53, 66,168, 3, + 21, 53,163, 36,213,172, 89, 63,239,188,215,151, 27,155,203,234,164, 39,106,220,198, 68,213,163,132,254, 72,179, 51, 60,139, 43, +235, 75,106,208,199,106,248, 7,188,135,208,105, 4, 64,218,119,228,232, 60, 23,153, 8,158,125,187,215,149,240, 81, 72, 14,125, +202,153,234,254,122,231,211, 7, 84, 99,220, 90, 91, 85, 71,180, 42,123,154, 41, 2,253,206,182,137, 26,104,240,236, 39,196,112, + 18,208, 30,143, 72,120,101, 1,131,105,178,199, 6,146,194,120, 84,128,202, 98,130,107, 68,118, 74, 13, 20, 61, 93, 87, 4,165, + 48,228,158,239,148,232, 76,174,219, 72, 70,225, 88,213,129,132, 25, 99,166, 4,174, 6, 68, 53,104,181,162,181,144, 77, 26,144, + 10,200,119, 50,117,161,218, 2,193, 36,223,168,136,187, 23, 23,108,145,225,249,161,236,142,140, 22, 78, 24, 64, 71,203, 32,145, +217, 37, 77,145, 78, 51,222,130, 63, 48,133, 68,117, 32,161,126, 78,167,121, 42,157,206,166, 38, 60, 85,125,110, 99,102,132,231, +231,231,242,254,251,239,203,239,255,240, 7, 38,192, 52, 55, 53, 67,104, 76,132,115,219,203, 19,181, 49,185, 88,215,190,217,151, +205,141, 85, 13,220,179, 26,124,249,106,223, 2,105,157,238,107,130,131, 10,135, 71, 44, 20,196,150,158,156,181,228,250,238,134, + 60,122,246,152,235,178, 92, 95,210,128, 38,199, 22, 79,181,156,101, 85, 16,179,245,213,114, 68, 1, 24, 84,155, 80, 53,109,235, +153,223, 80, 95,112,126,246, 66,131,221,150,172,168,173, 6,152,249,184,211,227, 94,155,134, 73,102,161,144,136, 94, 93,170,114, +143, 52,193,133,160, 14,120,185, 86,117,142,212,215,189, 61, 34,129, 18,176, 64, 8,154,174,172,148,101, 4,249, 93,223, 90, 74, + 80,227,195, 28,188,239, 36,168,193,234,136,118,210,234,114, 85,162,122,129,231,228,230,181,107,114,113,113,206, 96, 99,107,107, + 75,175,233,152, 0,204,134,238,245, 86,123, 78,132, 61,132,144,172,114,108,160, 53, 0,102,203,165, 26, 69,108,166,154,241,195, +249,163, 53,133, 96,119, 78,100,187, 41,228,101,147,117,121,122,216, 52,194, 32,253,119, 28,204, 24,180,225,218, 1,230, 4,231, +195, 69,183, 67,219, 87, 44, 22,137, 17,128, 92,121, 20,218,108,191,199, 25,255, 57, 91, 2, 17, 81,248,216,171, 38,229,123, 57, + 99, 14,113,199,241, 72,175,215, 99,130, 49, 28,196,142, 92, 50, 36, 88, 16,175, 93, 72,113, 91,160,105,253,248, 5, 38, 40,225, + 91,245,200, 64,209,190,163,101,118, 10,118,174,248,138, 0, 1,227,185,201,246,112,100, 72, 59,125,209,193,241,185,188,181,225, +203,119,191,177,166,206, 98, 44,123,157,144, 6, 15, 14,235,229,109, 93,120,125,128,233, 98, 66, 31, 42, 30,236,196,136, 83, 22, +232, 98, 32, 28,167,115, 26,156,107, 91, 75,234,208,139,220,192, 38,244, 59, 53, 61,238, 76, 36, 23,173,136, 52,170,232,169, 65, +222,180,141,113, 26,141,144, 87, 52, 97, 92,133, 64, 70,148, 32, 8,225,193,211, 83,141,234, 83, 28,107,194,168,148, 41, 24,205, +153,225,192, 9, 29,159,245,229,175,127,254, 84,190,241,198,166,102,236, 21, 19,168, 72, 88,118,154, 97,249, 34,102,127, 56, 73, + 71,239,201,239,125,125, 71, 13, 82, 79,126,161,153, 47, 22,101, 58, 49, 78,112, 56,235, 82, 57,207,178,240,255,243,139, 39,236, +225, 93, 93, 43, 91,169, 19,200,115,140,171,184,204,159,100,173,190,201,198, 70, 14, 48, 56,214, 47,157,129,157, 14, 40,218,137, +110,210,193, 64,238,191, 24, 73,175, 15,233, 72,147, 18, 29,169,227,251,232,193,169,252,225,183,174,152, 40, 11,178,241,121,116, +201,150, 6,170, 69,108,234, 71,135,106, 64,245, 51,250,250,157,181,140, 70,237,167, 93,205,172,186,252, 30,244,189,158, 31,116, +229,230,149, 26, 75, 85, 19, 61, 80,227, 40, 99,147, 8, 16,207,208,117,122,160,135,122, 89, 15, 88,173, 20,147,238,149, 85, 8, +112,149,151,211,114,109, 35,214,207, 31,107,148,153,145,243,254, 92,131,146,228, 37,216, 12,115,219,211,153,174,233, 69,168, 70, +124,238,202, 80, 32, 1, 66,118, 29,145, 32, 38, 28,171, 33, 73,175,144,238, 55, 8, 13,184, 97, 12,128,154,133, 12, 39, 6,244, + 72,218,204,242, 2, 96, 50,163, 74, 41,230,182,199,220,248, 28, 1, 35,194, 88,175,245,177,222,203, 86, 65,174, 52, 74,156, 48, + 8, 1,128,241, 52,100, 74, 67, 84, 37,114,115,162,234,220,166, 49,179, 52,176,205,161,231,159, 79, 8,177, 16, 45,141,216, 35, + 94,103, 98,161,122,233, 84,241,124, 25,128,201, 16, 61,188, 40,127,169,129,108,204,133,241,101,159, 29,192, 48,140,146,168,221, + 20, 76, 95,193,193, 85, 42,121, 89, 90,173, 73, 87,141, 22,214,248,193, 19,125,142, 26,104, 37, 22,124,251,177,149,119,135, 12, +126, 52, 40, 43, 68,242,201,147,231,114,166,217, 25, 14, 62,169, 90,213, 73,193, 48, 46,120,161, 11, 28,253, 74,234, 62, 30,113, +173, 50,110,124, 5, 78, 15,172,113, 64,188, 99, 94,253,181,155, 55,165,165,134, 2,232,120, 56,215,105,127,122,169,210,231, 45, +116,149,245, 58,214,170, 37,222, 15,166, 45, 80, 81,162, 40, 15,152,229,128,140,206,229, 24,245, 99, 94,253,182, 26, 65,124, 54, + 0, 71,152, 59, 71, 9,187,161,153,118,134,194, 39,125,170,137, 97, 57,208,155,199,141,173, 47, 55,248,249, 48,148, 51,182, 42, +230,114,222,237,169,193, 46,208,209, 33,251, 47, 36, 76, 50, 21,103,231,201, 81,147,192,188,206,160,167,217, 85,145,231, 47,162, +158,125, 96,165, 68,183,214,145,147,163, 4,184, 11, 97, 73,119,136, 76, 48,188,236, 21, 34,107, 4,191, 58,152,212,188, 75, 82, + 13, 97,160, 1, 37, 55,244,231, 49,197,129,146, 46,218, 39, 83,199, 64, 24, 57,106,105,244,236,145,109, 34, 11, 15, 98,204,107, +152,162, 31,198,179, 16, 84,227,245,104, 3, 88,164,238, 93,114,106, 47,228, 82, 57,210,230,120,202, 17,164, 0,252, 25,134, 86, + 58,165,242, 87,140,207,152,240,236,135,129, 17, 4, 33,211, 7,231, 5,198, 65,209,127,133,202, 90, 93, 29,217,208, 77, 1,192, +238, 97, 26, 1, 83, 13, 51,135,196,135, 1,206,229,241,236,179,180, 31,243,217, 64, 63,123,164, 54,176,201,146,124,185,178, 34, +249,212,148, 45,164,230,241, 19,121,254,228,166, 58,218,134, 60,248,228,125,125,134, 23, 12, 20, 38,110,150, 58,212,251, 68, 21, +235,238,173,107, 26, 36,149,105, 3,174,109,168,243,210,108,122, 48, 90,210,164,103,192, 76, 23,192, 67, 84, 87,118, 55, 55,212, +169,205, 53,105,217, 32, 16, 23, 10,117, 80,225,220, 63,236,200,195, 39, 67, 57, 59,126,196, 49, 90, 76, 55, 97,220, 19,215,140, + 61, 92,214,231, 26,168,141,185,166,137,211,126,171, 79, 76,213,186, 58,196, 9, 48, 68,144,149,197,108,185, 58,181,241,112, 78, +178, 26,244,234, 87,116,127,218, 51, 76, 72, 83,131,245, 10,144,245,152,199,215,245,223, 59, 57,151, 52,116,219,139, 33,147,173, +171, 27,117, 62,139, 86, 31, 34, 62,125,217, 88, 90,146,161, 62, 47,180,123, 39,103,231,204,156,235,181,186, 52,245, 62,244,106, +245,190, 46,100,103,115, 75, 30,237,157,202,222,254,190, 38,132, 53,121,244,162,165, 54,163, 76, 10,112,156,127, 84,132, 80,201, + 66,213, 46,138, 38, 26,120,157,203,254,254,158, 44,175, 93,213,207,170, 81,175,225,180,123,100,147, 26,152,192,208, 51,131,140, +125, 14, 9,242,132, 85, 35,137,127, 16,227, 86,193, 20, 19,125, 15, 71,149, 83,196, 53, 0, 79, 19,204,198, 82, 42, 53,200,111, +129,172,186, 84, 14,140, 31,160, 57,160,112, 13, 41,167,195,240,114,244,149,213, 36,128,108,231, 8, 0, 18, 84, 6, 76, 39, 92, + 79, 28, 32, 15,200, 99,198,151, 12,179, 86,113,118,106,108,240, 95,160, 65,247, 92, 54,110, 42,157, 86,158, 7,242,105, 33,104, +134,214, 99, 30, 54,123,189,156,160,145,204, 35, 82,154,107, 38,167, 27, 2, 44, 76,119, 86, 83,114,208,153, 73,187, 51,150,122, + 41, 35,215,171, 26, 61, 12,251,252,130,205, 92,164, 81,225,144, 55, 78,173, 92, 82, 65, 26,141, 36, 16,147, 56, 84,249, 57,192, + 98,198, 70, 87, 80,103, 14,246,167, 88,157,220,119,190,178,101, 3,254,122, 96, 78,154,161,252,244,221,167, 44,211,254,209,119, +175,202,213,213,178,101, 92, 60, 4, 14,159,173,239, 95, 93,157,202, 82,107, 36,207,213,193,157,158,143, 88,118,249,238,155,155, + 4,128,161, 44,116,109, 5, 98, 44, 73, 10, 35,224,253, 86, 86,243,100,239,180,163,155, 58,205,153,123, 82,157,130, 3, 59,242, + 77,205,198,183, 12, 53,149,181,172, 12, 76, 84, 88,176, 15,239,159,208,201,102, 18,254, 37, 24, 33,225, 80,156, 36, 7,112,140, + 68,134, 60,247, 57,179,140, 17,131, 55, 95, 90,150, 79,213,113, 63, 57,155, 48,155, 95,169,103,245,144,207,201,143,140,123,217, + 63,234,106, 36, 59,213,195, 87,102, 20, 57,152, 79,216,167, 1, 1, 10, 38, 6,240, 15, 42, 26, 23,106,224, 80,238,158, 13, 99, +210,159,130,176, 7,125, 85, 24, 54,244,152, 83, 48, 92, 26,129,247,167,105,110, 22,236,135,138,174, 67, 71,215,119, 73,163,202, +237,101,104, 24, 59, 72,246, 66,150, 16, 61,193, 74, 70,174,234,181, 62, 57,153, 80,112,130,226, 60, 95, 34, 48, 56,185,152,200, +126,115, 34, 94, 10,101,213,132, 99,212,139,212,152, 36,165,154, 84,131,176, 94,148, 56, 17,202, 11,240, 78,167, 12,196,103, 6, + 76,215, 93,179,157,166, 58, 25, 15, 44, 34, 98,253, 31, 89,232,201,131, 57, 42,145,227, 78,197,136, 97,189,192,165,212,107,208, +251, 81,103, 3,105,221,187, 55,235,242,206,175, 15,228,222,131,115, 39, 5, 26,186,210,186,153,121, 32,127,183,214,242, 68, 57, + 35,200,131,200, 16,250,234,200, 0, 43,154,105,248,145,121, 2, 24,121, 56,244,214,185, 58,184,212, 80, 42, 57,187,119, 60, 39, +140,156,205, 40,239,106,207, 21, 10, 84,179,137,103,179,169, 49, 70, 16,213,168,135, 37,130, 0,219,237, 46, 9,136,170, 21,244, +170,109, 76,237,172, 13, 17,153, 33, 29, 75, 50, 3,112, 40,208,186, 19,102,170,200, 66,208,199, 6,183,252,177,190,151,101, 56, + 0, 10, 65, 91,169,215, 53,134,106, 8,123,107, 41, 82,251,162,132, 6, 37,181,139,254, 64,142, 91, 45,185,115,245, 10, 29, 15, +148,213, 18, 9,223,245,172,141,127,128,242,168,145,149,223, 65,248,114,117,107, 91, 86, 53, 99,138,212,168,124,248,248,133,116, +103, 17, 51,201,102,251, 66, 26,250,153, 75,106,184, 78,154, 45,199, 72, 54,100,214, 15,112, 38, 12,221,145, 3,229, 29, 53,155, + 44,149,227,249,129,196,101,187, 94,146,207,247, 91,242,233,222, 17, 3, 14, 16,199, 84, 80,202,209,117,122,113,122,110,142, 52, +142, 28, 1,144,245,249,102,142,220, 5,224,181, 28, 36,147, 11, 57,210,125, 38,124, 27, 13, 91, 16,213,248,142,196,197, 74,173, + 41,102,133,152,187, 69, 38,132,128, 2,202,121,107,141, 37,210, 59, 95,221, 68, 37,161, 73,164, 54,238, 31,210,167,168, 12, 82, +218, 56,109,138,130, 99,182, 47, 70, 26, 96,230,196,131, 50, 33, 65, 67,190, 17, 10,233,249, 33, 10,152,164, 86, 57,142,123,246, +251,125,219,123, 9,163,178, 30,113,194,103, 78, 58, 89, 4,110,184, 55, 4, 69,105,178,135,165, 47, 51,114,142,225,121, 70,235, +204,204, 26, 14, 61, 50,249,216,192,233, 94, 47, 38, 47, 18,163,177,244,212,153,228,213,137,179, 20,239, 91,203,130, 51,201,236, +193,198,108, 67, 66, 24, 74,211,104,147,140, 70,239, 83,237, 99,167,221,146,208,207,203,107, 27, 87, 57, 77,179,186, 92,147,228, +198, 58, 1, 93,149,242, 85, 89, 89,223,150, 15, 62,249,152,152, 18, 82, 41,187, 17, 38, 84,182, 66,112,201, 63,121,194,192, 28, +213,198,136,116,208,226,216, 56,201,118, 34,247, 91, 39,108, 45,224, 60,126,246, 96,200,214, 5, 5, 91, 52,200, 44,106,208, 16, +121, 25,102,166, 64, 96,103, 53,187, 7,113,214, 48,240, 68,227, 86,217, 41,102,100,115,169, 76,176,244, 55,238,110,201,207,239, + 29,201,175, 30,180, 72, 38,134, 25,247,158,222, 47,167, 65,146, 33,129,209,153,100, 78,238,239, 55,153, 8,226, 58,208,175,198, +126, 58,237,154,112, 22,224, 43, 32,198,250,226,217, 1,247,243, 21,117,208, 0, 49,118, 53, 11,158,143,250,186,222, 21,205,186, +155,114,170,206, 31,108,153,229,234,138,180, 53,176,132,192,206,193,241, 51, 13, 46, 99,150,195, 17,180,228,139, 85, 73,100, 96, +159,117, 45, 53, 24, 59,238,157, 48,161, 35,167, 60, 71,172, 53,224,152,160,138, 84, 34, 97, 79,189,146, 99,197, 21,215,132, 48, +139, 68, 86,250, 95,168, 37, 18, 60,169,215, 75, 98, 30,236,241,249,148,192, 68, 96,163,226,216,144,250, 40,221,183,218, 29, 38, +115,208,157,247,213,166,165,210,166,230, 9,176, 92,160,201,221, 36,232,179,253,121,117, 69,237,228,241,153, 76, 70,106,163,147, + 21, 6,201,248, 94, 80,108,163,101,147,195,168,177, 62, 59, 95, 38,196, 85, 5,250,252, 75,121,147,146,206, 36, 13, 24,138,150, + 38,170, 15,168, 40, 60, 63, 27, 27, 3, 94,108,202,113, 36, 41,243, 28, 96,206, 1,128,241,119, 0,247, 53, 26,186,239,222,218, + 84, 67,163, 7, 21, 64,174,249,198,138,236,181,242,106,212, 6, 82,203,171,179, 92, 74,202,187,173,182,252,250,176, 41,191,255, +122, 81, 26, 26,149,204,125,116,169, 19,178,170,198, 20,229,136, 36,147,163,152,132, 3, 0, 85,165,139, 49,191, 52,149,130,227, +234,203, 16,139, 30,219,184, 19,140, 8,202, 97, 56,120, 48,206, 64, 31,238,238, 44,203,193,217, 72, 62,122,214,215, 7, 85, 32, +226,150,237,198,132,245, 28,176,138, 37,221, 92, 95,169, 23,229,245,155,171,234, 40,167,114,160,209,208,173,173,154,252,206,171, +235,234,128,102, 20,212, 0,241, 11, 2, 19,234,249, 98, 14, 91,159,210,146,110,164,237, 98,204,114, 39, 15,145,222,124, 29,189, +161, 90, 70,142,206, 0,192, 8, 36,147, 55,250,215,140, 94, 59,168, 73, 97,180,142,154, 61,249,238, 77,141, 72,245, 65, 93, 76, +172,138,129, 40, 16,101,176, 56, 54, 16, 24, 74,117,139, 17,138, 72,131,161,109,117,226,232, 71,223, 88,131, 30,182,209, 56, 62, +216,159,115,222,149,109, 10,189,223,119,239, 29,202,245,149, 12, 91, 9,227,104,198, 7, 59,119, 61, 19,100, 7,199,221,169, 70, +173,232, 7,251, 28,223,106,143, 80,238,201,146,109, 11,115,211, 24,163,203, 69, 83,121, 12,145, 11, 32,117,147,118,208, 49, 86, +177,170,209,240,213,122,104, 74, 61,115, 87,239, 89,140,105, 56, 86, 66,140, 7,109, 55, 60,233,232,117, 46, 85,224,140,173,144, +146,210, 23, 60,254,232, 84,246,187, 9, 89,219,172, 26,213,169,219, 92,203,185, 80, 78,213,176, 95,173,215,165,228, 7,146, 77, + 88,239, 28, 25, 86, 10,220,208, 73,163,133, 61, 31, 76,120, 72,176,201, 3,150,138, 13,236,161,119, 70, 92, 1,106, 34,147,225, + 64,247, 75, 90,150, 43, 89, 41,230,103,204,208, 64, 15,186,113,165, 36,217,199, 25,105,247, 67, 43,147,163, 50, 17,196,228, 54, +192,218, 87,107, 57, 89,215,245,197,168, 24,202,152, 47,239,174,219,104,101,236, 84,172,146,110,172, 3,115,218, 7, 23,234,212, + 79,197,153,181, 75, 97, 9, 84, 7, 48, 61,145, 74,154, 83,170,148,139,156,233,181, 41, 14,159,114,170, 15,239, 95, 80, 65, 10, + 37, 84, 83, 44,131,241, 84,231,131,232, 58,128,193,240, 47,231, 84, 15, 90, 71, 4,189,129, 70, 25, 89, 37,140, 91, 23,220, 5, + 81,232,102,176,115, 28, 55, 67,144, 66, 61,130,164,105,154,163,172,152, 87,167,118,210,110,243,245, 55,119,118,164, 81,173,200, +103,143,159,241,250,103, 84,180,210, 61,160,159, 11,131, 54,119,104, 87, 60, 20,100,159, 0,182, 61,213, 96, 21,173,139,175,221, +190, 42, 15, 52, 99,126,164, 63,216, 7, 64,161,191, 56, 58,166,252,103,191,223,227,186,195, 9, 2,215,128,253, 10,231,143,254, + 59, 74,134,148, 78, 86, 3, 3,131,123,239,233,145, 94,107,224,128,127, 9, 6,238, 32,125,234, 12, 71, 98, 83, 92, 41,246, 49, +167, 65,232, 42, 34, 78, 90, 18,170,107,250,252,251,154, 65, 5,147, 30, 91, 50,168,237,140, 92,233,146,253, 61,100, 62, 46, 3, + 65,105,127, 58,183,241, 33, 74,108,102, 17,144, 77, 89, 18,157, 73, 86, 3,177,148,108,175, 5,242,225, 39, 15, 72,235,139, 42, + 81,181,148,103,251, 7,101,111,204, 28,163,164,140,192, 44,151,207,144,156, 9,229,219,180,107,243,192, 24, 93,142,249,136,169, +186, 97, 62, 27, 4, 54, 36, 86,145,169,120, 57,107,215,180,212,153, 14,167, 67,102,116,249,108, 73,114,197, 34,249,209, 81,189, + 51,114, 36,187,206, 78,183, 69,176, 25, 2,220,116, 62, 43,229, 4,168,141, 7, 50,165, 83, 16, 6,240, 25, 80,220, 22,138, 4, + 8,226, 58,209, 95,206,229,236,249,219,248,145, 81,105, 15,208,237, 27, 14, 9, 92, 35,191,197, 64, 3,177, 70, 67,239,111,102, +124, 19,234, 28,114, 9,208, 92,231,137,123,192,154,223,188,253,138, 28,237, 63,148,211,179, 51, 93,179, 34,219, 64,108, 39,105, + 16,133,241,181,243,139, 22,245,237,177,199, 76, 33, 45,224,119, 81,154, 57, 48, 86, 58,207, 17, 85, 49,184,157, 27, 15, 4,212, + 1,215,147, 37,142,224, 21,179, 87,117,191, 45, 88,205,132, 56,147,132,218,246,159,106,160,253,183,191,188,167,123,116, 85,202, + 78,167,130,136,110, 16,187, 68, 30,199,182, 16, 20,111, 55, 52,233, 91, 43, 26, 96, 77,179,255, 86,119,198,177, 57,180,241,186, +122,191, 47,239,212,101, 0,233, 94,182,105, 68, 19,173,156, 6,192,234,136,207, 78, 25, 92,194, 14,190,122,109, 83,247,211, 80, +134,224,226,215,245, 24,206, 52, 57,155,246, 56, 10, 89,169, 20,117,141,211, 26,212,151,244,187,115,106, 11,107,186,190,121,210, +184, 98, 60, 20,250,240,160,147, 6,194, 62, 12,163, 75, 14,118, 58,224, 66, 69, 50,165,186, 6,208,224,255,239,115,170, 8, 4, + 78, 20,176, 82,187, 26,105,144,133,228,107,230,248, 62,122,147, 17,239,169, 0, 14,133,249,156, 36, 80,240,164,104, 25,145,179, + 1,231, 90,147,171, 88,157, 60,180, 3,176,183,176, 11, 38,234,115, 10,229, 37, 89, 93,223,148,238,164, 47, 23,163, 88, 86,243, + 99,181,181, 57, 86,112,215,170,154, 8,116, 6,146, 46,129,135, 33,148,106, 26,211, 58, 9,217,210,181,219,235,137,252,241, 31, +108, 75, 2, 34, 84, 8,152, 2, 11,134,147, 41, 35,242,233,254,187, 61,217,215,100,145,237, 92,151,202,131,243,196,212,237, 98, +195,194,144, 8, 75,179,127,244,213, 81,226,192,193, 8,152,113, 65,164,160, 34,232, 6, 34, 67, 41,233, 6,251,193, 75,117,249, +179, 95,236,177, 60,178, 83,139,120,144, 80, 41,216, 74, 5,116, 32,145,110,254,179, 97,168, 70,106, 34, 95,187, 90,151,205,170, + 26,184,241,132, 11,244,174, 70, 24, 93, 47,103,100, 13,147,153, 19,139, 49,201, 64,244, 38, 49,255, 8, 70,172,151,174,100, 88, + 10,237, 14,230,234,156, 96, 40, 18,164, 26, 69,128,153,246,109, 60, 37,155, 50, 75,146,171,231,165,160,134,249,237,251,103,186, +145, 74,124, 0,250, 76,104, 4, 80,138, 96, 86, 97,172,150, 82,213,131,117, 49, 7, 85,105,150,135,235,219,111, 20,228, 91,186, + 40, 16, 74,248,248,201,185,124,166, 63, 24, 79, 1, 79, 57,250, 45, 57,205,170,113, 0, 48,183,188,186,146,227, 65, 57, 57,155, +184,113, 37, 91,112,176,234, 65,106, 22, 24, 2,245, 53,194, 42, 30,118,207, 72, 35,241, 97,160,206, 33, 69,249, 90,246, 58, 33, + 38,128, 3,230, 8,247, 1,120,195,195,202,113, 42,192,168, 15,159, 3,240, 18,186,241, 40,221,104, 21,125, 88, 62,244,199,245, +239,191,255, 74,141,189, 81, 24, 26,150,216,129,216, 7,153, 72,102,164,193,210, 68, 78,186, 80,163, 74,107,228,151,147,205, 70, + 65,146, 57,255, 75,132, 7, 84,245,112, 37, 29,115, 10, 40, 82,212,150,245, 32, 94, 76, 73,115,105,243,219, 49, 75,173,160, 87, +205,151,235, 4,101, 45,178,215,155, 26,128,188,190, 58,149, 79, 38, 9,249,251,143, 79,228,123, 47,175, 18, 73,122, 37, 19, 81, + 57,174,144,182, 44, 18, 20,213, 48, 74,155,203, 21, 89,169,102, 93,201,213,163, 97, 96, 63, 8,224, 62,204,177,198,121,246,220, +177, 57, 55,151,203,122, 16, 98,185,232,141,164,173,187,250,218,106, 69,222,120,101,198,246,197, 82,125,137,100, 33,224, 99, 71, +164, 12,148,116, 41,159,226, 88,224,113, 7,204,106, 21, 58,181,133,219,190,164, 80,134,190,115, 92, 83,163,152, 33,209, 10,231, +178, 73,238, 48, 34,208,165, 88,182, 62,249,217,121, 71,154, 61,200, 72,102,165, 86, 72,153,210,153, 30, 74,128,122,128,155, 64, + 6,132,136,122,239,160,207,178,174,144,117, 11, 83, 22, 35, 57,215,204,124,112,214, 55,212,120, 53,199,253,214,209,231, 2, 71, + 76, 89,214,140,113,203,247,221,172,118,134, 52,195, 30, 3, 59,244,186,225,228, 30,237,239, 83, 10,179, 81, 41,203,237,171,187, +242,232,197, 62,191,215,218, 50,230,208,241,165,200,104, 81,194, 93,168,154,161, 2, 69, 18, 23,144,107,104,128,244,201,179, 61, + 74,134, 34,123, 68, 59, 11,135, 26,165,114, 80,199,162,119,143, 41, 16,112, 83,227,124, 3,248,131, 86, 84,189,154,162, 1,155, + 71, 54,127,219,213, 76,118, 48,153, 56,164,109,194, 69,255,226,244, 24, 98,206,153, 35, 40,246,139, 9, 67,251, 2, 24,166, 7, + 12, 78,178,167, 14, 47,135, 17,169, 82,133,149, 56, 4,212,200,134,232,196,231, 38, 98, 4, 7, 82, 45,230, 88,205,225,124,117, +207,212,245, 82,169,156, 84, 48,171, 93,222,148,173,141, 13,222,227,254, 89,143,211, 34,127,248,189, 55,228,233,193,169, 60,219, + 63,230, 24, 21,212,202,230, 51,195,191, 16, 40,202, 76,219, 2,112, 78, 20,168,131, 7,169, 13,120,199,209,102, 64, 54,170, 17, + 40,123,198, 84, 21,155, 4,116,118,243,216,148,234,176,134,141,218,146, 6,118,186,143,178,121,130,157,112, 95,105,182,143,172, +205, 50, 15,172,172, 14,133, 70,210,245, 58,234, 81,124, 95, 97,216,147,206,197,133, 6, 36, 17, 83, 79, 16, 50,193,142, 97,114, + 1,163,114,225,130, 87, 33,142, 72,232,131,172, 21, 78,126,213,143, 73,215, 90,212, 32, 2, 92,242, 1,201,101, 64, 86,114, 34, +229,147,186,172,111,236,168, 99,207,209,153,204,117,207, 62,123,113,168,246,169, 40,175,188,242, 85, 25,189,247, 75, 6, 42, 41, +180, 64,211,158,244, 7,168,146,169,173,213,196,165,144,199,222, 48,237,135, 16, 51,220,172,132, 69, 44,169, 91,245, 82, 88, 97, + 34,208, 52,153,160,228, 41,198,125, 49,239,159,209,251, 15,230,186,143, 53,201, 56, 59,122,202,201,139,217,184, 34,255,252,135, +175,201,206,106, 89,254,197,255,241,182,156,156,107,208, 22, 86,140, 31,208,139,157, 78, 5, 0,132, 5,174,213,218,170,218,159, +205, 10,229,178,183,182, 86,228,157, 79, 14,104,235, 11,122,190, 58, 26, 20,163, 90,129, 41,147,174, 38, 81,214, 62, 69, 85, 32, +166, 79,192, 25, 69, 48,213, 27, 11,255,123,147, 68, 58, 70,100, 83,171, 22, 77,225,208,245,154,137,163, 72,193,198,121,108, 63, +158,171,163,110,106,112, 77,233, 43,125,254,228,158, 8,167, 78,172, 37, 37,249,124,137, 60, 35,217,148,161,194, 71, 17,152,237, +132,232,127,218, 5, 93,171, 1,117, 1, 66, 86,153,112, 6,141,102, 86,207, 70,214,103, 22,141, 64, 52, 67, 60, 79, 36, 70,128, +231,241,187, 76, 10,217,179, 42, 72,104,154, 37,172, 82,105, 40,122,164, 73,231,222,209,185,124,243,155, 27,146, 47,148,100, 2, +230, 77,111,172, 79,188, 40,229, 82, 78,131, 87, 95,122, 31,159,201,225, 81,155, 35,203,143, 30,159,202,225,193,146,220,122,169, +193,179,229, 37,205, 94, 83,176, 72,247,215, 43,183,202,250,121, 3,182, 82, 81, 49,194, 30,128, 60,246, 60,166,243,177,192, 95, +191,123,103, 57,171,219, 81,157,255,148, 34, 32,145,113, 86,199, 83,202,139, 10, 50, 11,117,178,200, 0,103, 26,133,143,212,176, +116,206, 7, 50,131, 81, 68, 6,166, 25,118,181,174, 81, 57,162,123, 63, 37,149, 70, 89,118,118, 83,178, 82, 74,144,132,229, 31, + 30, 15,228,241, 94, 83,142,123, 51,102,198,155,154, 25,207,213,242, 3, 68, 3, 33,146,222, 88, 13,151,102,158, 75, 26, 29,232, +113,209,108, 48,201,158,242,171, 80, 58, 82,163,147,128, 10, 9, 12, 12, 16,169,242, 27, 46, 92,206,180,235, 3,254,187,147, 30, + 23,238,157,135, 77,185,189, 93, 85,103, 12, 38, 58,124,102,218,148,223,156, 56,137,198,100, 18,161, 92,229,199,116,218,233,228, +130,192,223,147, 55,111, 52,228,218, 70,145,155, 7, 70, 75, 56,194, 98, 51,206,159, 61,111, 73, 87,141,254,246, 86, 70, 15, 90, +210,104, 65, 13,130,163, 14, 34, 37, 73,221,156, 37,141,184, 32,238,194,242,110, 56, 99,255, 15, 89,235,147,163,145,236, 37,132, +234,116, 0, 59,208, 88, 66,173, 40,105, 25,203, 12, 58,234,250,223,243,254, 84, 14,213,201,255,242,139,182,102,131, 51,185,123, +165, 44,255,236, 15,111,146,226, 21,135, 6, 37,125,246, 18, 49, 39,233, 91,185, 27,117, 73, 16,159, 96,180,239,195,189,174,156, +183, 65, 67,168,206,126, 84,148, 91,155,105,169, 54,114,236, 29,198,174,167,137,245, 34,105,180,211,245,193,102,159, 83,252, 34, +208,172,221,184,213, 57, 41,128,153,243,205, 13, 57,234, 89,217, 62,208,247,174, 85, 19,114,187,110, 37,218,151,110,172,200, 36, +110,202,187, 15,207,229,213,235, 75, 4,230,132, 14, 8,134,114, 87,167, 61,144, 23,135, 3,246,108, 87,170, 25,102, 77,112,242, + 73, 7,140, 99,224,133, 30, 15,118, 71,210, 99,249, 31,207, 1,100, 55,201, 90, 81,218,211, 57, 3,160, 55, 95, 41, 80, 99, 26, + 35, 72, 16,106,193,220, 59,245, 0, 34, 35,205, 72, 3,136,166,219,179,165, 22,192, 79,130,121, 47, 77, 10, 77,182, 25,124,143, +142,244,176,217,129,233,163, 42,215, 52,200,176,100, 11, 7,136, 17, 25, 0,173,250, 32,213,128, 42, 27, 24,201, 70, 51,153,140, + 82, 60,196, 32,143,128,236, 99, 56,179, 82,241,121,183, 41,131, 94, 87, 86, 42,107, 24,124,210,191, 31,202, 88,215,224,188, 59, + 36, 25,204,122,166,198,246, 77,127,110,186,221, 40,233, 86,160,120, 40, 98, 37,111, 17,151, 29,154, 74,217, 82,189,204,202,214, +195, 23, 7,116,178, 48, 30,171,154, 37,237,159,158,178, 92,142, 62, 56,156,115,133,217,152, 81,104, 18,221,154, 88,168, 67,249, +236,189,163, 23, 94, 45,150,120, 61, 0,222,141,124, 35,123, 66, 80, 12,166, 58,148,173,151,235, 85,142,189,117, 53, 91,231,239, +192,122,165, 70,107,185, 86,103,240, 1,192,216, 98,132,230,224,180,105,217,180, 27,207,241, 61, 43, 46, 51,160,198, 56, 79, 58, +125,137,194, 77,179,242,162,247, 37,166,250, 23, 0, 67,160,182,160,162, 78, 17,215,107,132, 50,190,156,180, 58,236, 61, 39,147, + 70,109,140, 76, 11, 21, 2,159, 84,208, 98,186,236,106,176,218,189, 33, 65,123,168,208,129, 63, 32,163,127,190,255,236, 41,247, + 37,170, 83, 94, 18,217,248, 72, 32,194,155, 76,154, 18, 23,122,216, 48,190,188, 22,180,112, 28,130, 25, 45,161,172, 94,143, 36, + 60, 71,246, 97, 60,244,172, 60,164,173,141,134, 12,136,140, 91, 26, 44,165, 98, 35, 97, 65, 41, 21,246, 5,118, 47,153,204,243, +239, 35,183,223, 60,150,241, 51,196, 73, 68,177, 81,194, 98, 54, 25, 12,107, 0, 24, 38,178,122,191,200,202, 19, 66,206,126, 4, + 97,177,235,125,130,145,147, 19, 37, 98, 10,104,105, 4, 49,149, 26,157, 63,236,192, 88,131, 44,140, 62,182, 47, 58,250,153, 93, +121,246,240, 51,205,218,151, 53,112, 69, 96,107, 70,122,160,207,248,226,162, 45, 27,107,203, 28, 87,124,252,228,177,148,202, 53, + 18, 79, 97, 13, 0,200,130,147,219, 90,174,179, 18, 4,185, 92,201,198, 4, 21,122,161,141, 81, 97,172, 11, 9, 79, 33,159, 96, + 53,112, 74, 6,201, 9,193,196, 71, 71, 7,108, 7,229, 11,203,116,140,192,115, 0, 27,244,179,247,191,144,119,239,237,203,191, +248,111,127, 87, 94,189,177, 45,167,157,161,188,104,246, 41,217, 74,118, 76, 18,239,128, 61, 47, 69, 7, 61, 24, 71,114,210, 9, +165, 94,207,106,160,154,146, 55,239,172,203, 3,181,161,219, 43, 69, 89,153,231, 9,248,187,185, 89,147,138, 62, 83,144, 93,193, + 60,247,199, 25, 25, 5, 9, 6,154,152, 49, 47,228,139, 4,226, 82,248, 42,105,213, 20, 86,173,230, 22, 24,245,199, 54,215,142, +231, 3,249,230,201,116,172,159, 53, 32,158,194, 64,179, 62,131,243,153,163,146,205,235,243,201, 23,235,156,142,152, 5, 61, 86, + 47, 18,108, 95, 36,245, 89,155,142, 59, 58, 51,216,131,120,218,248,110,236, 25,156, 61,146,236, 48,128, 74,242,121,163,234,198, +233, 29,189,215, 73, 98,198,223,199, 14, 39, 49,232,180,116,127,229, 77,217, 20, 21,160,214, 57, 3,229, 50,248, 21, 52, 67,191, +251,237,134,204,117,255, 32,200,165, 90, 61,121, 45, 60,121, 75,253,219,231,143,155,242,246,103, 39,106, 83,102,242,243, 95, 60, +151,107,215, 42,172, 54, 33,122,136, 29,251, 39, 56, 77,118,119,139,178,161,254,118,255,108,196, 4,165,224,107, 64,145, 41, 73, +148, 40,176, 90,134,107,219,105,232,254,159,247,200,247,144,236,233, 98,245,212,225,130,208, 51,147,200,106,166, 57, 37, 5, 97, + 14, 81,160, 70, 36,231,186,240,119, 55, 74,140, 48,194, 74, 69,102,195, 33, 75,159, 47, 14, 70,100,125,219, 92,209,131, 93,202, +114, 84,232,176,213,151, 11, 93,132, 73, 58, 39, 91,119,111,200,241,189, 3, 57,104,245,100, 87,175, 21,188,214,148, 99,140,140, +166,176, 59,152, 25, 11, 29,165, 33, 67,217,110,248, 82, 43,249, 68, 83,250, 78,191, 27, 81,149, 1,111,140,169,135,154,226,186, +113,187,179,152,155,107, 10,129,150,185,169,204, 9,213,195,244,144,198,214, 43,135,180,122, 22, 32, 40,141,232,154,154, 1,172, + 84, 10, 36,145, 9, 93,249, 16,209, 35, 50, 8, 56, 5,124,223, 36,180,145, 56, 4, 42,175,238,214,185, 6,179, 81,204,236, 60, +136, 18, 44, 37,101,138, 64,237,199,146, 45,235,102,206,167, 37, 64,217,166, 63,165,145, 44,234, 33,126, 69,131,128,193, 56,228, +142,191,122,187,172, 7,206, 14,119, 65,163,177,227,214, 84,126,193,158, 86,200,223,245,157,170, 24,192,127,220,120, 0, 8, 46, +101,141,240, 34, 52,178, 10,112, 98,199, 0, 76,128,108,197,201,222,198,250,124, 18, 32, 28,137,103,114,122,220,149,214, 16, 14, + 39,148,206,173,154,108,172,102,184,121,120,160,167, 96, 55, 11,140,114,210, 9,240, 36, 34, 59,240, 83,244,136,150, 50,140,234, +135,253,185,236,247, 19,210,153,185, 44, 21,212,139,234, 61, 95, 91,143,244,126,225,206,178,140, 28,191,246,198,186,196, 31, 29, +203,227,163,190, 92,191, 2,254,238,128,107,152,208,160,105, 89,191,247,142, 30,210,179,206, 72, 29,110,129, 25, 47, 34, 78, 4, + 48,214, 11,246, 47,233, 84,129, 44,102, 79,214,201,238, 34,147,128,191,135, 94, 64, 22, 18,152,149, 20,199, 81, 0, 76, 73, 35, + 80,130, 16,107,108,180,162, 24,187,236,123, 19,153, 14, 35,217, 92,210,168, 87,175,163,188,190,196, 81, 64, 0,169,246, 31,236, +201,209,225, 72,159, 71, 82, 66, 56, 0,140, 21,129, 38, 82, 63,235, 69,179, 41, 15,247, 6, 12,182,190,247,214,166,102,205,154, +161, 64, 98, 20, 83, 7,200,210, 64,183,185,154, 96,196,126, 79, 95,247,217,222,177,108,150,202,146,206,234,122,230,155,210, 28, +153,188,172,205,144,166, 53, 40,211,200, 89,179, 16, 24, 17,220, 89, 93, 95, 11, 71,128, 89,112, 68,236,105,150,128,125,222, 95, + 77,157, 30,198,156, 48,107, 14,135,142,133,120,245,230,117,174,195,163,189, 23, 4, 88, 17, 5,172, 78, 9,215,194, 57,120,119, + 46,108,230,223, 64,104,115, 7, 28, 91, 16, 92,192, 49,226, 51,144, 49, 45,233,217,108,247,122, 44, 3,227, 92, 29,156, 53,217, +243, 70,169, 29, 76,110,100,201, 2, 22, 67, 29,197,130,192, 34,225,200, 38,108, 36,198,231, 15, 1,129, 46,235,136,196,128,141, +168, 32, 88,155, 39,111, 99,106,145, 77,188, 0, 0,136, 62, 52,248,246, 81, 2, 6,113, 75, 46,109,253, 98,244,180, 1, 66,194, +105,198,100,201,156,212,197,160,175, 45, 58, 99, 61,215, 64, 17, 51,190, 67,146,208,128,246,179,171,127,190,232, 15, 53,216, 89, +226,190,185,182,213,144, 85,205,214,246, 79, 90,226,165,140,107, 32,164,104,147, 85,185, 16,244, 39,153,201,249,142,255,219,128, +155,172,225, 56,238,110, 84, 46,210,122,255,249, 60,198, 99,199,124, 63, 71,185,240,253, 19, 50,108,137, 55,242, 56, 18,149, 43, + 6,151, 25,102,134,244,166,115, 43,207,231, 11,124,237,136,253,253, 36, 3,238,105, 0,227, 59, 22, 47, 93, 54, 94, 37, 56, 12, + 80,220,106,240, 2,125, 7,112,249,247,135, 19,150,123,103,200, 72,179,106, 7,178, 73,182,161,230,108,189,141, 89,224,195,156, +119, 18,153,223,160, 35,135,199, 39,186, 70, 1,171, 7, 16,104, 42,148,235,242,193, 7,239, 73,254,219,223,145, 31,253,193, 31, +200, 95,252,133,238,159,241,156,153, 34, 74,198,121, 86, 2, 99,185,112, 0, 75,156, 93, 84,108, 0, 74,163,141,115,130, 38, 32, +250,154,204,198, 92,179, 66, 78,175,107,208,187,164,117,133, 61,222,205, 55,164,170,251,183,148, 89,145,157,173,101, 13,248,115, +242,235, 7, 7,242,191,254,249, 71, 20,180, 10,102,145,211,246, 88, 40,157,249, 70, 96, 19, 27,171, 90,165,224, 83, 72,231,131, + 47, 78,216,143,190,179, 85,149,151,174,173, 72,179, 59,166,195,105,247,103,108,139, 33,216, 61,105, 13,168, 75, 0,210,155,106, + 1,193, 72, 86,215, 37,193, 32, 30, 24,139,246, 89,151,120, 6, 4,180, 16,248,161,254,129,111, 32,101,236,127,113, 60, 17,179, +201,128,193,188,189,118, 78, 96, 34, 39, 77, 64,149,173,193, 21, 70, 57,161, 96, 9,224,118,228,168,206,209,126, 3,161, 12,199, + 32,163, 41,167, 84,208,167, 7, 40,231,236,252,130, 36, 78,217,140,238, 5, 84,203,138, 53, 6,187, 88,111,124, 17,136,109, 80, +117,131,111, 73,178,114,234, 51, 16, 5,168, 23, 52,222,233, 92,145, 99,139, 47,246,247,200,239,178,209, 40, 73, 39,244,136,213, +193,204, 59,218,169, 11, 35, 8,159,183,170, 1,208,183, 94, 91,151,255,251,111, 62,151,164,218,208,251, 79,207,229,201,253,115, +185,249, 82,221, 56,241, 19, 38,197,205,228, 84, 3,145, 55,238, 86,136, 41, 67, 83,227,119, 94,171,202,113, 55, 41, 31, 62, 51, +189,133, 74,206,147,170,104, 96,120,114,193,145,195, 36,178, 68, 48,138, 13,219,125, 41, 6,172, 99, 72, 0, 26,215,216,103,249, + 9, 99, 81,119,174,175,105,132,145,151,251,207, 71,172,113,162,196,136,114,189,238,124, 57,155, 37,101,118,208,213, 27, 30,179, +236,169,183, 42, 91,122,193, 94, 90, 15,248, 27, 27,114,255, 9,230,193, 71,178, 12,198, 50,221,212,201,216, 40,100,179,122, 24, +171, 26,185,157,104,230,116,187, 81, 32, 83, 27, 70,200,166,122, 16, 82, 62, 80,162,105,150, 90,247,206,135,178,219, 40, 24,223, +180,126,247,190,102,133,199,205, 62, 9, 34, 0,136, 89,205, 27, 96, 37,161,107,143, 4, 31, 27, 26,155, 16,165,149,211,206, 68, +178,185, 64,222,121, 98,132, 22,255,229, 15,110, 57,135,110,139,155,112,114,165, 48, 94,248,124, 26, 10,124, 22, 74, 48, 81, 82, +142,218,234,172,189,128, 51,212,199,122,160,119,119, 1, 28, 75,176,167,132, 25,243, 11, 93,179,147,189, 22, 65, 49,190, 58,137, +111,236,230,196,207,250,198, 52,142,202, 2, 74,175, 36,251,181, 64,101,240, 73, 71,158,235,253, 20,208, 7,234, 78,228,188, 51, +177, 49,149,200,227,216, 84,172,191,195, 6, 67, 89, 15,228, 52, 80,250, 98,166, 46, 51,147,160, 5,175, 57,208,192,136, 68,209, +106, 0,242, 20,224,145, 9,230, 74,167, 18,107,100, 56,135,212,169, 58, 83,148,166,246,207,134, 26, 5,142,221, 92,183,199,185, +109, 16,156, 84,212,105, 39,230, 17, 1, 73,207,219, 34, 79, 59,145, 43,185, 10, 71, 99,190,186,173, 1, 79, 65, 29, 74, 34,195, + 2,129,165,157, 9,249,198, 91,235,242, 15,239, 28,201,223,191,115, 40, 63,248,234, 54,203,128,160,168,109,104,112,244, 61,205, +184,255,245,223, 63,214,141,149, 37,176,114,238,128, 29, 4,234,137, 9, 84,112,132, 35,118,253,126, 87,121, 1,191, 0, 52, 1, + 42,186, 84, 75,121,107, 21, 32,168,152, 38, 12, 39, 49,199,136,162,151, 36,160,110, 68, 2,170, 12,203,161,224,250,174, 38, 76, + 45,142,162, 42,112,120,234,164,251,250,156, 16,168, 33,130,197, 56, 26, 72,113,102,122,128, 63,125,208,151,211,243, 25, 17,244, + 48,186,213,130,174,155, 31,184, 42, 70,130, 32, 54,252,124,240,232,185,188,251,217,231,178, 84,218,149,215,238,236,202,193, 73, +147,134, 3,100, 50, 57,135,176,135,147, 51, 97, 19, 3, 81, 34,146,167,122, 83, 48,119,215, 3, 37,175, 72,215,161,164, 25,122, + 85,246,142, 78, 89, 45, 88,140, 98,221,190,178,205, 12,229,222,195, 71, 52,100,200, 92, 65,205,140,160, 18,134, 47, 8, 67, 71, + 18, 20, 19,132,135, 82, 33,193, 51,201, 12,153,232, 72, 72,131,135,231, 74,146,236,253, 14, 6, 44,213,223,218,217,150, 23, 39, +167,204,250, 19,204,174,147,198, 9,129, 22, 66, 18, 12,116, 29,226, 90, 34,231,252, 12, 53, 27,177,212,151,116,165,105,236,215, +164,227,227,199,152, 80,236,153,146,150,105, 22, 4, 14, 34,102, 35, 97, 5,119,239,147,177,137, 59,229,211, 57,155,152,137, 77, + 77,206, 3,185,106, 12,231, 17,144,218, 19, 12,123,112,150, 32, 20, 17,223,160,154,173, 86, 83,202,149, 42,159, 95,224,250,246, +232, 29, 39,147, 37,217,217,110,104,192,231,235,179,187,160, 88,148,177,198,165,120,157,112,162,184, 23, 4,252, 54,254,231, 57, +146, 35, 39,122,201,241,213,180, 1, 77,245,222, 48,106,107,168, 97,207,102,204,145,216,102, 51, 36,200, 89,224, 99, 8,148, 3, +160,209, 73,199, 34,107, 52, 61,110, 99,151, 68,144,166, 15, 5, 69, 79,158,191,164,163, 35, 62,106,158, 73,111, 52,144,222,176, +167,235, 85,150,195,211, 19,185,232,116, 25,248,100,114, 57, 27,161, 77, 36,169, 85, 79,180, 53,214, 3, 35, 93,250,188, 71, 35, +171,200,160,119,159, 40,228,136, 33,224,200,210,116,160,153,124, 75,238,125,250,161,252,246,247,127, 87,126,240,253,223,150,119, +223,255,152,129, 76,202, 73,138,242,128,170, 29,107,169, 45, 10, 99, 13, 12,179, 25, 50,180,177,122,147, 50,201,102,206,245, 99, + 68,118, 98,213,196,173,245,117,174,223, 44, 48,234, 86,224, 75,138,197,178,238,159,156,180,187, 26, 16,158,188, 32, 25, 17, 21, + 46, 53,240,194, 92, 62,152,228, 48,170, 8, 78,126, 4, 46,139, 48, 29, 76,156, 15,246, 7,154, 48,105, 96, 89,203,235, 35, 69, + 18,144,144,183,174,213,229, 79,255,242, 83,181,225, 35,253, 14,245, 10,141,162, 52,212, 46,108, 44, 27, 19, 36,100,149,135, 26, +192, 21, 11,118,223,109, 77, 44, 71,227, 62, 71,150,125,142, 87, 38, 89, 57, 66,112, 99,242,176,160,127, 29,178,218,133,252,134, + 83, 13, 80,121, 3,160,148, 18,187, 54,103, 78,178, 30,205, 98,177,134, 0,177,162,213, 67, 60, 84,198,246, 54,130, 57, 4, 57, + 8, 30,193, 8, 8, 27,113, 99,123, 85,166, 25,159, 58, 3,245, 74,145, 65, 19, 2,193, 64, 50,122,174,250, 78,190,213,124, 5, +213,231, 22, 35,115,145,201, 81,163, 42,217,234,158, 75,179,121, 76,209, 43, 4, 74,211,185,167,182,126, 44,207, 30, 30,202,213, +187,155,108,223,138, 19,180,121,241,197, 25,136, 51,228,173,175,174,203,175, 52, 83,127,164,254, 19,149,160, 95,188,175,175,189, + 89,229,124,255,162, 58,134,246, 31,194,213, 43, 55,203,178,246, 81, 70, 30, 61, 71, 43, 36, 35, 91,181,140,212,107,101, 62,131, +114, 90, 3, 94,189,206,114, 97, 89, 26,213,172, 38,156,229,178,140,102, 23,210,239, 15,104,108, 87,214, 86, 37, 95,171, 74,175, +123, 65,102,141,156, 31, 82, 99,216,167, 30,122, 96,146,163,193,128,209, 43,206, 0, 64, 14,144, 89,205, 16,209, 26, 72, 77, 52, +162, 41, 53, 8, 46, 66, 95,243,213,235, 43,178,145, 10,228,164, 63,162,246,175,177, 0,233,193,130,195,211, 67, 89, 43, 70,210, + 68,230,134, 69,211,247,172,151, 99,210, 81, 34,163,197, 56,212, 72, 23,236,168, 59,182,204, 79, 23, 11, 20,182,168,184,130,245, +232,217,113, 71,254, 92, 35,113, 42,244,204,197, 64,107,142, 18, 20,189,180,114, 9,232,229,190, 60, 60,192,225,235,201,205,237, +170,188,126,115,133,229,101, 44, 27, 12, 31, 94, 15,142, 97,242, 88,199,182,232,228, 48, 31,155,228,225, 64,179,199, 93, 4, 14, + 36,108,208, 67, 94, 72, 19, 87, 32, 32,169, 16,171, 60, 96,225,193,140,135,222,100, 15,204, 83,122,221, 48,134,129, 30,178, 73, + 96,114,162, 39, 23, 83,150, 20,247,154, 67,145, 54,144,255, 3,170,119, 69, 62,212,151,124,174,213,130, 65, 40, 70,192, 4,195, +142,186, 30,192, 75, 36,224, 16, 26, 91,100,226, 9, 93,147, 66, 52, 50, 14, 99, 9, 77, 4, 69,215,203, 3, 59,223, 32,144, 51, +117,232,224,151,134,246,247,225,153,245, 75,243,186,105, 87,212,107, 94,217,196, 96, 47, 12,134,102,247,186, 57, 90, 32,232,137, + 77, 80,128, 51,253,250,247,155,213,136, 76,117,200,196, 61,189, 46,100,254,177,235, 19,126,231,181,101,249,217,135, 39,242, 55, +239, 60,147,223,255,250, 22, 91, 26,129, 3,224, 12, 70, 51, 53,102, 61, 41,100, 26, 54, 87,237,251,142,254,208,168, 92, 67, 55, +218,129, 63,139,155, 39,135,225, 69,111, 30,193,193,254,248, 55,134, 19, 89,121,172,209,123,228,123, 78,137, 9,232,244, 88,114, +250, 76,115,115, 32,174,125,208, 33, 74, 60,236, 82, 70,211,119, 82,171,152, 16, 0, 69,100,103, 48,151, 23,199, 19, 93,187,148, +220,190,217,144, 98,169, 37, 7, 77,205,100, 48,118,133,121,113,223, 16,214, 4,130, 37,192, 53,221,151,159,222,123, 34, 15,143, +142,229, 90,253,154,116,131,169,252,135,123,239, 19, 25,155,210, 12,148,153,114,100,207, 24, 78, 27, 37, 85, 4,183, 41,102, 70, +154,225, 97,158, 50, 54,241, 25, 16, 94,172, 47, 47, 19,212,245,244,232,132, 61,108,162,216,213,145,220,220,217, 98,134,253,112, +239,128, 25,186,233,108,167,233,116,208, 7, 15, 66, 3,104,225, 89, 84, 52,235, 70,169, 15,223,153,112,172, 82,112, 66, 96,109, + 67, 96,147,143, 93,239, 48,107,200,243, 42,192,117,125, 56,150, 33, 3, 86, 42,249, 69,145, 35,165, 41, 26, 63,186, 39, 44,147, + 51, 27,112,146,148, 54, 30,108, 70, 58,141,114, 40,178, 76, 53,160,232, 39, 22,212, 33,193,137, 78,156,234, 90,200,137, 7,223, +218, 98, 9,219,179,192,200,224, 39,153,212,160, 74, 29, 7,214, 28,107,131, 44, 5,149, 40,227,137,143,152,173,226,140, 86,213, +129,163,167, 27, 76,109,244, 47,229,104, 69,225, 60, 80,209,152,239, 31, 72, 33, 95,224,245, 1,172, 55,211, 44, 9, 85, 43, 84, + 2, 18,201,156, 6,218, 70, 2,196, 0, 96,161, 41, 29,123,116, 0,160, 7,134, 35, 53,250, 77,161,208, 69, 30, 99,133,104, 49, +120, 25,158,123, 16,141,232,223,104,118, 46, 12,246,217,238, 74,121,172,100,152, 10,150, 58,144, 30, 88, 5, 83, 68, 36, 19,215, +145,198, 60,119, 72,253,112,140,151, 34,104, 36, 32,151,186, 15,106, 35, 54,215,121,159, 77, 78, 48,120,116,124,100,253,114, 90, +193,176,255,200, 18, 65,147, 26,135,234,116,145,249,229,138,180, 31, 51,200, 58,251,105, 86,125,130,192, 38, 62,160, 8, 56,159, + 14, 73,198,117,218,106,201, 23,159,223,147,157,205, 85, 57,189,232, 48, 51, 71,192,148, 77,162,229, 50,160, 83, 92,106, 84,228, +238,181, 43, 12,184, 32, 50, 3,142,244,124, 62, 69, 71, 14,135,100, 36, 45,194, 4,194, 79,197, 78,237,204, 35,247,125,191,167, + 1, 73,231, 76,207, 86, 29,164,227,114,116,114,172,203,153, 32, 16, 14,179,247,109,104,206, 35, 59, 7, 29,179, 62,175,243,126, +223,102,203,211, 38,206,131,137, 29, 84, 29,243,154,176, 32, 25,188,163, 54,127,117,185, 46,223,188,179, 34,255,251,223,221,167, +239,120,122,210,209,128, 63, 65,223, 38,142,127, 62,244,244,249,115,204, 51, 47,105, 40,251, 97,122,134,240,238,144,188, 9, 8, + 44,103, 51,207,233,177,143, 76,201,205,105,146, 47, 90, 44, 11, 89, 39, 4,150, 40,161,115,222,190,100,107,207,170, 48,250,227, + 84,167,156, 51, 48,197,212, 67, 75,125, 91, 95,247, 25,206,225,203, 55,111,203,203, 87,151,229,107,119, 26,122,125, 67,130,252, +176, 46,133,156,174, 75, 16,179,175,206,210,122,210,112, 74,163,241,136,252, 3, 12, 38,244, 92,165,211,106,107, 46, 78,216, 10, + 5,198,171,144,207,200,227,195,158, 44, 85,242,124, 70,159,238,117,101,101,167, 42,133, 98, 81,237,243, 92, 3,153,169,188,125, +239, 72, 74,154,225,175,174,150,229,159,254,209, 29,249,223,254,245, 39,114,210, 30,201,189, 71,103,242,228,233,150,220,126,117, +201,170,130,151,178,171, 26,144, 23,211,242,234,203, 85,249,213, 39, 79,229,215,247, 35,249,173, 55,138,242,242,203, 53,137, 80, + 13, 5,206, 65,202,154, 32,169,127, 78, 98,164,173, 94,148,165, 2, 64, 54, 13,246,209,160,155,131,210,117, 89, 13, 42, 34,227, +116,202,122, 51,153, 8,163, 28, 86,210, 1,192, 1,142, 43,229,132, 53, 80,242, 0, 5, 41, 28,240,175, 30,237,203,234,102, 44, + 47,223,218,225, 56, 84,178,144,149, 41,178, 25,189,249, 84, 89, 99,159,164, 25,250,200,169, 34,229, 83, 54,227,222,233,142,228, +139, 62,196, 81,150,165,221,235, 48, 2, 68, 41, 9,175, 71,180, 71,157,110, 32,106, 53, 40,128,212, 38,128, 39,213, 82,138,217, + 98, 65,127, 70,129,177, 11,193,251,229, 82,166,141, 14, 30,248,135, 7, 19,142,217, 33, 27,251,235,183,159,233,251, 82,100,139, + 91, 72,129,162,204,143, 18,139,129, 13,140,189, 56, 8,156,196,159,110,154,158,151, 96,121,187,170,239, 27,244, 76,175, 28, 56, + 5,102,215, 65, 90,202,171,171, 52, 48,109,189,222,125,117, 34,143, 95, 52,217, 35,218,220, 76,202,118, 61, 39,195,238,132, 70, +244,214,102, 85,238,236, 52, 40,204,194, 82,231,110,142,189,126,244,137,145, 73,244,213,185, 6,164,106,117, 98, 43,153, 2,103, + 38, 9,184, 1,195, 28,214, 58,201, 26,148,224, 2,146, 5,128, 79,242,114,164,206, 8, 7, 25, 18,177,205,246, 80,238, 31,245, +228,176,217,151, 19,205,210, 49,254,135,209, 35,234, 21,235,245,182,218, 99, 58, 11, 80, 53,163,231,220,213,140, 2,146,183,140, + 76,245,151,119, 86, 18,178, 83,152, 81,232, 68, 32,111, 59,231, 17, 98,159,153,114,135,234,116,224,224,161, 84,247,211, 79, 79, +228, 39,191, 58,144,111,188,188,193, 81, 18,206, 16,207, 1,188,154, 16, 40,136,209, 96,128, 72, 34,151, 81, 68, 14,141, 79,201, + 69,232,103,103, 45, 19, 76,249, 11,213, 39,159, 6,210, 50,121, 75,230, 41, 47,184, 80,106,211,107,206,235,107,250,152,103, 7, +159,122,218,148,240,192,252, 70, 67,224,219,216, 33,222,248,112,239, 66,142, 91, 19, 96, 23,229,214,237,154,124,116,255,133,236, +181,206,213, 8, 54,164,166,123,230,238,149, 21, 42,174, 17,124,166,247,249,240,197,145,252,248,167,239,202,241, 69, 95, 86, 26, + 13, 41, 55, 10,210,109,246,216,154, 0,146, 25,165,188,128,128,184,177, 6,149, 83,126, 21,192,104, 64, 58,163,159,110,216, 2, + 19,222,129, 65,216,212,192, 24,251,105, 79, 51,230,216,141,253,161, 84,186, 92,173,144,159,125, 79, 29, 61, 50, 63,148,160,221, + 16, 55, 29,250,194,104,161,154, 82,131,166,182,254, 14,189,118,211,120,241, 25, 16,147, 93,107, 60,231,247,162,207, 92, 45, 21, +153,245, 99,230, 29, 37,252,131,102,155,215,134, 99,142,215,152,130,157, 80, 33, 13,125, 72, 98, 20,220, 68, 64,232,246,124,130, + 35, 97, 86, 90,197,154,108, 44, 53,228,179,158, 6,103,169,188, 62,167,172, 85, 25, 18, 54, 13,129,178, 60, 28, 22,164,106, 99, +226, 67,109,253,125,114,241,199,210,236, 12, 13,177,168,251, 10, 83, 32,233,140,149,196, 47, 52,147, 41,149, 83, 6, 84, 3,233, +139,102,205,125, 53,176,129, 24, 40, 15,250, 2,112, 64,181, 98, 82,191,191, 66, 80, 21,168,130,241,153,183,174,110,115,178,230, +201,126, 75, 3,213, 22,219, 11,160,121, 6, 62, 7,129, 7, 80,215,212, 2, 64,118, 77,102, 66,143,182,204, 28,185, 71, 28, 78, +146,146,205,224, 28,159,146, 4,196,192,163,145,181,110,146, 6,108, 69,208,131,253,144,136,173,213,135,253,235,185,249, 95,100, +238,200, 12,145, 45,162,237, 55,163, 28,169,190, 42, 35,142,233, 47, 65,213, 61,244,194, 51,169,148,179, 35, 33, 43,138,148,203, +157, 67,161, 5,128,187, 46,193,139,169,116, 73,247,112, 94,186,231, 45,153,133, 30,117, 48,176,159,131,192, 70, 58, 81,209, 0, +170,191, 90, 42,112,180, 11, 35,108,145,102,193,223,254,218,215,229,175,254,254,111,137,101, 66,216, 2,241, 25, 96, 57, 16,166, +124,246,232, 57,103,159,209, 14, 1,109, 48,140, 27,166, 77, 64,129,156,228,184,167,177, 63,226, 57,206,166,125,102,135,149,114, +201, 33,110, 98, 89,207,213, 40, 81,187,181,186, 70,116, 61,130,200,111,222, 89,147, 31,191,253, 72,246,206,250, 60, 91,163,137, +157, 1, 84,224, 18,197, 18,133,160, 50, 41, 19, 81,234, 15, 3,182,206,254,231,255,243, 3, 61,131, 87,229,251,175,173,200,141, +173,186,252,237,175,158,211, 38, 18, 23, 1, 7, 9,159,145,141,201,200, 88,128,204,116,214,103, 53, 33, 0,157, 49, 42, 12,160, + 62, 37, 31, 68,192,128,216, 2,168,153, 97,171,196,218,174,161,171,180,144, 22, 44, 54, 28, 68, 38, 87,166,205, 4,193, 13,130, +232,116,210,250,184, 0,166,145,254, 87,237,206,177,218,167,139,238,128,109,221,107, 91, 59,186,126, 89, 57, 59, 63,151, 7,251, + 73,181,243, 51, 89,107,148,200,112,137, 41,171,163,211, 14,217,239,206, 48, 34, 10,128,164, 6, 56,160, 93,142,196, 68,117, 0, +190, 76,165,115,234,192, 83,228,171,191,185, 13, 54,200, 30,193,121,183,118, 27, 92,231,189,163,174, 60,126,222,150,151,111,123, +114,250,188, 47, 23,189,185, 52,244,239,191,251, 70,149, 19, 77,235,234, 35,254,155, 63,126, 89,254,244,223,222,211,115, 22,200, +251,239, 31,201,245, 43,122, 31,200,214,125, 27, 93,226,232,102,218,231,180, 14,206,127, 94, 3,244,171,215, 86,216,250,229,152, + 27,180,176, 83,174, 92, 15, 91, 26,141,186,164,251,228, 24, 79, 34, 73,181,155,207,159,189,144, 87,119, 43, 82,241,161,194,165, +134, 26,212,157,122,104, 58, 19,155,145,195,166, 79, 3, 2, 31,154, 81, 42, 20, 51,228,107,255,248,168, 37,255,230,157, 23,122, +152, 79,228, 31,255,214, 64,190,253,149, 27,174,108,231,244,214, 51, 70,249, 24,133,147, 75,242,135,133, 97,131,129, 57,191,232, +201,105,189,170, 15, 54,197, 18,247, 8,163, 4, 26,249, 52,178, 14, 1,159,180,172, 45, 5,246, 32, 50,240,120, 68,180, 94,116, +135,114,180,215,162, 35, 0,187,213, 16,115,146,152,157,213, 5,191,115, 5, 6, 50,173,198,186, 68,201,215,191,252,217, 35,249, +189,111,236, 18, 77,237,197, 11, 29,120, 71,205,167,239, 9,157, 50, 29, 12,177,112,172, 6,200,231, 52,233,109,207, 52,173, 85, +251,161, 7,206,102,193, 96, 56,105,164, 56,122, 55,151,114,173, 34,167,247,207,101,211,159,171,243, 72,200, 43,175, 52,244,160, +214,196,134,166, 76, 98,214,207,100,221, 60,144, 41,142, 9,169, 99, 69,154, 71, 35, 70,185,158, 83, 16, 2,168,136,235,203, 18, +143,190,115, 70,129,104,126, 18,252,200, 36,246, 13, 57,170,135,181,158,157,203,254,254, 57,208, 55, 4,234,172,100, 60, 89,219, + 41, 73,230, 90, 69, 80, 45, 92,232, 28, 99,237,147, 78,158,239,115,205,226,223,191,191, 47, 80,106,223,185,178, 44,119,175, 54, +100,163, 84,162,195,109,117,212,105,232,125,173, 46,137, 6, 72,194,140,140, 89,112,152,146,230, 64,100, 85, 3,138,239,189,190, + 41,231, 3, 4,105, 1,193, 39,158, 26,172, 92, 38,150,122, 30,178,182,122, 56, 19,230,168, 73, 35,227, 50,114, 84, 51, 38, 4, +234, 69,114,181, 96,252, 1,120, 69, 52,141,229,172,175, 89,107,156,227,136,219,151,231,166,216,247,117, 35, 84,120,109, 62, 69, +176,169,238, 13,117,182,145,141, 10, 17,217,143,224, 72,159,253, 13,189,239,118, 15,122,241, 99,185,178,179, 44,239, 63,120, 76, +225,148,134, 58,191,255,234, 79,222,148,179,206,152, 35,156, 89,181, 16, 48,242,255,254,131, 15,228,131,251,207,184,150, 66, 25, + 96, 79,238,239, 63, 99,118,142, 96, 7,198, 99,255,172,107,104,240,208,178, 90,148,177, 49,154, 21,163,167, 45,198, 62, 54,211, +115, 83,206, 22,100, 99,165, 33,205,110,159,253, 53,150, 84, 81, 69,208,181,219,221,221,150,195,211, 83, 57,109,183,233,248, 23, + 96,186, 4,229, 37,221, 94,208,123, 93,173,213,100,181, 90,149,246,160, 47,125, 10,233,164,104,228,145, 65, 99,127,178,210, 65, +221,229, 20,193,106,232,167,195,241,130, 28,230,249,209,177, 81, 74, 38,172,122,224,197,191,233, 47,147, 42,119,110,253,122,234, + 82,133,191, 33,128,137,157, 19, 11,157,210, 26, 90, 2,248, 28,148,254,241,185, 8, 80, 16, 20,160,167,153,244,173,210, 6, 99, + 11,231,101, 84, 4, 30, 29,107,204,121,240,132, 58,239, 50, 51, 60, 56, 38, 56, 42,100,253,163,177,141, 30,198,226,185, 76,168, +168,219,117, 64,114, 28,216,128,118,183, 67,101,179,171,235,117,246,152, 51,196, 90,204,105, 60,143, 90, 93, 55, 29, 51,146,126, +255,130,253,119,140, 83, 26,229,176, 93,183, 23, 58,158,238,132,209,201,130,235, 29,109, 41, 0,197, 96,196,145,141, 3, 28, 6, + 91, 55, 2, 17,208,220,248,240, 97, 67, 56, 26, 21,204,105, 48, 13,101, 29, 93,182, 54,102,174,205,226, 47,244, 46,112,255,250, +249,137, 49,202,215, 99,117,218,105,117,206,105, 58, 59,140, 54,198,100, 2, 12,156,234, 86, 40, 81,128,125, 61,231, 89, 30, 7, +154,229, 15,141, 43,190, 6, 22,185,222,128, 99,176, 60, 31,177,199,103,214, 27,132, 28, 47, 44,149,171,196, 34, 52,212,142, 96, + 66,231,180,217, 81,251,216,145,205,237,171,242,214,107,175,115,188, 21,211, 16,212, 90,159,134, 54,254,164,103,235,232,172,165, +153,253, 41,113, 45,188, 30,117,234, 83,202,150, 38, 37, 91,207, 51,192, 51,179, 93,114, 88,155, 4,157, 50,156, 51,170, 64, 32, + 84,201, 47,175, 81, 92,101,164, 25,252, 95,252,226, 11, 86, 97,192, 76, 7,209, 37, 6,230,122,157, 0,131,161, 5, 0, 77,248, +209,100, 65,138, 99, 58,239, 72, 82,254,236, 39,143, 24,176,255,225, 55,111,201,243,147,190,102,192, 35,246,171,141, 60,197, 20, +202, 56, 41,158, 77, 92,246,235,243, 89,143,108,141,168,116, 64, 11, 36,156, 25,200, 19, 61,105,171,122, 4, 78,152,201,145, 83, +249, 54,167,141,228,175,162,107,180, 84,206, 16,195, 65,213, 78,253, 59,208, 15, 95,244,250,198, 96, 8,177, 23, 76, 49, 68, 38, +174, 4, 62,135,117, 13, 94,227,160,167,235,156,213, 61,214,227, 90, 54, 47,134, 44,107,131,132, 8,120,155, 97, 96,218,237, 4, +228,138,181,177, 80, 77, 67, 27, 3, 84,192, 8, 68, 49,227,143,253,249, 80,157, 55, 2,173,149, 70,142, 90, 40, 70,174, 52,147, +183, 63,236,200,222,225,128,100, 69,103, 23, 35,201,233,186,188,247,233, 76,190,254,122, 81,178,154,152, 93,209, 76,254,127,248, +231,111,201,120, 48,101,208, 19,163, 5, 1,172,136,235,195,123, 60,183,145,252,252,221, 67,174,223,195,253,182, 52,155, 99, 77, + 18, 82,148, 38,151,132, 56,186,108,211, 78, 73,222,168,105,198, 51,156, 75,170, 82, 34, 59,218,190,110,200,186, 46, 78, 41,107, + 7,196,159, 77,164,170, 17,197,100, 62,144,173,122, 29,192,120, 82,140,150,234, 21, 58, 32, 31,125,178, 74, 81, 74,154, 89,188, +191,215,214, 5, 46,178, 39,242,147,143, 14,137,140,125,105,119,153,243,165, 48,214,200,244, 64,249, 8,201, 84, 95, 23, 3,102, + 5, 96,165, 20,145,189, 67,121,239,241,185, 60, 60, 11,168, 50,246,237, 87, 55,101,123,181,204,191,203, 71,150, 69, 36, 28, 91, + 25, 75,138,238,208,193,112,149,139, 57,141,230,215, 52, 98, 77,179,252,129,217,229,172,187,126, 70,236,250,190,140,102, 74, 24, +255, 65,100,254,222,167, 7,242,163,239,220,224, 70,128, 65,129, 99,206, 81,245, 76, 56,159, 11,193, 4, 32, 95, 49, 7,154,244, + 76, 92, 5, 78,177, 57,113,180,145,227,177,147, 24,180, 89, 85, 40, 58,249,177,205,154,127,253,238,146,188, 56,189,144,243, 30, +200, 45, 2,178,172,129, 1,106,238, 88,171,188,177,161,225, 57,118, 22,153,188, 30, 62,123, 58, 14,196,239,129, 28, 37, 67,245, + 54,193, 96, 33,145,180,134, 0,103,140,234,104, 3, 7,122,120, 33,186, 1,195, 10, 35, 57, 82, 47,119, 54,138,229, 43,155, 75, +242,242,110,193,120,197,209, 35,136, 12,113,185,160, 41, 98,133, 64,255, 61,237, 76,165,255,172, 39,103,221, 9,121,214,161, 73, +223,237,235,225, 15,243, 84,107, 75, 4, 9,234,139, 35, 81,247, 25,219, 36, 32,158,196, 18, 84,152, 64,156, 26,145,215, 96, 5, + 89,120,194,136, 81,144, 73,189,245,202, 26, 75,149,141, 90,222,218, 5,151, 67,242,238,186,131,152,207, 7, 11, 81,213,172,205, + 35,154, 63,102,166, 68,109, 97, 61,224,169,130, 33, 89, 41,186, 65, 46,102, 35,216,193, 72, 32,153,234,134, 26,253,158, 6, 54, +182,136,127,177, 7,112, 29, 26, 48,134, 36,138,240,229,141, 27, 75,210, 26,198,242,222,163, 3,105,182,187,172,136,108, 47,233, + 94,242, 1, 2, 4,175,243,132,145,248, 47,126,253,133, 26,203, 99, 13,242,190, 38,159, 63, 63,144,139, 97, 68,132, 60, 20,156, +218,106,180,178, 40,113,170, 99, 26,142,219, 76, 62,139,217, 28,203,235, 40, 19,135,228, 89, 78,154, 18,157,166, 0,200,152, 43, +165,188, 6, 0,231, 52, 30,169,148, 9,225, 0,213,127,125,115, 83,141, 70, 83, 94, 28, 31,153, 58,153, 26, 69,128,200,168,163, +190,200,126,245,250, 43,234,160,225,212,145,157, 19,167,193, 25,103, 27,219,202,146,137,206, 70, 8,129, 36,207, 59,213, 60,124, + 30,202,128, 32,187, 48,129, 7,223, 62, 55, 54, 29,102,161,108,170,245,148,219,221,174,113,209, 47, 36, 38, 99, 11,210,141, 33, +209,198, 15,113, 31,157,254,192, 57, 49,155, 40, 64, 25, 17,224,206, 81,111,172, 65,118,154,206, 29, 85, 4, 48,142,129,202, 24, +207, 26, 78, 31,153, 24,130, 2, 92, 83, 68,190,243, 33, 41,108,209,107, 55,125,104,159, 35,153,192,189,160,122, 5, 64, 90, 87, +141, 46,250,217,213, 60,184, 50,202, 12,162,234,229,156,188, 56,187,112,123, 62, 45, 41, 0,241,244,140,125,227,149, 93,185,190, +177, 36,159, 63, 61,209,247, 25,179, 27,198,219,144,229, 49, 32,246, 3,155, 20, 73,103,201, 24, 56, 1,217, 11, 81,253,150, 1, + 34,232, 3, 40,111, 52,236,243, 28, 96,111, 99,118, 31,193, 14, 74,242, 73, 39,186,131, 17, 58,150,171,243,110,164, 18,193, 11, +108, 14,190,135,224,179, 52,229,141,137, 97, 1,241,191, 11, 64,187,189,158, 38, 69, 61,241, 53, 40,131, 35, 65, 64, 48, 82, 67, +142,177,177, 24, 1, 64, 48,176,192, 65,192,247,126, 46,105,205,176, 11,149, 42,249,225, 1, 83, 48,142,141,153, 52,207, 78,101, +101,105, 69,150, 26, 13, 73, 23, 42,156, 8,193,244,198,253,199,207,100,105,233,235,178,179,123, 85,126,252,215,255,206, 20, 22, + 39, 1, 37,129,177, 95,176, 14,101,205,236,239,222,188,166, 1,210,132,253,100,162,221, 29,235,100,146, 85,150, 36, 71,114, 57, +203, 15,162, 39,138, 6, 25,128,175, 63,236,202,249,180, 35,195, 66,131, 66, 44,209,188, 39, 27,141,138,238,135,161,180,240, 44, +245,158, 1,254, 5, 11, 31,184, 8,206, 59, 23,154,157,110,202,237,171,235,242,244,240,156, 1,224, 20,156,250, 8,122, 52, 3, +253,155,119,247,228,206,181,101,249,227,111,223,148,127,249,231,239, 73, 79, 3, 92,112, 52,228, 11,232,245,103, 9, 56, 37, 55, + 0,112, 40, 32,104,130,224, 9, 70, 71,117,191,233,210, 82,240,137, 99,156,144,224,228,136,101,196,128, 28, 9, 23,147, 20, 88, + 63,221,206,208,130,207, 80,113,210,218, 92,160,219,197,216,215,241,160,199,224,131, 65,168, 3,123,146,117, 77, 3,206, 43, 27, +155,250,124,134,210, 40,198, 20, 24, 2,171,219,136,140,133, 83,169, 85, 34,158, 55,144, 94, 13, 58, 49,251,245,164,132, 29, 91, +102, 76,157, 4,207,103,251, 22,109,224, 96, 52, 35,110, 8, 2, 48,168, 10,163, 5,138, 80, 23,159,129,132, 7, 62,232,139, 39, + 77,217, 82,127,134,202, 8,198, 52,223,121,120, 38,231,195,153,174,221,170,220,218, 90,146,106, 61, 43,229,114,154,254, 9, 97, + 11, 21, 33,225, 63, 82, 70, 99,253,158,174,229, 7,159, 29,169, 35,135,128, 78, 95,126,246,235, 19,249, 39, 63,184, 66, 27,138, + 0, 38,230,172,158, 57,247,100,102,185, 38,105,205, 48, 3,208,197,234,162, 67, 78,244, 37, 61,148,156, 95,199,240, 61,184,129, +193,237, 14,118,160,181, 50,133,236, 9,146,201, 27,177, 4, 54,182,232, 69,254, 74,191,228, 95,253,221, 35, 3,219,160,220, 59, +245,229, 47,223,126, 70, 7,124,117,169, 72, 84,108, 58,155, 97,249, 43, 5,131, 3, 24, 52, 56,213,243, 32,173, 17,121,228,135, +114,120, 30, 72, 71, 35, 42, 4, 11,127,251,238,115,249,174,102,131, 55,183,106,156, 83, 54, 36,176,161, 45,173, 95, 98, 15,159, + 68, 20,200, 92,138, 9,150, 74, 81,214, 5, 57,138,239, 52,159,103,145, 57,196,145, 70,124, 99, 61,104, 95,191,187, 34,217,199, + 77, 73,171, 51,203,131,203, 61,158, 73,168, 14,245,209,241, 68, 31,112,150,142,240,139,131,142,124, 95, 95, 87, 79,199, 44,193, + 65,119,184, 31,100, 53, 0,137, 44,210, 4, 91,215,116,206,108, 13, 78, 7,193, 67, 31, 35, 49,106, 79, 86, 17, 16,229,151,184, +249, 40,161,170, 27,205,155,153,128, 7,123,230,208,124, 70,251,129,204, 91, 8, 54, 82, 18, 97, 62, 30,181, 40,140,206,100, 77, + 8,129,189,104,148,198,147, 78,119, 21,237, 0,244,205, 17, 12,169, 97,234,107,102, 11,144,227,140, 8,221,152, 4, 61, 41,189, +255,132, 26, 93, 8,183, 68,211,144, 51,176,204,244, 99, 19, 81, 33,152, 72,151, 29,173,142,126,119,168, 81,232,140,153, 46,230, +123, 29, 46, 67,163,113,143,130, 53, 43, 48, 0, 9,235,185,218,172,118,204,195,178, 89,246, 57,255, 76, 46,244, 0,100, 7,174, +183, 74,109,227,148, 1, 15,125, 3, 11, 98, 18, 0,180,178, 0, 46,213,213, 89, 23,210, 54,198, 38,190, 85, 70,192,235,239, 1, +132,134,185, 90,125,199,170,110, 88,191,148,228, 38,245,156,112,139,137,202,197, 86,173, 64,207, 90, 29,111, 0,192, 12,203,250, +121, 73,228,242,172, 48,225,185, 65, 78, 34, 23, 15,101,214,107,201,211,211, 80, 62,125,188, 39, 53,117,180,199,157,166, 92, 95, +174,200, 68,179, 60,140,248, 61, 57,238,200,223,125,248, 49,121,164,255,199,127,246, 95,112,222,251,167, 31,125, 78,162, 9, 24, + 55, 56, 35, 56,145,188, 6,186, 61,162,111, 69, 10,153, 44,157,224,132,104, 91, 83, 75, 35,117,163,238, 65,240, 92,147,102,185, +121,238,156,180, 71,103,177, 82,175,201,245,237, 45,249,252,201, 51,205,210,207, 12,181,203,153,216,148,101,134,177,101,234, 32, + 97, 1, 41, 13, 62,243,241,225, 33,203,244,236,183, 7, 1,117, 5,216,250,136,141,188, 5,149,151, 82, 1, 98, 17, 9,226, 53, +128, 7,192,172, 63, 70,113, 76,109,208, 24,233, 16,181,103,128, 5, 72,250, 68,196,123,139, 72,126, 33,153, 76,237, 3, 91,227, + 40, 54, 80, 25,178, 44, 92, 59,228, 99, 17,116,132, 60,247, 73,150,111, 23, 0, 82,244,125,147,177, 41, 66, 1, 61,140, 32, 7, +217,116,190, 92, 32,176,118,145,241, 19,231, 17,196, 78,214, 18, 83,178, 41, 87,177,243,137,104,198,251,179,233, 28,105,107,201, +104,153,207, 73, 53, 25, 75,123,144,100, 32,128,201,148,179,139, 1,251,240, 81,100,193,244,253, 61, 93,195,153, 79, 84,249, 96, +112, 33, 89,117,120,172,247,121, 17, 43, 53,184, 63, 80,122,194, 17, 76, 7, 99,142, 34,194,152,227,188,226,119, 56, 31, 8, 62, + 18, 94,193,177, 49,122,204, 78, 9,168, 11,173,186,151, 97,255,203,212,255, 18, 46,176,193,232, 25, 2,119,236,201,178, 58, 0, + 61,164, 68, 86, 79,136,120, 55, 14, 12, 84, 8, 89, 13,240, 13, 24, 10,103, 50,101,255,220,206, 32, 85, 0, 1, 59, 46,234,217, + 81, 19,138,209,202, 13, 13,224,128,189, 25,143,186,166, 76,152, 68, 53, 50, 43, 39,122,175, 39,167, 39,196, 2,124,252,217, 33, +193,137,133,188, 6,165,153,156,236, 29, 28,201, 43,183,110,200,214,230,182,124,252,233,167,156,229, 70, 32,144,242, 12,233, 62, +212,160,226,237,247, 14, 57,223,156, 72,100, 88,141,192,135,227,153,224, 90, 50, 12,126, 67,182, 41,210, 78,120, 40,118,147, 63, + 8, 10,146,254, 92,118,119,114,116, 68,168, 86, 65,125,174, 94, 45,105,144, 17,200,137, 38, 3,157,193,148, 54, 35,149,156, 19, +251,242,244,232, 76,207, 77, 81, 94,187,179, 45,239,220,123,206,164, 47, 92, 96,131,244, 67,126,242,209,145,252,240,205,117,249, +254,155,183,228,139, 23, 23,116,188, 40, 18, 33,233,130,253,107,247,109,154, 10,242, 96,125, 2,249,128,249,153,176,186, 48,159, +245,101, 24,217,152, 34, 18, 28,150,226, 25,124,122,151,147, 51, 16, 80, 90,214, 32,176,133,178,250, 48, 48, 76, 11, 91,170, 99, +142,127, 2, 21,143,224, 6, 65,228, 80, 29, 48,136,158,110, 95,217,181, 73,162, 89, 79,118, 87, 86, 56, 25,129,246, 45, 4,138, + 74,165, 28, 65,167,208,183, 95, 95, 47,145, 61, 16,128, 72,236,215,225,200,232,119, 17, 40, 15,134, 8,208,114,100, 41, 5,158, + 75,205,175, 6, 91, 85,121,118,116, 65, 26,105, 84, 80,129, 1,170,235,190,190,162,193, 97, 77,215, 13, 98, 71,235,203, 37, 61, +143,250,140, 59, 73, 13,114,124,249,201,199, 7, 26,144,119,229, 71,223,186, 69, 14, 1, 84,158, 60,246, 32,141,142,124,166,201, +225, 64,109,198,230, 82, 94,237,177,222,215, 96, 76, 48,225, 79,222,127, 38,223,188, 85,151,173,149, 60, 19,162,120, 20,152,157, + 68,203,123, 22, 38, 53,114,152,201,217, 97, 79,182,151,179, 82,210, 72,172,171,209,239,139,206,140,220,189,145, 46,238, 76, 15, +241,141,141,138,108,248,106, 60, 70, 19, 58,234, 17,230,190,245, 0,141,250, 6, 24, 59, 60,234, 74, 29,236, 72,129, 33,138, 1, + 36, 66,148,255, 11,205,138,223,252,225, 45,169,175,169, 65,210, 40, 18,168,207,136, 20,163,154,185,131,223, 83, 31,216,176, 27, +200, 23,123,122, 72,243, 57, 50, 95,225, 88, 32, 99,254,217,199, 7,140, 68,239,238,212,105,188,216,123,156, 71,206,144, 88,223, +149,108, 98, 40,249,160,127,134, 57,210,113,192, 69,206, 58, 49, 1, 70, 46,144,121, 69, 63,158, 68, 21,105,249,254, 87,182, 37, +159, 0, 18, 58, 38, 83,209,103,143,187,242,217,243,174,252,119, 63,188, 65, 29,237,141, 90, 78,179, 38,204, 51,206, 37,163,155, +231,222,254, 64, 62,111,247,229, 63,251,246,182,140,184,241, 61,169, 2,153,158, 72,176, 55,152,102, 22,212,211, 12,184,175,247, +228, 75, 77,191, 99, 6, 3,125, 50,144,205, 34,128, 93,122,233,216, 12, 57,225,248, 69, 52,140,136,146,135, 3, 8,209,106,208, +181, 76,229, 49,243,106,243,143,230, 68, 81,133,240, 57,219,205,100, 91, 45, 95,255,188, 39, 23,157,145,236,235,207, 97,107, 68, + 48, 33,156,127,235,124,200, 40,241,171,215, 74,154,237,235,198,208,236, 71,230, 70,205, 2, 7,207,210, 53,231,122,141, 56,162, +166,225,109, 42, 4, 85, 79,200,235,157,145, 79, 59,114, 72,252, 36,133, 22,208,177,139, 52,136, 25,143, 93,175,213,113, 16,103, +153,153,138,245, 10, 61, 99,139,235, 67,120, 2,179,247,189,169,149,212, 81, 37,160,250, 81, 32, 23,224,138, 7, 80, 47,145, 87, +199,104,173, 5, 35, 87,240,228,201, 65, 91, 18,122, 56,118, 26, 5, 25,106, 0,179,190,148, 99, 6,129, 96, 4, 14, 52,156,196, +156, 9,198,135,171,173,147, 4,180,175,245,153,148,188, 57,163, 89, 28, 28,150, 84,199, 67,141,216,167,122,221, 49, 53, 6, 6, +122, 61,239,222,127,206, 49, 56,232, 43,163, 56, 80,129,250,158, 30,234,247,238,171, 3,191,247, 88,166,106,168,111,108,109,200, +191,255,232,190, 28,156,119,168, 76,134,160, 17, 35,131, 32,150,128, 0, 11,100, 83, 23, 35,104, 0,104,114,214,217,209,231, 70, +228, 18, 72,200, 90,163,206,114, 41, 40, 95, 61,167, 90,136,245, 44, 23, 32,105,185, 34,251, 39,103,236,163, 3, 96, 20, 56,240, + 86,232,102,196,225,104,140,223,217, 90, 51,200,144, 19, 14, 48,135,207,136, 28,144,173,140,185,234, 36, 74,237, 6,136, 67, 41, + 49, 71,109,240, 57,199,216, 16, 48, 4,156, 19, 55,174,234, 5,202,118, 33,227,104, 44,114, 51,163, 39, 93, 0, 73, 61, 71, 59, +137,243, 65,101,171,144, 61,195, 37, 53,122, 80,137,179,207,183, 82, 40,250,183, 4, 61, 50, 40, 72,179, 58, 4,185,215,241,196, +168, 84,113,102, 89,241,162,174,180,157, 77,140,255, 4, 30, 50, 31, 83,206,130, 34, 32,250,210, 24,244,203,146,130,214, 42, 87, +120,126,112,152, 81, 42,148, 90,185, 72, 14,123,244,102,151, 52,219,197,251, 32,171, 10,144, 20,198, 85, 59,253, 25,105,149,191, +114,103, 75,205,198,166, 60, 59,233,105, 16, 48,209, 19, 98, 20,175, 36,135,113,253,241,104,102,122,219,181, 66,157,104,113, 56, + 51,204, 49, 3,240, 55, 47,150,232, 52, 80,126,174,148,202,172, 20,224,255,197, 41,221,245,136, 83,209,231,152, 12,248,140,113, +198,194,197,136, 97, 96, 6, 30,217, 42,206,120,214, 79,178,226, 80,208,231,109,193, 75, 78,109, 66,222, 5, 98, 96, 95, 76, 50, + 33, 74, 80, 88, 70, 13,112, 48,225,184,106,210, 51, 18, 19, 56,166, 4, 65,108,105,221,167,105, 13,214,187,108, 61, 32, 83,107, +183, 59,178, 92, 47,209, 25,161,101, 25,133, 41,249,248,222, 39,114,101,107, 93,190,254,181,111,178, 53,102,193,132, 9,143,132, +196, 9,121,116,236, 7, 39, 39,186,142,234,212, 0, 72, 99, 16,106, 64, 64, 56,113,154,104,215, 91,247, 33,156,232,167, 88,158, + 23,180, 53, 98, 19, 71, 41,150,235,252,236,137,222,235,217,241, 1,159,221,132,237,166,196,255,199,212,123,254, 90,150, 95, 87, + 98,251,132,155,243,189, 47,135,170, 87,169, 67,117,179,187,153,196, 36, 74,163,209,104, 52,158,209,140,173, 15, 6, 12, 3, 3, +219,128, 63,216,255,145,253,197,134, 1,195,134, 61,176, 5,141, 32,105,100,137, 10, 20,169,110,146,106,178,115,229,240, 94,189, +120,115,206,231, 28,239,181,246,239, 21, 69,161,213, 93, 85,175,238, 61,231, 23,118, 92,123, 45,238, 55,146, 6,204,206, 3,152, +250,233,163,103,122, 54,223,149,157,122, 81, 30,159,116, 9,250,133, 93, 44,235,119,252,226,193,165, 58,221,148,124,231,253,219, +242,245,251, 49, 49, 23,173,222,140,216,164,233, 34, 33,179,232,124,109, 68, 43,104, 97,162,114,185, 34,178,221,168,149, 23,179, +161,218,168, 20,219, 83, 56, 99,201,181,212,178,218,132, 98,169, 68, 86, 71,168, 85, 22, 48,213,146, 9, 24, 76,162, 10,215, 35, +126, 36, 97,165,108,229,212, 67, 17, 20,127,243,254,155,108, 53,119, 90,167,250, 28, 99,182, 4, 97, 41,183,235,121,121,235,238, + 62, 91,107,143, 79, 58, 28,243,134,111, 41, 23, 43,234,236,109,146, 3, 2, 53,195,201,216, 90,193,152, 12, 67,128,171,193,194, +254,238,142,188,123,148,229, 8, 30,178,247,109,144, 99,233, 90, 0, 97,127,252,248, 74, 30,105, 48,243,214,173,170,250,154, 5, + 1,211,245,221,154, 28,212, 27,114,123,107,131,182,251,147,207, 94,200,163,211,150,188,247,198, 1,109,132,196,102,167, 65, 32, +244,224, 85, 95, 62,121,116, 46,191,251,221, 35,249,221,223, 56,148,191,248,233, 19,195,127,168,205,249,227, 15,143,229,191,255, +253,123, 26, 32,233,221,212,195, 0,191,140,123, 31,198, 24,165,210, 69, 60, 30, 44,213,169,231,101,164, 81,255,137, 58,140,167, + 87, 19,233,247,103, 50, 27,205, 88, 46,199,194,157,117, 71,214,227, 96,204, 57,161,218, 26, 24,156, 80,234, 65, 84, 89,171,129, + 66, 47,116, 95,186, 96,207, 11, 11,200,139,166,158, 45,134, 44,162, 24, 95, 58,208,149,248, 7,190,250,227,207,206,228,243,147, + 49, 75,124, 24, 15, 48, 3,130,121,234, 88,254,254,211, 87, 84,153,250,254,219, 59, 54,154,226,217, 28, 53, 14, 14,192, 4,184, + 52,136,250,194, 44,196,236,125, 25, 15, 87, 44,227, 20,192,163,155,182,145,153,192, 3, 3,150, 70,163,250,119,210,208,103, 94, +121,210,153,251,178,145, 11,245, 34,169, 83, 82,231,241, 8, 61, 15, 93,148,173, 58,212,129, 52,211, 86,195,242,162, 59, 39,193, +195,159,126,218,150,179,206, 84,222,185, 81,150, 55, 15,107, 36, 99,168,105, 38,145, 56, 49,147, 20,231,112, 61,205,150, 75,114, +114,213, 38,105,202,138,101,238,145,116, 53, 80,185,211,200, 75, 85,159,129,138,239, 41, 48,254,170, 1,149,216,241, 53, 99,254, + 65, 51,239,222, 84,157,177, 58,215, 82,198,113,145, 71,204, 64,215,145,205,122,206, 53,152,186,128, 28,229,116, 77, 37, 43,176, +239,197,164,171,245, 8,194,153,247, 49, 38, 4, 41,205,178,120,216, 96,204,129,131,221, 10,128, 11,199,211,201,105,117,208,141, +170, 35,206, 22,178,102,246, 97,160,214,168, 42,172,201, 51,159,128,148,198, 11, 44, 32,138, 93,105,149, 50,182,234,116,128, 6, +213, 64,172,145,247,173, 52,164,134, 19, 0,188,201,218,104, 41,113,208,168,195, 60,205,154, 52,168, 70,207, 64, 73,175, 92, 95, +221,115,192, 35,204,203,163,108, 4, 56, 17, 90, 9,184, 48,160,248,125,165, 65,144,215,179, 18,215,222, 65, 94, 46,207,231,210, +157, 39, 60, 47,219,213,148,236,222, 46,112,170, 2, 24, 15,204,247,226,125,115,163,190,172,103, 38,196,177,212,128,164, 57,205, +200, 39, 79, 90,210,215, 32,107,123,163, 46,151, 23, 87,242,181, 3, 13, 72, 55,107,242, 39, 63,249, 72,154,221,150,220,211, 8, +252,184, 61, 35,112,230,199,159, 61,228,190, 33, 48, 93,234,231, 0,141, 91,161,158,247,210,245,167, 3,235, 67, 39, 17,251,219, +145,155,149, 6, 17, 7, 50,106, 80,189,130,243,221, 28,165,199,245,220,213,224,246, 96,123,139,206, 17,156,236, 19,142, 24, 69, + 12, 20,192,230,133,146, 55, 50,135,136,189,106,163, 33, 94,185,217,252, 34,196, 66,162,245,235,140,223,181,218,201, 21,143,245, + 45, 20, 10,114,124,114, 38,219, 26, 76, 84,245, 25,142, 47, 46, 94, 11,187,224,239,129, 17, 44,116,149, 45,102,220,217,172,107, + 21, 57, 38, 48,170, 57,197,175, 3, 6,195, 4, 88,123, 4,239,189,112, 65, 57, 1,126, 41, 43, 71,163,164, 79,134, 59,100, 61, +153, 12,251,199,137,155,183,197, 7,164,217, 71, 77,241, 44,231,211, 89, 50, 54,198,145,145, 64,225,185,192,200,181,244, 77, 36, + 35,164,179,243, 89, 6,247, 29,115, 36, 16,242, 8,140, 38,101, 33,139, 25,148,234, 80,234,191,177, 93,101, 5,226,170, 55, 38, + 41, 78, 54, 93,160, 3,238,141, 35,181, 55, 33,171,134,131, 78, 79,179,170, 13, 2, 38, 35, 32,209,193,215,237, 90, 31,232, 25, + 77,166,198, 53,207,242,185,227,211,135,252, 42,214, 18, 61,107, 56,171, 12,176, 0, 36, 47,177, 76,207, 39,112,113,161,123,119, +101, 44,123,168, 44,173, 77,219,194, 11, 12, 44,188, 82,231, 12,238,255, 88,255, 9,130, 77, 18,164,128, 8,229,218,233,155, 22, +129, 1,248,162,100,198,234, 82,228,175,141,215, 30,247, 15,103, 65,131,189,203, 86,211,225, 1, 34,138,169, 0,133,143, 74, 21, + 42, 14,117, 13,108,224,220, 74, 8, 60,196, 90,120,144,174,253,228,211,143,229,157,119,222,167, 30,248, 79,127,254, 51, 77, 64, + 74, 44, 85,123,158,101,251,216, 67, 76, 39,125, 77,157, 4,236,164, 49, 21, 26, 67, 32, 37,102,125,159,206, 14, 21, 52,180,109, +121,118, 48,209, 1,182,192,101, 76,155, 58,155,105, 86,189, 40,176,196,126,122,254, 92, 29,175,105,121,239,237,108, 73, 81,239, +203,106, 29,176,117,135,131,208,236, 15,228,171,231,167,242,157,247,238, 17,191,244,139, 47, 79,213, 59,120, 82,244,178,228, 60, +255,232,139, 51,117,160, 11,217,108,148,173,213,184,140,168, 74, 23,144,128, 74, 3, 9, 61, 27, 93,128, 23,213, 81,207,212,150, + 65,204, 4, 85, 23, 84,133,226,200,192,158, 56, 59,107,215, 73, 4,235, 32, 2,159,106, 49,203, 57,247,132, 19, 13, 49, 37,109, + 49, 45,176,140,108, 31, 1,139, 90, 57, 62, 7,100,249, 95,187,119,151,237,153,110,191,205,123, 9, 25,213,131,141, 50,209,251, + 45,245,127,179,135,151,242,193,155, 55, 25, 68,117,151, 49,171,138,105,253,174,149,158, 23, 63,147,102,208,139, 9, 47, 84,135, + 17,240, 12,134, 3, 98,103,106,149,172,252,245, 47, 78, 88,133, 11,245,156,126,248,229,133, 6, 5, 83,138, 98, 65, 32, 12,237, +147,127,248,101,135, 82,174, 8,148,209,226,186,177,187, 33, 93,181,111, 27,181,130,236,239,212,152,173,191,117,176,109,213, 86, +221,195,135,175, 38,242,147, 47,218,114,114,118,169, 65,239, 88, 68, 63,255,214,222,142,236,238,108,232, 25,232,114,148, 19, 52, +196,159,188,232,200, 78,217, 2,183,196, 85, 85,195, 72, 23, 51,175,135, 8, 78, 25,179,226, 0, 62, 64,156,227,244,106,164, 15, + 19,203,112,104, 99, 95,189, 69, 83,191, 80, 35,154,106,134,138, 64, 15, 79,128, 48,158,145,195, 25,198,251,237,219, 59,250,242, +145,116,218,166, 42,134, 67,233, 37, 41,106, 91, 63,111, 77,244,160,160,164, 58,166,179, 72,229, 1,127, 77,115, 92, 11,134, 97, +119,191, 38,183,142, 22,140,162, 9, 70,114,192, 9,207,166,184,232, 80, 55, 42,129, 52, 32, 42,194, 30,170, 57, 29,223, 73,111, +250, 41,251, 53,102,213,171,152,183,197,104, 78, 90, 47, 72,218, 70,140, 16,100,248, 41, 3,232,128,158,213,119,142,172,213, 83, + 99, 50, 13,116,161,118,229,119,190,153,146,174, 6, 51,149,173, 44,203,218, 79,174,166,242,171,167, 45,121,124, 62,147,231,231, +150,105,253,199,159, 62,147,255,230, 95,127,141, 81,255,169, 6, 56,232,209,195,137,161,191,140,172,121,193, 44, 73,215, 79,215, + 12, 63,147,213,160, 7, 88, 1,244,112,191,126,163, 38,197, 57,196, 77,244,114, 4,105, 25,130, 71, 28, 99, 27,154,193, 14,198, +234, 84,189, 60, 9, 28,158,104,100, 75,229,173,116, 72,108, 0,169, 8, 29,130,119,179, 92,208,104, 56,164,163,245,249,142, 26, +169, 67, 62, 80, 98, 86, 40,218,152, 59, 69,246,167,209, 43, 75,240,145,209,248,114,179, 57,131,111,253, 83, 92, 78,124,182,239, +244,136, 72,196, 1,205,250,192, 88,252,124,162,162, 19,155, 8, 64,197, 65, 15,220, 44, 41,202,229, 92,163,225, 48,150,163,170, + 58, 59,221,152,146,111,232,245, 70,214, 74,155, 47,212,113,161, 52, 10, 31, 0, 4,174,149, 86, 99, 41,166, 76,130, 16, 19, 12, +192, 42,196, 24,141, 92,153,176, 65,164,231,167,173, 65, 22, 8, 58, 80,197, 64, 84,142,125,111,108, 56,249, 74,223,216,181, 98, +107, 23,241,153, 56, 27,172, 63,244, 92,207, 96, 42,175,187,173, 70,223,155, 71,108,211, 76,245, 51,158,158, 94,178,196, 61, 25, +245, 8,232,108,232,229,253, 95,254,226,103,100, 51,251,183,223,127, 79,254,234,203,166,158,147, 1,199, 36,145, 89, 65,102,116, + 91, 13, 68, 10,151, 86,207, 5,212,210,140,216,197,190, 52, 32,168, 51,113,128,189, 68, 29,108,141,251,251,170,217,182,121, 82, + 55,123, 15, 99,126, 83,141, 30,178,221,135, 47, 94,168, 65, 52,113, 23,124, 14,202,217,200,150,175,121,220,109,174, 90, 28, 56, + 45, 67,199,236, 57, 64, 27,128,106, 64, 78,195,120,228, 11, 89,210,201,226, 25, 27,213, 50,165, 85,111, 31,236,177,157,117,209, +238,145, 49,142, 78, 8, 18,144,158, 57,176,152, 35,119, 51,126, 54,214, 1,231,169, 55, 52,185,204,235,224,195,119, 1, 3,115, +117,247, 44,149, 98,158, 58,238,200,230, 80,150,198,250,224,174, 20, 52,235, 66, 9, 90, 92, 37,130, 98, 44,115, 76,117,100,153, +177, 0, 59, 83, 2,150, 37,155, 97,182,105,172,201, 84,202,160, 64, 5, 38, 88, 50, 41, 7, 23,213,141, 67,134, 71,141, 0, 2, + 0, 51,204,120, 16,152,126,245,236, 76,142,118,171,114, 67,237, 75, 87,239, 80, 54, 95,146,223,250,246, 22, 81,251,200,240,128, +240,255,201,167, 39,250,223, 67,217, 9,139,114,231,198,182, 52,202, 25,205,126,244,220,141,230,180, 3,104,203,100,200,144, 23, +147,206,154, 61,110,167, 26,136,233, 2,220,207, 56,249,181,146, 32, 16,204,190,195,184,192, 96, 91,249,157,132,168, 82, 42, 55, + 56,109, 18, 65, 29,210, 91,146, 8, 42, 12,108,196,104,190, 24,232, 89, 89,243,206,231, 38, 83,138,129,196, 28,179,139, 89, 77, +242, 74,158,137, 25, 1,145,175,193,199, 92,157, 90, 88, 12, 88,181,170, 52,182, 41,225, 57, 30, 26, 56, 11,149, 41,156,241,161, +254, 26, 36, 56,176,163,236,175,171, 99,235,232,239,125,227,230, 13,222,169, 78,251, 82,222,188,185, 75, 20,254,124, 4,221,245, +183,229,227, 79, 63,101,208,147, 77,251,188,239, 40,197, 98, 55, 7,163,174,140,245,252, 71, 14,166, 75, 58,209,216, 70,236,128, +113, 72,135,150, 56, 17,112,198, 23, 54, 54,201, 41,122,231,104, 67, 5,144, 59,125,159,247, 27, 9, 12, 16,250,224,254, 7,144, +250, 7, 31,188, 77, 46,248, 63,250,187, 79, 40,197, 10, 27,126,213, 27,176, 39,253,205,119,110,203, 63, 62,186,164,205,195, 90, +109,212, 75,210,211,189,251,232,171, 11,125,159, 11, 61,183,198, 84, 24,177,202,106,184, 15, 76,226, 44,117,141,168,177, 30, 4, +214,146,132, 51, 39,152, 59,176,178,178,155,140, 23,202,216,166,165, 82, 46, 27,240, 50, 89,234,153,211,117, 85,123, 85, 4, 57, +140,254, 94,167, 55,151,106,185,196,242, 59, 70,147,177,150,183,247,247, 89,169, 0, 93,178,198,244,210,110,167, 24, 20,192, 86, +163,165,134,115,124,222, 28,200,254,214,136,213, 97,128, 50, 23, 41,181,113,108,253,100,105,255, 81, 81,186,230, 48,200, 9,146, +198,156, 58,239,145, 6, 19, 37, 38,163, 16, 44,202, 4,208,222,152,107, 96, 95,144,134,218, 9, 4,163, 39,151,125, 6,237,155, +181, 10,171, 41,183,246,245,254,234,189,190,189, 95,163,125,255,232,147,182,156, 46, 52,208,253,197,149,108, 86, 50,234,244,211, + 84,236,196,153, 71,160, 0,223,246, 66,109,240, 56,169,203,254,225, 46,231,236,155,125, 93,171, 84, 78,126,241,180, 39, 11, 0, +164, 87,115, 50,123,225, 60,134,145, 26,209, 78,207, 32,254, 66,146,123, 67, 32, 67,117, 70, 3, 11,205, 94,145,133,234, 15,143, +214, 4,102,160,124,246, 95,253,176,174,155, 29,202,103,207,142,245, 96,155, 10,212,104, 50, 68, 97, 70, 14,182,202, 68,119, 66, + 48, 5, 35,103,232,137,189,104, 79,120,216,240, 66, 40, 31,110,235,131,151,202, 75, 73,235, 97,105,105,118,214,105, 45, 28,150, +203, 0, 82,134, 65,182, 94, 34, 14, 43, 54, 18, 36, 36,126, 62,227, 70,158, 44,154, 77,156,250, 18, 34, 79,254, 59,186,206, 46, + 28,138, 92,108,124, 2, 68, 19,126, 98,104, 75,168,219, 64,249,201, 79,172,140, 52, 91, 89, 38,242,141,219, 27,188, 56, 47,245, +242, 61, 56,214,204, 92, 23,237,145, 46,236,201,229,212,141,236, 4,242,228, 69, 87,254,232,199, 79,228, 95,124,235, 38, 51,105, + 16,160, 0,176, 52, 4, 59, 30,122,228, 40,121, 3, 33,170, 6, 0,139, 59, 37, 48,208, 48,107,151,163, 68, 10,145,141,220,137, +147,253, 3,100, 41,140, 76,234, 20,189,185, 20, 60, 85,166, 64,163,249,189,251, 13, 34,119,113, 31,193, 56,228, 57, 61,119, 18, +203, 57, 70, 47, 2,200,176, 6, 40, 69, 55, 71,178,236,171, 99,132, 99, 71,105,115,157,184,108,202, 70, 6,113, 97, 99, 42,206, +233, 26,168, 3, 93, 56,161,143,107, 13,227, 5, 65, 64,145,149,150,161,119, 14,226, 31, 13,198, 48, 31,141,203,252,246,173,138, + 60,125, 18,203, 72,191,239, 98,160,239,162,207,116,191,238,203,205,186,207, 64, 37, 84,167,142, 74,203,197,124, 45, 95,157, 15, +165, 51, 94,216,168, 26, 13,186,207,145, 28,124, 14, 28,125, 22,239, 36,134, 12, 45,104,176,119,114, 53,160,128,195,141,237,130, +219, 63,143,132, 21, 8,196,130,217, 66,174, 5,131, 89, 30, 23,113, 34, 44, 49,179,185,243,151, 61,217, 84, 67, 81,212,247,120, + 49,241,164, 51, 75,120,200,179,169,178,102,235, 3, 41,135, 57,249,211,159,127,165,235, 50,151,255,225, 15,255,157, 92,245,175, +228,227, 71,199,156,157, 69,192, 8,167,136,181,156,233,250,119,213,113, 46, 29,133, 42, 12, 12,156, 33, 28, 22, 12, 53,213,168, +244, 91,247, 54, 55, 56,175,126,169,145, 62, 75,206,169,192, 33,114, 69,142,246,118,213,185,101,229,217,233,153,116, 6,125, 71, + 0,146,226, 58,143,103, 78, 28, 37, 8, 28, 50,218, 28, 42,246, 51, 96,102,189,126, 29,200,226,127,139,245,146,234,101,247,110, + 28,202, 11,253,188,150,190, 11, 12, 21,250,227, 8, 16,208,167, 7, 77, 44,245,181,213, 40,225, 44, 3,113,142, 95, 15,102, 51, +119,198, 66,169,107, 64,131, 18,239,252, 58,160,112, 4, 45,226, 90, 9,107,167,123,142, 51,136,123, 3, 60, 1,180,218, 49,251, +126, 61,106,135, 53,138,184, 38,198,239, 14, 39,235,191, 70,206,199,172,146, 0,245, 13,188,194,218, 91,179,231,218, 40,166,175, +133, 2,137, 53, 1, 42,109,197, 53, 76,216, 78,233, 33, 8, 6,231, 60,174,132,102, 84, 63,120,247,142,102, 62, 29, 93,215,161, +252,233,143,159, 19, 64,133, 32, 1,153, 23, 46, 16,170, 85,213, 66,134, 37,231,158, 26, 47,232, 51,228, 50, 85,217,216, 62,144, +209,226, 66,206,206,206,165,164,239,202,118, 6, 46,198, 98,202,145,183, 24, 4, 37,225,220,218,125,232, 10,169,189,154,207,214, +146,206,103, 56,207, 14,113, 14, 98, 7, 82, 70,135,203,253,130,147, 15,132, 18,206, 17, 4,172, 0,176, 3,149,195,218,221, 63, + 77,252, 83,147, 52,223, 27,255,131, 19,162, 12, 49,122,213,224, 30,247,109,132,106,134, 9, 6,205,208, 33, 97,188, 68,182,191, +244, 25, 8,108,111,231, 73,129,155, 45,213,104, 59, 3,180,140,212,126,118,186, 87,220,151, 16, 68, 92, 0, 35,206,231,204, 26, + 81, 70, 47,151, 74,122, 30,202,100, 54,171,109,237, 73,182, 80,149,157,189, 3,249,214,215,191, 33,207,159, 61,210, 63,171,218, +160,140,190, 3,176, 80,120,215, 9,208,214, 26, 88,118,251,227, 95,143,134,186, 73, 31,236,254,108,178,208,224,205,116,204,129, +157,192, 58,227,136, 88,219, 88,247, 75,247,168, 82,169,203,173,195, 29, 86, 72, 58,253,174,145,221, 36, 17, 43,123,223,184,123, + 32,103,173,142, 6,193,122,223, 50,208,166, 24,235,175, 11,242,237,251, 71,242,247,159, 60,123,125,198, 65,252, 50, 95,121,108, +137, 36,107, 72, 61,175, 89,217, 97, 74,225,132,115, 56,234,182,178, 86, 31,218, 36,240, 23, 75, 55,171, 45, 14, 16,141,170,111, + 65, 29, 51, 52, 27, 2, 76, 63,128,215, 95,239,230,120,188,102,249,222,196, 56,151, 86, 37,246, 45, 72,195,221,172,130, 4, 74, + 29, 44,245, 14,160, 64,216, 72,203,237,221, 26, 1,119,147, 57, 0,127, 51,249,224,141,186,102,210,154,177,247, 70,108, 69, 68, + 89, 96,168,198, 26, 20, 76,100, 5,169,218, 21,240,151, 75, 7, 42, 53,210,157,180, 38, 51,248, 14, 36, 68,248,158, 90, 49, 67, + 34, 33,250, 43,125, 7,236,253, 13,205,194, 27, 21, 76, 56,164, 88,201,233,107,208,140,192, 28, 2, 55,160, 31, 70, 53,121,178, +212,179,160,119,247, 88,147,202, 23,237,153,195,114,216,122,162, 2, 21,196,198, 17,129, 59, 86,200, 69,178,221,200, 74,146, 42, +232,155,102,232,131,162,168, 40,253,161,190,243,108,168,223, 57,147,176, 80, 72,203, 64, 51,209,247, 15,202, 28,153,106, 95,105, + 84, 1, 98,124, 93,164,158, 26, 34,244,142,152,133,176,212,226,203, 89, 87,179,248,139,158,220,221, 72,203, 15,223,219, 98,169, + 6,253, 32,108, 92,150,210,138, 6,162,249, 44,244,164,217,153,200,237,157, 2,185,145,191, 56,155,176, 36,225,147, 86, 48,208, +140, 63, 47,119,119,202,114,161, 11,218,159, 39,116, 50,232,107, 93, 75,101,154,117,139, 24,185, 5, 78,139,155, 99,112,137,201, +177, 34,194,193,220, 30,101, 55, 49, 71,157, 65,185,203, 99,212,199, 46, 9,122, 32,234, 54, 81,146, 27,232,142, 12,128, 76,212, + 67,138, 42, 4, 68, 23,168,186, 83, 41, 18,221,140, 82, 20, 14, 13,216,133, 16,205, 46,117, 3, 30,158,116,164, 63,139, 89,157, +240, 9,246, 9,152,193, 62,124,218, 38,152,240,219,111,237, 25, 5, 39,128, 50, 80,163, 66, 73, 43, 40,144, 44, 35, 89, 47,172, +127,168, 14, 10,217, 15, 80,163, 27, 5, 61, 24, 8,126,230, 22, 21, 2, 37,154, 78, 27,250, 62,113, 8,100, 92,184, 27,251,117, + 9,227,165, 6, 87, 6, 62, 51, 52, 83,228,198, 94, 18, 27,115, 32,248, 77,163,251,181,161, 90,123, 28,131, 9,165, 81, 79, 75, +212,159, 26, 48, 7,227, 58, 8,110, 34,199, 1,143, 61, 92, 27,121, 80, 12,174,117,125, 47,204,106, 79,214, 38,151, 10,240, 69, +127, 4, 49, 16, 79,158, 93,140,228,151,143,218,242,197,211, 14,185,251,255,187, 63,120, 83,141,134, 47,141,179, 72, 46, 39, 49, + 75,106, 95,219, 18,121,124,124,165, 14, 4, 34, 46,105, 74,220,146,207, 61, 27,242,207, 95, 93,244,213, 8,167,212, 41,109,106, + 4,109,185,194,140,140,107,129,148, 65,232,160,198,178,175,223,185,208,231,219,172, 22, 40, 40, 3, 49, 29,140,239, 16, 49,170, +107,135,242,151,143,249, 76,148, 35, 51, 30, 65,120, 64, 3,161, 45, 3, 42,221, 13,181, 36,145, 58,226,142,126,214,149, 6,148, +255,225,147, 51,142,168,160,119,140, 89,252,214, 84, 3,198,169, 70,184,139,137,102, 56,135,242,151, 31,127, 73, 61,101, 8,120, +160, 98, 0, 28, 4,214,177, 86, 42, 50,251, 3,128,139,125,120,135, 67,240, 56, 62,104,224, 72, 56,247,173,106, 85,157,245, 72, + 6,211,169, 1,169,184,103,134,208,191,127,235, 38,123,202, 47,206, 78, 57,158,117, 61,122,150,196, 46, 96,138,205,121,179, 10, + 3,101,179,169, 41,153,145,101, 47, 50, 54,195,235,209, 51, 6,165,214,168, 34, 82,190,173,207, 25,184,108, 18,127,231,217,171, + 51,102,246, 9,193,152, 11, 67,252,166, 51,116,184,211,107, 77,111, 48, 63,102,179,100, 84,235,233, 51,147, 30,213,157,177,107, +141,115, 78, 67,208, 72,197,236,161,227, 51, 65,213,186, 89,173, 25,208,109,109, 28,227, 41,246, 97,245, 78,177,148,159, 56,205, +117,253, 60,253,238,169,222,175,148,102, 63, 40,211, 18, 36,235, 25,151, 4, 74,140, 75,130, 61, 83, 36,119,178,119, 52,146, 26, +220,101,206, 18,227,120, 39, 11,102,127,173, 17,130,219,162, 58,189, 9,103,154,135,106,156, 38,243, 41,251,246,173,254,216, 40, + 66, 81,122, 5, 48, 10,227, 96,227,128, 10, 96,155,245, 58,149,226, 14,246,160,196, 5,134,177,180,218,132,181,221, 25, 65,245, + 49,101,193, 7,185,208, 45,107,101,203, 46, 99,252, 12, 0,154,130,243, 31,107, 77, 29, 4, 71,247, 58,137,167,172, 70, 96,125, + 32,230,147,246,245,110,133,118,119, 64,149, 13,231,106,106, 6,232, 50,166,164,144,207, 57,251, 21,112,164, 13,193,225,124, 62, +114,234,148, 52, 81,212, 10,199, 83,161,165,128,214, 90, 18, 91,203, 5, 21, 63, 56,202, 58,168,184, 33, 59,140, 4,104, 53,103, + 43, 5,247,184,217,106,145,176,103,161, 65,193, 86,189, 66, 60,195,163,167, 79,229,157,251,111,202,111,255,240,183,100, 62, 29, + 74,179,217,113,244,189,107, 35,188, 17,107,233, 84,138, 85,182,131, 16, 28,145, 7,135,130, 60,230,224,177,175, 57,130,138, 61, +142,185,225,189, 57,114,248,154, 62,216, 99,208, 1,110,119, 32,227, 47, 46, 31,211, 7,188, 56,121,161, 1,195,138,130, 57,152, +233,134,253,188,175,118, 11,120,128,167, 47, 87,114,231,198,134,212,203, 89,238, 93,110, 29, 82,252, 72,156, 74, 31,180,198, 23, +228, 1, 89,211,246,101, 48, 73, 13, 16,101, 18, 90, 48,230,197,166, 17,176,178,150, 22,246,200, 40, 46, 18,174, 83, 77, 3, 93, +172,155,134,228, 84, 57, 67,146, 0, 26,237,116,152,165,156,116,107, 56,101,213,195, 42, 48, 62,137,109,238, 29, 30,210,161, 35, +179,111,245,218,114,146,173,202,237,237,178,156,180,166,228, 99,105,235,239, 67,155, 33,167,255,221, 82,127, 4,112, 45,101,135, +123, 75, 57, 44,131,167, 35,114, 72,253,128,115,248,190,103, 4,113, 56,239,208,149, 71, 66, 28,146,213,111,162, 89,120,133,213, + 32,147,199,157,203,121,123,196,201, 15,180, 54,128,237, 64,240,120,217, 30,200,150, 6, 22,231,151,109, 93,227, 52,167, 35,208, +174, 68,224, 20, 50,224,183,246, 24,166, 73,108, 72, 42, 98,219, 6,147, 1,105, 13,136,138,165,178, 84, 3,107, 49, 25,162, 63, +145,161,218,156,177,218,137,169, 6, 38,225,131,103, 87,210,111, 13, 37, 30, 0, 92,144,200,227,211,174, 60,191,152,201,243, 54, +148,192, 64, 86,144,167,218, 25,196, 19, 98,142, 56,169,195, 59, 31,201, 15, 52,178,121,247, 86, 93, 15,106, 66, 84, 31, 90,172, +152,201, 5,227, 18, 50,110,246,247, 98, 67, 34,190,125,163, 42,127,253, 39, 79, 52,226,159,243, 82,110, 55,114,252,121, 12,125, + 15,244,239, 78,150,145, 93,122,134,195, 30, 81,156, 38, 20,239, 83,214, 21, 96, 6,136,111,224,236, 19,204, 9, 62,105, 68, 51, +232, 1,131,123, 93, 15, 95,166,158, 19, 15,227, 88,129,101,242, 33, 23,222,122, 96,125,253,185,143,143, 17,129, 37, 4,120,145, +181,106,141,136,167, 42,141,114, 81, 29, 87,153, 81,211,245,248,199,150,110,240, 27, 71,107,249,219,143, 95,105, 36,191, 34, 48, + 14,129, 68, 42, 19,112,225, 31,188,232,201,123,183,183,228,222, 78,133,198, 14, 17, 58, 25,178,214,115,153,142, 7,114,124,209, +150,141,124,192,185,201, 70,104,224,178,168, 55,145,158,167,155,231,167, 88, 78,130,228, 32,213,131,144, 13,166, 19, 30,252,165, +110, 94,185,148,161,216,202,130,218,208,190,147,129, 99,189,214, 8,113,200,159,110, 4, 34, 48,188, 40,227, 30, 95,205,165,190, + 95,146,218, 13,117,142, 87, 26, 84,160,175,157, 4,100,109, 74, 16,232, 68, 54, 58, 23,230, 74,220,143,108,201,151, 63,216, 57, +212, 11,114, 38,255,243,159,125, 66, 17,156,145,190,231,179,211,190,238,125, 79, 30,156,206,168, 80,182,142, 33,214,179,201, 18, + 42, 8, 74, 2,215, 23,125,179,225,201,221,162, 58,199,189,130,252,232,113, 75,215,102, 75, 14,170, 25,217,197, 72,198, 50,205, +210, 48,162,105, 4, 68,192, 13, 0,125, 74,162,153,216,231,186,159,144, 51,125, 77,214, 51, 56, 26,136, 56, 64,102,243,160,150, +149, 80,215, 12, 32,194, 53,103,148,213,217,148,178, 14,150, 31, 25, 25, 8, 25,204, 34,182, 59, 80, 9,162,208,134,254,241,143, + 53, 8,249,213,195,231,242,253,183,183,184, 95,152,217,222,200,248,188,180,254, 32,210, 51,170, 81,240,101, 71, 42,234,176,160, +116,132, 40, 24,213, 22,244,185,135,179, 5, 29, 21,242, 23, 56,113,207,129,113, 44,177, 77,244,140,148,136, 80,191,100,127,124, +206,103,198,243,145,120, 73,215,230,221,123,119,233,140, 31, 31,159,176,207, 70, 0, 39,129, 81, 70, 18, 3,167,203, 12,100,109, +218,221, 4,122,186,192,148, 78,146,227, 54,190, 11, 84, 61,246,151, 99,210,119, 86, 72,249, 10, 7,177,191,185,201,125,124,248, +226, 37,141, 53,254, 28,162, 45, 48, 44, 64,248, 26,151,249,194,168, 89,157,238, 57, 75,241,152,203,117, 32, 57,150,217,173,200, +225,136,216,126,173, 38, 6, 39,119, 13, 10,132, 81, 71,185, 30, 14, 26,191, 15, 35, 51, 95,206,165, 86, 49,208,217,112, 60,180, +158,180,177,226,144, 32, 5,235, 88, 82, 99,136,190,102,127,104, 52,165,101,246, 55,133,217, 17, 13,184,102, 87, 70,181,105,153, + 13,165, 90,167, 40, 51,142,228,205,120,205,179,130,241,192,187, 55,246, 72,124,133, 64, 25, 45,128,167,231, 61,162,141,199,234, + 88, 80, 44,222,223,172,170, 45,137,152, 81,159, 94, 54,229,107,183, 14,153, 77, 62,126,121, 65,253, 9, 84,170,176,183, 24,147, + 98,175,209,179, 10, 8,123,206,153,180,225,124, 2, 35,154,130, 4,213,218,179,128, 3,220,112,235,181, 49,133,225,110,177,189, +183,142,185,254, 72, 40,192,217,190,140,244,156, 44, 71,204,108,235, 32,179,209, 0, 47,133,241, 89,144, 17, 37,125, 6, 20, 12, +206,144, 12, 1,123, 22,226,133,141, 71,255,154,148, 24, 89, 40,200, 38,216, 70,194, 40, 44, 66, 13,181,179,243,113,215, 81,146, + 10, 3,138,104, 49, 85,231,152,151,135,143, 30,145, 97, 15,163, 88,181, 90, 93,206,244,156, 29,159,158,201,159,253, 85, 73,126, +247,183,190,167, 25,251, 45,249,251,159,255,138, 65, 60,108,158, 79, 6, 57, 35,202,130, 19, 41, 3, 41, 74, 96,164,199,222,242, +140, 44,134, 41,179,147,161,181, 97,200,146,231,219, 36, 81,196,145,181,169,218,234, 20, 73,113,246,246,238, 81, 47,130,102,104, +101, 36, 99, 8, 24, 89,165, 8,124, 86,118, 48, 98,204, 81,200,137,105, 41,252,222,183,111,203, 95,255,227, 19,102,194, 40, 93, +115,114, 41,176, 86, 76,188,178, 89,126,159, 64, 77, 33, 35, 30,158, 99,181, 28,115, 58,104, 9,123,121, 77, 37,141,196, 13,216, + 43,226,110, 82,100,246,163, 62,130,238,211,176,191, 50,141,116,135, 72,239, 12,198,212,186,224,116,212,218, 18,136,155,123,187, +172,180, 44, 25, 68,170,141,217, 44,211, 62, 29,221,220,212, 4,245,148,212,229,168, 14,131,254, 59, 8,242,210,214,164,104, 48, +158, 59, 62,138,128,152, 23,124,246, 10,192, 59,175,194, 0, 6,237, 15, 86, 22, 80,201,194,251, 81, 7, 33,197,137,149,195, 27, +219,250,125,207,196,102, 32, 98,167,182,152, 33,150, 6,210,200,168, 92, 15, 71, 19,125,182, 88,238,223,222, 85,155, 59,160,196, +118,224,139,227, 45, 17, 86,176,150, 26, 16,214, 53,144,131,172,183,122, 62, 77,118, 2, 41,132,115, 42,212, 77, 34,181,145, 65, +242, 58, 25,196,247,223, 59,172,203,230, 27, 53, 27, 93,252,149,102,158,239,223,174, 51,226,233,158,118, 88, 30,130, 31, 73, 65, + 68, 68, 23,254,205,131, 13,185,173, 15, 10,128, 26, 88,138, 16, 49, 12,244,113, 63,186, 8, 56,178,128, 49, 8, 76, 68, 33,146, +198, 69, 74,146, 20, 47, 44, 72, 20, 18,189, 0, 55, 54, 11,114,115, 75, 29,167, 58,170,203,206,132, 37, 23, 80,120, 2,128,134, +190, 43, 68, 71, 80,150, 69,116,234,137,137, 69,112,224, 6, 27, 74, 30,116, 11, 12,168, 32,165,134,125,213,154,147, 3,123,137, + 69, 5,106, 92, 23,185,112, 93,180,228,101,178,190, 31,140,113, 4, 54,168,249,130, 64, 39, 48,251, 64, 72,160, 94, 52,157,231, +193,100, 38, 79, 78,155,210,175,204,164, 51,156,242,144,103,152,241,164, 52, 34, 76,201,173,157,162, 36, 31,236,202,143,126,126, +162,155,176,224,172,122, 72, 14,105,145,183,246, 66,185, 89, 5,179,220,136,179,207, 48, 64, 36, 17,137, 87,146, 42,165,165,139, +254, 98,106, 45,239,221,169,115, 28, 16,139,127,124,137,178,156,149,159,115, 32,223, 80,167,159,215,108, 28, 45,188, 66, 25,234, +105,158, 81,146, 2,117, 15,212,240,113, 71,130, 74, 81, 51,134,144,179,211,148,107, 37, 89,181,245,234,146,149,101, 82,112,240, +200,172,135,122, 81,110, 53,124,142, 89,224,130, 45, 33, 4,179, 54,176,213,194, 69,116, 33,132, 47,220, 60,125, 70,215,231,131, + 59,155,242,135,223,191,199, 8,122,119,163, 32,155,181, 52, 53,238, 63,184,159, 97,150,254,243,135, 61,117,130,101,150,205, 80, + 1,193, 76,242, 97, 37,148,183, 54,212, 72,235, 89,223,210, 64,226,135,250, 62, 63,126,208,146, 29,117,198,251,123,121,185,234, +142,229, 89,107, 44, 57,240, 99,171, 99,121,124, 62, 32, 0, 15,193,214,120,178,100,105, 15, 50,134, 40,173, 34,130,133, 97, 46, +229, 87,204, 82,190, 60,155, 73,216, 92,200, 7,239,212,216, 2, 66,219, 4, 80, 93, 3,250,197,100,157, 73, 22,154, 53,204,215, + 50, 94,169,177, 9,115,116, 18, 39,189,161,252,221,103, 79, 53, 24,202,200,121,103, 44, 79, 94, 62,151,239,190,115, 91,141, 63, +176, 31,109,105, 4,104,219,168, 65,209,179, 52,159, 78, 72, 73, 89, 41,107, 54,170, 89,254,104,106,189,103,150,196,157,179, 99, + 97, 35,182, 30,249,126,125,131,123,123,222,238,240, 28,121,190,245,196,225,176,113,102,222,190,117,196,128,224,201,201, 41, 81, +238, 24, 11, 3,242,123, 73,245,164,136, 14, 29, 25, 61, 12,216, 20,134,188, 80,208, 32,117,201,239,227, 44, 58,140,125,114, 29, + 68,120,228,149,102, 25, 30, 89,185,254, 23,158,239,112,123, 91, 13,115, 65,154,189,158,129,126, 40,212, 98,165, 64, 60, 15,122, +240,214, 10, 8, 93,223,220,218, 92,161, 99,109,132,168, 9,219, 7,158,141,106, 93, 99, 5, 12, 56,103,237,170,189,141, 13,189, +159, 29,167,180, 22, 80,241, 43,157, 54,148,250,124, 62, 35,130,254,154, 40, 7,217, 29, 3, 76, 84,143, 48, 82,154,133, 98, 97, +193, 88, 28,187, 35, 18,195,100, 82, 57, 35,115,138, 23,198, 71, 17, 9, 13, 40,130,189, 87, 23,175,140,219,156,114,173,122,215, + 39, 83,150, 46,231,179, 9, 71,105, 81,218,197,244, 9,130, 55, 60,111,173,152,231,251, 90,160,100,179,217,168,156,228,193,115, +174, 25,227,151,199,103, 18, 5,123, 6,109,136,241,174,186, 14,106, 8, 99, 49,110,126,210,228,199, 54,207, 75,205, 7, 63,180, + 89,103,227, 94,150, 36,101,148,186, 28,211,155,140, 88, 53,132, 19,220,174, 85, 8,194, 29, 12, 38,156,123,247,215,172,207,168, + 99,207, 74, 53, 95,100,101,100, 76,197,185,136, 14,237,178,211, 38, 87,186,144,220, 48, 32,232,204,211,237, 68,134,191, 92, 91, +115,197,127, 61,125,240,107,201, 96, 4, 30, 24, 31,155,122, 41, 58, 84, 84,254, 72,203,132, 81, 53,205, 64, 33,214,210,234,116, +229,221,183, 54,229,217,139,167,210,233, 52, 37,204, 20,229,252,170, 37, 95, 60,124, 34,119,239,190, 33,119,142, 14,229,236,236, +146, 68, 58, 21, 93, 99,244,180,243,233,152, 24, 25, 76,115,140,231, 54, 58,134, 49, 67,216,176, 96,145, 98, 22,140,188,129, 45, +107,204,194,172, 64,204, 34, 20, 59,193,115, 78, 56,218,183, 38, 62,162, 86, 65, 2,116, 71,182, 53,160, 50, 41,104, 35,157, 1, + 38, 0,248, 41, 80,215,250,222,132,235, 13,154, 89, 76, 74,212,212,230, 31, 79,250,172, 96,225, 92,131,238,119,189,210, 32, 32, +155, 54, 17, 30,221,255,225,100,233,104,138, 13,141, 31,250, 86,101,140, 18,107,194,174,156,172,104, 67,207, 39,184,227, 1,126, +196, 52, 1, 0,108,112,232, 56, 87,232,235, 67, 5,114,182, 50,161,138,104,109, 66, 71, 36,165, 41, 1,133, 62,226, 89, 69,191, +219,243, 82,196,127, 32,226,218,221, 40,201, 69,103,198,231, 3,178,253,198, 94, 85, 19,131, 83, 78, 68, 85, 74,105,211,132, 7, +152, 53, 29, 16,217, 14,222, 3,223,166, 54, 93,107, 46,207, 42, 10,222,227, 72,157,106,175,175, 9,110,111,194,202,227, 85,103, +192, 86, 27,206, 43,238, 84,179, 7, 14,121, 96,173, 2, 86, 56,222, 80,159,122,160, 73, 33, 64,230,173,145,129,239, 98, 23, 80, + 98, 28, 22,156, 8, 45,253,108, 36, 45, 8, 68,125,150,227,167, 12,142, 38,145,113,157,152,221,138,101, 60,236,171,227, 95,202, +187,187, 13,171, 8,180, 53, 74,158, 45,138, 50, 82, 67, 97,242,118,198,215, 12,231,190,169,153,194,205,253, 77, 19,144, 0,125, +101,193,202,104, 48, 42, 44,153, 47,198, 44, 13,192,144,225,139, 65,178,194,190, 97, 58, 39,221,225, 88, 23,108, 40,189,174, 70, +215,211, 2,123, 7, 24,245, 64, 68, 54, 68,102,191,128, 70,173, 16,241,105, 66, 18,215,243,178, 86,238,103, 38, 35,246,224,216, +108, 92,116, 92,120,140, 45,112,244,107,109,253,201,208,110, 5,127, 14, 62, 15,153, 17,208,182, 64,153,123,137,129, 59, 40,214, +162,207,252,143,207, 58, 82,211,108, 18,253, 97, 24, 94,148,135, 94,156,183,100,187,190,100, 52,139,121, 99,144, 7,160,124, 8, + 30,225,119,143, 26,212, 41, 71, 31,253,149, 58, 78,163,145, 77,164, 28,104,196,183,161, 7, 53,107, 0, 48,207,205,113,167,244, +192,174,250,107,121,227,118, 67,198,107,189, 68,144, 16, 76, 2, 39, 82,178,150,141,195,162, 20,182,179,122,209, 19, 89,106,246, +152,206,169, 97,193,139,228,116, 13, 48, 2, 56, 89, 16, 85,235,101, 66,146, 85,164,245,226,204,215, 41,153, 38,105, 30, 60, 42, + 35,233,161, 7,229, 12, 17,153,196, 40,120, 20, 17,120,248,114, 32,135,181,178,212, 74,105,246,123,168,136,231,248,142, 99,135, +126,142,221, 8,147, 17,105, 4,204, 28,254,179,111,223,212, 76, 75, 51,137,192, 33,118,213,112,162, 11,156,142,203,242,133,174, +215,213, 85, 87,198, 7, 21,249,248, 49, 74, 69, 69,249,246,190, 26,252, 76, 76,113, 29,208,113, 30,236,151,229, 59,122,224, 63, +252,234, 66,222,190,179, 33,139,216, 35, 58,181, 6,150, 57, 49,148, 59, 88,179, 50,105,251,117,127,154,200,131,102,194, 57,208, + 61, 93, 91, 98,117, 72, 74, 2,242,126,205,194,245,231,159,188, 88, 48,227, 64,187, 0, 75,187,112, 61,109, 0, 93, 16, 32, 84, + 27, 13, 25,181, 39,164,140, 69, 86,251,231, 63,123, 40,179,113, 31,115,140,242,201, 73,147,172,115,153, 76, 65,226,176, 32,207, + 79, 63,103,128,128, 30, 58,200, 87,112, 94,106,165,146,244,219, 45, 10,198,192, 8,205, 33,146,131,202, 78,104,100, 50,236,107, +130,238,117,107,147,229,226,174,102,232,214,119, 14,104,108,128, 77, 64,219,229,254,209, 77,233,246,251,122,134, 46,120,238, 48, +107,158,214,128, 19, 17,187, 56,210, 35,156,237, 70,177,192,145, 55,170,166, 33,211, 97,207, 91,207,166,183,160, 50,219,220, 33, +237, 1, 32, 74, 92, 16,152, 35,167,195,146,173, 1, 48,198, 1,188,135,239, 64, 95, 26,160,184,192,183,224,212, 90, 5, 54,174, +228, 59, 98, 38,232, 48,160,197, 83, 42, 20,120,249,113,254,175, 41, 83,177,206, 12,146,172, 20, 70,167,205,150,136, 58,206,103, +167,167, 20,104,193, 25,193,204, 62,177, 22,148, 80,181,242, 50,178, 71,128,143,234,249, 52,191, 23, 21,141, 44, 17,236, 66,250, + 95,140, 21,149,243, 41, 86, 5, 74,197, 44,179,203,153, 6, 67,153, 16,101,212,140,147,146, 77,145, 55, 28,164, 44,144,191, 69, + 31,179,158,153,201,120, 12, 26,213, 37, 3,148, 98,198,200, 80,192,179, 13,223, 7, 32, 20,238,231, 98,137,145,189, 57, 91, 23, + 16,192,193,251,191,113,180, 37, 47, 94, 53,229,229,233,149,124, 79, 3,185, 55,143,118,228,244,106, 40,143,199, 70, 0, 4,135, +136,245,181,145, 76,171, 98, 64,102, 21, 34, 43, 88,135, 56, 50, 73, 85, 4,189,112, 60, 41, 86, 76,108, 82, 36,112,189,102,172, +231,116, 60,101, 16,132, 83, 28,148,171, 38,144,162,107, 51,117, 60, 24, 56, 63,176, 25,195,192, 52, 40,112,223, 80,197, 11, 98, +195,135,196, 94,236,184, 32, 18, 27,189, 67, 21,194,241,242,227,179,208, 99,207,105,116,191,156,246,245,220,155,204, 39,238, 0, +136,132,224,188,176, 15,253, 65,143,229,124,140,155,177, 18,160,123,247,163, 31,255,131,252,187,223,255, 23,242,123,191,243,123, +242,226,241, 39,150, 77,187,158, 47, 90, 92, 24, 57, 3,217, 9, 38, 33,144,124,120,204,122, 77, 85, 14,227,129,104,117, 49, 19, +213, 51, 13,214, 66, 8,169, 96,191,209, 82, 53,136,141, 6, 70,233, 50,109, 55,130,172,158, 58,160,227,147,199, 12,176,169, 37, + 46,190, 99,215, 84, 27,173,151,245,221,219,135, 92,151,120, 57,227,123, 82, 89, 17, 78, 85,207, 33, 70,189,200,173, 1,160,223, +100,168,247, 15,120, 44,211, 63,159,205,210,164,155, 70, 11, 4,114,163,168,152, 1,228,135,231, 64,165,176,170,142, 16,179,228, +116,244,100, 2, 92,177,133,136, 51,218, 30,140,232,124, 81, 89, 24,141,151,252, 46,216,188,163,189, 29,254, 44,241, 31,235, 5, + 65,201,104, 23,224,158,195,182, 85,244,172,110, 85,145,100, 84,244,108, 71, 4,117,167,200,184,185,102,112,147,207,167,185, 95, + 49,239, 91,218,206, 8, 2,232, 85,196, 51,149,211, 53,137, 24,244, 46, 73, 37,142, 26, 9, 70,225, 14,182, 43,122, 6,123,198, + 82,233,148,228, 82,250,119, 81,209,222,203, 22,245,243,151,210, 27,206,212, 15,230,229,237,187, 91,114,210, 58, 37,159,135,127, +141,123,208, 61, 26,106,176,186, 70, 48, 85, 45, 82,191, 96,205,177,217, 57, 1,172,168, 14,192,158,177,186,168,207,122,118,217, + 70, 86, 40,223,187, 87, 55, 21,185, 90,189, 36,103,253,153, 9,114,168, 83,210,253,208,191,164,209,184,110,198,123,111, 28, 50, +242,195,133, 5,104, 3, 17, 22,202, 67,113, 96, 23, 14, 99, 41,197,162,177, 25,193, 48,131, 76,223,184,148, 81,246,216,144,205, + 74, 86, 15,174,113,125, 99, 84,229, 69,107, 73,142,113,100,164,216, 4, 24, 85,102, 62,234,168, 64,104, 33,174,119, 34, 14, 76, + 67,246, 85,106,220, 70, 12, 52,112,136,168,200,230,217,197, 35,129,128,190,140,207,204,202,122,249, 32,192, 96,196, 51, 91, 50, + 16,129, 90,219,106,105, 8,112, 68,229,207, 78, 38, 4,132,220,191, 93,151,173,205,188,116,199, 19,102, 85,155,165,154,108,151, +179, 44, 15,161, 60, 31,234,161, 89, 78,112,248,150, 84,230, 33,211,207,218, 74,189, 3,104,113,163,167,169,153,118, 52,141,101, + 50, 52,198,170,198, 70, 94, 74,117,205, 44,212,192,226, 93,155,151, 99,153,143,150, 50,208,103,175,105,102,145,193,200, 11,190, +190, 53,215,239,141,165, 92,208,108, 29, 35, 12,179, 64,198, 32,118, 24, 45,200,189,156,206, 5,100,179,131,116,232, 92, 35,185, + 69,166,100,116,180,193,154,153, 62, 56,177, 83,174, 81,157,210, 67,119, 53,137,229,162,187,144, 63,251,248, 66,126,255, 91,135, +172,170,120,174,143, 24, 51,154,181, 82,205,194,177,218,145, 32,100,177,226, 69,238,142, 49,167, 30, 74,173,158,181,113, 39, 61, +160, 96,146,131,113,190,127, 84,145,159,124,118, 41,159,157,104,240, 80,170,203, 15,239,166, 36,175,209,230,122, 97, 20,152,248, + 44,204,234,222,218, 44,112,198,253,103, 15,175,228,235,247,118,228,173, 91, 5, 61, 3,198, 15, 48, 31,204,228,195,207, 91,114, +191,166,142,105,149,147, 39,151, 11,185,232, 3, 40, 50,214,103,143,136,172,190,118,234, 36,200,137,133,128, 53,207,149, 42,225, +144, 96,212,200,215, 77,177,147,152, 37, 48,244, 65, 95,234, 69,125,218, 28,202,201,197, 21,123,126,237,238,146,165,222,125,205, +108, 47, 53,179,121,121,209, 36,154, 30,189,184,179,118,151,199,170, 86, 41, 19,247, 48, 95, 69,175, 21,215,174, 41, 64,169,189, + 29,248, 68,246,150,245,194,142, 28, 80, 41,113, 35, 96,190, 19,180,192, 40,217, 27, 55,111, 82,104,227,172,213,100, 0, 5, 29, +116,232,167,227,174,160,188,139, 76, 5, 25, 97, 78, 3, 59, 56,160, 86,127,192, 17, 56, 43,175,122, 86,146,143, 77, 87,225, 26, + 9, 15,231,130, 63, 95,172,192,226, 88,100, 95, 28, 99, 49,232, 29,227,243,172, 63,107,122,221,136,200,249,247,136, 99,176,172, + 56,235,132, 90,124,170,242, 89, 41, 25, 35, 82, 84,123, 98, 48, 18, 57,142,136,107,159,110, 72,238, 98, 46, 67, 60, 1,217,234, +220,115, 37,177, 97, 9,240,222, 8, 24,178,152, 7,158, 13, 24,152, 76, 23, 62, 25, 24,129, 81, 65,255, 27,159,133, 96,165, 86, +206,201,193, 86, 77,239,136,102, 62, 25, 91,195,213,106, 65, 28, 2,140, 51, 2, 27, 92, 32,204, 2, 79,189,169,147, 75, 21,150, + 70,161,107,189,171,103, 48,100,175,215,231, 68, 73,106,226, 51, 24,196, 8, 57, 70,249,144, 25,211, 64,134,230, 52,225, 60, 27, +149,156,148,114,187,242,119,255,248, 76, 62,252,226,165,236,108, 52,164,211,237,232,207, 78,245,115,125,187,187,113, 68,253,115, + 24,141, 53,219, 56, 41, 58, 15,100,109, 8, 18,136,137,129,167,139, 45,112, 67,162,129, 42, 8,146, 25, 67,252,251,175, 57,199, +169,221, 77,130,147, 37,114,118, 18,130,160, 69, 81,212, 0,166,133,117, 75, 2,206,204, 39,142,195, 60,206, 10, 1,180,161,235, +242,139, 27, 35, 53, 94, 8,227, 53, 79,160,134,232, 88,247, 4,188,253,110,166, 26,207, 57, 7,225, 73, 96,108,112,144,175,246, +213,158,110,109,239,203,108,212,145,153, 58,198,126,247, 82, 30, 61,126, 32, 95,127,239, 3, 89,121, 89,249,171,159,124,200, 96, +134,137,152,225, 99,121,198,170,165,156,174,111,133,227,100,200,212,209, 2, 64,108,135,243, 28, 57, 0, 29,122,179,190,191,166, +130,218, 24,128,171,148,129,194,214,131, 33, 91, 25,181,250, 14, 38,236,173,165, 20,100, 89, 96,102,235, 49,177, 96, 9,146,173, +155,245, 2,181, 31,160,218,246,139,167, 3,217,171, 23,101,168,119,160, 51, 90, 57,210, 26, 95, 29,248,154, 78, 17, 99,115,148, +128,213,123,178,134, 42, 31,218, 53,107,171, 6,195,125, 99, 29, 75,106,151,183,106, 5,226,115,216,118,130, 22,253, 34, 38,168, + 25,156, 37, 67,140, 84, 79, 87,100,177, 3, 25, 18,170,201, 56,211, 32,153,201,240,204, 77,136, 7,203,234, 94,128,207,126, 57, + 66,160,156,227, 8, 32,122,232,181,114, 94,198, 75,180,121, 66,181, 25, 83,249,214,253, 27,242,197,227,115,222,179, 75, 77, 74, +203,185, 20, 65,150,126, 88,228,250,131, 46, 28,119, 20, 9, 97, 56, 52,172, 10, 28, 61,198, 56,111,238,212,229,228,114, 36, 91, +149, 44,201,132, 48,182, 87,204, 39,166, 61, 66,157,154, 21, 3, 0,140,184, 97,146,163,221,159,200,119,190,121, 75,174, 90, 35, +249,201,151, 67,182, 1, 96,231, 16,192,173,160, 49,129,150, 15,124,159, 88, 75,161,171,217,126, 46,191, 34,167,198, 10,220, 14, +208,154, 87,223,214,236, 13,164,148, 1, 62,196, 36,201,195,135,175,218, 36,250, 39,194, 27, 68, 18,122,192, 16,129,212, 54,115, + 20, 63, 33,171, 21, 65, 51, 43, 19, 85, 89,217,161, 13, 88, 66,206, 82, 95,120, 60, 71,132,171, 95,166,145,141,159,178, 81,137, +146,158,246,253, 98, 70,158,191, 26, 9,186, 85,223,121,163, 65, 6,177, 23,103, 61,246,210,169, 51, 12,121,220,149, 49,197, 65, +217,132, 61, 98, 61, 88,140,106,197, 24,162, 96,216,144,165,131, 5, 13,254,159, 64, 18, 61,216, 81,104,186,198, 1,148, 61, 0, +230,201, 24,138,155, 90,221,145,147, 93,116,227, 91,208, 81, 6, 93,104, 87, 35, 86, 56, 10,144, 31, 60, 63,235,203,191,253,238, + 29, 2, 38, 78,219, 3,130,185, 94,188, 58,151,231,231, 3,121,247, 32, 47, 13,221,112,128,190,254,254, 81, 83,190,122,222,149, +170, 26,102, 32,112, 17,161, 0, 3, 0, 3,227,235,225,159,170,131,158,232,129,189,152,169,147,206,251,156,202, 6, 23, 48, 70, +129, 24, 33, 95,245,101,172,191, 14,183, 27,210, 88, 98,214, 52, 96, 20, 61, 38, 48, 77, 47,144,190,255,121,123, 46,199, 77,104, + 73, 47, 9, 28, 41, 21, 67, 57, 44,135,242,253,187,117,114, 15, 67, 19, 30, 70,116, 62, 67,166,101,104,246, 8,228, 26,250,222, + 95,156, 78,228,151,207,245, 64,104, 16,242,197,147, 75, 53,114, 25,121,235,176,202,172, 2, 81, 36,130, 33,155,121,246,109, 30, +250,159, 40,166,112,100,137, 66, 22, 17, 13,126, 38,151, 50,242,182,192,176, 9,135,122, 6,234,181,156, 52, 23, 25,249, 87,247, +178, 82, 33,249, 80,194, 61,194, 1,140,157, 44, 32,136,111,142, 26, 89, 86, 6,190, 58,110,243,249,161, 11, 15, 46,234, 53, 12, +188,102, 32, 35,140,236,177,232, 53,151,142,102,201,149,219, 71, 50,143,115,146, 69,164, 59,157, 26,119, 52,165, 22,141, 49,138, + 53, 5,199,130,199,200, 88, 29,108, 71, 29,245,117,111,116, 62,133,138, 93, 70, 30,183,250, 4,137, 32, 64, 44,193, 17,228,243, + 44,163,191, 56,107, 82,151, 26, 68, 64, 0,196,161,122, 3,103, 11, 64, 28,137, 44, 34, 43,205,162,236,150, 56,134, 56, 56,172, +157,250,134,108, 84,107,156, 92,240,245,114,161, 95, 87,202, 25,155, 28,136, 94, 48,206,118,239,198, 13, 57,111,181, 25, 56,144, +196, 9, 61, 20, 32,199,199, 99, 62, 47,254, 15,206,137,142, 79,159, 27, 65, 10,121,186,213, 80,183,244, 89, 60,199,145, 46,174, +159,158, 36,177, 3,204, 57, 64,168,126, 22,156, 4,246, 97, 58, 53, 37, 55,100,237,158,111,202, 92,226, 45,152,209,146, 76,132, +217, 80, 32,135,219,155, 44,245, 93,104,102,140,108, 3,159, 7,230,185,142,126, 31,185,203,157, 51,185,254, 31, 29, 58,214, 60, + 54, 42,219,171, 78,135,235,129,115,130,202, 5,218,105, 36,216, 9, 67, 58, 27,140,161, 45,121,247,214, 50,208, 51, 0,172, 2, +206, 0,130,160,200,225, 60,158,159,117,101,167, 90, 32, 31, 4,116,210, 65,147, 10,196,239,130, 0,154,148,203,154, 86,204,214, +175, 29,101, 30,255, 95,207, 74,179, 59,100, 95, 19,129,123, 83,141, 29, 24,230,200,253,160,246,132, 25, 74, 58,203,185,111,188, + 27,130, 23,100,176, 5,142,221,121, 26,132,101,228, 27,111,238,202,227, 87, 45,234,197,127,247,107,119,245, 59,167,242,211, 79, +159,200,133,222,103, 47, 76, 19,239,146, 19,195, 54,132,164, 38, 77, 49,120,165,252,111,144,176,108,110,211,248, 6, 54,131, 77, +130,237, 89, 18,124, 56,167, 45,226,122,129, 67, 0,179,233, 94, 68, 66, 24, 47, 54,204, 10,158, 9, 9, 10,240, 26, 32, 1, 66, +118, 5,181, 58, 4,213, 64,205,175,255,137,228,112,226,184,247,163,245,218,245, 81,237,179, 17, 80, 20,114, 53,117,212,109, 78, + 11,180, 53,235, 68,233, 63, 89, 37,175,153, 8, 59,186, 78, 69,117,100,144, 6, 77,102, 99,221,227,140,156,158,157,106, 22,188, + 37,111,220,123, 75,126,245,217, 47,165,221, 27, 66,171,205,250,174,177, 9, 38, 93,181,167,234, 60, 90, 12, 58, 2,158,143,196, + 84, 41, 93,153,155,172,124,128, 1,132, 30, 91, 55, 56,183, 8,166, 61,114,161,172,169, 80, 7,180, 62,214,124,127,179, 33,197, + 66,214,200,118, 16, 16,165,211,172,138, 86, 52, 96,174, 1,112,150, 49, 42, 90,180,111,206, 90, 93,182,249,186, 26,240,163,186, + 8,124, 2,168,117, 45,219, 14,205, 20,129, 0, 11,124, 5,184,211,154,161,161, 34,137,160,134,114,169,122, 23, 90,195,133, 12, +103,134,195, 0, 24, 27, 19, 26,245,130,209,167,226,158, 28,110,111,201, 87,207,158,242,156,121, 28, 19,246, 89, 89,234,235,189, + 67, 48, 11,177,160,134,166,228, 41,170,231,165, 52,145, 89,114, 4,248,222,205, 77,150,242,219,253, 5, 91,179,120, 39, 80,128, +223, 62,104,232,153,155, 73,127, 12,238,249, 57, 91,204,241,194,231,122, 64,250,185,164,201, 88,218, 23, 39,199,107,248,154,174, + 62,227,102,173,200, 73, 19, 76, 84,160,133,131,138, 20,129,169,113,236, 4,132, 18, 50,113, 66, 25, 16,247,255,147, 39, 29, 57, +216,191,148,175,191,179, 43,159, 63, 27, 8, 0,236, 8, 16, 6,154,244, 44, 57,226, 26,177, 74,149, 80,193, 52,162, 77, 71,128, +128, 68,118,170,190, 56,147, 45, 83, 94, 22,118, 55, 67,226, 38,253, 59, 89,125,206, 5,162,118,206,251, 69,178, 81, 43, 73,163, + 94, 39, 1,199, 54,140,249,200,122, 65,232,231,166, 52, 10, 92, 57,164,118, 28, 25, 17,199,117, 43, 59, 29, 88, 25, 15,135,231, +154,222,243,104, 51, 43,221,171, 46,169,247,240,121,144, 26,252,198,141,140, 46, 70, 81, 62,125,218,165,129, 71, 9,204,128, 35, + 96, 76, 51, 66,136,245,234, 26,168,100,209, 90,224,219,248, 15, 8,237,241,155,153,173, 2,196,142, 36,128,202, 22, 48, 60, 25, +223,245, 67, 19,150, 32,230,208, 83,212,211,218, 85, 35, 95,213,159, 25, 12,198,140,142,128, 76,236,235,130,228, 81,154,209,139, +248,221,155, 91, 82, 88, 14,185,224, 27, 50,147, 88, 55, 17,218,174, 65,180,148,155,229,154,189, 23, 64, 14,129, 33,139,208,223, +141,125,171, 6,140,161, 82,135,146, 50, 74, 85,122,200,170,122,144, 46,198,125, 6, 62,233,180, 85, 25, 66,208,168, 38, 54,138, + 3,167,138,181,251,217, 23, 77, 57,233,204,229,162, 53, 38,171, 19, 34,185,206,200, 72,251,183, 26,121,150,197,183, 53, 91,129, + 49,121,209,154, 74,123,184,228,129, 15, 52, 19, 59,208,131,214, 40,231,184,214,152,137,132,193,124,213, 91,203, 63, 60,232,179, +116,153,214,205, 7,219,220,143,126,246, 92,183,226, 80,157, 83,193,122,195, 81,228,232, 72,173,119,122, 45, 28, 2,163,142,170, +196,245, 8,203, 4,143, 1, 71, 70,164,212,138, 14,251,139, 23, 45,169,214, 26,242,205,163,146,228,215, 35,185,232, 37,191, 70, +124, 83, 61,206, 35,152, 4, 12,133,254, 92,244,128,214, 36,187,149,200,147,179,145,148,209, 59,159, 47,217,163,135, 18, 18,130, + 9,244,179, 39,147,177, 92,106,214,220, 31,206,101,118,123, 67,110,110,103,168,184,133, 67,139,254, 29, 71,245,208, 71, 19,155, + 60, 64,121, 23,102,240,248,105,139, 65,101, 54, 99, 61,106,100, 37,199,221,158, 6, 98,207,216,211, 75,123, 5,217,218, 40,240, +252, 64,160, 33,165,251,211, 80, 99, 15, 84, 55,192, 53,152, 41, 7,173,111, 64,242, 11,107, 75, 16,141,235,123,220, 11, 56, 97, +140, 5, 29,237,237,233,158, 96, 52,167,197,153,214,224, 90, 9, 76,247, 4, 4, 48,219,122, 63, 94,158,159,203, 69,179,197, 50, + 56,169, 91,161,228,167, 14, 61,113,229, 85, 24, 95, 68,226,173, 94,207,128,120,147, 41,159,131, 26,236,228,112, 72, 27,107,148, + 88, 41, 31,255, 32,155,167, 62,183,190,239,150,126, 7, 2,178,238,208,230,229,241,191, 98, 30,154,215,154, 13,170,243, 37,199, +119,161, 72,128, 28,170,101,213, 98,137, 36, 24, 96,210,226,120,150, 4,174, 55,183,100,185,252,186,183, 30, 93,243,189, 59,228, +251,245,127, 99, 20,174,163,223, 69, 45,117,151,229,175, 92,127,210,119,227,151,232,237, 65, 78, 53, 94, 27,248,172,144, 54, 62, +121,223,201,232, 98, 29, 48,222, 51,152,174, 41, 91,137, 61,137,214, 22, 76,226,140,112,230, 62,155,229,251, 65, 66,181, 24, 21, +140, 85, 78,207, 71, 75, 51,107,128,165,224,228, 80,194,190,234,244, 25,244,194,176, 6,137, 1,104,183,213,158, 20,114, 32,174, +154,179,114,231,185,128,132, 92, 3,161, 57, 48,204, 29,247, 71, 61,249,242, 24,137, 73,145, 37,211,149,254,124, 26,196, 79, 36, +145, 49, 29,112,172, 7,238, 35, 26, 7,198,177,228, 17,185,142, 44, 39,195, 50,171,245,215,225,208,113,158,150, 40, 95,162, 66, +233,136,147,168,193, 14, 45,110,189, 52, 25, 76,102,104,208, 64,135, 30, 25, 14, 3,129, 12,210,225, 48,171,239,168,142,101, 30, +207, 77,218,214,141,152,190,110,168, 95, 87, 75, 98, 91,231,128, 12,149,154, 17,234, 94,160, 85,132,239, 7, 16, 13,204,157, 8, +160,240, 67, 75,202, 66,207, 36, 91,171, 72, 61,165,201, 83, 78, 3,232,124, 77,186,237, 51,169,148,223,146,239,124,235,187,210, +186,122,165, 25,104,133,246, 20, 54, 8,159, 15, 94, 14,208,156,162, 44, 60, 69,197, 65, 12,132,136,111, 14, 2,195, 25, 0, 93, +140, 17, 55,100,211,104,223,224,223, 36,253, 68, 96,167,255,129,179, 92,209,160, 54,137,235, 84,131,155, 78, 7, 68,132,163, 37, +134,243,214,159,180,229,225,243, 51,178, 8,222,185,113,160, 65,222, 37,131,134, 87, 24,211, 2,166, 70,239, 63,156,213,104, 8, + 91, 57,117, 99,123,168, 86,133, 70,120, 5,178, 50,220,123, 61, 43,245,122, 77,237, 93, 65, 42,197,220,107, 54, 75, 96,113,128, + 62,135,189, 63,237,154, 90, 98, 20, 79,245,157,154,118,126,220,250,238,104,208,177,114,247, 6,146,211,161,218,159, 66, 54,253, +154, 10, 25, 99, 96,184,255, 72,224,142,118,244, 78,171,237,237, 77, 99,121,247,222,166, 60,120,214,212,187, 63,212,179,150, 53, +236,136, 62, 90, 77,157,248, 88,207, 43,192,144,168, 14,112, 28, 89, 3,191, 60, 84, 12,245,188, 66,181, 20, 99,175,237,206,216, +116, 4,212,161, 99,218, 0,213,146, 27,187, 13,210,109, 55,213,255, 64, 80, 12,123,143, 86, 23, 41,147,245,188,253,244,227,151, +210,189, 85,151, 55, 14,114,242,241,179, 41,219, 28, 61,205,188,197,141,116, 7, 78, 9, 21,129,202,214, 86,141,154, 31,144,141, + 69, 27, 48, 95,180,177, 96,128,189,193, 59,210,213,187,151, 7, 17,219,221, 27,135, 26,205, 15, 24,129, 97,254, 21, 61, 68, 24, +251, 67, 32,145,195, 88,142,219, 11,150,171, 51,129,149, 13,113, 41, 99,246,130, 18, 70, 74, 81,226, 27, 53, 40, 34,150,196,250, +182,149, 84, 36,225,114,192,210, 23,118, 4,224, 37, 44, 54,162,164, 15,110, 55,216,147,251,155, 95, 93, 50, 42, 66,112,176, 94, + 7,148,142, 67, 6,200,209, 30, 49,244, 6,217,199, 80, 43,242, 76,163, 43, 65, 73, 29,176, 78,202,116, 26,227, 25,169, 5,145, +189, 80,193, 71,100, 52,152, 73, 17,114,143,186,200, 83,117,178,195,153,141, 54,208,176,160,191,232,216,187,246, 10,161,188,185, + 1,226,145,153, 76, 52,155,236,130,163, 92, 23,230, 61, 93, 96,176,156, 33,131,110,228, 83,178, 89, 72, 49,136, 89, 70, 70,152, +143, 0,132,252,223, 96,105, 2, 15,187, 58, 15,208, 90, 98,141, 98,112, 46,166, 83, 4,182,161,132, 27,215, 52,211,209, 83,145, +192, 72, 2, 12,181, 76,228,173,163, 42, 47, 2,136, 94, 62,127,218,145,177, 30,160,183,110,150,168,117,222,210,104, 26,206, 25, +181,165, 98, 33,100,148, 54, 91, 38,140,222, 46, 46, 58,210,106,250, 12,178, 96,212,176,206,157,137, 71, 20, 56,178, 27, 24, 84, + 68,217, 48,248, 95, 61,111,105, 38,133,254,102,218,102,102, 29,210, 26, 11, 9, 52,103,226, 89,155,131,118,194,247,152, 89, 23, + 82,108, 60, 57, 6,185, 68, 62,127,222,147,159,125,126, 37,247,238,132,210,168,106,230,239, 21, 37, 66,148, 8, 71,228, 57,161, + 17,240,120, 35,122, 4,102, 97,162,142, 56,147,200, 94, 61,148,217, 72,164, 55, 48, 52,179,207,145,161,185,172,169, 54,166,239, + 50, 25,201,189,253, 2, 69, 9,186, 87,115,249, 55,119, 14,100,169,241, 76, 6, 20,163,190, 5,142,164, 4, 14,140,165, 14, 78, +161, 61, 90,202, 31,255,205, 75,185,108,173,212,176,164,109, 54,188,160,153,114,251, 84, 10,133,138,236,111,239,240, 2,158, 65, +234, 20,239, 23, 45, 56,219,139, 94, 30,203,177,106, 88,103,212,237,182,236,152,253,103,223,115,228, 70, 49,209,247,111, 29, 29, + 81,135,250,164,217, 36, 40,169, 55, 48,178, 22,207, 33, 92, 81,150, 46,233, 29,233,141,134,204,178, 80,218, 3, 2, 22, 89,220, +242,154,133, 13,107,131,214,143,254, 29,100,237, 75,167, 64,232,185, 18,238,144, 10, 93,166,174,133, 71,129,163,131,225, 54, 0, +154,241, 21,236, 52, 54, 13,221, 75,161,145, 53, 17,238, 8, 8,242, 46,243, 64,143, 24,226, 73,156, 72, 70,255,220,245,237, 86, +235, 95,151,229,209,251,206, 81,185,109,193,222,181,209,252,218, 4, 7, 71, 28,157, 48, 18,201, 97,210, 41,162,215, 47, 58,109, + 93,219,162, 1,109,124, 19,204, 64, 86, 26, 59,214, 8,107,219,216,157,196, 81, 66, 39,152,104,117, 56, 85, 40,125,105,150,125, +184, 89, 32,109, 39,148,168,140,115, 34, 49,110, 1, 76, 3,100,224,176, 74, 78,138,192,231, 28,252, 2,202,102,186,174,205, 94, +135,107,131,182, 23,170,127,144,108, 6,159, 2, 70,213, 80, 10, 6,112, 9,125,213,114,174,160,235,184, 43, 77,221, 31, 84,160, +132,184,130,152,147, 52,187,155, 27,210,209,160, 22, 6,238,201,201, 43,217,223,218,147,223,248,218, 29,121,227,104, 91, 30,189, +120, 37,131,246, 88,159, 33,207,145, 72,140,110, 33,209, 72,216,207,182, 32, 50, 6,224, 21,170,124, 24,229,237,247,201,201,126, +173,202,135,251, 19,129, 10,153,164, 47,154, 8,104, 70,154,201,133, 12,204,160, 45, 81, 82,199,131,108,105, 21, 45, 41, 62,194, +106, 35,202,214,156, 58, 64,219,109,197,214,215,117, 16,133, 4, 33, 76,165, 41,221,139,158,187,239, 20, 39,249,231,158,222,197, + 98, 85,150,234,120,225,208,108, 76, 16,230,109, 73,130, 38, 56,124, 4, 44,224, 44, 88,130,115, 95,183,127,119,111, 95,190,122, +248,149,148,234, 19,169,109, 30,106,230,254, 74,254,241,203, 39,172,188, 70,201,146, 96,178,241,100,193, 61,189,185, 93,147,183, +111,239, 25,177, 20, 1,140, 49,237,184,171,223,177,154,132,179, 14, 59,131,243, 7, 39, 97,106,133, 49,149, 5,251,221, 83,253, +117,142, 14,246,228,244, 5, 51,103, 50,213,129,189, 50, 66,155, 22, 25,186, 47, 71,135, 71,154,108,140, 73,247,219,234, 2,201, + 93,148,231,167, 45, 93,155, 57, 27, 17,148,133, 37,196, 60,101, 60, 16, 0, 11,134,198,180,152, 99,235, 32,214, 32, 65,237,183, + 58,125,240, 92, 32, 35,141, 92,235, 13,103,219, 15, 48, 83,222,231, 68, 21, 85, 40,157,118, 61, 89, 27,167, 83, 58,224, 2,100, +105,179,137, 99,227,139,104, 75,139,249, 80,125,196,146,206, 18, 6, 29, 25,251,139,243, 33,121, 66, 62,121,116, 69, 45, 1, 56, +126,180, 85,138,156, 8,137,248,142, 94,172,231,178, 84,150,244,114, 97,182,195, 33,243, 1,214, 52,225,166, 44,197, 96,128, 39, + 74,171,237,126, 43,218,211, 51, 61,103, 18,134,254,249,146, 76,148, 9,207, 9,237, 74, 44,172, 18,192,150,127,245,162, 47,135, + 91,186,215,201, 80,174,122, 19,115,226, 41, 67,229,179,253,172, 63, 95,210, 0, 7, 84,182, 59,141,162, 77,142,136,241,190,236, +215,193,172, 89,227,153, 74, 81,128, 73,253, 0, 80,164,158, 84,204,248, 35,235, 72, 18,102,132,107, 61, 84, 5,253,161, 42, 22, + 97,106, 81,126,226, 24,176, 56, 55,156, 10, 92, 41,201,132, 34,140, 28,132,133, 2,217,200, 89, 20,120,227, 96, 79,142,142, 76, +214, 13,198,185, 30, 26,125, 36,102, 88, 11,106,152,158,156,246,116,227, 34, 57,215,168, 11,217, 39,122,223, 40, 71,166,105, 84, + 28,176,197, 25,197,193,116, 41,139,206, 68,179,164, 33,137,240,223,122,111,159, 58,188,177, 99,220,193,232, 22, 46, 41,144,153, + 88, 20,168,191, 97, 14, 59, 79,177,145,132,179,166, 0,138,148, 16, 0,232,165,123,214,157,107, 68, 87,146, 23,186,193,173,241, +210,241,101,175, 4,114, 53,207,154, 43,178, 18, 65,128, 36, 68, 9,210,154,246,140,192, 17, 13, 78,231, 41,234, 79, 99,174,154, +120, 0,117,230, 7,181,148, 76, 52, 11,239,183,230,102, 92,151,160,109, 93,179, 10,114,169,153,244,127,250,232, 92,254,203,223, +188,161, 14,188,162,206,105, 68,170,217,166, 58,241, 3,221,204, 98, 78,157,128, 6, 35, 39,151, 99,246, 41,203, 0, 36,206,231, +166,111, 15, 39,158, 88, 73,137, 14, 3,165,105, 72,210,166,140,139,120,177, 10, 88, 2,199,218, 33,171,131, 1,236, 79,150, 84, + 20,170, 84, 66, 35, 73,192, 88, 89,224,177, 76,106,108,116, 98,127, 31, 78, 19, 2, 0,122, 9,215,154, 21, 37, 12,168,208, 59, + 92,169, 99,158, 72, 38, 94,200,151,143, 79,229,135, 95,171, 75, 57, 20, 70,136, 57, 31,104,109,113, 20,167,190,123,198,136,107, +181,128,248, 0, 10,236, 26, 77,246,122, 75, 50,188,193,184,151,213,208,174,151,115, 25,169,177, 4, 27,221, 91, 91, 5, 25, 28, + 21,164, 59,194, 60,126,154, 25, 19,130, 37,148,236,112, 57, 18,160,174,225, 4,213,112, 23,169, 69, 46,114,176,173, 7,122, 11, + 19, 10,137,124,250, 66, 29,252,217, 21, 63, 31,239,113,213,106, 74, 85, 13, 45,180, 3,218, 26,229, 54,187, 3,150, 16,145,253, +158, 34, 67,119, 78, 55, 98,159, 52,116, 12,113,102,180,208,231,190,127,251,166,174,217, 92, 30,188, 60,182, 81, 76,204,157, 66, +234, 52, 12, 45, 16, 10, 3, 35, 39, 65, 43,104,105,156,236, 8,128, 61,182, 55,150, 68,185,179, 90, 20, 89,255,223,227, 44,178, +101, 3, 32,157, 1,106, 27,193,240, 58,138, 94, 35,207,241,231, 24,233,202,248, 86, 45,128,204, 41,100, 84, 81,246,132,160, 4, +245,187, 87, 70,255,138,231,185,106,183,120,191, 80,110, 68, 64, 1, 38,171,144,168, 88,235,157,195, 35,224,243,241,204, 73,108, + 18,170, 48, 36,137, 67,209, 91,201, 63, 36,223, 63, 91, 13,174, 39, 15,209, 25,150,131,215,145, 27,115,138, 29,138, 60, 38,152, +212, 15,108, 28, 17,193, 62, 42, 23,179,133,141, 98,225, 30,160, 18, 2, 78,124,182,163,193, 38, 56,211,128, 69,173, 33,250,155, +195,217,210,164, 75,215, 9, 65,115, 64,145, 19, 12,168, 1, 55, 0, 67,177, 35,124,241,125, 43, 73,207, 64,133,233,111, 19, 32, + 24,247,108,196, 51,199,113,186,136,255,189, 90, 91,150, 19, 19, 20, 8,135, 59,101,128,138,172,231,198,222,134, 58,250, 1,223, +171, 86,200,202, 13,205,104,206, 59,231,250,103,161,163,136,245,101,164, 1, 68, 9,179,198,168, 54, 68, 1,141, 42, 42, 3, 1, + 2, 14, 13, 81, 22,137,101, 69,172, 67,173, 1,180, 21,158,227, 4,149,157,233, 66, 29, 84,135, 36, 58, 1, 41,113,211,220,147, + 57, 42, 5,250,247,135,227, 17,171, 82,208, 3,247,215, 54,111,204, 16,111, 1,213,176,200, 70,174, 76,181,196,141, 49,218,188, + 56, 24, 20, 67,226,145, 2, 71, 12, 99,218,237,105, 13,140,192,166, 7,158,120, 86,147, 32,237,187,156, 16,148,137,132,226,244, +244, 84, 14,118,247,100,182,246, 53,115,110,144,251, 31, 1,223,133, 6,164,251, 59,123, 26,136,191, 33,159,126,245, 72,239,190, + 81,190,130, 27,126,234, 56, 64,230,106,215, 95, 34,131,118,201,146,149,134,125, 71,220, 2, 75,130,185,240, 53,131, 27, 99,180, + 20,171, 8,173,156,226,156,254,222,222,246,129,148, 74, 27, 12,254, 67, 74,177, 8, 91,181,144,252,141,242, 8, 90, 13, 84,135, +182, 10,193,156,160, 0, 86,103,255,193,155,251,242,217,195, 99, 13,240, 49,205, 48, 99, 51, 46,134,131, 12,204, 38,193,193, 21, + 53,192,172,213,138,178, 85, 41, 50,184,192, 57, 67,101, 20, 84,203,160, 89, 69, 48,120,184,147,215,123, 62,226, 30,160, 10,200, +187, 28, 89, 85,119,187, 94, 38,142,134, 98, 94, 0,116,147, 58,117,201, 96,134,242,226,160,120, 5,173,119,156, 80,112,170,152, +139,233,136, 1,190, 28, 14, 81,141,203,147,234, 22, 32, 78, 4,219, 24,223, 99,112, 83, 44,137,227,213,230,247, 38,154,172,161, + 20,190, 90,175,220,180, 86, 66, 44, 9,248,228,191,253,238, 46, 81,237,224,180,199,125,193, 25,102, 21, 6,213, 2,142, 91,174, +141,147, 3,165,127,245, 61,155,234, 59, 46,213,119, 64,251,224,170, 51,226,185, 64,144,129,106, 44,170,138,176,113, 24, 79,196, +217, 97, 82,134,113,102, 4, 9, 43,151,153,179, 74,180,226,116, 14, 1,146,136,154, 57,123, 10,125,231,185,193,251, 43, 25,205, +222, 52, 75, 15,245, 7, 39,122,232,158,117,134,140, 0, 16, 89, 32, 74, 73,133, 54, 92, 79,109,115, 23, 37,161, 23, 2,186,216, +145, 94,252, 90,182, 33,111, 31, 52,104, 24,113,100,214,113,226,120,172, 45, 90, 69, 9,227,206, 97, 93,238,222,216,144,185,222, +138,231,231,125,150,233, 81,182, 24,168, 67,122,248,188,229, 52,119, 81, 55, 54, 13,113, 8, 61, 64, 96,165,221,234,203, 71,143, +123,114,251,205, 77,117, 36,233,215,217,123,164,155, 2,186,197,161, 94,172,173, 98, 74, 54, 74,105, 65, 37,124,174, 78, 15,186, +179,200, 90, 53,254,100,176, 65, 89, 72, 53,226,232,151, 95,244,209,159, 76,216, 51,132,228, 37,162,108,140,219, 37,122,136,247, + 54, 10,114, 84,203, 26,131,208,210,104, 86,145, 21,119,245, 61, 63,253,244, 82,246, 53, 51,185,208,117,217,170, 22, 56, 64, 15, +132, 34,178, 72, 0, 4,161, 19,156, 97,245, 66,164,130, 77, 4,237,106, 12, 21, 41,203,252, 0,168,192, 18,190,123,167,194, 64, +166, 61,176, 49,167,139,230, 72, 78, 34, 27,203, 32,208, 37, 48,176, 80,226,250,225,158,111,104, 83,184, 27,240,219,131,218,148, +170,116,112,218,107,176,229, 45,229,187,119,203,242,155,111, 87, 40,253, 26,163,116, 12,231,125,205,196,134,125, 88,187,222, 42, + 62, 11, 37,195,217,154,151, 28,120, 8,240,244, 67,164,224,125,125,254, 15, 31,117,229, 92,179,233, 88,159,119, 18,131,131, 96, +142, 70,133,140, 22,110,102, 21,223,167,255, 61,152,173,168,236,134, 10,207,237,173, 18,199, 6,163,154, 25,112, 4, 60,169,112, +196,113,191, 92, 54, 33,197, 35, 64, 84,155,171,172, 60, 63,155, 50, 48, 65,145,224,225,213, 72, 30, 95,140,228,159,127,112, 72, +240,224, 74,247, 31,250,196, 85, 13, 56,110,215, 50, 82, 87, 99,221,153,205,228,203,179,151,178,208,231,134,250,217,210, 73,152, +206,214, 70,143,137,106, 3, 40, 20, 81,250, 6,112,113, 60, 51,240,215,122,109,253,225,146,254, 62, 22,143,200, 85,189, 96,135, + 91, 27, 68,177,195, 49,161,164,206,114,165, 26, 91,160,205, 1, 76, 66,255, 15, 78, 50,159,113,179,177,160,100,165,147, 51,114, + 38, 48, 67,197,145,149, 3,141,241,202,103,208, 68,192,102, 16, 58,153,198,149,181, 63, 60, 42,199,211,168,176,141, 21, 27,147, + 27,254,141,242, 57, 8, 95, 64, 54, 2, 89, 87, 18,151,128,230,215,210, 99, 67, 74,235,249,203,103,243, 44,107, 47,255, 9, 96, +206,181,105,237, 76,160,191,158, 49,148,121,158,136,121,155, 53,103,102, 77,144,225,202,145,219,136,203,188,133,107,130, 74, 29, +241, 22, 43, 19, 43, 2,189, 50, 42, 16,232,229, 91, 0, 83,224,103, 98, 29, 25, 56, 6, 41, 35,203, 0,147,160,103,189,103, 96, +246,224,204,171, 69,148,106,243,186, 39, 99,146, 57, 97,125, 80, 1,193,158, 66,189, 10,115,235, 25,170,185,133, 92,167,129, 58, + 42,148,142,192, 39,143,158,232,108, 97, 36, 57,112, 30, 84,123,195,172,181,126,207,100, 2, 16,105, 72, 76,138,199,217,248,188, +126, 22,102,164,179, 54, 97, 80,202,209,129,143,244,185, 55,170, 69, 6,103,159, 63,121, 73,142,252,251,247, 14,212,112,135, 36, + 68, 90,172, 60, 58,106,148,213, 57, 11, 29, 67,100,102,205,115, 9,212,249,108,101,237, 51,156,167, 49,128,146, 40, 25, 79, 52, + 84,117,148,166,126,169,170,159,189,210,179,111,224,167, 44,180,182,213,137,225,110, 35,147,102, 53, 83,215, 99, 60, 2, 0,119, +170, 65, 3,104, 72,253,215,116,194,158,155, 58,120, 45, 14,100, 53, 23, 87,121,177, 74, 8,206, 32,144,240,139, 9,181,244,216, + 22, 88,195,117, 70,115, 58,135, 65,191, 71, 36,252, 70, 13, 14, 44,171,217,243,149,209, 94,119,186, 44,223,223,218,187, 41,111, +106,160,122,222,236,208,145,160,101,133,115, 0, 39,143,253, 0, 19, 33, 90, 53, 8, 68, 72,153,235, 27,209, 18, 91,198,161,157, +109, 27,253,142, 88,117, 28,143,134,124,126, 56, 23,159, 92, 19,186,254,229,154,212,107, 31,176,229, 1, 48,103, 64, 6, 79,103, +227,245, 44, 64, 57,240,104,119,155,153, 46,200, 92,114,104,181,122,168, 30,134,250,221, 35, 86, 39,112, 55, 96,138, 86,228, 50, + 48,146, 45,188,251,112, 22, 75,107,208,226,125, 64,197, 6,107, 11, 31,128,160, 23, 65, 78,179,219, 53,125, 3,117, 96, 83,170, +253,101, 94,227, 68, 16, 60,100,210, 70,128,132, 51,219, 25, 76,217,206,218, 84,103, 79,178, 47,216,214, 56, 32, 14,104,237, 48, + 1,104, 97,224, 92,227,187,200,213, 64,158,128, 21, 71, 32,241,231,219,154, 29, 3,179,131,150, 16,137,155, 32,156,131,128, 21, + 24, 1, 40,248,105,246,222,238,245,164,174,231, 14, 65,217,171,203,129,241,232,175,108,138, 44,142, 12, 25,143, 96, 28,109, 0, +187, 47, 86, 3, 75, 97,108,155, 21,110, 79,114,106,107, 14,119, 54,244,227, 91, 4,135,226,120, 34,145,242,202, 37,153,140, 80, + 17, 44,112, 44,148, 60, 12,160, 36, 38, 7,131,188,246,177,216, 72,180,211,195,103,207,206,229,230,173, 93, 26, 11,148,237,138, + 26,181,108,100, 35, 70,156,121, 93,156,134, 30,250, 77,141,102, 62,125,116, 73,133,178, 76, 96,241, 28, 50, 48,244, 62, 34, 55, + 83, 91, 84,131, 67,231,163,159,253, 55,159, 94,232,229,138,228,253,219, 13, 87,150, 52,169,199,235, 17,159, 84, 24,184,126, 7, + 74, 45,177,188,115,163,202,108,255, 85,115, 32, 39,205,177, 0,168, 58, 26, 45, 76,109, 9, 99,109,122,137, 59,122,169, 81, 90, +239,106,148, 95, 84,135,179,238, 14,101,182, 76,203,104,184,144, 13,125, 19,136,210, 80,122, 16,209,177,102,191,121,221, 60,148, +216, 66,140, 97, 76,150, 36, 37, 0, 0,134,209,190,158,145, 95, 60,106,115,206, 30,224, 42, 68, 85,119,118, 75,154, 65,150,165, + 94,202,208,105,129, 45, 11,128, 62, 40,100, 69, 81,207, 46,165,216,252,242,123, 7, 5, 57,172, 4,242,236,233,153,116,226, 80, +190,190,173,139, 13,164,157,151,161,243,101,230,204,190,163, 69,132,130,241, 30, 53,106, 24,153,248,249,151, 80,237, 25,105,102, + 49,230,225,255, 88,127, 61,154, 26,189, 45, 42, 11,181, 74,158,242,142,160,196,220, 44,101,137,168,223,221, 46,201,195,167, 29, +249,159,254,228, 51, 94, 6,182,229, 18,187, 64,149,180, 73, 25,194, 17, 39, 78, 63, 29, 96, 59,144, 28,160,108,131,178,127,188, + 52, 3,198, 32,201,183,192,204,179,241, 1,161,183, 79, 99,254, 59, 81,195,185, 54,230, 46, 16, 74, 0,252, 66,227,183,150,191, +251,226,156, 64,197,110,111, 66,212,233, 42,178, 54, 11, 21,242,244,179,182, 43, 41,249,205,187, 53, 57,208,103,205,229,245,247, +212,121,215, 3, 35, 68, 33,127,129, 23,154, 48, 59, 64, 70,224,157, 7, 51,144, 26,207,230,149,174,107,197, 42, 8, 0,215, 64, + 62,118,229,192,146, 24, 49,153,106,166,132,249,121,148,250, 30,159,159, 74, 91,159, 47,201, 84,212,120, 78,104,252, 81,178,203, +133, 86,174,243,215,160,188, 44,234, 5,108,200,177,102, 46,192, 81,144,209,141,122,228,158,126, 78,149, 17, 63,163,238, 12,232, +140, 55,245,140,170,113,211,136, 31,125, 42,155,107, 13,153,117,176,247,237,136,125, 48,195,140,247,160,254,120,108,227,139,200, + 26,135,116,232,145,107, 99,120,172, 0, 92, 27, 22, 2,222, 32, 0,195, 94,100, 64,132,240,100, 62,163, 17,186,158,245,230,119, +173,141,151, 30, 61,109,244, 80,225, 68, 22,139,197,235, 12,253, 58,131,134, 3, 69, 9, 30, 70,149,200, 88,150,111, 67,167,196, + 38, 36, 19, 73,156,248, 12, 28,175,184, 50,252,106,109, 65,202,250,218,131, 59,238,118,246,206, 99,227,180,199, 26, 53, 81,110, + 6,184, 43,147,162, 81, 50,164,255, 53,193,142,129,195,174,217,236,112,135, 64,249,153,139, 82,166, 36, 21, 67,124,208,132,108, + 72,187, 12,177, 20,125, 4,156,253, 41, 18,133,196, 90, 66,195,200,128, 89, 32,168, 42,229,209,159,196, 25,202, 74,175,103, 40, +123,180, 10,200,205, 14, 49, 38,205,214, 49,191, 12, 20,181, 5, 46,107,142,219, 22, 75, 69,169,151,245,126,106,160, 56, 70,169, + 62,103, 10,104,232,167,162, 7,140, 76, 7,142, 13,198, 20, 72,108,217, 4, 39,121, 79,174, 52,243,106,108,237,115,156,178,167, +191, 70,240,142, 25,112,136,170, 92,131,227,192,149, 63, 27,155,246, 0, 42, 40,112, 36, 41,188,147, 79,201, 57,102, 69, 16, 16, +210,215, 34, 55, 6,170, 95, 97,206,227,116, 13, 70,225, 24, 52, 1,192,137, 51,227,216,160, 97, 79, 67,252, 58,254,245,250,227, +172,176,236,140, 96, 43,176, 41, 32, 10, 28,133,215, 10,127, 38,237, 11, 12, 5,106,112, 64,191, 3, 88,136,210,106, 49,159,229, +148, 0,158, 24,198,190, 68,140, 69,219,170,121,186,184,120,190,103,207,159,200,155,183, 14,229,131,247, 62,144,226,211, 7,180, + 49, 43,167,251, 80,133,216, 11,170, 55, 18,144,247,160,168,182, 15,225, 61,222,133, 85,183,192,120, 15,144,217, 35,176, 42, 21, +210, 4,118, 33, 57,195,249, 0,219, 38, 90, 85, 32, 90, 97, 27,112,237,203,171,171,161,156,159, 62,116, 12,242, 30,251,239, 49, +177, 43, 33,239,109,185, 90,102,182,143,190,244, 69,111, 46, 71, 55,111,200,169, 6, 27, 9, 94,216,179, 41, 26, 60, 68, 99,163, +206,170,203, 97,189,192,207,128, 12,247,213,220,232, 91, 88,233,208, 37,171,171, 77,204, 23, 43,114,213,237,179,106, 68, 27,132, + 89,251, 48,164,252, 53, 90, 63,192, 59, 0, 20,187,165,159,135,159,219,213,123, 94,202, 5,188,111,168, 68,111, 84, 51,114,229, +129, 28, 9,114,182, 25,167,190,103,129,113,187, 55,149,138,218,220, 40,241,152,120,164, 83, 83,181,171, 89,142,151, 53, 52,232, + 30, 44, 83,100,187,131,200, 14, 40,177,161,248, 25, 79,117,223,245,179,219,221, 46,207,110, 53,103,163,212, 69,253,236, 17,250, +223,176, 99, 4,240,121,108,183,160,221, 92, 76,219,184, 54,198,246,200,226, 56,153,202,102,163,196, 30, 59,110,244,193, 78, 67, +147,169,142,244,251,166,130,151,202,172,120,102,215,235, 42,103,231, 81,120,196, 94,165,201,235, 98, 20,207, 72, 84, 2,177,113, +202,240,219,183, 50,242, 98, 52,224, 1,199,124,226, 54, 80,133,106,218,112, 56, 89, 46,212,127,191,127,160,153,207,122, 91,254, + 28, 52,156,177,113,168,147, 75, 93, 55,171,168, 78,240,238,225,182,209,165, 58,131,134,236,232,162,191,146,114,123, 33,239, 28, +148,169,196,196, 75,159, 9, 89, 38, 38,112, 5, 78, 6,217,177,110, 78,196,104, 62, 37,227,110, 79,254,236,103,167, 52, 66, 41, +207,162,219, 0, 7, 82, 15, 26,184,195,145, 93,223,222,169,200,126, 35,146,230,197, 64,166,197,156,188,106,143,229,121,210,227, +188, 43,110,232, 69,103, 42, 39,154,249, 35, 3, 71,111, 28,165,104,160,202,209,247, 54,218, 77,115,246, 95,191,189, 41,239,236, +230,100,184, 76,228, 69,123, 42,111,239, 20,229,168,154,230,216,222,217, 88, 15, 84, 47, 16, 13, 43,248, 25,185,140,144, 96, 39, + 38,232,205,151,155, 85,148,248,242,114,118, 57,148, 66,108, 78, 18,250,233,204,131,116,129,241, 44,109,136,140,164, 50, 44,151, +195,193,231,243, 41,121,120, 57,150,229,241, 90, 46,218, 19,182, 47,192, 25,253,252,124,206,114,251,127,253,111,222,145,239,188, +179, 73, 14,117, 24, 71, 0,123,172, 36, 38,204,194, 43,234,180,255,207, 31, 61,144, 46,102,116,211, 57,130,179,212,210,240,194, + 38,174,159, 68, 68, 62, 74,153, 24,197, 27, 44, 36,201,249, 92, 63,168, 81, 37,112, 18,240,254,145,165,106,200,200, 25,224,144, +130, 72,141,139,102,235,195,169,101, 31,195, 69, 36,207, 53,226,237,234,154, 53,234, 57,217,221, 44,106,208, 83,148,225, 96, 36, + 25,223, 42,137, 20,233, 64,207, 28,180,154,250,204,141,172,207,131, 30,106, 36, 30, 99,174,146,242,161,115,151,197, 90,216,201, +226, 38,184, 9,244,144,159,158,119,229, 92,247,176,179,157, 99,139, 34,163,217,220, 61,221, 3, 0,105,154,250,189, 64,144,222, +110,228, 36, 10,115,242, 31,126,246, 64, 62,124,252, 84,254,224,183,191, 39,125,125,206,157, 58,156,224,136,109,130,203, 78,159, +104, 80, 24, 30,176, 27, 94,232,229, 90, 57, 18, 7,180, 75, 88,246, 86, 35, 83,211,104,183,144, 91,169,227, 92,200, 86,173, 46, + 39,173, 22, 1, 46, 91,181, 10,179, 22, 82,154,138, 33,207, 77, 15, 60,122,221,183,158, 46, 44, 3, 3,154, 23,159,139, 57,244, +107, 89,223,120, 29,189, 6, 33,226,223, 43,114, 3, 24,253, 42,223, 25,253,193,196,230,219,209, 6, 8, 72,247, 27, 17, 13,206, +177, 27,100, 30,234,104, 18,202,102, 70, 12, 58,178,169, 52,141, 62,126, 29,234,157, 65,191,140,207,137, 25,217,165,205, 41,249, +158,205,235,218,232,154,105,134, 35, 51,225, 12, 61,152,228,156,140,104,114, 77,202,148, 68,110,124,200,119, 10, 86, 22,196, 32, + 67, 1, 11,220,118,221, 38, 38,108, 92,212,103, 70,180,114,216,129, 48,180,242, 48,148, 11,151, 36,159, 49,214, 64,156, 75, 19, +112,177, 22,220, 64, 3,249, 90,209, 99,112,194,121, 89, 63,224,108, 49,230,109,171,144, 38, 69,119, 19,217,127, 38, 54, 14,109, +226,114,210,226, 4,222,173, 79,184, 54,178,145,156,102,127, 83, 61,199, 25,178,163, 4,156, 2, 0,141,241,209,126,133, 88, 28, +148, 27,163, 56,195,241, 38,140, 79,166,244, 30,238,109, 86,104, 12,163,148,137, 43,161,253,130, 32,241, 4, 76,130,165, 88,142, +246,170,250, 28,161,126,206, 4,108, 19,252, 30, 47, 54,182, 51, 26,114,117,114,148, 5,142,141,205, 18, 37, 95,216, 44, 6,235, + 80,154,116,180,191,104,187, 76,198,115,142,184,142,168,218,146, 16,232, 57, 30,142,157,242,156, 37, 50, 21,181,141, 43,104, 30, + 68,222,107, 78,127, 82,228, 46, 76,124, 7, 14, 8,235,189, 32,162,126, 65,204, 7,241, 58,145,129,107, 81,153, 25, 99,190, 28, +163,137,190,169,172, 1,219,179,138,197,137,248,172,100,216,107, 74,181,182, 69, 6, 57, 56,155, 87,103, 77,249,234,209, 99,121, +235,141,187,242,171, 47, 30,202,175, 30, 60,118, 19, 35, 78, 66,217, 51, 18, 28, 4, 61,158, 87, 52,230, 60,119, 38, 35, 10, 67, + 90, 43,204,115,186, 16, 70, 95, 44,220, 55, 11,124, 83,154, 36, 68, 12, 44, 75,165,146,236,239,223, 98, 5,192,115,194, 71,171, +165,205,144,227, 92, 98,220,113,119,179,206,214,219,116, 58,148, 77,189,131,115, 93,179,219, 55, 15,200,136, 71, 22, 59,140,195, + 65,131, 30,119, 78,247,225, 37,112, 69, 8, 12,208,114,228,247,175, 88, 93,193, 36, 7,138, 40, 0,159, 34,176, 68,155, 11, 76, +143,176,125, 8,232,208,202, 1, 47, 3,238, 57,219, 36,108,215,235,239, 99, 98,196,143, 88,177, 80,179,230, 42, 69, 41, 10,126, +129,228,229, 12,228, 78, 32, 71, 11, 13, 97,158, 87,103,252,224,229, 21, 3, 89,140, 24, 99,252, 44,209,247,185,117,176, 43,131, +110,194, 42,167, 85, 91,124, 91, 27,223,118,118, 65,145,163,149,236, 53,202, 82, 41,231,101, 49,141, 89, 9,129,195,196,179,226, +158,173, 92, 48,159,224, 76,233, 33, 41,107,208,212,166, 2, 97, 76,170, 36, 48,111,238,214, 51,154,184,174,228,254,221,125,253, +123, 23,242,226, 85,155,123,196,115, 97, 69,130,215,147, 93, 25,205,126,231, 56, 15, 43,211, 26, 1,109,110,136, 73,171,111,220, +217, 22,239,114, 73, 93,219, 18,184,117,211, 66,121, 85,139,220, 2,114,110, 83,165, 77, 95, 46,149, 24,149, 37,168, 46,175, 57, +130, 1,112, 2,173, 30,184,204, 81, 18,129,225, 3,172, 31,209, 67,111,172, 81, 57,198, 67,145,167,235, 70, 4,145,193,244, 67, +117, 98, 21,141,178,193, 93, 62, 83, 99,142,254, 27,178,241,186,102,106,136,132,113,106,115, 40,127,114, 4,199, 55, 89,204,133, + 47,191,122,102, 47,216, 81, 39,253,236,106,234,120,186, 87,100, 2,218,174,230,100,167,150, 51,222,118,253, 51,108, 16,122, 35, + 27,165,130,220,122,127, 91,254,246,243,166,252,229,151,109,253, 92,161, 58,218,118, 37, 39, 55, 55, 52, 3,190, 28,145,196, 0, +243,142,159, 55, 1,250,153,201,101,127, 70,212,100,115,234,201,103,207, 71,242,254,126, 94,126,241,114,202, 82, 58,140, 47, 8, + 20, 48,211,216,138, 80,170, 14,229,103,175,134,166,112,135, 50,123, 16,208,240,145, 14, 20, 82,153,106, 40,160,100, 87,175, 21, +229,205,205,156,220,218,205,202,255,254, 23, 51,121,121, 53,165, 54, 53, 56,200, 49,222,135,131, 11, 7,186,192, 65, 7,240, 76, +220,236, 22,130, 31, 93,143,173, 74, 65,126,235,253, 67,249,191,126,252,144,146,177,216, 7,160,206,217,159,129, 83, 73,252,215, +217,192,105,111, 41,127,254, 96, 70,192, 29,122,225,133,236, 76, 13,140,111,160, 29,253,200,114, 10,147, 25, 78,253, 13,152,138, +148,141,107,224, 80,128, 36, 33,196,236,180, 26,232,163,221,178, 6, 61, 34, 71,219,101,205,136, 99,233,165, 9, 86, 32,208,144, +213, 23,189,112, 25, 10,138,232, 62,104,100, 11, 20,126, 5, 85,148,120, 38,171, 33,196, 70, 82,220,191,238,213,149, 94, 46,141, + 56, 53,210,126,245,114, 65,158,247,166, 30, 92,240, 34,119, 70, 21,153, 1, 97,155, 89,202,225,110,157,231, 12,241, 70, 67, 35, +230, 79,159,190,146,255,227, 39, 95,201, 89,179,203, 11,126,218,236,147,156, 39,165,103,198, 67,143, 91, 47,209,112, 52, 38,106, + 29, 0,163,227,243,115,147,173, 5,221,175, 99,209,131, 81,192, 89, 64, 36, 11, 50, 25, 80,189,126,249,252, 37,199,182, 0, 0, + 76,115, 46,124,205,159, 67, 32, 2,222, 5, 2, 43, 93,153,252, 26,228,150, 39,240,108,206,242, 28, 5, 88,120, 71, 2, 61, 95, +101,150, 51,177, 87,232,215,178,151,141, 80, 26, 21, 18,156,219,200, 62, 3,103, 2,206, 26,119, 4,119, 29, 66, 43, 54, 6, 55, +225,153, 90,187, 64, 34, 69, 1, 24,235,221, 81,177, 10, 4, 42,227,133, 83,111, 91,154, 84, 46,176, 35, 65,240,107, 1, 18,142, + 37,197, 12, 16, 80,190,135, 83, 69,166, 9,106,219, 90,177,104,179,224, 80, 19, 3,224, 71,140,108,167,166,207,141, 7,155, 18, +144,183,226,136, 24,122,167,232, 89, 26, 82,222,112, 52, 40,203,194,192, 17, 1, 31,173,152,117, 21,179, 33,239, 63,202,223, 11, + 87, 66,237, 3,147,161, 63,251,213,120,102,189,114, 24,245,162,102, 59,145,209, 25,175,146,136, 32,172, 21, 20,181,214,118,230, + 73,179,155,182,108,209,119,202,132, 0, 50,173,245,115,231,228,225, 79,140,212, 7,229,127,117,240,101,205,184,218,253,185,227, +112,247,184,206,227,233,146,136,121,200, 51, 99, 47,129,215, 65,195,220, 64,157, 30, 91, 37,168,146, 33, 16, 27,133, 69, 41, 85, +106,210,210,228, 96, 14, 16, 83, 58,199, 36,197,198,247,212, 17,165, 86,122, 78,243, 20,226, 32,240, 75,207, 26,218, 95, 49,171, + 51,192,253,232,103,162, 69, 39,226, 64,111,190, 37, 56,105,219,243,241,114,206, 86, 1,214, 31,116,217, 24,109, 77,163, 29,129, +192,123,101, 44,151,104,101,195, 54, 96, 18, 3, 12,132, 12,202, 29, 70,131, 66, 70, 4,101,166,249,103,216,219, 12,122,171, 24, +249,212,189, 57,189,234,202,104, 48,225, 30,226, 28,110,248, 85,169,213, 26,236,229, 66,130,212,143, 23,172, 92, 60,215,108, 29, +192,202,163,195,155,242,242,244, 21,233, 83, 33, 82,130, 51, 66, 54, 73,189,239,208,122,120,226,206, 30, 81,228,200, 71, 60, 83, + 63,148,196, 80,226, 8, 4, 0,124, 67,124, 10, 59,134,246, 34,206, 56,117, 37,192,158,153,201,115, 34,101,187,222,208,204,184, +170,239,150,166,132,114, 46,103,227,163, 24, 89,198,120, 52,132,149,230,139, 9, 63,179,219,214, 96,253,198,129,188,127,255, 29, +249,223,254,159, 63,166,188,108, 5, 66, 69,122,166, 80,161, 33,157, 46,108, 60,193,101, 66, 31,194,241,231,245,148,147, 21,224, + 84,184, 38,105, 9, 2, 27,247, 34, 48, 89,207, 51,206, 1,167,113,116,239,207, 59, 77, 42,225,197,250,247, 52, 51,208,115, 51, +163,143,139,163,129, 84,138, 41,151,213, 38,178,189, 89, 96, 59, 21,127,142,115, 14,105, 97,140,188,129,131,226,159,125,227, 77, +249,252,233, 41, 71,222, 30,159, 52, 53,224,171, 48,112,201,208, 73, 25,206,106, 50,157,189,190,175,184,159,231,154,100,246,198, +107,217, 85, 95,116,176,183,197,170, 5,146, 6,115,198,198,124, 23,145,241, 49, 77, 81,151, 90,165,200,128,224,178, 59,150,247, +239,212, 56, 78,187,187,219,144,151,154,152,238,168,127,218, 80, 59, 56, 80, 67,127,124,182,230, 30, 33,249, 64,133,210,227,184, +169,207,179, 52,157,172,141, 44, 9, 65, 39, 90,104,187,239, 28,201,243,241,169, 46,208,146,145, 69,115, 6, 9, 59, 95, 74, 97, + 36, 85,100, 95,232,103,205,151, 4, 14,196,142, 28,198, 75,124, 87,102,212,200,169, 59,209,172,105,198,168, 60,185,102, 44,195, + 12,164, 94,150,131, 70, 94,254,253,183,203,106,160, 81, 40, 72, 89, 89, 16,148,126,208, 19, 14, 18, 42,164,129,122, 20,253,129, +201, 42, 98,148,152, 71, 25,121,237,187,160, 1, 57,254,154,189,241,233, 52,145,159, 61,235,171, 83, 44,203,238, 78, 77,238, 30, +110,144, 35,247,227,103, 29,249,111,255,240,109,217,212,141,242,170, 41, 89,192,249, 58, 42,205,172, 26, 1, 31,253, 94, 61,144, +191,122,218, 97,153,176, 24, 90,239,231,231,207, 7,228, 22, 7, 55, 49,230, 17,177,169,136,202,193,213,113,166,209, 34,144,231, +208, 93,111,163,228, 63,240, 89,198, 98, 4,238,155, 6,248,151, 23,112,154, 41,102,185,216, 36, 48,213,101,160,110,149,179,160, + 38, 15, 41, 79,176,107,165,205, 65,252,226,193, 21, 75,238,232,223,125,117, 60,164, 30,122,118, 98,165, 71,204, 96,254,244,139, + 43,249,141,119, 54, 52,154, 77, 91,153,220,101,137, 72,234,230,154,141,204,213,240,254,240,107,135,242,227, 79, 79, 57,183, 15, +227,129,192,235, 26,152, 5, 7, 68,154, 69, 53, 70,179, 32, 43,207, 58,214,147,197, 97, 58,191,184,146,251,187, 25,217,216,220, +150,147,238,138,229,121, 36, 64, 37,125,214,127,246, 1, 56,172, 53,216,194, 92,165,183,178, 64, 77, 23,188,176,145,147,227,129, + 6, 47,167, 99,102,188,185,192,104, 59, 65, 61,139, 50, 54, 48, 14,148, 76, 68, 38,166, 79,112, 12,212,188,222,254,195, 78, 73, +110,236,131,218, 50,146, 22,212,249,244,185,193, 46,184,183,149,211,139, 71,244,163, 68, 96,244, 74,217, 72, 18,160, 91,199,221, +153, 58,234, 44, 25,167,142, 91, 99,206,128,158,235,159,253,223, 63,254, 92,131,167,149,188,121,116,160, 78,176, 68, 7, 48, 79, +202, 26,225,230,101,208,239,200,243,211, 33,199,204,144,113,183, 53, 99, 97,121,152,188,221,145,101,155,212, 44, 95,203,102,165, + 42, 91,141, 6, 13,157,215,237,168, 51, 47, 17,112, 6,100,238, 84, 13, 49, 68,101, 6,154, 17,193,193,153, 74,155, 56, 48, 10, + 64,115, 86,222, 67, 89, 20,151, 47, 74,140, 77, 14,180,162,104, 57,161,127, 15,227, 11,112, 27, 28, 71,206,113,139, 79, 41,211, +104,178,191, 75,167, 68,133,123, 1,178, 30, 56,116,252,204,112, 58, 49,196,124,108,189,119,106, 29, 92,207,174,187,241,155,208, + 55, 77,110, 0,102, 76,186,213, 12,136, 41,217, 25, 95,130, 24, 53, 62,207, 12,202,244, 4,233,233,231,111,234,247, 80,126,114, + 97,202, 97,212,156,158, 79,121, 78, 16, 76,192, 1,238,171, 49,254,222, 27,106, 3,174,154,242,224,228,202,196, 40, 2,143,189, +242,208, 55,206,137,213,210, 20,228,214, 68,243,123,164,119,134,161, 5,128, 13,253,222,217,108, 65,135,239,179,140,190,210,253, +201, 88,223, 15, 85,133,196,231,184, 29,149, 8,171,150,149,195, 33, 33,120,237,245,250,106,228, 70,226, 72, 41,232, 4,166,203, +132, 66, 62, 1, 74,163,177,174,171, 58,164,128, 99,135,234, 52,103,106,176,210, 30,197,122,240,189, 5, 13, 82,144, 65,130,107, +158,204,137,234, 68, 15,183, 27,108,171,224, 86,160,189, 7,231,115,124,118,165, 6,190, 74,195, 89, 92,105,160,163,246,224, 92, +191, 27,194, 60, 20,140, 66, 43, 49,155, 98,249, 22,227, 98,227,225, 72, 50,234,140, 60, 76, 98,128, 17, 30,153,163, 62,203,124, +222,103,123,102,238,217,249, 0, 98,136,193, 55,199,213,144,121,251,166,203, 64,156,129, 16,240,228,167,203,178,242,134, 98,243, + 2,194,125,192,222, 32,112,102, 27, 38,116,109, 27,176, 8,102, 50,238, 12,196,220,111, 60, 75, 33, 87,226, 92, 55,208,223,224, +115,192,189, 65,233, 26,251,222,211,223,107,247,186,178,183,179, 79, 22, 79,128,130,129,239,129,245,120,250,236,137,108, 54, 54, +228,251, 31,220,151,209,176, 75, 9, 83,102,232,249,148,171,234, 36, 2, 54, 81, 32,211, 65, 10,116,221, 78, 11, 83,198, 85,193, +170, 27, 2,208,172, 1,109,171,197, 28,167,151,150,145, 77, 82,160, 36,142,201,147,122,163,166,182,167,194, 94,245,108,218, 33, + 56, 56, 59, 75,113, 42,103,190, 90, 48,112,237, 15,103, 4,163,213, 53,160,106,118, 58,108, 19,188,121, 36,164, 83, 21,194,122, +244,103,212,239, 64, 64, 12,237,162, 70, 57,203,145,185,157,106, 40,239,223,220,151,203,161, 6, 73,139,152, 65, 39,236, 96, 49, +107, 56,167,229,218,248, 29,192,139, 64,143, 1, 93, 8,112, 53,128, 1, 82,127, 31,193,126, 52,235,114,210, 0, 9,217,209,118, + 81,142, 47,187,114,222, 50, 90,112,208,197,162,231, 95,209,100,242, 18,206, 88,207, 81, 38,181,100, 16, 8,103,249,242,188, 67, +159,196,233, 15, 4,208, 64,171, 67,208, 5, 26,237,122,206, 75, 26,140, 16,112,152, 88,101,144,140,139,222, 82,253,166, 39, 79, +213,198,103,243, 89, 77, 20,102,188, 83,160, 25,111,246, 38,132, 21, 14,103,134,190, 7,230, 68,136,207, 89,177,130,240,244,248, + 88,126,247,123,111,113,162,226, 74,125,197,163, 23, 45, 13,218, 42,178,240,198,108,153,173, 29,153, 16, 2,122, 88, 93,128,248, +172,226,106,224, 63, 84,185,112,103,195, 16,169,107,108,228, 7, 0, 45, 33, 3,233, 47,192, 20, 20,242,225, 96,252, 49, 90, 2, + 34, 13,223,209,164,174, 92, 89, 15,133,166,208, 51,167, 98,180,202,110,102, 60,177,242, 17, 74,141, 80,221,194, 67, 68,235,216, +233, 44, 27,241,202,216,247, 13,213,136,249,201,149, 71,138, 84,104,143,103, 32,238,154, 18, 2,175, 56,211,137, 93, 7, 18, 89, + 15,236,191,255,157,187,242,222,253, 77,241,212,129,175,212,217,188, 56,109,203, 71,143,141,123,119,210,215,195, 20, 68,154,205, + 13,153, 45,182, 53,250,234,158,173,228,209,201,144, 34, 48,159,104, 64,176, 36,194, 58,162, 38, 60, 20,116,126,245, 88,141,139, +126, 7,144,245,147,217,218,141, 4,217,164,220,173,189,130,188,115,179,194,217,236,171, 97, 4,177, 41,117, 54, 1, 91, 3, 64, +244,254,240,251,135,178,198,184, 7, 64, 63,122,145, 79, 94,244, 52,178, 42,200,211,115, 53,162,203,169,124,239,187,121, 73, 66, +172, 75, 68,145,135,145, 94, 64, 40,158,109,233,119,255,243,111, 31,202, 23, 47,123,242,226,114,202, 44,181,160,139,124,222, 26, +200, 95,252,195,177,252, 23,223,185,193, 62, 37,122, 95,152,133,159,171,129, 71,208,209, 28, 78,104, 4,182, 42,161,254,189, 1, +157, 11, 28, 70,130,108,105,109, 37,245, 5, 81,154,101,142, 23,205, 22, 83,163, 60, 5,216, 66, 47, 81, 42, 72,201,173,122, 34, + 95,158,205,101,230, 91, 48,144,215,253,253,171,143, 94,200,119,222,216,148,157, 90,150, 7, 31,170,104,168,141, 44, 23, 30,199, +242,238, 28,132,108, 19,128, 28,168,167,193,199, 79,126,121,202,231, 0, 70,129, 61,102,253, 14, 4, 52, 95, 63, 44,200, 13,117, +218, 91, 37, 53,117,171,177,204, 70, 0, 14,234, 1,212,131,157,165,209,211, 95,107, 84,139,222, 32,140,109,162,251, 0,154,216, + 25,100, 58, 75, 25, 78, 67,192, 48,222,127,243,150,252,229, 71,159,201,147,135, 15,228, 7,111,191, 45,159,158,234,218, 45, 94, +201, 85, 95,215, 79,141, 20,140, 67, 70, 86, 4,151,221,216,222,214,189, 3, 42,214, 72,133, 80,134, 2, 11, 23, 46, 31,179, 95, + 53, 0, 0,189,229,242, 38,171, 26,114,110,116, 87,202, 32,175,168,213,105,200,142,159, 92,154,176, 8, 29,171, 83,142, 74,155, +209,128,145, 71, 96,128, 44, 21, 35,114, 38,236, 97,115,250, 32,164, 65,230,141,225,146,122,181, 98,253,206,209,200,178,113,128, + 77,139, 17, 63,139, 37,201,200,241,181,235, 63,232,159, 3,255, 0, 71, 71,142, 67,142, 66,153, 20,101,224, 20,211, 88, 65, 9, +172,100, 59,113,148,178, 0,146, 69,174, 37, 16,248,215, 90,216, 30, 13,201,181, 83, 12, 66,155, 71, 7,221,108,189, 92,102, 31, + 31,243,231, 36,200,224,168,160,245, 70,141, 41,216,170, 2,125, 61,251, 47,154, 61, 57,220,216,228,216,234, 89,111,164,239, 49, +209,224, 58, 77, 36,250, 42,178, 17,156,245,116, 73,135, 13, 7,135, 62, 30, 0, 73,224,103, 71,208, 63, 5,119, 66,224,179, 26, +129, 18,234, 28,129,222, 74,127,102, 60,118,163, 70,194, 12, 17,165,198, 14,196, 44,116,143, 64,187,218,105, 93, 80,161,203,116, +229, 77, 84, 6,217,112,127,145, 16,219, 3,123,130,128,105,171, 94,144,179,102,155,129, 3, 4,206,224,216,225, 92, 16, 64, 93, + 99, 19,166, 4,158, 5,228,168,159,118,135, 44, 81, 39, 65,138, 42, 93,104, 33,156, 53,175,168, 99, 29,120,154, 69,109,111,233, + 63,219,242,248,233, 75,105,119,122,164, 70,166,158,130,205,122,178, 42, 4, 83,206,249,254,216,145, 99,121, 8, 40,192, 89, 44, + 68,124, 99,140, 47,246,141, 83,222, 90, 37, 0,156, 26,142, 34,142,140,162,153, 21, 5,204,234,187, 49, 64, 86, 14, 18,195, 59, + 0,233, 77, 33, 16, 16,126, 97,140, 11,207,192,185,235,136,147, 16, 8,252,224,176,151, 41, 0, 75,115, 82,208,224,164, 94,169, + 27,210,155,170, 96,198,184, 9,198, 67, 4,155, 41,189,247,192,110,224,222,215, 27,219, 18, 70, 96,205, 75, 73,109,235,150, 28, +159, 95,169,125,185, 98,192, 0,242, 85,216, 98,238,137,126,192, 86,173, 36, 63, 0, 89, 15,202,183,100, 79, 19, 38, 25,184, 43, +121,170, 41, 10, 29, 25,233,100,197, 48, 4,164, 6,231, 4,192, 90,206,207, 94,240,247,189, 84, 69,158,191,124,174,239, 54,215, +224,189, 98,189,223,165,141, 17,130, 22,188,176,183, 65, 52, 56,152, 72,113, 71, 48,210,250,205,119,223,148, 14,164, 78,211, 41, +150,240,241, 76,125,253,217, 11, 13,242, 1,242,156,169, 67,236, 77, 34,170,105,150, 11,158,222,225, 25,127, 14,193, 52,206,122, + 38,136, 25, 32,129,204, 5,193, 72,127, 50,147,225,100, 66,162,170,183,239,221, 22, 47,154,202,109, 77, 2,175,134,107, 77,204, +230, 44,219,195, 87, 93,180,186,172,110,220, 57,104, 80,156, 8,108,144,247,110, 52,244, 78,166,229,233,171, 54,219, 68, 76, 76, +213,102,221, 62,168,203,121,179,171, 1,225, 68, 14,118,170, 4,131,162,122,132,160, 21,125,244, 98,161,200,117, 32,153,144, 6, +202,133, 84,158,247, 3, 78,188, 15,226, 32, 96, 80, 64,214,101, 92,181, 76,226, 16, 60,225,222, 98,236,120,185, 54,192,104,180, + 4,201, 84, 74,126,244,209, 67,121,251,104, 75,190,173,123,114,115,231,158, 60, 84,199,254,242,124,110,163,223, 24,131, 67, 59, + 15, 88, 30,207, 24, 88,215, 28, 23,181,169, 21, 4, 68,105,226,100,194,152,200, 84,150, 49,112, 80, 57,230,129,210,214, 66,141, +105, 66,117, 46,100,211,233,192,105,241,190,134,140, 9,251, 25, 44, 65,197, 54,144, 79, 70, 55,131,227,232,130,163,204, 6,126, +227,144,134, 31, 7,253,114,162,135, 96,176, 96,127, 8,125,173, 11, 93,168,103, 23,200, 90,151, 28, 41, 0,130, 19, 82,175,232, +231, 47,192,158, 6, 56,129,103, 66,101,165, 84, 66,112, 20,244, 98,167, 26, 93,118,155,154, 85,193, 9,220,168, 73,216, 91, 72, + 71, 23,237,102, 33, 32,139,217,127,252,170, 45,127,249,203, 51, 25,205, 13, 28, 6, 3, 80, 82,103,165,190,135,151, 21,194, 48, +163,113, 44, 47,213,193,213,106, 57, 41,105,132,221, 40,103, 88,150, 73,133, 22,209,238,109,228,165,154,207, 82,252,131, 68, 21, + 40, 95,121, 22,172,160,140, 89,216, 77,203, 12,191,183,136,232,188,126,245, 98, 40,223,215,133,255, 76,157,196,165, 70,130, 63, +248, 78,131, 66, 42, 28,175, 91,130,196, 38,150,169, 26,134,122, 35,148,173, 2,110,248,130,132, 37,200,118,230,115, 11, 96,126, +254,213, 90, 29,175,199,222, 10,103,148,213, 25, 3, 71, 0, 99,218, 26, 89, 31,119, 50,159, 80, 24, 38, 2,253,238, 10,142,204, +115,253, 93, 83, 91,106,104,100, 7,185, 77, 68,226, 9, 17,154, 75,206,237,223,219,173,200,118, 41, 37,223,191, 83, 98,134, 14, +131,236, 69, 75,249,201, 23, 45,205, 90,166,250,174, 25,121,126, 49,150, 93,144,220,212,242, 12,170,190,165, 81, 56, 15, 99,180, +226, 51,165,101, 67, 94, 28, 55, 29, 89,133,239, 52,222,133, 64,148, 45, 93,191,148, 30,218, 76,162,217, 36,100,120, 61, 61,180, +229,138,228,183, 26, 82,214,236,176, 11, 53, 61,125,159,197,122, 66,231, 81,217,170,106,164, 62,103,192,134, 42, 11,200, 38, 80, +198,254, 79, 31,254,131,252,244,147, 71,242, 63,254,231,191, 37, 47,175,150,178,187,171, 89,253,168,193, 86, 3,232, 70,123,237, + 38,201,101, 48,171, 59,132,214, 49,180,151, 29,152,140,239, 12,152, 34, 24,193,162,196, 88,220,244,159, 78,127, 32,185,237, 28, + 51, 27,100,249,112,248,221, 94, 79, 29,222, 80, 51,149, 30, 9, 31,216,198,240, 76,150,212, 4, 20, 44, 64, 13, 66, 35, 88, 33, +235, 27, 71,226, 82, 36, 97,169, 0,100, 21,248,175,251,164, 53,104,121,235, 65,133, 0, 11,126,174,166,134,134,153,190,174,127, +214, 79,211,248,162,196,138,125, 5, 15, 55,155, 74,209,202,209,157, 26,135, 66,228, 36,115,137, 58, 6,178, 58,132,225,212,117, +212, 0, 6,162, 20, 84,219,243, 12, 36,131,118, 2,123,178, 40, 67,163,180,143, 50,182,211, 60, 15,117, 63, 64, 92, 51,161,250, +220,154, 61,113, 26,100, 13, 42,210, 73,138, 25,152,105,171, 27,127,124, 87,141, 97, 91,239,227,118,185, 32,191,113,247, 64,142, + 91, 61, 57, 86, 67,182,118,179,239,112, 72, 28,143,115,200, 95,246,148,245, 76, 86, 11, 89,226, 41,200, 96,183, 12, 72,157,140, +245, 93,128,106,216, 33,173, 17,254, 99, 61,161,233, 29,120, 19,171, 26,132, 86, 66, 45,106, 70,143,234,214,184,101,244,171,200, + 54,146,245,220,198, 48, 83, 30,157, 16, 0, 77, 28,159, 68,208,186,132,176, 72,154,149, 21, 48,204,225,220, 83, 93,206,113, 52, + 64,184,100, 56, 90,147,228, 4,224, 65,144,198, 32,160,221,169, 87, 88, 1,244, 64,253,172,207,248,248, 84,179, 44,148,187,129, + 49, 8,109, 50, 32,212, 76,124, 65,102, 67,107, 61,198,250,119,131, 12,250,206,154, 29, 70, 11,153, 13,251, 4,216,130,105, 31, +255,100,120, 47,204, 22,146,183, 3,109, 8, 40,164,133,242,122,140, 11,198, 63,140, 92,197,205,141,172,249,215, 19, 11,192,162, +164,114, 12,246, 16,132,161,140, 59,158,142, 95, 51, 29, 30,238,237,201,166, 6,158, 96, 49,220,209,128,171, 27,205, 29,243, 96, + 64, 91,180,152,143,165,134,246,145, 62,199, 85,243,130,236,101,126, 70, 29, 12,192,137,126, 86, 6,157, 22, 75,248,213,202, 61, +217,209, 76, 30,130, 67,203,181,241,212,227,204,133,174,125,243,234,178, 35, 23,144,109,101, 75, 36,101, 8,125, 63,126, 93, 82, +230, 12, 56,230,212, 99, 66,212,185,247, 0, 10,162,109,152, 77,219,184, 37,122,217, 7,251, 85,117,230,152, 32, 8,152,197,147, +160,197,207,145,245, 19, 89,111,173, 92,213,164, 96, 69,199,134,247,192,121,200,110,149,197,211,160,235, 92,157, 31, 50,115, 36, +142,135, 27,160,204,205,202, 85,209,151,171,158,181,162, 46, 53, 24,132,236,232, 65,163,204, 49, 62,113, 98, 67, 40,219, 35, 8, +193,196, 22,170, 63,152, 70,193,125,171, 86, 74, 28,221, 43,230,125,121,213,153, 19,161,143, 54,199,137,218,183,186, 62, 35,236, +200,214,230,182, 36,169,186,252,242,193, 39,250, 46, 39,114,247, 96, 91,246, 54,171,108,197,204,116, 13, 91,189, 33,253,141,137, +131,121,172, 86, 35, 64, 70,201,187,161,239,130,128,108, 78,181, 57,203,180, 49,225,129,245,158, 46, 66,182,162,129,209,216, 86, + 59,138,224, 8,162, 49, 4, 96,235,249,106,104, 82,247,248,101,155, 45, 3, 76,120,129, 70, 25,247, 31, 85, 26, 50,177,170, 93, + 67,213,224,241,139, 51,249,215, 63,124, 79,247,167,207,209,209, 94,127,105, 8,125,216, 34,216,138,181, 71, 31,139,170, 1,148, + 63, 25,124, 45,150, 54,193, 18, 36, 75, 26,236,158, 30,170, 52,138, 73, 75, 99,118, 66,121,104,164,206,104, 30, 90, 36, 89,202, +132,215, 99,122, 98,180, 5,198,158, 68,157,111, 39, 3,106, 92,195,158, 67, 20,198, 18,130,227,119,109,124,227, 24, 55,123,120, +214,147, 31,125,114, 33,165, 98,154,131,249,158,103, 32, 24,100,166,251, 59,101,205,180, 61,249,240, 97, 95,166,177,199,121,104, + 74,189,250,134,171, 68,132,248,224, 98,160, 89,184, 79, 62,222,246,120, 46,247, 54, 11,210,174, 47,228,217,213, 72,158,183, 38, +242,139, 47, 69,141,209, 76, 62,125, 53,166,178, 26,250, 72, 0,190,228,232,168, 99, 62, 55,178,117,208,191, 34, 19, 15,189,170, + 20, 10, 41,102,237,200, 60,112,232,219,186,120,125, 13, 62,158,157, 77,100,175,158, 99,100, 15,254,110,162,200, 73,216, 0, 13, +114,159, 8,224, 24,229, 54,125, 62,160,177, 91, 87,125,249, 74,150,242,248,217, 57, 51,145, 7,191,124,197,153,121,164,254, 32, +160, 9,245,253,187,147,133, 52, 39, 75,206, 77,178,239,167, 70,166,154, 55,118, 34, 68,160,190, 6, 64,207, 78, 95,177,188, 11, +205,113,244, 30, 23, 14,137, 13, 80,218,213,112,161, 7,119,197,246, 71, 42,204, 91, 0,229,153,246, 19,128, 41,200, 2,111,239, +111, 80,241,170,150, 11,216,131, 76,235,243,149, 50,219,178, 81,205,115, 44, 35,159, 82, 67,163,251,188, 89,200,201,231, 39, 99, +246,239,191,113, 35, 79, 76,193,243,166,102, 81,154,117,110,108,133, 20,131, 72,174,245,219,217,191,132, 96, 69, 74,126,251,157, +109,130, 22, 65,206,129,108, 10,135, 30,145, 54,126,222,211,195,253,226,178, 39, 57,189, 0, 55,223, 58,148, 48, 95, 53,213,188, +160, 46,157, 47, 47,244, 34, 67, 97, 47, 75,149, 50,240, 22,167,144, 17, 3,186,171,217,202,147,243,150,252,191,127,251,145,124, +249,188,169,153,123, 81,158, 93, 78,228,239, 63,127, 72, 99,224,171,225,190,106,119,232,192,239, 30,236,145,252,230,188,213,100, +208, 67, 69, 45, 26, 31, 11, 30,209, 42,128,147,173, 96,222,181, 82, 33,219, 20, 70, 90, 48,221,209,108,183, 56, 42, 6,231,129, +222, 20,148,181,112, 81,124,244,160,209, 47,118,216,132,208,141,163,161,135, 78,134, 54,224, 36, 86, 6,254, 9,152,237,134,172, +106,113,142,219,201,242,162, 99, 2, 66, 16, 24, 15,100,215,248,249,140,235,143, 99, 60, 44,235,120,225, 39, 64,169,130,235,218, + 73,183, 82, 61,207,129,221, 12,232, 22,145, 19, 92, 28,208,238,218,176,198,137,161,219,241, 93,190, 53,250,201,249,110,146,177, +150, 1,176,140, 28, 90,175,186,217,237,211, 24,209, 33,175,174,193, 61, 40,111, 47,152,121, 19,216, 26, 88,224, 98, 99,170,105, +185, 24, 76,137,109,217,214, 51,112,103,119, 83,131,170, 46,121,250,215, 78,131,253, 90,219, 25,173,136, 53,104,123, 3,124,143, + 16,197,205, 59,191, 64,245,102,202,128, 74,156, 40,140, 79, 64,152, 6, 66,121, 19,160, 40,100,209,215,157, 19, 3,177,244, 67, + 58,106,114,226,171,131, 91,160,164, 58, 51, 37,188,203, 86,135, 99,164,139,121,143,233, 70,188,154,208,176, 53, 42,144,130, 14, +229, 81, 91,131, 93, 61,154,251, 98, 32,190,237,141, 50,123,209, 72, 14,246,182,107,236,181, 99,153,224,236, 47,154, 61,221,179, + 17,199,102,215,106, 68,231,122, 95,129,126,191,127,235, 64, 6,219,155,204,216, 59,157, 75,117,212,186,167,133, 50,133, 68,128, +133,128, 40, 9, 90, 62, 75,218,196,152, 4, 56,168, 76,166, 89, 93, 49,166, 73,160, 20,200,246,134, 44, 27, 76,133,153,156, 1, + 53,173, 87, 73, 66, 26, 92, 33,223,217,204,208,183, 36,136,125, 81,240,102,228, 13,195, 0,117, 56,142,149,185,170,202,179, 87, +167, 82,200,191,193, 50, 49,214, 54,157,213,179, 53,179,137, 25, 22,108,244, 14,247, 7,125, 6,131,195, 65, 79, 70,163,190, 58, +179, 3, 13, 56,247, 72,139,218,234, 52, 37, 9,139, 26, 44,247,212,129,237,147, 74,245,236,170, 77,240, 90,236, 36, 87,129, 18, + 95,113,158,123, 73, 76,130,237,177,247,186, 2,103,247,126, 77, 16, 29, 57,254, 97,206,116,253, 64,237, 13,123, 58,157,199, 28, + 21, 6, 8, 13, 21,160, 27,251,247,244,222,229,101,127,203, 72,140, 80,209,196,231, 35,187, 69,102,186,210,224, 1,228, 48, 8, + 90,225,236,174, 52,169,123,247,246, 22,171, 14, 0,233,194,231,143, 23, 9,207, 68,119, 48,166,253, 51,194, 35, 84,101,242,106, + 55,124,142,165, 33,208, 70, 5,233,188,217,166,222, 2, 42, 99, 8,228, 80,185, 49,249,110, 97,245, 54,159,175,240,204,158, 54, + 7,114,176, 81,118,194, 64,105, 13,242, 74,122,110,123,114,231,214, 61,169,215, 26, 36, 73, 59,105,246,213,198, 12, 77,139, 4, +205, 98,181,225,129,222,133,171,246,132,223,141,139,180,169,137, 7,190,183,162,137, 83, 73, 19,190, 78, 31,228, 55, 51, 86,180, + 96, 3,123,106, 67,224,215,174, 53, 19,112,175,170, 69,176, 53,226,125, 38,220,219,225, 8, 84,212, 69, 6,197, 0,225,193, 79, + 98, 77, 16, 8,181,122, 3, 86, 4, 81,121,248,249,231,199, 12,154,238,222,220,103,219,182, 90,152, 88,146,128, 4, 27, 18, 1, +161, 9, 53, 81, 9, 14,118,218, 51,162, 46, 15,182, 56,165,134,191,223,235,202,223,125,252, 82,254,229,123, 59, 4, 97,117,198, + 9, 81,183,136,222,102,208, 51, 62,237,203,153, 70, 15, 37,180,144, 33, 72,225,128, 10, 86, 54, 67,249, 92,216,159, 6,173,231, + 70, 1,243,191,121, 58,206, 15,159,245, 53, 67,155,201, 13,188, 4,192, 7,163, 5, 47, 86,173, 20,202,219,251, 69,217,214, 11, +138,114,246,112,156,149,131,205, 10,203, 38, 47,213,152,143, 47,103,236, 25, 71,177,217, 54,128,235,176, 64,152, 45,252,226,164, + 71,152,255, 75,141,238,255, 63, 61,156,205,238,156, 8,115, 68, 71, 99,117, 76,184,124, 40,167,122, 44,149, 27, 27, 20,128,241, + 41, 39,211,199,102, 1,100, 48,245,103, 47, 16,253,204, 13, 41, 11, 49,131, 44,104, 73,117,227,161,116,246,131,175,237,200,119, +239,212,229,127,253,235, 99,121,217,233,233,119,175,232, 12, 36, 76,228, 74, 29,235,233,243, 49,245,213,209, 99,238,119,166,108, + 37,124,113, 60, 35,235,210,222,225,134,252,209,207, 39,146, 15,141, 96,191,170,107, 50,146, 28, 1, 28,199, 23, 83,121,210,154, +203,121,123, 74, 84,243, 4,253,211,181,176, 23,116,149,142,164, 63, 76, 88, 41,233,232, 67,159,244, 23, 12, 38,202,105,143,154, +240, 39, 77,144,253,139,211,208, 53,101, 58,163, 80, 4, 85,164, 71, 85,161, 15, 14,210,114,111,175,226,230, 8,141,197,200,115, +156,249,184, 96,143, 47,135,242,213,203,174,252,203,111,220,144, 51,244,109,206, 53, 3,204,168,177, 31,206,229, 98,184,150,225, + 23, 23,114,239, 70, 69, 47,158,181, 90,196,205, 97, 83, 59, 68, 47,251,206,118, 93,182, 40,170, 17, 32, 52,116,128, 17, 93,119, + 56,192,249,140,217,248,120,166, 78,241, 97, 79,138,155, 25,233,235,190,247,103,109,105, 53, 91, 4, 32, 65,130, 16,229,162,154, +158, 5,100, 80,155,106,236, 63,252,234,153, 60, 60,237,104,228,153,145,131,221, 29,206,106, 62, 60,109,106, 22, 87,228, 5,190, +188,188,100,255,111,127,103, 75,142,213, 48,225,221, 65, 57,187, 92, 25, 38, 33, 96,159,210, 99,121, 42, 96, 86,144,103,102,249, +234,234,138,134,245,112,119,143,207, 91,200,229,109,254, 59, 50,244,110,167,219, 51, 0, 26,156,186,211,248, 6,162,151, 32, 49, +160,208,211,166, 43,144,120,226, 68, 95, 60,235,103,185, 82, 85,114, 61,101,236,120,246,193,196, 6,205,100, 48, 75, 97,245,208, +179, 3, 48, 6, 70, 7,165,251, 5, 81,250,134,112,166,244,106, 42,124, 13,248,178,209, 29, 53, 78,200, 16,125,115,146,200, 54, +141, 9,206, 24,216, 80,218, 69,159,213,140, 70,108,189,184,149,201, 54, 26,243, 98, 98,156,230, 14,156,151, 88, 74,200,181,177, +227, 16,185, 56,193,128, 58,190, 24,181, 41,195,244,148, 79,195,130,209,177,171, 46,132, 56, 42,242,238,209,190,188,173,223,243, +232,172, 45, 39, 26, 28,161, 11, 3,178, 27,112,100, 7,124,215, 28,199,112, 80, 86, 64, 57, 16, 45, 8,224, 27, 80, 90, 70, 80, +133,117,165,164,178, 7, 13,244, 13,210,147,146,107, 94,141,100,165, 84,102,214,179, 90, 91,165, 2,122, 14,200,182, 34, 71, 69, +141,190,121, 70,207,134, 30,121,210, 10, 99, 60, 46, 90,247,164, 89,170, 75,189, 90,210,179,184,228, 8, 90, 83,108,250, 2,153, + 95, 1,207, 21, 6,212,118,184,174, 94,121, 43,136, 6,229,121, 23,200,171, 49, 15,220,122,121,242,229,241, 5, 75,235,214,174, + 17,174,103,128,128, 67, 82,164,167, 69,149,146, 35,104, 26,172,103,212, 56,131,211, 3,109, 16,244,212,151,137,177, 5,162,148, + 10,103,130,192, 28, 25, 48,132, 99,124,238,133,137,233, 32,126,143,200,157, 29,179, 87,237, 51,208, 8,216, 26,241, 24, 76,169, + 51, 24,118, 13, 85,239, 39,175,249,225, 81,214, 63, 57, 59,151, 55,110, 31,201, 0,218, 1,186,255,226,207, 56, 98,183, 38,217, + 72, 68,230, 68,220, 61,112,131, 64,196,102,179, 86,102, 69, 21,103, 29,107,178, 0, 62,232,242, 74, 54,106,111,202,119,191,241, +129,180, 47,143,245,108,218,169, 69, 91, 15, 54,218,168,125, 23,255, 63, 87,239,213, 36, 73,122,101,137, 93,119, 15,173,101,234, +202,146,173,209,221, 64, 15,196, 8,195,112,150, 67,109, 70,154,113,249, 66,163,241,145, 63,132,191,131, 47,251, 68,227, 3,141, +182,251,192,217,181,221,177,177,217,153, 33, 22,104,108,163, 27, 64,235,210, 85,169, 51, 50, 67,107, 15,119,231, 61,231,126, 30, +213,100,183, 21,186, 80,149,153, 17,225,254,249,149, 71,208,170,181,158,170, 53,138, 77, 73,192,208,217, 68, 30,155, 19,138, 47, +233,191, 77,152,118,121,233,100,201,252, 3,208, 60, 1, 98,140,103,174, 55, 88,202,183,207, 94,232,231,158,242,236,226,254,226, +227,131, 62,188,100,140,205, 81,227, 31, 19,135, 86,173, 32,167,151,125,233,214,180,155,215,235,133,198, 13,107, 61, 48,148,204, +228,200, 20,253, 48,177,232,104,242,197, 53,198,115,212,210,247, 0,245, 65,172,106,224,115, 62,157, 77,153, 88,177,126,192, 84, + 8,137,123,183, 6,122,113, 86, 27, 4,128, 2, 51,114,126, 59, 99,124,199,196, 16,249, 3,128, 63, 0, 68,241,153,254,236, 79, +126, 70,208,108,255,234,185, 92, 92,158,177, 64,175, 76,243, 4,127,130, 46, 84,112, 50,209,248, 7,215, 17,120, 25,136,124,149, + 43, 38,233,139, 2,148,128,206, 66,145, 0, 81,115,253,203,240,181, 18, 90, 7,103,229,245,100,198,166,104, 6,171,113, 8,196, + 56, 21,191, 2,177, 41, 75, 22,119, 80, 16, 68, 49, 8, 84, 62,112, 6,191,253,234, 68,223, 87,133,247,228,254,113,135,212,107, +172, 20,185,246,115, 34, 89,226, 24, 82,180, 44, 7,166, 8, 13,185,175,149, 3,232, 35, 56, 79, 72, 90, 24,169, 77, 53,209,125, +241,106, 40,231,253,185,140, 38, 33, 23,250, 0, 78, 28,119,115,206, 44,194,186, 19, 4,168,119,247, 42, 20,122,105,215,114, 20, + 8,129, 83, 19, 80,220,151,227, 72,126,251,226,119, 50,199,174, 9, 64, 1,189, 40,191,184,171, 29, 64, 61, 75, 32, 66, 41,139, + 1,164, 38,116, 13,122,175, 49,234, 7,201,222,115, 59, 3, 86,140,190,201, 64,122,198,243, 68,252,251,221,119, 61, 6,174,170, +190, 6, 70,100, 56, 92,213,122,145,213, 11, 28,204,128, 60,159,205, 67, 38,194, 12,187, 33,171,136,241,128, 3,241, 9, 19,134, +128,226, 49,107,154,152, 96, 2,113,180, 83,226, 52, 0, 99, 25,252,249,127,241,241,190, 60, 58,172, 74,253,110, 67,230,231, 11, + 6,173, 61,253,220,232,230, 39, 80,181,219,100, 56, 82,124,252,125,143, 5, 4,236,254, 16, 32, 80,168,124,250, 93, 95,246,203, +190, 60,172,197,242,245, 68,175, 35,140, 52, 60,104, 13,179,151,102,135,249, 15, 95, 99, 55,155,147,102,167,107, 52,179,196,230, + 30,195,185, 37,154,107, 77,228, 64,194, 67, 68,231, 15, 47, 71,242,243,183,219, 68,149, 62, 61, 31,200,205,104,197, 7,201, 40, + 36, 54, 18,198,193,192, 94,177, 88,244,229,197,233,133,252,237,103,177,116,255,234, 29, 86,244,248,172,182, 23, 52, 67, 1,220, +187,119, 15,106,242,173, 22, 70,255,250,179,215, 68,175,159, 93, 79,228, 90,239, 53,133, 65, 66,227,113, 63,123, 57,144,123,251, +117, 78, 80,136,116,133,122, 81,226,248,182,232, 28, 49,130, 69,199,183, 70,213,190,178, 81, 53,186, 55,237, 66,239, 29,118,228, +139,231, 87,242,221,139,177, 92,255, 81, 59,160, 53, 20,196,244, 97,208,207,241, 95,253,201,161,252,139,191,249, 66, 94,106, 85, +252,218,143,229, 91,125, 88, 46, 17,140,189,137,252, 15,191,252,185,188,232,141,229,201, 23,207, 9, 2, 2,178, 22,163, 69, 80, +135, 80, 13, 35,169,210,188,128, 42,110, 75, 78, 48,178, 14, 77, 14, 64, 18, 80,186,168,150,193,221,157, 57,144, 26, 10, 25, 56, +182, 1, 60, 55,154, 79,249,231, 0,181,128,246,210,215, 46,103,130,253, 94, 46,111, 10,106, 73,226,240, 32, 49,139, 75,116, 30, + 41,165, 71, 2,167,198, 22, 27, 66,221,116,155, 45,177,195,160, 5, 95,111,234, 92,198,239, 46,114, 71,154,165,182, 63,222, 15, + 64, 68, 61, 26,171,152, 13, 35, 2, 50, 94,215,119, 32, 58,186,163,145, 85,226,241,179,155,173,170, 89,213,226, 61, 65, 28,134, +147, 48, 36,243,216,208,239,129, 3,166,110,117,104, 19,163,180,177, 72,216, 56, 79,239,173,119,186,188,153,178,197,214,141, 49, +249, 59, 81,158,212,246, 24, 35, 64,114,210,245,223, 75,237,148, 6,223,188,148,187,157,186,180, 33, 89,124,212, 97, 97, 12,196, + 46,186,252, 74, 33,111,162, 56, 40,134, 40, 0, 98, 35, 87, 0,181, 56,190,246,192, 89, 47, 18, 67, 65,103, 61,109, 18,110,199, + 5, 57,232,214,168, 43,112, 59, 89,176,144,190,152, 76,100,186,201,202, 39,247, 75,242,239,126,245, 21,189, 6,200,127,215, 78, + 20,235,155, 76,182,196,247, 3, 4,252,235,179, 91,217, 89,205,244, 28,232,251,152,106, 87, 21,228, 12,148, 90,234,202,122, 54, +226, 74, 10, 81,197,231, 52, 37,203, 66,201,180,179, 99,142, 59,163,216,246,240, 16, 53, 41,208,108,103,195, 2,228, 23, 31,191, + 79, 89,224, 63,126,251,132, 66, 51,217,114,149, 13, 1, 38,112, 88, 93,122, 27,224, 5, 86, 18,228,108,213, 17, 57,190, 57,158, + 42, 76,234, 88,224, 69,214,253, 2,177, 79,237, 2, 95, 19, 85, 9,227,226, 25,239, 75,146,174, 38,157, 35, 32,176, 30, 17,193, +129,230, 44, 24,184, 34, 36,118, 35,122,174,114,244,218,128,218,105, 26,247, 48,158, 41, 82,204, 41,165,105,178, 17,232, 79, 24, + 39,113,142, 96, 86,180,135, 53, 22,174,173, 67, 79,246,110,122,114,113, 85,147,119, 31, 62,144, 47,190,121, 44,127,248,254,169, +209,210, 18,227,175, 99,108,139,107,132,110, 27,102, 50,152, 54, 80,136, 72,255,110,226,196,114, 88, 68,146,170,236,201, 11, 90, +199, 10, 77,150,144, 47,208, 69,131,143, 13, 12, 65, 77, 99,113,190,112,160,207,230,130,255, 31,231,131,162, 88,230, 89,163, 63, +123,205,209, 61, 68,189,190, 63, 25,201, 91,119,154,218,237, 78,217,209, 79, 17,243,102,104, 8,140, 17, 0, 32, 38, 10,206,154, +222,139,110,171, 35,123,157, 22, 61, 19,128,228,199,245,187, 83,109,202, 79,234,101,218,250,246, 71, 3,138,167,129,190,140,152, +142, 98, 5,178,180,144,153,253, 99,111, 68, 36,250, 39,251, 53, 57,233,205,153,112, 89,192,233, 57,127,117,118,198,189,248, 87, +223,125, 47, 63,122,231,109,121,248,246,143,101,119,119, 71,134, 55,167,196,133,164,114,220,120, 94, 49,126, 63,191,185,145,127, +252,245,167,178,187,179, 67,229,190, 86,167,109,197,169,158,183,211,203,107, 83, 76,132, 16, 14,204,156,242, 89,190, 31, 24,238, + 16,187,208, 42,179, 96,110, 84, 77, 40,231,249, 69,159,113, 1,251,113,172,136, 80,200,128,219,142, 2, 11, 46,114, 99,231, 36, +249,217, 55,167,178,175, 77,113, 17, 46,140,173, 42,129,163,243,101, 66, 99, 39, 78,117, 98,195,179, 49, 30,120,144, 20,215,242, + 42,188,158,240,128,255,103,127,114,204,113, 51, 14,211,237,116, 40,255,244, 77,207,237,202, 81,233,104, 55,180,136,220,232,207, +120,217,232,182,234,250,226,159,188,127, 40,111,237, 98, 60,145,144,143, 11,211, 19, 72,185,147,148, 5,144,214, 88,187,183,165, +153, 55, 52,180,179,221,228,205,213,169, 55, 51, 14, 31, 70,237, 11,253,190,211,235, 41,191, 22,102,244, 62,231,124, 24,123,219, +232,221,140, 15,124,114, 64, 57, 26,213, 67,178,166,246,184, 29, 22,116, 60,235,149,185,150, 53,181,234,155, 47, 34,163, 28, 65, +230, 53, 48,112,199, 91,135, 5, 61,112,121, 77,148, 51,169,215, 2,249,159,255,242, 72,222,189, 83, 23, 95, 63,227,191,248,251, +231, 60, 80,255,244,221,149, 30,146, 68,238,239, 62,210,206,213, 42,193, 82, 49, 35,245,186, 22, 43,141, 28, 1, 31,154, 87,216, + 29, 93,205, 76, 45, 11, 99,138,254, 96,108, 72,249,105, 44, 11,253, 57,239, 62, 48,240, 6,222,156,183,245,173,198,195,106, 94, +184, 0,238,160, 74,196,248, 9,163,148, 31, 29, 55,164, 92,181,113,251,165, 38,193, 41,198,146, 40, 34, 22,154,228,181,131,126, +231,168,170, 1, 70,175,213, 34, 54, 75,197,200,156,224, 80,237,146, 22, 4, 46,179,222,220,177,190,185,127,255,197, 90,223,127, + 77,126,250,176, 77, 78, 61,246,141,248, 59, 32,133, 9, 20,107,151,228,175, 63, 62,148,127,249,171,231,114,174, 93, 59,130, 16, +176, 19, 80,193,171,103, 53,121,232, 97,185, 28,204,244,243, 22, 13, 4,132, 7, 26, 92,108,116, 46,177,209, 22,163, 92, 81,131, +205,148, 10, 96,112,160,194,200,103,137, 42,125,180,150,153, 38,203, 72,147,237, 77,127, 42, 95,193, 53,107, 1,173,228,186, 44, +162,150, 12,245, 50, 20, 65,115, 90, 1,248, 53,150,175,159,157,114,250,242,223,253,233,251,242,239,190, 62,151,193, 12,215, 91, + 59, 34, 20,100, 90,189, 82, 17, 45, 8, 28,239, 92,147,237,120,204, 96, 70,116,183,103, 84,163,149, 11,146,221,102,131, 93, 19, +156,211,144,180,177,211,132,212, 34,254,238,242,214,198,238, 20,109,209,159,125,126,221,163, 18,217,190, 62,148,248, 58, 76,115, +104,222,177, 49, 9,100,220, 43, 36,169, 34, 45, 77,115,166,165,158,201,186,157,183,105,163,163,176,234, 15,110,168,241,142, 14, +207,119,220,238, 52, 81, 3,213,140,103, 9, 0, 61,116, 82, 68, 7,175, 76, 30, 21, 63, 23, 69, 2, 62,215,154,123, 57,140,146, + 50, 28, 29,199,206, 23, 21, 73,222, 20,237,178,220, 3,155,148,234,146,255, 31,247, 53, 45,214,236, 25,205,152,162, 23,231,188, +214,245,166, 46,112, 17,119, 98,190,243, 79,176,177, 56,157,181, 2,127, 43, 52,147,131, 21,169,231,219,181, 48, 51,113,219,135, +107, 17,252,205,201,133,190,254,156, 1, 28,200,105, 76, 67,146,129,237,135,113,141, 64,245,195,164, 14, 40, 98,184,106, 1, 41, +125,127,183,161, 49, 36,100,146,106,176,171, 79,184, 79,197,218,226, 68,207,188,231,100,103, 33, 48,132,130,218,139, 81,252, 52, +245,108,116,245,237,107,208,131,107,218,218,232,138, 48, 51,129, 29,101, 85,131,123, 94,139, 14,116,150,195,201,173,158,245,129, +222, 79,179,113,222,211,128,141,130,254,234,226,140,159, 3,147, 59, 88,183,226,217,155,174, 19, 2,190,176,179,229,245,242,204, +118, 20,147, 40, 88,242,130,231,254,233,215, 39,212,155,231,116, 15,194,109,122, 31, 82,204, 51,118,247,113,160, 93,164,198,166, + 98,166, 36,121, 77,151, 69, 26,108,104,108,139,173, 19,197,168, 55,140, 86, 84, 23, 51,156,133, 71, 67, 28,160,214,227,196,115, + 76, 30,103, 21,237,138, 43,196, 80,116,123, 70,167,139,183, 99,121,252,125,214, 1, 38, 67,189,119, 3, 45,232, 58,205,186, 21, +123, 89, 72,122,175,184, 75,221,128,253,146, 0, 3,164, 77,194,218,138, 5,224,141,250,253, 27,169,148,107,182, 18, 19, 83, 72, +251,246,241,119,122,230, 74,114,247,232,142,140, 70,125,121,113,217, 23, 51,236, 51, 17, 42, 20,170, 72,138,159, 63,153,110, 21, + 8,113,126,144,176,141, 58,233,140,103,156, 32, 83,165,100,141,140, 33,230, 77, 71, 1, 56,150,217, 44,145, 78,167,164, 29, 39, +192,176,230,109,128,216, 12,236, 7,154, 40, 36,105, 76, 82, 90, 21,195,252, 20, 53, 62, 63, 58,106,203,127,124,124, 67,171, 86, +116,207,163, 19,195, 25,225,204,119, 91, 13, 45, 2,119, 9, 70, 67, 1,116,173, 5, 76,232,112, 37,160,158, 93, 79,245,188,111, + 38, 90, 56,134,252,188, 57,189,215,173, 90, 89,127, 86,141, 83, 1, 2,211,244,235, 65,133, 59,232,248, 68,185,159, 92,245, 57, +153,169,151,235,242,206,219,239,242, 94,188, 58, 59,101,161,135,233,201,207, 62,252, 64,218,205,150, 60,125,246, 13,189,222,129, +131, 65,177, 10,208,240, 97,127, 68,253,250,111,191,255,206, 80,232, 26,119, 1, 40, 61,190,123,172,141,102, 67, 94,190,126,205, +100, 12, 61,133, 54, 40,157, 48,252, 2,202, 29, 98,102,158, 80,103,126,170,207,197,209, 78,149,212, 63, 0,160, 49,217, 5,230, + 2, 88,156,150, 22, 69,226, 76,138, 16, 7, 97, 31,124,113, 51, 37,235,232,193,126,139,226,111,112,196, 91,204,103, 90,120,102, +173,168,194, 42,196, 51, 81, 44,195, 74,192,165, 77, 3, 65, 69, 95, 0,224, 70, 4, 35, 84,172, 55, 80, 43, 42,162,195,138,152, +249, 61, 7, 6, 10,220, 94, 46,165,213,208, 91, 92, 43,154,201,198,246,235, 1,170, 81, 63,182,132,234, 99,151,226, 73,175,167, + 65,109,175, 68,254,241, 40, 4, 90, 47, 67, 17,126, 40,195, 33,192, 92,246, 23,114,126, 59,215, 10,204,198, 34,129, 6,198,102, + 57, 67,244, 32, 31, 8,140, 50,192,127,207,250,238, 97, 52,139, 68,140, 53, 81,169,160,131, 39, 47, 94, 31,178, 90,187,192, 78, +157,149,101,156,161, 94, 46,196, 14, 32,166,130,106,235,237,227, 29, 41, 53, 1, 90,211, 74,105,146,145,254, 43, 13,154,152,137, +149,154,228,181, 62, 60,212,196,184,201,203,211,222, 70, 30, 21,128, 82,213,235, 82,210,234,120, 97,149, 87, 54, 3,158,102, 72, +100,239,231, 79,199,220,183, 97,207,139, 93,124,163,213,149,119, 30,234,207, 9,245, 70,108, 42, 76,150, 24,215,113, 71, 3, 41, + 70,231, 5,143,221, 46,254,201,231, 87,230, 54,166,223,223, 41,106,146,155, 66,246, 79, 3,134,126,206,146, 6,145,253,110, 81, +171,186, 44,247, 60, 39,231,125,118,163, 4, 13,173,220,238, 11, 70, 49,137, 57, 52,163, 43,186,186,233,219, 24, 87, 59,216,191, +249,244,177, 52, 75,239,208,252, 4, 40,109,236,195, 24,172, 17,228,245, 30, 63,218, 43,203, 79, 30,181,245,231, 14,200,129,135, +222, 60,186,253,191,120,171, 33,255,234,119,151,178,234,106,101,184,158,153,220, 41, 14, 78, 22,251,242, 13,119,183,120,221,225, +108, 66,227, 20, 36,205,133,118, 19,162, 65, 63,212,255, 62,121,126, 42,159,157,143,101,103,167,195,241,108,167,211,144, 42,164, + 54,245,215,245,237,141,252,203,191,237,113,221, 2,224,209,119,175,123, 44, 56, 48,142,123,118, 51,147,167,103, 87, 68,204,226, +112,225,115, 64,233,175, 86,169,232,185,153, 17, 96, 98,168,115, 59,119, 8, 36, 20,120,161,142, 66,142, 73, 13,157, 25,166, 12, +245, 74,217,130, 77, 46,195, 4, 60,209, 14,157,158, 5, 27, 19, 35,193,232, 23, 29, 39,228, 67,239, 28,236,234,121,183,206, 0, + 99,109, 4, 85, 60, 3,232,116,145,232,118, 26, 45, 58,163, 1, 60, 26,242,217, 24, 89,114,213,247, 7, 21,182,169, 51,104,161, + 40, 71,198,144,229, 8,122,232,176, 74,174, 83,156,187,169, 2,246,243, 4, 65, 97, 85, 16,174,153, 84, 54, 4,244,133,164, 91, + 0, 64,182,113,106,119,164, 89, 65,145, 75,191, 7,252,228,180, 91, 74,210,150, 91, 76, 88, 35,149,144,245,157,173, 46,170,118, + 79, 34,199,140,240,217,241,114, 53, 16,111,182,211, 8, 78, 9, 96, 21, 43,246,123,179, 95,141,233,146, 24,120,102,191, 28, 59, + 43, 90,216,110, 66, 65, 50, 7,205,106,116,111,113,192,107,141,228,141, 53, 28, 10,171,150,118, 75,158,118, 91,160,188,242,121, +209,164,254, 88,207, 64,134, 43,131, 12, 17,201, 72,112, 8,108,228, 93,231, 44,208,209, 86, 51, 48,103,199,157, 70, 65,218,218, +225,111, 60, 43, 78,176,238,128, 49, 26, 84,195,154,218,213,161,219,235,105,178,194,217,187, 29, 12,244, 61, 20, 40,237, 28,232, + 53,232,118, 15, 89, 32,227,189, 53,155, 53,218,243, 98, 55,139,251,128, 51,141,243, 50,213, 2,188, 81, 43, 56, 26,174, 25,212, +116,219, 53, 27,121,247,198,220,109,162,248,255,249,143,223,211,115, 58,144,215, 26,184,151,115,104,235, 23,152,232, 67,237,216, +193, 60, 91, 96, 58,229,134, 35,228, 12, 39,166,230,133, 98,121, 65,149, 58,161,122,222,100, 54,229, 52, 41,138, 86, 68,228, 91, + 41,101,197, 39,174, 53,176, 21, 72,230,141,106,198, 64,184, 94,226,236,128,140,218,150,202, 64, 3,175, 4,189,245,194,222, 14, +159,107,222,147,108,129,190,246,137,159, 99,151,137,253,121, 18,191, 81, 11, 68,167, 72, 96,112,190, 42,101, 95,255,174,145,231, + 68,102, 54, 29,210, 31,225,103, 31, 60,210,184,252,146,104,241, 92, 38,112,124,123,179, 9,198,115,118,118, 61, 52,133,188, 88, + 28, 11,192,240, 34,136,127,169, 18, 6,238, 33, 38, 85, 88,107,224,122,150, 11,166,107, 14,224, 87, 83,207, 67,226,213,157, 17, +140,158,175,205,148,244,182,181,243,166,192,179,253,244,245,156, 73, 30,137,109,163, 13, 29, 40, 94,136, 17,143,142,186,242,204, +179,209, 59, 38, 92, 48,229,129, 7, 58,102, 78,227,201,156,178,207, 80,129,171,209,119, 65,139,170, 25,124,222, 65,107, 45,114, + 68,142, 22,240,189,187, 29,198,165,223,124,121,174,159,123,109,244, 65, 61, 83,175,175, 38,244,100,199,185,228, 42,118, 13,243, + 21, 83,160,163,212,180, 94,199,239,159, 62,147,149,254,247,163, 15, 62,144,163,227, 31,201,248,246, 53, 1,205,192, 97,161, 70, +248,228,253,135,242,209,163, 99,249,254,229,133,124,249,252, 66,190,254,102, 38,247,142,239, 72,101,133, 17,121, 94,238,104,209, + 4,249,222,172,103, 34, 80, 24,105, 60, 59, 31,113, 21, 66, 55, 0,205,101,192,137,188,212,184,139,220,136,185, 12,166, 59,184, +219,104, 60,193, 71, 7,214, 7,212,114,104,218,211,131, 66,243,200,112,106,180,219,138,230,164, 30,132, 67,168,161, 97, 76, 20, + 76, 90, 54,137,221, 35, 60,191,112,245,204, 12, 7,154, 80,103, 16,213, 8,165, 83,210,138, 68, 15,226, 74, 59, 93,160, 72, 97, + 86, 18,248,182,175, 38, 79, 53,178,189, 34,190, 25, 93, 13,172,242, 80,109, 64,174, 53,142, 13,168,227, 17,176, 99,154,214, 0, +152, 65, 42, 16,251,246,193,114, 35,159,191,234,115,239,134, 68, 14,103, 28, 28,226,208,129, 46,176, 99, 56,208,100,178,210, 96, + 55, 89,197, 20,132,201,186, 81, 60, 14, 4, 92,153, 16,244, 54, 14, 28,134, 74,220,164, 50,225,165,174, 29, 4,198,215,122, 64, +178, 5,159,194, 36, 8,226, 59, 45, 19,246,127,221, 91,112,228,255, 78, 75, 11,138,141,199,160,119,163, 95,223, 95,154,232, 69, +185, 90,229,126,100,103,167,197, 78,231,243,203,141,124,121, 53, 52,228,103,161, 46,119,247,171,252,115,188, 95,112,196, 1,122, + 64, 48, 42,104,178, 44, 96, 15, 21, 24, 98, 29,202, 54, 65,208,208,164,176,166,205, 97, 28,121, 12,168,226,212,159,208, 93,139, + 88,101, 60,210,174,122,181,132,156, 98, 76,106,198,113, 3,135,219,227, 14, 30, 15, 51, 64, 67, 24, 83,238,106,240,185, 93, 9, +121,252,131,197,210,164,118,185,163, 75,131,176, 79,192, 24,130, 42, 3,188,254, 25,174,237, 23,207, 7,242,223,252,236, 30, 53, +180,201,133, 69,229, 31, 26,122,127,174,215,230,163,227,186,188,210, 34,228, 83,237,144, 71,227,153, 12,170, 80, 39,210,206,170, +150,151,191,253,244,185, 70,212, 6,173, 24,241,158, 71,250, 64, 97,108, 12, 96, 13, 40,129, 8,130, 89,253,236,111,239,215, 9, +252, 58,106, 67,243,216,163, 2, 31,124,158,111, 7, 99,238, 86,241,192,180,170,101, 9,245,140, 60,191,188,165,226, 27, 2, 49, +254,174,209,110, 75,199,183,132, 50,212,195, 12, 90,152, 80,192, 39,100, 0, 17, 26, 57,152,169, 13, 17,213, 64, 9,103,205,135, + 59,181, 85,196,249, 96,135,138,192,173, 15, 35,181,185, 93,103,111,231, 38,228,232,146, 70, 14,238, 28, 45, 86, 3,125, 96,170, +250, 16, 3, 0, 83, 51,227, 18,152, 4,150, 75,230, 81,158,133,156,111, 44,117, 61, 19,121, 45,226, 90, 69, 61, 43, 99,125, 79, + 25,237, 68, 50, 49,133,137,176, 51,183, 0,101, 74,118,158,115, 41,180,241,124,194,241, 40,222,111,184, 49,170, 11,238, 17, 58, + 62, 67,184,198, 68,174,195, 42,116, 67, 93,120, 83,164,219, 56,131,149,200, 9,203,136,111,186, 3, 75, 38,128,141,227, 62,219, +115, 23, 59,177, 26, 67, 82, 39, 78, 17, 44,113,137,122,179,221,241,155,190,188,141,115,227, 55,100,118,227,221,211,148,194,240, + 2,145, 83, 29, 76,205,102,136,246,119, 58,228,107, 26, 86,216,103,136, 52, 72, 67, 2, 51,220,216,206, 31,154,223, 72,214, 88, + 51,224,153,183,228,132, 61,179,117,158,220,221,174,157, 79, 57,141, 48,214,148,107,193,255,194, 84, 69, 92, 7, 75,208,211,213, + 64,187,172, 18, 17,235, 70,157,213, 0,166, 9,118,185,198, 40, 58,148, 91, 45,148, 54, 0, 81,109, 70, 90, 48, 21,232,121,176, +223,106,106,225,216, 52,229, 64,253,158, 82,107,159, 9,170, 63,156, 24,159, 62,222,240,249,175,149, 11, 90,236,149,120, 93,175, +110, 71,140, 57, 93, 45,152,231, 26,103,176,135,206,100,114, 4,170, 61,189, 24,108, 69,125, 54, 4, 72,150,169, 92,183, 94,174, +104,224,132, 51,149,119, 60,117, 4,121, 0,177,145,124,139,133,138,222,223,146,156, 0,136, 85,171, 16, 79, 48, 30,223,106,242, + 43, 82,141, 44, 99,114,242, 38, 19,235,128,165, 16,216,217,142,182,113,143, 18,195,223,184, 25,189,108, 60, 11,210, 96,158,224, + 92,246,181,217,162, 24, 17, 60, 2,244, 57, 29,220,246,120,118, 0, 66,148, 56,227, 44,172, 99,122,141, 31, 64,182,186, 80,212, +247, 29, 82, 19, 95, 60, 3, 84, 94, 13,166,114,160,205,199,225,238, 88, 46,181, 89,128, 5,105,106,108, 52,114,206,141, 48, 9, +122,239,254,190, 21,216, 98,212, 66,113,130,196, 56, 67, 40,158,193,212, 65,195,210,128,161,207, 34,116,235,191, 60,207, 26,176, + 47, 80,122,140, 55,101,130,209,206, 46,158,147, 5,133,130, 23, 0, 56,120,219,167,152,148,213,186, 77,192, 49, 48, 3, 0,188, + 65,115, 0,221, 39,100,132,239, 29, 30, 48,126,248,100,122,108,216,201, 34,119,176, 59,245,109, 77,133,189,125, 37,111,254,239, +188,174,160, 46,222, 34, 22,142,101,191,153,213,231, 88, 99,252,116,195,243,142,175, 95,109,204,173,147,140, 3,104, 76, 84, 43, + 91, 13,132,131,238, 14,239,251, 96, 52,145,127,252,245,111,100,111,119, 79,126,244,206, 35,241,214,125,189,214, 23,140, 57,207, + 78,174, 40, 55,253,222,195, 59,218, 16,236,200,111,191,122, 46,215,215, 23,178,105,116,168, 29,176,211,237,104,145,185,203,132, + 61, 25,221,210,133, 16,231,178,204,174,220, 60, 32, 48, 98,199, 51,133,198,160,228,116, 52,104,136, 5,141,254, 28, 48, 14,248, +218, 57,115, 39, 44,207,241, 89,161, 73, 15,113,168, 76, 57,207,117, 12,245, 71, 72, 51, 44,112,154,146,174,116,108, 28,175,249, +225,233,229, 68,190, 57, 27,211,154, 15, 55,249,229,197, 72, 31, 24,189, 73, 37,216,139,195,202,109, 35,203, 36,118,227, 35, 33, +133,198, 20, 3,224,248,131, 10, 80,147,250, 44,207, 27, 21,100,236,111, 51, 94,226,172, 83,141, 78,182,113,114,171,183,227,165, +124,253,106,100,157,136,190,129,221, 86,142,187,110,211, 19,143,137, 18, 61,189, 93,179, 48,192,131, 23, 50,240,196,206, 79,214, +179,189,152,254, 42, 85,138, 6, 96,113,149, 10, 42,229,130, 38,197, 70,189,196,139, 15,116, 40,104, 53,216, 87,132,113, 94, 31, +130,169,244, 38,161, 22, 6,115,189,144, 21,153,132, 1, 1,113,230,214,101, 99, 81,218, 67,130,190,148, 88, 33,195,196, 10, 64, + 81,146, 56, 9,196,196, 76, 79,180, 3, 93, 44, 61, 6, 98,112, 46, 65,217,240,253, 44, 17,206,136,144, 64, 69, 35, 57,225, 32, +154,151,180, 29, 64,160,195,169, 48,230,130,178, 79,217, 70,159,129,170,172,135,177, 94,172,104,208, 92, 19,176, 2,142,237,114, + 97,116, 39,220, 44, 76, 37, 0,254,186,130, 42,146, 30,252,208,139,221,146, 84,171,101,152,141, 44, 93, 21,159, 10, 97,232,239, +126,245,245,165,252,226,157, 61,217,173, 27, 72, 10, 63, 75, 95,138,187,161,207, 94,141, 73, 13,105, 54, 27,242,163,183, 3,121, + 53, 6,203, 97, 77, 26, 6,174, 75,171,148,149, 75,200,204,198, 33,213, 2,121,141,214, 17, 87, 49, 48,173, 48,175,232, 60, 57, +230,103,250,158, 14, 15,247,244, 26,207,165, 55,223,176, 2, 71,149, 73,110,189, 6,234,139,193,140,159,135, 73, 73,175,111,129, + 92,203, 44, 19, 48,222,103,206, 51,231,191, 36,113, 70, 53,156, 40,164, 32, 47, 91,247,224,207, 33, 11,107, 9, 58,224,244, 32, +237, 78,241,115,242, 20,237, 48,135, 43,142, 50,201,215, 54, 64, 18,186, 77,252, 44,228, 55, 8,174,224,225,169,228, 49,166,195, + 56, 25, 26,229, 69, 38, 91,236, 90,145,164,241,131, 80,180, 60, 61,159,240,115, 67, 90,178,169, 29,251,235,171, 43,121,113,213, + 39, 69, 12, 15, 63,198,249,124, 15,190,191, 85,132,131, 33, 67,183, 89, 32,104,114,186, 12,137,154,230, 32, 72, 59,154, 90, 33, +239,206,154,227,122, 71, 80, 58,203, 82, 85,144,128, 29,172, 6, 28,215, 27,211, 51,236,135,177,247,166,253, 41,246,224, 0, 85, +249, 57,183,155,181,118,125, 19,185, 22,205, 77, 55, 48, 77, 75, 77, 96,248,153, 37,237, 0,253,109, 39,104,226, 66,121,155,180, + 37,206,100, 36, 99, 20, 43, 90,104,198,118,142,178, 14,105, 63,115,158, 9,232,206,168, 93,237,144,225, 89, 90, 63, 6,250,247, +161,185,146,209,225, 47,118,180,183,128,252,125,236,204, 81,240,162,211,174,105,119, 61, 89,198, 68,172,119,170, 89, 22,250,171, +181, 1,134,122,218, 88, 96,194,134,115,115, 50, 30,233,217, 95, 81,196,233, 14,152, 14,250, 90,141,186, 22,128,205,166,153,109, +248,121,201,151, 26,188,238, 53,120, 89, 79,134,116,208,202,211,171, 32, 35,157,238,129, 94,251,103,212,189,240,197,217,153,250, +214,136,160,200,153,205, 22,188, 22,232,120,112,249, 22,203, 5, 39,125,192,187, 0,215,179,215,110,202,159,127,242,177, 60, 61, + 61,145,193, 0,171,149, 57,185,221,160,173,194, 82, 55, 6, 62,135,241, 48,145, 66, 98,150,193, 40, 96,192,120,128,176, 22, 86, + 43, 72,218, 20,145,161, 25, 75,198,165,195,132,147, 27,188,199,140, 99, 54, 96,154,149, 68,111,192,113, 28,125,195, 54, 46, 50, +143, 9, 26,241,172,215,116,223,194,125,194,153,195, 42,167,162, 69, 68,174,157,240,167,198, 78,223, 31, 13, 24,198,196,123,205, +138, 12,134, 3,217,219,233,202,112,134,120,182,226,115, 93,209,231,122,208,191,145, 7,119,238, 73,189,181,144,127,248,226, 49, +229,178, 83,215, 56,243,121, 79,216,245, 39,110, 45, 67, 49,171,192,166, 27,107, 74,162,218,122, 37, 93,235,160, 27,165, 83, 38, +165,178,197,177,131, 52,102,234,107, 29, 30, 60,164,255, 66,172,239,191,144, 45,112,197,132,201, 13,139,238,212, 7, 64,155,154, +121,228,243, 30, 96,194,246,250,122, 34,199,187,109, 45,152,242,244,221, 48,221, 5, 19, 55,194, 61,130,170, 93,198,233,229,195, +104,103, 49, 7, 53,180, 32,133,101,200, 6, 47, 19,228,153, 59,126,242,118, 71,126,243,213,169, 12,199,115, 54, 69,104, 74,233, +107,146, 15,248, 76,224, 89,169, 84,179,196,194, 64, 64, 11,215, 23,177,252,163,247,222, 37,253, 21,244,211,215, 24,201,175, 23, +242,246,163,135,210,236,222,149, 81,255,148,207,238,139,243, 27,205, 91,117,190,223, 63,255,248, 29, 45,248, 39, 26, 27, 17,118, +139,150, 96,177,222,210, 2,175,214,220,211,115, 60,145,156, 44, 12, 32,167,231, 3, 35,124,196,175,154, 95,226,152,126, 78,185, +233, 12,227, 4,132,139, 80, 20,195,127, 1,107,236, 5,153, 3, 66, 37, 86,100,221,235,254, 88,239, 61,118,238, 17,159, 13, 76, + 9, 11,185, 13,175, 37,114,140, 21, 39,218,104,196,122, 30,255,143, 95,189,228,248, 27, 15,227,157,110, 73,254,250,189,150, 86, + 49,121,249, 63, 63, 61,147,243,193,146, 55, 49, 22, 75,172,158,243, 85,222, 36, 90,125, 3, 48, 68, 73,196, 13, 1, 39,168, 56, +205,255, 58, 48,215, 30,183, 11,199, 78, 24,218,217, 64,197,127,124, 79, 43,235,234,140,163, 6,136,208,224, 26, 92,245,151,164, + 90,193, 5, 14,187, 3,208, 14, 80, 1,118, 91, 37,118, 46, 39,253, 37,171, 67, 54, 47,250, 63,184,193,136,251, 85,103, 66,143, +132,128, 81, 61, 30, 80, 40, 95,185, 56,197,155, 15, 97,139, 82,190, 46,187, 90,173, 69, 65, 36,159, 93,233,135, 47, 24,173,196, +248,199,214,229, 97, 36, 14, 96,135, 56,159,220,180,251, 75, 34,227,205,115,108,185,241,248, 30,128,148,199,251,128,215,110,234, + 45, 13,196,102, 33, 99,210,129, 1,247,179, 49, 53,228, 41,255,138, 17,138, 24,168, 15,215,164,144, 53, 16, 96,165, 24, 72,187, + 81,208,130,104,194,135,217,139,173,144, 25,206, 87,236, 92, 23,110, 92,101, 29,142, 1,160, 80, 53,211, 92, 36, 49,250, 32, 70, +196,192,233,172, 28,130,152, 32, 33,207, 18, 30, 84,254,254,237,239, 94,201,255,244,203, 71, 50, 36,176, 46,210, 36, 86,144,145, +254,254, 98,176, 70,239,197,157,232,193, 94, 91,198, 80,236, 27,106,210,211,110, 96, 55,187,144,238,209, 30,187, 41,140,168,164, +188, 16,125,155,226,205, 67,106, 20,239,239,102,165, 69, 62,127, 78, 15,244,140, 9, 17,138, 93, 19,237, 16,166,250,158,145,204, + 70,240, 84, 46,233,117,175,231, 77, 59,125, 97,227,115,116, 11, 75, 22, 80, 9,171,103,118, 46,220,221,165, 26,247,129, 51, 67, + 73,182, 32,176,196,233, 85,151,233,147, 60,227,247,249,142, 98,133, 32,131,132,158,161, 56,204,140,255,197, 88,145,150,154, 64, +136, 2,136,180, 54,170,218,146,139, 71,145,163,157,142,252,229,199,135,114,255,104, 71, 26, 90, 40, 97,223,138,159,143,241, 33, +185,220,250,153,207, 46, 7,210,159, 60,151,229,124, 44, 43,232,236, 23,106,242,234,188,199,135,157,227,115,152, 93,128,134,146, +203,185, 14,201,118,232,213,114, 69,238,119, 43, 20,111,249,234,245, 13,147, 50,126, 54,237, 68, 99,147,148,220,176, 50,143,165, +169,221, 92,234,254,150,139,115, 28,155, 82,158, 53, 50, 20, 62,118,124,120,255,152,240,120,105,113, 35,102,251, 88, 68,197,237, +174, 13,174, 43,212, 28,151,161,125, 29, 13, 93, 82,224,159, 3,197,165,191,143, 28, 38, 34,240, 45, 80,111, 76,228,123, 11, 42, + 12, 2, 83,137,163,252, 36,239,143,141, 42,215,122, 43,106, 90, 72, 35, 81,167,239, 37,195,142, 39, 34,189,209, 24, 22, 38, 58, + 3,170, 38, 10, 0, 4,118,156, 77,120, 34,228,253,128,230, 43,133, 66, 66,153, 87,179,111,181,207,131,243, 12,212, 55, 70,191, +185,108, 66,197,180,197,194,232,123,247,247, 90,228, 20, 31,116,155, 44,180,166,224, 13,235,153,135, 70, 1,199,141, 72,148,209, + 82,187,251,172,148,161, 45,143,169,139, 94,155,163,253,125,249,250,251, 39, 60, 27,129,163,162, 14,198, 99, 7,124,138,185,134, +233,207, 35,202, 79,227,122, 66,172,169,211,168,106,193,159,161, 30, 0, 10,114, 80, 70,215,235, 91, 82,236, 16,207,252,141,111, +212, 90,167, 44,185, 70, 33, 5,121, 87,174, 74, 2,222, 43, 12,226, 40,115, 26,218,132, 8,254,236, 30,171, 74, 49, 71, 56,119, +206,241,252,135, 49, 56,236, 6,146, 52, 77,126,182, 14,250,251,152, 83,181, 32,237,212, 19,187, 79,180,229,213,179, 57,211,103, + 9,202,136,144,133, 13, 93, 97,201,162, 88, 19, 80, 20, 22, 72,111,186,190,190,150, 7,199,199, 84,153,195,228, 99, 79,207, 60, +168,176,183,125,237, 58,181,104,130,183,220, 3, 45,196, 31,191, 58, 99, 49, 13,122, 84,156,130,248, 48,125,157, 25,195,130, 35, +125,196, 38,207,254, 11,116, 57, 11,107,223,149,138, 0,102,133,198,136,162,128, 10,174, 7,166, 16, 96,101,104, 34,109, 55,218, +242,240,120, 95,187,219, 10,239, 55,146, 49, 98, 0,174, 15, 38, 80, 60,231,122, 95,105,216, 66, 59, 96,155, 6,239,117,107,114, + 51, 9,249,156, 35,222,162, 72,234, 52,202,156,138,141,157, 24, 83, 89,166, 84,236, 92,108,108,250,132,226, 10,197,112, 85,223, +235,207,126,122, 44, 95,124,115, 66,128, 28, 96,173,154,122,244,218,248,122,111, 87, 26, 67,245,217,213,226, 2, 13, 30,116, 66, +128,111, 66, 51,208,215,100,142,213, 14,174,231,221,131, 61,121,126,114, 34, 35,189, 86,191,255,234, 43,237,232,235,242,238,189, + 67,201, 44,110,100,168, 49, 18,211, 30, 76, 70,155,245,170,220,221,235,112,237,133,248, 62,214,183,246,252,244,134,133, 2,232, +156,141,214,174, 94,139,153,220,220, 94, 82, 63,101,161,141, 26,168,157, 4,164,235,243,143,127,208,201,195,119, 30, 77, 33,158, + 57, 76,128,154,213, 10, 39,125,208, 19,129, 12, 47,166,135,165,156, 41, 61,194,204, 12,107,213, 57, 76,114, 42, 21,107,180,176, +107,215,103,232, 70,243,220,253,195, 7,146,185, 30,173,229,157,227,154,188,187, 95,149,125, 56,212,104, 64,190, 90, 24,255,173, +158,207,216,126, 46,178,153, 61,111,174,235, 6,109,173, 30,147,162,134, 93, 7, 69, 41, 60,179,188,203, 17, 48,131, 49,147,167, +157,247, 76,254,248,122,192, 49, 60,146, 21,192, 93,251,181,156, 60,191,156,200,179,235,185, 86,219, 1,229,100,247, 31, 21, 52, +248,101,228,112,175,194,132,141,145,206, 87,207, 7,114,187,236,201,145, 6, 74, 8, 91,224, 85, 39,129,237, 9, 49,194,205,108, + 50, 78,169, 46, 36, 26,147, 72, 94,103, 84,130, 36,189,187,219,145,134, 94,152, 31,191,119,199, 30, 38, 10, 41,216, 94, 50, 77, + 28,180,176,100,135,157, 53,245, 43, 0,177,144, 88,194, 37,215, 17, 87, 51, 39,180,194,234,212,124,164, 51,220,165, 71, 68,190, + 99,109,193, 68,228,124,161,233,191,227,219,184, 19,213, 33,104, 21,139,141, 33,199,161,163,143,247,135,110, 22, 7,169, 91,133, +121, 76,196, 32, 3,205,241,177, 86,173, 19,189,249,122,246,136,180,167,144, 9, 85,181,204, 78, 19, 19,129, 14, 20,116,244,129, +186,209, 96, 87,202, 23,185,175,245,161,253,236,155, 35,152,239,140,112, 0,182,249,213, 87, 23,242,193,113, 91, 62,121,180, 67, +190,249, 92, 19,197,171,193,130,236, 0, 60, 71,120,223, 72, 30, 25,238,254,109,172,134, 29,127,134, 58,208, 27,125,240, 43,154, +208,235, 4, 42,125,113,185,148,145,182,250, 55,250,230,178, 64, 70, 69, 48,227,153,234,223,193, 90,114,197,194, 45,212,130, 34, + 91,172,114, 76, 79, 47,100,151,156, 8,218,114,255, 32, 0, 97, 92,154, 26, 33,144,229,192, 66, 49, 33, 56,142,254,209, 98,170, + 91,236,250, 92, 87,138,213, 14,120,217,126, 58,234,142, 98,103,128, 18,110,247,195,158,216, 62,142,220,113, 6,124,195, 99, 16, + 77, 15, 3, 26, 77,156,237,102,141,123, 63,140,186,204,223,192, 88, 1,161,243,187, 6,162,190, 80, 44,218, 30, 31, 10,114, 26, +200,254,240,221, 99,142,239,107,213,170, 41,142,225,103,130, 58, 9,165, 17,207,204, 35,224, 44,133,194, 1, 43,134,131,110, 91, + 46,135,115,242,224,205,182,119,195,192, 12,225, 26, 32,101,155,181,188,188,127,255, 62,131,219,204, 89,173,206,180,242,158,173, + 22,188,159,192, 28,144,230,197, 29,123,214, 25, 92, 88,183,132,192,201,207,149, 49, 22, 6, 10, 59,147, 72, 53,128, 93,106,246, + 16, 37,198,144,224,245, 21, 27,179, 27,187, 36,107, 29,186, 3,112,226,252,155,181,165, 37, 30, 74,195, 98,124, 31, 25, 62, 6, +223,139, 66,138, 62, 11,235,152,123, 74,195,176,228,244,253,216,248, 28, 22,149,152,112,197,206,157, 12,247, 13,231, 27, 26,241, +153,196, 1,192, 98,155, 23,148,181,152,165, 15, 61,180,232, 65,231, 89,154,166,117, 46,103, 46,133,237, 90,145, 69, 57,138,251, +251, 7,117, 22,100, 21, 76, 14,181, 59,245,245,236,174,169,129,178,230,120, 25, 19, 27,128,212, 96, 73, 58,215,235,135, 36,142, + 88,176,187,187, 39,215,131,161,204,167, 19,198, 5,248,112, 23,194, 60,215, 8,104, 16,104, 72, 3,224, 40,180, 35,198,176, 72, + 93,242,103,129, 42, 7,177, 31, 40,185,129, 66,248,209,123, 15,228,213,201,185,156,157, 92,176,207,134,132, 52, 78, 50,252,176, + 86, 94,188,229, 53, 18, 3,128,162,113, 99,226, 48, 72,104, 72,214,177,187,174,137,188,193, 41, 18,128,152,196, 46,246, 88,199, +235,113,194,233,177,176,242, 99,113,104,102, 99,255, 36,212, 20, 40,178,104,202,103,243,198, 12,208, 88,216,105,212,245, 30, 93, +219, 52, 68, 19, 90, 76,176,212,138, 32, 83,196,138,211,139,115, 57,220,191, 35, 65,177,166,223,155,149, 23, 47,191,148,200,203, +147,226,246,238,195,123,212,133, 63,208,164, 7,186,101,134,205,152,219,201, 98,125,161, 69,233,201,213,112, 43,118, 66, 70, 18, +142, 23,252, 33,242, 89,167,155, 96,184, 8,240,198,193,108, 0,218,159,205, 23, 29, 32, 51,154,188,170, 84,109,195,250,228, 84, +155, 70,216,195, 34,113, 45,214,230, 66,199,137, 84,104,235, 17,174, 64, 2, 51,213,129, 44,119,165, 52,213,179, 80, 50, 63,120, +253,153, 48, 51,194, 20,245,226,182,207, 66, 62,155, 44,100, 6,237,249, 76,158, 73, 29,102, 47,184,212,104, 66,158,143, 55,242, +191,255,171, 47,228,151,191,184, 43,143, 31,247,100, 48, 79,168,255, 95,171,228,228,244,106, 44,189, 1, 36,175, 3, 82, 71,209, + 32, 82, 46, 86,147, 35, 26, 59, 80, 92, 75, 90,128, 3,105, 14, 0, 28, 30, 17, 36,254,211,179, 11,121,121,114, 38,127,250,227, +247,181, 25,168,106,242,191,101,220, 25, 79,103,230,126,167,201, 29, 52,234, 98, 30, 66,110, 45, 57,237, 45,100, 60, 25,145, 98, + 89,107,117, 8,220, 93, 77,111,229,201,243, 19,230, 22,207, 81,193,151, 90, 45,131,199, 62,155, 21, 41,165,141,226, 40,235, 28, + 22, 17,159,214,108, 68, 98,238,212, 17,158,160,170,135,189,252, 77,127,201,149,226,209, 91, 29,217,237,180,184,190, 0, 99,237, +238,189, 2, 5,157, 50,255,252, 79, 15, 52, 81, 20,181, 2, 89,209, 98, 14, 86,113,127, 60, 31, 82, 87,182,219,204,201,173, 6, +113, 80, 14, 18,183,239, 33,229,194,224,144,252,179, 57,198, 23,161,141, 93,240, 43, 67,218,106,204, 47,132, 72,204,151,154,208, +255,183,191,123,197,132,241,222,113, 83,254,151,127,254, 30, 19,249,135, 26,244,166, 51,236, 82, 97,129,166,193, 83,171,244,213, + 76, 43,142,122,142, 95,187,153,194,236, 61,166,143, 52, 60,178,209,173,130, 90,179,134, 99,219,114, 99,212,181,112,177,165, 17, +161, 59,128, 85, 32,129, 56, 24,199,131, 15, 21, 36,148,139, 37,176,128, 34, 46,209, 86, 5,205,248,239, 6, 94,203, 18,136,103, + 50,184,230, 11,172,157,235,100, 32,181,182, 86,240,197, 22,119,218,212,182,231, 5,199,235,198,110,220,100,232,112, 32,107,195, +200,161,134, 19,211,240,166, 55, 55,199,166, 33, 19, 44,222, 83, 46,103,154,224, 40, 80,240,247, 77,141, 18, 95, 13,128,240, 61, +166,180,109, 93,139,132,123, 59, 77, 34,137,135,121,120,211, 11,247,183, 36, 39,121,105,215,106,128,177, 74,161,200, 0,145, 13, +178, 46,184,152, 53,104,226, 57,126,174,103,254,234,255,215,255,243, 84,238,116, 74,180,113, 69,213,119,126, 59,213,107,161,221, + 97, 49,103, 65,125, 35, 78, 9, 43, 35,215,183, 67, 57, 25,222, 72,112,154,112,202,176,247,243, 3, 73,138,121,121,185, 46, 73, +185,221,146,205,176,175, 7,122,101,171, 5, 61,196, 99,173,126,111,180, 60,197,195,129,162, 8, 59, 47, 36, 0,140,140,231,110, + 20, 14,101,167,124,190,184,213, 53, 64, 98, 77,220,232, 46,227,190,214,119,172, 10,115, 56, 11, 56, 90,181, 61,176,239, 64, 91, + 6, 2, 2, 7,152, 78, 98,164, 41,109,182,116, 45,252, 6, 65,152,227, 67,131, 36, 57,250,151,105,223, 35,176,123,190,241,249, + 95,159, 95,202,243,114, 40, 21,253,124,213,138,129,167,182, 90,137,137, 1,207,176, 23,197,142,255,242,124,198,174,210, 84,226, + 60, 78,150, 40,192, 65, 90, 89,196,100, 22, 56, 16, 84,232, 70,143,135,237,188,236,182,202, 90,249, 87,229,115, 45,188,232,169, +238, 68, 34,210,137, 16, 12, 48,176, 35, 27,234,223,219, 72,217,212,160, 80, 28,161,147,247, 29,101, 20,220, 94, 34,255,169,211, +224,191,145,169,117,130, 55,190,103, 5, 9,121,245,145, 37,252,196,237,104, 19,151,228, 29, 68,203,117, 91,182,178, 50,213,169, + 96,123,166,112,125,224, 14,200,235,229,191,209,114, 32,187, 32, 52, 19,141,217, 98, 77,244, 51,138, 23, 80,155,140, 22,107,197, + 46,180,218,231,107,167, 76,233, 40,108, 25,135, 35,201, 56, 80, 35,245, 44, 22,107, 22,193,216,237,115, 90, 19, 24,198,128, 66, + 37,152,248,105,194,192,179,129, 41, 21,192, 66, 0,219,130, 23,141,247, 80,167,176,143, 48,120, 17,196,149, 49,140, 11, 30,196, +201,124,198,226,168,214,232,104, 66,169,176,171, 63, 62, 60,148,167, 79,159,154, 24, 72,108,153, 23,147, 61, 36,116,220,104,116, + 63,199,221,186, 38,145, 25,187, 37,208,110, 1, 32, 44,107,129, 13, 32, 47,174,245,203,171,145,100, 10,101,129, 23, 11,226,154, +161, 3, 76,112, 11, 83, 60,150, 60, 16, 38,210,247, 11,165,199, 13, 39, 15,250,153,181,232,136, 66,120, 35, 44, 56, 74, 77,125, +239,125,135, 34, 39,155,193,233, 27,136,163,220, 58,173, 23,113, 3, 78, 43,150, 76,181,102,235,176,134,120, 91, 41,151,120,118, +218,205, 6,169,123,128,235,195,225, 50,212,235,143,251, 84,175,215,229,228,236,156, 52, 57,236,111, 87, 90,144,191, 60,121, 77, +253,243, 92, 80,144,139,155, 27, 38,161,195,189, 59,242,205,183, 55,114,118,122,193, 36, 61,231,170,211,222, 19,139, 50,125, 31, + 63,121,120,192,194, 12,111, 14,252,246, 66, 46,179,181,245,245,157,164, 54,238,177,233, 12,192,160,102,227,240, 33,177, 60,127, +125,110,170,115, 0,163,149, 27,114,114,121,201,134,135,146,201, 16, 90,114,103, 12,152,140,227,189,150,180, 52, 62,189,188,154, +114, 90,131, 66,235,238, 94,193,237,192, 51,140, 7,151,131,145,233, 80,232, 85,159, 76,135,108, 66,186, 90,148,148, 53, 6,161, + 97, 4,150,160,204,102, 50,144,138, 62,148,151, 23, 19, 59,171,155, 5,119,212,148, 92,158,207,248,124,173,146,165,212, 27, 59, + 44, 46, 66,106, 42, 84,120,239,121,230,245,179, 63,126,249, 82, 58,205, 22, 25, 76, 76,192,144,234, 30, 15,228,215, 95,252, 81, +206,245, 92,253,232,126, 87,175,251,140,159,163, 63,153,115, 66, 85,215,107, 74, 60,128, 38,213, 15,170, 69, 57,239, 77,121,221, + 59,221,174,116,245,121, 23,205, 35,237,189, 68, 6,183, 55, 92,231,224,140, 83, 77, 82,239,225,219,247,246,229,249,217, 13, 99, + 23,168,176,188, 23,177,207,162,198,214, 32, 9,233,184, 96, 18, 97, 95, 15,108, 20, 80,254, 95, 61,121, 37,207, 78, 46, 37, 92, + 78, 36, 95,110, 75,167,189,171,205,149, 62,227,127,249,168, 43, 79,123, 51,121,113, 61,162,215,113,167, 81, 51,177,127,125, 24, +134,115,227, 77,162, 10,244,157,168,125,186,235, 20,215,233, 2,249, 77, 48, 76,108,227,119, 90,121,106, 5,146,209, 27, 95,201, +122,206,182,209, 30,106,140,174, 4,122,183,122, 54, 10,154,104,242, 37,125,112, 94, 64,124,160, 36,137, 62,212,183, 90,137, 7, +250, 11,240,183,127,255,237, 21, 59, 62, 4, 65,104, 70, 99,103,178,210,206, 63,175, 9,232,124,182,226, 3,218,108, 86,141,250, +177, 49,180, 47,246,217,184,145,236,154, 0, 10,211,247, 17,229,172,123,193, 5, 34, 39, 56, 50,100, 34, 59,155, 31,252,147,152, +213,184, 27, 5,235,197,142, 23,114, 80,174,201,163,118, 44,191,250,190,207,106, 20,251, 14, 96, 0,240, 47,246, 35,188,232,224, + 38, 34, 41,162, 83, 14,156,190, 51,105, 70, 89, 62, 88,182,217,132, 63,121,134, 59, 72, 92, 7, 36,190, 78,181, 36, 7,213,144, +137,104,166,215,122,183,136, 57,254, 76, 11, 38, 61,172, 85, 13,118, 81,137, 69, 3,170,180,112, 99, 72,127,223, 61,249,232, 90, + 9,226,163,221, 98,100, 0, 69,223,130, 35,167, 40, 12, 34, 17,121,207,151, 55, 19,249, 71,237,216,255,251,159, 31,147, 3,121, + 59,117, 90,222,155,128,157, 35, 45, 91, 55, 27,114,225,123,183, 51,233,221,192, 89,110,194,113,210,255,253,233,169,188,253,238, +158,228,181,218,191,185,121, 45,125,237,126, 38,240, 17, 23,235, 84, 61, 7,161, 65,193,146,238, 9,217, 49, 51,232,153, 48, 14, + 69, 51,156,192, 10,170,236,192,249, 72,207, 52, 48, 21,176, 2,208,135, 94,220,168,189, 90,201, 56,119, 53,235, 82,124, 71,243, + 73, 91,157,244, 30,197,137,169, 78, 17, 24,231,232, 63,236, 6,157,234, 89, 42, 60,130, 81,188, 32,200,102,205,195,156,174, 99, +232,248,203, 69, 43,226, 88,212, 64,215, 63,107, 62,245,177, 57,163,101, 3, 59, 16, 24,231, 1,149,139, 81, 97, 42, 53, 35,219, +245,142,233,131, 27,226,220,219,106,177, 3,253,141,196,254,105,108,212, 55,252,105,173, 92,113, 43,156, 88,142,247,187,196,165, + 12, 39, 99,227, 64,251,214,229,193,104,133, 43, 2,207,174, 41,186,188,208,225, 47, 80,144,226,253,226,154,227, 92,209,107, 29, +188,114,120, 71,235,185, 26,106,165,158, 56,134,138,231,146,170,108,173, 62,237,247,145,243,119,224,222,214,247, 28,167,221, 64, +125,246,153,146,237,136,223,243, 29,215, 29,139,183,200, 38, 3,152, 54,249,206, 18, 25,171, 10,116,173, 40,222, 41,160,161,207, +196,112, 22,211,217, 12,227, 99, 4,234,213, 90,139,212,146,105,199, 67, 61,174,234, 71,252,156,208,138, 88,227,218, 64,221,110, +185, 50, 69, 51,125,173, 35, 13,208, 16,170, 66, 44,193,231,198, 84,224,242,118,198, 17,239,100, 22, 51, 89, 84,203,144,251, 92, + 72,206,131,203,217,138,103, 20, 69, 44,220, 7,151,139,169, 62, 62, 99, 67,171,103, 67,118,222,245, 90, 67, 99,202,200,105, 85, +192,193, 42,225,152, 54,230,216,211, 62, 7, 24, 54, 11,208,222,138,198,253,118, 83,114,238, 55,129, 98, 71,162,252,232,131,183, +180,243,237,201,116, 48, 54,182,141,216, 56, 30, 9, 0, 0, 92, 58,154, 73,134, 32, 94, 22,161,232, 68,193,166,160, 71,106, 22, + 27,121,119, 95, 83, 28,188, 77,172, 98,223, 40,169,129,187,231,156,162, 80, 77, 80,220,125, 48,107,218,216,105, 21, 96, 69, 83, +172,213,217, 53, 67,121, 12,138,105,144,110,205,208, 40, 72,248,124, 79, 86,125,247,252,123,188,222,152, 22, 34,238,193,197, 12, + 76,134,235, 73, 40,143,159,126, 39,143,238,252,181, 28,223,125, 75,147,194,153,254,236,153,197, 77,171, 58,220,164, 6, 84,191, +103, 46,214,155,106, 30,113,123,145,137,201,164,222,240,190,251,122,160,184,241,108,102,124, 3,250, 1,253, 15,122,112,167,115, + 40,123,133, 38, 53, 39, 64,216,136,162,128, 46,133,121,174,164,244,235,155, 1,197, 84, 48, 94,199, 10,182,156,247, 8,186,123, +118,214,147, 59,251,187,100, 24, 65,254, 21,207, 6,206,238,120,216,231,168, 25, 6, 51,235, 56, 67,154, 26,138,184, 5, 38, 94, + 97,150,211, 35,116,179,175,207, 7, 50, 94, 38,252,236,208,185,192,123,234, 54, 74,156, 66,140,250, 83, 41,150, 59, 98, 82, 40, +214, 0, 96, 90,137,226,144,207,165,216, 52,240, 6, 76, 11,210, 30,215,108, 26,128,140,255,250,241, 99,210, 56, 31, 30,182,165, +158,159,217,228, 12, 19,107,128,253,244,107,176,146,171,104,129,114,247,176,193, 93,250, 89,111, 46,207, 95,206,244, 58, 32,233, +118, 53,246, 84,244,245,175, 73, 33,172,149, 12,200,125, 53, 88,240,108,224,158, 70,174, 73,197,231, 13, 35,243,155,231,228,114, + 99,147,232,141, 3,108, 3,183,131, 34,231,237,227, 93,185, 25,250,196, 60,129, 41,129, 98, 62,243,244,108, 32, 47, 70,144, 92, + 12, 73,107, 64,194,131,168, 62,110, 16, 70,101, 24,167,192, 81,204,226,174, 73,183, 58,242, 5,119, 84,208, 38,223,104, 39, 7, + 30,115, 12,154,149, 73,143,177,226,242,196, 0, 68, 68,195, 3,164, 5,223,234,101,104,230, 5,250, 0, 45,198,107,249,244,171, + 43,121,247,110, 91, 10,250, 61, 55, 83,243, 79,134,185,202,231, 47, 71, 60, 48,141, 74,150,163, 19, 80,159,170,160, 78,212,178, +146,228,114, 68, 93,226, 1,206,145,130, 19,114,132, 23, 69, 6,246, 9,152, 88, 12, 29, 13, 26, 10,170, 76,116,251,116, 50,139, +140,114,183,213, 3, 35,216,202,185,206, 37,206, 8,100,173,149, 92, 33,145,111, 78,135,242,241, 49,196, 55, 2,121,126,179,148, +187, 59,120, 15, 57, 55,102,183, 46,135,206, 70,126,224, 16,153, 70,185,163,119,117, 98, 11,180, 48,118,210,157, 12,154, 49, 63, + 7, 14,201, 65,197, 39, 61, 13,171,136,139,254, 68,222,213, 67,112,111,191, 41,191, 59,157,176,226,131,224, 0, 14, 11,246, 77, + 87,131, 25, 63, 91, 18,155, 14,189,117,108,218,105, 66, 69,137,227,188,144,234, 91, 28,137,194, 81, 43,137,156, 70,184,167,197, + 68, 78,254,254, 15,167,114,212, 46,112,140, 9, 58, 6,198, 77,102, 7,152,112,100,153, 35,175, 28,168,209, 80, 43,216, 58, 17, +251,173, 90, 94,142,238,237, 74,165,214,182, 93, 28,252,203, 97, 41,234,219,222, 30,238,106, 75,103, 57, 90, 46,150,173,168,194, +232,220,237,112,211,105, 65,194,251,178,217,162,174,125,215,137,115,133, 1,117,164,196,170, 85,187,160, 30,185,161,134, 10,150, + 45,142, 3,149,173,183, 45, 86, 28,168,200, 55, 20, 43,246,216, 28,231, 33, 97,164, 29, 62, 11,189,136,187,124,130,242,208,157, +106,245,139,209, 55,184,175,199,119,246,165,213,174,243,108,179,235,119, 62,234, 4,139, 69, 27,135, 46,143,105,148,209,143,237, +172,164, 96,184, 92,198,198,183, 84,212, 66, 96, 78, 76,172,133, 90,218,137, 21, 18,165,114,153, 15, 62,206, 83, 77,187, 0, 0, +229,128,132, 69, 20,203, 57,144,156,231,180,250,197, 51, 97,155,130,147, 23,205, 58, 32, 96,134,114,161,230, 92,136, 73, 18, 19, +160, 27,225,211,189,208, 21,213,246,186, 22, 8, 88,160,120,118,197,210, 21, 83,250,117, 54,133, 72,149, 32,237,226, 18,233,157, + 56, 53,170, 20,120,199,238, 95,152, 44,225, 39,142,157,112,146,100,236,158,107,144, 70, 34, 4,128,118, 53, 11,249,117, 68,108, +139,105, 79,155,153, 76,134,193,202,246,210, 66, 1, 35, 72, 68,103, 28,239,121,200,239, 51, 42, 24,206,147,137,123,196,124,182, + 47,110, 87, 50, 94,152, 35, 28,112, 34, 79,110, 34,249,232, 80,159,111,141, 63,163,201,194,188,221, 3,113,235, 22,232,207,235, +107,232,249, 69,247,138,187,184,208,110, 25, 69, 65,171,213, 97,241,214,104, 54,101, 79, 63,195,139,179, 51, 34,133, 3,135,180, + 7, 67, 1,138,106,167,253,165, 91,211, 0,168,152,103, 96,207,225, 94, 96,244,138,209, 55,232, 98,116,205,195,139,230, 88,160, +123,252, 60, 14,196,198,238,219,196,109, 54,209,138,116, 84,244,146, 27,174, 52, 98, 91,105,121,206,111, 34, 77,130,190, 1, 7, + 65,152,231,115,224,164,122, 17,176,115, 57, 3,254,154,116, 50,232,107, 49,187,113,104,255,167, 58, 10, 80, 29,132,252, 49,116, +198,203,197,174, 38,146,130, 51, 10, 17,198, 67,172,229,182,231, 74, 12,239,131,102, 2, 46,109,197, 76,196,162,202, 11,231,210, +191, 57,211, 55, 84,149, 71,119,239,202,228,155,239,201,146, 65,161,106, 12, 6,159,231, 27,187,241, 57,100,151,193,154,136, 61, +183,247,182,164, 13,109,126, 83, 3,180, 9, 72,192, 9,196,138, 22,187, 48, 72, 33, 43, 40, 11, 35,174, 60, 19,221,219,111,125, + 32,205,106,129, 35,123, 92,111, 76, 42,129,191,201,195,249, 76, 11,143,254,112, 70, 67,153, 7, 7, 77,114,214, 71,139,107, 41, + 5, 27,105,148,214,242,251, 87, 19,138, 53,197, 27, 45, 20,244,207,128,254, 71,119, 12,199, 54,143, 83, 41, 80, 89,225, 5,144, +215, 2, 87,147,114, 57, 39,154,145,228,118, 50,226,115,215,170,102,101, 26,198,204, 17, 59, 13, 80,253,214, 28,131,207,181,177, + 72,216,173,235,243, 88,177,216,138,157, 57, 41,159, 88,183,105,241, 15,218,109, 26, 67,160,113, 15, 57,218,223,126,254,133, 44, +151,239,202,253,195, 29,109,192,132, 0, 91, 38, 94,172, 46,245,254,105,216, 97, 49,130, 81,248, 59,250,235,234,102, 42,253,241, + 80,194, 66,137, 19,205,253,195, 99,109,102, 42,210,187,190,164,199,202,116, 17,145, 29, 83,211,247,135,201,146, 97, 52, 76,112, +136,192, 64, 42,208, 89,241, 1, 69, 81,159, 14,111, 38,131,252,228,213,153,228,242,101,105,105, 67,180,187,147,231, 73,203,188, +208,132,209,155,174,233, 25, 59,210, 7,110,180,184,213,139,181,161,159,120, 76,148,111, 68, 17,132, 20, 36, 39,110,192,233, 39, +246, 16, 3, 29,125, 49,152,243,200,131, 99, 14, 66, 39, 68, 15,176,195, 68,231,254,240,192,136,246, 56,116, 13, 77,206,207, 95, + 12,136,120,245, 16, 52,103,145, 28,236,183,164,191, 48,194,253,120,169, 15,221, 36,228, 72,228,222, 65, 75,122, 35,243,122, 30, + 77,150, 50,242, 86, 18,233,247, 87,154,101,233, 13,215,212,229, 53,132,189,176, 26,198, 46, 2,114,134,157,122,158,224,190, 8, +242,172,122,163,159, 93,173,120,227,124,253, 59,128,217,146,216,198,178,180, 44,117, 84,160,254,120,197, 7, 29, 93, 23,192, 99, +111,233,123,254,249, 59, 59,242,245,171,158,124,123,218, 23, 63,246, 13,196, 54,158,203, 8, 86,144,129,239, 64,118,166, 7,141, + 34, 37, 74, 82, 58, 80, 10, 94,242, 77,214, 48,140,216,225,103, 51, 21,118, 95,216,167,195, 0, 37,136,215,242,182, 86,123,127, + 56,155,218,200, 89,111, 98, 11,186,214,131,144, 85, 88, 16,228,152, 68,206,122, 67, 45,178, 38,250, 80,229,184,119, 78, 53,184, +119, 43,101,178, 15, 24,224, 56,204, 50,167, 30, 82,232, 16,130,130, 28,163, 56,120,214, 55,183, 35,249,155,223, 62, 99,176,233, +141,180,211,233,143,185, 59, 70, 50,207, 56,221,111,136,247, 80, 62, 87, 79,100,163,145,151, 59,247, 26,156,124, 64, 44, 7, 9, + 29, 9,212,243,205,130,118, 29, 46,200,235,204,102,179,142, 51,238,220,251, 66, 3,165, 17,133,237,184,209,158, 67,102,211, 28, + 4,213,188,159, 88, 21, 15,243, 14,135,116,143, 93,226,244, 28,128,145,206, 99,219,132,101, 0,186, 20,237,158, 34,191,253,146, +249,124, 39, 14,216, 72, 23, 35,140, 34, 53, 57, 34,105,162,130, 6,184,142, 35, 62,173,226,171,154, 92,161,221,140, 7,179,232, +246,212,220, 37,186,100,108,210,177,166,214,133, 36, 10,121,198,239, 53,128,149, 52, 64,100,244, 65,194,231, 5,245, 9, 96, 29, +234, 77, 59,218,100, 54, 12,183,232,244, 12, 86, 33, 65, 81,114,229, 42, 71,237,229, 18, 20, 22, 43,110, 7, 31,200,110,173, 70, + 44, 72, 81, 19, 35,198,123, 64,218,214,232,242,180,214,115, 91,149, 37,168, 80, 90,173, 35, 72,162,136,145,124, 66, 93,106,156, + 3, 36,192, 12, 65,168,129,123, 2,133,103, 1, 99,231,196, 21, 76,203,112,237, 84,241, 76, 74,216, 51,223, 68,135,135,241,204, +231,220, 25, 20,121, 84, 24,244,157,250,153,255,255, 81,213, 35,158, 33,182,169, 11,186, 59,156, 97, 78, 38,178, 70, 93,221,184, +105,138, 83,169,148,153,191,118,218,243, 30,207,110, 1, 84, 72, 13,220,207,207,151,114,176, 83,227,251, 6,213,200,168,118, 32, +253, 10, 71,235,233, 42, 12,231,231, 85,111,194,245, 16,254,108, 78,219, 81, 61,119, 26,143, 38,171,188,220,237, 22,228, 15, 47, + 70,124,255, 13,125,254, 7,195,169, 94,175,178,182,166, 43,114,221,177, 80,221,237,182,228,228,226,146,123,101, 20,207,136, 5, +152,165, 20,202, 77,189,198, 19, 94, 83, 76,181,204, 23, 29,224,205,162,232, 37,167, 62, 71, 20, 26,215, 26,199, 16,248, 22,236, +126, 97,138,132,253,106, 79, 11,218,225,116, 40, 77,136, 21,117, 31,200,217,249,149,204, 16, 7, 28,154,253,174,158,183,253, 78, + 87, 46,175,175, 40, 0, 66,209, 23,116,239,197,146,158,199, 21, 45, 87,163,136,254,162,140,167, 88, 63,145,122, 20, 69, 91, 35, + 44,220, 99,143,148,172, 60,187,101, 60, 31,104, 12, 32,203, 12,170,108,214,241,237,113,223,242,100,142,100,216, 81, 94,235,123, +219,209,152,145,132,218,161,105, 66,187, 29,106, 71,171, 73, 12,207, 3,238, 29,132,143, 0,116, 92,129,110, 8,107,214, 82, 36, + 15, 52,201, 76,244,179,207,166,125,201, 85,139,114,247,248, 1, 1,173,160,117, 46, 66,243,185, 48, 55, 54,179,134, 61,187, 25, +235,231,159, 17,248,139,184,141,243,135, 49,188, 73, 15,155, 62, 4, 70,198,141,106,137,215, 3, 9,183, 89, 41,177,145,202,210, +216,197, 48, 28, 3,141,177,232, 72, 79,207, 78,201, 47,199, 20, 2,120, 0,176,163, 16,251, 81,100,117,244, 89,217,109, 2,239, +210,148,146,118,235,191,253,238, 84,254,217,199,199,218,244,237,211,225,237,195,125,125,222,163,166,124,167,205, 22, 94, 15, 50, +209,165,156, 25,142, 29,237,182,228,195,183,118,181,190,209,164,251,245,149,220,251,197, 3,153,252,221,151,114,255, 81, 91,246, + 52,150, 79, 53, 79,157,126,215,147,243,155,137,124,252,225, 67, 57,189, 50,107,106, 2,117, 89, 84, 89,225,153,117,204, 28, 0, + 78, 67, 61,195, 40,168, 80, 56,193, 85, 17, 64, 58,200,185, 30,236,116,229,249,171,215,242,252,245,169,252,242,231,159,200, 97, +179, 68,192,166,239, 25,165,116,185,140,141,226,156,216, 40,238,104, 87, 27,195,102, 40,167,151, 83,125, 6, 50, 60,231,173,238, +142,118,244, 21,185,189, 58,167,158, 62,223, 71, 37,207, 34, 26,130, 92,112, 63, 4,203,164, 81, 45,144, 85,130,247,132,184, 10, +172, 21,116, 71, 2,103,187, 13,236, 73,189, 14, 19,152, 27,217,217,211,248, 86,210, 24,241,235,167,125, 57,189,153,155,110,110, + 22, 26,205, 85,126,200,239,207, 71, 28, 31,101,221, 88,197, 22,155, 34,222,246, 95, 7,156,211, 64,246,100,176, 97,151,159,112, +204,100, 50,124,120, 80,209,209,188,125,152,231, 13,226,200, 84,131,195, 55,250,112, 50,134,235,255,212, 43, 57,142, 64,168,202, +228,198,152,141,114,158,135,106, 71,127,118, 67, 15, 93, 79, 19, 16, 16,211,120, 45,160,228,241, 97, 58,141,162, 73,113,102,131, +173, 8,137,217,221, 37,220,205, 80, 70,149,129, 54,144, 71, 59,182,207, 93, 97,231,137, 93, 90,198,219, 78, 82,151, 20,205,217, +200,239,159,220,202,229, 96, 45, 31, 62,104,105, 50,239,202,113,167,204, 4,216,173, 21,244,225,153,203, 42,179,144,111, 46,110, +228, 12, 43,138,217,194,228,103, 37, 29,113, 38,219,125, 49,186, 3, 88,223,197,146,202,116,190, 81,195,203, 6,182, 55,195, 56, +173,160, 5,211,116, 55, 35,159, 52,187,146,209,235,174,103,128,239,255,245,235, 43,249,242,105,143, 52, 12,140, 34,191,121,213, +151, 23, 23, 19,162,108, 61, 89,184,125,185,207, 17, 54, 18,101, 24,135,236, 60,168,203,204,138,149,150, 16,100, 39, 80,172, 6, +163, 69, 77,210,155,120,169, 15,231,140, 29,126, 64, 16, 91,222,186,226,216,140,106,150,235, 5, 17,192,185,130, 22, 1,122, 77, + 43,149,128, 35, 93, 84,138,133,194,202,129,209,132, 2, 11,129,111, 0, 14, 8, 55,172,156,134,185,117,172,150,212, 17,152,124, +223,246,106,168, 96,211,206,153,158, 1,190,117, 39, 5,231, 27,157, 26, 31, 32, 40, 19,164, 24,134, 78, 72, 38,207,247,237,101, + 50, 91,134,194,154, 94,226,222,150,139, 79,180,173,211,159, 76,187, 79, 27, 15,134,219,162,202,246,202,150,120,144, 88, 16,100, + 0,250,193,244, 35, 33, 79, 86,139,185, 32, 96,247,157,210, 44,197, 81,160,144, 56, 13,153, 31,240, 65,142, 35, 3,198,177, 8, + 28,141,182, 96,190,148, 31,142,235,128, 0, 32,169,227, 90,100,120,144, 85,104, 2, 65,240,116,135, 39, 60,146, 21, 58,224, 74, + 41,195,228, 14, 58, 77, 54, 99,232,233, 70,181,198,235, 52,154,153, 15, 61, 65, 85,145, 77,102, 18,135, 70,198, 53,207,113,132, +108,211, 5,140,237,205, 80, 37,230,103,220,196,230,121,206, 66, 67,146, 45, 27,132, 35,101,255,141,171, 92,146,250, 54,254, 0, + 69, 31,184, 51,154,114,235,137, 87,113, 88, 16,138, 16,185,207,204,233, 80,152,184,110,212,144,203, 72,162,136, 21, 68,152,163, + 8,214,179, 85,173, 20, 41, 40,133,201, 20,146, 6, 2, 51, 18, 18,144,195,166,143,237,118,184,144, 73,158,134, 12, 49, 88,231, +133,107, 3, 80, 97,172,255,170, 31,202, 97, 77,139,121, 61,155, 0, 19, 53, 26,101, 50, 46, 64, 7,106, 86,243,236,232,103,235, +165,204,230, 30,119,160, 64, 18,175, 22, 35,199,128, 40,112, 37, 0,211,142,197, 66, 19,158,196,156,136, 68,241,146,207,143,112, + 21, 83,102,252, 65, 55,182,138, 98,231,152, 85,100,129, 87,213,251,129,107,211, 27, 12, 37,163, 49, 12,170, 97,181,137,249,183, +199,182, 94, 55, 15, 6, 49, 29,126, 20, 2,185,172,137, 75,121,177,209,195, 34,142, 77,197, 9,207, 8,187,194,152,138,133, 38, +254, 2,224, 95,194,249,123,192, 68,137,194,168,161,201, 45, 21, 90, 98,115,228, 10, 89, 20,187, 0, 82,226, 68,161,248, 64,183, + 11,109,137, 74,161, 44,235,225,165,198, 30,125,255,122,166, 80, 24,228,179, 38, 53, 11, 97, 49,196, 79,198, 8,189,151,213, 60, +158,201,181, 12, 48, 21,141,110,181,240,212, 88,231,151,228,159, 62,251, 29,175, 61, 98,103,198,201, 6, 71, 27,211,204,248,240, +222,142, 54, 34,121,202,113,227,223,136, 43, 19, 33,232, 13, 64, 54, 76, 4, 46,110, 7, 91, 64,104, 1, 0,107, 3,118,176,123, + 39, 19, 64,191,234,206,209, 59,124,230,128, 35, 9, 92,145, 46,206,159,195, 76, 62, 77,151,225, 59,109,116,206,123,150, 64,175, +167,162,223,167, 49, 93,147,234, 31, 95,222, 72,187, 86, 38,133,113,230,214, 51, 56,143,135,187,109,121,125,179,146, 47, 95,124, + 35, 87,250, 62,120, 95, 40,114, 54,151,191,255,162, 47,209,103,175,184,190, 58,222,175,209,206,245,239,254,233,177, 22, 93,187, +114,247, 65,199, 10, 87, 8, 69, 69,198, 82,168,150,141,117, 5,154,115,190,144,179,201,104,184,161, 89, 83, 68, 27, 98,211,158, +192, 36, 14,113,224,223,252,195,175,228,207, 62,249,177,188,119,167,169,133,106, 72, 44, 18, 10,250,192,129,112,113, 77, 96,146, +132,220,243,224,168,206,132,125,174,177,120, 8, 22, 75, 65, 11,136, 98, 93,222,125,164,175,169,133, 25,206,116,171, 94,224, 84, + 10,236, 48, 95,207, 59,168,230,134,217, 89, 19, 7,130,107, 52, 1, 85, 80, 63, 35, 44,204, 75,133,137,188,117, 71,244,140, 78, +229, 31, 62,123, 45, 69,208,254, 78,123,115,237, 38, 48,186, 45,240,166,129, 35, 89, 43, 25,221,136,123,104,176, 94, 18, 11,114, + 94,226,198,148, 78, 77, 26,227, 59, 4, 72, 28, 28,113,138, 86,220,199,232, 77,172,229, 77,148, 5, 15, 46,213,132,162,136, 35, + 19,112, 6, 17, 92,241, 26,168, 50, 38, 24,163,123,198, 83,111,233,159, 1, 84, 70,244,121,226, 49,105,239,119,235,116, 80, 67, +130, 12, 87, 51, 46, 85, 1, 76, 3, 69, 11, 7, 30,192, 1, 20, 29,171,200,222,213, 88, 47, 66,224, 70,234,126, 98, 29, 57,146, + 83,144,152, 14,188,201,171,218,152, 30, 23,229, 86,171,110,216,144,254,215, 63,187, 43,247,118, 43, 12, 50,155,208,186, 76, 32, +213, 59,205, 42,187, 54, 32,243,255,238,243,115, 25, 14,237,230,199, 14, 56,136,160,139, 98, 7, 32,161,221,122, 78,139,131, 57, +145,224, 4,239, 33, 33,121,166,207, 43, 73,236,212,162, 60, 42,199,237,228,106, 26,176,202,180, 29, 44,105, 0,252,246, 60,171, + 5,204, 68,138, 65, 68, 29,107,128, 8, 57,126,213,239, 47, 6,121, 75,210,110,167,139,251, 81,209,131,237,107, 64, 47,102, 3, +183,175,141,222,112,152, 19,227,108,227, 96,141,103,176,115,180, 17, 26,254, 22, 69, 69, 64,170,141,191, 13,210,160, 93,192,185, + 8,107, 13, 28,222,219,225,128,122,196, 51, 7, 16, 51, 89, 83, 19,132, 33,146, 60,151,227,123,195,168, 60,116,201, 7, 32, 47, +207,153,158,224,158,167,212, 53, 80, 59, 76,222, 52, 96,224, 75, 53,161,127,104, 10,196, 42,212, 21, 73,248,121,184,159,232, 72, + 8,108,244, 34, 87, 24, 37, 28,135,227,189, 36,110,193,110,167, 50,213, 50, 55, 53,178,208, 1,244,216,141,122,254,150, 34,134, + 2,163, 63, 28,179, 96,179,137,132,241,147,125, 87, 92, 96,172, 74,238,188,103, 99,104, 32,142,247,181,184,154,107, 96, 91,206, +215, 54, 77, 33,187,195,151,209,114,206,175, 65,160, 12, 28, 29, 12, 15, 57,164, 29, 13,175,145, 56, 96,219,134, 6, 32,165, 92, +149,202,126, 80, 29,195,117,162, 46,130,196,212,255, 54,228,234,146,239,179, 92,200,111,109, 82, 55,110,220,138, 60, 92,212, 34, +103, 69,176,210,210,121,180,219,200, 54,244, 76,178, 24,252,120,115,107, 75, 51,184,237,193,211,169, 90, 90,196,122, 14, 57,111, + 48, 5, 75,202, 28,245,255,128,157,128,169, 6,198,165,182, 47,143,217,141,153, 96, 82, 66,144,104,193, 41,145, 65,174,213,167, + 5,166,237,250, 49,141,130,127, 0,129,100,216,127,107, 66,199, 71, 25, 77, 86, 68, 88,227, 89,170, 21,124,118,100, 8,250,158, +103, 8,123, 60,247, 17,153, 37, 9, 59,232,200,204,205,184,198,128,224,202,124, 81,144,203, 78, 65,142,187,101,237,208,198, 20, + 54,162,243,213,112, 41,199,229, 2,169,115, 64,172, 3,185,140, 96, 10, 99,145, 21,193, 91, 11, 9,137,117, 8,244,190,148,153, +232,198,243,107, 77, 82, 54,173, 88,235, 61,108,150, 3,185, 25,218,168, 31,170, 92, 9, 1,158, 38, 86, 67,191,113, 56,225,149, +107,134,121,208,103,225,201,104, 34,237,122, 81,142,239, 30,200,203,139,107, 6,108, 92, 27, 76, 14,112,198, 3,119, 30, 55, 24, +245,110,214,236,192,137,132,119,142, 93, 91,103, 75,234, 86, 4,188,102,139, 69, 68, 74, 48,134,156,212,216, 32, 89, 33,195,251, +142,239, 47, 38,121,247,121,130,109, 97,139,243,134,152, 10,106, 27, 40,110,224,106,163,123,227,132,210,197, 95,172, 16,215,122, +246,226,124,137,207,115,177, 4,132,118, 73, 19, 66,200,181, 89,187,123,196,117, 4,158,155,189,157,251,210,121,241, 66, 30,191, + 60, 49, 48,154,211, 17,247,221, 26,236,243, 39,167,140,169, 44,202,233,113, 96,152,146, 84,247, 0, 49, 5,197, 52,133, 86,138, + 89,118,184,152,126, 48,105, 5,174, 1, 76,150,142, 78, 88,144,142,198, 73, 78,248, 96,126,226, 88,252,169,250, 31, 10, 98,208, +164, 81,212, 31,236,236, 82, 18, 57, 89,143,101, 49,185,229,202, 21,114,193, 40,134,177,238,184,187, 91, 35, 72, 14, 19, 50,116, +201, 40,182,224,206,183,163,247,232,242,118, 44,247,119,202,210,187,157, 24, 11, 71, 95,251,236,242, 86,110,111, 46,228,250,122, + 41,149,246, 74, 58,179, 57,167, 42,216,225, 19,199,177, 50,223,114,140,183, 41,118,133, 51, 61,159,241, 57,199,251,197,164, 15, +133, 2,158, 61,232, 93, 0,155,131,132,255, 68,175, 29,138,245,247,239,117,164,169,137,157,234,122,177,173, 62,170,213, 34, 11, +107,112,246,113, 94,176,230,184,191, 95,146,158,158,223,193, 20,116,202,146,230, 46,248,179,195,133,115, 33,151, 87, 3, 51, 51, +202,219,202,139, 22,219,110,229, 26,109,140, 85, 20,174,140,230, 7, 32, 36, 26,130,222,104, 69,206,253,127,250,163,251,108,124, + 51,119,245, 5,142,119,106,244, 30,191,236,141,152,104, 47, 6, 38, 48,143,125, 54, 14, 10,140, 68,114,174,155,216, 56, 72,126, +146,152,168,188,239, 56,154, 84,135,242,189, 31, 84,189, 9, 93,169, 8,120,114,200, 91,227, 61, 26,160, 38,166, 50, 85,236,168, + 50, 27,238,185,177,111, 51,177, 25,143,149,102,129,188, 43,143,102, 50,144,118, 61, 27,111,184,227,192,216, 38, 97, 85,239,211, + 2,145,128, 86, 3,220,179,106,244,201,159,143, 52,225, 69,172,146, 8,162,114, 93,213, 20,220, 90, 61, 52,192, 13, 96,236,142, +230,183,173,213,209,112, 14,254,172,209, 24, 0, 14,242,217,201,199,102,164,161,255, 30, 52,114,242,159,127,178, 43,191,249, 86, +228,110,183, 70,206,227,103, 79, 47,245, 96, 85,228, 78,171, 36,119,219,101,106, 99, 63,185, 26,203,111,159, 92,203,120,106, 18, +168, 8, 90,177, 30,192,152, 99,242,205, 54,241,222,206,214,242,247,143,175,229, 84, 19,121,137, 34, 13,115,130,114,124,125, 32, + 96, 4, 0, 93,227,200,153,178,172,162,144, 96, 35,140,232,211,206, 21, 9, 66,123, 35,189, 30,115,183, 19, 14, 28, 58,222, 20, +231, 18, 47,113,200,107,147,163,205,122, 57, 11,112,185,138, 9,117,248,102,165, 11, 3,133, 36,209,206,187,156,151, 98,189, 77, +189,109,113, 28,118, 20, 44,205,106,147,157, 51,198,205,161,171,186,121,173, 29, 93,135, 69, 66, 62,112, 59,217,141, 3,171,101, + 44,193,185, 85, 7, 0, 62,216,105, 71,206, 37,204,254,155,108, 53, 1, 54,206,196, 36,237, 22,233, 61,237,118,167,129,227,174, + 39, 78, 25,142,130, 60,190,117, 64, 76,124,145, 33,185, 3, 71,145, 51, 48,100,108, 94,214,238, 90,121,129, 41,121, 71,148,128, + 53, 19, 13,168, 52,101,188, 2,247,245, 52,214,225,104,197,146, 13,121,182,171,144,133, 9, 36,116, 97, 38, 50,139, 22, 44, 56, +144, 32, 72, 47,202, 23,232,250, 70, 93, 2, 72, 45,235,239, 1,132, 51, 23, 53, 67,232,103, 64,147,212, 87,168,107,245, 63,158, + 47, 28,248,205,128, 96,112, 44,243, 27,190, 22,173,109, 57,185,190,214,215,244, 25,228,219,141, 26,159, 11,200,149,226,245,240, + 57, 12,208,232, 76,142, 28,232,144,146,180, 14,148,197,145, 56,249,222,126,154,211, 37, 29,174,165, 40,120,155,140, 8, 59,122, +223,209,214, 18, 49, 29,244,237,164, 35, 49,209, 40,223,233,194, 59, 86,245, 22,149, 77,113,145,108,242, 6,243,224,138, 76, 76, +181,184,211,197,181,211, 99,129,253, 94, 76, 90,165,169,216, 1,216,132, 46,144, 22, 78, 78,223,220, 19, 51, 20, 33,189, 51, 54, + 26, 34,247,255, 78,112, 41, 71,255,243,132, 46, 88,167,195,186,252,197,195,146,212,251,115,125,174, 22, 92,121, 97,125, 3,190, +240,209, 30,198,235,121,142,236, 73,149,212,179,199,162, 26,116,191, 28, 64, 87, 53, 34,219,197, 43,107, 23,212,144,201,100,202, +215, 0,229,232, 26,210,202, 88, 82,234, 25, 56,191,234, 81,253,205,207,228,165,177,219,177,107, 0, 35, 32, 61,183,245, 74,157, +215,171, 88,175, 16,188,219,213,206, 63,210, 4,243,253,117,143,193,151,170,141,180,136,182,251, 64,208, 89, 96, 8,121, 59,175, +158,139,129,226,134,246,166,253, 97,138,131,177,211,199,144,109, 2, 68, 0, 71,195, 52,157,206, 36,209,194, 99,207,169,253,133, + 44,192, 77, 93, 16,186, 12,192, 91,224, 44,220,232,231, 5, 96, 15, 19, 8,241,124,215, 37,107,172,156,143, 9, 36,155, 78, 39, + 90, 60, 14, 89,104, 1,139, 89,201,231,165,213,104,200,243, 87,175, 36, 76,102,242,193,187,111,203, 79,127,252, 19,138,214,224, +254,225, 51, 17,104,234,155, 90, 27, 52, 16, 48,177,132, 88, 76,146,106,197,226, 30, 57, 67, 17,106, 49,228,179, 76,252, 96, 6, +161, 32,175,213,138, 54,133,133,112,150, 94, 55,216, 69,195,144,229,184,124,204,100,137,117, 7,224, 73,129, 31,115,140,142, 29, + 49, 18, 38,216, 8,139,245,152,175,237, 37,166,118,247,248,245, 64,222, 58,170,106,172,218,104,220, 93,203, 55,175,110,121, 6, +246,218, 85, 98, 32,158,157,244,172, 96,214,196, 6,129, 61, 56,184,213, 27, 5, 9,115, 40, 42, 39,250, 30,221,212,171, 44,244, +155,135,144, 94, 37, 48,219, 95, 15, 13, 83,148,188, 17, 42,114, 98,184,108, 16,244, 98, 33,142,225,122, 87, 74, 37, 98, 55, 48, +121, 64,193,129,164,191,116, 42,151,211,155,133, 60,126,254, 76,174,122, 55,114,239,160, 35, 15,247, 23, 90, 0, 84, 56, 41,185, +188, 94,240,107,112,158, 51, 78,150, 23, 53, 52,140,196,106, 26,231, 47, 7, 43, 45, 70, 86,114,231,160, 45,123,123, 29,249,254, +113, 94, 94,157,156,114,202,109,242,214,161,204,227,132,122,251,184, 55,166, 57,159,211,115,157,101, 12, 5,165, 28,138,159, 48, + 82, 2, 29, 25,128,236,204,253,110,149,180,181,254, 36,212, 23, 88,112, 63, 14, 32,199,126,199, 4, 46,154,122, 16,194,112, 44, +237, 90,158,106,100,175,110,231,146,115,220, 98,112,104,131,192,119, 65,195,158,124, 36,231,181,115, 17,131, 60, 94, 41,235, 17, +252,134,221, 9,154, 7,240, 28,189,192,120,198,243,117, 26, 88, 98,118,134, 8, 48,216,229,119,245, 32,194,182,112,133,238,126, + 21,187,234,116, 67, 16,193, 96, 94,162, 16, 76, 41,107,110,138,155,196, 80,186,164, 85, 32,152,138, 73,172,162,168,240,157,149, + 22,113, 1,168,116, 32,181, 58,223,176, 74, 2, 22, 0, 34, 55, 77, 13, 8,232,216, 63,253,238,146,128,180,143,238,183,137, 26, + 95,174,204,218, 46,114,194, 17,152, 98, 32,161,253,228, 81, 75,106,197,156,188,119, 92,151,227,221, 34,105, 20,224,221, 98, 20, +117,165, 1, 7, 84,186, 63,125,255, 64,190,126,121, 43,131,177, 81,222, 60, 7,146, 35,234,149,106, 84,208,163, 15,229, 98,234, +203, 16,227, 88,125,157, 82, 16,203,133, 30,104,188, 71, 32,127, 23, 27, 51,124, 0,240, 98, 29, 5, 78,157, 10,192,163, 5, 19, +220, 96,188, 33, 55, 52,162,158,190,141, 50,115,126,206, 80,226, 38, 73, 69, 94,107,193, 43,187, 85, 9, 84,253, 22,122,157, 33, +174, 97,251,116, 36, 11, 42, 91,233, 51, 60,132, 5,109, 50, 98,162,228,174,134,220, 88, 59, 84, 11,140,157, 52, 48, 32,105, 32, + 57, 99,239, 78,237, 97,250,139, 7,124, 32, 50,110, 71, 77,222,191,211, 48,224,239,221,184, 28, 95,199,209,163,187, 87,158,235, +179, 35,167,106,133,135, 15, 50,143, 40, 0, 40, 7, 11,254,181,254, 66,194, 34,216, 40, 48, 30, 34,249,191,161, 25, 53, 16,219, +128, 74,222,141,109, 61,215,101, 99, 34,128,247,176,114, 30,232,248, 90, 76, 71,170,250,160,133,206, 74,118,187, 50,113,188,247, + 20, 45,146, 50, 12,166,243,169, 6,197, 37, 87, 0, 27, 39,204,130,247,149,170, 64, 81, 64, 4, 1, 54,103,210,181,137,251, 89, + 8, 78,177,163,252, 96,202, 2,113, 15, 58,187,185,235,226, 59,196, 48, 6, 60,176, 20,133,251,212, 17, 18,187, 38, 21, 36, 14, + 40,231,149, 93, 32, 65,241, 3, 33, 10,186, 20,162, 72,208,159,127, 59,153, 83,134, 56, 73,156,245,174, 67,202, 50,233, 39,242, +230,250, 59, 80,235, 27,106,135,188, 49,100, 10, 12, 55, 16,186, 81, 98,224,248,246,158, 43, 14, 77,196,102, 99,222,221,144,182, +212, 98, 19, 88, 0, 92,165, 13,145,117,209,214, 47, 26,227, 72,156, 78,154, 80,232,179, 48,154, 69, 90,176,134, 76,232, 11, 63, +161, 99, 22,144,185,126, 28,113,236,142, 36,142, 73, 15, 28,168,214, 97,188, 45,194,184,234, 16,103, 3,235,238, 13,240, 21, 90, +111,202,227,147,115, 45,156,143,229,195,187, 77,249,234,116,198, 0,222,174,215,169, 37, 48,210,226,188,168,103, 21,218, 22, 80, +172,204, 96, 85,128,110, 29, 3, 30, 88,224,250, 83, 41, 84,154, 60,235, 60, 47, 92,129,141,181, 33,169, 16,148,231,235,253,105, +148,203,164,178,133,235,153, 38,187, 38,127, 30,186,247, 92,144,200, 94, 35,199,174,122,178, 4,237,202,116,196,127,251,135,103, + 18,128, 18,183,211, 54,223,117,136,178,160, 99,132,234, 89,169,224, 28, 38, 19, 3,113,137, 89,187,114, 50, 21, 27,122, 60,227, + 58,228,116,245,192, 34,153, 98, 64,166,134,185, 14,151, 12,234,113,148,184,130,118,195, 34, 22, 49,112, 10,241, 25, 61, 31, 69, +125,182,119,219, 29, 94,139,147,139, 11,125,118, 42,108, 2,176, 2,201, 19,147, 33,156, 70, 96,117,128,123,117,165,133, 99,167, +213, 98, 33, 85, 40, 85, 40,165,187,210, 36,120,163,241,240,155, 39,207,228, 39,239,189, 45,179,225, 5, 17,222, 57,218,129, 90, + 1,138, 6, 11,113,191, 93,171, 50, 89,194, 11, 60,159, 53,197, 60,130,222,168, 66,153,165,232,204, 84,175, 1,164, 93,129, 76, + 71, 1,142, 98, 7,211, 28, 36, 99,202, 21,235, 53,129,217,201,109,127, 42,223,143,134,210,191, 57, 33, 37,186,200,149,129,158, +137,141,169, 90,226, 92, 67, 99,157, 96,188,245,146, 44,148,171, 1,238, 31,116, 20, 98, 57,108,224,181, 60,230, 26, 76,239,110, +244, 51, 70,161,177,132, 86,129, 53, 6, 23, 23,125,185, 13, 34,153,106,193, 3,137,103,240,205, 87,107,189,230,107,143,211, 96, +136,126, 45, 32, 6, 5, 35, 26, 8,191,228,178,108, 48,113, 15, 87, 52, 27,210,102, 8,178,180,185, 44,159, 73, 20,218,221,102, +147,133, 9,206, 7,238, 1, 20,230,150,122,198, 62,124,251, 29,185,232,245,228,244,242,146,147,185,179,171,162,252,236,221,125, + 57,212,102, 25,193,107, 14,187,213,181, 9, 36, 97, 60, 78, 47, 4, 90,121, 7,242,246,157,138, 92, 22, 52,254, 65,124,105,147, +147, 15,222,123,139,224,200,254,237,181,116,235,101, 98,184, 74,244,178,215,124,154, 74, 96,139,197, 60,124,126, 46, 18,245,186, + 2, 83, 64, 67, 23, 76,222,126,253,221,181,220,210, 92, 69,228, 94,183, 44,191,252, 96, 79,190, 61,153,104,130, 50,241,125,152, +215, 55,234, 69, 38,180, 3,189,161,253,217,134, 31, 6, 65, 25,104, 84,142,178, 28,159, 14, 29, 53,198, 3, 72,128, 24,177,213, +202, 89, 6, 42, 36, 82, 11, 74,198, 1,143, 54,102,165, 10,237,229,196,141, 81, 9,216, 10, 76,237, 7,193,232,106,188,102,229, +103, 90,231, 30, 47, 52, 2,192,112,190, 38,112, 33,114, 35,116,163,213,153,107, 18,237, 4,157,251, 16,169, 50,161,240,189,192, + 11,157,210,157,211,181,204, 86, 17,187,133, 74, 25,187,219,132, 70,247,179,249,154,193, 11, 96,136, 75,237,156, 31, 30,212,201, +143,197,235, 97,132, 98, 10, 95, 70,189,193,239, 47,111, 70, 28,195, 98,204, 50, 93,217,144,114, 5,177,102, 47,195,128,123,220, +213, 27,213,155,200,105,111, 32,230, 39, 23,255,128, 54,100,192,176,192, 55, 74, 20,222, 43,228, 51,159,107, 69,135,157, 30,118, + 87,247,186, 53,251, 28,250,217, 78, 6,161,117,174,137,121,244,154,142,150,117,123, 24,213, 29,180,154,122,243,181,107, 25,206, +228, 76, 59, 25, 0, 8, 75,154, 24,145,208, 27,205,154, 76,199, 48, 66,152,105,240,193,142,220,153,138, 68, 26,168, 54,250, 96, +174, 80,149, 91, 18,131,162, 82,177, 96,212, 41, 92, 95,220,183, 5,198,251,142,146,182,226,200,216,246,208, 8, 54,129,181,210, +142, 94,102,116, 19, 80,184, 34,131, 88, 51, 16, 66,215,126,219,157,111,156,202, 86, 74,200, 69, 66,216,132,252,249, 20, 93, 0, + 71,221,243,221, 72,219,216, 4,137, 27, 99,123,206, 96,132,231,215,117,143,236, 90, 54, 27,231,130,231, 84,188,104, 80,146,108, +147,116, 58,118, 39, 16,173,217,146,162, 6,238, 23,167,167,250,210,199, 78,164, 71,152,208, 98, 71,155, 35, 22,132, 96, 37, 75, + 42,157, 86, 77,131, 78, 34, 55,183, 51,174, 60,128, 69,128,224, 68,165, 84,117,227,104,147, 17, 6, 77, 10, 69, 78, 10, 10,138, +162,216,209,220,156,150, 59,169,158, 98, 70, 30,155,141,147, 97,205,208,236,229,197,233,185,180,106, 21, 94,239,225,100,230,118, +246, 83, 19,208,129,252, 40, 36, 66,157,234, 24,238, 75, 45, 66,183, 98,118,184,232, 36,145,172,150,161, 83, 82,116,166, 47,233, +174, 82, 82, 19,152,237, 62,221,123,163,227,237, 84,253, 40, 58,226, 91, 87,154, 56,251, 88, 83,245,139,157,160,148, 9, 79,165, + 64, 51,242,170,131, 96,187,119,165,133,113,198,119, 5,132,161,167, 1,230, 1,154,125, 64, 84,175, 48, 32, 82,130,217,141, 90, + 23,107, 19, 30, 33, 77,155, 44, 17,223,117, 48,193, 22,200,135, 4,134, 55, 4,118,195,112, 52,146,175, 95, 15,101,255, 71, 29, +142,225, 95,247,102, 44, 91,154,213,146,118,118,115, 38, 16,140,125, 41, 4,165,175,128,164,146, 42, 50,102, 35,125,182, 87,115, +201,106,199, 14, 28, 72,183,117, 71, 3,102, 95,174,135,102, 52,178, 3,111, 5, 45,242, 91,173,134,126,125,137,215,226,232, 96, + 87,206,175, 7,220,207,131,122,137,226, 25,147,173, 88,139,240, 74, 41, 39,117, 77,166, 97,156,149,186, 22,201, 49, 28,251,112, +143,244,172, 3,155,154,205, 5,156, 86,130,203,143, 56, 71, 32, 32,186,103,199, 25, 18,174, 44, 76,168, 37,113, 90,240,129, 59, +195,184,246, 44,180,128,195,200, 26,226,153,107, 68,223, 40,142, 52,128,138, 76,166, 24, 90,253,203,165,137,126, 97,106,131,241, +175, 15, 96, 22, 25, 33, 5,222, 23, 20,157,124, 94, 33, 59, 29,175,233, 55, 65,197, 62,141, 55,231, 87,151, 82,171,212, 41, 5, +125,122,113,169,207, 71, 67,150,218, 0,252,250,155,111,205, 81, 45, 54, 87, 53, 82,112,179,166, 75, 0, 52,120,183,174,221,225, +218,226, 8,206, 0,166,172,214,225,218, 10, 37, 75,245,198,141,201,205, 38,118, 15,203,229, 44,215, 5,184,167,200, 0,229,218, +129,105,211,135,240, 12,208, 14, 84,255, 46, 87,196,190, 63,224,228, 21,150,213,116, 27, 11, 34, 78,191,138, 4, 44,194,143,220, +231,245,189,211,209,100,119, 54,150,179,235, 62,113, 23,154,222,169,111,192,149, 88,146,145,166,230, 16, 72,206, 62,216, 45, 81, +222, 59,166, 29,177, 41,130, 82,154, 27, 69,149, 62, 63, 55, 55,151,244, 9,105,106,178,198,243, 56, 90, 78,182, 10,125, 56,126, + 20,203, 89, 94,179, 96,198,115,139,102, 6,221,250,209,238, 46, 11, 31, 28,104, 76,232,192, 54,185,179,191,199,213, 37, 30, 46, + 0, 54,255,241,203,215,242,241,131, 93,121,116, 88,147, 82,169, 98,182,199,250, 51, 86,243,132,204, 0, 36,244,200, 61,107,187, +109,189,174,250,247,151,253,144, 93,251, 78,183,203,226, 6, 92,120,207,225,124,194,208, 84, 69, 49, 57,129,223, 70,184,145,173, +132, 47,158, 33, 56,216, 97,154, 0,107,228, 12, 42,165,183, 14, 42,178, 83, 43, 19, 76,213, 46, 3,232, 49,230, 8,203,115, 70, + 14, 89,242,134, 3,154,207,223,223,173,107, 85,177,102,165,205, 10,194, 19,238,202, 17, 7, 11, 94,198,141, 98, 50,220, 49,227, +134, 12,230,182, 7, 42,100,109, 79, 79,193,249,192,248,213,184, 17,232,204, 57,162, 74,156, 78,180,222, 80, 84,118,232,174,171, +197, 12, 77, 81,144,236, 98,236, 59,114, 70,167, 1,175, 34,140, 87, 76, 6, 20,140,217, 24,193,156, 38, 30, 81,188,229,197, 47, + 89, 17,153,116, 41, 42, 35, 88,133, 6,180,221,211,167, 79, 15,121,175,191,176, 0,230,192, 67,235,201,154, 85, 27, 30,248,253, +118, 69, 58,181,130, 3, 6, 89,196,167, 73, 71,100,194, 35, 57, 61, 33,224,133, 6,110,100,220, 42,102, 73,105,105,214,114,154, +132,214, 68, 75,175, 52,137,102,169,210,180, 97, 55, 45, 70, 22,225,251,131, 95,245,237, 52,224,255, 7,122,190, 94, 14,164,169, +159, 55, 10,242,236,134, 86, 27, 19, 98,129,245, 43, 94,199,119,187,172,192,207, 75, 89,175,229,209, 78, 67, 62,124,176,175,223, + 87,144,247,247, 43,146,211,215,249, 15, 79, 46,229,119,207,110, 73, 13,138,220,232, 15,251,154,217,122, 98,224, 61,177, 42,143, +193, 26,116,145,122,133,247,183,172,135, 14,157, 57,146, 6, 45, 33,105,113,105,252,236,114,185, 74,132, 54,146, 35, 14, 57, 19, + 96,198,146,118, 24,133,110, 36,236, 60,160, 61,163,234,144, 55,190, 29,223, 90,176, 66,122,129, 34, 27,128, 62,137, 75, 42,230, + 82, 23, 18,177,235, 57,173, 88, 60, 60, 43,154,122,248, 28,127,231,115, 70, 39, 17,151, 32, 19,139, 32,252,115,140, 91,145, 76, +145, 28,193,117, 77, 25, 9,169,188,101,198, 81,232,240,126,128, 88,125,165, 9,189,152, 53,151, 55, 27,245,155, 1,140, 56,157, +107,140,175,152, 8,181, 96,193, 57,232,107, 17,152,211,194, 21,202,121,161,190, 70,174, 80,230, 3,180,211, 40,201, 59,251, 85, +249,246,114, 78,110, 45, 39, 20, 97,226,244,219,109, 31,206,253, 35,174, 63,248,231,203,229, 86,133,125,229, 36, 50, 49, 94, 69, + 55,134,194,233,188,119,163,137,168,202,247,196,226, 55, 8,152,128,124,103, 34,130,247,226, 72,148,236, 40,113,141, 64, 37, 77, +199,160,158, 39,219, 49,185,239,240, 6,233,117,240,222, 48,236, 89,204,130,161, 98,232,119, 19,125,207,184,206, 38,138,173, 8, + 50, 51, 21,217,162,235,109,165,230,166, 77,129,141,235, 1,175,128,146, 24, 69, 93, 36,222,222,171, 36, 50,128, 36,182, 49,164, +223,101,196,249,192, 39, 44,170,201, 21,119,235, 3,118,160,142, 81,227,180,172,248, 25,249,124,225,123,243, 1,215, 87,184,183, + 72, 38, 23, 55, 67,121,118, 93,146,159, 63,172,235,121, 78, 72,241,219,209,162, 43,151,213,100, 5, 92, 74, 41, 79, 19, 40, 40, +170,225,243,228,156, 56, 13, 98, 71, 94,219,253,217,100, 36,123,135,135, 26, 88, 87, 82,173,183,181,171,159,209,222,185, 91,203, +203,203,211, 11, 77,236, 69, 78,100,102, 90,216,147, 42,139,201, 76,174, 64,191, 0,178, 81,124, 4,220, 5,147, 74,181, 4,145, +151,178, 60,127,121, 43,135,187,123, 60,123,217, 92, 68,208, 29,158, 37, 88, 49,163,139, 10,157, 12,231,198,141,224, 3,242,248, + 83,191,130,220, 22,113, 45, 57, 83,119,196,202,140, 60,239,140, 81,221,214, 0, 35,130,230, 68, 25,209,133, 43,162, 77,119, 30, +221,255,138,110,127, 9,159, 69, 92, 39,160,245, 87,115,125, 70, 39,115, 43, 6,244, 25,120,180,223,145,215, 23,215, 44, 60, 1, +134,198,250, 66,143, 28,197,163,150,203, 49, 11,241,254, 96, 32,167,231, 23,114,180,119, 71, 30, 29, 95,201,239,191,127,234,220, +253, 28, 37,210, 77,195,128,130,255,143,143,141, 50, 23, 80,111,220,214, 56, 24,133,163, 40,201, 18,180,252,198,187, 33,235,172, +178,163,217,130,211, 76,232,216,147,117,145, 95,107, 44,168,107, 34,188, 35, 7,187, 77, 78, 99,187, 26,111,197, 51, 38, 10, 58, +116,147, 12,247,181,208, 93,105,178,155,201,159,125,116, 87,254,240,244, 86, 11,150,172,198, 55,237,106, 51, 9, 99,204,130,114, +217,246,204,213,203,121, 78,143,177,190,196,117,223,223,209,103,244,197,153, 54,130, 11, 54, 6,240,188, 71,117,189,142,225,148, +184, 33,104, 18,248, 15,216,184, 2, 75,226,109,121,247, 17,229,106, 19,230,191,212,222, 56,203, 73, 11,157, 26,197, 12,159, 76, +113,207,192,179, 88,133,192,136,166,221,172,211,114,247,251,151,175,100,176, 60,144, 11,253,242,189,120, 72,149, 80,174,204, 48, +217,128,106, 93,161,192,132,141,105, 7, 42,107,224, 48,238,238,234,121,211,166,249,180,167,197,130,254,252,219,126, 34,237,238, +158,220,246, 46, 77,251, 31,231, 80,115, 48, 62, 35,196,216,192, 66,192,243,142, 41, 26,154,239, 39, 39, 87,250, 26, 90,200,252, +229,253,206,255,250,231,143,186,172, 32,191,191, 24,179,234, 58,131, 8, 12,101, 94, 3,202,229, 33,208, 96,151, 4,133,184,144, +149,151, 86, 22,205, 42,111, 38, 70,193, 84, 72,130,233, 67,198,223, 6, 15,207,117,165, 52, 55, 32,197,202, 64, 59, 0,183,101, +157,118, 48,149,220,128,212,196,207, 7,253,193,183, 61, 54, 18, 60, 10,131, 48,178, 93, 28, 85,219,192,197,244, 77,166,149,251, +145,141,201, 91,178,170,194,152,126,109,251, 71,116, 67,184,216,232,112,208, 93, 66, 34, 18,230, 14,182,235,138, 41,136, 16,186, +238,141,202, 70,113,178, 21, 49, 9,156,189, 39, 10, 0, 0,232, 80, 12,176,139,116,159,139, 59, 73,162, 14, 23, 91,215,169,150, +118, 5,248, 12, 7, 68,232,102,184, 95,189,210,142,249, 28,146,150,120,157,200, 52,185, 99,121, 99,196,145,213,196,140,105,114, + 49, 19,115,164, 84, 41,230,228, 78, 83,111, 6,208,232,188, 86,216,243,151,229,110,167, 42, 31, 30,212,120,205,225,251,188, 91, + 47,201, 95,125,116, 95,254,217, 79,238,203, 71,247,119,104,123, 57, 91,107,151, 61, 93, 82,188,227,173, 59, 59,242,254,113, 91, + 15, 92,158, 32, 71, 60, 20,197,188,207, 61, 19,168, 73,101,112, 39,181,154,107, 54,234,236, 70, 90, 90,161,114, 76,230, 70, 79, + 24,113,219,181, 48,138, 23, 14, 61, 70,226, 16,156,153,207, 23,219,113, 47, 69, 58, 36,113,166, 21,182,223,230,152,221,137,105, + 64, 4, 1,149,126, 1,123,103, 45, 10, 64,153,219, 86,192,113,180, 21, 64, 9, 24,104,108, 82, 3,208, 15, 68, 68,114, 57,243, + 36, 71,194, 37,248,203, 33,177, 19, 55,149,137,221,216,217, 68, 35,140,126,181,116,133, 2, 10,132, 10,181,224, 51,230, 93,238, +116,227,179, 78, 15, 30, 94,235, 16,185,248, 79,254,228, 33, 71, 97,120,152,125, 39,164,132,207,139,253,170,173, 14, 60,249,205, +151, 47,229,162, 55,162,206, 1,212,170,226,213,130,232,230,108,161, 36,159,188,181, 47, 31, 60,232, 82, 99, 0,137, 14, 58,213, + 24, 65, 2, 12, 10,213, 67,236, 11, 95,158,247,229,228,122, 72, 67,146,192,105,132,110,156, 23,180,200, 27, 20,127,226, 56,215, +177,243, 69,199,207,201, 56, 39, 41,200,226,210, 97,106,179,217,250, 10,120, 41,178,221, 51,174,117,170,149,159,142, 26, 18,199, + 77,223,142,222,205,126,201,116,234,221,144, 36,114, 56, 17, 47,245, 72,112, 58, 13, 28,197, 7,142,162,232,206,109, 22,214,175, + 98, 1, 52,231,232,126,185, 92,214,145,229,196,241,252,205,114,212,115,234,126,190,163,202, 81,204,201,183, 93, 37,215, 89,156, + 46, 24,206, 34, 37,143,252, 80,231, 63,149,251, 37,130, 90,223, 47, 10,155,144,138,105,121,126,207,149,118,212,247,119, 74,178, +175, 69,213, 89,127,198,216,128, 14,107,130,128,172, 55,162, 94, 45,114, 69,130,184, 69, 15,138,140,201,152,130, 82, 11,237,121, + 96, 74,192,241,198,185,163,181, 71, 18,178,112,255,238,213, 13, 99, 23, 94,239,246,182, 71,112, 20,196, 65, 96,170,132,181, 32, + 60,175,233,136,149,216,228, 14,147,179,187,123, 53,142,161,167, 90,144,142, 70,183, 4,196,101,243,101,202,246,142,102, 19,142, +187,195, 40,118, 66, 74,111, 60,115,253,140, 97, 68,112, 70, 1, 58,132,153,137, 73,235, 70,182, 71, 37,144, 49, 50, 58,233,106, +227,240, 44, 89, 78, 13,166, 48,141,114, 73,135, 69,148, 88,209,151,210,141,215,161,249, 66, 0, 84,139,215,221,235,180, 89,160, +158, 94,246, 88, 68, 84, 74,101,254,127,232,193,151, 52,169, 98, 85,232, 57, 10,236,213,213,185,180,218, 59, 90,220, 23, 36, 90, +141, 53,214, 23,216, 48,160,160, 66,140,131, 87, 1,180, 51,214, 78,142, 59,165, 4, 51, 52, 38, 54, 25,202,229,140, 33, 33,108, +226,178, 4,130, 98, 10, 85,226, 14,189,164,191,175,106, 18,239,202,193,222,158, 84, 42,117, 26,245,148, 43, 13,185,179,219, 32, +168, 14,171, 7, 76,125, 96,106, 53,214,152,115,222, 27, 50,158,255,183,127,245,161,252,226,147,119,248,252,189,210,231, 10,182, +224, 23,183,147,173,149, 43,206, 75,200,231, 39,103, 14,137, 0,168,105,195,137,159, 11,193, 44,176, 77, 74,133,141,225, 26, 48, +222,215, 38,176, 92, 41,201,241,241, 93, 9,244,250,250,226,111,177, 83, 22, 83,204, 81,109,229, 12,197,168,189,160, 95, 95,160, +159,135,173, 4,111, 71, 99,210,118,169,206,168,213, 43,146,125, 69,175,217,154,140, 0,107,118,207,174,174,248,249,112,198, 52, +115, 18, 59,130,154,199, 38, 0,107,227,200,235,123, 45,151,236,140, 98,149, 4,167,210, 78,187, 12,151, 16,222, 71,155, 18,121, +148,103,198, 36, 0, 69, 53,186,118,147,228, 13,232, 65, 65,234,174, 99,252,144, 83,255,224,176, 37,191, 63,153,106, 21, 60, 98, +146,123,124, 13, 5, 38,251, 2, 84,185,139,120,185,221,123,178, 66,228, 27, 54, 57, 62, 34,228, 67,140,101,204,236, 32,147,250, + 58, 19,168, 20,210,189,135,181, 60, 22,136, 81,192,234, 36, 16, 51, 95, 97, 0, 2,143, 27, 64, 42, 84,174, 57,187,169,222,198, + 56,126,208,129, 62,133,163, 18, 21,172,124, 86, 78,216,147, 3, 88, 17,185,174, 48,198,152,203,183,215, 53,217,194,100,107, 94, +129,155,129,113,137,135,145,148,192,166,206,246,127,144, 72,149,212,155,251, 7,255, 48,188,122, 41,170, 58,230,232,236,250,102, +162, 5,193,146,201,179, 85,201,209,240, 97,166,157,225, 96,186, 48,153, 74,125,239,123,149, 37,193, 29,227, 33,246,228, 27,142, +221, 32,239,248,168,145,147,142, 30,228,255,240,186,255,198, 57,203,189, 22,166, 12, 24, 83, 2,155,144, 1,189, 43, 83,144, 23, +195,141, 38,219,174,236, 84,244,218, 77,135, 68,238,163,171,173, 65, 3,187, 33,242,104,167, 37,123,221,182,236,239,237,152, 70, + 52, 36, 41,225,120,165,137,229,122,184,150,223,188,188,225,195, 52,156,152,221, 31,237, 98, 41,138,161,135,101, 2,245,174, 60, +253,161,225,150,103, 30,218, 9, 15, 36, 80,219, 16,163, 49,105,219,149,243,234,141,196, 8,121,166, 91,206,164,153,200,182, 40, + 89,187, 93,181,239, 7,206, 69,205, 44, 84, 37, 69,146, 59,244, 54,193, 89,145,117,192, 40,176,226, 45, 32,202, 12,105,144,152, +172,227, 78, 56,217,200,147, 14, 39,214, 93, 39,230,120, 5,185,205, 84, 61,142,162, 12, 14,217,142, 7, 14, 93, 58,146, 85, 33, +151,219,142,152,233,133, 7,128, 99,232, 36, 43, 97, 50,161,159,241,242,230,150, 73,159, 14,101,238, 33, 6, 5, 50,118,252, 95, + 32,133,113, 93,209,153,227,190,130, 58,243, 37,196,107,244,103, 55,235, 26,192, 91, 77, 6,161,154, 6,183,150, 38,143, 91, 34, + 78,215, 82,205,250, 20, 1,130, 15,250,158, 86,233,245,122,129, 19,165,102,173, 46,111, 29,113,217,196, 14,202,115,178,169, 40, + 24, 32,234, 4, 48, 82, 41,111,221, 46, 86, 64, 55,195, 1, 19,230,138,178,180,115,126, 46,140, 87,241, 53, 8, 40,232,204, 73, + 73,244, 18, 82,183,104,194,130, 81,252,204, 5,247,237, 96, 61,249,255,157,235, 55,166, 57, 4, 78, 70, 54, 86,183, 47,139,216, +129,224,185,199,103, 70,240,202, 82, 27,222, 58, 20, 43, 60,173, 96, 0, 16, 13,171, 25,142, 93, 19,243, 94,136,220, 8, 54, 33, + 48, 48, 75, 27,208, 77, 90,208,115,239,231, 17,216,186,118,163,246, 55, 15,129,117,174,166,144, 99,123, 65,156, 39, 17,139, 5, + 0,227,225, 28,152,121,136,231,220, 10, 19,242,174,255,205,239, 78,229,127,252,139, 99,249,209,189,174, 60,191, 28,233,189,200, +147, 30, 8,132,125,171, 94,209,103,115,206,241, 55,198,148, 16, 56, 90, 65, 6,153,236,132,172, 94,215, 41,209,244,208,225,200, +151,170, 82,213,243,112,222, 95,145,243,172,229,184,158,153, 5, 19, 0,194,123, 9,157,233, 98,200,113, 45, 26, 4,140,113,113, +205, 17, 27,241,124,116, 42, 25,142, 96,161,115,222, 31,244, 53,233, 85, 57, 37,124,242,226, 37,113, 51, 37,226, 67,132, 99,123, + 4, 95,210, 40, 61,135, 33, 0,141,116,101,186,222, 24,155,167,244,215,148, 26,202,201, 22,198,222,129,121,151,131,234,185,118, +197, 91,106, 29,234, 59, 42, 33,208,239, 40,196, 64, 41, 68, 2, 12,168,218, 24,177,152,190, 28, 76,164,215, 63, 37,203, 35,165, + 67,194, 83, 61, 91,201,147, 94, 88,215,175, 57,108,109,228,235, 23,215, 92,133,129, 77,156,203,117,228,207, 62,126, 95, 70,195, + 1,159, 85,168, 3,146,186, 25, 39,196, 76, 28,118,234,242,226,114,192, 85, 44,166,166,187, 53,163,111, 97,109, 14, 58, 49, 62, +231, 58,242,137,151,218,197,254, 29,137, 30,200,253,141, 77,121,104,126,149,245, 89, 68,223, 96,101,120,165,221,255, 31, 95,209, +169, 12,160, 91,161,192,138,198,125, 8,105,233,217, 0,170, 31, 77,196, 68, 99, 46, 40,134, 47, 95,107, 27,123,212,150,110,171, + 35,215,215, 87,204, 31, 89,228,149, 76,222,226,116,213, 18, 63,197,159,226,140,198,204, 29,160,120,152,131,226, 24,184,144,141, +212, 98, 77,134,173, 29,201, 97, 50, 25,197,204, 75,211, 25, 10,185,132, 49,133,120, 35,125, 22,160, 25, 49,165,229,107,137, 52, +220, 40,213,222, 16,143,207, 52, 98, 95, 31,216, 0, 36,244, 82,137,197, 22, 24, 76, 52, 70,210,123,177,215,237, 80,131,191, 86, +186, 47, 71,117,205,127,176, 80,117, 83, 58, 78,111, 35,147, 55, 7,198, 96,175, 83, 38,109,243, 82,243,111,171, 89,214,184, 14, + 15,249, 2,115,162,120,123,164, 30,222,244,251, 90,184,162, 0,240, 52,254, 44,164,222,104,243,125,162, 9, 70, 83,181, 38,168, + 86, 11,155,127,253,251, 51,138, 2, 64, 65, 12,143,226,106,153,200,100,105,212, 25,208,184,208,169,161, 34,181,128,224,105,199, + 44, 4,190,145,240, 66, 96,134,255, 70, 50,208,247,157, 16, 9,130,129, 73,137,146,143,154,202, 96,112,199,153,144,230,133,206, + 30,221,100, 64,250,141,105, 13,251,174,163, 9, 28,248,103,236, 56,225,201, 38,203, 46,158, 0,170, 31,120, 16,167,241,203, 12, + 60,196, 33,244, 3, 38,229,249,108, 67, 16, 91,222, 1, 82,240, 0,114,160,224,198,177,169, 22,118,236,132, 57, 76,180,195,194, +163, 79,187, 72, 67, 99, 35,121, 19,160,167, 1, 5, 85, 43,186, 48,186,188,113,133,238,113,172, 4, 52, 61,138,161,102, 41, 43, + 71,122,209,235,218, 29, 39,155, 37,199,175,111,184,195,118, 24,160,213,142,253, 37, 38, 24,197,122,147, 78, 74,228, 27, 67, 86, + 82,255,252,249,249,128,211,132,185,126, 63,170,183,198, 29, 77,244,218,157,224, 97, 41,104, 37,136,131,134,135,188,232, 30, 22, +184,255,172, 22,144,135, 92, 83, 91, 27, 83,137,216,129,179, 82, 32, 20, 46,119,177, 92,145,172,254,154, 79, 46,152,216, 42,168, +162, 27, 77,142,134, 67, 87,225,147, 74,197,202,215,198, 74,236,194, 35,147,216, 76,105, 21,169, 54,117, 74, 21, 75,221,210,108, +204,109,174, 81,121,253,217,115,208,226, 48,182,102,242, 93,147,227,238, 57,223,223, 31,114,212,233, 90,134, 32,229,153,202, 24, + 45, 77, 61,211,209, 71, 98,206, 58,153,225,196, 21,139,177,115,115,131,138, 32,164, 27, 73,165,115,217, 11,239, 33,116, 93, 30, +206, 45,215, 61, 76, 88,177,163,124, 9,149,155,224, 63,143,206, 37, 5,212, 89, 33,231, 59, 65, 13, 11,126,252,204, 8,100, 20, + 53,202, 81,209,106,175,211,145, 59, 59, 69,185,211,206,202,201,213,132,133,231, 58,244,100,159,118,171, 62, 1,110, 59,173,178, +220, 57,218,149,219, 49,206,112,138, 90, 23, 83,121,155, 45, 28,213,206,185, 51,105,242,206,102,108,189,192,253,218,102,197,224, +209,134, 16, 13,130,169,126,239, 84, 19,202,110,187,206,164,116,163, 65,122,229,212, 4, 57, 34,134,186, 88,197,119,184,150,141, +147,212,117,123,240,216,166, 89,169, 15, 59, 71,133, 40,140,210,209, 60,243,186, 61,103,248,204, 20, 53,201, 4,118, 94, 92,145, + 64,163, 14, 4,141,216,156,162, 48,193, 2,195,227,160,153,215,224,156, 97,144,198, 53,192, 14,246,108,176, 50,189,118,112,173, + 33, 46, 21,216, 8,149,171, 43, 36,154, 84, 68,200,137, 19, 37, 78, 73, 48,181, 54, 54,206,191,129, 82,241, 47, 10, 8,220, 71, +156, 57, 43, 62,139,188, 70,207,245,186,255,230,241,181,252,151, 63,125,160,113,203,119,114,200,190, 12,181,147,205,218,154,211, + 94,211,211,243, 58,139,104, 97,137,130, 3,227, 74,140,108,135,131,158,230,139, 10,239,193,209,193,129, 38,134, 75,118,137,152, +170,133,203,185,113, 84, 54, 88,237, 85, 12,116,138, 56, 5,122,216, 38, 71,101, 61,116,144,152, 28,156,244, 18,118,176,120,197, + 74, 77,159, 99, 96,136,224, 63, 1, 81,168, 5, 10,216, 58,215, 83,184,135, 57, 71, 25,140,220,232,220,166,139,102,178,131,206, + 52,240, 13,159, 68,157,115,184, 63, 58, 63,138,106,177,161, 29,117, 75,206,110, 6,148,131, 21, 39,252, 51,209, 46, 49,175,231, + 24, 92,117,138,217, 4, 14,128, 23, 4,174,208,246, 41,148,130,115,143,233, 42, 65,180,154, 48,219,141, 58,207,244,203,139,158, +158,211,182, 12, 53, 86,228,181, 0, 56,212,206,112,174,143,246,179,151,175, 52, 81,116,244,117,171,242,248,236,137, 60, 59,189, + 34,226, 58,227, 98, 57,183, 96, 40, 74,181, 99,197, 42, 22, 84, 99,196, 35,208, 27, 3, 39,233, 76,106, 45,167,120,193, 27, 31, + 3,253,255,240,234,192, 58, 53,200,198,164,235, 34, 89, 3, 32,119,247,206,123,146,113, 13, 21, 88, 66, 96,216, 0,236, 23,100, +244,217,212,103, 11, 86,192, 79, 95,158,179,185,184,153, 21,120,127, 32, 27,252,214,110, 77,118, 26, 6,124,165, 32, 78,222,112, + 10, 88, 25,183,235, 29, 98, 14, 96,245, 90,169,212,228,206,225, 29, 78, 91,208, 33, 91, 30, 91, 91,204, 91,244, 41,181,155,104, +178,175,104,108,135,126, 59,166, 33,145,158,133,145,158,167,173, 57,148, 47,148,144,197,179,202, 34, 51,177,169,154,157, 99,111, + 43,246, 67,133,199,140, 93,127, 92,143,107,109, 36,186, 90,232,127,254,205,119,210,219,219,149, 31,223, 45, 81, 65,143, 56, 20, +114,227,109,210, 80, 45, 21,244,217, 94,208,187, 4,207,207, 84, 11,152,114,165, 32,221,122,150,134, 71,185, 6,254,188, 41, 29, + 24,219,120,107, 98,185,142,192, 2,211,226, 4,147,232,235,219,177, 25, 92,177,225,153, 73, 6, 34, 17,224,187, 97,215, 13,160, +201, 98,177,225,206,108,175, 93,100, 18,215, 91, 74,241,120,227,189,190, 41,182, 41, 82, 64,228,139,191,213, 2,198,141,143,156, +181, 99, 74,149,193,195,201,145, 6, 5, 1, 98, 55, 12,180, 74, 52,135, 61,140, 62,216,137, 3,202,164,198, 30, 57,223, 1,179, +176, 59, 28, 47,244,198,154,171, 18, 60,192, 77,202,211,116,177, 35,103,134,192,241,172, 3,162, 25,101, 42,230,148,225,163, 59, +134,252,190,157,139,227, 65,122, 20,249, 73,169, 64,244,135, 15,222, 0,238, 56, 6,139,147,109,130,139,157,237,161,185, 24,249, + 84, 86,211, 80, 67, 76, 0,119,159, 25,227,161,231, 25,204, 53,184, 87,179,220,189,246, 0, 86,240,204, 74,241,142, 86,171,216, +255,225, 97,194, 72, 8, 2, 36,144,104, 69,145,210,159,207,121,136,160, 84, 6,149,161,193,120, 46, 21, 45, 8,238, 63,216,211, +228,209, 50,131, 6,189,185,160,171, 12,180,176, 64,119,138, 84,181, 4,151,126,190,162,231,240, 42,220,184,134,199,204, 17, 22, +161,137,255, 35, 57,178,120,208,135,186, 2, 6, 3, 70, 70,250,160, 47,136,222,246,185,223,186,133,185,128,155, 34,144,170,150, +200,214, 80,101,181,154,153,218,154,200, 86, 4, 37,245,125, 78,145,226,169, 85, 40,196,116, 16, 92,185,139,218, 24,130,156,175, + 17,174, 13, 40,230, 38, 49,248,103, 78, 1,141,165, 62, 68, 21,179, 86,116,194, 66, 81, 98, 66, 13,158,147,242, 76,213,179,208, + 9,129, 66, 2,173,237,172,115, 43, 19, 42,207,153,131, 32, 58,188, 76,222,120,219, 76,218,232, 54, 3,179, 34, 69,162, 67, 5, +141,235,134,207,132, 53, 15, 20,194,150,174,163,161,195, 26, 18, 29,118,236, 65,198,117, 72,154, 8,244,190, 32,225,227, 94, 33, + 48, 94,244,135,210,109,180,236,220, 45,103,122, 46, 43, 26, 32, 81,104, 9,121,236, 90,199, 11, 36, 65,144,196,112,253,177, 79, + 29,107,229,223,211, 14, 28, 5, 66, 38,101, 97, 44, 87,188, 70,105, 49,100,130, 50, 9, 71,215, 16,155, 1,215, 25,103, 19, 35, + 75, 8,172,192,216, 98,170,247,235,213,101, 79,238,237,182, 9, 62, 29,105,161, 52,221, 24, 66, 28,221,105,222,141,250,240,153, +230,110,125,176,113, 1,134,133, 17,206,202,182,195,144,237,138, 41,213, 32,127,211, 57, 27,214, 99,169,247, 29,227,107,156, 79, + 24,181,224,245,233,139,237,144,218, 43, 77,110, 40, 98,237, 30, 11, 71,146,166,149, 30, 83,222,153, 24,133,212,155, 32, 48,164, +253,198,113,209,185,138, 72,220,179, 26,219, 57, 49,212,190,183,149,206,141,156,142,255, 15, 93,252,138,197, 12,199,218,133, 28, + 38, 11,107,249,238,116,162, 73,221,147, 35, 45,160,158, 95,141,229,160, 93,211,235,151, 37,163,165, 94, 46, 58,115, 20, 43, 28, +141, 2,102, 70, 34,164, 43,105, 0, 95,175,124, 57,216,223,231,235,236,237,180, 53,201, 93,114,234,133,113, 52,154, 2,116,103, +133,226,194,108, 97, 25, 83, 12,231, 17,210, 53,109,173,113, 96,197, 14,107, 85, 64, 96, 54,235,217, 17,252,224,139,117, 34,150, +125, 23,228,241,156, 35,182, 96, 7,143,105, 14,186,233,193,120,170, 49,109,206, 73, 13,126,254,129,118,101, 72, 10, 0,253,225, +249, 13,156, 22,130, 61, 75, 90,176, 71, 62,165, 89, 55, 97,180,101, 23,250, 44,136, 12,235,208,215,226, 25,147,156,120,123, 61, + 35,234,170,175,245, 62,146, 34,235, 7,206,108, 43,166,221,104, 93, 27, 9,176,119, 48,197, 4, 45,115,164, 77, 92,129, 52,206, +181,118,131, 7,148,132,246,186,251,242,240,222,125,121,125,121,237,116, 31,132,147,138, 53,141,187,124, 54, 57,191,253,246,132, +159,193, 40,192, 92, 11, 91, 44,246,157,239,131,231,176, 3, 80,159,131, 47, 69,184,148,165, 54, 10,225,108, 99,178,225,146,221, +138,216, 28,116,118,164, 81,207,235,231,200,243,204, 64, 31, 29, 53, 48,146, 62, 48, 13, 88,241, 2, 53,255,237,243, 51, 22,151, + 72,174,208, 13, 56, 62,216,225,136, 63,113, 30, 5, 84, 94,212,100,215,108,230,216,108,226,247,192, 12,212,171, 38,244, 52,157, + 21, 76,180, 11, 88, 43, 96,180, 50,121, 42, 18, 98, 50,133, 53, 40,124, 11,178,165, 12,253,209, 65,111,174,148,189,173,223,124, + 10,190, 69,172, 40,105,145, 15,163, 45, 54, 16, 14, 88, 11,189,135,212, 41,146,114,224,121,172, 0,109,181, 5,172,193,149, 22, +102, 79,244,188,124,124,140,243,105,203, 88, 26,228,136,177,120, 54, 14,140, 13, 41,239,241,204,138,142, 78, 21,190, 24,121,185, +153,218,185,169,148, 27,178, 91,197,245, 93,104,131, 81,163,241,144,166, 7,141,107, 17, 71,247,184, 38,240,100,200, 96,193, 78, + 14, 53, 4, 36,178,102,194,192,138, 93, 47, 54, 42,177, 74,201,132, 83, 50, 78, 20,102,229,248,176,166, 56,133, 31,152, 48,129, +109,156,134,116, 22,157,183,255,198, 84, 2,193, 51, 74, 77, 11, 2,223,121,228, 58,241,133,172, 9, 91,172,163,196,249, 6,248, +220, 81, 2,100, 87,243,179,114,158, 15,101,132,177,156, 22, 28, 16,143,121,118, 54, 48,148,172,231,100, 53, 82,112, 86,242,102, +162,104,174, 79, 9,229,245, 80, 1,130,195,218,156, 65,120, 98,237, 30, 6,163, 6, 37,190,241,215, 17,228,114, 14, 24,156,120, +182,247,180, 49,190,184,177,147,237,170, 48,110,123,183, 91,225, 23,126,121,177, 36,226,146, 14, 85,122, 83,119, 59, 13, 57,216, +109,177, 18, 28,205,178, 76, 44,160,173,128,230,241,176,108,174, 79,196, 34, 20,172,115, 43,229, 76,120, 1, 81, 17,104, 69, 32, +120,123,253,185,118, 27, 48,246, 88,240,154,212,202, 57,118,243, 64,238, 99,239, 21, 91,175,199, 4, 80, 43,228,104, 88,211, 27, +205, 24,172,240,179,168, 59, 30,216, 4, 1, 9, 34,163, 31,170, 94,170,146,154, 5,241, 9, 60,240, 72, 20,148, 24,116, 15, 56, + 19,120, 96,201, 18,166, 16,240, 42,174,148,107, 6, 10, 17,227, 31, 35,208,226,224,198, 73,142, 99,244, 48,140,182, 34, 39,182, + 83,205,144,122,100,227,117, 83,126, 75, 45, 83,209,221,134, 78,138, 55,112, 98, 44, 20,155,209, 34, 38,113, 9,213,243, 83,117, + 66,243,189,246, 29,184,198,138, 68,251,250,208,241,178,205, 57, 44, 54,164,185,211, 71,160,120, 10,247,206,161,117,169,110,170, +176,164,235,217,218,130,235,124,201,251,219,168,213,205, 57, 78,171,246,177,118, 59,101, 61,235,152,220,140, 70, 61,130,156,104, +176, 33, 38,111,137,160,135,207,132,179, 82,228, 56,189,194,125,252, 91,119,139, 16,231,150,171, 87, 55,228, 72,183,155, 77,185, +126, 61,101, 18,132, 5,241,124,145,227,248,112, 4, 3, 14,189, 25,133,146,169, 41, 78, 52, 56,153,244,173,118,167,244, 73, 94, + 80,123, 26, 29, 34, 65,115,250, 52, 98,251,129, 98,236,102,104,221, 29,174, 15, 4,105,208, 13,125,249,114, 65,234, 85,202,123, +198,207,162, 1, 8, 60,196,179, 86,200,228,156,127, 59,158, 81,124,118,154,131, 80,201,204, 64, 79, 27, 87,164,110,213, 32, 61, +113,123, 62, 71,207, 19, 83,124, 35, 88,109,101,231, 10, 93,240,194,217,205, 98, 21,129,253, 46, 24,231,232,166, 76, 90,217,220, +245,176,223,142,220,253, 1,117, 9, 6, 35, 25, 9, 92,233,224, 59,252, 69,226,158, 95, 32,144,157,232, 12, 65,178,111, 12,104, + 2,183,135, 55,246, 66,196, 93,183,159,154, 53,133, 25,211,205,152,172,228,201,197, 84,126,249,163, 67,153,172,180,243, 91, 39, + 44,254, 34,160,130,245,243,160,131, 35,189, 13, 83,158, 68,139,157,217,204,126, 38,214,134,192,143,120, 43,233,247,111,197, 7, +229, 83, 63,199,225, 78, 87,190,121,118,194,241, 59,146, 1,216, 61, 24,107,163, 72,203, 58,110, 49,138, 52,202,236, 38, 17, 93, + 9,251,195, 12, 1, 81, 88, 13, 46, 19, 99, 4,157, 15,134,148,122,174,233, 61,199,153,203,162,147, 79, 92, 76, 2,230,200,207, +146,226,167,119,155,159,141,222, 13, 64, 66, 99, 34,130,145,110, 46, 75, 28, 17,126,150, 93, 91, 97,108,196,125, 92, 83,189,207, + 49,136,220,116, 17,241, 9,211, 30, 88,143,162, 88, 78, 25, 13,144,164,206,228,138, 76, 92,197,130,231, 92,242,180, 0, 24,220, + 18,231,130,238, 29,251,234,123, 71, 71,134,135,152, 27, 40,173,219,110,107, 87,252, 82,191,183, 44, 59,205,150, 28,239,238,144, +237, 17,184,100,157, 2,125, 17,155,128, 57, 66,151,136,226, 57,155,243,183,103,138,197, 28, 88, 80,129, 9,146, 33,113, 97,154, +147,105, 52, 12,196,169,127, 86, 43,151,248,245,245, 90,141,211, 71, 9, 74,164,146,193,143, 33,220, 44,157,239,194, 82, 6,147, + 25,175, 59,228,185, 23,208,101,215, 6,239,120,239, 64, 11,128,146, 28,237,192,203, 92,187,108, 47,195, 24,137, 56, 77,111,134, + 92,214, 77,129,108, 50,132,115,129,149, 22, 18,183,169, 90, 6, 92,139, 20,181,216, 39, 94,138,120, 34,155,158,210,187, 32,107, + 13,202, 81, 43,207,231, 0,114,183, 0, 92, 83,214, 90, 98, 78, 67,193, 95,207,240, 1,218,176,225,146,196,132,158, 86,243, 33, +155, 79,208,164, 79,174, 39, 60,215, 56, 7,136,187,216,193, 35, 7, 93, 79,107,178, 87, 5, 75,195,176, 41, 40, 18,240,254, 58, +221, 38,241, 10,104, 0, 11,249,128, 5,222,100,162,247, 86,175,237, 13, 86,144,139, 21, 65,182,211,169, 94,215,213, 64, 6,218, + 48,128, 66,232,103,160,218,218,144,159,190,127,151,141,225, 88, 27,129, 76,106,226,128,209, 50,110,128,209,194,188,173,158, 53, +146, 0, 21,161,144, 64,157,129,131, 9,206,167, 40, 28,127, 75, 47, 99, 23,109, 53, 0, 35, 6,144,194, 27,103,196, 97,226, 11, +129,187,224, 1, 31,190,112, 97,178,165, 25,118, 96, 49, 71,181, 72, 52, 0,156,181,243,101,233,205, 55,124,176,144,115, 65,117, +107,151,178, 20, 3,225,200,223, 79,182,202, 93, 38,139,105,137, 29, 55, 98,145,216, 88,227,114,170, 21,148, 38,210,124,102,101, + 93,104,198, 70,149, 25,215,129,162,144, 73, 60, 19, 89, 72,182,158,211,241,118,148, 68, 74, 20, 65,120, 27,138, 39, 28,214,180, +123,154,135, 28, 73,117,234, 69,118,159, 80,177,194, 67, 28, 56, 52, 53,130,191,233, 73,196, 20,159,192,193,194, 78, 86, 76,107, +139, 43,130, 18, 1, 21, 17,171,178,210,218,232, 62, 1,246,143,203, 88,134, 27,171,208,113, 45,240, 38,231,161,185, 92, 45,230, +107, 62,224, 5, 4, 29, 13, 16,184,161, 72,100, 86, 73, 39,182,203,210, 3,230,107,254,170,107, 23, 89, 44,149,153, 48,134,227, +145, 1, 22,183,202, 97, 78, 21,208,115, 54,153,148,207,181,224,159,101,183, 42,230,129,238,155,160, 75,226, 92,220, 82,151, 49, +217,118,232,241, 22,212, 70, 37, 44,124, 99,108,244,154,181, 75,166,171,181,117,234,161, 43, 4,169, 20, 6,153,218,156,157, 47, +128,127, 2, 63,216,122,164,227,156,225,253, 96,220,201,207,229, 64, 84, 91, 25, 92,151,252,145,108, 80,140,148, 50, 69, 6, 3, + 58,171, 69, 57, 51, 86,208,159,213,213,128, 4, 16, 25,144,222,212,250,215,239,108, 87,235,212,125,175, 23,181, 96,172,149,236, +245,156,126, 59, 69,105,128, 36, 38, 80,173,160, 65, 41,239, 86, 1,107, 57,234,212,165,172, 21,115,183,221,210,226,106, 41,119, +238,220,149,207,255,240,148,201,167,175,193, 6,238,100,179,121,188,237, 76,184, 70, 32, 16, 80, 52, 40,193,229,171, 72,206,107, +226,192,129,192, 7, 96,101,128, 98, 4,129, 5,220,212,136, 99, 56, 61, 83, 90, 32, 32, 33,155, 10,163, 41,116, 1,248, 23, 80, +225,106,195, 78, 28, 96, 28, 76,157, 98,103,148,147,215,207, 64,149, 43,253, 23, 84,166,162,179,144, 68, 82, 71,209,176,116, 12, + 1, 92, 60, 80,201, 22, 78,242, 23,239,181,136,128, 23,218,148, 32,117,119, 67,242,165,148, 50, 40, 61,171,112, 59,190, 39, 30, +198,169,128,177, 72,208,167, 18,206,102,120, 20,209,145,226, 57, 77, 77, 99,196, 1, 0,215, 75,135,197,112,128,202,116,250,197, +169, 78, 20, 59,136,125,188, 53,254, 97, 35,237,214, 7,214,181,219,116,176,129, 49,179,222, 23,116, 43, 4,114,105,199,254,111, + 63,123, 33,239, 29, 86,229,253,187, 29,249,195,243, 27,238,119,193,139, 6,181, 7,207, 39, 64, 91, 48, 51,202,106,156,184, 25, +204,137,199,201,102,141,130, 5,196,241,108,216,147, 82,173,173,247,171, 40, 59,221, 29,162,235, 47,175,175, 9,122, 2,117, 20, + 5, 26,130, 44,148,210,214,238,124,235,119,179,180,198,185,192, 26,228,188,151,144, 74,151,207,216, 78,255,186,191,148,111,130, +172,220,223,109,243, 92, 25,157, 50,100,119,139, 2,210,174, 81, 66, 64, 87,137, 22,154,182, 90, 24,143,214, 44,158,120,159,215, + 17, 39,109,155,208,237,178,161,244,185, 10,183, 46,132,224,109, 71,137,237,184, 87, 78,181,209,212, 29, 99,118,243, 57,174, 74, +241,108, 22,201,251,198,212, 40, 91,200, 56, 74, 99,204, 73,197,130, 56,153,133,254,154,203,254,206,158, 12, 52, 94, 54, 53, 81, +123,155,185,180, 43,192,224,140, 89,228,238,107, 2,253, 73,217, 24, 51,136,131,136, 61, 88,239, 1,204, 92,175,150,121,174,233, +126, 86, 47, 50, 89, 46, 92, 17,180,219, 42, 82, 22, 22,211, 47,124, 47, 0,140, 65,198,128,138,147, 89,200,184,153,207, 91,241, +132, 70, 1, 19,226,149,254,250,237,151,125,121,125,113,102,241, 61, 73, 39,177, 1,155,153,209,116, 33, 71,221,154,158,127,159, +171,168,151,151,115,105,180, 54,242,214,189,174,100,181,185,193,217, 5,206, 99,179,201,188, 1,163,234,119,150, 74, 9, 19, 43, +129,148,117, 83, 58,164, 17,217,196,214, 6, 17,139,168, 57,147,191,230,111,141, 73, 43, 62,123,112,189, 36,232, 87, 27, 29,240, +243, 25,151,240, 12, 98,218,198, 41,155,239,228,164,109,234,100,190, 6, 9, 49, 57,120,255, 0,145,151, 75,218, 32,101, 55,156, + 86,224, 92, 63,126,254,130,159,167,244,160, 45,251, 13,159, 42,168,104,136, 64,229, 3, 72,183,187,211,214, 98,115,194,231, 58, +227, 71,156,220, 77,103, 80, 90, 13,228,250, 6,218,242, 53,253, 44, 43,105, 53,118,164,166,159,119,120,209,211,164,159,149,167, +167,125, 45,160, 67,121,248,255,114,245,166, 61,150,156, 89,122,216,137,237,238, 75,238, 89, 89, 43,139, 69, 54,217,139,186,135, + 99,201,146,109, 9,146,160, 15,134, 62,250, 15,248,183,248, 63, 25, 48, 96, 88, 48,100, 96, 6,150,212,203, 76,207,116,179,185, + 21,139, 85,149,149,123,222,125,143,205,231,121,206,137,200, 26,247,128,195, 98, 86,230,205,123, 35,222, 56,235,179,188,120, 42, + 47,158,157, 72,188, 35,106,189,193, 32, 1,201,214,200,165, 31,177,151,141,189,139,203, 93,170,173,246, 96, 70,159,234,156, 99, + 36,217,216, 57,181,133,143,134, 82,167,186, 80, 6,144,159, 58,103, 18,177, 66,192,212,148,216, 9, 34,233, 67, 54, 52, 10,107, + 58, 11, 14, 5,132, 88,110,181,123,133, 8, 77,169,213,237,155,171, 57, 65, 26,160,172, 80,154,210,119,250, 60,232,238, 75, 76, + 5,168,210,249,183,250, 94,208,149, 53,186, 7,178,141,244, 64, 53,240,112,106, 5, 40, 17, 71,231, 91, 31,129,138, 3,198, 10, +231,130,150, 62, 89, 48,197,173,156, 35, 37,140,194,146,194,144,227,175, 78,247,100,113, 62,227, 13,125,114,114, 32,135,154,192, + 83,242, 40,141,115,138,239,195, 67, 31,148,166,170,132, 25, 8,138, 28,136,240, 96,116,133,199,170, 65,126, 41,156,134,128,154, +172,236, 68,173, 91, 69, 0,106, 65,114, 81,191,115,157, 19, 74,225,182,162,122,243,225, 91,168, 29,226, 50,181,215,103, 48,118, + 30, 50,186,117,200, 37, 46, 49,162,131, 95, 57,168, 30, 90,233,210,133,136,251, 57,179,248, 3,250,191, 2, 36, 33,185,132, 46, + 55,154, 87,110, 93,164,235, 45, 77, 38,178,116,145,152, 64,106, 78, 55,129, 75, 72,160, 88,174,137,119,209,187,173,239,213, 67, + 71,105, 26, 98,180,178, 68, 53, 0, 85,219, 30, 80, 31,243,226, 28, 65, 36, 4,129,105,137, 14,168,209,240,189,124,240,209,110, + 40, 35,245, 3,247, 51,230, 84,197, 10,181,106, 95,140, 17, 99, 19,232,104,140,248, 83, 11,122, 8,182, 40, 40, 90,238,170, 84, + 82, 86, 51,228, 14, 20, 73,169, 73,135,188, 53,167, 35,237,118,201, 74, 24,215,114, 52,158,202,253,197,157, 38,243,142,188,122, +124, 32,211,251, 59,114,153, 65,217,124,245,226,153, 44,180, 96,128,253, 41, 42,234,183,111,111, 72, 83, 60,222,239,201, 45, 53, +154, 31, 76, 73,240,121, 33,106, 81,164,123, 28,161,127,255,126,172,137,127,230,150,184, 38,190,129,103,129,215,215,249,222, 29, + 45,190,112,241,209,141,115,154,160,137, 30,106, 97,177, 83, 64, 49,150, 29,148, 29, 6, 19,188, 6, 2, 4, 21,170,124,188, 13, + 65, 23, 3, 79,101, 12, 38, 60, 71,177,143,253, 0,160,210,128, 5, 30, 53,166, 72,152, 38,160, 19,220, 34,209,186, 5,177,173, + 73,204, 29, 14,247, 14, 0,171, 66,131, 59, 21,197, 34, 43,254,114, 87,165, 99,194,117,243,139, 93,102, 78,128,199, 61, 19,103, + 41, 93,240, 51,247, 34,138, 54,145, 78,107, 44, 93,107,158,171, 14,160,166,161, 38,169,201, 50,202,140,250, 87,134,230,116, 22, +137,157,195,202, 92,188,160, 21,174,121,186, 67, 99, 1,207, 98, 43,106,139,113, 73, 34,185,154,103,242,111, 94,244,184,103,207, +151, 59, 77,204, 11,118,142,227,247, 55, 28, 79,246, 58,134, 76,222,215,164,115, 59,209,251,190, 92,112,202,128, 81, 61, 34,200, +118, 57, 99, 17,183,205, 99,249,252,213, 43,238, 64, 25,100,123, 37, 71,171,141, 4,204,158,136,142,147,232,206, 64, 39, 68,167, +188,166,225,146, 21,199,157, 78,139, 83,149,210, 87, 65, 71,253,166,141,170,233, 74,153,213,147, 20, 98,137,202,140, 93, 33, 64, +135,248,152, 61,141, 27, 29,200,233, 82,162, 84,187,176,109,106,130, 51, 26, 95,102,208,204, 7,247,188,145, 51,102,112, 26,165, +103, 29,133,146,169,251,153,113, 72,238,236, 35,250, 32,136,120, 82, 15,120, 6, 50,122, 60,236, 76,118, 25,103, 36, 35, 68,214, +108, 89,245,154, 66, 1, 13,227,248, 97,175, 43,167, 71,135,122,109, 51,249,217,231, 63,151,255,246,151, 31,169, 64,247,228,228, +137, 22, 58, 63,201,127,251,211, 55, 6,112,135, 38, 8, 98, 76,105,244, 70, 28,139,151, 39,123,230,169,238,156,117,196,144, 55, +151,134,225,168,146, 43, 37, 78,211,146, 56, 11,112,210,177,147,223, 82,188, 74,216,188,224, 25,253,236,147, 47,245, 28,232,107, +172, 70, 18,182, 58,198,219,231, 53,109, 83, 72,167, 21, 97, 37,188, 39,195,110, 66,139, 82,128, 50, 55,235,165,252,239,255,247, +239,220,140, 74,152,119,182,219,140,160,187,141,107,241,179,136,212,223, 53, 26,207, 89,172,131,186,219,108,132,116,111, 3,202, +125,167,241, 0,197, 7,214,129,184, 87,179,249,138,133, 8,168,139, 4, 0, 19,151,148,217,138,204,139, 76,107, 82, 75, 95, 36, +139,209,229, 62,214, 28,192, 89,142, 90,204,127,160,163,174, 54, 70,125, 70,211, 0,161, 32, 20,168,185,158,193,103,199, 45, 27, +253,195, 93,111, 52, 49,163,167,195,158, 92, 93,221, 83,193, 79,124,146,133,236,242,252,180, 41,119, 51,205, 99,122,209,198,218, +141, 15,122,199,250, 53,196,176, 57,159,251,183, 23, 83, 22,244,143,142, 51, 60, 39, 49,107, 26, 42,114,121, 96,134,235, 77,150, + 89, 39,105,168, 89,203,234,150, 48,163, 90,224,163,112,201, 88,122,192, 74,225, 50,136,110, 16,225,213,119,104, 66,156,210,136, +197,253,177,141,139,201, 11,215,178, 81,107,224, 58,212, 8,186,224,122, 95,141, 22,178, 7,247, 25, 32, 25,239,167,236,186, 26, +218,149, 33,240, 64,219,182,146, 48, 68, 18,192,206,240, 96,208,208,174, 40,101,128, 89,109, 66, 89,234, 5,123,249,244,140,191, + 15,213, 91,179, 61,148,199,167,129,220,142,166,236, 62,182,105,101, 37, 27,200,139,211, 33, 95, 23,238, 61, 53,202, 31,187, 66, +125,195,199,131, 54,249,175,236,194, 32,148,160,127,241,135,159, 38,124,207,232, 30, 2,223, 91, 98, 45, 81, 73, 42,226,147,193, + 16, 5,113, 60,103, 25, 97, 99, 70,116, 17, 8, 20, 41,249,171,133, 59,153,149, 53,213, 5, 62,244,214,205, 89, 64, 78, 29,253, +138,221, 32,167, 21,161, 85,203,182,223,204,157,175,106,129,118,186, 46,100,190,179, 64,139,177, 33,170, 79,136, 36, 0,161, 9, +154, 76,228,251, 98, 36,114,152, 92,240,193, 39, 32,241, 65,222,213, 18,185, 81,151,240,174, 72, 75, 11, 13, 29,109,210,175, 15, + 86,170,214,241,123, 39, 69,113, 13, 87,136, 35, 80, 4, 91,127,239, 6, 99, 83,148, 74, 60,129,155, 11, 90,204,157,219,218,187, + 12, 19,183, 49,106, 14, 84,229, 0,136,130,199,122, 27,163,230,188,160,196, 37, 84,155,250,189, 1,223, 91,197,191, 46,125, 31, +207, 29,172,211,128,118, 89, 86,143, 36, 35,167,229, 85, 52, 31,120, 50,175, 40, 35, 25,202,223,125,119, 37,191,126,165,213,174, + 6,100, 4,214,255,244,247, 63,201,239,126,184,149,159,107, 96, 63,191,221, 74,103,119,195,209, 39, 44, 83, 49,218,108,105, 55, +247,211, 79,111, 36,229,126, 50, 35,122,253, 94, 43,234,181, 22,193,227,121, 78,173,234, 14,169,104, 13, 6,186,181,118, 58, 64, + 15, 35,240,194, 10, 18,221,122, 24,197,142, 76,214,206,101,208, 55, 49, 19,119, 59, 35,127, 53, 55,233, 95,232,188,163,208,189, +155, 78, 13,229,143,209,156,118,240,248, 58,232,117,247,232, 86,105,253,106,200,241,109,106, 90,240,116,150, 34,215, 62,151,102, + 97,193,151,158, 3,149,101,170, 94,230,133, 6,195,134, 53, 65, 28,197,195, 8, 5,207, 51,180, 33, 0,152,196,185, 71, 23,117, + 61,221,176,192,132,170, 31,206, 56, 18, 20,198,144, 16,107,170, 4, 99, 32,126,131,137,216, 40, 48,124, 3, 70,154,235,170,139, +201, 74, 95,133, 84, 50,179,214,201, 24,150,198,185,243,120, 77,200, 33, 6, 15, 30,239,153, 3,147, 66, 79,242, 59, 34,145, 99, + 2,200, 82, 38,199,134,221,103,253,108, 3, 45,154,222,142, 50,249, 95,134,134,183,217, 17,225,110,231, 25,102, 79, 64,124,195, + 24, 3, 99,236,110,183,197,130,134, 19,166,194, 88, 17,161,190, 38,246,206, 2, 95, 4,189, 70, 40, 60,127,245,249, 75,153, 76, + 38,178,131,169, 7,138, 19,231,204,179, 32, 69, 98,228, 20, 68, 88, 56, 26,102, 32,150,195, 97,143,187,107,210,204, 48, 93,137, +140,206, 5,188, 5,215, 33, 16, 16,210, 4,205,231, 42, 55,109,248,194, 39,138, 80, 31,227,202, 50, 10,141,250, 27,154,254,185, +121,202,219, 42,105,163, 93,230,106, 49,229, 56,154,190, 17,206, 6, 68,103, 87, 56,134, 8, 56,139,194,169,185,120, 38,184,146, +162, 67, 88, 66,208, 95,165,154, 72, 62,251, 6,236,138, 45, 19,251, 90,223, 23,164,114,159,106, 1,244,225,250,134,210,185, 17, + 93,216,154, 76,102, 16,228,145,226,177, 38,225, 55,154, 80,150, 94,204,155,186, 99,225,130, 80, 63, 92,220,154,107,103,173,204, +104,137,205, 86,110, 22, 71, 13,111, 99,137, 16,184,133, 84, 11, 13, 20,104,208, 34,137,108, 92,195,132, 14,176,219,111,190,252, +140, 66, 56, 0,167,246,124, 2,138,114, 15,160,109, 60, 23,208,180,128, 30, 58,242, 17,227,162,158,193,223,127,253,150, 9, 81, +156, 54,140, 56,105, 76,187, 53,241, 12,248, 25, 60, 75, 0,161,165,219,146,210,181,196, 40, 20, 33, 63, 43, 27, 10,178,102,182, + 90,160,105,193,143, 66,173, 97,247, 26,194, 93, 77,125, 14, 74,183, 21,166,109,183, 99,134,122,237,164, 6,108, 83, 50, 54,182, + 85, 36, 48, 3,153, 79, 55, 83, 22,219, 49,155, 78,228,141,123,109, 32,118,233, 15, 50, 95, 60,210,216,115,172, 57, 14,247,193, + 20, 63,111,239,103, 82,237, 49,108, 82,184,113,115, 35,232, 86, 52,228,116, 88,202,197,164,208,216, 96,224,230,179,163, 83,105, +134, 59, 78,124,214,250,144,190, 62,159,202,104,194,213,128,113, 57,197, 65, 22, 8,130, 6, 22, 19,186, 21, 33, 1, 36,212,158, +137,235,100, 82, 41, 8,113,164,238,230, 28,161,239,168,237,107,230,186,134, 96,129,221,117, 76,250,133,240,193,163,188,168, 87, +226, 81, 96,133, 66,189,107, 69,231,162, 15,227,177, 86,106,157,134,118,199,250,139,177, 75,135,158, 48, 42, 88,160,238, 81, 17, + 66,185,206,204, 4, 52,249,232,131, 68,173,233, 34, 96,225,208,219,107, 75,217, 62,229,104, 25, 32, 52, 28,138,133, 86,180, 61, +125,104,250,221,166,204, 96, 50, 66, 69,159,152, 59,238,175, 62, 61, 33,231,254,106,190,165, 9, 3, 80,251,240,134, 71,124,216, +235,119, 37, 2,232, 68,127,217,235, 55,151, 12, 20, 8,202,216,163,231,142,112, 36,181, 12, 35,174,118,117, 0, 75,238, 32, 41, +191,138,253,142, 87,119, 38, 90,227,118, 77,110,142,128, 74,222, 64, 18, 86,212, 84, 73,137,221,121,110,160,194,202, 11,155,197, + 12, 42, 87,234,187, 4,220,109, 45,244,107,171, 34,150,233, 54,115,129, 18,219,169, 97,133,144,101,121,173,207, 30,227,129,143, + 19, 71, 77, 7, 46,225, 90,214,157, 90,165,209, 46,254,187,170,196,153, 17, 12,105, 83, 16, 28,214, 32, 15,106,250, 20,195, 83, + 97,180, 53, 78,112,228, 1,236, 68, 94,184,171,170, 97, 84,184,173, 12, 81, 40, 51,107, 35, 59, 34,182, 25,128, 18, 23,232, 40, +124,119, 95, 80,186,211,120,242,160,145,180, 89,205,227,123, 49,206,196,123,133,240, 3, 58, 93,152,213,228, 44, 20,108,151,156, +126,228,228,134,117,131, 73,162,134,156, 84, 72,105,180, 57, 32,103,255,207,255,250, 45, 31,246, 95,189,108,202,187,235,145,188, +131, 8, 17,130,156, 38,165,203,187,169, 60,214,162,172,215, 31,202,124, 59, 54,207,249, 8,197,212, 82, 26,195, 33, 31,238,237, +214,244, 13,238,167,154, 20, 34,208,118, 2,114,176, 97, 39, 73, 94, 55,172,108, 51,163, 99,157, 29,238, 51,217,183,156,115, 78, +227, 22, 10,200,236,216,113, 32, 81, 96,111,142,194, 18,207, 15,237, 90,251, 93, 22,100,176, 83,196,184, 29, 35,192, 28,221, 30, + 70,231, 94,156,129, 66,133, 68,128, 4,128, 49,255,106,187,115,249, 91,128,124,130, 90, 81,207,170,125, 75,196, 0,181,161,238, +108,106, 48,133, 67,225, 18, 69, 18,192, 65,212,215,213,123,209,104, 49,112, 10, 16,246,137,211, 68, 11, 23,133,114,168,157, 33, +183, 29,104, 26, 4,220,103, 18, 17, 76, 41, 93,179, 24,165,131, 33,181, 79, 3, 82,209, 2,151,160,173,236, 71, 75, 71,184,187, +137,179, 5,224,178,116, 32,159, 1, 23, 93,239,216,148,246,124, 77,195, 29, 60, 2,187,254,243,244, 81,155,157,203,155,243,123, +217,239,128,237,209,160, 40, 16,236,154,145,180, 48,246, 6, 74,248,237,245,148,190, 14,160, 1, 2, 45, 62, 70, 39,230,192,216, + 45, 89, 23, 5, 85, 32, 39, 26,248, 17, 7,146,210,212, 26,151, 24, 13,239, 92,167,127,107,157, 40,167,136, 4,188, 13,121, 47, +177,118, 0, 38, 9,248,150,166,163,245,241, 76,204,215,150, 52, 75, 23, 6,232,208,168,167,237,133,181,117,213,181, 65, 74,104, +105,141, 44,132,220,146, 27,198,255,232, 40, 81,204, 82,250, 85,239, 11,232,119,166, 41,150,179,224, 42,252, 57, 52, 63,118,139, +187,152,180,128,113,130,248, 88,144,167,223,192, 0,218,176, 41,136, 71, 88,187,233,107,175, 54,115, 62, 39, 48, 50,193, 57,254, +246,221, 7, 9, 50,237, 88,181,224,223,235, 64,222,181,207, 17,252,235, 55,175,217, 16,189,122,254, 76, 86,223,253,192,231, 17, +172, 27, 36,117,238,255, 51,155,168,221, 77, 23,198, 95, 7,248,185,233,147, 83, 49,138, 36, 87,139, 97,131, 73, 20,212, 67, 60, +151,237,106,133, 84,152,144, 15,242,195,254,209,158,222,195,196,214,108, 97,131,157, 50,214,119,152, 46, 66,124,167,244, 51,133, +194, 31,160,176,179,147, 83,106,159,252,242,243,103, 50,154,239,228,234,126, 98,184, 47, 76, 8, 60,223, 64,184, 11,147,173,110, +210,150, 37, 87,107,214,116,161,121, 74,195,128,180, 55,116,223,104,124,128,163,233, 52, 7,204, 27, 13, 78,244,118, 60,251, 40, +224, 81, 40,195, 27,189,210, 80,232,107,254, 0, 94, 6, 96,241,210, 89, 91, 69,209,224,179,136, 9,218,116,189,227, 20, 0,205, + 5, 39,182, 96,232,132, 77,190, 38,226, 37,238,253, 79,231, 23,244,132,248,171,151,208, 2, 41,217,108,204, 87,107, 45, 42, 67, + 22,161,112, 40,157,122, 62, 54, 59,215,146,177,225,233, 65, 32, 55, 55, 43,125,207,251, 50,154,109,228,104,239,169, 4,227,119, +156,120, 2,231,160, 89, 78, 98, 84, 0,168, 40,113,192, 3, 19, 33,230,168, 24, 20,139,163, 97,167,182, 12,205,139, 7,201,201, +202,214,145,136, 88,215,184, 46,188,107,101,183, 22, 85,244,160,178,222,201, 25,146, 60,245, 4,103, 35,135,140,187, 42,169,209, +231, 52,121,225,232, 58,164, 65, 2,170,188, 78, 35,244, 20, 98, 10, 69,160,165,132, 46,230,130,135, 6, 32, 12,116,181, 39,123, +118,128, 80,157, 74, 43,102, 59,210,103,145, 80, 58,165,164,144,253,179, 35, 75,204,168,230,225, 20,215,109, 26,183, 94, 51,229, + 95,125,118,194,106,154,149, 17, 68,251,193,117,198,248, 74,204,206, 19, 35, 35, 8,242, 0,232, 2, 63, 38, 9,163,127,226, 23, + 30,110,179, 26, 45,110,160,163,130, 64, 29,155, 98,216,168,138,188,241,194,170, 87,114,237,221, 57,206,146,108, 97, 93,109,108, + 9, 9, 63,191,118, 39,172, 32, 46,153, 36, 66,239, 72, 97,203, 55, 7,202, 58,106,218, 56,177,176,241, 14,130, 4, 58, 91,240, + 38,171, 93, 52, 18, 32,173, 23, 27,182,187, 45, 89,117, 69,110,167, 26, 24,135, 87, 3, 8,139, 53, 87, 66,195,231, 49, 46,172, + 43,180, 33, 64,165, 22,196,185,123,166, 8, 79, 86,139,142, 66, 73, 77,124, 39, 91, 97, 38, 76,135,125,199, 63,227, 76,209, 57, +170, 48,247,179, 74, 78, 21,157, 48, 43,104,116, 54, 12,102, 6,114,139,221, 60,136,129,167,217, 50, 31,250,205,214,193, 53, 67, +227,124,163,115, 17, 71,128, 55,155, 60, 91, 72, 6, 64,202, 47,214, 72,226, 45,126,230, 20,136,242,204,126,127,165,122, 7,148, +232, 31,190,121, 71,149,177, 15, 55, 19,121,119, 53, 38, 24,110,181, 94,146,194,212, 78,186,146,104, 65,251,179,231, 45, 98, 19, +222, 92,220,115,186, 4, 80,216,253,100,101,202,132,120,191, 96, 31,108, 77, 61, 15,215,110, 91, 66,240, 40,228, 26,128,166, 50, +122,221,247, 14,134, 44, 46,241,126, 65,119, 2,181,111,189,219,112, 47,216,218, 5, 44, 22,160, 42, 87, 77, 93, 54,233,198,215, + 73,134,121, 64,251,252,248,120,224,118,157, 13,125, 47, 55,188,198,247,211,185,252,252,147,167,178, 63,140,249,153,110,180,195, + 4, 66, 28,222, 10, 8, 4,192,175,228, 94,188,149, 13,116, 37, 45,189, 54, 75, 13,220,218,197, 14,204, 90, 55,194,200, 87,239, + 43, 38, 16,205,200,112, 36,224,235, 86, 3, 36,179,154, 20,231, 26,219,154,136, 42,105,149, 74, 59, 49, 45, 37, 39, 85, 68,220, +187,240, 84, 88, 26,155,161, 42, 18, 43,241, 37,128,197,136, 55, 0,100, 10,157,139, 41, 87, 27, 82, 61,207, 30,208,221,254,255, +209, 80,160, 0,194,115,143,194, 5,159,139,142,117,154, 24, 33, 16, 3, 36,254,111,191,191,151, 95, 60,237,201,165,199, 39, 88, + 55, 35,246, 96,103,138, 87,195,250, 2, 93, 47,186,105, 4,115,116, 84, 8,158,143,251,135, 92, 1,252,248,238,173, 28, 29, 63, + 33,255,124,166,239,121,111,111, 72,150,203, 48,214,228,189,159, 48,144,239, 56,254,207, 57,181,192,212, 11, 93, 20, 10, 27,136, +126,224,189, 99, 2,178,195, 61,239,152, 34, 35,232,160,152, 22,132,252,125, 54, 62,167,186, 26,227, 87,224,234,136, 54,253, 66, + 33, 15,124, 13,186,252,208,129,186,187,118,155,198, 33, 81, 84, 57,196, 65,165,174,237,238,126,230,222, 70,217,236,157, 97, 92, + 50,198, 97,187, 47,120, 31, 88, 35,224, 10,130,219, 60, 24,236,177, 24,164, 20,183, 62, 39, 24,235,163,160,228,212,212, 53, 61, +226, 48, 33, 43, 8,130, 48, 81,164,215,118, 49,209,124, 16,201,187,243,115,249,213,207,247,229,217,147, 23, 4,142,181, 8, 42, + 11, 9,116, 70,220,197,202, 0,103,246,237,205,148,187, 94,116,214, 7,189,150, 43, 20,218,164, 7,177, 28, 13, 33, 18,232,254, +160, 77,221, 0,128, 9,169,135,145, 27,162,158, 29,241,202,118,217,179,197, 74,174,111, 87,242,195,251,239, 89, 4,150, 44,210, + 17,155,244,218,181, 91,110,175, 92,200,207, 95, 82,241,132, 20,177,255,241,215,159,200,239,255,252,142,135, 7, 30, 28,152,102, + 18,244, 73,229,200,146,247,163,215,107,153,241, 81, 94,210,199, 4,184, 11,116,218,192, 78, 32, 66,127,246,108, 95,230,187,150, +139,117,133,114,121,125, 35,231, 90, 16,246,245,231,110,119,107,121,113,186, 71,169,238,203,209,154,158,229,157,184,164,105, 24, +166,116,200,119,104, 24, 81, 48,226,254, 97, 77, 12,243,129,201,116,172,241,119,200,162, 14,247,133, 94, 16,100, 17,164,124, 47, +223,254,244, 78,243,201, 75,121,126,144,106, 19,209, 37, 29, 22,128,105, 19, 29, 50, 16, 95, 4, 17,181,141, 97, 98,118,243, 53, +243,208,171,199,109,234, 43, 52,123, 29, 89,193,208,108,240, 84,138,209,159,157, 22,172,255,244,219, 6,130, 59, 26,116,233, 4, + 3, 64,194,249,237,146, 9,172,225,182,166, 69,109,115,233, 18,163,174,174,246,192, 87, 46,107,165,163,210, 29,219,108,108, 31, +212,106, 81,245, 94,174, 48, 30, 48,119,110, 14,172, 50,100,161,209, 52, 90, 90,165,133,253, 6, 43,248,210, 59, 72, 92, 16, 19, + 63,136,101,180, 72,229,248,160, 75, 11, 63, 36, 19,173, 1,165,223, 52,208, 19,128, 66, 56, 4, 24, 91,147, 83, 88, 66,190,115, +103,198, 10, 26,164, 3,252, 46, 4, 75,125, 56, 90,145,153,196,112,159, 12,159,227,209, 84, 59,218,140, 84, 56, 0,192,176,135, + 77,177,150,128,240, 73, 28,242,192, 2,153,137, 67,221,208,191, 67, 85, 29,186,184, 9,198, 70,181, 98,148, 24,104,173, 44, 35, + 15,138, 5, 21,182,104,214,224,244, 33, 36, 7,113, 10,159, 25,140,184, 96,139,107,124, 3,157,218,242,215,142, 35,219,117, 99, + 98, 1, 16,213, 84,187,251,109,168,221,171,126, 29, 85, 57,198,166,248,205, 8,114, 0,237, 25,230, 32, 97, 66,135, 66, 22,174, + 57,146,201,142, 65, 32,119, 49,146,144, 85,114, 69,189, 17,169, 36, 82, 75,202,188,150,185,141,140, 48, 30,196,251,233, 55,237, +126, 0, 73,143,100,142,142, 56,243,100, 44, 78,161,194, 24,157, 98, 49, 31, 57,176, 85, 86,170, 68,193,122,226,173, 76, 84, 32, + 16,211,160, 91,156,141,111, 11,231,146,227,194,180,162, 38, 71,229, 89,190,178,206, 95,239,101,151,212,159,200,167, 24, 57,119, +228,125, 77,240, 24,133, 46,224,196,228,122,225,149, 56, 13,198,200,116,217,154,167,182, 86,112, 64, 22, 36, 61, 3,125,223, 31, +110,231,212, 30,128, 38,244,129,118,224, 48,107,192,131,132,113,245, 20,218, 23,177, 94,171, 86,168, 73,124,202,221, 99, 11,163, +203,157, 81,248,224,128,133,103, 1,251,218,197,120,237,226, 30,166, 71, 15,233, 99, 88, 68, 98,148,190,212,115,118, 59,157,201, +139,147, 3,249,241,242,158, 10,118,112,207,217, 2,208,147, 54,140,206,153,153,217,197, 82,207, 25,238, 1, 10, 83, 24, 70,160, + 16,130, 90,148,185, 96,161, 0,214,224,163,127,247, 2,222,209, 55,119, 28, 61,254,229,237,133,188,122,114, 34, 63,251,228, 76, +228,167,146,138,121, 40,186, 80,160, 32,129,226, 30,182,121, 54,109, 71, 92,169,137, 97,135,221,238, 1, 56,182,150, 22,168,148, +176,186,212,196,135,117, 4, 58, 34,170,115,101,152,178,108,121, 86, 67,159, 64, 1,241, 78,119, 63,132,129,192, 18,123,133,158, + 55,197, 64, 83, 25, 12, 49,124, 41,204,146,182,210,103,224,244, 5, 90,224,161, 49, 92, 24, 81,130, 7, 53,250,130,158,211, 62, +234, 46,139, 90,251, 30,255,152,138, 23,152, 38, 38,173,137,241,242, 68,239,249,163,227, 99,249,233,126, 39,191,121, 17,152,136, +139,152,154, 29, 58,114,116,142, 56,206, 79, 79,135,114, 51, 90,242, 57,220,223, 51,128,228,252,221, 53,193, 89,112,220,203,178, +153,220,220, 94,201,193,225,153, 22,114, 61,233,104, 16,199,234,138,214,153,228, 38, 55,109, 42,232,227, 86, 76,222, 70,179,181, + 77,180,244,235,143,246,160,222,216,115,186,165, 57,172, 1,236,134,102, 8, 74, 97,102, 40,149,106, 17,102,210,173, 41,214, 97, +113, 76,250, 29, 58, 55, 36, 49, 76,126, 54, 59, 19,163,161, 73,137,158, 33, 20,130,161,131,119, 73,253, 2, 87,222, 69,160, 50, + 41,125, 10, 83,212,107, 68, 50,146, 28, 88,138,215,192,151,247, 57, 90, 14,233, 70,136,142,247,226,110,204,107,108,128,199,146, +207, 32, 98,236,233,193, 64,222, 93, 94,105,156,232, 83, 35, 3, 83, 27,154, 6,233,223,221,220,156,203,201,201, 83,217,106, 81, +248, 55,191,255,218,252,238, 51,211, 80, 0, 78, 0, 19,119, 82,243,180,120,133, 76,235,229,104,198,164,143,107,128,142,158,205, +136,235, 83,112, 58,151,226,191, 81,148,161,105,179,255, 94,232,231, 69,140,193,179,140,228,248,228,233,151,250,140, 44,232,234, +135,107,166,209,220, 76, 95,144,164,193,238,208,115,116, 55, 94,200, 45,228,188,143, 23, 44,192,143,246, 90,188, 94, 89, 22, 9, +224, 41,184,134,120, 6, 32, 97,142, 88,222,235, 53,181,155,221,200, 54,200, 9,196,158,107, 28, 61,212,159, 65,129, 3,166, 4, +252, 22,110,225,127,161,207,222, 39, 79,246,228,228,104, 32, 23, 90,172, 96, 50,215,109,196, 68,150,179, 48,210,247,115, 51, 89, +203,176, 21,146,137,129,179,139, 38, 11,247, 3,236,177,121,110, 77, 80,204, 85, 68, 70,244, 62,206, 43, 70,228,184, 8,116,175, +212,251,118,116,176,207,179,254,253,185, 54, 12,193,190,188,136,215, 52,123, 25, 14, 90, 50,154,216,249,138, 19,123,174,232,130, + 8,164, 59, 56,236,204,153,161,236,247,180,104,160,106,170,222, 11, 45,118,158,124,250, 11,145, 55,223,200,120,169, 63,135, 68, + 9, 37, 27,140,201, 90, 45,204,238, 7, 12,158,179,197,206,248,114,121, 81,143,103, 11, 7,162, 25,218, 82,106, 73,202,176, 18, + 6, 41, 77,144, 70, 28,196,198, 19,233, 59,119,147, 32, 48,109,118,140, 0, 63, 59, 27,202,253, 61,192, 47, 59, 57, 24,180, 9, + 54,107, 17,226, 31, 17, 89,140, 17,219,219,169, 38,162,184, 33, 47,158, 28,200, 78, 35,197,190, 6,246,102,127, 32, 95, 60, 30, +202, 73,191,193,177,236,118,181,226,200,124, 85, 88,160,233,234, 7,196,232, 9,157, 14,118, 41,115, 40,188, 33, 72,233, 67,146, +233, 69, 0,154,120,208, 52, 17, 1,242, 78, 17,140, 1,174, 10,205,128, 32,119,185, 69,113,203, 80, 72, 74,162,150,217,211,130, + 97,167,209,254, 87, 47,246,229, 31,207,151,124, 0,113,112,241, 48,205,181,130, 26, 12,250, 76,188,184,233,168,216,154,238,222, +133,138, 98, 73,237,246,192,124,149, 3,211,240, 69, 66,229, 56, 20, 9, 54,119,139,208,208,162,220,181,118, 10,179,117,226, 96, +161,130, 15, 9,168, 94, 1,198,163,154,208, 33,164,128, 98,195, 36, 18,211, 7,199,177,192, 14,193, 80,175, 17, 11,133,122, 63, + 41,236,144,243,220,187,235, 32,228, 67, 91,184, 3, 30,186, 72,142, 35, 49, 14,135, 24, 10,128,102, 46, 20,130,175, 3,184, 5, + 64, 17,208,218, 27,237,132,147,174, 77,119,170, 32, 54, 76,140,234,132,202, 24, 15, 38, 80,155, 21, 45,174, 25,218,239,173, 86, + 60, 85,241,131,135,135,224,146,157,141,212,147,102, 82, 99, 49,240, 45,144,113, 21,183,105,173, 58,127,252, 5,222,107,133,210, + 6, 85, 9,197,204,100, 58,225,239,174,146, 11, 10,130,165,235,212,103,206,153, 53,116,125,204,194, 7, 15, 57,254,119, 53, 30, +179,251,125,116,212,231, 12,109, 71, 19, 32,163,250, 13,122, 9, 63, 71,166,193, 37,211, 98,110,239,176, 79,254,118,186,217,114, +220,126, 9, 53,172,251, 29, 59, 16,186, 98, 81,184, 39,231,148, 7,149, 54,248,183,216, 1,227,253,191,185,188, 33,205, 17, 5, +215,209,112,143,184, 7, 51,167, 49,110, 52,174,123, 88, 26, 72,148,188, 91,174,136,218,236,254,167, 26,161,126,252,112, 33,123, +253,158, 25, 74,232,249,238,193, 13,109,177, 99,209,245,221, 59,160,176, 71, 60, 11, 13,202,227,106,145,147,175, 57,170, 35, 59, +130,120, 9, 3,132,226, 44,246, 6, 29, 83, 12, 68,119, 23,195, 62, 51,151, 67,237,228, 71,115,163,215,133,153,117,206, 0,177, +198,185, 21,243,248,126, 27,155, 35,185,239,124, 58,149,213,210,202, 89,240,208,125,150,206,130, 41,217,149, 4,116,212,203, 3, +115, 44, 11, 93,208, 2, 73, 39,112,155,209, 10, 41,159,196, 21, 8, 22, 99,208,166, 61, 31,240,140,214,115, 2,191,121,250,212, + 71, 5,105,170,232,124,209,193,227,119,254,112, 3, 42,104, 87,246,219,129, 92,205,114, 58,138, 97, 18,134,174,232, 78, 63,211, +217,241,144,197, 26, 76,102, 48, 9,196, 84,231,116,127, 79,238,102, 11,121,220, 59,214, 4,222,149, 27, 45,134,154,177,225,116, +114, 7, 35, 2, 83,130,129,220,120,185, 34, 21,105,183,219,186, 65,144, 38,148,201,194,180, 28,168, 16, 88, 61,187,166,121, 94, + 33,229,109,245, 19, 80,244,138,248,131,157, 61,107,164,156, 37,177, 79, 41, 77, 32,106,231, 32, 72,210,231,244,250,225, 62,231, + 14, 54, 54,189, 1,195, 49,225,130,165, 78, 21, 54,175,132,240,193,194,216,117, 3,240,189,213,138, 3, 77, 82, 76,127, 37, 60, +151,250, 12,199,166,158,134, 61,114, 20, 74,237, 88,200,149, 16, 88, 78, 96,208, 96, 23, 28, 32, 39,148, 92, 41, 65,167,160, 57, +189,231, 20, 13,154, 15,175, 63, 92, 25,155,161,180, 2,142,189, 26,204, 72,198, 90,252,142, 38, 54,189,113,224, 51,229,110, 19, +147,142, 37,189, 80, 76, 17, 52, 14, 76,212, 11,188,108, 90,103, 99,162,177,217,113,181, 88,210,193,174, 33, 47,159,190,148,103, +143, 76,175, 1, 69, 45, 19,115,183,237,142,110,161,188,213,247,241,231,215, 31,228, 31,126,184,214, 14,119, 40, 95,125,254, 72, +102,155, 66, 30, 29,118, 56,165, 29,207,215, 46, 93, 29,208, 24, 7,166, 93,152,160, 78,180,105, 53, 1, 32,125,255, 69, 91,254, +217,203, 61,249, 79,191,123, 39,179,121, 68,147,148,116,145,201,251,203,130, 70, 44,135,251, 29,142,184, 49, 97, 72, 83,211,161, +160, 80, 17,158, 31,106,248,155,181, 48, 26,115, 18, 70,242,210, 29, 41, 67,250, 19,240,217, 40,205,167,192, 86, 48,145,199,179, +144,227,242, 61,109, 38,110, 71,119,242, 90,175,251,147,211, 79, 52,158,105,108,165,165,115,194, 98,190, 65, 15, 8, 51,215,162, + 80, 22,239, 85,198,251,119, 56,196,107, 45,100,178,106, 8, 52, 16,123,189, 67, 57, 62,123,161,177,112,142,115, 12, 23, 51,243, + 13,199,193, 3, 48, 8, 47,138, 7,230,110,178,146,202, 22,130,180, 37, 15,144,165,139,199, 16,238, 22, 62,136, 83, 86,201,133, +162, 46,238,137, 93,120, 48,169,116,158, 65,139,160,184,136, 86,158,167,123, 13, 58,148, 25, 71,208,118,138,107,253, 61,227, 77, +201,110,231, 98, 27, 19,225,124,130,221, 42, 70,168,250,158,160,137, 94,148,102,225,154,226,112,232,107,131,246,197,209, 47,144, +221, 20,199, 79,153, 92, 17,176,223,222,204, 24, 56,158,104, 65, 16,248, 36, 1, 29, 38, 68, 36,240, 25, 40,147,170, 15, 49, 2, +115, 22, 52,184,183, 2,186,176, 73,141,115,227, 19,182, 1,208,211,215,255,230,122,198, 29, 29,164, 13, 81,133, 87,157,246,135, +139,145, 60,123,146,178, 43,194, 53,120,243,254, 86,142, 15, 7,244, 13,166, 78,240,120,206, 42, 14,116, 10, 90, 88,162, 27,239, +118, 41,124, 0, 65,146, 21,124,138,245,112, 32, 88,167,122,160, 97, 88, 96,102, 15,194, 10, 17, 99,179, 39,143, 79,184,107, 3, +144, 39,171,105, 73, 40,198, 18,215,185,182, 81, 33, 36, 74,113, 27,176,135, 53, 64, 79, 92,131,220,176, 99,163, 90,159, 38, 70, + 32,144,145, 76, 64,175, 98,162,107,182, 13,148,135,107,231, 99,114,116, 50, 20, 85,240, 29, 63,237, 62, 17,124, 40,251,232, 12, + 2,218,144, 91, 37,138,209,109,229,104,148,249, 58,129, 69, 12, 36, 32, 73, 55,139,120,111,184, 11,132,187, 24, 42, 77, 80,116, +124,116,203,226, 49,207,107,135, 51,226, 2, 42,109,107,167,210,213,232, 83, 15,162,188, 14, 20, 56,210,159,143,109,111, 79,240, + 16, 52,181,193,149,111,185, 21,166, 75,145,162,203, 1,231,151,187, 52,236,212,244,253,188,191,186,182,238,197, 87, 42, 79,142, + 14, 13, 39,160,157, 42,184,178, 48, 14,121,118, 58,224, 94, 31,221, 1,246,111,175, 47, 39, 66, 41, 32,156,117,105, 16,188, 6, + 96, 36, 18, 17,208,209,184,167, 88,241, 96,255, 54, 89, 88,151,182, 90, 78,229,253,197,214,109, 75,237, 25,225,115,135,235,144, + 90,242, 93, 83,225, 47, 53,164,120, 8,230, 66, 41, 51, 82, 19,103, 12, 10,183,147, 25,207,126, 51, 49, 64, 37, 65, 97,177,241, +217, 49,194, 37,152,116,183,101,193,153,101,150,120,141, 70,217,116, 25, 93, 43,178,147,196, 64, 89, 24, 65, 3,192,117,216,239, + 19,149,189,112,192, 28, 39, 74,110, 29, 42,116, 6,195,212, 46, 55,134, 11,217, 26, 6,114, 34,197,213, 1, 82, 45, 10,112, 20, + 12,196,148,178, 13,205,181,177,146,146, 37,149,180,180,251, 75, 28, 65,252, 0,138,195, 89, 97,209, 11,145, 39,189,230,248,167, +164,182,182, 22, 86, 24, 59, 23,112, 47, 43,165,223,234,144, 59,141,110, 17,251, 88,116,155,223, 93,173,229,171, 23,125, 57,215, +238,205,232,124, 41,213,196,150,215, 91,185,209,175, 13,251,224,173,155, 23,195,222, 96,192,169, 21,104, 99, 40,246,247, 7,125, + 19, 55, 25,223,201,147, 94,143, 29,242,189,158,157, 63,125,247, 3,159, 95,142, 74, 51,163,121,218, 52,200,166, 9, 85,113, 26, +121, 49, 66,133, 24,183, 18,206, 61,177, 85,184, 0,196, 78,230,100,158,175,156, 19, 51,160,169,119, 52, 46, 10,248,251,203, 90, +186,215,116,253,169,142, 7,137,217,216,238, 89,138, 2,156, 96, 56, 3,239, 69,142,119,160,165,174, 88,130, 9,157,169, 82, 41, + 11, 90,231,107, 14,128,244, 13,207, 86, 38, 22,213,136, 29,171,147, 83,191, 28, 24,132,251,241,132,202,120, 72,222, 48,237,140, +192, 78,208,223,125,118,124, 66,189,146, 56, 74,228,197,211,167,154,132, 76, 62, 22, 32,183,134,187,114,182, 19, 19,130,186,215, + 66, 23, 17, 19, 35,119, 54,114, 14,130, 54,192,180, 1,164, 33,219,141,157, 58,254,220, 32, 21,208, 48, 70,224,240, 15,123, 29, +202,195,158, 30,246, 36,215,248,137,156,121,112,208,163, 73, 22, 26, 46, 24,191,224,217,185, 67, 59,170,159,231, 12,178,217, 71, +169,252,226,197, 33,233, 97,112,253,180,130,218, 16,250,121,110,211, 96,156, 7,179, 5,183, 56,139,188,134, 28,247, 15, 63,222, +202,211,131, 14, 57,250,152,164, 96,229, 76,179,173,251,153,198,128,142,124,174,205,227,223,142, 22,204,133,152, 98,239,245, 26, +244, 31,216,239,183,244, 57,212,164,172,159,163, 73,145, 25,104,205, 39,156, 58,164, 28,191, 59,158, 71,182, 50,219,218,243,130, +235, 4,211, 24,196, 25,200, 25,111,118, 38, 54, 5, 65,162,119, 31,206,229,183,122,214, 94, 30,199,114,122,144,114, 69,199, 41, +166,254,220,158, 22,225, 40, 54, 73,215,115,250, 41,226, 34,174,217,177,190,119,109,249,228, 70,155,205, 27, 25,113,194, 90, 22, + 9,158, 59,227,132, 10,145,228,150, 68, 16, 92, 48,194, 29,116,140,124,134, 63, 35,208,108,217, 25,218,161,123, 48,150, 8,220, + 0,164,172,157,182,170, 52, 31,184,139, 79,154,229, 14,184, 49,190, 49,116,135,247,218, 49,141,228,255,241,221,130,128, 11, 84, +184,120,232,119,216,135,109, 2,238, 60, 2,143,218,149,132, 43,165, 91,245,123, 64,119,251,252,168, 77,148, 97,168, 31,254,240, + 96,159,238, 74, 48, 95, 24, 45,119,172,246, 90,218,129,160, 66,190, 24,105,101, 86,166,242, 92,187, 49,236, 19, 67, 84,198,219, + 45,147,127,195,245,237, 58, 80, 62,210, 10, 48,163,222,239,218, 0, 30, 24,185,236, 50,242,122,187,154, 12,135, 0, 71,128,254, +146,141,101,208,119, 52,115, 12,222,229,220,128, 53,235,148, 97, 14,251, 53, 28,110,112,202,209, 25, 54, 67, 83,138, 3,176, 2, +250,226,248, 58,170,245, 12, 40,246, 81, 73,151, 47, 28, 10, 24,104, 76,119, 1,105, 25,144,155, 5,167, 54,208, 68,253,248,228, +148, 21, 32, 14,234,202,233, 81,232,154, 43,133,183,176,120,208,149, 39, 96, 76,140, 87, 78,110,183, 43,196,240, 16,136, 89,159, +174, 22, 27,183,184,180,196, 90,106, 96,193, 97,195,247, 24, 58,216,246,116,105,106, 43,143,134,139, 51,160,187,172,214, 46,161, + 99, 44, 2,115,162,208, 42,120,225,129,171,168, 21,234, 8, 86,211,224,142, 51, 67, 37, 57, 45, 50, 10, 79,248,182,171,183,110, +162,114, 75, 51,209, 26,219,199,215, 19, 32, 20, 45,165,121,177,227,127,232, 20, 40,116, 3,211,132,164, 81, 11,223, 4,190,223, +181,233, 68,104,247,215, 11, 1, 32,233, 77,186,210, 11, 0, 71,240,102,169,241,251,243,210, 70,144, 97,225,114,190, 65,192,189, + 28,222, 39,197,125,244, 12,156, 30, 70,242,238,118, 78,129, 24, 76,131,176,151,100,224,128,118,188, 96,103,170,193,103,208,210, +135, 52,164,221, 44, 30,106, 36, 44,140,215,251,122,174,144,132,239, 53, 73,189, 58, 59, 32,136,166,116,119, 58,225,106, 33,224, +116,140, 86,151, 89,254, 96,174, 67,192, 78,194,207,126,184,183, 52, 93,231,134,217, 26,227,193, 62, 4, 93,134, 69,209,142,251, +102, 74,231, 2,197,206, 66, 14,215,115, 93,187,128,237,114, 96, 85,114, 13, 74, 29,195, 75,100,166,188,101,187,226,204,118,178, +133,173,147, 48, 9,192,239,231, 42,194, 21,232,216, 25,235,215,219, 30,104,172, 27,177,247,135, 9, 11,120,218,160,252,225,239, + 99,215, 43,159, 46, 77, 27,194,228, 52,115,226, 67,182,254,153,241,191,117,106, 46,120,140, 62,129, 33,189, 9, 78,131,206,247, +210,188,177,165,156,203,246,221, 5,187, 72,176, 34,208, 57, 94,222,143,173, 96,116,119, 68,172, 3,254,203,183, 59,249,245,147, + 6,153, 38, 71, 26,112, 47, 52, 16,115,234,161,239, 13, 99,249,147,195,125, 54, 43,152,200, 81, 58,180,219,148, 71, 39,251,250, +119,122, 29,247, 7, 76, 78,151, 87,247,102,243,172,231,234,179, 79, 62, 33,253,237,126, 58,102,145,132,147, 52, 91,216, 20, 34, +106,132, 76,200,150,124, 33,196,210,242,206,220,238,105, 76,230, 65, 73,127,119,196, 86, 36,231,116,147,179,249, 0,134,166, 11, + 76,197, 70,203, 65, 76, 29,218, 13,158, 21,130, 13, 93,150,186, 65,142,115,248, 32,153, 75,126,180,237, 84, 89, 40, 64,221, 45, +122, 88,137, 38,145, 81, 15,205, 13, 47,112,218, 85,192,228,181, 89,105,115,160,221, 32,148, 26, 7, 90,176,108,146, 37, 39, 57, + 85, 7,205,184,145,173,165,167,215,224,234,182,144,235,155, 43,121,116,250,152,113, 44,210, 88,141,207, 6, 19,152,191,124,255, +123,249,242,139,223,200,112,255,137,252,235,223,164, 26,159,244, 25, 44, 2, 38, 50,252,110, 80,118, 1,212, 28,107, 53,240,225, +118,194,201,226, 97,207,140,104,240,140, 97, 44,143, 4,143,123,130,243,128,251,137,152,130, 85, 20, 18, 57,169,205,121, 96,138, +123,211, 13,187, 95,188,207, 15,218, 68,189,191, 30,201,205,237,165, 89, 57,107, 28,134,196, 43, 38, 15, 0, 96, 35, 49, 62, 58, +104,201, 63,195,231,215, 63, 3,136,135,247,178,221,217,245,195,243,140,123, 51, 95,249,232, 60, 52, 17, 21,188, 79, 92, 67, 48, + 86, 46,238,231,108, 36,128,187, 0, 93, 14, 59,106, 92,230, 27, 77,252, 63,123,220, 39,125,122,172,221, 58,148, 61, 3,247, 6, + 65, 12, 7,184, 14,239, 27,121, 97,177, 78,249,181,200,141,201,114, 49, 80, 37,108,110, 27,152, 68,184, 32, 14,157, 32,180,224, +190,186,189,103,156, 58,218, 79,228,209,209, 49,159,217,191,251,250, 91,185, 63, 59,145,127,247,155,199, 50, 4,216,110,158, 9, + 32, 27,189,168, 85, 55,210,100,168, 57,200, 24,247, 27,221,255, 97,223,124, 48, 32,110,131, 98,137,192,116,210, 31, 34, 83,124, + 66, 18, 3,127,186, 29,154, 65, 64,167, 48, 23, 45, 28,122,123,171, 17,201, 74,165,187, 66, 21,229,195,174,164,136,196,171, 63, + 27,179,147,219,236,212,173, 74,255,215,132, 64,132, 31, 8, 78, 75, 64,161,163, 72, 96,199,139, 42, 39,201,217,177, 67, 8, 97, +138,202,116,101,213,125,238, 5, 68,200, 61,239, 78,230,122, 83, 18,210,122,180,179,208, 32, 9,209, 59,184, 47, 45, 52, 65,254, +164,157, 57,192, 63,144,173,132,186,221, 55,231, 99,249, 15, 95,238, 75, 43,200, 40, 29, 65,215, 46, 4, 39,114, 71,119,236,212, + 6,120,239,206,117, 6, 96, 40,195,174, 25,193,111,109, 94,196,171,160, 32,117,133, 0, 53,253, 29,133,150, 3,175, 47, 38, 4, +249,173,160, 20,166,255,251, 81,127,207, 22, 14, 64,122,232,240, 67,243,187, 37,147,242,163, 30, 44,249, 18, 19,208,105,219, 78, + 40,246, 64,129,247, 30,107, 5, 10,149, 42, 38,115, 61, 4, 23,139,157,209,144, 52, 25, 65, 21, 10, 14, 97, 51, 13,218,224,108, + 71,238, 76,182,170,209,241, 54,150,193,227,141,224, 15, 97, 14, 51, 59,121, 48, 64,161, 32, 11,233, 95,153,117,218,220,225,134, +188,249, 8,114,195,126,199, 53, 2,244,125, 0, 75, 0,218, 14, 14, 80,106, 18,171,120,125,188, 7,252,110, 38,213,208,204, 40, +232,130, 86,100,156,134, 16, 15, 1, 91,201,192, 20,155, 10,223,121,131, 26, 66,164, 47, 57,208,185,139,251, 4, 44,154, 42,227, + 10, 36, 6, 36,154,202,137,203,246,223, 25,199, 72, 17,247,167, 13,159, 12, 21, 28,185, 98,111,141, 2,162, 18,221, 9,189,136, + 73,233,167,156, 25, 82,220, 77, 75, 2, 55, 24, 42,220,129, 9,239,131,148, 58,167,227,112, 95,203,245, 74, 80, 79, 29, 80,156, +162,115,130,143,182, 21, 32, 37, 59,134,233,106,237, 0, 76,183, 17,141, 12,120,133,207, 66, 89, 87,210,154, 68, 70,154, 8, 16, + 60, 76, 79, 61,244,221, 99,206, 68,245,225,126, 42,159, 60, 62, 35, 0,102, 50, 91,178,152, 53, 59,213, 38,113, 27,115,136, 92, + 20, 37,187,197,204, 19, 60,138, 56,140,239,240, 12, 29,232, 53,133, 51,242,205,253, 82, 38,219, 5,117, 10,242,194, 4,141, 50, + 95, 83,224,126, 68, 78,175, 52,202, 97, 80,235,244,207,192,144, 64,231, 7,163, 22, 45, 76, 59, 62, 42, 70,178,100, 12,112,199, +184,166,139,219,176, 40, 74, 98, 55, 12,177, 41,198,114,179,173, 41,105, 81,184, 49,160, 39, 49, 29, 54, 25,225,154, 40, 52, 75, +225,212,117,247,177, 6, 48,251,221,160,150, 92,174,196,166,204,155,221,172,157,169, 65, 0,193,148,188,116, 95,247, 92,158,159, + 30,201, 94,191, 47,175, 47,111, 13,232, 73, 19,169,148,120, 3,254,183, 94,195,171, 89, 41,231,163,157,188, 58,237,202,205,178, +100, 98, 4, 66, 26, 99, 83, 90,212,150,144,222,237,176,240,158,105, 81,139,100,222,114,244,246,205,104, 70, 80, 31, 10,166, 82, +127,119, 16, 55, 25, 3,191,120,245,169,124,251,253, 55,134,102,214,103, 60,209,235,181,110,152, 91, 37, 80,239, 81,100, 40,230, +164, 97,192,196, 6, 85, 21, 67,126,214, 45, 65,149,176, 20, 54,175,121, 48, 32,224, 67,129, 36,244,237,133,141,250, 81, 0, 33, +105,154, 6,132, 81,117, 43,139,103,226, 79, 10, 75,108,133,203,101, 22,110,110,131,228, 22,115, 87, 93,178,160,106, 37, 46,148, +181, 53, 81,172,208,133,143,128,124,195, 14, 30, 5, 59,174, 23, 40,181,143, 30,157,201,213,229, 7,142,160,193,176, 16,174, 82, + 55, 82,164, 43,222,239,155,187, 91,189, 63, 45,130, 81,227,176, 41, 39, 39,135, 4, 18,226,251, 62,220,220, 26,128, 76,207,240, +159,222, 24,133, 14,184,171,130, 82,175, 54, 61,216, 16,160, 25,202, 95,191,122,164, 73,188, 82, 19, 44,185,142,132, 6,202,102, +103,106,131,252, 25,207, 13,200, 45,165,251, 20,108,179,173,153,116,229, 1,215, 88,103,103, 79,181, 40,223, 35,131, 38,208, 34, + 2,188,116,200, 80, 39, 13,123, 86, 1,154, 68,215,139,216,241,238,122,174,231, 58,161,146, 40, 86, 47, 80,237,196,164,137,182, +185,129, 37,115,196, 91, 20,144,221,102,160,215, 96,195,251, 7,218,246, 94, 71,187,229,187, 53,241,100,152,246, 14,186,136, 9, + 45,174, 50, 62, 61,219,147,191,188, 29,249,121,205,157, 45,100,157, 55,128,126, 16,142,129, 14, 62, 46,249,108,157,153,210,226, +206, 49, 33, 98, 94,239, 43,151,237,174, 84,182,161, 26,202, 63,235,107, 61, 57, 59,245,201, 82, 83,238, 38,115,249,219, 63, 93, +201,127,248,234, 49, 27, 2,208,102,145, 31, 91, 13, 51, 15,163,191, 3, 39, 45,137, 79, 98, 82, 22, 73,175, 30,235,153,252,238, + 94,198, 99, 61,215, 88,163, 64,104,159, 10, 62,129,211, 73, 92, 86, 18,135, 17, 99, 26,210,173,252, 6, 4,110,157,154, 57,215, +250,193, 71,219,245,123,156, 82, 67,123,184, 34,175,125,179,115,215,141,198,215, 80, 36, 0, 81,136, 32, 8,195, 8, 84, 90,163, +101, 78,176, 25,133, 77, 26,166,211,123,163, 29,115, 20,132, 21,241, 93, 43,221,152,182,121,179,245,150, 59,173, 20,135, 24, 15, +184,222,180,139,197,141,220,105, 53,117,183, 76,229,141,222, 28,248,239,194,117, 8, 72, 76, 42, 26,117,204,106,145, 8,107, 72, + 2,162,224,162,202,150, 5,255,251,149, 94, 44, 45, 32,154,250,158, 80,133,227, 38, 32,149,224, 97, 31, 83,144,167, 37, 77,112, + 6,181,155,126,123, 55,165, 48, 79, 69, 87,225, 78, 27, 99, 53,208, 29, 56, 27, 46,137, 60,166,246,187, 94,163,203,113,166,191, + 63,118, 22, 65,201,209, 13, 2,120,158,219, 30, 17, 46, 83,131,142,141, 57,145, 12, 30, 61, 26, 74,222,234,242,192, 20,212, 77, + 15,245,160, 30,114, 60,139, 49, 23,169, 75,133, 39, 44,253,191, 25,165,101, 53, 57, 99,116,230,123,144,160, 17,209,208, 36, 36, +104,176,252, 72,235, 62,116, 83, 2, 91,129, 64,233,169,194, 68,160,144, 51, 78,112, 66, 0, 25,238, 77,187,105,218,196,232,188, + 80, 48,128,158, 97, 8,220,130, 29,194, 18, 74,123,173,196,169, 36,230,251,221,215,202,251,232,192,208,218, 89,106, 59,221,124, + 99, 66, 54,166,132,102,187,217, 40, 48, 32, 8, 0, 64,248, 57,224, 31,108, 39,153,114, 44,159,249,249,170, 60,207, 81, 92,220, +141, 39,206,237, 55, 92,135, 41,221, 21,222,153,148,206,147, 55,116,114, 53, 5,168,236, 72,141, 30, 85, 88, 55,197, 42,218, 59, +125, 23, 14, 41,220, 59,186, 73,135,192, 22,247,242, 88, 77, 64,146, 23, 99, 55, 0,154, 42,158, 49,133,132, 52,248,129, 78,137, +251,253,238,250, 78, 78,246,135,164, 80, 1,112,134, 32,103, 52, 25,227,181,174,211, 45, 21,184, 48, 82,195, 78, 14,221,182,137, + 81, 8,207,105,170,127,223, 8, 53,232, 30, 14, 89, 20, 47,150,115,118, 87,120,159,120,223,189,246, 1,197,118,240,126,222,126, +184, 53, 97, 39,130,214, 18,118,134, 72, 82,120,184, 73,151, 98,167,184,227, 53, 32,152,176,221, 33, 96, 15,157, 54, 7,114, 8, + 6,129, 81, 41,209, 97,228,222,225,113,242, 16, 88,177, 72,122, 82,105, 5, 17, 18, 97, 89,123, 26,218,153, 39,144, 46,180,149, + 14,112, 33,166,109, 31,114, 85,133, 46,138,247, 76,204,195,129, 20, 57,224, 70, 50,115, 90, 11, 99,163, 21, 21,169,185,250,113, +205,128,198,194, 29,255, 54, 20,238, 48, 30, 54, 58, 83,168,151,125,247,254,146,201, 18,214,157,118,126, 10,114,193,209, 17, 2, + 13,140,245,219,111, 95,143,228,127,254,170, 35, 63, 93,141, 56,218,133, 96,211,201, 97,159, 19, 3, 60, 31,152,230, 73,104, 5, + 3,176, 50,212,201, 14, 77,155, 30, 35,225, 78,167, 39,203,197, 76,131,148,233, 27, 60,215, 96, 11,228,252,100,182, 96,231,134, + 53, 10,128,114, 72,190,175,142,247,152, 60, 48,121,131,190, 69, 73,203, 80,128, 1,161, 61, 96,113, 5, 77, 10,206,245, 54,138, +201,224,192,201,233,192,100, 4,122, 6,129,233,116,224, 33,217,149, 69,205, 52,192, 88,190,108,234, 53, 1,219, 0,212, 89, 22, +233, 57, 11,116, 22, 15, 76, 12, 5, 1,192, 0, 35, 86,113, 27,140,156,194,215,147,156,254,132, 65, 13, 76, 6,173, 10,224, 44, +124, 94, 24,130, 28, 29, 28,202,245,237, 53, 85, 48, 11,177,142, 22, 83, 32,115,221,243,179, 67, 41,109,224,133, 48, 10, 63,208, + 7,121, 65, 97,171,217,116, 68,243,147,243,155,177,203, 15, 23,174,240,232,110, 2,133,197,251,191,253,211,143,174,160,105, 83, + 91, 92, 63,226, 44,242,143,104,176,174,186, 70,113, 47, 20,154, 16, 69,130,222, 3, 18, 42,155,197,156, 83,142, 40,200, 8, 84, + 51,211, 20, 46,124,228,112,191, 77, 63, 11, 48, 83,142,247,244,190,165,154, 28,143,186,212, 87, 0,215,123,165,197, 20,240, 97, +211,229,174,166, 4, 71, 46,164,134,235,135,215,205, 10,139,139, 43, 77,192, 95, 60, 30,200,253,220,244, 75,218, 13, 91, 69, 95, +107, 66, 61, 25, 4, 4, 95,191,124,212,103,194,254,226,233,158,124,255, 97, 70,173,128, 10,251,243,244,168,207,233, 29,158, 87, +120, 34, 32,238,106, 47,195, 34, 6,231,155, 5, 53, 89, 64,161, 51,141, 90, 22,127, 51, 83,140,123,127,113,201, 51,102,107,173, + 82,243,216, 90,190,187,202,228, 23,207, 18,226, 15, 86,244, 6,233, 50, 89,103,212,247, 48,220, 6,138,105,196, 79,172, 5, 64, +249,254,226,229,158, 22,168,185,188,189,209,134,238,110,178,241, 11, 27, 17,149, 88,205,255,185, 63, 47, 13,141, 9,125, 94,202, +113,162, 10,201,140,220, 95,129,146, 42, 42, 14, 65, 32,190,223, 65,167,149,149,185, 35,224,165, 14,176,232,108, 40,182,160, 31, +225,221,253, 90, 30,107,101,117,210,143, 41,158,130,155,110,226, 6,161, 38, 82, 92,160,156,251, 79, 4, 54, 76, 16,112,224, 81, + 72,128, 34, 2,173,116, 84, 96, 5, 76, 81,150, 43, 94,160,119, 55, 19,121, 63, 90,105,130,182,253, 3, 58,210,185, 86,102,159, + 63,217,151,253,253, 65, 77,149,107,235, 1, 47, 29,181,159,109, 82,154, 33,224,207,144,160,220, 96, 12,180,221, 58,136, 14, 9, +125, 43,151,192, 21,148,102,247, 10, 77,251, 62, 40, 50,121,233, 35, 74, 67,127,175,119,166,142,132,239,195,152,145,174, 65,250, +119, 38,177, 27,251, 72, 27,197,179,190,174, 86,225,105,203, 76, 56,130,180,201,155,137,145, 39,128, 77, 0,212,173,244,125,228, +187, 53,255, 30, 99, 56, 22, 84,250,249,218,180,122, 77,109, 4,236, 6, 3, 72,240,160,234,208,122,148,210,184,153,211,192, 34, +118,209,219,202, 57, 8,163,193,194,228, 39, 75, 49,133,182,125,173,112, 43, 41, 84, 67,203,219,216,123, 60,155,249,200, 53,161, +177, 5,253,172,219,134,162, 5,250,158, 43, 24,125, 79, 0, 24,165, 44,248, 74,126, 29,227,240, 86, 59,100,209,196,196,198,206, +249, 65,185, 15, 99,233, 93,110, 73,216,146, 73, 94,131,248,192,128, 72,243,220,199,199, 41, 59,186,150, 62,176,212,183,118,163, + 19, 83,167,139,124,135,174, 29, 74,187, 83,115,207, 43, 3,147,216,205, 89, 76,244, 97,247,255, 75,242,149,167,185,241,218,195, + 26, 8, 88,212,197, 39,254,129, 46, 53,181,227,105,174, 98,160,150,160, 2,129,185,222, 57,166, 11,103, 71, 7,230,164, 5,183, + 42, 61, 39,135,123, 3,238,145,151, 26, 36,254,250,139, 99,253,183, 89, 97,126,184, 50,175,110,123, 31, 33, 37, 39,225,188,102, +224, 51,151,152,220,106, 97, 57,135,178,149,153,232,160,240,128,133,174,177, 67, 98, 47,194, 10,238,182,161,183,141,123,213,107, +119,153,140,133,194, 64, 13,126,174,189,190,237,139, 65, 87,131,210, 25,146, 2, 87, 64, 40, 24,147,150,107, 14,104, 50,112,247, + 68,128, 21, 17,144, 87,180,215, 44, 93, 21,175,116,125,131,192,133,133, 2, 83,128, 44,141, 66, 74,243, 14,104,178, 55, 13, 8, + 73,230, 7,190,136, 85, 78,165,253, 29, 24,235, 1,159, 53,227,125,174, 86,116,118, 15,233,203,142, 51,214,132,217, 80,199, 48, + 33, 62, 66,166,118,189, 94, 55, 4, 71,211,239, 55, 9, 99, 92,115, 8,239, 4, 65,233, 59, 69,243,189, 14,130, 54,147,248, 31, +223, 78,229, 63,254,213, 99,130,150,144,172,182,188,134, 27,217, 27,246,105,186,196, 49,113,167,105,224, 86,111, 50,112,198, 77, +242,181,100, 51,129, 73,207,226,254, 70,239,245,161, 92,234,251,252,244,233,137,252,237,239,110,249,243,196, 36,136,173, 9, 0, + 98,228,100,172,101,158, 9,180, 11,221,229,230,227,190, 53,180,242,134, 40,239,216,141,131, 48,170,110,179,104,218,239,194, 70, +119, 77, 80, 45,121,234, 0,239,233, 51,189, 10,205,138, 24,175,139, 85, 14, 70,196,181,173,109,104,247, 55,161,106,219,206, 76, +147, 74,169,177, 74,182, 88,143,120,206,120,158, 29,176,140,230, 2,159, 15, 5, 11,174, 33,246,225,207, 78,143,228,226,246,134, + 93, 31, 10, 91,188,183,203,241,146,113,153,157,115,210,224,239, 56, 59,218, 35, 56,240, 82, 59,116,236,170, 51, 45,136, 46, 70, +153,118,243, 75, 82,204, 80, 52, 81,172,139,163, 90,241,127, 7,188,183,160, 0,219,223,185,169,181,195,170,200,186,113,118, 18, +254,140,248, 12,253, 16,125, 57, 58,148,181,241, 92, 55, 35, 22, 73,189,238, 80,206,180,120,130,242,228,217,241, 83, 61,239, 13, + 83,154,212,235,138,166,144,107, 19,178,125, 74,153,233,179,210,209,120,148,105, 78,129,166,196,138,170,123, 85,113,106, 9,248, +112,208,230,154, 51,164,133,239, 74, 11,237, 29,227, 12, 10,140,187,217, 78, 78,247, 90,242, 97,180, 98, 2, 46, 9,248, 93,107, +129, 88,106,210,238, 16,179,243, 92,127,126,160,191,119,216,219,202,190,187,119,226, 58,221,106, 35,121,118,208,145, 63,189,185, +213,226, 31, 40,253,136,143, 3,155, 14, 42,137,134, 50,219,218,116,162,240,123, 67,209, 45,205, 3, 0,191, 54, 88,124,183,249, + 53,200, 88,131, 53,243,247,223,189,211,231,227,153, 22, 19,109, 78, 52, 86,250,204,227,121,232,235,217, 73,226, 45, 49, 16, 90, +235,200,116,190, 97, 35, 17,121,129,253,248, 24,211, 62,205, 63, 84, 23,242, 26,188, 10,248,116, 52,195,120, 3,149,128,190,201, + 70, 51,175, 85,197,140,207, 92, 24, 29,167, 22,141,176,196,158, 59, 90, 57,247, 0, 41, 78,121, 17,119, 78,171, 16,184, 99,173, +160,154,139, 72, 22, 24, 53, 81,209, 46,101,165, 19, 58,207,251,205,205, 70, 38,203,140, 99, 65,154,130,228,166,235,203,189, 85, + 46,164, 22,221, 46,177,231, 48,205,225,157,118, 58,120,178,161,254, 54, 71, 48,167,225, 68, 71, 31,108, 4,230,141,252,225,253, + 76,246,225,148,212, 95,201, 94,144,240, 96,160,162, 67,208,109,183,141,146,132,209,203,116,121,175, 93,210,198, 58,215,182, 9, +204, 0,196, 52,203,245, 65,189, 93,202,104,186,148,253,195, 30,253,151, 57, 86,142, 35, 38,226,163,164,199, 17, 44,130, 24,119, +242,122, 56,113,160, 17, 68, 48, 54,191, 31,207,216, 69,153,188,166, 30,248, 21, 4, 21,214,236, 32,142,181,171,197,117, 61,191, +190, 55,177,151,216,168,124, 76,218,133,141, 67, 49,250,132,250, 19,246,130, 38,179, 26,202, 72, 95, 19,192, 14, 20, 22,171,205, + 74,182,203,172,222,199, 34,201, 64,239, 24, 9,217, 0, 87,190, 99,170,246,249,250,231,145, 30, 8, 90, 91, 34, 33,174,211, 90, + 13, 10, 93,116, 18, 38, 4,230, 48,105, 72, 76,110,169,136, 37,206,172, 52, 91,205,197,198, 76, 39,112,224, 35,183, 67, 77, 34, +147,122, 37,238, 2, 35, 96, 40, 49,137, 41,134,129, 71,139, 73, 75, 25,152,235, 27, 36, 27, 43,228, 51,237,118,245,154,101,169, +241,242,195, 36,226,103,163,178, 94,106,110,106,120,248, 42,172, 6, 58,222,204, 1, 75,221, 94,175,182, 80, 13,125, 31,159,127, +228, 40, 24, 85, 82,184,133, 9, 24,197,222,157, 71,222,197, 87,154,231, 24, 51, 83, 25, 12,137,115,110, 64, 69, 92,207, 65, 59, + 34,133, 9,193,198, 10,184,140,216,147, 31,223, 95,214,215, 31, 29,217,238,205, 37,247,144,143, 53,104,254,112,113, 47,127,120, +125,195, 21,142,141,216,133,223, 75,140, 64,181,199,151,200,249,228, 30,236, 42, 83,162, 42, 40,151, 86,228, 70,190, 70,105,181, +160, 60,101, 20, 80,224, 61, 98,142,230, 75,242,200,231,171, 57, 87, 65,248, 85, 24, 23,115, 79,201,226, 69, 72,217, 65,223,140, + 73, 8,166, 48,232, 96, 90, 4, 4,149, 76, 2,208,170, 30,166,169,191, 86,101,221,106, 32, 35,158,223,134, 41, 33, 86, 96, 75, + 36, 75,128,145, 48,190,197,247,225,217,204, 83,211,171, 7,130,126,201, 98,200, 58, 79,156,101,128,212,240,188, 85,234,114,152, +244,124,250,236,177,124,246,248, 80,158,106,208,254,179, 94,183,255,252,199,215, 82,225, 30,171,181, 82, 89, 88,242,142, 18,163, +226,113, 21, 19,155, 60,106,226, 76, 7,179,114, 78,201, 23, 71, 17,244,230,102, 46,159,158,246,136,136,199, 44, 13,207, 55, 92, +236,198,227, 57, 1,177, 79, 78, 15,105, 14, 2,100, 52, 62,223, 18,120, 25, 36,122,128,232,182, 38, 87,154,132, 41,207,231, 4, + 0,201,195,167,181, 34,227,158, 6, 84,196,130, 16,216,162, 29,132,170, 34, 57,217,239,232,207, 47, 25,147, 48,157, 33,199, 92, + 95, 23, 50,208,101, 22, 16, 92, 22,250, 20,235,219,247, 87,114,180,215,231, 20, 2,251,110,220,183, 13,159,247,196, 58,244,210, + 44,159, 81, 4, 64,204,198,124, 23, 10, 78, 60,194, 88,220, 20, 39,150,161, 22, 14,243,197,206,101,122,141, 77, 64, 70, 81, 98, +170,160,161,216,228, 9,212,212, 40, 49,157, 12,224, 46, 48, 65, 91,130, 79,207,110,177,199,162,107,208,209,207,171,197,223, 89, +167, 47,247,208,182,112,186, 41,174,233,219, 15, 23, 50,108,183,248, 30,169,148, 9, 58,237,220,180,228, 63,123,124,166,159,165, +163,215,164, 97,152, 3,168, 36,118, 27, 46, 47, 46, 4,162,189,187, 30,115,236, 14,121,111, 76, 83,208,208, 65,189,145, 38, 65, +137, 81, 45,193, 44,178,105, 89, 44, 71,251,125,198,202, 38,169,109, 37, 93, 16,119,153,237,139, 1,140, 67, 1,215,114, 45, 5, + 20, 80,140,103,122,150,254,242,246, 78,207,123, 79,190,250,229, 11,237,122,199,140,175, 40, 48, 32,174,148,251,218, 2, 29,126, + 68,185,239,152, 59,242,207,135, 45,249,230,221,216, 37,168, 69,155, 55, 45, 20,146, 82, 11,140,144, 30,244, 71,199,160, 58,174, +245,253,135,242,244,160,205,124, 0, 93,251,249,237,130,241,106,178, 50,164, 62, 10,206,230, 97, 87,250,195, 14, 11, 40,136,153, +129,183, 94,122,177,187,216,154, 31, 60,220, 56, 59, 45,109, 6, 65, 29,221,108,221, 34,215,168,221, 16,214,233, 65,154, 25,247, + 73,243, 24,166,107, 80,247,251,227,107,224, 21, 78,228,197,163,129, 91, 84,231,100,133,180, 3,163, 72, 98,186, 85,192, 18,124, +190,213,162,167,207,252,133, 41,224,191,250,245, 35,137,255,205,191,255,119, 52,155,159,140,199,178,152, 47,136,140, 94,145,102, + 36, 52,153, 72, 34,173, 80,119, 38,182, 97,227, 81,179,223,171,188,173,221,142,218, 92,160, 10, 3,147, 20,206, 93,230, 80, 62, + 52, 33, 26,243,245, 46, 56,126, 0,248, 98, 56,232,114,196,137, 10,127,160,213,244,104, 50,210, 15, 41, 4, 66, 36, 90,153, 46, + 32,244,175,193,114,190, 94,154,210,152, 6,144,190,254, 12, 30,178,151, 47,246,229,157, 30,236, 3,253,190,177,190,199,185, 86, + 67, 59,173, 48,207,158, 12, 37,108, 77, 24,136,142, 14,246, 56,214, 96,128,208,255,190,212,164, 56,214, 55,118,187,153,146,147, +136,206, 28,129,252,137, 94,196, 31, 53, 8, 99,199,137,207,136,196, 57,154,204,165,175, 55,242,236,100,143, 10, 70,215,163,148, +128, 27, 36, 83,236, 62, 64, 41,131,128, 5, 14, 33, 30, 58,136, 65, 96,119,133, 36,133,195,137,192, 59,157, 47,120, 93,238, 52, +249,162,227,205, 40,222, 31,203,122, 97, 46,102, 72, 14,120, 45,140, 55,175, 71, 11,187,217,250,247,120,223, 8,216,224,202, 98, +124,115, 9,251, 67,136,117,235,125, 24,175, 50,142,116,105,203, 8,223,248, 2,116, 25,253,119,220, 38,191,212,228,101, 11,160, +193,244, 71,115, 86,185, 9,165, 90,237, 62, 53,124,175, 92,113,135, 57,242,193,234, 32, 8,125,133, 98,218, 2,185,119,106, 85, +161, 23,184, 10, 94, 89, 88, 2, 10, 92, 7, 62,240,229,106,101,192, 81,233,231,147,201, 39,161, 3,244,132, 69, 0, 2, 84, 30, +184,161,145,112, 19, 96, 20, 59, 31,223,185,198,160, 1, 54, 97,132, 1, 32, 86,108, 94,208, 72,196, 12,246, 46,176, 1, 99,153, +170,104,172,220, 0, 81,236, 80,213, 44, 54,133, 68, 42,144,229,153,163,225,125, 4,239, 21,109,141,237,112, 85, 47,113, 52,250, + 76,239, 53, 18, 52,238, 95,159, 9,205,246,125,216, 65, 98, 12, 7, 20, 42,192, 92,176,158,156,234,195, 52,208,243,168, 89,204, +197, 36,244,122, 39,133,158,173,185, 60, 29,244, 41, 99, 9,195,147,162, 52,163, 23,128,239,232, 54,200,168, 94, 80,141,138, 99, +200, 36,114,103,168,192,247,207, 70,117,226,138, 69,108,191,223,106, 27,158,162, 9, 29, 6, 20, 50,218,181,236, 13,186, 92,123, +192,253,109,208, 60, 96, 17, 25, 69, 54,213, 58, 61, 48,193, 17, 4, 30, 20, 29,216, 43, 3,109,142,247,107, 8, 96, 76,219, 82, + 1,179,142,118,201, 84,241, 51,153, 93, 22, 33,218, 81, 66, 69, 13,180, 71,172,224,224, 48, 24,250,216, 13,114,165,112, 13,252, +105, 54, 98, 87,134, 61,234, 64,131,210,179,231,159, 75,212, 90,202,242,252,156,184, 18,172, 24,128,188, 70, 18,199, 78, 26, 34, + 28, 60, 31,165, 9, 6,125,127,113,199,110,105, 10,250, 22,232,149,149, 81,143, 79,249, 13, 61,110, 96, 46,232, 45, 24,200,210, + 0,101,230,230,102,147,179,156,235, 7, 67,145,127,127,189,145,255,248,213,158,188,190, 93,115, 90, 5, 64, 99,228, 46, 93,151, + 55, 35, 50, 80,208,217, 28,238,117,201, 19,126,127,121,207,238, 23,234, 93, 8,218,180, 24,109, 20,150,132,146, 22, 81,200,175, + 94,125, 38, 55,151,231,236,250,112, 14, 2, 46, 25, 76,246,121,155,153,209, 13, 24,105,237,166,197, 65, 24,150, 68, 97, 83, 54, +224,248,239, 54,188, 71,164, 66,102, 70, 71,194,100, 39,170,124, 38,130,210,113, 12, 25,175, 61,214,141, 77,186,126,153,243,101, + 14, 1, 33,224,126,124,111,205,103,208, 5,190,114,215,180,192,215, 64,125,130,138, 95,152, 91, 51,197, 66,218,233,168,144,196, + 0,114,127, 16,216,132,242,118, 60,161,232,211,108,114, 39,207,206, 6, 92, 91,126,119,241,182,198, 54, 85,160, 83, 20,110,221, + 22, 40,140, 49, 65,187,237, 70,206,207, 6,191,139, 0, 60,251, 13,146,189,126,159, 54,100,152, 2,254,120, 61,241,226,207,208, +254, 24, 63,159, 12,219,242,155, 79, 79, 93,104,198,158,211, 37, 80,243, 80, 99, 3, 50, 93,139,163, 70,162, 73,123,186,150,119, +151, 55,250,223,121,237, 68,153, 99, 42,217,110, 24, 83, 64,207,199,191,254,231,191, 97, 82, 35,131, 74,223, 23,244,211, 33,128, +243,249,179, 19, 54,147, 27,109, 20,127,249,233,177,252,225,235,115,189,207,230,200, 7, 92,213, 60, 79,121,237, 83,151, 83,198, +225, 58,208,102,240,104,184, 38, 62, 10,109, 36, 41,138,189, 38,217, 42, 39, 3,211,200,128,169, 17,148,237, 0,152, 3, 6, 2, +206,161, 90, 87,107, 92,134, 7,199,154, 94, 2, 88,211,190,215,207, 61, 25, 15, 5,109,197,253,194,100,130, 99, 2, 36, 97,116, +211,144,247,183, 91, 90, 24,211,247, 61,118, 42,163,211,218,208,140,228,238, 10,138,107,254,228,244,148,241, 31, 19,148,119,151, +151,242,205,121,139,249,232,104,175, 89,123, 40, 32, 94,163,187,199,121,129, 85, 45,128,237,163,241,130,207, 41, 10,211, 45,164, +215, 31, 63,127, 46, 79, 95,188,160,192, 61, 40, 78, 91,253, 64,119, 55, 55,114,119,119, 39,155,133,129,126,200,103, 20, 3,137, +112, 98, 19,229,236,110,205,236,197, 14, 82, 90,209,103, 0,221,199, 14, 15, 85, 87,163,193, 61, 5, 42,118,140,151,167,154, 72, +177, 27, 66, 39, 49, 39,205,103,103,188, 96, 77, 88,135, 7, 93,163,242, 96, 76,167,215,254,112,223, 60,171, 77, 16, 31,128,174, + 22,255, 27,157,168,137, 94,148,114,171,137, 24, 73, 51,241,253,255,245,221,200, 52,148,245, 97,249,160,201,208, 28,217, 66,185, +223,108,249, 61, 27,125,173,155, 44,171,101, 26, 1, 0,203,139,178, 78,114, 48,171,199, 3, 68,138, 87,187, 35,183, 35,173,194, + 11,179,142,133,208, 9,171, 98, 31,141,162, 43,108,134, 77,162,224, 1,108,194, 4, 3, 29,250,221, 28,149, 26,198,183,122,131, +147,146,130, 7, 72, 74,236,212,245,115,244,188, 98, 14, 49, 82,211, 7, 6, 93, 33,110,210,222,222, 1,175, 33,170,244, 46,174, + 33, 12,158, 37, 39,122,123,231,194, 5, 1,157,207,172,155,109,185,176, 68,228,149, 50, 1, 72,250, 58,160,149, 97, 44,188,241, + 34,140,148, 17,223, 57,135, 94,100,133,193, 3,115,161, 2, 71, 81,145, 46, 50,104,135,129,219,130,218,196,163,162,143, 81, 60, + 4, 99, 53, 71,206,214,244,178, 40,170,145,246,226, 19, 27,142,155, 65, 53,203, 75, 31, 51,218,125, 43, 67,215,172,207, 77, 8, + 39,228,248,210,222, 99,232, 5, 3,222, 91,149,152,109,104,158,186,160, 76,195,141, 99, 66,186,218,145,198,232, 83,141,138,230, + 86,153,212, 24,175,215, 41, 83,133, 65,134,201,198,112,115,149,162,118, 7, 43,204,204, 36,205,120, 31, 73,131,195,217,246, 66, + 99,162, 5,220,201,192, 44, 52, 49,190, 67,225,106, 64, 41,179, 6,197,219, 71,224, 37, 58,191,223,148,103,135, 3,142,214, 18, +114, 76, 19, 26,174, 0, 96, 4,168, 41, 48, 9, 8,124, 44,140, 67,206, 35, 57,133, 57,213, 66, 16, 85,191,121,215,231, 52,121, + 24,207,108,130,132,177, 51,186, 29, 60,155, 64,210,231,121,147, 69,193,114,177,116,255,133,140, 66, 44,144, 52,134, 28, 46,146, +249,221,116,198,202, 29,107,139,210,141, 39,240,189,167,123,109, 25,104, 53, 15, 84, 63, 36, 37, 65,243,178,174, 58,101, 48, 70, + 87,129, 98,163,218,251,110,215, 43,118,254,160, 11, 81,172,145,206,131,166, 85,142,239,139,244,251, 3, 22, 29, 61, 89,173, 16, + 63,114,114,140, 1, 86, 68,241,142, 10, 14, 63,215,162, 43,151, 25,113,208,175, 30,172, 18,125,237,187, 36,100, 80, 50,113,142, +226, 35,207,136,210,216, 29,236,220, 75,247, 22, 55,111,115,196, 3, 60,103,220, 41,122,130, 55,102, 68, 75,206, 39,185,189,119, + 20,130,216,181, 67,229, 49,180, 4,140,245, 1,238, 27,169,171, 24,101, 39, 66, 22, 11,216, 13, 24,153, 34,174,205, 52,200, 55, + 91, 38,179, 60,212,228,117,117,123, 39,191,252,226, 75,153,142,111,232,211,142, 38, 1, 83, 3, 40,165, 1,115,128, 24, 1,131, +146,155,251, 29,237, 71,145,100, 48,201,216,106, 81, 3, 17, 28,152,180, 3,204,104,128,166,200, 18,145, 54, 37,251,253, 84, 62, +220, 78,249,172, 13, 7, 13,222,103,172,120,160,178,135,181,225,116,147,185, 1, 75,225,174,126, 41, 11,106, 80,113,147,200,170, +239,176, 6, 44, 23,156,164, 65, 94, 27, 52, 51,210, 20, 83, 3, 72, 86,128, 70,188, 38,204, 97,144, 92, 1, 64,133,247, 0,166, +144, 23,183,247,122, 22, 22,188,142, 16,100,169, 25, 41,206,104,122,243,225, 92,142, 15,143,245,245, 49, 5, 13,104, 86, 67,199, + 54, 76,102, 26, 3,201,130, 88,254,246,239,254,145, 24,139,202, 88, 11,242,174,120,111,232,166,175, 70,161,188,134, 54,188,203, +253,102,214,253,113,109,135, 66, 33,118,208, 44, 45,175, 29, 51,100, 77,139,203,218, 38, 77,118,210, 0,215, 97,162,254,248,180, +103, 62, 7,236,244, 13, 88,137,162, 10,160, 60,184, 86,246,250,125,130,205, 14,181,120,165, 82, 28,215, 85, 91, 82, 53,113,158, +176,202, 90,172, 51,121,125,110, 19,177,212, 45, 69,113,237, 63,232,243,117, 56,104,233,117,212,123,176,210,231, 38,233, 48,145, +195, 7,229, 66,243, 10,138, 99, 40,209,161, 72, 71,167,140, 9,103,165,185,130,238,254,236,176,175,177, 98,107, 19, 24, 92,247, +166,197, 89, 8,137,129,105,114, 57,173,116, 51, 10, 2,142,113, 13,119, 4,138,154, 36,240,209,254,128,160,101,172,204,174,245, +253,128,242, 12,147,151,243,187, 3, 2,202,187,157,160,102,247,116, 96, 93,171,207, 24,138,217,161, 38,246,219,209,130,207,239, +233, 97, 87,243,201, 70,162,227,110,252,191,141,174,207,181, 26,253, 73,130,221, 76,210,245, 68, 47,252,138, 38, 41, 0,134, 96, + 15,138,238, 7,173, 61,126, 41,110, 0,254,217,211, 67, 47, 20,107, 40, 88, 81, 81, 80, 63,176,189, 50, 30, 48,116, 32, 43, 84, +245,238,169,139,177, 15, 18, 43,118,216, 72,196,169,251,215, 94,221, 77, 76, 3, 59,142, 56,190, 94, 59,178, 26,123, 4,240,197, +121, 83, 96, 60, 48,154,241,134, 1,197,141,215,188,155, 44,217,113, 27,117, 41,144,107,173, 86,104,237,170, 71,234,118,188, 52, + 78,116, 17,112, 28, 2,215, 35,136, 28,160, 50,131,173,108,172,135, 37,215, 36, 3,255,114,220, 8,104,117, 3,245,186,220,106, +135, 2, 55, 37, 77,182,115,120,211,174,118, 28,105,130, 54,147,139,129,137,118,133,249,129, 3,108, 99,250, 58, 33,147, 28, 42, + 40,180,123,230,197,110, 50,159,120,111, 52,235,128, 27,217,106, 41,253,254,160,198, 34,224,144,216, 78,210,204, 3, 96,117,136, + 61,110,133, 71, 66, 1,130,100, 78,235, 83,142,105, 3,222,252,116,103, 95, 51,111, 96, 83,170, 43,107, 52,178, 37, 52, 0, 95, + 82,231,133,135,245,195, 93,184,243, 86,228,251,210,202,160,197, 3,169, 11, 86,184, 13, 95, 45, 92, 83,141, 93,171,215,168,190, +143,192,201,160,172,133, 96,170, 98,161,146, 10,174,132, 70,170, 32,109,244,177,220, 85, 2, 11, 38,174,192, 19,186, 57,209,229, + 14, 42, 49,192, 79, 28, 85,142, 93,238,208, 9,165,191,102,195,101,120, 83,119,131, 43,235,213, 81, 94,161,215, 93,113,174, 44, +203,135,196,237,246,177,213, 10, 50,175, 58,119, 31,247,130, 99,142,128,140,250,142, 26,222, 73,228, 60,106, 14, 51,217,201,113, +205, 1, 85,190,212, 48, 1,212,193,134, 45, 42,246,229, 97,204,196, 5,148,246,191,255,231,159,201,179,147, 1,169, 50, 61, 40, + 15,130, 43, 65,151, 45, 19,158, 64,145,112,180, 55,148, 95,190, 60,147,127,249,203,151,236,196,191,125,119,169,103,115,197,174, + 27, 32,197,171,209, 84,198,154,152,215, 90,104, 35,145,220,234,195,141,191,187,163,197,100,198,251,123,171,207,205,189, 62, 15, +192, 82, 32,225, 83,116, 6,103,102,151,113, 74,132,215, 59, 28,182, 88,188, 94,232,247, 34, 25,222,235,243, 2, 64,151,157, 17, +224, 86,182, 60,211, 8,146, 7, 26, 8, 15,244,217,196,123,165,148,111,100,252,232,174,118, 38, 8,190,236, 48, 3, 83,106, 68, + 44,204, 60, 80, 67,151,188,211, 59,224,158, 79,220,162, 21,216, 15, 16, 5, 50,231,183,211,226, 22,207,192,198, 86, 91, 47, 30, + 63, 34, 5,135,248, 1, 8,156,108,118,166, 79,238,224,207,210,207,154, 77, 82,194,218,190, 55,119, 49,161,210,119,226,161,251, + 47,224,123,176,143,132,104,202,151,143,123, 68, 32,175,178,144,157, 48,138,150,134,251,104,227,247, 33,248,226,190,130,149,150, +115,218,104,159, 19,162, 52, 52,222, 0,118,100,179,212,228,222,225,152,254,232,112,159,215,100,138, 73, 98,106,190,233,216,105, + 71,206, 67, 7, 51, 5,193, 25,159,125, 69, 15,134, 45, 71,197, 69, 85, 28,251,179,142,194,254, 96,216,231, 51,141, 36,138,159, + 51,197,221,144, 5, 20,214,118,134,107,138,152,228,209,200,208,203,192,117,204,209, 92,153, 52,109,131,247,212, 18,183, 77,206, +132,123,106,179, 50,141,220, 71,193,152, 36, 22, 29,173, 48,143, 28,163,146,185,158, 72, 64,233,229,147, 97,151,215,131, 83,200, + 70,236,182,145, 13, 90, 93,111,169, 97,209, 37, 16, 44,160,150,123,192,177, 61,168,189, 63,127,249, 68, 11, 3, 43, 34, 71, 19, +179,119,174, 56,233,164,254,133, 78,165, 45,109,151,108,171, 29, 91,255,179, 48, 41,109,197,224,157, 0,167, 67, 68,249,103, 59, + 49,129, 19,237,140,201,157,205, 57, 89,200,165,171,207,198,150, 74,128, 20, 40,210,130, 18,186, 31,192,120,129,162, 72,231, 63, +253,153,167,103,135,252,187,145,118,255, 0, 82,110, 82,195, 34,224,172, 0, 76,135,243,131, 41, 18,138,191,176,150,182, 22, 78, + 83, 38,218,237,159,143, 12,243, 18, 38,125,206, 50,103,243, 9,127,166,223,110, 80,124,230,122,178,230,125, 24,182, 99, 47, 56, +109,221, 7, 96,249,206, 87, 88,244,139,160,247, 68,169, 9,127,101,207,101,110,224,104,179,215,205, 24,255, 12,243, 19, 49,110, + 96,237,128,226, 21,128,220, 57,157, 43, 19,118,252, 28,171,119,135, 90,248, 55, 57, 69,195, 37,233,180,205,132,102,227,254, 4, +116,140,188,159,249,125,212, 78,125,183,153,242,128,224, 80,220,143, 70,126, 8, 99,106, 73, 47, 8,202,137,105,120, 63,209, 67, +200,174, 56, 49, 93,227, 15, 55, 35,247,224, 54, 69, 44,202, 55, 58,103, 24, 29, 48,170,203, 22,119,142, 33, 5, 59, 34, 62,120, +109,238,165,205, 37,200,140, 97, 96, 41,138, 35,115, 55, 95,219, 40,144, 85,121,193, 7, 44,245,253, 89,198, 17,133,158, 7,109, +225, 49,130, 94,164, 75,219,183,161,179,131,141, 97,105,158,197,168, 62, 1,186, 8,128, 76, 78,139,218, 2,180,204,197,209,189, + 54, 38, 94,110, 77,232,131,123,150,208,164, 74, 1, 40, 9,221, 29, 39,229, 62, 48,169, 59, 1,124, 14, 19,180, 49,254,177,161, +222, 51, 71,128, 90,117, 92,169,191, 85,251,218, 42,145,177, 58, 75, 83, 98, 16,136, 6,223,153, 71,112, 73,121, 77, 83,129, 66, +254,131,138,148, 85,169, 5, 3, 76, 26,166,172, 94, 83,138, 13,100, 62,238, 54, 69, 44,142,177,180, 82,163,236, 40, 52,212, 97, +236,129,174, 12,234, 70,250,231, 60, 51, 63,238,118,215, 84,222, 8, 64, 12,170,135,205, 0, 65,220,115, 6, 15,166, 31, 18, 4, +181, 35, 95, 97,174, 46,181, 14, 59, 62,221,134, 96,181,178,238,206, 99, 55,221,136, 42,176, 89,105,154,242,156,247,249, 14,136, + 66, 24,121,230,142, 77,198, 43, 46,189,128,128, 63, 61,158,112, 80,160, 66,215, 51, 96,225, 17, 24,216,174,210, 63,112,113,112, +130,227,232,173, 92,100, 46,191,155,179,243,169, 40,106,161, 35,220, 3,167,112,145,133,225,154,239,164,209,209,117,169,176, 17, +189,143,170, 77,203, 60,231,125, 29,205,103,172,158, 59, 84, 27,140, 89,136,162,184, 60, 25,116,184,107, 71,113,135,145, 60,138, +196, 23,103, 71,164, 41, 29,105, 64,196, 68, 9, 93, 57, 42,100,116,190,112,128, 59,232,153,188, 44, 59, 23,125,223,171, 98,199, +179,142, 7, 22, 69,193, 20,171, 28, 8,119, 52, 3,178, 63,254,248, 61,198,178,109, 38, 31, 88,176, 82,112, 7, 92, 98, 4,192, + 36,230,200,187,153,180,181, 40,236, 49, 81,193,106,178,219, 53, 73, 94,116,173, 40, 82, 19, 94,250,136,201, 26,215, 9, 88,141, + 87, 79,143, 24,184,209, 13,220,141,205,245,237,237,221,156,187, 77, 20, 1,248,125, 39,123, 93, 94,243, 71, 7, 67, 2, 73,113, +110,247,181, 35,123,245,168, 43,223,157,143,120,191,231,203,157, 3,138, 76,109, 79,203, 10,201,209,133, 34,216,105,162, 2,127, +184, 13,164,238,102, 69, 37, 54,236,163, 1, 56,138,157, 66,152, 58, 45, 15, 19,191, 32,142,124, 85, 19,241,154,154,130,155, 94, + 35,143, 9, 80, 15,139,253, 76, 84,133, 91,241,209, 84,136,147,186,170, 16,204,173,243,193,168, 22, 83, 9,112,177,255,114,189, +147,127,241,178, 47,175,175,181,187,214,230,130,142,143,123, 45,130,221, 80, 12, 65, 54,244, 64,239, 89, 27, 69,190,126,174,249, + 58,103,178,166, 80, 75,175,239, 40,100, 45,148, 86,240, 79,104,200,219,243,107,242,220, 87,155, 31, 25, 7,113,102, 9,100,156, +153, 91,220,153,190, 54,208,224,152, 4, 32, 41,216,152,220, 68,118,232, 52,167,207,251, 54, 50,148, 58,238, 1,186, 46,156, 49, +196,205, 92, 11,178,213,106, 65,233, 98, 40,220,192, 11, 28,216, 13,172,229,160,247,141,231,166, 11,252, 3,102,251, 52,138, 89, +187,235, 87,200, 70,170,154,164,113,178, 81,152, 62,194,122,155,126,180, 86, 42,220, 3, 77,106, 38, 9, 42, 91,178, 6,218, 13, + 2,145, 67, 98,167,124, 50,200,103, 71,139, 51,208, 10,245,158, 2, 49,223,106,111,165,167,215, 21,155,144,221,214,132, 88,158, + 62,121,162, 95,239,202, 63,252,240, 53, 63,243,175, 63, 61,179, 9,237,174, 36, 6, 11, 77, 16, 62,231, 80,155,194,107, 45, 80, +191,126,123,195,162,206,156, 12, 13,123, 83, 82,221, 47,145,227, 97,139,197,111,155,232,238,128,205, 34,158,169, 13,135, 95,145, +173,194,122, 45, 38, 84,208, 17,161, 1,242,205, 79, 35, 77,228,154,192,242, 5,139, 33,124, 38,122,163, 35, 54,148, 49, 13,188, + 14,250, 93, 77,118,109,121,118,156,200, 13,155,188,144, 88,172, 61, 45, 4,210,108, 69,113, 40, 76, 85, 42,225,163, 74,176,134, +102, 99, 90, 64,205, 23, 11,189,150,218,216, 38, 38, 42, 70,112,155, 62,100,147, 18, 84, 90,125, 22, 38,118,158, 81,171,108, 40, + 80,164,197,134,126,238,217,214,138,207,153, 22,254, 71,189,132, 92,126, 78,244, 8, 12, 76, 77,140, 75,227, 1, 26, 1, 43,226, +132,194, 82,216,175,159,157, 28,146,225,129,117, 85, 19, 88, 11,125, 47,227,233, 84,254,254,155, 55,122, 70, 62,149,207,159,118, +201,153,199,125, 58,165, 82, 98, 36, 87,215, 35, 3,201,106, 81,126,113, 51,147,207,159, 31, 74, 60,153, 46, 25,108,121, 24,144, +192,244, 2, 79,199,115,118,205, 45,138, 77, 68, 90,209,219,142,140,221,151,254,247,116,181, 99, 32,224, 78,205,171, 49, 36,200, + 77,230, 0,134, 12, 7, 77,111,114, 42, 68, 96, 27, 2,177,148,149, 86, 45, 91,119,210,194,205, 2,119, 15,224,143,130, 92,227, + 74,199,216, 70,201, 52,155, 47, 27, 30,232, 45, 8, 96,180,135, 29, 89, 37, 82, 98,227, 87, 19,173, 33,200, 6, 85,104, 98,212, + 56, 72,195, 1,120,194,164, 78, 0,160,237,162, 57,242,160,150,117, 88,243,101, 43,225, 21, 9, 13, 40,134,192,143,132,154, 36, + 73,173,103,143, 27,152, 1,149,139,238,171, 40, 93,235,218,172, 73,173,203,180, 14, 49,118, 10,150, 41, 26,165, 53, 71, 56,119, +119,173,202,169, 11, 29,141,209,247,218,236,200,118,149,247, 55, 31,224,146, 5, 0, 70,154,248,190, 60,180, 68,136,239, 99,247, +137,107, 65, 26,144, 33, 92,225,124, 6,109,112, 36, 60, 80,106,240, 90, 24,203,110,129, 12, 39, 15,216,198,184, 52,124, 40, 82, +163,151,136, 1, 30,113, 61,152,116, 35, 3,142, 85,180, 68,118,244,192, 80, 64,113,204, 71,120,226,172, 1, 80, 73,192,136, 40, +168, 4,231,155,247,210,247,113,161,129,156,240, 79, 46,185, 11,209, 88,130,174,198,221,182, 55,141,124, 47,238,163,247,144,224, +110, 55, 11, 18,151,162, 12,106, 97,157,200,175, 55,174, 53, 16,186,105,104, 35, 58,140,131,113,223, 40,195,235,171,149,106,207, +142,215,223,239,117,169, 49, 0, 12,197,205,100,198,110, 61, 8,221, 39,217,187,189,172, 40,235,157,159, 56,238, 0, 29, 23, 42, +124, 4, 34,250,149,107, 16, 0,248, 6, 20, 31,172, 6, 14,246,247, 56,126, 93,107, 1,245,221,249, 29,185,170,208, 74,248,175, +223,156,203, 31,126,152,203,163,129, 38, 78, 77, 84,107,136,101, 68,230,244,135,127,195, 97,139, 90, 3,250,240, 99,210,132,142, + 17,162, 48,216,251, 81,198,150, 54,181, 13,158, 63,236,127, 99,119,188,195,158, 23,197, 54, 62, 35,155,183,204, 58, 29, 0,189, + 48,205, 2, 88, 40,136, 26,236,144,224, 22, 5,180, 48,209, 47,250,204, 60, 62,220, 35,225,236, 94,139,107, 0, 28,199,243, 13, +139, 83,184, 68, 81,121, 17,197,119,108, 52, 67,140, 21,207,239,166, 92, 25, 16,112,170,215,253,179,199, 29,185, 30, 3, 4,106, + 70, 70, 40,144,118,243, 45,129,129,141,166, 57,206,225,108, 79,103, 83,153,104, 16,194, 78, 18,137, 62, 73, 0,132, 45,235, 98, +177, 90,255, 96, 26, 97, 70, 79,166,251, 15, 68, 47,123,102, 13,150, 65, 98, 9,169,178,113,226,254,177,158, 0, 73, 45, 61, 93, +230, 85, 7,152,115, 92, 94, 89, 22,255,241,205,173,252,155, 47, 95,145,194,186,216,154,191,247, 98,187, 99,145,142,250,251,187, +183,215,242, 11,189,166, 67, 45, 70, 32,131, 77, 28, 3, 59,112,189,222, 61,179,175, 93,104,162,135,250, 95,111,248, 72,102,122, +110,158, 63,121,204,221,250, 55,127,249, 90,131,116,139,103, 21,244, 86, 20, 18,147,121, 70, 49, 25,116,231,136,153,200,141, 91, +223,149,238, 56, 29,178,157, 63,186, 43, 76, 28, 49,241,192,132,231, 68,239,201,173,198, 89, 74,194,186,239, 60,240, 76,232,216, +114,184,149,133,102,179,138,233, 6, 98, 33, 10, 48, 36, 82,200, 52, 35, 86, 35, 78,133,110,154,197,149, 33,184,239, 45, 91,247, + 68,129,139,127,113, 74, 21,184,146,166, 61, 23,166, 62, 25,146,227, 61,207, 74, 22,130,173,196, 86,119, 68,108,227,185, 72, 53, +206, 56, 27, 0, 88,167, 46, 84,233, 36, 54,147,158, 40,145,207, 62,121, 41,111,127,250,158,197, 27,206,206, 95,125,254, 88,159, +179,182, 92,106, 23,139,117,203,110,103,234,122, 0, 2,159, 30, 14,121, 22, 94,156, 12,228,104,208, 54,207, 16,120,210,235,247, +220,207,119, 90, 0, 55,205, 85, 78,140, 37,208, 72,226, 90, 0,139,171,165,233, 76, 46,175, 51,211,134,208, 51, 60,215,196,126, +122,248, 88, 94,191,127, 43,179,233,152,197, 98, 94, 24,179,129,122, 19,146,200,225,222, 80,139,212,174,209, 1,155,177, 22, 29, + 71,242, 15, 63,194,163,220, 24, 5, 80,144, 91,192,144,170,180,162,144, 42,147,222,216,238,107, 35, 52,131,255,185,211, 59,243, +208, 38, 78,171,141, 94, 95, 40,189,197, 6, 72,220,239, 54,217, 28,146,217, 32, 77, 34, 45,160, 59,192,235,169,215, 14, 62, 10, + 5,217, 35, 34,251,250,124,126,184,155,113, 21,132,230, 17, 50,101, 88,207,174,221,153, 20,177, 14,246,202, 57,139, 95, 51,116, +226,181,136, 19,198,127,120,219,255,241,251, 11,125,166, 95,104, 35,145, 48,102,175, 52, 7,159,158, 30,210,135,228,126, 52,211, +152, 28,202, 99, 76,120,244,119,197,147, 85, 90, 11, 84,224,134, 47, 93,182, 19, 68, 72,120, 40, 35,168, 91,160,141,152, 8, 17, +140, 2,223,127,110,119, 38, 44,129, 32,213, 10,194, 26,141, 73,235,196,218,161, 73,136,190, 53, 71,162, 93,157, 48,162,218,127, +215, 69, 65,202,168, 6, 52, 21,238, 30, 68,209,146,220, 5,104,130,194,199, 71,185,255, 76, 88, 43,154, 21,238, 46, 19,184,141, +168,184,125,168,129,178,124, 87,139, 0,194, 4,227, 86,168,153,121,170,115,199,138,253, 47,199,210,101, 13,238,170,148,236,170, +157,117,179,209,168,125,171,183,217,174,182,138, 68, 23, 69,197,188,204,246, 54, 15,197, 64, 81,119,244, 91,234,180,103,230,113, + 92, 86, 5,129, 38, 95, 0,174,244,208, 34, 81, 21,158,252, 67,167, 75,108, 41, 31,187, 33,125, 38,203, 11,199, 47,216, 97,199, +131, 84, 4, 25,129, 43,230, 71,109,159, 93, 88,140,152,233, 3,138, 15,147,143,180,194, 5,186,194,165,139,239,196,142, 82,183, +226,202,196, 95,170,228, 89,169,144,149, 62,234,196, 97,167,161, 70,105, 59,228,194, 71,217,229,250, 97, 85, 64,225, 25, 58,241, + 85, 4, 27,192,137, 30,238,145, 89,246,154,162, 22, 71,244, 98,239,169, 26,239, 87,171, 1,169,198,173, 16,170, 65,199,227, 9, +161, 26,105, 85,187,125,238, 45, 97,202,131,238, 27,245, 91,234, 70, 32, 34, 15,160, 56, 79,234,152, 48, 44, 64, 5, 2, 42, 59, +181,233, 74,229,247, 93,213, 20,101,238,251, 45,160,185, 83, 3,250, 44,244, 31, 4, 6,130,220, 52,136,222,206,180, 50, 15, 52, + 81,161,219,203,182,114, 53, 75, 73, 43, 3,119,126, 52,190,151, 79, 30, 29,200,191,252,213,207,228,211,179,125, 6,215,127,251, +235,231,242,187,175,127,146, 31, 47, 70, 28, 41, 86, 54,141,232,224,224,143,204,202, 31,170,198, 80, 56,211, 4, 60, 94,108, 24, +196, 50,223,187,137,235, 96, 11,117,224, 77,181, 12, 39,180, 65, 93,243,128,251,111, 0, 54, 7,221,182, 33, 66, 0, 94,210, 32, +219,213, 66, 3, 34, 27,120,207, 95,244, 91, 82,162, 16,166,159,249,144,201,135, 29,114,110,128, 60, 76,220,142,181, 83, 55,219, +223,156, 50,176, 40, 36, 32, 82,131, 14, 23, 5,207, 76,147,200,116,149,144,173,129,251,139,226,168, 20, 43,132,112, 46, 0, 36, + 69,199,133, 64, 4, 42,157,241,106,109, 66, 4,144, 24, 37,105,189,176, 12, 98,147, 61, 5, 88,139,192, 67, 45,208,185,222,139, + 66, 7, 49,201,195,122,167,186,135,192,100,196, 98, 20, 46,151,173,165,172, 42, 89, 22, 68,215, 48,240,145,193,160,207,197,213, +221, 90,206,239,183,242,215,159, 29,202,223,124, 51,162,221, 38,116,223,159,156,180, 53,201,216,235, 2,228,186,203, 77,119, 60, +142,141, 51, 93,174,114, 2,133, 65,147, 74,200, 45,215, 68,170,133,227, 86,155,147,219,209, 72,126,245,233, 51, 25, 93,191,167, + 1, 16, 80,229,148,178,157, 45,201,133,142,163,148,242,189,121, 17,213,235, 44,202,164,126,164,124,199,201, 35,132,105,210,130, +247, 18, 5, 61,117,226,203,144, 8,253,174, 22, 72, 40, 18, 34, 95, 75,237,107,161,135, 61,121,234, 70, 69, 89,189,102, 50, 96, +221, 98,177,117,103, 76, 75,224, 75,160,200, 67, 8,184,164,156,222, 84, 94, 19,134,156, 46,164, 81, 25,113,145,162,218, 99, 60, + 27,107, 17,146,106, 66, 12,125, 77,208,136,109, 77,153,103, 27, 61, 27, 3,222, 51,152, 37,109,182,218, 92, 52,250, 90,244,236, +243, 93,160,217,192,250, 19,187,246, 40,202,229,255,253,230,138, 19, 38,160,183, 57, 57,113, 9,105, 38, 76,208, 31,245,179,223, + 79, 15,120,160,113, 46, 55,100,171,152,224, 85, 94,152,127,124,236, 62, 2, 97,100,136,244, 6, 71,230,145,197, 38, 20,108, 97, + 68,147,151, 78, 91,223, 71,255, 84,223,155, 57, 4, 50,134, 68, 37,239, 51,138,180,151, 79, 14,249,249,113,207,177, 82, 3,115, +229,160,175,133,237, 81,151,207, 5, 58,116, 72,175, 14,245,252,225, 94,224,119, 75, 69,179, 11,108,218,124,136,120,171,215,103, +127,208, 99,195, 9,234, 26, 93, 15,161,142,215, 79, 92,119,165,132,239, 13,159, 41,198, 68,253,188,231, 90,248,150,174,139,223, +110, 53, 93, 40, 41,167,182,255,102,107, 57, 0, 77, 45,112, 81,169,179, 60,160, 97, 48,164,248, 26,176, 90,198,192, 0, 30, 5, +103,161, 67,147,172, 22,129,158, 99, 45,174,190,121,183, 39,191,252,100, 95,246,186, 1, 49,105, 40,100,176,130,192, 36,225,254, +126, 74,198,215,106,181, 50,120,105,145,219, 94,148, 99,191, 32,172, 59,163,202,159,217,246,162,166, 46, 16, 6, 21,240,170,168, +109, 19,209, 45, 87, 1,190,210,233,182,255, 40,255,201,131, 10,183, 48, 82, 18,182, 91,119,228,178, 42,121,187,179,196,221,240, + 46, 27,127, 7,180,112, 21,244,173, 75,211,195, 18,153,120, 72,181,111,171,128, 98,244,124, 79, 18,175,238,242, 90,127,222, 52, +203,119, 15,227, 95,242,190,243,122, 12,155, 59, 55,186, 2, 83,217,174,215,129, 92, 46,202,192, 41, 6,248,218,164, 39,217, 30, + 43,244,241, 22,165, 14,189,171,172, 16,203, 91,119, 82,162,112,136,152,212,105, 71, 59,219,142,239,155, 26, 13, 27, 45,239,220, +169,174,112,139,212, 44,180, 85, 3, 93,199, 22, 75, 86,116,232, 6,249,222,205, 13,131, 32,138,200,147, 62,130,123,218,176,164, + 94, 58, 48, 45,240,164,102, 65, 53, 50,196,167, 7, 76, 60,156,224,160, 75,181,227,246,189, 55,187,128,134,169,200,161,160,169, + 58, 30, 30,244, 88, 8, 32, 66,177, 66, 58, 26,222,127, 98, 6, 56, 54, 90,119, 3,220,208, 70,190,230, 92, 23,121,145, 8,119, + 4,191,247,133, 37,248, 26,121, 31,250,123,142, 92,164,168,168,186,185,178, 66,246, 24, 16, 42,118,113, 18, 23, 49,137, 67,163, +198,101,101,138,190,193,164, 54, 33, 36, 1, 0, 95, 92, 77, 12,220,131,160,172,198,142, 25, 71,235,228,255,238,245, 44, 40,114, + 44, 95,214,206,112, 88,101, 80,248, 40,180,100,153,249,185, 31,182,219,218, 77,108, 40,178, 83, 70,109, 13,248,218, 69, 99, 66, +164,255,125, 55,154,202,166, 3, 5,172,173,116,181,242, 71,160, 3, 58,250,103,159,127, 34, 95, 98, 44,221,180, 98,152,251,231, +212, 58, 70,124,110, 92, 75, 4, 18, 4,152,229, 54,177, 0, 12,240, 75,211,104,144, 97, 41,245, 62, 20,197, 74,151,134, 22,161, +143,114, 83,219,167, 5,230,169,205,137,130, 62, 70, 24,189, 97, 12, 74, 65, 32, 76,103,128, 66,214, 11, 3, 59, 75,128, 62,241, +218,235, 36,166,212,101, 49, 95,155,140,235,194,238,221, 49,168, 67, 41, 4,114, 42,241,158,144,162, 43, 24, 27,118, 27,240, 40, +239,115, 93,150,119, 76,162, 57, 74, 90,242,230,242,150, 65,103, 8, 87, 47,125, 45, 20, 76,163,137,173, 47, 64, 49,172,120,231, + 16,213,193, 51,130, 36,185, 17, 51,238,137, 52,137, 64,173, 15, 24,156,237,206,145,254, 46, 39, 91, 81,170, 42,108, 70,238,163, +208,208,181,251, 43, 0,100,165, 70,152, 18,224,103, 0,175, 60, 55, 5, 54,252,220,111, 95, 79,228,127,253,183,207,229,247, 63, +106, 7, 3, 36,241,205,132,197,110, 28, 53,136,179, 65,241,115, 72,237, 2,195,151, 0,108,180,163,108, 48,146,141,137, 6,229, + 89,204, 98, 12,214,165, 8,148,187, 34,150,163,227, 67,138,146,152, 80, 78, 76,250, 24,186,101, 36,136,203,187,185,219,241, 98, +188,108,155,122, 26,135,224, 12, 64, 96, 40,107,240,154, 80,240, 68, 27, 1, 80,228,192,114,105,235,191, 81, 20,247,244, 53,224, +135, 1,230,205,237,253,136,215, 7, 1,125, 77,230, 81,200,150, 10,157, 59, 86,152,187,212,186,106,140,163, 51,106, 41,192, 56, + 39,229,180,136, 54,182,165,155,187,124, 84,196, 99,149, 81,184, 92, 41, 87, 84, 14, 50,133, 96, 74,119,104, 56,136,146, 52, 84, +243,224,160, 66, 30,156,238, 88,232,110,245,245, 6,180, 11, 62, 61, 58,145,205,226, 94,142,250,198, 71, 71,172,153, 3, 7,197, +137,159,212,147, 73,252, 28,214, 4, 1, 17,249,185,124,253,211,149,137, 97, 57,205, 46,118,171,232,208,159,251,128, 8,121, 61, +183, 96,182, 64, 38,183, 72,184,195,111, 82,137, 47,163, 88, 88, 0,165,204,238, 1,207,205,147,227, 71,242, 63,125,245, 75, 57, + 58,232,107, 12,179,123,129, 78, 27, 90,236,112,112,195,234, 24,184, 14, 20,171,152, 24,236,135, 0,129, 78, 36,214, 80, 49,217, +228, 92,215, 98, 28,206, 78, 63,179,124,130,201, 34,138, 72,250,156,184,198, 69, 37,124, 69,237,202,160,226,255, 7,126, 13, 93, +130,172, 90, 21,154, 63, 17,147,178, 21, 11,150, 91,197, 77, 94,162, 60,224,125,229,228,210, 87,192,208,182, 0,136,113, 26, 47, + 88,148, 2,224, 13, 32, 35,113, 47,233,142,120, 2, 54,143,250,231,209,116, 34,111,110,154,242,234, 68,159,205, 86, 38,151,151, +119,114,124,178,111, 83,219,164,193,107,185,167,207,107, 76,115, 19, 71, 3, 87, 34, 30, 31,235, 71, 85,162,217,129, 75,148, 86, +158,225,236,150, 81,245, 67,117, 42,221,177, 10,229,222,179, 2, 72, 69,102,179, 90, 21, 10,161,171,232, 32,136,218, 65,207,106, + 58, 92,181, 47, 75,185,195,141,153, 8,163, 60,244,189,172, 37, 8,115, 17,123, 80, 15,171,108, 61, 89,241, 57,106,190, 86, 15, + 50, 78,149,163,137, 11, 87,203, 11, 93,185,201,248,157, 21,194, 51, 20, 7,155,149,133,235,215, 11,209,247,246,158,131, 90,186, + 52,112, 43, 61,220,240, 94,183, 71,160,148,145, 71, 44,193,151,197, 67, 1, 19,186,177,141, 37, 46, 3,124,101, 20,104,177,113, + 74,149,212,215,236,106,108,170,209,239,116,107,244, 55,147, 32, 68, 67, 16,208,195, 7,155, 86,142,247,227,200,197,129, 76, 8, + 35,118,126, 55, 10, 1, 27, 43,219,136,141, 60,113,128, 45,196,238, 47, 16,199, 32,188,182,180,250,171, 56,233,213,106,130, 70, + 38, 44,110,138,154, 38, 70, 86,128, 23,110, 68,161,151,142, 82,247, 29,124, 24, 58, 40,166,114,215, 46, 50, 51, 41,113,208, 90, + 35,242,107,135, 7,184, 17,125,164,233,110, 69, 83,165,238,196,131, 31,120,226,143, 35,167,135,153,106, 94, 35,106, 17,101, 78, +155,215,216,168,111,228,242,131, 38,212,109,215, 69,130, 89,184, 62, 92, 39, 3,145,236, 40,218,195, 98,177, 25,177, 43, 20,158, + 49, 67,172,210,254, 23,103,161,217,244,130,196,148, 21, 49,242, 2,248,167,135,135, 79,127, 22, 35, 70, 33,223, 94, 95,155, 56, +142,152,138,119, 52, 31,210,251,215,107,130,242,101,246,187, 47, 95,156,105, 50,215,174,105, 27,243, 82,141,151,230,115, 31,233, +239,223, 81,162, 50,226,103,179,142, 75, 72,137,234,104,242, 4, 37, 41,141, 10,242, 92,209,241, 96, 55,106,250,253,246,158, 89, + 24,122, 18, 68, 34, 35,205, 73, 19, 18,144,233, 96, 59,192, 90, 30,251, 66,219,161, 70, 76,162,232, 56, 80, 56, 0,236,121, 52, +104,241, 58, 12,160,235,206,181, 74, 64, 96, 95, 43,177, 73, 88,139,250,227, 27,130,138, 0, 30,197,117,197,207, 96, 20, 15,244, + 46, 58, 92,236, 93, 65,173,195,200, 30, 69,232,143, 23,215, 44, 22,128,228,197,174, 56,241,179,109,234,133, 25,117, 21, 76,153, +172,105,207, 31, 38, 77,216,195, 23,118,255,204, 47, 97,109,246,191,133, 1,134,114, 71,180,155,187, 22, 45,120, 30,156,221,114, +123,221,242,163,231,177,146,251,141, 2,163, 97,206,244, 94,225,185,189,156, 90, 49,245,244, 88,223,219,116, 75,144,211, 92,239, +197,254, 80, 11,216, 32, 38,143,156,227,214,216,248,204,180, 41,214,247, 14, 96, 92, 23,207, 14,238,119, 16,155,139, 98, 12, 62, +121, 38, 23,183, 51,105,244, 31,201,135, 63,255,168,239, 41,225,239,154,234,181, 7,221, 47,219, 45,184,246, 10,160, 42, 71, 65, +109,211, 12,224,253,194, 40,187, 12,248, 59,180, 15,212,162, 17,211,157, 17, 49, 45, 56,159, 80,200,172, 4, 91,104,105,154, 27, + 79, 28,120,142,198,106, 91,239,204, 49,186,133,224, 75,179,209,116,145, 24, 20, 93, 91, 61, 99, 5,197,115,112,254,231, 62,122, + 47, 2,195, 38,136, 56,183, 63, 52,139,211,212,253, 14,128,119,162, 21, 47, 88, 20, 90,140,150,251, 90,136,153, 30, 38,209,235, +141, 2,247,189,225,116, 82,155,178,208,203, 30,185, 34, 91, 18, 19,178, 74,129,216, 71,177, 31,217,122,168,233,122, 6,104, 4, + 80,164,182, 18,247,136, 8, 88,248, 97,117,120,113, 63,179, 24,235,250,229,196, 21,128, 7, 15,157,126, 40,220,241,108, 68, 44, +172, 17,187,112, 70, 33,248,130, 2, 10,198, 59, 40,149, 90,212,183, 72,104, 66,246,211, 5, 28,244, 74,121,118, 54,212,207,102, +147, 19,188, 79, 76,149, 64, 51,190,158,108,185, 30,195, 52, 21, 5, 31, 19, 56,193,145,102,161,202,198,148,147,224,192, 20, 72, +181, 56, 62, 61,232,243,253, 53,184,126, 40,229, 26,160,110,136,139,121, 94,138,195,192,233,150, 6,248, 35, 2,191, 97,241, 97, +179, 51, 6, 24,227, 19,144,252,177, 57,249,133,205,152,120,137, 44, 53,255,141,178, 93, 61,203, 54,197, 64,211,103,236, 49,163, +126, 99,133,101,177, 16,174,114,115, 57, 62,216,103,227,139,102, 10,140,140, 80, 14,228,241, 80, 24, 15,129, 73,122,246,228, 88, +207, 42,174, 49, 86,174, 26,243,176,143,133, 58, 23,114,108,228, 65,188,116, 68,104, 81, 86,123,116,169, 59,210,170, 26, 9,252, +223,185, 83,147,232, 56, 83,123,231, 58,237,194,187,253,143,147,118, 81,187, 17,149,245, 40,157, 64, 5,236,182,144,180,224,245, +140,224,227,244,134, 40,180, 64,143,241, 69, 35,137,235, 7, 58, 10,196,149,175,196, 19,186,185,133,129, 91, 26, 84,124, 75, 71, + 64, 87, 85, 20, 71,152, 81, 81, 39,219,143, 71,248, 21, 80,172,168,249,245, 65,141,174,174,118,205,184, 41,168,156, 42,176, 90, + 53,234, 13, 29, 7, 80,217,132, 34,129,208, 73,201,223,131,201,118, 70, 30,184,242, 26, 40, 84,217,128,154,139, 82,165, 58, 6, +189,189, 13,169,108, 85, 87, 95,129,200, 48,225,176, 29,120, 65,193, 13, 6,129,249,210,189,156,181,232,209, 0,110,187, 49, 3, + 41,226, 0,167,187, 85,173,144,134,174, 28,139, 69,118, 17,161,105, 87,199,137,237,162,179,220,104, 55, 52,128, 65,231, 91,154, +207, 58, 13, 10,160, 16, 87,166,172,184, 49,227,198,131, 70,144, 78, 20,124,116,125, 75,239,222,245,245,125,245, 16,187,131, 85, +238, 72,121,203,102, 54,205,201, 42, 77,248, 60,247,157,190,117, 6, 41,233, 94, 49,223, 35,244,173, 3,138,252,196, 38, 65,233, +192,170, 48,182,170, 30,134, 16,177, 99, 20,234,226,144, 6,212, 66,145,156, 77,106,102, 57, 97,248, 64,125, 42,189,155,207, 29, + 77, 93, 5, 24,170,156,197, 81, 29, 68,177, 59,181, 49,120, 68, 77,105,162,168, 49, 38,197, 40, 28, 30,208,235, 21, 65, 77,232, + 12,242,188, 65,117,168,219,187,169,196, 39,251,188, 70,183,107,147,248,196,165, 65, 34, 11, 92, 8,131,197,133,211,171,230, 43, +237,254,246,186, 4, 45, 33,184,211, 98, 87,207, 69, 91, 59,255,201,210, 28,192, 40, 93, 11,222, 43, 62, 67, 28,145, 63,142, 99, +143, 2, 12, 65,186,201,130, 38, 54, 21, 71, 47,136, 64,135, 65,219,180, 92,239, 56,142, 69,130,200,179,178,134, 76, 49,193,119, +140, 42, 25,196,230, 25, 0, 86, 10,156,167,174, 70, 25,129, 99,183,211,181,252,171, 95,124, 66,199, 42,156,247,126, 55, 49, 92, +135,254,126, 76, 38,158, 28, 13,249,231,209,232,142, 65,123,231, 78,137, 40,230, 74,140,155, 53,153, 91,199,146,242,158,114, 2, + 20,151,245,186, 37,142, 34,159, 84,229, 53, 45, 18,231, 20, 34, 68, 37, 41,144, 66,138, 94,225, 19, 10,106, 96,248,100,173, 98, +100,132, 62,173,163, 34, 34,138, 96,200,240, 54, 91, 68, 72,255,233,253, 76,126,249,108, 32,255,215,253,181, 28, 12,187,214, 97, + 47,215,124,174,144, 56, 48,125,107, 12, 7,238, 88,102,138,113,232, 54,209,175, 1, 24,137, 34,153,239,113,183,164,106,221,108, + 62,147,159,127,254, 41,149, 20,199,211,133,116,186, 77, 82, 86,223,124,184,149,126,175, 33,209,186,107, 19, 64,178, 43, 34,238, +249, 35,218, 19,115,228,194,231,186,167,113, 22, 96,100,128,159, 8, 56, 59, 61,146,183,151,183, 6,212,211, 24,129, 66, 20, 73, +176, 3, 91,217, 92,147,208,106,206, 73, 20,176, 68, 48,204,217,232,243, 61,247, 69,104,106,162,122, 70, 87, 20,155,240,180,252, +188, 84, 9,162,194,166, 32, 57,114, 61, 21, 89,241,128,228,211,112,103, 67, 40,152, 77,231, 43, 45, 78,237,233, 64,162, 2,112, +111,177,173, 44,143, 75, 82, 49,193,190,184, 13, 83, 82,190,210,178, 33,235,229, 92, 26,250, 75, 7, 45, 80,239, 76,135, 1, 10, +123,143,142,159, 81, 59, 29,187,233,227,190,241,202, 65, 13, 67, 44,186,215,164,139, 53, 5,246,205, 72,170, 13,118,237,134,224, + 7,120,147,188,255,182,249,166, 83,161,146, 49,204,148,255,160, 62, 8, 60, 8,158, 39, 40,200, 5,193, 90, 70,155,149,252,240, +118, 41,127,243,219, 63,232,251,155,178,179,207, 74, 99, 60,160,116,216, 63,126,194,226, 6,207, 21, 5,175, 24, 26, 60,187,249, +227, 64, 78,185, 94,183, 23, 39, 39,218,253,239, 81, 26,119,199,130, 90,200,138, 1, 85, 20,107, 37,168,113, 54,146, 38,167, 47, +213, 4,185, 6, 47, 39,198,202,233, 52, 66, 2, 49,205, 4, 43,230,211,118,120,220,165,247, 7,158, 21,152, 66,225,140,157,246, + 0,150, 12,228,207,239, 70, 50, 89,109,244,153,142,229,236,232,144,207, 2,206,194,179,211, 83,198, 46,184, 17, 66, 52, 9,147, + 37,226,193, 92,248,136,147,132,108, 95, 94, 28, 55, 57,149,192,115,118,124, 52,208,207,179,146, 27,253,222, 24,240,249,204, 71, +145,181,156,171,239,168, 43,192, 81, 21, 20, 57, 90,247,224, 76,128, 89,186,169, 71,219, 68,190, 7, 15,227,242,170,187,175,254, +199, 7, 22, 29,132,171,210, 5,164,123,153,231, 46, 30,178,212, 71,162, 1,105, 42, 54, 22,171,166, 3,120, 88,235,142, 12,197, + 1,188,141,243,204, 3, 69, 82,255, 94,241, 11, 77, 39,163,208,185,211,213,176,161, 44,235,110, 58,240, 17,132,141,123,139,250, +239,153,212,221,254,144, 57, 45, 48,122, 13,187,109,114,200, 51, 25, 52,219, 15,147, 12,252,222, 80,234,245, 0, 2, 27,122, 99, +242, 78, 37,231,104, 57,168, 68, 53,244, 27,217,153, 56, 13,173,114, 93, 66,199, 56,159, 47, 40, 54, 67,111,118,160, 46, 1,172, +209,131,143,145, 19,146, 62,138, 31, 19,216,176,177,126, 3,158,233,237, 88,198,147, 21, 85,195,176, 75,131, 40, 66,209,107, 80, +200, 4,239, 5, 73,106,162, 15, 43,245,213,245,195, 28, 28,245, 12,225, 41, 86,245,211,192, 5,188,227,204,174, 11, 30, 8,238, +196, 50, 91, 65, 84, 93, 47, 42, 74,210, 51,114, 3, 17, 82, 93,105,147, 18,208, 83,186,104, 75,232,215,222,124,210, 27, 46, 57, +106,123, 68,116,189,184, 79,184,183,216, 1,115,191,231,235,146,204, 11,194, 70, 98, 32, 62,161,179, 89, 66, 74,155,141, 84, 11, + 38,115, 60,216,244,158, 78,179,122,245,131,233, 13,222, 91, 41,129, 39,245,226,193,209,175,118,246,243,151,117,233,216, 74,154, + 54, 12,130,154,246,198,115,230, 78,133,145,163,240, 43,169,100, 32,110,209,201, 85, 5,100,187,213, 33, 16,101, 78,196,109, 65, +125, 5, 72,126,162,146,191,209,138,190, 55, 88,200,227,211,125,222,207, 34,221,154, 73, 17, 85,198,114,158, 87,151,147,225, 94, + 22, 43,128,235,251,137, 38,245, 30, 11, 3,172, 28, 38,155,221, 3, 85,144,206, 81, 5, 87, 47,116, 49,140,109,146, 70,123, 83, +189,167,240, 95, 15, 82,179, 99, 12, 57,214,206, 40,224, 2,233,224, 56,210,231,163, 29,216,142,212,149,199,240, 26,237,134, 77, + 71,160,227,141,207, 4,128, 29, 70,184,163,201, 66,207,102,166,193,161, 33, 83,118,135, 70,219,251,246,221, 45, 3,113,147, 12, +148, 37, 95,107,197,117,197,206,113, 44, 33,247,211, 40,190,123,205, 22, 71,171,232, 88,193, 81,222,184, 33, 9, 58, 94,168,157, +101,164,180, 26, 59,102,183,203,234,130,185,210,231,143, 92, 38,118,235, 99, 75,169, 40,148,149,252, 65,181, 26,115,142, 99, 25, + 88, 23,137,137,153, 57,142, 25, 35, 3,241, 9, 59,208,175,223, 47,228, 95,124, 58, 96,193, 4,212,242,180,185,181, 85,162,115, +187, 49,229,195,125, 6,101,111,190, 41,121,206, 64,229, 3, 67, 97,127,223, 10, 51,220,251, 56,220, 73,210,108,154, 8,138, 94, +183,175,190,250,107,249,253,111,255,139, 44,183, 37, 57,235, 24,159, 34,137,205, 23,118,175,241, 58,120,110, 26,154,236,150,117, + 83,225,241, 1,166, 39,219, 37, 11,168, 22,187, 59, 99, 47, 32,137, 32, 98,146,155,142,123,227,157,100, 16,251,232, 54,128, 56, +205, 74,224, 41,180,240, 36,142, 28, 12,141, 21, 60,239,173,200,236,150, 41, 23, 90, 90, 17,109, 19, 75, 51,208, 1,198, 3,205, + 37,158,254,144,156,125, 91,121, 81,109, 13, 88, 8, 77, 30,219, 93,196,238, 28,251,118, 72, 22,127,255,245,107,222, 75,196,168, +149,155,248,140,151,177,188, 72,250,210, 41, 39,114,175, 63, 7,198, 18,215, 86, 26, 19,167,218, 81,182,244,249, 24, 96, 79, 61, +215,231, 97,186,147, 63,165,119,178, 94,140, 93,182,217,226,231,201,254, 64,254,187,207,123, 4,190, 1,104, 6,124, 12,172, 93, + 1, 93,222,236,242, 90,174,153,224, 99, 7, 70,166, 16, 48,130, 49, 79,192,200, 76,165, 83, 40,149,157,156, 60,147,225,193, 35, +106, 1,244,244, 62, 48, 86,185, 94, 7,138,152, 1,169, 95,200, 23, 90,188, 68, 37, 21,175, 82,199, 76, 65, 80,198,148, 29,173, +179,142, 19, 0,253, 54, 76,148, 33,109,135, 99, 54, 47,207,207,246,245,122,157,200,215,111,174,152, 43,160,101, 0, 90,225,151, +207,246,104,210,244,246,122,206,251,103,190, 17,109, 38,227, 22,101,183,109,189,176,243, 73, 0, 26, 28,208, 4,225,200, 7,218, +220,241, 32, 33, 72, 16,185,119,193,125,250,156, 34, 75,167,122,246,112,166,215,110,214, 98,147,170,162, 94,233,110,233, 64, 41, + 90,124,155, 55,199,163, 97, 36,183, 26, 71, 6,253, 38,207,114, 99,174,205,227, 0,122,209, 89, 90,119,213,148,244, 12,139,250, +129,171,118,148, 81, 24, 61,112,128,171,132, 40,129,115, 64,131,154, 50, 17,125, 36, 4,242, 79,180,110, 1,102, 41,173, 59,103, +133,233, 28,234,204, 17,207,248,208, 65, 42,110,106, 31,219,142, 21,221,153,249, 20,241, 3,178,114,174, 58,245,184,109,154,103, +193,131, 29,104,224, 10,105, 65,189,167,121,224, 98, 87,125, 90,165,124,102,104,245,162,150,225, 52, 4,124, 86, 27,219, 84, 93, + 93,236, 92,218,138, 31, 78,125,114, 26, 43,148,181, 91, 93,101, 99,200,241, 22,253,169, 83,167,223, 88,231, 10, 91, 64,116,226, +176, 99,228,136, 52,177,131,212,240, 14,103, 15,224, 15,176, 14,102, 11, 57,208,202,174,217,220,103, 36, 67,112, 98,178,209, 68, + 23, 31,180,184, 27, 50, 14, 36,170,126,125, 88,227, 1, 19, 6, 71,100,137,141,201, 24,212,125, 63,137,196, 75,186, 5, 68, 39, +150, 91,222, 19,142,132,188,123,197,125, 55,163, 25, 27, 75, 27, 0, 18,123,181,134,155,175,136, 83, 10,115,118, 15, 38,101,232, +110,118,116,103, 11,234, 36,157,121, 64,219,229,230, 38, 68, 62,102,110, 35,195,128,210,134,153, 57, 44, 37, 45,138,174,164,165, + 49, 41, 16, 52, 50,175,188, 42,160, 93,154, 61,128,165, 72,137,219,149,190,123,245, 42,249, 35, 57, 81, 59,123,133,216, 26,169, +240,196, 29,177, 19,199,217,193, 78, 55,240, 53, 10, 30, 10, 90,174,122,193, 25, 20, 14,164, 12, 2, 55,195, 48, 37, 68, 8, 91, + 32,137,192, 24, 2,212,154,184, 72,121,143,103,179,153, 77,140,208,249,228, 21,197,202,236, 61,239, 38, 83,249,252,165, 80,111, + 28, 8, 26,240, 75,161,157, 77,141,132, 44,243, 9,147,163,149, 51,123, 15,120, 79,247,211,165,254,124,230,224,208,146,227, 72, + 24,192,112,242,178, 53,236, 2,186,215,152, 59,242, 53,147, 26,229, 91,161,181,224,194, 62, 72,146,152,186, 44,189,112,230,153, + 14,204,209,107,187,115,107, 85,223,119, 10,129, 63, 86,108, 66,179, 31,103,106,201, 41, 65,193, 49,243,198, 53,251, 9, 66,164, +236,172, 49, 1,208,105,136, 23,112, 45, 22, 60, 26,140,129,251, 24,116,121,175, 91,141, 22, 87, 14,107, 36, 72, 20, 69, 26,232, + 37,180, 36, 69,181,201,220, 21,189, 2, 83, 86,180,103,222, 86, 5,187,108,107, 52, 39, 23,119, 10, 29,180, 90, 53, 26,156,148, +229, 69, 93, 4,150, 98, 54,206, 40,242,187, 45, 83,217, 43, 41, 80,178,149, 94,212, 38,223,250,187,203,149,204, 53,254, 61, 61, +208,231,106, 93,114,223,140,123, 50,232,134,126,246, 75,142,104,227, 29,220,204,114,118,116, 65,240, 48,209, 3, 72, 9, 59,111, + 88,121,238, 54, 27,130,194, 70,227,177,188,120,254, 68, 6,223, 14,100,124,113,197,103, 6, 12,161,217,210,146, 9, 95, 3,247, +141,210,192, 33,247,228, 4, 72,209,254,115, 77,202, 92,117,198, 48, 77, 64, 39, 8,249,214,205, 10, 9, 43,103, 87, 8,127,248, + 13,177, 45, 13,217, 63, 57,179,179,141,137, 87,120,230,109, 85,200, 98,163, 71, 65,159,152,211, 62, 92, 55,136,173,224, 90, 67, +153, 82, 92,213,177,198,113,232,153, 95, 70, 72,140, 43,211,107,192, 55,108,133,224, 46,220, 79,188,183,147,189, 19,210,209,176, +130,184, 25,141, 57,209,107,184,189,110,225, 30, 15,135,253, 80,238, 70,247,114,126,123,207,162,245,213,227, 3, 22,124, 91,202, +218, 38,210,239, 15, 25, 71, 17, 25,224, 43,112,117,125, 46, 11, 77,246, 16,121,161,197,172,198,128,197,234, 86,126,186,184,101, + 60, 44, 29,112, 86, 1, 96, 67,131,104,213, 57, 36,142,108, 34,107,141,149,139,213, 36,198,159, 7, 88,177, 9,127,131, 78, 44, +143, 15,246,244,223,250,251,187, 48, 61, 42, 41,112,246,232,176, 79,188,201,235,119, 87,242,244,172,167, 73,244,128,116,211,197, +218, 44,134,177,154,249,249,147,161,124,127, 49,149,247,183, 43,130, 3,239,151, 5, 57,229, 63,127,126,204, 21, 4,228,110, 79, + 15, 7, 28,185,127,250, 4, 83,149, 59,198,127, 20,173, 48,120, 57,222,211, 66,224,126,201, 85,131,121,169,151,242,234,108,160, + 9,217,214, 63,152,166,160,208,155, 46, 83, 38,121,124, 95, 18,110,121,223,166,171,204, 38,213, 4, 87,151,122,134,150,206,236, + 73, 8,182,163,138,106,105,152, 31,203,195, 33,139, 78,196,225,233,116,206, 60,115, 61, 94,235,245,111,201, 73, 18,210,209, 13, +211, 66, 76, 18,227,134,155,146, 84,238, 43, 12, 44,222,185, 87,137,144, 99,178,252, 65,154, 51,240, 81,117,189,120,175, 69, 75, +202,154, 35, 12, 46,223, 3, 32,203,196,254,139, 74,185, 76,194,154, 51,206, 7,169, 2,229,201, 67, 50, 38, 93,165, 40,106, 61, +108,234,190,103,214,157,135, 97,236,175, 91, 37,131,178,246,221,102, 85, 92,228,181,153, 72,197, 71,102,114,205,210,186, 64, 40, + 29,205,141,164, 65,113, 16,188, 47,159, 58, 12,250, 45, 22, 30,120, 15, 20,213,209, 63, 79,103, 5,119,188,131,142, 1,249, 66, + 71,157, 98,244,129,125, 42,222, 23,110, 62, 30,144, 78,179,225, 24, 2,240,204,245,125,245, 27, 68, 86,226, 90,227,245, 42, 32, + 6, 57,233,110,105,105,116, 66,211, 18,175, 40,134,252,156,190,185,159,111, 82, 30, 28, 10,248, 39,166,153,188,171,165, 70, 99, +247, 83, 46,184, 19, 14,106, 46,184,249,176, 71, 73, 72,189, 0, 76, 16, 48,122,195,184,176, 66, 88,163,168,224, 58, 33,176, 9, + 66,225,102, 49,133,239,125, 1, 38, 74, 75, 13,246, 48, 37, 32, 54,192, 2,117,176, 77,125, 53, 19, 16, 9, 95,153,204, 84,247, +143,232,117, 92,207,216, 84,220, 82,118,198,230, 71,142,159, 7, 62,129, 93,116,153,240, 33, 43,242,226, 65, 48, 38, 50, 47,242, +106,245, 64,209, 17, 87,109,171, 58,112,124, 62, 20, 90,221, 78,191,166, 51, 34,103,225,176,211,109,144, 59,220,173, 79,110, 2, + 47,248,130,154, 10,105, 64,206,130, 69, 41, 9,142, 97, 92, 75,220,226,251, 16,244, 49, 74, 67,226, 36,200,168,208,135,173,219, +228,116, 3, 29,208,150, 86,153,137, 77, 54,240,115, 5,184,173,115, 89, 77, 67,118,187, 0, 61, 33,201, 72,220,169, 45, 73,105, + 34,162,201,200, 92,237,114, 57,210, 74, 29,154,236,116,219,242,137,146,157,125,195, 28, 4,101, 94,227, 92, 40,179,139, 49, 34, +254, 79, 19, 76, 25,149,164,146, 5, 68,144,195, 35,122, 77,155,218, 36, 46,233,175,222,207,219,146,179,144, 14,184,207, 71, 80, +220, 22,166,158, 23,186,241,138, 80,128,105,195, 36, 13, 17, 27, 88, 70,226,166,227, 94, 96, 63,139,130,113, 4,138,218,214,138, + 38, 96, 9,140,179,107,247,145, 98, 25,203, 29, 3,205,122,183, 54, 33,155,200, 60, 24,240,140, 99,100, 73, 11, 91,167, 25,150, + 46,152,100,207,101, 40,207,143,247,229,114,188, 96,241,130,169,194, 99, 13,160, 31,110,166,152,113,213, 38, 32,213,243, 95,197, + 40, 22, 69,184, 14,137,153, 6, 73,207,138, 19, 32,184, 97,104,131,221, 43, 58, 75, 40,230,253,249,221, 92,190,122, 57,148,255, +231,235,145, 28, 31,244,185,138,200,248, 30, 77,140,101, 1, 68, 63,246,180, 40,144,196,156,251,176,202, 64,177, 29,106,130, 93, +208, 63,161,224,124, 37, 42,181,155,154, 46,228,115,253,222,159,125,249, 11,249,199,111,190,213,231, 66,159,167, 53,144,245, 7, + 50,214,247,188,210,107,137, 29,115,133, 77,233, 52,180, 48, 56, 50,170, 26,238,225, 9,124, 30,134,141,122,101,112,124,184,199, +224,189,253, 52,245,245, 92,204,105,137,201,198, 22, 76,252,152,212,225, 12,162, 16, 35,180,165, 48,195, 42,172, 84,176,242,156, +110, 77, 31,157,150,178,250,223, 80,171, 20, 7,201, 21, 62,241, 50,234,175,129,192,178,204,206, 16, 14, 27, 86, 21,216,221,226, +253, 21, 52,161, 17,233, 38,185,188, 60, 25,176,104,195,180, 47, 14, 13,240, 92,134,166, 87,126,169, 93, 33,232, 89,192,146,124, +254,120,159,137,107,168,247, 96,127,208,145,156,160,197, 6, 87,131,224,187,195,129, 49,244, 21, 45,244,215,135,250,217, 48,166, +183,120, 45,254,218, 15,103,191,162,225,225, 89,197, 61, 70,192,193,142,158,166, 39, 77,172,224,172,120, 60, 26, 14,217,124,192, +213, 16, 13,194,147,167,207, 73, 99,123,245,108,200,238,218,216, 90,122, 54,103, 75,125,159,129,124,247,238,134,235, 68, 28,249, + 94,211,248,234,183,147,141,217, 12,107,199, 62,104,233, 89,213,243,139,215, 6,213,239,221,229,189,158,151,161,196,249, 78,222, +124, 24,201,231,207, 14, 25, 35,143,247,205,155, 30,231, 31,118,172,189, 47, 30,201,167,143, 6,242,211,237, 82, 59,236,142,140, +180,138,188,184, 95,211,156, 70,202,194,133,143, 66, 62,123,235,109,230,118,171, 1, 53, 87,118,153, 77,135,132,197, 55,114, 85, + 76,174,253,205,104,196, 88,137, 24,132,245, 3, 77,135,118,169,131, 29,181,240, 27, 14,248,188,160,176,193, 57,122,123,147,233, +245, 63,100, 76, 66, 51,133,230, 48,206, 50, 83,107,146,143,212,185,138,143,236, 42, 31,244, 64,141,211, 91,229,242,162, 2, 82, +249, 27, 19, 34,125,203, 26, 96,198,142, 9,187, 53,239,132, 43,197, 47, 86,219,174,242,149,123,181,110,178,143, 57,237, 79,145, + 4,114,175,208,171,159,139, 2,235,210,179,220,132, 23, 50,223,209, 33, 65, 82,132,134, 74, 86,166,143,205, 68, 10,225,153,196, + 56,191,177, 7,177,220,197, 94,240,143,201,206,154,228, 44, 64, 62, 24, 47,163,243,196, 97, 56,220,235, 81,202,117, 75,110,126, +198,206, 9,221,111,214,194,254,179,109, 94,182, 24, 69,105,181,132, 61, 25,110, 62, 59,116,223,101, 65, 2, 23,175,131, 27, 68, + 4,164,152,188, 35,146, 52, 28,182, 58, 20,137,182,224,189,221,165,110,120, 18, 48,121, 39,190, 51, 5,215,180, 2,186,161,224, +128, 46, 61,190,207,192,121, 33,199, 85,203,141,141,167, 80,132,140, 57, 14,246,110,212, 71,145, 72,164, 24,119,115,229,209,176, +117,198,108,147,242,154,110,138,162, 30, 67, 33, 80,183, 82,155,142,248,214,197,212,142, 10,115,204, 98,128,114,225,154, 74, 49, + 42,242,132, 91,186, 13,166,237,188, 31,240, 11,244, 33, 15,108,106,178,115, 64, 26,169, 41, 30,100, 66, 55,247,168, 14, 86,144, + 7,174,158,101, 21,122,130, 39,217, 19, 7,249,228,238,157, 46,206,138,175, 0,148, 9, 59,102,235,204,171, 42, 51,112,197, 62, +163,198,101,181,169, 75, 37, 86, 82,123,169,251,239,166,237,163, 3,143,200,217, 78,140, 45,144, 58,114, 29, 65, 15,200,127,112, +139, 33,146, 1, 4, 49,196, 33, 16, 4,177, 18,201, 8, 92,179,233,197,120, 50,151, 73, 39,148,243, 17,168,136, 77,114,196,161, +191,143,125,183,237,190,133,146,145, 81,108, 19, 48, 84,213,133,235, 44, 0, 36,151,106,199, 10,132, 61,216, 36,129,243,143, 81, +244, 65,194,211,192, 68, 45,190, 95, 84,252,184, 78,189,126,200,238, 32, 43, 33,156,210, 51,225, 30, 41,232, 52,183,166,133,176, + 41, 58, 2, 95, 0,129,162,202, 86,185,178, 66,198,117, 67, 39,209,236,152,168,146,129, 21, 67,217,215,223,117, 51, 94,201,104, + 54,147,117,106,134, 42,226,220, 98,128, 51, 13, 19, 81, 82, 13, 17,197, 16,118,234, 0, 41, 21,165, 21,251,227,233,202,117,228, +253,252, 99,210,212, 52,156, 9,117, 5, 74,251,121,188,119, 36, 39, 19, 37, 10,205,238,213, 99, 71,181,250,170,213, 12, 43, 99, +160,210,246,234,120, 45, 60, 87, 59,103,165, 52,249,103, 99, 50, 96,162,129, 11,252,167,243,165,252,247,159,246,104,189, 76,124, +134,254, 31,104, 92,120,249,147,163,129,141,120,233, 86,150,152, 71, 54, 24, 35,113,193, 93,230,254,176,239,107,201,156,133, 19, +204, 68,208,121,223,222,143,165,221,221,151,255,225,175,255, 74, 59,166, 41,175, 37, 98,207,225,175, 95,241, 61, 98,106,131, 66, + 15, 43, 26,196, 16,136,163, 76,200,102,217,178, 72, 19,109, 12,240, 53, 48, 56,166,219,156,192, 55,170, 83,106, 18, 66,161, 88, + 56, 71, 89,124,119, 28,251,138,110, 7, 10, 41,146, 68, 11, 69, 71,139, 5, 83,225,215, 23,199, 31, 6, 78,248,252, 20,244,170, +168,191,166,185,108, 84, 79,182,192, 90,156, 5, 6, 96, 51,195,159,144, 49,140, 30,241,250, 94,127,188,156,107,146, 26, 82,160, + 69, 60,214, 67,207, 34, 40, 32, 66, 54,160, 20, 43, 48, 22, 80,187,108,197,125,249,242,229, 19,126,199,197,221,130,138,119, 32, +160, 44,118,250, 12,245,251,122,205, 15,229, 19,237,134,227,210,104,110,120,230, 49,110,190,213,179,113,165, 93,229,205,253,148, + 49,159,163,112, 61,155,125,202,212, 6,156,136, 65,174, 27, 95,195,148, 11,241, 15, 5, 3,117, 61,146, 6, 81,222,128,227, 30, + 12,219, 44, 50,238,166, 27,198,152,243,235,137,118,210, 35,217,174, 71, 90,236, 44,217,113, 3,163,128, 41, 73,191,221,213,215, +223, 51, 31, 1, 40,229,233,181,129, 30, 59,198,248, 31,238, 23,210, 12,172, 65,216,176,232, 41,101,175, 85,178,187, 30,118, 33, +187,189,213, 34, 61, 37, 70, 32,215, 66,249,101,116, 32,151,119, 51, 62,239,231, 55, 19, 74, 47,163,224, 0, 40, 22,207, 18, 85, +236, 38, 96, 55, 52,249,236,146,133,164,247,109, 95,139, 13,224, 84,192,213,199,212,180,153, 24,152, 23,141,193, 64,139,204,201, +198,128,112,149,183,193,158, 62,207,160, 78, 67,244, 13, 56, 28,196, 80, 52,125, 56,143, 88,115, 97, 84, 79, 1, 41,248,154, 76, + 50, 45,112,208, 8,101, 92,177, 16,175, 25,212, 82,158, 54,190,172,187,223,138, 3, 29,132,181,154, 88, 69, 47,201, 61,128, 91, +110,119,227, 14,243, 18,225,168,128, 84,138,208,193, 16, 12,194, 8, 24, 15, 35,159,168, 17,214,223, 7, 99, 0,188,241,245, 2, +160,138, 64,244, 25,212, 27,219,225,161,171,100,252,136,142,100,183,109, 15, 53,110,252,146, 22,123, 49, 31,182, 22,221,202,240, + 80,235,247,184,211, 28,209,183,238, 99,139,194, 15,193, 26,114,153, 24, 5,133,129,125, 70, 72, 55,226, 33,196, 67,247,244,236, +136,227, 77, 0,158,240,217,240,250, 0,108, 32,224,163,202, 70,240,154,235,195, 99,134, 46, 91, 57, 58,104,209,137,168,201,145, + 80,198, 46,166,178, 38,197,129, 44, 3,123, 31, 64,167,102,148,170, 13,169, 96, 85,249,211,103,100, 1,152,158, 47, 2, 84,154, +110,248,243,149, 98,219, 2, 50,128,217,166,230, 61,110,150, 89,125,221,171,149, 8, 42,208,178, 34, 17,226, 97, 45,115, 71,179, +219, 23,240,224, 96,173, 33, 78, 65,163,113, 67,244,145, 70,186,119,129, 85, 65,199,157, 51,194,147,137,125, 27,216, 38, 12, 93, +154, 53,247, 49,184, 83, 64, 62,114,239, 42, 93,171, 54,115, 73,219, 74, 97,175,162,124,208,137,204, 65, 49,245, 57,178, 1, 78, + 61, 90, 71,128, 77,220,246,183,112, 63,232,192,187,202, 0,235, 0,167,135,132,145,117, 66,134, 96,183,235,199,205, 83, 32, 44, +124, 42,234, 1,170,235,204,247, 93, 53,250, 30,175,233,244, 69,220, 79,118, 11, 40, 16,169,177,222,208, 46,160, 69,196, 56,118, +120,122, 23,184,211, 70, 49,137, 98,173,162,228, 80,254, 85,223, 51, 18,119,160,157,201,146,221,127, 78,218,201,155,155, 37,119, +160,211,133, 81, 38,231,147, 41,223, 51,170,235,128, 18,164, 91, 68, 22,237,162,155, 76, 8, 80,165,163, 75,223,165,117, 92, 37, +165,151,115,147,195,213,247,190,218,206, 61,113, 52,216,149, 96,212, 11,207, 0,112,112,209,198, 0, 95,130,206, 52, 36,159,189, + 77,222, 49, 56,239, 16, 57,105, 5,166,218,134,238, 15,215, 99,101, 50, 93, 92,185, 20,181, 84,127,193,226, 9, 93,170,129,221, + 50, 82,220,176,130,128,253, 39, 10,100,227,234,102, 92,229, 84, 2, 33,212, 78, 72,154,228,168,227,218,238, 13,250,236, 38, 41, + 13,155,151,228,245, 30,239, 15,216, 69, 87,114,200,247,227,177,111,132,109,138,115, 53, 89, 16,113, 95, 21, 93, 0,103,113, 29, +147, 85, 69, 87,233,241,165,244,174,179,112,193,167, 88,139,239, 62,157,226, 96, 91,140,142, 58,140,108, 90,182,208, 78, 21,157, + 13,120,230,163, 69, 65,206, 58,132, 68, 16,112,247, 53,169, 76, 53, 81,194,161, 16,122,224,232,244, 18,160,169, 67, 3,147, 97, +202, 3, 80,215,118, 27,177,248, 26,232,103,194,253,218,110, 77,244, 9,126,230,215,183,247,114,118,124, 40,191,248,226, 19,249, + 63,254,243,239, 88,116,254,249,199,107, 98, 87,108, 10,149,113, 98,129,142, 26,168,107,220,119, 48, 26,112, 79,169,231,224,116, + 50,158, 89,189,133, 24,243,195, 82,147,116, 46, 96, 86, 66, 19, 21, 66, 35,129,216,182, 3, 69, 49, 93,201,227,227, 99,249,242, +211,231,114,160,113, 40,164,123,228, 70,254,254,155,159,104,167, 74,100, 60,234,118,172,183,160, 86,135,198, 40,249, 88, 42, 89, +106,109, 14,220,205, 40, 48,111,242,210,233, 89, 80, 95,155,175,150, 60, 83, 0, 2,134,174, 9, 82,184,220, 44, 68, 95,218,237, +146,202,132,136,159, 6,218,202,228,251,243,145, 60,215, 78,181,165, 69, 38, 52,240, 55,152,132,166, 91,130, 39,183,155,190, 60, +121,116,166, 69, 66, 79,222,159,191,151,168, 92,107, 2,157,115,130,194, 81,190, 54, 79,135,218, 88,225,252, 83,252, 70, 43,206, +235,233,154,137,154,171, 52, 40, 11,114,146,152,179, 72,132,223, 6,124, 44,128,231, 64,243, 3, 6, 3,138, 38, 52, 32,152, 88, + 73, 60,208,179,174, 9,238,234,156,215,149, 56,150, 50, 34,127, 29,236, 7,172, 39, 96, 48,115, 51, 53,167, 58, 80, 85, 83, 87, + 47,157,211,172, 75, 8, 72,197,234, 99,182,210, 51,187, 25, 75,191,255, 66,207, 17,164,204, 23,122,166,255, 63,170,222,179, 73, +182,235,202, 18,219,215,165,207,242,254,121, 88, 2, 4, 57,109,200,142, 80,171, 99,102, 66, 49, 17,250, 32,125, 29,253, 30,253, + 42, 73,161, 24, 69,168,165,142, 25,170,155,100,179, 73,130, 32,240,240,124,121,159, 89, 89,233,174,211, 94,107,239,115,235, 17, +221, 32,128,122, 85,149,215,156,115,182, 91,166, 77, 48, 95, 93,117,164,223, 71,161, 49,150, 51,189,159, 44,182, 4, 10, 2, 63, +147,169,141,177,241, 46,239,244, 62,218, 37,198,102, 21, 99,224,246, 74,199,198, 74,121,238,214,171, 41,239, 21, 96, 91, 20,113, +121,148, 56,126, 41,227,123, 66, 82,140,117,141,189, 49,157,207,248,117,156,173, 73, 63,102,135, 5,103, 57, 94, 43,228,212, 71, +186, 79,191, 63,154,200,215, 79, 6, 76, 14, 83,148,241,129,206,198,131, 9, 85,233, 71,214,149,134, 82, 76, 57,159, 3, 71,178, +118, 29, 95,218,223, 85, 53, 51,101,180, 71, 0,254,192,197, 66, 72, 35,146,168,113,145,193, 33,142,138, 6,242,127,179,249,146, +237, 91,108, 56,204,233, 66, 11, 29,106, 89,200,112, 54,245, 5, 83,193,139,243,218,146,180, 24,102, 37,250,231, 81,109, 7, 65, +168,184,241,146, 98, 15, 22,216,232, 80,129, 66, 53,140,246, 3,218,225,116, 10,186,159,113, 12, 64,149, 37,240,102,165,116,157, +115, 33, 56, 8, 70, 0,221,182,169,214, 33,192,190, 63,190,226, 53,206,168, 28,215,226, 33,136, 32, 3,126,184,129,163,108,145, + 33,195,194, 27,153, 95, 90, 5,157, 56,246, 32,246, 57, 81, 25,176, 9, 28, 63, 20, 31, 33,229,171, 70, 58, 54,114,169,210, 0, + 10,128, 90,157,129,181,146,134,123,110,188,240,244, 97,131,213,214, 98, 71, 27, 42,200,179, 62, 84, 50, 53, 43,104,147,174, 45, + 26, 1, 8,202,162,118, 83, 55, 10,241,241, 72,105, 63, 35,174,172,150,231,198,159, 14,188,245, 96,113, 19, 52,225,113, 88,148, +142,192,143,228, 1, 76,105,109,110,251,119,204, 29, 37, 14, 93,154,186,153, 79,134,201, 14, 81,223,105,212, 80, 11, 73,253, 72, + 82, 7, 66,105,128,237, 56,250,217,231,236,145,207,206, 57, 71, 79,109,230,198,182,175, 4, 53,193,210, 51,216,192, 95,143,131, +127,112,131,229, 96, 37,142, 10,110,185,124, 72, 96,220, 42,152,186,252,174, 37,128, 67, 2, 65, 27,246,145, 63,121,186,197,182, +238,255,247,231, 99,125,143, 54,167,159,235, 33, 55,160,220,163,233,199,111, 12,219, 60, 0,177,246,233, 39,206, 68,170,205,170, + 7,116,168,101,110,218,255,176,222,172,171,133, 81,156, 72,203,203,154, 36,249,222, 77, 58, 80, 33, 94,223,153,177, 74,236,218, +223,120, 6,101,189, 36, 8, 52,109,168,161,250, 94, 97, 36, 1,185,213, 86, 76,164, 45,158, 65, 75,147,224,173,172,207,117,181, +167, 65, 20,239,224,245,241, 37, 43,104,142, 27,144,252, 96, 70, 43, 17, 15, 18,170, 17,198,198,223,173,107, 75,176, 48,135,173, +216,173,138,153,152, 34, 81, 21,151,163, 53, 32,105,212, 0, 67,177,134, 16, 84,113,219,148,238,188, 55,164, 53, 59, 17,222, 21, +129, 66, 24,130, 62, 14, 96, 84,206, 6,138,180, 78, 22, 91,230, 14, 6,236,131,214,166, 85, 53, 36,111, 99,151,156, 38, 40,147, + 58,227, 41,247, 57,214,255,210, 29,182, 10,175, 76,209, 6,197,185,128, 4, 27, 58,249, 86,249,207,152,176, 97,198,142,243,198, + 64,154,149,252,112, 58,145,191,253,114, 67,254,219,159,174,229,249,206,138, 30,208,119,124,231, 48,157, 89, 46,187, 76,138,208, +105, 33, 18, 26, 40,255,161,205, 45, 47,181,146,132, 38, 67,202,247, 42, 68, 48,143,198,119,154,236, 45,116, 45,116,101,115,101, +133,221,137,249,162, 50,245,188, 22,196, 79, 38,188,214,136,213,103,151, 28,250,162,130, 68,246,140,134, 70, 97,158, 30,244,216, + 43,253, 89, 60,247,187,201,152, 85, 58,133,133, 92,222,181,114, 71, 46,208, 16,251,155,123, 60, 23,223,159, 93,201,229,120, 38, +219, 27, 3, 6,238, 23, 79,118, 40, 30, 4,133, 62,136, 16, 81,223, 3,107, 36,207,233,176, 73, 0, 30,206,137,178,108, 70,153, + 68,107,195, 96,107, 0,250,228,130,120, 27,116,158,128, 47,192,247,188, 63,187,150,103,219,107,124, 15, 75, 87,104, 68, 77,144, +106,245,219, 74,156,254,137, 36,179,101,182,211, 39,122, 6, 30,108,175,208, 9,115,190,208,130,104,150,211,211, 28,149, 56, 20, +246,126,120, 45,242,253, 15,127,212, 63,155,178,253,143, 4, 62,113,125,145,157,245,117,130, 40, 49,102, 8,138,142,181,143, 93, + 77,232, 42,110, 64,163, 88, 32, 24, 19,181, 8,182, 52,132,123,196, 78,155, 1, 31,119,119,122, 76,124,129, 57, 5,232, 19, 22, +195, 66,143,241, 53,202, 59, 47, 40, 1,157,154,248,140,190,203,227,155,153, 6,249,142, 84,173,154, 60,113, 99, 38, 45,152,208, +194,205, 48,169,205,147,253,174,104,201,160,154,202,219,227,185,124,245, 98,135,239, 97,123,181,103, 50,206,122,158,193,143, 1, + 49, 2,251, 29, 22,168,192, 13,220,107, 81, 64,179,152,165,129, 93,177,135, 7,109, 51,137,186,229, 84,193, 4,184,208, 61,130, + 12, 48,126,231,248,244,142, 24, 42, 4,111, 22, 0, 16,161,209,132, 15,227, 43, 33,131,202,218,247,232, 74, 97,188, 49,153, 78, +205,171, 66,175,251, 78,215, 29,238,117, 99,117, 32, 95, 62,214,245,122,176,222,101,245,140,172, 7,243,224, 68, 15, 25,180,174, + 19, 63,148,179,212,208,220, 8,108,109, 23, 47, 64, 38,156,197, 22, 96,251, 45, 3,202,117,188, 50,198, 13, 34, 0,178,245,173, + 47,143,254,226,105, 74,160, 20, 2, 34,140, 50,114, 15, 48, 8, 34,168,192, 17, 36,129, 10,196,194,228,188,217, 53,157,113, 56, +175,232,230,192,107,163,158,180,183,186, 22,185, 37, 29, 68, 29,150,198,111,198,207, 32, 75, 71,235,220,204,230,151,228,146,150, + 4,231,125,220,250,143, 29, 20, 87, 53,221,136,194,169,116, 81,240,217,214, 7, 62,154,207,220, 89,101, 73,123, 66,163,234, 57, + 8, 16, 96, 47,231,126,227,160, 14,129,166, 40, 31,212,236, 42,169, 26,204, 64, 19,140,235, 7, 26, 30,238,147,252,122,231, 90, + 7,225,138,202, 71, 26, 38, 94, 35, 78,223,179,182, 94,230,148,183, 32, 18, 66,222,117, 94,184,254,188, 80, 47,216, 28,225,172, + 13,135,182, 94,212, 73,154, 25,102,205, 46,140,101,235, 70,159,115, 37, 61,199, 69,196, 62,111, 14, 12,134, 58, 28,231,252,111, +225, 24,196,100, 96, 43, 90,167,214,110,181,107, 84,197,202, 11, 48, 11,153,137, 59,183, 25,154, 59,114,224, 75,210,180,190,203, +162,108,220, 90, 62,182,112, 69,181,219,142, 91,156,201,199,174,109,157, 80,241,225, 97, 94,111,244,185,132, 85, 13, 42,170,216, +159,161, 56,199,159,207,252, 35,189,240,240, 25, 78,139, 55,158, 42, 92,179, 64,235,169, 12, 20,182,173,149, 67,175,147, 16,140, +242,108,111,131, 62,197,175,207,205, 31, 28, 20, 28, 28, 36,216, 3, 89,100, 0,189,161,102,253,173,164, 71,124,195, 98,217, 53, + 51, 13, 61,220,119, 54,134, 68,197,178,154,208, 10, 47,102, 7,166,228,124, 29,129, 21,213, 30, 42,252,159,127,118,160,149,206, +185,124,247,190, 32,192,231, 31,190,249, 68,254,143,127,254, 65,139,239,216,156,174, 98, 91, 55, 72, 82, 41,145,156,197,174,163, + 96,224, 84,236,165, 37,223,103,196,196,130, 84, 55,104, 69,107,160,153,232, 97, 90, 83, 86, 57,179,118,117,232,122,224,186,251, + 61,119,212, 51,118, 65,228, 29,146, 49,112, 34,179, 7,128,232,114, 97, 24, 14, 92, 43,194, 16, 80,225,225,224,133,245, 44,102, +133,156,251, 83,151, 31,250,244, 33,216,155, 33, 76,236, 34, 50, 43,189, 61, 6, 96,188,175, 13, 13,152,120, 38,184, 70,232,180, + 19,229, 11, 42,108,150, 56,167,187,148,139,209,221,131,205,174,235,254,207,150, 30,168, 28,177,142,202, 23, 93,131,201,108, 70, +112, 26, 48, 15, 84,174,211,196, 98,137,162,132,162, 66, 48, 26,185,149, 95,253,208,146,255,225,111,246,136, 40, 71,251,115, 69, + 19,183,171,177,121,202, 67,213,110,103,125, 32, 27, 26, 24,113, 15, 55,154,160,224,190,123,248,250,206, 58,145,206, 96, 56,128, +145, 66, 51,142, 8, 21, 56, 18,149,169,236,239,239,200,139,167, 79,229, 87,191,253,189,172,174,172, 57,232, 47,246, 53,102,193, + 6,231,225,253,100,233,103,165,143, 27,163, 32,123, 45,252,204,204, 41, 82, 53,248,228,208,221, 72,204,158, 22, 99, 75,156, 93, + 64,137,163,203, 7,140, 67, 81,229,242,233,163,182,126, 94,143,221, 23,152,144,188, 63,188,144,163,243, 75,126, 38, 52,211,225, +238,151,143,150, 76, 90,106,253,189, 56,111,193,119, 3,155, 33,136,119, 32,193,186, 95,132, 46,155,225,156, 46,110,108,100,130, + 14,228,227,173, 53,170,146, 65,171, 97, 4,131,170,202,146,254,209,245, 21,207, 44, 26,249,232,239,236,179,240, 41,184,222,215, +245,221, 34,177,133,158, 62,206,119,116, 80,176,207,222,252,248,157,116,234, 57,113, 22, 4, 72, 58,246,233, 90,207,212,247,103, +151,236,244,196, 14,118,230,217, 92,186,231, 68, 98, 9, 93, 44, 15, 66, 47,117, 29,196,124,150, 68,160, 79,177, 14, 53,113,206, + 36,161,134, 9,146,210,191,249,217,207,116, 15,106,130, 62, 48, 37, 69,252,117,124, 57,146, 63,190, 58,150,108,173,195, 46,109, + 43, 53,221,133, 43, 32, 41, 33,227,186, 98,170,157, 56,103,218,117, 74,172, 4, 20,253,128,232,159, 94, 22,242,120,103, 85,214, +187,177,188, 58,186,145,167, 59, 3,158,155, 27,107, 67,222,231, 87,219, 3,253,249,190,124,184, 52,197,197,199,154,224,188, 60, +188, 49, 63,138,200,128,196, 19, 13,242,175,207,198,178,183,210,161,114,221, 88,147, 11,224,117, 62,217,239,112, 93, 35,169,217, +129, 35,233, 34,116, 85, 42,121,119,124,196,209, 12,149,233,216,105,140,200,144, 34,215, 29,109,125, 20, 80,109, 3,139, 98, 31, + 32, 28,156, 92,163,107,204,115,214,209,230, 52,140, 55, 39, 50, 60,192, 54,205, 69, 12,142, 31, 16,161,179,133,121,251,146,186, +164, 31,134,118, 31, 22, 2, 77,219,227,200, 57,217, 5, 3, 53, 54, 1,218, 26,248,105,220,252,146,115, 47,243, 95, 70,149,110, +115, 80,145,187,235,137,161,203,225,214, 4,170, 12,231,114, 75, 30,202, 8,102, 87,227, 43, 46,110,100,248, 84,223,162, 93,235, +162,169,120, 77,145, 45,107,178,224,241, 98, 34,177,222, 92,228,146,174,104, 25, 85, 81,233, 51,125,171,230,176,153,226,180,106, + 0, 87, 9,103,107, 38,213,154,250,188, 24,115,155,112, 24,198, 33,152,251,207,135,150,114,229,165, 33,238, 21,109,186, 42,168, + 16, 57,242,223, 12, 98, 18,175, 50,189,114,116,173,120,252,110,102,120, 78,177, 74, 28, 40, 67, 78,185, 30,252,152,125,165,174, +206, 86,184,164, 45, 54,133,113, 71, 31,252,146, 19, 95, 60,134,250, 55, 41,206,152,124, 97, 3, 13,102, 89,171,209,108,199,243, + 41, 97,188,160,135, 82,236,212, 65, 80,128, 76, 25,206,102,229,228,201, 87, 62,167, 22,123,238, 38, 25, 91,124, 36,193, 91,123, +146, 35, 14, 82,115,227,141,210, 36,114, 27,203,211,128,118, 18,115,247, 74,189,165, 79, 20,253, 98, 78,116,120,248,126,252, 34, + 50, 12, 60,200,132, 57,121,234,247, 65, 35, 24,118, 61,106, 71,199,198, 46,106,210,250, 8, 21, 15,219, 94, 23,223,137,226,134, + 54, 21, 70, 71,165,203,220,226,235,171,154,237,130,198,215, 74,187, 46, 0, 84,105, 96, 95,145,141,149, 30,103,199, 53,147,164, + 88, 46,231,200,232,183,109, 94, 8,148,176,102,233,248, 30, 58, 96, 38,230,248,135,164,116,109,213, 18,224,149, 65,151, 6, 20, +104,241,159,104, 16, 57, 27,221,152,203, 86, 98, 35,159, 34,143,184,254,239,245, 29,255,228,241, 42, 5, 57, 86, 53,168,191, 59, +191, 53,197, 49,159, 57, 67,209, 13,109,195, 27, 40,197, 57, 69, 38,105,121, 27, 21, 1, 14,158,222, 45, 3,234, 45,233, 28, 86, + 49, 8,227, 21,229, 14,238, 99,210, 75, 65, 15,241,118,190, 9,212,148,165, 5, 25,241, 68, 21,123, 29,200,103,236, 99,180, 43, +183,214, 76, 41,110, 85,239,101,103,189, 79, 87, 57,204,233,239,220, 59, 30, 65,103, 21,173,111,221,255, 72, 58,176,183,241,236, + 81,156,148, 52,132,233,178, 2, 7, 19, 98,164,213,244,187,163, 11, 38, 61, 24, 39, 77, 53,248, 67,153,250,250,236,134, 73,130, + 33,239,243, 70,195,194, 42,180,178,209,191, 14, 8,120, 36,226, 7, 91,230,152,118,168, 65, 12,231, 12, 53,249,139, 69,192, 90, +113, 20, 51,119, 85,196, 44,179,253, 51,209,115,251,237,225, 72,182,134,177,188, 60,185,151,237,149, 22,233,108,216,159,215,154, + 92,172,233, 59,143,245,190,128, 98,231, 88, 46, 53,135,196, 76,139, 9,208,135,122,253,204,204, 88,174,110,101, 13, 29, 26,253, +207,171,107, 48, 29, 42,249,143,255,254,191,147,171,203, 83,172, 72, 30,186,169, 96, 20, 80, 55, 50,203, 84,131, 75,173,251,133, +179,175, 69, 60, 80, 78,245, 63,176, 85, 64,125,194,154, 2,205, 45,236,105,125,177, 28, 35,101, 48,252,208,247, 59, 33,221, 76, +247, 85,187,197,119,131, 25,235,209,201,141,108,111, 14,100, 79,171,208,191,254,233, 83,185,208,235,249,243,235, 15, 90,157,174, + 82, 95,129,216, 2,232,209, 87,181,203, 59, 71,126,141, 65, 61,212, 18, 46,179, 76, 53,204, 64, 20, 27,218, 28,107, 1, 84, 88, + 4,225, 53, 77,110, 54,134, 29, 3, 77,234,117,111,233,186, 7,133,115,161,207, 14, 34, 45,167, 55, 35,122,156,143,238,140, 33, +132,132,246,209,206,138,124, 56,187,147, 46, 70, 30,117, 91,190,249,250,103,162,191,130,122,235,253,110, 74, 60, 20,139, 58, 88, + 4,223,142,229, 79,111,143,249, 30,130,229, 51, 94, 37, 42, 87,172, 63, 2,139,233,118,102,231, 40,198, 99,192, 66,225, 37, 33, +209,198, 94,235, 80,113, 17, 82,206, 53,181,221,199,247,186,166,230,119,186, 7,245,250, 7, 96, 54,204,229, 86, 19, 82,236,215, + 99,141, 53,176, 79,125,125,114,203,119,176,149,117, 13,244,170,235, 20,186,237, 67,189,198,104,164,107,168,138, 25,187, 38,243, +137,236,238,236,235,154,138,228, 79,239, 78,229,147,189, 53,221,167, 8,220, 3,174,195, 45, 93, 59,185, 38, 90, 80,166,163,170, +164, 38, 56, 71,103, 35,182,242,177, 95,231,110, 42,134,113, 30,214,241,167,219, 61,185,190, 47,201,237,135,121,210,238,106,151, +166, 65,135,151,119,236, 60,175, 14,250,116, 44, 77,211,146,157,159, 33,227,171,157, 89,112,245, 59,187,186,226, 58, 77,152,240, +104,177,176, 52, 43,238,245,225,138,131,186,245, 28,185,152,153,184, 38, 14, 9,182, 91,150, 54, 15,198, 3,196, 12, 13, 63, 92, +151, 49,219, 2,226,244, 37,108, 90, 84, 10,176,238,157,232, 98,228, 1,142, 22,222,114, 97,114,143,244, 70,118,254,240, 71,115, +247, 32,132,192,223, 61, 95, 52,200,248,165,131,140, 82,151,227,203, 60, 64, 83, 84,164, 50,209, 0,206, 88,128, 46,214, 27, 70, +102,146,187,190, 49,190, 7, 55,181, 32,192, 32,117,186, 26,218, 22, 61,215, 91,215, 3,177,206,154,106, 56, 4,182, 32, 56, 18, + 84,200,164,142, 28, 85, 31,125,132,196, 20,151, 74,181,205,197, 10,192,221,219, 34, 15,194, 12,152,148, 81,204,205,175,183,221, +110,130,122,237,227,130,198, 23,213,149,218, 36,254, 75, 33,159, 96,247, 88,123,245,206, 0, 94, 57, 61, 46,169, 27,103, 54, 19, +142, 40,221,157, 78, 19,128,202,158, 23, 43,249,196,164, 70, 9, 54, 92,212,158,104,148,142, 72,183,119, 65,192,143,223, 25, 2, + 12,233,124,169, 81,190,146, 36,232, 18, 24, 88,195,208,232,133, 43,194,185,203, 25, 90,168, 78,205,138,189,205,250, 80, 29, 99, + 86,191,112,240, 77,202,174, 0,174, 57,140,117,130,180, 47, 70, 54,105,154, 53, 52,192,197,188, 16,121,208, 34,106,172, 95, 3, +146,158, 93, 11, 13, 86,185,211, 12, 77,245,175, 34, 47, 53, 14, 74,125,224,106,139,169,130,217,232, 3,169, 86,238,221,137,212, +186, 5,110, 60,211,161, 40, 68,226,109,205,148,224, 28,172, 39,124,125,216, 75,117,195,247,216, 17,121,127,122, 45,215,211, 37, +133, 57, 48,107, 71, 37, 9,112, 90,167,114, 17,141, 59,173,248,244,208, 99, 59,178,142, 93,206,194, 36, 32,233,241, 96,243, 5, + 25, 80, 19,189,242, 61,225, 66, 73, 62,114,192, 65, 60,211, 8,113, 61,158,112, 13, 35,161,160, 6,252,221,140,135, 48,116,196, +209,242, 47,110,167,114,231, 84,179,132,179,223,164, 1,152,150, 60,108,151,110,227,107,157,155,207,159, 29,200,167, 79,247,184, + 94,209, 18,127,126,176,197,185,101,225, 73,123, 27,215,221,237, 11,154,152,120,237,168,182, 8, 32,210, 67,242,187, 87, 71,250, + 60, 98, 25,141,167, 60,232, 87,183, 6,124, 39,179,241,130,173,218, 82,127,224,244,106,194,238,200,244,232, 86, 19,147,156,244, +173,241,248,142,216, 16, 24,126, 32,209,193,202,192,140, 57, 32,230,209,185,107,116, 42,107,113, 75,225,170,145,209, 44,202,162, +145,128,109,246,205, 71,178,211, 28, 7,214, 21, 65,117,103, 87, 55, 92,203,104,129, 47,220,140,168,223,234, 54, 35, 67,252, 55, +186,134,133,211, 42,241,215, 31, 14,103,242, 15, 95,244,228,251,163, 59, 38, 36, 0, 75,161,203,134,174, 9, 52,180,161, 21, 0, +117, 52, 80, 11,209,130,205,218, 64,111,207, 56,186,184, 27,143, 25,140,150,115, 83,223,235, 38, 37, 5,157,222, 29,157,200, 79, + 62,123, 38, 7,251, 7,242,227,235, 87,141,120, 78, 69,108, 67,155,126, 2, 80, 81,131,234, 95,153,154, 78, 3, 18, 23,204, 96, +209,186,198, 30, 12, 12, 29, 50, 63,160,254,150,216,248,170,198,153,168,123,179,227,157,179,235,241,173, 60,218,221,225,222, 68, + 87, 6, 86,167,184, 38,180,191,145, 64,125,245,201, 1, 89, 10,183,183,119,210,134,160, 85, 91,131, 93,199, 12,103, 48,130,232, +105, 50, 49,115, 27,228,194,147, 37,195, 17,153, 57, 16, 3,242,250, 42,129,145,216,243, 39,215, 99,217,172, 86,248,174, 32,161, +139,231,133,231, 79, 37,203,194, 80,228, 72,248,206,142,174,169,177, 14, 68, 59,228,132, 49,218, 1,128,237,241,238,144,193,141, + 46,133,189,117,233,173,173,201,225,233,137,172,107,144,115, 86, 47, 41,112,159, 60, 57,144, 47,159,239,107, 18,112, 67,186, 33, + 76, 82, 0, 24, 69, 64, 92,194,177, 77,171,241,201,210, 10, 45,130,206,116, 61,153,243,103,198,209, 84, 97,146, 36,156, 41,175, +173, 38, 84, 12,196, 88,245,106,188,148,223,126,119, 46,167,199,175,101, 14, 32,104,219,172,191,159,238,237,200, 47, 62,223,145, +173,123, 67,200, 79,230, 37,249,230, 72,128,240,251,209,233,250,234,160, 35,135,247, 61,189,198,182,140, 39, 71, 46,238,163,239, + 78,218, 76, 62, 14,118, 52,185,157, 85,178, 57, 76, 41, 82,116,125, 87,104,114, 51, 99, 71, 12, 35,148,171,145, 38,130, 0,102, + 10,102,245,133, 38, 70, 45, 77, 22, 18,142,109,254,245,205,149,252, 76, 63,239, 28,186,253,122, 95,199,215,247,148,178, 69,165, + 62,165,108,108,171, 49,173,170,131, 98,106,100,234,118,212, 62,240,216,136,142, 52,253, 4, 90,152,243,247,101,119,107, 75,175, +117, 66,172, 4,177,104, 31, 46, 39,110, 87, 57,243, 42, 29,217,197,178,161,146,132, 54, 53, 43, 59, 7, 88, 45, 89, 29,250,124, + 59, 73,188,125,234,122,205,203,202, 3,150, 9,193,160, 5, 28, 28,205,146, 64,167,113,245, 53,108,255,174,171,138, 73,168,254, + 28, 52, 99,179,252,140, 7, 50, 22,106, 70,195,138,177,101,109, 62,139, 78,211,172,161, 85,113,230, 86, 22,141,101, 99,176,222, +108,183,218,174, 14, 23, 27,160,195,171, 74, 86, 78,164, 22,229, 68,248,253,133,111,184,207,129,209, 50, 12, 28,116, 6, 40,136, +129,128,195,239, 34, 37,224,150, 82, 44,135, 46,104, 45,107,187, 59, 56, 44, 14,178,180, 14,138,137,216, 65,174, 93,212,197, 0, +130, 76,160,120, 64,155,242, 84,252,145, 69,226,199,109,112, 0, 65, 76,188,195,130,177,221,179, 57, 92,133,231, 85, 57,242, 41, + 77, 12,213, 28,116,251,173, 82, 45,154,175,197,141,212,175, 85, 52, 6, 34, 75, 93, 18,215,228,123,255,162,205, 29,187,110,180, +139,104,176,186,171,235,198,128, 70, 92, 32, 40,112,160, 13, 69, 95,217, 28,219,169,102,185, 3,218,204, 17,175,104,168,110,193, +219,153,243, 67,231, 41, 99, 68, 80, 39, 38,178,192,132, 7, 45,100,239,108, 24, 53,198, 0, 64,137,235,221, 3,245,205,214,236, +194,112, 19,214, 85, 17,119,202, 11,237,248,152,235, 14,137,198,138, 6, 3,180,252, 86, 59, 86,153,232,145,161, 75,183,226,218, +120,127,122, 67, 0,206,149,131,169, 74,189,110,184,188, 33, 48,157, 46, 76, 91,189,240,206,200,141,174,171,221, 77, 61,176,186, +149,124, 56, 57,215,131,101, 34,159,233, 33,181,186,210,231, 76, 13, 30,236,120,163,161,251, 16,128, 74,192,137,180, 50, 99, 94, + 80,144, 66,131,105,143,222,201,150,224, 33,192,100,196, 21,212, 90,245,172,203, 87,207, 31,243,190,128,152, 93, 27,154, 14,244, +254,214,154,236,109,174,176,163, 96,157, 14,145,179,203, 91, 38, 54, 27,250,103,122,218,200,248,232, 92,127,102,206, 22,243,205, +245,157,140,230, 57, 17,211, 8, 76,232,122,140,198,247,228,212, 99,102, 57,163,146,153,153,223, 32,129, 65,187, 48,114,149,189, +218,215, 5,173,122,147,136,115,118,226, 12,230,182,199,112, 31,133,169,132, 24,211,162,182,228, 50,117, 53,196,208,213, 67,119, + 64, 28,101,140,245,148,147,162,104, 99,148, 90, 28,252, 89, 27, 30, 37,120, 3,132, 22,190, 4, 99, 37, 84,224,100, 60,152,198, + 66,232,220, 88, 81,144, 62,112,219,163,218,218,191,150, 91,201,225, 45, 62,107, 40,192, 22,162,165,190,162,193, 3,109,102, 96, + 11,238, 70, 99, 57,130,218, 27,248,189, 56,216,121,253, 9,171, 65,116,249,114,125, 95,253,205,190,172,233,249,118,167, 9, 24, + 90,191,235, 43,107,114,122,118, 65, 93,254, 71,143, 30,203,119, 63,252,153,221, 62,220, 63, 62, 23, 64, 65,240,199,251, 61,116, + 32, 38, 50,243,226, 5,114,173,149, 59, 22,146, 47, 30,155,154,159, 89,167, 26,189,139,142,129, 38, 98,192,132, 21, 10,112,216, +107,247,148,148,182,106,182, 75,181, 67,147, 9, 29, 77,230,242,228,209,150,124,121,251, 88,254,233,215,223, 74,189,180, 14, 6, +175, 3,137, 52,193,167,117, 67, 77,166,253, 45,138, 56, 87, 80, 4,200,114,107,125,141,103, 42,230,185,226, 45,255,195,139,107, + 13,176,123,156, 9,227,154,219,157, 33,247, 69,233,122, 3, 65,163, 3,221,134,204, 5,192,110, 53, 25, 4,158, 2,149,246,250, +106, 79,110, 70, 51, 57,185,184,212, 0,127,174,123,226, 78,174,122, 3,235,128,234,130,157, 76, 52, 9,185, 57,227,218,199,122, +248,226,201,174,116, 32,209, 26,213,172,124,161,189,112,113, 51, 49,192,160,143,139,192,196, 64, 70,112, 63, 51, 87, 60,172, 41, +236, 33,140,236,128, 19,194,152, 1,239,231,209,163,175, 77,119, 62,137, 88,209, 35,177,169,168, 21,176,148,221,181, 62,215,189, + 49, 27,108,141,125,178, 59,224,249, 0,188, 2,198,197, 16, 18,130,143,195,103,187, 90,137, 35, 89,215,179,125, 79,147,158, 87, +135, 39,114,176, 93,202,135,227,115,217,254,234,169, 60,210,202,187,164,243,103, 33,199,154,236, 98, 61,181, 29,239,114,118, 61, +227, 26, 62,191,157,177,229,222,114,154,242, 63,126,123, 66, 16, 43,158, 61,156,245,238,167, 37,147, 43,226, 77,114, 77, 80,181, + 58, 7, 38,228,234,230,150, 9, 76,167,101,127, 35,177, 31,221, 77,200,158,218, 94, 95,215, 64,190,201,119,135,239, 71,140,218, +209,255,238,245,123, 90,209,223, 73,138,121, 13,173, 68,163,212,221,184, 92, 48, 38,112,213,179, 7,208,147, 89,247,197, 13, 95, + 61,245,214, 49,199,150, 13, 77,201, 54,183,209,154,162, 70, 76, 6, 85, 67,233,186,225,248,247,194, 93,225,184,216, 17, 32, 92, + 51, 61,246,182,121, 16,132,161,187,147,183, 78,241, 53,131,253, 7,207,229,136, 25, 95, 16,187, 9,194,250, 4,124,165,102, 81, +215,136,225, 68, 15,115,196, 16,192, 88,121, 74, 48,172,241, 3,161, 9,232,122,111,153, 31,202,129, 63, 31, 42, 9,228,110, 64, + 78, 58,104,200, 42,104, 75, 40,240, 51,214,250,125,168, 64,177, 98,178, 44,107, 2, 82,237,246,131, 69, 94, 60,252,172,207,160, +241,125, 1, 20,196, 68,161,178, 86,170, 51,173,205, 78, 54, 88,205, 58,205,204, 20,236, 93,154,221, 91,152,141,211, 85,240, 53, +119,214, 64,232, 69, 32,120, 46,102, 83,111, 99, 71,141,112, 75, 64,178, 67, 35,222,186, 27, 69, 83,145, 7,250,152,153,254,216, +156,219,196,136, 12, 36, 88,184,170,158, 17,144,236,185, 33,184,227,239, 44,171,154, 81, 3,159, 65,110, 24,131, 5, 3, 74,217, +100, 82,181,143, 48,248,185, 14, 96, 12,193, 63, 36, 38,129, 82,105,137,162, 37,103,176,130,173, 67,114,227, 7,125,112,127, 11, +110,128,198,156,168, 73, 45,130,148,231, 6, 0, 52,160, 85,105, 48, 43,242,150,188, 61,189, 37,218,123,186,116, 65,159,212,148, +247,230, 26, 80,177,193, 34,215,183, 14,244, 74, 32,143,137, 74,175, 52, 80,116, 50, 42,119, 1,127,210,209,131,227,209,206,170, + 12,134,125,162,200,241,239,231, 87,119,100, 90, 0, 92,115,117,115, 47, 95,188,216,149,231,251, 27,108, 11, 66,151, 92, 28, 57, +125,161, 85, 18, 2, 14, 14, 54,180,109, 23,250,172,175,111,239,153, 12,124,184,154,242, 30,127,243,234,212,128,115,206,160,152, +207,204, 5, 14, 73, 7, 85,232, 4,247,144, 59,152,200, 25,192, 81,236, 58,222, 70,217,163,138, 86,106, 98, 68, 20, 17, 98, 34, +103, 45,120,160,207,161, 80,136,217,254,146,170,106, 9,187, 44, 73,233, 35, 58, 51,206,226,186,195, 94,238, 68, 22,108,240,140, + 80,249,227,105, 15,134, 61, 38, 79,211,123, 83, 81,180, 64,100,135, 50,168,127,149, 43, 52,226, 72, 0,152,142,142, 93,101,201, +209, 83,225,154, 5, 92,227,245,131,162, 37,246, 26, 80,244,116, 59, 91, 24, 71, 31,104,107,116,234,128,139, 48,127,235,210,157, +252, 12,231, 1, 23, 43,204,202,191, 63, 28,177, 42, 2, 64, 10,106,140,144, 28,221, 44, 77,167, 98,230,160, 35, 84, 94, 61,208, + 89, 11,211,218,168, 75,211, 45,191, 27,221,113,239, 21, 14,210, 69, 85, 31,213, 41, 15,217, 3,173,254,158, 61,121, 42,111,223, +189,166,182, 66,193, 0, 60,149, 94,110,118,169,232,190,128,163, 28, 76,132,112,141, 25,217, 43,214,187, 0,131,160,128, 30, 83, + 21,132,186, 44, 97,175,124,172, 89,185,105, 72, 26, 39,238,197, 81,105,213,190,203,181,135,160,105,186,236, 41, 65,198,159, 63, +123, 42, 63, 30,158,185,244, 41, 76, 63,186,146,107,178,137,164, 11,107,131,163,202, 52,118,154,163, 57,139,161,144,187,212,251, +219, 28, 14,228,201,246,134,254,251, 88,206,244,253,224, 26, 64, 69,196,126, 93,148,169, 6,230, 75,153, 78,239, 13, 8, 91, 27, + 29,183, 11,108, 7, 76,112,162, 22, 71,174,215, 26,212,137,241,209, 51, 12,162, 45, 24, 27,244,245,221,124,251,195, 75,189,159, + 57, 43,102,204,231,145, 44,129,155, 13,180, 6,132,119,240,236,127,120,127, 42,127,120,117,232,254, 28,149, 87,170, 21,247, 11, + 71,169, 20, 43, 51,160, 29,146, 15,128, 73, 89,248, 85,236, 27,154,180,117, 17,170,250,140,221,131, 71,187,219,188,111, 36,170, + 16,186,194,189,254,227,183,167,242,159,255,225, 83,249,215, 31, 79,228,205,201, 72,206,175, 39,250,129, 93,158, 15,216,115,232, + 74,215,148, 93,134, 67, 33,180,236,239, 57, 46,128, 32, 15, 92,219,238, 22,153,236,239,180, 25,172,191,250,108, 95,254, 22,193, + 84,131,248, 63,254,203,119,242, 70,131,125, 53,183,132, 23, 29, 53, 36,194, 56, 75, 32,206, 67,199, 72,125, 79,127,255,249, 38, + 43,243, 87,151, 83,185,173,108, 63,161, 77, 31, 80,239,121,148,186, 19,159,190,151,235, 91, 77,142, 86, 26,209, 54, 2,147, 99, +123,246, 0, 33, 34,153, 1,160,155,241, 82,227,225,217,249,133,225,164,130,246, 56, 15,231,170,126, 56, 24,163,143, 90,195,174, +108, 19,130,146, 29,206,241, 67,117, 27, 63,180,214, 66, 48, 11,190,231,212, 42,119,224, 23,126, 55,245,166,189, 77, 86,122, 43, +156, 21,185, 75,199, 6,165,161,202, 13, 7,240, 50, 24, 76,196, 4, 74,130, 10, 92,246,209,124, 57,240,190,131, 38,123, 80,148, + 99,171,127, 97,217, 76,152, 77, 91,112,170,233, 60, 82,123, 21, 16,125,100,192, 18, 0,109, 81, 92, 55, 85,125, 72,104,194,223, +108, 87,135, 96, 17,168,101,206,163,181,196,160,106,108, 78,115,167, 48,196,141,232,137,115,111,107,105,208,221,101,211,162, 54, + 87,183,194,171,149, 9,231, 43, 73,211,141, 64,171, 21, 23,183,168, 23,110, 18, 99,237,119, 28,172, 31,107,213, 71,141,159,178, +153, 94, 68, 46, 68, 81,123,101,141, 31, 6,127, 58,114,147,234,194,187, 40, 13,255,188, 44,254, 66, 99, 59, 0, 4, 43,239,149, +187,126,160,148,249,162, 1, 2,154,134,190,225, 18, 72, 73,115, 13,253,210,129,129,102,202,243,240, 12,108,189, 85, 77, 82, 21, + 40,103,248, 63, 28, 30, 97,100,144,186, 19, 94,176,180,148,232, 33,121, 12,129, 62,246,107,144,143,196,139, 2, 79,190,116, 33, + 7, 50, 53,138,188,145,155,157,235,245,143,116,195, 63,217, 89,145,193, 78, 87,222,159, 89,235, 17, 89,111, 71,175, 19,238, 79, +109, 71,219,226,251, 17,172,247, 33,118, 1,208,152, 30, 68,143,119,215,137, 54,141,226,196, 19,175, 74,214,215,135, 4,149,193, +243,121,161, 7, 93,162,135,216,218,154, 86, 65,173,158, 86, 25,247,114,161,149, 0,144,230,224,250,190,190,184,105,192,149,152, +167, 17,171, 82, 5,148,107,101,109, 82, 87,217, 43,104, 52, 95,123,119,202,158, 19,174,135,135,149,247,119,130,209, 18, 16,219, +243,133,127,111, 98,233, 85,234,248, 4,128, 87, 31,164,141,141,165, 32, 28,153, 37,244,125, 0, 29,178,163, 7,121, 59,169, 56, + 94,232, 67,108, 71, 12,136,135, 42, 3,215, 65,150, 11,128, 86,179,185,131,155, 76,247,129, 8, 93,253, 58,102,236, 8,142, 52, + 64, 2,130,183,109, 70, 41,119,179, 9,159,253,124, 97, 76, 4,122,143,187, 75, 91, 73, 28, 69,206,132,157,186, 7, 1, 71,225, + 65,140,234, 92,208, 49,208,253,128,170,133,212,198,192, 97,240,185, 59, 18,199,210,253, 14, 30,192,151,194, 14, 14, 90,238,223, + 30,149,242,211,253,182,188, 60,157,176,194,134, 82,220,140, 52,212, 54,217, 34,248,190, 25, 10, 16,206,213,219,174,147, 95,154, +169, 78,110, 18, 80, 45,111,143,223, 79, 64,197,211,243, 68,147,180,110,191, 47, 63,255,233, 87,114,120,244,206, 70, 65,100,133, + 8,157,218,102,121, 76, 42, 45,175, 7,103, 86, 36,126, 6, 90,226, 11,230,130, 21, 61,102,202,100,231,152, 37,246, 72,137,131, +154, 88,228,194, 93,208,100,191,209, 74, 12, 63, 3, 39,175,151,111,143,101,216,127,161,251, 37,162, 40,213,227,189, 13, 57, 60, +191,177,159, 75, 76,164, 11,235,164,246, 46, 27,192,208,185,143,239, 58, 45,151, 68,246, 32,177, 64, 32, 5, 37,112, 94,184,225, +146,217,203, 46,139,148, 10,125,195,118, 36,235, 90,173, 15,122, 25,117, 19,200, 56,209,213,177,181,106,116, 60,188, 79,124, 13, + 64, 61,188,127, 40,166, 33, 1,219,219,212,228,224,203,231, 4, 87, 34, 25, 66,139, 31,230, 47, 72,200,164, 50,117,204,247,151, + 55, 52, 97, 49,231, 75,171,244,113, 38,101, 73,244,224, 52, 23,151, 68,166, 7,154,109, 66,236, 76,237,172, 9,216,209, 36, 4, +175, 37, 73, 75,159, 5, 82,217,158,244,182,215,100,103,173, 43,143,119,250,250,238,204,157,241,183, 47, 79,229,255,252,221,177, +244, 50,195, 27,128,171,254,227,201,173,157, 65,144,192,206, 97, 95,123, 37,173,238, 58,229,148,251,113, 65, 28, 1, 24, 2,219, +107,171,242,225,252, 90,214,135, 59,242,249,147, 85,121,125, 50,215,223,175,235,101,181, 45, 95,125,250,132,207,242,119,223, 31, +178, 74,223, 24,152,202, 38, 18,108,140, 19,160, 50, 7, 90,222,165, 62,151,207, 14, 86,228,215,175,175, 1,142,231,108,125, 9, + 75,215,110,198,206, 75,143,200,246, 25,227, 27,192,142, 89,226,157, 98, 98,124,240,220,211, 70,136, 13,186,240,247,250,220, 95, + 77,223,106,114,185,203,255,102, 80,143,154,202, 84, 55,121,244, 32,125, 42, 78, 31,170, 93, 48,196,164, 71,235, 38,112, 87, 94, +185, 62,112, 47,173, 66,140, 35,115, 25, 10,134, 13, 20, 1, 41,139,230,160,109, 92,192,106,227, 75, 70, 31, 5,163,196,147,133, + 58,182, 15,137, 60, 80, 62, 80,168, 98, 63,252, 31, 68,108,236,107,166,245, 91,133, 74, 51, 4, 1, 8,102,204, 12, 4, 99,162, + 36,137,207,174,115,167, 50,101,244,120, 15,173,238, 16,212, 57,142,168,165, 81,199,171, 67,245, 43,150,148,224,144,167, 59, 79, +167,211,152,152,240, 62,113, 13,121,213,108, 22,180,224,172,178, 40,216,110,108,121, 54,102,210,159, 41, 1,123,105,112,189,115, + 61,125,203,186, 82,191,223, 7,174,118,211, 18,103, 43,191,114,225, 9,235, 20,196, 31,217,154, 6,241,138,186, 52,100, 58, 99, +173,131,213,226,244, 65, 52, 70, 92,130, 53, 36, 67,145, 39, 36,214,166,139,220,118, 54,117,176, 96,217,152,165,112, 30, 42, 15, +129, 57,241,251, 14,129,124,233,210,143,174,226,218, 24,120, 84,101,244,145, 84,169,251,174,199,166, 42, 88,125, 20,220, 9, 84, +252,200,103, 61,106,106,205, 70,224,176,233,200, 68, 62,198, 48, 97, 28,115,146, 35,114,214,141,128, 2, 64,174, 73, 36, 0,208, + 3,246,131, 72,230, 22,173, 73, 47,110,238,228,237,162, 36,152,197, 93, 10,152,132, 34,208,162,189,149, 59, 74, 31,213,197,120, + 97,250,223,152, 47,255,128,131, 0, 99,147,210, 68, 98,106,177, 14, 84, 64,232,194,234,175, 36, 55,124, 65, 74,205,140,154,205, + 21,231,110,148, 87,110,199,158, 84, 25, 26,191,114,199, 40,171,214,224, 53,189,244,123,181,196,140,220,245,202,148, 26, 43,126, + 31,238,177,195,175, 83, 62,179,101, 89, 60,164, 61, 97, 25,139, 96, 79, 71, 65,253,108,162,224,201, 88,136, 88, 57,182,124,180, +133,123, 65, 37,138, 22,231,197, 13,132,102, 42,182,120,241,140, 46,175,167, 90,137,218, 44, 50,118,111, 7,250,183,107, 80,199, +125, 66,114, 20,149, 61,237,106, 89, 45,164,102, 91,171,215,120, 77,227,142, 17, 21,219,210,212,116, 30,152, 12,187,149, 37,233, + 58,189,129,190,167,194,218,204,101,174,251,180,118, 73,228,216,185,199,165,107, 24, 72,163,102, 25, 18, 2, 36,183, 72, 8, 90, +156,173,154, 79,121,213, 8, 86, 89,151,206,164, 77,109,172, 7,193,146,227,219, 66,254,251, 47, 87,137, 50, 70, 5, 5,212,251, +213,120,206, 67,188,156, 46, 40, 51, 10,207,241,138,180, 74, 84,160, 37, 57,196,156, 42,210,203,123, 41,237,110,135,138,109,232, +112, 64,159,101, 52, 30,177, 13, 63,213, 3,255,139,167,219,242,237,155, 11,158,105,248,153,235,201,130, 84, 56,160,207, 23,222, +125,136, 92, 89, 51,118,122, 89, 81, 58,229, 53, 50,206,184,177, 93, 18,158,224,156,185,203,194, 37,134, 35, 34,156, 99,120, 35, +232, 59, 7,242,252,120, 60,225, 33, 14,186, 46,186, 65, 56,159,119,182,134,242,217,147, 77,121,245,193,208,240,101,108, 94,237, +192, 10, 64,162,154, 73, 84,100,236, 34,240,192, 19,247, 48,199,249, 96, 5, 67, 37, 27,240, 16,119, 59,220, 41,174, 91, 19,158, +167, 91,187,242, 72,127,119,192, 33, 5,100, 58,188, 34,118,215,183,229,213,201, 21,169,133,171,253, 1, 55, 40, 52, 30,182,215, + 18, 57,189,157,145,209,116,240,228,153,236,227,158,139, 5,247, 22, 64,101, 96,154,176,107,167,239,232,153, 38,185, 71,231, 87, +114,118,117,205, 46,128, 81,230, 44, 33, 33, 69, 18, 90, 8, 16, 57,202, 98,182,174,103,185, 1,153,177,198,159,237,175, 73,187, +211,230,125,130, 17,112, 61, 46,100,115,181,101,123,244,237,133,188, 62,186,145, 51,221,227,139,249, 29,223, 3,252, 14, 48, 63, + 31, 3,132, 61, 89, 18, 32, 26,187,191,199,250,160, 37,103,108,151, 87,210, 7,181, 17, 82,183,167,135,186, 22, 18,253,157, 43, +154,228, 14,164,219, 45,244,123, 52,105, 47,175,228, 39, 79,106,249,243,187, 74, 94,236, 26,163,100,127,123,139,156,250,124,113, +198,181, 8,167,195, 39,155, 93,254,126,186,222,233, 37,119, 6, 3,121,250,120, 85,254,147, 6,247,181,213, 46,247,213, 59, 45, + 40,222,158,142, 40, 58, 5, 44, 91,135,250, 26, 88,243, 0,155,186,126,133,152,192, 80,143,244,234, 9, 13,165,246,119,182,117, +221,246,153, 8, 38,206, 20,194,121,147, 50, 96,250, 60, 52, 28,150,117, 29, 53, 2, 33, 65, 24,132, 45, 71,182,160, 10,210,107, + 2,223,155, 90,205, 69,228,136,231,168, 49, 95,168, 99,147, 69,101,123, 29, 1,169,140, 73,246,111,212,233, 36,110, 42,124,114, +182,131, 71,123, 29, 53,149,109, 8, 0, 1, 84, 99, 49, 45,242,121,121,222, 24,112, 44,242,162, 57, 76, 17, 88,104, 24,146,154, + 69, 38,230,201,227,201,157,183,141, 35,159, 49,151,110,229,186,116,176, 78, 64,163,103,110,206, 82,154, 8, 68, 18,187, 38,183, + 85, 6, 65,212, 37,224, 8, 82,231,144,227, 16,104,197, 15, 26,243,193,169, 14,135, 81, 75, 95, 80,226, 32, 51, 86,213,112, 74, +147, 48,191,143,154,251,105,132, 34,236,201, 72,220,202,152, 8,192,167, 59, 73,147,191,176,156,125,144,234, 53,218, 89, 81,154, +160, 77, 67, 21,243, 54,124, 48,141,249, 88,132, 34, 10, 13,248, 48, 66, 73, 31,232, 96, 54,146, 48,244,113, 89, 60,184,155,133, +145, 65, 0,194,133,113, 72,112,186, 99, 85,204, 4, 47,109, 50,235,134, 38,208,232,129,153, 0, 78,210,110, 53, 96, 68,235, 2, + 89, 7, 34,140, 92, 2,138, 61, 24,244, 4,109,130, 40,204, 23,156, 62, 24,127, 20,248, 99,247, 37,160,122, 29,212,198, 96,187, +154,166, 13, 35,162,114, 9, 93, 42,197, 97, 78, 89,216,154,154, 37, 70,253, 57,190,157,155, 40,146, 68, 13,151,221, 52,175, 77, + 94,179, 69,213,175,204, 13, 21,150, 54, 6,137,205,168, 39, 40,239, 5, 69,186, 96,149, 26, 57,120,174,114,133, 67,218,236, 66, +220, 98,186,224,122, 0, 39,144,137, 45, 48, 11,149, 41,173, 37,137,189, 29, 4,157,192, 58,105,123, 53, 14,109, 2,218, 69,138, +233,177, 63,222, 89, 99,181,147, 18,155, 96,206, 80,179,185,117,112,192, 71,103,178, 0, 33, 21,206,234,204,173, 14, 21,233,164, +101, 18,203,152,163, 47,151, 54,218, 24,235, 51,192, 51,122,178,187, 97,239, 67, 19, 93, 92,195,217,245, 45, 15, 24, 28,168,221, +174,177, 34,224,155, 14,181,171, 46,187, 67, 86,177,165,250,114, 22,154, 4,245,233,147, 91,201, 68, 3, 78, 62,159, 51,144,192, +225, 14,201,164,120,133, 10, 29, 8,142, 76, 82, 79, 86,216,114,207,173, 10,115,115,159,197,178,114,235,217,164,209,161, 8,103, + 81, 85, 37,134,232,174,141,182, 70,192,102, 29,125,132,211,137,136,166, 79, 83, 19,202,193,191,119, 49,106,210, 36,232,110, 25, +203, 23,122,160,254,250,135, 43,217, 92,233,176,221,138,179, 99, 78,220,131, 41,245,205,150,250, 94,193, 45,110,119,137, 49, 72, +178,146,140,156,149, 97,159, 35,136,110,183,205,206, 70, 39, 3,181, 46,151,147,211, 51,206,175,163,214,134,126,254, 25,189,189, + 97,254,178,191, 49,208,223, 11, 65, 29, 3,193, 5, 39, 64,234,226, 39,137,119, 96, 32, 74, 21,188,228,173, 99,199,113, 83,110, + 32,101,218, 87, 47,157, 99,131,132, 63,109,203,249,104, 44,255,246,242, 61,117,214,193,175,191,161,169, 74,205,247, 5,252,196, +179, 71, 59,114,121, 11, 27,210,169,143,161, 34, 79,206,151, 60, 71,122, 89,151,247,140,253,179, 62,236, 17,168,217,139, 77,114, + 21,237,114,128, 70, 23,190,254,104, 9,171, 63,255,254,114, 36, 7,235,125, 6,114, 92,215, 4,226, 44,209, 76,158,110, 15,169, + 62,247,201,193,150,124,184,184,145, 59, 93,127,144,130, 61,187,158,200,222,122,143,227,142, 83,173, 90,223,157, 93,201,232,230, +156,179,148,255,252, 63,255, 79,178,178,210,149,187,241, 13, 71, 39,131,142,198, 9, 77, 78,126,242,124,151, 63,119, 51,158,208, +145,112,111,189, 75,249, 99, 3, 0, 11, 65,109,155, 90,253, 2,100,120,126,103,192, 54,182,162,225, 46, 26,215, 12,116,227, 73, +205,107, 63, 61,159, 49,113,154,221,223,107,110,221,163,134,251,155, 15, 31, 8,254,189,215,119,243,203, 47, 14,168, 13,127,120, + 57, 97,144, 39, 59, 56,174,216, 77,193, 61,110, 15, 53,209,173, 22,250,174, 55,201, 32, 65, 33,245,120,111, 71,142, 47, 46,201, +104, 64, 18,249,119, 63,251, 70, 62, 64, 18,182, 85,105,144,111,105,178,152,112, 54,254,245,167,143,229,115,173,196,255,237,229, + 9, 29, 24,209, 33,160, 62, 11,168,151,121, 45,223,255,120, 46,135, 23, 19, 77, 14,103,114,120,125, 47, 59,186, 78,166, 75, 19, + 4,219, 95,107,203,209,104,201,196,153, 14,156,238,232, 25,180, 53, 88, 84,210,177,176, 36,182,228, 94,239,111, 99,117, 77,158, + 30,236, 49,193, 2,118,128,198, 47,177, 7, 70, 30, 40, 12,170, 15,138, 94,129,198, 20,230,207,102,202,144,122, 33,111,129, 2, + 8, 97,234,248,178, 58, 50,238,106,226,194, 33, 56, 80, 23,148,129, 76,154,196,192, 54, 93,225,135,225, 3, 93,206, 12, 30, 82, +190,160,160, 45, 31, 52,219,165,126,240, 80,110,145,162, 85, 55, 96,188,202, 43,195, 48,235, 95, 58,129, 31, 73, 65,191,223,103, +219, 46,184,232, 36,222,170,251, 72,180,222, 66,168,203,209,214,174,215, 27, 0,115,165,107, 86,219,140,188,106,146,158, 7,110, +247, 67, 48,180,118,122,212,124,157,223,155,198,206,235,172, 26,241,152, 86,154,121, 98,240, 0,112, 51,111, 95, 11, 90,168,188, +192,193,141,168,199,108, 63,183,152, 46, 31, 42,105,231,116, 7, 5,184,210,179,234, 80,169,164, 31,185,229, 89, 64,126, 64,251, + 55,127,187,104, 62, 2,138, 1,202,236, 64,161,114,155,187, 35,209,166,213, 63,165,116,237,118, 19, 0,170, 62, 26, 9, 72, 3, + 12, 76,146, 32,136, 83, 55,115, 64,241,119, 24,244, 0,106,247,251, 14, 0,190,196, 93,151,240,207,132, 22,143,201, 71, 50,178, +246, 23,178,211, 40, 10, 10,135,113, 67,113, 91, 16,244, 85, 52, 12,133,208, 13,169,156, 59,159,250,179,170,235,135, 68, 38,118, + 21,186,212, 1,135,219, 43,109,174,141, 52, 54,121, 71,113,108, 8, 49, 14,133,143, 26, 98,163,210, 65, 60,100,161,149,250, 66, + 15,250, 74, 30,172, 63, 17, 40,241, 44,144, 65,163,186, 26,246, 58,205,245, 32,216,193, 21, 11,150,152,121,106, 21, 78,218, 51, +153, 74, 84,184, 61,180,247,105, 57,107, 93,163,216,125,198,103,145,173, 19, 0,183, 34, 10, 78, 44,153, 36, 23,156, 39,182,244, +176,203, 53,179,191, 98,176, 14, 65,175, 77,249,226,152, 65,140,168,227, 52,166,176,210,130,166, 61,198, 72, 0,226, 30, 45,248, + 78,203,120,238,157,142,183,153,171,130,243, 75,200,153, 66,221,107,233,170,128,137, 4,127,132, 74, 43,254, 84,238,139,220, 81, +219, 57,219,145, 64, 35,247,244,122,174, 23, 51, 77, 90,244,103,199, 29, 23,166,202,249,103,250,191, 90, 69,101,141, 67, 25, 58, + 64, 85,105,243, 27,178, 26, 2,219, 6,107, 48,203,140,113, 26,155, 84,104,171, 72,154,238,147,177, 30, 35, 7,192, 6,207,136, +184,209, 80, 8, 52, 75, 36, 53,248,207, 97,217, 39, 98, 24,201, 2,102,216,134, 21, 18,249,213,183, 39,242,191,252,253, 99,121, +167, 1, 7, 56, 10, 72, 2,227,175,141,245, 21,233,106,197, 3,144, 35, 2,197,198,218,128, 2, 31, 16,170,129, 95, 58,246, 9, +232,100, 64,155,211,178, 20,123, 82,223,217,134, 38, 6,151,247, 21,207,190,189,253, 39,242,230,240,216,198, 76,250, 72,129,124, + 70, 81,161,217, 1, 19,251, 5, 53,215, 77,188,138,163,205,196, 84, 1,115, 90, 0, 11,241, 24,211, 25, 18, 82,147, 88, 14, 93, +201,152,231,114, 68, 85,188,131,173, 53,189,166, 11,153,220,223,177, 75, 8,112, 29,152, 7,168,124,209,226,133, 2, 25,214,193, +254,246, 58,219,221,212, 33,240,209, 16,174, 25,247,155, 87, 54, 87,103,119,173,138,217,101, 65,144,194,117, 93, 79,230,242,205, +139, 3,178,140,222, 95, 0, 47, 98,222, 8,240, 7,192,247,173, 96,100, 80, 39, 92,199, 72, 72, 22,148,229,157, 83,127, 0, 2, + 74,243,209,189,158,121, 29,118,165, 32, 5, 11, 43, 86, 48, 36, 94,190,122, 43,197, 92, 3,253,222, 99,173,156, 47,228,211,206, + 39, 18,119,183,228,191,252,183,255, 75,247,212,152, 52, 55,210,240,208,205,210,228,234,111,191,120,172, 63,127,107,166, 52,240, + 71,159,218, 25,142, 17,208,194,129,167,236, 24,196,134, 67,129,250, 46,246, 53, 70, 79, 0,139,129, 6, 8,214, 10,246,233,215, + 95,252, 84,159,233,140,221, 13, 40, 49,118,178,154, 70, 68, 95, 62, 90,147,223,191,186, 32,197,237, 96,189, 67,209, 37,232, 21, +240,204,213,107,249,112,189,212,231, 49,146,245,126, 75,159,115, 44,111,143,144,176,117, 32, 25, 35,109, 93,150, 71,167, 39,242, +221, 52,215,107,221,209,235, 25,201,105,213,149, 71, 91, 61,226,101,186,173, 14, 19,172, 87,199,215,178,187,214,161,165,241,249, +248,146,192,214,181, 46, 70, 50,185, 60,223, 91,145,127,250,215,247,242,254,252,142,221, 25,176, 2,206,224, 69,144,232,254,174, +139,102,244, 73,121, 97, 8, 46,109,174,203,230,218, 26, 99,234, 68, 19,152,142,254,115,127,107,139,239, 18,255,189, 44,172,120, + 70, 1,146, 46, 92,155,155,116, 53,183,176, 12, 62,211, 1, 94, 31, 90,173, 70, 12, 54, 23,173,212,157,150, 66,208,106, 73, 64, +160, 90, 37,155, 23, 15,173,221,194,165,103, 35,135,117, 89,123,187,126,176,221, 68,240,135,243, 14, 42,217, 78,183,153,165,133, +182, 58,109, 18, 63,106,169,219, 56, 32,120, 4, 71, 13, 85, 13,115, 41, 30,168, 64,193,151,105,227,220, 21,180,236,107,121, 56, +224, 3, 32, 48, 74,196, 3,151,205, 50,141,226,101, 34, 8,102, 77, 88,122,149,254,160,132, 38,101,160,113, 21, 86,125,122, 43, +184, 44,130,153, 77,237,130, 50, 6,126,139,189,162, 6,159,152,103,168,207,177, 43, 87,122, 50,234, 77,212, 4,192,202, 21,149, +196,199, 30,180,114,141, 12,193, 31,178,182,248,227, 46, 71, 18, 55,250,232,129,219, 78,116,181,119, 26,154,228, 67, 76,108,164, +145, 93, 23,167,211,132,246,116, 97,154,227, 89,150, 52,137, 0,178, 67,208,149,168,190, 86,155,228, 33,178,249,224,131,110,215, + 45,141, 9, 80,234,188,210,134, 21,209,216,102,214,141, 89, 77,225,220, 75, 19,192,137, 57,147, 69,183, 8, 7,167,205,137,173, + 74, 39,104, 42,149, 70, 93,206,204, 93,114, 74, 82, 26,151,217,170,244,229,194, 84,205,146, 40,114, 42,101, 97,128,163, 58,106, +104, 78,102,255,155, 51,201, 65,230, 15,250,208,152,130, 30,246,120,250,157,132,179, 57, 60,231,101,102,130, 63,145,163,175,201, + 49,206, 32,221, 9,233,238, 22,131, 41,190,150,145, 74,214,225,218, 65,139,112,221,185,219,184, 6, 28, 62, 97, 46, 28, 92,253, + 0,144, 49, 0,163,217, 76,222,207, 77,100, 9,213, 46,184,234,232,226, 68,174,122,136,119,195,229,229, 20,175, 96,131, 89,148, + 75,182,130,209, 26,165,209, 13,245,225,225,154,150,176,213,139,235,194,254, 68,135,234,102,188, 32, 2, 28,127,158,248, 53,209, +207, 89,131, 86,233,215,128,165,103,250, 17, 57,131,208,176, 59, 32,248, 20,193, 16, 72, 91,172, 12, 80,126,176,150,169,246, 22, +197,142,117, 48, 37,178,251,104, 42,119, 19, 61,128,209, 70,174,214, 36,105, 25,133,180,211, 25, 74,135,104,231,152, 82,176,244, +185,199,122, 6, 7, 25, 51, 85, 49,217, 81, 22, 12,149,225,108,210,204,186, 62, 75,247, 75,192,222,166,148,105,150, 52, 6, 74, + 12,116,110,227, 74, 91, 89,215, 39,135, 76, 44,186, 40, 29, 82, 94, 11, 38,247,139,165,209,101,241, 79,180,170,207, 38, 34, 23, +163,185,124,241,104, 67,126,163,149,148,237,107,219, 43,151, 26,132,240,220,224,154, 86,148, 35, 89, 91,228,156, 97,210,152,102, + 81,203,217,249, 53,147,186,210, 29,195,194,232, 11,124,114,160,149,183, 52, 49,216,214, 67,246,195,225, 33,207, 4,156, 89,104, +139,223,145, 53,145, 50,129,194, 45,244,176, 30,124, 60,105,123, 59, 38,130, 28,154,232,216, 7, 65, 6,151,242,214,185,173, 67, +128, 28, 77,122,214,188,238,171,187,137,108,109,108,217,125,105, 0, 57,190, 24,105, 64,209,196,164,147,114,189,108,109,172,104, +117, 58,145,119,199, 87,134,173,192,248,160, 50,183, 54, 36,116,139,218,228,165, 17, 8,104, 92,165,207, 24,227, 20,156,223, 48, + 3, 2,118,100,140,185,174,123,141, 15,178, 54,177, 1,183,148, 31,110,243,119, 80,248, 74,175,233,228,242, 70,206, 95,159,202, + 47,191,122,174, 1,114, 32,135, 87,115, 58,254,157,107,112,131, 16, 11,146,245,207,159, 61,150, 97, 7,218,249,171,242,250,253, +137,188,213,228,231,102,116, 45, 99,173,222, 35,199, 90, 5, 77, 16, 36,140,191,250,246, 71,106, 45, 80,155,162,122,112,111, 11, +198, 97, 38,253,237, 44, 35,158, 53, 17,217, 34,120,158,243,233, 84,255, 29, 38, 86, 29,254, 44,216, 1,113,148,201,215,159, 60, +101,117,110, 85,185,144, 14,182,171,255,125,171,129,249,118, 17,201,181, 38, 68,192,144,108, 15, 82,249,253,137, 86,210,122, 84, +239,239, 62,147,225,147,117, 89,137,103,242,231,179, 82, 46,199,247,146, 97,196, 84, 68,242,242,221, 7, 2, 19,255,244,238, 86, +254,195,191,123, 68,214,132,190, 66,242,227,111,199, 90,193,175,172, 73,165, 21,249,100, 97,133,214, 16,231, 75,100,246,199,149, +190,135,213,213, 46, 43,250, 75,221,163,119, 40, 22,234,132,207,250,226,110,106,254, 15,181,157,155, 97,228,196,249,186,119, 31, + 91,100,107,244, 24,175,142,207,207,120,223,144,142,133,196, 47, 70, 98,105,225,182,171,185,103,253,129, 63,205, 10,140, 74,113, +109,206,208, 76,185,204, 2,108,149,151, 30, 4, 3, 61, 45,242, 96,152, 52,149, 93,104,161,227,119, 39,117,240,124,121,240, 46, + 79, 92, 82, 52, 10,150,169, 81,176, 92,141, 26,205,103,163, 49, 21, 86,233,251,124,152,198, 41,224,113,122, 59,187,174,235, 38, +105, 48,169, 83,184, 82, 57, 58,214,103,182,225,126, 66, 59,217, 92,146,210,166, 26, 92,186,222,122,104, 49, 23,141, 16,198,131, +249, 71,237, 15, 52, 77,237,192,181, 3, 59,106, 58, 4,145,107,144,211, 90, 53, 10,129,219, 43, 11,215,115, 70, 0,133,224, 74, +228,106, 89, 56, 28, 89,173, 56, 40, 17,115,246, 78,234, 46,116,149, 37, 11,193, 26, 54,115,181,185,162, 40, 29,140, 88,123, 43, +220,120,188,117,101,127,179,181,201, 64,148, 58, 88, 44,110,102,210, 46,250,218,120, 88, 7, 92, 66, 28,103, 46,222, 97,243,211, + 86, 26,208,245, 54, 67,238,104, 5, 99, 76,132,136,146,158,104, 55,134, 36, 34,242,207, 8,156,244,208,229, 64,181, 21, 64,128, +181,107,190,227,153,179,162, 22, 3, 4, 54,207, 9,186, 3,168, 92,219,177, 91, 49, 10,181,161,175,110,160,169,156,218,207,229, + 46, 32, 36,102, 18, 84,127, 52, 98,160, 94, 62,219, 84, 86,101, 66,158, 85, 28,159,145,151, 38,108,196,132, 42, 10, 84, 70, 59, + 8,114,247, 78,239,100, 73,115, 31,248, 51,160,126,235, 70,210, 83, 26,122, 96, 76,183, 42,123,231, 56, 80, 35,183,240,229,168, + 69, 43,191, 88,172, 51, 69, 81,152,210, 18, 28, 92, 34, 64, 64,120,247,232,106,165,222,181, 2, 58, 23,130, 46,109, 31,225,100, +158,128,197, 46,125,135, 42,179,246,160, 3,222,117, 78,224,156,205,121,147,110,203, 90,230,222,237, 2, 16, 20,237,116, 36,208, + 56,112,105, 44,164,135,239, 41,230,228,243,188,161,129,118, 59, 38, 86,131, 68, 8,102, 21,101,109,247,219,239,164,222,210,142, +168,164,183, 6,151,194,210,236,117, 23,236,100, 24,117,138, 2, 43, 14,238,195, 33,223,235,246, 92, 89, 46, 97, 53,132,177,194, +112,184,198,170,191,173,135, 14, 48, 37, 24,106,148,122,200, 98, 62,140,100, 43,176,100, 80, 61, 51,217,197, 60,119, 41,206,222, + 48,108, 66,176, 83,102,242, 28, 4,132,188, 3,132,119, 89,126,212, 53,195,187, 88, 82, 75,187,197,164, 62, 36,127, 6,236, 53, +161, 19,188,171, 85, 24,222,232,123,253, 48,170,228,211,189,154,207,233,118, 4, 85,180,136,106,124,180,156,189,185,101, 5,143, +191, 70,195,129,236,110,175, 9, 26, 32,192, 41,204,107,155,225,131, 78, 85,242, 21, 21, 84,154, 67,113,113,119,223,102, 66,186, +185,190,169, 65,253,152, 18,158,164, 80,106, 32, 91,146, 91,110, 21,177,117,133,132,124,228,176,191,112, 78,213,174,237,223,154, + 38,206, 38, 49,148,125, 37,214,162, 79,147,138,180, 86, 4,106,236, 3,208, 44, 49,251, 62,186, 56,212,247,104,109,110, 32,225, +119,183,182,185,199,209,246,135, 15,248,155,163, 43,238, 19, 22, 55,250, 48,209,174,135,171, 30,133,174, 80, 5, 51,152,218,179, +157,234, 53,119, 59, 93,182,224, 35,125, 54, 24,177,224,185, 60,217, 30,104, 98,152,104,213,121, 33,143, 54,134, 76,124,232, 84, +152,216,187,201,157,246,121,126, 61,150,147,155, 25,241, 11, 56,247, 81,149, 66,231, 29, 73, 86,175,187,102, 96,187,110, 34, 31, + 46,238,229,250,118, 42, 21, 68,131,162, 82,171,222,148,123, 21,137, 0, 10,134, 89, 89,187, 65, 79,194, 53, 86, 65,113, 47,170, + 63, 2, 36, 11,187, 92,153,119,155,128, 25, 49,253,134, 22, 85,230,208,121,109,195, 71, 93,171,114,104, 47,116,187,125, 57, 60, +187,211,107, 43, 53,233, 2,104,110, 69, 54,134, 25,223,243,151, 79,183,229,191,254,233,131,252,120,124,107, 2, 67,119,115, 26, +189, 32, 17,129,227,218,213,236,181,100,237,190,180,234,185, 92, 77, 76, 30,248,217,206, 58,113, 28, 72,174, 78,206,207,233,234, +247,225,250, 64,254,238,203,158,188, 57,190,145, 23, 7,235,178,183,221, 34, 29,239,231,159, 61,145,223,253,240,158,248, 28,184, +197, 33, 73,154,210, 85,175,144,169,254,190,105, 94,177, 3, 19,105,156,152,150, 9,181,231,147,186, 36, 27,164, 42, 31, 76,191, +112,136,224, 29,158,156, 95,176, 67,211,110,153,176, 18,236, 90, 87,250,182, 22, 80, 48,128,171, 30, 65, 93,206,120,146, 38,118, + 18,140, 66,192, 3, 69,203, 49,115,106, 4, 51, 94, 71, 72, 51,120, 71, 70,239,160, 97, 10, 14, 82,201, 27,221,231,160,224,197, +128, 30, 89,155,167,153, 25, 59, 8, 47,180, 46,107,167, 25,133,214,124, 77,206,223,162,145, 23,173,252, 48,109,212,193,234, 7, + 75, 88, 84, 32,152,219,225,107,144,135, 12, 50,164, 54,127,181, 10, 57,105, 18,148,218, 61,157,243,102,142,108,148,199,186,177, +225,172,157,127, 86,186, 3, 88, 99,213,217,204, 52,106,231,114,166,110, 52, 99,200, 75,106, 12,187, 60,105,227,197,238,238,105, +166, 5, 95, 53,243,126, 6,138,162,116,244,171,112,134,139,128,142, 13, 13,158, 44, 42, 96,252, 77,197, 37, 7,219, 81,217,204, +181,133, 13,193, 94, 55,222,219,161, 69, 19,158,113,145,152,210,151, 85,124,102,153,136, 39,128, 86, 58,145,248, 69,249,128,155, +240,223,191,204,205,215,183,229,168,106,114,238, 51,195, 14,152,122,152,209,206,208, 73,196, 97, 79,217, 96,253,222, 42,117,250, + 32,218,191,238,100, 87, 22,134, 63, 48, 81,159,146, 93,129, 44,141, 92,225,205,146, 46,243, 26,168,217,182, 77,220,114,245,241, +166, 41,152,129,158,129,235,194, 76, 9,155, 21,182,136,199, 85,193,106,122, 1,233, 73,221,180, 16,189,192,247,226,176, 11,250, +246,216, 52, 88, 35, 45,247,249, 14,129,128,124, 96,250, 28, 87,114,159,152,133, 99,144,235, 12,216, 7,235,178, 68,141,202, 26, + 37, 75, 11,123, 38,129, 51, 13,240,163,141,144, 74,173,102,151, 46,168, 20,214,138,248,122, 77,220, 36,197,102,247,240,147,238, + 59, 56, 9, 45,103,180, 95,131, 65, 81, 43,117,101, 66,253,124,236, 63, 36,118, 64, 12, 35,169,163, 33, 14,248,211,147, 5,145, +244, 28,167, 64, 44,167,159,153,163, 89,100,188,239,153, 62, 35, 84,118,120,254,112,177,218,136, 7, 84,126, 3,178, 24, 14,130, + 0, 20, 97, 6,220,201, 10, 86,231,216, 35,155, 88, 91,203,185,117,190, 98,136,234, 88, 2,141,209,195, 0,190, 14,149, 37,136, +152,181,219,181,250,188,183,109, 90,237, 24, 21, 8,103,232, 86, 69, 33,160,225,160,139, 53, 0,162, 13, 44,156,149, 3,157,190, +180,121, 49,115,237,146,235, 23,215, 12,245, 56,156, 51,137, 31,208, 0,109,133,209, 24,192,113,226,251, 27,129,208,180, 17,234, + 70, 86,153, 34, 85,126, 6, 5,128,102, 96,133,136,143,202, 24,236, 1,142,133,232, 75,102, 9, 12,217, 20,122, 78, 92,143,198, + 76, 48,222, 94,204,229,155,231,235,178,185, 58,160,118, 60,110, 18,137, 15, 3, 10, 59, 42, 38, 34,132,164, 11, 92,254,237,141, + 20, 74, 6,122,112, 66,221,203,104,168, 81,106, 85, 52,168,127, 61, 56,122,141,238,245,243,251,122,152,111,200,179, 39, 79,228, +183,127,248, 3,147, 90, 88,153, 66,128,104,225,213,119,226, 12,156,188,176,245, 7, 83, 25, 28,240, 19, 26,121,152,197,115,150, +218,104,175,250, 8, 56, 92,145,171, 94,104, 80,191, 37,175, 31, 35,149,247, 39,231,178,181,186, 34,207, 30,237,203,205,237, 21, + 71, 72, 72,238, 86, 6, 45,206,118, 81,245,125,254,100, 75,254,248,242,144,154, 1,122,234,105,160, 6,237,204,146,227, 69,176, +195,117,113,172,200, 11, 31,147,223, 93,200,254,214, 6, 41,135,216,139,151,163,137,117, 88,201,142,169, 41, 79,220,131, 38, 65, +106, 54,204,157, 88,175,109, 92,153,166,185,203, 92, 71,109,211, 2, 0, 90, 27, 9,201,235,195, 11, 38,205,187, 27,171,242,244, +201, 83,142,107,138,217,141,124,254,104,149,252,236, 1,109,141, 99,118,142, 94,125, 56,147, 15,167,151,220,103,104,225, 99,111, +226,103,129,180,159,107, 85,187,234,231, 80, 68,131,153,146,116,186,205,181, 30, 13, 92, 56,158,165, 31,121, 70, 11,212,203,155, +123,121,182,191, 65, 71,181, 31, 62,220, 80, 77,238,126,114,165,251,235,158,103, 31, 52, 11,160,175, 31, 10,196,235,137, 9,101, +225,108, 89,213, 53,177,177,177, 41,111,222,126,207,206, 31,233,114, 29, 13,222, 39, 23,122, 86,245,228,243,199, 43,212,126,128, + 9, 16, 70, 59,207,182, 51,121,119, 58,209,100, 97, 69,175,181, 43, 23,250,140,191,122,113, 32,255,252,199, 31,245,126,198,198, + 50,161, 19,100, 42,191,127,125, 37,191,248,108, 93,254,159,223,126,208,234, 61,150, 59,173,216,103,181,233,216, 99,140, 24,233, +254, 4, 48, 21,197,235, 84,223,247,245,205,200, 70,200,238, 8, 26,209,165,180,205,223, 5, 49, 34,116,189, 16,240, 65,131, 78, + 67,240,180,128,217,216,219, 54,155, 39,167, 7,113,193,189,131,185, 71, 64,163,199, 77,221,103,213,164, 68, 15,252,245,208,221, +157,206,141, 87,139, 3, 14, 63, 97,102, 37, 22,144, 66, 43, 60, 84, 72, 68,215,215,134,171, 14, 29,227,166,237,250,177, 25, 71, +252, 48, 75, 75,146,170, 1,209,240, 96, 46, 74,111,197,155, 82, 89, 30,236, 56, 37,204, 96,140,219,222, 40,199, 1,236,214,178, +224, 18, 84,172,194,129, 31,185,153, 13, 14,118,204,117,113, 16, 67,227,215,126,222,187, 12, 28, 31,180,152,113,227, 26,144, 61, + 38,206,153,175,220,148, 33,112, 14, 3,168, 7, 7, 28,218,164, 5, 71, 23, 6, 88, 65, 22,191, 54, 52,183,174,220, 85,227,236, +160,178, 11,225,172,155,170,110, 73,163,139,143,121,125,233, 98, 55, 20,125,161,205,109,139,139, 34,241,185, 36,130, 5,173,109, + 83,107,223, 85, 14,126,203,221, 5,139,115,207,133,181,252,150,243,154, 7, 12,252,136,165,178, 76,176,118,128,153,205,103,187, +246,220, 29, 7,128, 13,141, 57, 20,208,154,144,225,133,131, 17,104, 66, 65, 96,168, 49,114,201,210, 6,225,142,236, 22, 27,105, +208,181,185, 46,174, 34,163,112, 79,218,116, 79, 98,119, 61,194,156,113, 95, 15, 73,188, 51, 8, 65, 0, 69, 75,101,180,202, 18, + 65,104,178,195,113, 43,113, 29,132,144, 52, 26, 56,179, 96, 50, 19,236,126,131,154, 97, 96, 16, 4,140, 68,240, 5, 8, 88,131, + 86, 22, 68,141, 98,179,221, 45, 13,145, 94, 37,118,120,145,163, 75,241, 25, 3,233,132,125,210,166,189,170,238,143, 74, 15, 30, +173, 94,193, 25,134, 88, 30,120,219,112, 6, 3,117, 10,159,133, 86,173, 85,169,169,179, 43,172,117,142,125, 85, 64,239, 59, 50, +106, 82, 74,190,185, 81, 61, 97, 66, 97,200,239,220,196, 65,144,144, 57,141, 71, 92, 7,222, 44, 37,219,102,102,164, 63,159, 45, + 12,204,138,138, 34,243,118, 63,219,168,154, 56, 76,167,137, 85,210,173,132, 54,164,238,157,204, 63,207, 92,249, 12, 73, 64, 90, +196,166,217, 30, 27, 34, 29,159,215, 78,117, 47,184,204, 39,214,211,128,239,206,168, 77, 45,221,227,152,231, 81,143,162,142,156, +205, 80,176,117,140,238,197,220,165,160,241, 57, 24,143, 1,181, 13, 31,239, 25, 43, 85,195,155, 88, 7, 79,184,174,197,229,130, +131,181,111,208, 87, 32, 18,159, 74,129,149, 43, 30,214,141,167, 0, 61,194, 59,157, 70, 91, 33,114,206,243, 4, 21,117,108, 78, +114,103,119, 37,117,199, 55, 53, 64, 28, 93, 36,108,175, 19,231, 34,134, 77, 64,146,145, 21,176, 2,142,205,195, 66,159, 41, 42, + 62,140, 2,232,196, 72,175, 10,215, 96,192,123, 43, 52, 88,246, 68, 46,174,110,101,253,249, 35,121,250,248, 64,126,124,243,150, +192, 37, 52,136, 17, 96,123,154, 96, 21,142,204,159, 57,131,130,216,137,101,193,245,204,132, 36,243,209, 91, 93, 57,163,166,250, + 8, 28,107,214,196, 0, 91,238,239,238,234, 97,127,175,129, 13, 46, 94,183, 12,238,159, 61,217,214,231, 57,145,239, 94,159,201, + 79, 63,217,225,250, 66,151,225,103, 63, 17,249,254,221, 49,199, 42, 49, 11, 52, 61,103,122,122,255,247,115,163,123,214,117,147, + 40,181,108,105,153,195,157,190,195,115, 13,228, 28,145,192, 2, 86,131, 60,196, 87,144,120,172, 14, 76,197, 19,127,144,212, 86, + 48,213,154,116,244,181, 26, 47,103,166,238, 73, 65,174, 50,225, 89, 13, 32, 26,206, 6, 88,186, 30, 94,142,229,229,251, 19,217, + 95,164,242,233,243,199,178,243,233, 39,178,191,217,150,186,208,235,169,230,114,121,121, 37,175,143,175,152,128,238,239,110,179, + 35,240, 83,173,166, 57, 10, 21,147, 44, 7, 56, 17,230, 58, 0,159, 65,191, 30, 35, 14, 36,218,167,151, 37,101,159, 49,227,135, +206, 61,206,100, 60,235,155,219,137,222,159,113,219, 87, 86,118,229, 74,147, 59, 96, 31,144, 0,225,236, 66, 59,124,123, 53,145, + 75, 13,230, 24, 19,173,245,108,228, 82, 98,127,220,221, 73,212, 26,235,250,235, 72,181,156, 49,168,143, 64,243,211,123,252,234, +233,129,252,241,205, 7,249,230,197, 19, 57,187, 56,165,202,220,176,187, 37,122,185,242,207,223, 30,202, 47,191,218, 99,247,102, + 89,116,228, 23, 95, 61,147,255,242,171,111, 77, 21,143, 82,188,145,156, 95,223,235,191,111, 17, 43, 3,212,254, 96, 89, 49,201, +131, 83, 95,233, 66, 69,137,251,126, 44, 26, 81,184,154, 10,136,144,240,197,217, 0,111, 19,244,115,202,202, 48, 56, 88, 51,159, +110,111, 97,173,167,252, 37,160, 94,133, 74, 80, 18,249, 11,111,245,204,209,219, 4,142,161,133,217,232,160,219,188, 24, 6, 28, +209, 71,128, 40,105,170,164,220, 53,220, 99,111, 77,155, 96, 5,254, 63,117,245, 47, 86, 6,249,178,113, 16, 10,106,107, 15, 51, +248,160,235,109, 24,234,200,171,167,200,145,209, 1,169,108, 25,176,201, 79,182, 28,209,141,131, 8, 52,155,196,197, 71, 8, 86, + 41,171,230,231,217, 38,118,208, 87,202,172,115,201, 22, 46, 15, 91, 71, 63, 47,125,236,144,101,137,115,233,147,166,117,159,250, + 33, 88, 16,168,100, 34,251, 12, 40,113,213,180, 0,131,116,110, 48,185, 15, 85, 94,213,104,233,151, 4,184,208,190,207,233, 97, + 4,157,197,174, 39,237,207,141,250,191,147, 57, 15,253,110,219,228, 4, 91, 46,242,131, 67, 26,247,137,175,227, 26,103,164, 53, + 68, 77, 91,138, 10,112, 64,152,235, 13, 99,230,107,188,207,136,244,135,198,255,125,185,244, 89,186,139,236,232,155,131, 65, 4, + 52,188, 81,129, 96, 49, 21,142,188, 12, 86,176,104,195,247,187,165,235,149,187,243,148,183, 73,227,248, 97,206,143,182,239,132, + 85,145,241, 82,145,149,147, 58,227, 99, 24,182,146,166, 51, 79,142, 18,163, 25,214, 48,238, 17, 51, 19,234,119, 40,129, 25,249, +220,252,242,122, 76, 94, 44,238,123,119,107,141, 89,123,225,221,141,196,129,130, 86,117,185, 36,110,149,187,174,186,139,207,184, +132, 49, 71, 23, 1,232,231, 51,194, 16, 12,130,236,104,220, 88,214, 22, 38, 81,153,165,205,129, 75, 33, 35, 71, 9,167,177,109, + 62,104, 77,107,186, 67, 13,110, 4, 35,172,117, 84,133,121, 49,102,160,142, 35,163,192, 81,202, 84,147, 82,136, 84, 44,150, 38, +191,153,167,137, 95,155, 37, 92, 88,131,150,104,120, 87, 64, 15,101,220, 31, 42, 41, 92, 11,218,163, 76, 50, 29, 17, 24,176,155, +164,150,149, 57,147, 29,116, 80,170, 32,191,171,223,129,106, 13,179,209, 52,174, 27,243,162,136, 18,183, 25,131,177,209,135,162, + 6,152,200,241, 77, 98,123,238,114, 52,101,203, 30,107, 16, 8,239,123, 89, 56, 24,205,130,107, 71, 15,167,182,158, 35, 19, 10, + 99, 20, 12,136, 25, 43,224,146, 93, 3, 92, 29,214, 13,101,136, 61, 17, 54, 64,173,129,114, 3,107,162,240, 25,107,176,249,205, + 93,188,133,162, 83,113,226, 46,142,214, 50,206,157,195, 31,244,220,137, 18, 79, 44,240,176, 42,106,155,232, 19, 90,226,180,140, +213,123, 60,186, 25,202,215, 47, 6,220, 99, 88,247, 27,171,109,174, 37, 88,174,226, 61, 99,126, 25,146, 66, 10,160,232,187, 96, +231,101, 56,228,125,223,142,140, 77,131,251, 64,155,121,103,163, 35,197, 36, 34, 90, 27,231,232,103, 26,220,255,237,207, 63,242, +220,195,129, 13,237,244,249,210,140,173,208,181, 1, 74, 25, 29, 28,211,226,143,154,238, 91,163,193,128, 46, 25, 76,108,138,224, +172, 88, 24,213, 83,255, 96,117, 56,208,251, 30,203,185, 6,192, 95,254,236,107,234,134,207,242, 29,218,126,162,203,121,122, 61, +145, 71,187,107,252,253, 40, 66,126,249,245,115,249,253,183, 63,234,181, 15,220,198,185,144,161, 75,125,227, 8,135,147, 94, 94, +152, 14,200,189, 6,150,174,159,109,232,206, 65,139, 28,232,248, 79, 31,237,147,162,120, 1,209,160, 90,147,235,126,139, 66, 50, +152,223,231,238,222,184,156,143,117,189,245, 89,209,210,165, 17,231,118,214,213, 68, 54,231, 58, 5,192, 26,106,137,159, 29,172, +201, 15,199,183,242,199,239,103,242,236,209,174,110,188,103,178,208,119,243,187,223,252, 87, 61,223, 70,148, 92,229,136, 5,154, + 7,186,142,199,119, 83, 82, 79,231,212, 49, 40,201,160,194,251, 4,206, 35,141,221,127, 3,231,114, 93,241,115,210,216, 58,155, + 92, 23,104,197, 67,185, 77,147,205,145, 76,101,176,122,224,231,102,194,142, 87,234,166, 57,227,121,193,179, 24,235,248,108, 84, +104,113, 98,157, 69, 36, 56,211,197,145,108,111,108,144,142,119, 7,109,134,114, 65,170,219, 31,222, 28,233, 62,235,201,135,203, + 91,118,119,112, 94,156,220, 76,249,236, 1, 92, 60,187,205,229,197,254,138,198,192, 27,217, 90,217,148,191,255,249,115,249,167, + 63,188,211, 4,194,146, 9,124,198,187,139,169, 60,222,234,201,159,222,223,114,236,122,175,215, 1,149,185,170,156,115,204,195, + 36,187, 54,172,193,157, 38,114, 16, 19, 98,119, 21, 54,183, 89,206,243, 27,251,220, 40,112, 53, 41,182,156,169, 39,222, 38,103, + 21,142, 23, 18, 85,141, 14,119,228,142, 96, 1,108,148,184,122, 88,144, 5, 12,173,244, 80, 57,199,222,130, 14, 85, 56,121,224, +185,123,125,121,123,155,230, 25, 46,134,130, 0, 65,216,190, 87, 78, 46,148,222,100, 20,117,211,170,183, 54, 27,231,248,206,135, + 10,200,244, 0,226,227,156,189,172,124, 35,183,205,172, 3,217,153,102,217,137, 27,101, 76,102,243, 70,174, 51, 76,152,153,105, + 70,168, 98,171,166,115, 80, 4,190, 31, 2,177,235,210,195,210, 49,241,170, 18, 73,132, 56,104, 47,119, 58, 86, 64,251, 51, 73, +161,162,144,105, 20,151, 30, 52,250,208,241, 46,140,210,130, 3,121, 62, 95,186, 8, 68,198,195, 6,135,119, 65, 5,165,148, 7, + 43,146,131,118,102,193,138,153,177,216, 12, 12,246,183, 56,180, 57,123,243,249, 43,244,142,225,190,133, 23, 14, 74, 72, 96, 13, + 12,252,123, 47, 97,188,224,230, 27, 65, 21, 16, 93, 2, 84, 77, 1, 25,156, 38, 54,191,193,225,120,117, 51,230,215,240,236, 64, +123,137, 56,179,204,168, 97, 29,148,243, 8,120,171,172,170,192, 6,103,119,129,252,249,210, 16,189,101,222, 36, 48,104,187,178, +229, 71,106,213,130,153,118,236, 24, 3, 28,220, 56,248,241, 57, 97,188,146,166,118,125, 52, 42,193, 6, 70,144,208,195,247,228, +226,214,244,241, 61,224, 66,106,118,198, 25,182,190, 23, 61,100,145,120,220,142,151,205,172, 27,135, 2,127, 39, 15,173,154,238, + 86,165,171,222,133,121, 98, 86,197,205,232, 69,124, 68,129,123, 98,130,228, 9, 86, 21,214,155, 35,255,115,199,112,224,152,165, + 31,179,115,220, 43, 90,222, 86,114, 57, 6, 8, 71,159, 9,172, 73, 23, 5,131, 22,171,139,133,249, 40, 4, 61,248,202,231,101, +148,148, 45, 2, 69, 48,162, 42, 85, 84,219,236, 18, 51,202, 44, 72,181, 82, 94, 45,162, 96, 74,226,221,151,224,216,135,119,130, + 96,143,223, 11, 51,152,249,204,254, 12,215,134,177, 86,187,229,150,159, 18,177, 83,146,210,211,160,101, 65, 29,227,130, 22, 58, + 34,166,223, 15, 4,255,210,189,209,115,111, 23,145,190, 23,133,214, 55,232,173, 17,147, 60, 94, 11, 0,131,208,125,143, 51,182, + 39, 73, 28,152,207,205, 52,166,212,235,237, 98,190, 94, 53,138,132, 84, 71,203,132,129,214, 90,237, 37,219,239, 28,117, 84,226, + 74,143, 1,224,106,193, 21, 29,159,118,214,230, 63,177,175,195, 56,171,246, 36,179,176, 94,191,143, 22, 18, 90, 90, 6, 81, 13, +130,113, 35,227,185, 3, 29,253,250, 98, 33,127,245, 89,204, 10, 28,136,106,236, 23,172,239,235,234,142,109, 92,164, 73, 24, 97, + 44, 32,179, 59,128,118,184,141, 18, 48,166,192, 45, 97, 30,203,247, 84, 71, 78,135, 45,100,109,109,131,123, 26,215,247,197, 39, + 47,228,251,215,239,141, 81, 18, 91,119, 11,225,103,198, 10,191,110,146,123, 4,125,112,207, 65, 9,246,129, 16, 27, 39,208,233, +136,189,179, 88, 2, 95, 3,126, 55,254, 44,170,104,198, 52, 35, 0, 48,146,151, 31, 78, 53,177,104,113,175,237,108,111,203,233, +217,145, 6,198,165,108,175,229, 90, 81, 78,137,192,127,246,120,151,227,156,243,171,177, 92,141, 81, 0, 85,114,116,117,175,207, +164,242, 81,159, 21, 59,196,107,100,102,236, 2,241,151, 1,220,193,244,185,192, 12,229,183, 47,223,112,207,236,108,172,145, 83, +159, 3,244,138,238, 1, 71, 44,186,175,250, 6,124,156, 64, 45,175,219, 49,249, 86, 92, 59,198, 88, 73,212, 8,122,161, 91,131, +164,231,235, 39, 67,249,254,172,166,136,205,191,253,254, 15, 50, 31, 29,233,235, 65, 18, 35,172,150,137,122, 7,229, 88,207,139, +223,189, 60,228, 62, 40,157,238,140,115,202, 52, 52,133, 9, 90, 24, 63,146,241,145,233, 57, 15, 15,123,125, 30, 3, 77,104,176, +116,201,204,138,161, 93,209,225,158,122,188,179, 46, 63,255,116,151,156,119, 8,240,172,116, 0,152, 45,228,199,195, 43, 57,209, +132, 8, 50,177, 40,126,114, 58,209,197,156,211, 35,161, 74,251,125,254,217,139,157, 29,121,171,207, 15,231, 42,206,234,189,173, + 77,198,144, 15,167,231,156,121,255, 70,223,215,179,157,190,140,110,111,229, 40, 41, 8,198,187,214,100,248,249,193, 14,187, 22, +183,122, 62,159, 76,112, 6,198,114,125,191, 32,122,254,215,127, 62,147, 74,147,106,250,199,243, 28, 45, 26, 21, 76, 90, 68,235, +123,129, 32, 13,192,158,145,171,116, 70,220,139, 54,182,187,212,243,154,163,113, 61, 43, 96, 15,156, 6,183,179,198, 67,193, 3, +130, 61, 44, 83,153, 99,224,151,168,225, 3,199,113,220, 4,226, 0,218, 98, 11, 51, 88, 96,122, 75, 61,242,246, 89, 0,103,133, + 23,144, 59,165, 45,204, 21,195,161,106, 42,105, 6,192, 11,109, 83, 86, 10,177,233, 69, 86,238, 73, 30,248,230,129, 10, 55, 39, +253,203, 90, 87, 0,215,228, 14,182, 64, 32,142,189,210,197,127,195,213,135, 51,216,123,171,174,113, 32,209, 74, 86, 3, 3,179, + 64, 7, 70, 49,200, 38,214, 74,198,103, 62,218,221, 98,198, 45, 94,161, 6, 16, 21, 22,186,161,181,197,192, 11,174,114, 71, 84, +172, 3,213, 16, 20,136, 34,102, 22,159, 49,243, 68,144, 67,181,179,185, 62, 52, 33, 27, 87,117,226, 4, 48, 50,137, 75,113, 22, + 2,130, 8, 36, 54,151, 75,171,188, 48, 31, 95, 93, 29, 90, 98,130,214,216,120,226, 92,117,104, 42,153, 31, 54,238, 9,128, 54, + 75,186,140,222,196, 22,190,155,122,224,154,208, 78,135,105,129, 33,162, 77, 47,250,158, 74, 70, 54, 83, 71, 27, 19,179,197,155, +209, 61,171, 11,163, 8, 45,104, 63, 90,123, 98,196, 36, 1,155,121, 6,153,213,146,137, 16,231,201, 56, 20,122, 45,107, 83,226, + 16, 92, 88, 53,128,224,182,161,155, 13,207, 10,198, 41,104,181,146,163,188, 92, 50,136, 6,229,183, 96, 28,131,247,136, 10, 31, +223,219,120,227,224, 0,238,162,253,132,108,125, 73,161, 11,106, 93,107, 85,129, 63,195,181, 4, 15,238,194,241, 17, 12,160, 64, +205, 23,126, 40,235,245,176,211, 48,236,152,116,103,110, 85, 19, 54, 20, 44, 82, 33,206, 2,121, 81, 45, 81,141,181,144,151,158, + 8, 10,219,117,164, 36,210, 67, 60,243, 36, 80, 15,126,125,239,243,210, 90,222,104,119,190, 63,187, 53,218, 90,167, 75,140, 3, + 1,129, 30,128,136,234,119,124, 3,116,182,215,225, 54,213,141, 41, 89, 59,209,207, 2,127, 58, 14,207, 81,239, 21, 30,205, 27, +171,125, 86,240,120,102,104, 47,226,231,233, 22,231,186, 10,180, 26,214,103, 5, 28, 12,100,106, 43, 31, 85, 1, 4,135,185, 35, + 90,199,248,153,245,181, 46, 52,174, 88, 57, 7, 3,161, 89, 94, 83,125, 14, 7, 52,245,224,227,121, 83, 49,206,137, 34, 47, 56, + 98, 0,152, 15,114,180,151,247, 54,147, 39,168,176,211,163,240, 7,174, 11,115,240,233,124,198,207,193,225,109,128, 89,173, 44, + 52, 8, 46, 40,237,154, 55, 26,237,216,150,216,111, 49,149,214, 34, 2, 67,107,135,116,134, 89, 63, 71, 54, 11, 75,154, 51,183, + 10,230, 22,119,117, 61,124,198,162, 54, 65,161,216,233,142, 38, 65, 93,187, 86,133,153, 30, 49, 8,195, 65, 79, 15,102, 84,179, +239, 79,111,245, 0,223,144,189,157, 13,226, 18, 80, 21,173,173, 12,100,125,125, 85,147,161, 25,185,197,120,199,196, 16,136,119, +223,240,126, 53,192,161, 98, 71,151, 1,207,175,160, 35,158, 41,177,245,250,185, 28,106, 80,253,119, 63,253, 82,215,254,154, 6, +217, 45, 13,178,103, 76,126,104,217, 75, 89,220,146, 73, 31,196,192,177,175,193, 40, 92,208,120,166,114,255,248, 68, 38,112, 47, +119,255,130,168, 29, 83, 55, 28, 78, 94, 8,230,115,184, 43,234,131, 3,149,169,204,151, 84, 52, 92,230, 17,157,212, 46,110,167, + 84, 83, 3, 40,243,242, 42,213,251,105, 17,168,134, 66, 8, 9, 1,198, 85,169, 22, 47, 51,125,206, 49,207, 64,173,126,151,173, + 6, 72,139, 74, 15,231, 40, 90,218,229, 80, 63, 67, 3,248,217,245,141,108,234,126, 5,144,116, 52, 53,211, 22,180,144,209,121, +186,188,185,225,117, 98,252,130, 78, 12,248,230,109,173,202,139,184, 71,209, 29,130,110, 49, 90, 64,229,168, 39, 19,214, 48,170, +230,227,235, 57,169,164,127,243,147,167,242,226,233, 99,253,224,223,200, 31, 79,167, 76, 36, 80,152, 28, 68, 54,234, 10, 64, 60, +128, 31, 33,181, 26,187, 37, 48, 52,114, 58,236, 38, 89,231,182, 71, 74, 94,205,241, 19,186, 77,248, 62, 36,201,144,223, 5, 69, + 17, 96, 84, 19, 78, 67, 66, 93,107,193, 50,145,211,155,156,251,253,103,159,172,211,102, 21,180,182,246,243, 68,131,241,138, 62, +219,150,252,111,191,122,163,123, 76,223, 57,129,174,133,169,185,101, 48, 95, 58,149, 36,123,170,159, 85,201,150,174,149,215, 71, +199, 44,152,112,221,192, 31,100,250,254,158,237,109,145, 34,141,103,133,100,167,136, 82,217,218, 72,228,228,116, 46, 7, 91,171, + 60, 19,240,187,113,253, 39,231, 26,140, 95,172,241,243, 47,238,150, 28, 83, 32,121,198,216, 39,176, 18, 82,183, 3,159, 85,118, +206, 98, 12,105, 35, 96,196,169, 54, 11, 81,140, 69,168,116,168, 63,135,164, 33,109,185, 59, 91,224, 17, 7, 78,121,229,102, 45, +117,224,141, 59, 82, 61, 84,246,213, 71, 58, 95, 1,157, 26,137, 5,217,216,171,234, 0, 66, 11, 84, 57, 34,212,189,125,242, 96, +222, 82, 62,136,141,200, 95,206,243, 65,185,192, 5, 7, 79,108, 67, 6, 39,141,164, 44, 51,240,172,245, 0, 32,171, 42,111,141, + 10, 41, 46,104, 23,226,176,203,220,182,207, 84,168, 28, 21, 9, 41,194,194,228, 13, 73,159, 90,154,202, 28, 50, 84,250, 28,235, +223,216,240, 56,184, 87,117,145, 4,161,149, 0,238, 50,132,166,181,213, 17, 24, 81, 5,116,124,236, 64, 60,129,190, 0,124, 29, +159, 7, 47,106,203,182,160,112,183,176, 5, 0, 37, 47, 88,208,234,239,203,231, 57, 69, 61, 2,112,170, 96,139,200, 42, 9, 48, + 11,240, 79,163, 29, 70, 4,212,225,144, 65, 32,132,186, 21, 2, 4, 5, 74,124, 22, 7, 32,153, 45, 98, 3,190, 96, 4,177,169, + 11, 12, 47, 92,146,184, 65, 16,207, 22, 70,151,194,108,202,128,141,102,187, 59,163,148,164, 6, 41,253,217,171, 91, 67, 79, 99, +133,181,171,140,207, 59,128, 30,131,228, 47,223,169,254, 28, 90,115,188,102,108,164, 97,159,223, 3, 43,221,218, 13,104,160,216, +149, 46,173, 10, 20,151,203,196,102,180,153,116,219, 4,118, 42,147,231,109,145, 19, 60,215,223, 57,225,181,208, 74, 51, 53,220, + 68,226,250,253, 56, 20, 97, 17, 58, 37,119,181,144,241,233,149,108,111,172,104, 38,190,209,160,236,111,239,238,153,200,193, 8, + 5, 75,241,236,242,134, 64, 47, 84,204, 1,173,143, 74, 27,193,197, 0,118,210,128, 69,151,185,185,124,149,254,188,136,251,136, + 31, 16,215, 45,162,214, 45,233,108, 71, 22, 60, 87,122,134,164, 46, 64, 25,210,103,211,194, 33, 19,215,180,236, 44,181, 52,205, +244,158,102,243,186,209, 76, 96, 18, 25, 89,130, 9,159,239,151,103,247, 20, 64,225,239,111, 25,159, 29,159, 13,100,107, 26,181, +108,148,197, 96,109, 92, 91, 38,204,250, 81,119, 83,179,217,164,129,196,104, 46, 90,172,241, 48,188,155,131,123,188,100,213, 93, +235,123,189,158, 85,114,122, 87,176,146, 66,117, 89,148,161,109,109, 29, 21, 4,220,124,225,114,197,169, 9,166,148, 62,207, 35, + 58, 60,180,229,171,208,233, 64,112,155, 91,231, 78, 12,159, 80,214,166,127, 64, 74,164,171, 63,218,231,213, 78, 3,179,103,103, +246,190, 86,125, 99, 86, 44,153, 56, 38,166,160, 10, 29, 41,125,172,236, 11, 51,191,128,180,107,111,192,142, 77,144,243,101,130, +164, 73,132,189,136,218,153, 32,174, 66,136,214,112, 33,238, 98,104,218, 25,224, 85,175, 13, 87,216,254, 60,190, 41,228,139, 39, +125,121,151, 24,239,159,110,130, 75,204, 96,167,228, 75, 67,232, 5, 29, 13, 60, 87,118,140,106, 27,137,193, 27, 5,215,114, 63, + 27, 81, 88,103,122, 15, 1,171,133, 6,144, 37, 1,132,176,200,156, 79,239,229,233,193, 35,185,184,188,176,115, 39, 55,243,150, +118, 59,114,198, 75,105,163, 64, 80,212,150, 53,245,245, 77,118, 35,162,220,105, 93, 61, 40,118,150,110, 74, 4, 16, 98, 78,165, +195,123,121,118,176, 79,157,111, 0, 49,183,233, 7, 63,144,255,247,119,127,150,190, 91,232,190, 62, 46,229,151,235,123,148, 72, + 69,149,184,161,235,255,101, 9,140, 64, 46,187,235,125, 41,150,125, 57,190, 28,155, 3,163, 7,199,202,245,242,159,104,176,186, +156,220,243,153,219,185,159,200,158, 38, 40,245,197, 5,139, 26,208,186,206,198, 51,217,233, 71,174,120,153,112,109, 16,120,153, +160, 83, 53,167,203, 93, 94,216,216,135,178, 4,122, 70, 3, 65,142, 61, 7, 96,217,245,164,144, 71,213,149, 44,170,132,180,199, +255,248,119,127, 69,166, 4, 18,237,181, 65,135, 22,170,189, 14, 60,222,103,242,250,195,169,158,113, 51,214,230, 89,106,184, 23, +210, 73,211,184,241,161,192,251, 5, 70,103,158,215, 76,222,128,115,194, 62,130,248, 11,206,239,121, 81,211,231, 29,123, 13, 1, +255, 86,171,217, 63,190, 58,151,255,251,119,239, 52, 81, 26,177, 10, 38,238, 73,239,255,169, 6,118,140,152, 18,103,192,192, 34, +186,213, 45,104,213,250,100,107, 69,214, 86,215,101, 86,198, 60,115,118,215, 55,184,166,126,252,112,204, 51,255,241,206, 22, 93, + 4, 91,173,142,238,237,174, 60,173,161,137,209,149,237,213,140,128,191,243,139,130,221,211,205,149,185,188, 59, 31,201,163,205, +129,220, 78, 11,249,247,223, 28,200,255,254,155, 67, 38,192,100, 46,181, 0, 62, 70, 52,181, 81, 47,214, 52, 44,110,113,157,176, +140, 6,157, 13,200,119, 60, 47,104,210,227,158, 81,120, 98, 63, 1, 24,156,236,239,238,253,175,161, 50,162,176,132,219, 34, 18, + 16,151, 88, 27, 52,108,146,208,110,109,230,217,141,218, 88,237,206, 77,115,167,131, 85, 13,106, 53,245, 12, 52, 73,157,134, 4, +218, 85, 28, 53,243,186,192,101, 7,146, 54,203, 82, 55,107, 49, 35, 1, 90, 21,102, 45, 63, 60,157,171,237,255, 78,190, 34, 90, +199,165,169,241,216,220,223,149,226,150,139, 70,125, 11,135,108,176,120,109,185, 85,171,153,165,164,244,135, 70, 75,165,114, 3, +137,144, 80,164, 78, 87,163,141, 34, 21,164,210, 70,115, 91,124,182, 31,126, 15, 15, 25,127, 6,161, 85, 14,254,238,245,232,142, + 25, 87,184,142,216, 91,222,184, 70, 84,222,136,108, 8, 92, 1, 64,199, 64,133,197, 9,190,243,202,192,109, 37,133,149, 7, 81, +144, 94,181,155,228,102,201,138,162, 36,162,218, 0,109,225,122,144,100,116,218,173,134, 61, 0, 52,124, 72,151,128,220,165, 34, + 22, 54,172,119, 2, 80, 41,131, 31, 28,240, 5,248, 27,200,243, 65,191,195,207, 66,133, 22,128,131,129, 95,110,215,251, 48, 59, + 55, 92,130,153,137,176, 77, 77, 90, 77,193, 36, 10, 85,106,230,212, 46,227,255, 91, 66,199, 57,106, 64,152, 75,160,147,197,141, + 95, 64,224,103,162,130,223,213, 96, 13,138, 27,222, 5, 90,132,224,131, 99,108, 48, 71,130,180,204, 77,240, 37, 65,203,116,194, +231,135,192,139,128,142, 77,242,116,127,155,215,132, 4, 13, 7, 20,170,123, 4,201,156, 1,211, 3,186,183,200, 73,191, 1,208, +172,149, 54, 14,132,179,185,233,111,119, 90,230,164,135, 32, 79, 11,202,218,180, 22, 76, 60,197, 14, 69,220, 31, 84,212,144, 88, +173,246, 59, 6,158, 3,255, 62,179, 68,240,222, 15, 15, 92, 51,218,119, 4, 25, 58, 26, 31, 7, 55,156,225,240,123,112,141,160, + 17,233,202,224,129,143,202,253, 78,191, 54,209,138,232,126,137, 25, 96,201,170,239, 12,202, 97,147,133, 68, 26,128, 48, 42,163, +242,214,162, 36,189, 8, 14,109,198,193, 55,158, 51, 2,111, 69,181, 58, 91,171, 11,223,243,102, 7, 16,121, 85,180,228,122,102, +219,221,141,120, 16,244,197,129,107, 68,229,122,226, 26, 92,243,208,102,165,222, 64,102,190,214, 91,235,219, 76,210, 72,211,195, +232, 32, 53,229,185,118,171,195,117,139,125,218,239, 14,204,218,151,104,245,148,221,145,218,117, 35,140,139,107,250, 23,166,129, + 81,242,124,192,172,158,246,186,181,153,122, 4, 81,170,208,190,199,158,221, 88, 93,117, 12, 69,225, 14, 94,166,151,145,186, 5, +111, 95,171,108, 10,173, 80,144,170,150,131,149, 72,190,125,123, 41,231, 55,119,236,174, 28, 95,140,137, 71,185,153,204,137,220, + 30,209, 63, 30, 7,250,140,123,181, 36,186, 59, 98,235,118,101, 96, 2, 55,176, 0,109,235,154, 41,200,113, 31, 16, 19,210,233, + 89, 98,141,234,250,232,226,198,193,141, 70, 33, 68, 11,118,186, 40, 89, 57, 46,156,189, 17, 40, 75, 16,169, 49,222,117,236,251, +176,199,110, 88, 80,245,196, 62,159,211,141, 48,163, 8, 13,102,168,159, 62,222,147,161, 6,237,227,211, 27,118,181, 40, 12,165, +207, 15,157,157, 96,153,138,231,136, 57, 62, 70, 10,149, 75, 53, 79, 73,249, 43, 92,213, 79,154, 46, 9,214,102,228, 45, 95, 2, +120, 53,200,222, 99,157,234,181,127,243,124,151,137, 6,206, 84,220, 43,146, 59,235,158,153,172,120,175,157,152, 50, 96,218,105, +222, 19,238,111,208, 31,240,153,213,197,210, 59, 66,122, 45,154,108,246, 50,116, 71, 35,249,244, 96, 77,131,210, 6, 71,139, 28, + 7, 69,226,222, 1,134,241, 64, 82, 14,139,217,159, 60,219,229, 58,195,140, 28,251, 20, 35, 45,235,154, 89,226,141, 53,132, 98, + 10,158,243,231, 87, 87,242,254,248, 66,254,244,234, 72,190,251,241,181,188,124,253, 78,254,240,231, 87,242,195,155,183,114,122, +126,174,215,191,202,202,119, 54,187,115,247, 66,155, 93, 99, 63, 33, 96,227, 76, 1, 72, 22, 35, 45,234,124,234, 30, 91,235,197, +164,170, 29,107,113,176,210,210,243,161,213,167, 92,107,225, 35, 59, 38,143, 76,132, 68, 43,248, 59,121,249,225, 82,118, 6, 34, +135, 23, 51,118, 34,186,169,129,145,159,236,174,243,172,126,115,118,199,125,242, 98,111,168,191,115, 74,173,249,160, 40, 73, 89, +115,221, 59, 56,203,151, 84, 87, 76, 57, 87, 15,194,108, 44, 60, 80,204, 76, 38, 26, 47, 86, 12,219,226,194, 70,233,176,223, 39, +240, 4,139, 26, 89, 47,162,126, 23,122,205, 45,211, 79,238,117,202,198,107,123,238, 42,103,145, 7, 92, 6, 89, 7, 74, 4,101, +186,216,171,234,196,131,112, 99,186,130,214,137, 7,162,150, 59,182, 5,199,181, 48, 27,231,129,207,122, 63,119, 87,166,204, 91, +200, 73, 83,189,211,198,213,221,213,152,193,198, 15,130, 50,104, 25, 91, 38, 31, 20,234, 50,115, 97,130,150, 96,199, 20,134,186, +108,211,180,216, 78, 41,220, 89, 10,213, 46,117,117,193, 21,205,140,246,132, 86, 46, 42,193, 53,221, 28,180, 96, 77,147,134,170, + 7,138,140, 46,183,134, 6, 24,170, 16,220,198,197,245, 45, 95,232,250,234,128,136,118,124, 30, 4, 45,112,133,231,186, 24,192, +161, 12, 92,101,180,229,205,195,190,148, 85,253,126, 44, 14,204,190,145,164,172,174,174, 88,117,177, 88, 54,115, 68,124, 6,144, +175,236,162, 68,210, 80,207,202,216, 56,237, 22,164, 23,188,214,225,112, 96,248,129, 60,111,124,155, 49,127, 94, 54,214,170,210, +128,212,194, 8, 6, 7, 2, 50,219,218, 81,225,248, 58, 14,174,202, 3,145, 57, 5,197, 30,240,221, 29, 77,223,229,148, 0, 18, +231,218, 38,238, 62, 87, 24,128,142, 99, 16,204,217,170, 37,127,231,194, 91,221,120,103,115,175,186,224, 64,214,110, 45, 77, 70, + 85, 23,103,150, 5,139, 89, 51, 33,225, 59,175,236, 48, 65,231, 96,145,207, 8,158, 89, 56,186, 31, 96, 37,108, 62,252, 51,154, +186, 9, 6, 64,101,122, 31,135,151, 35,182,164,130,220,237, 50, 55,125,229, 56,122, 0,102,210, 34,152,180,171,204,245, 18,226, + 38,152,207,231, 49, 59, 53, 72, 36,113,104,210,216,163,165,107, 26, 2, 47,192,105, 64,110,181, 48,244,127,228,215,187,160, 60, +104,161,193,120,193, 54, 39, 91,163,186, 22,239, 93, 92, 4,173,219,126,175,160,213, 25, 18, 97, 84, 76, 39,169, 57,255,165,101, +204,235,203,138,153,180,128,136,117, 67, 14, 38, 98, 49,170,215,185,161,222, 33,136,195,182,119, 66,253,103,116,192,144,172,152, +206,120, 97,179,102,253,190,161, 6, 31, 45, 39, 25,172, 56,102,200,243, 70,176, 40,165,227,150,113,255,105, 66, 2, 14,117, 43, +118,111, 7,179,170, 13,146,199,144,158,197,124, 24,123, 50,107, 27, 61,109, 4,252,134,126,254,176, 63,212, 31,208, 0,154, 22, +238,141, 46,164,216, 96,102,190,170, 7, 78,161,213,219,104, 50, 38,181, 9, 13,163,251,217,196, 20, 24, 93,106, 23, 10,105, 45, + 58,176,181, 93,216, 70,247,122, 98,106,135,173, 84, 43,147,110,143,215, 9,211, 23, 4,239,168,101, 32, 66, 28,114, 28,253, 37, +145, 35,221, 75,247, 37,136,154,174, 29,147,148,180, 98,177, 82,122,210,139,245,247, 70, 3,210,191, 84, 55,242, 78, 15,214,142, + 6, 79,204, 37,113, 48,115, 20,167,223,135,179,100,174, 73, 22,218,235,253,110,159, 29,191, 52, 93, 88,194, 95, 46,185, 79, 17, +172,230,169, 37,198,168, 84, 49,154, 72, 32,162,117, 31,203,222,206,182,124,243,213, 55,242,230,195,137,172,247, 51, 25,205, 35, +202,132,214,165, 49, 49, 40, 64,180, 48, 9, 95, 4,143, 56,213, 53,232, 76, 25,122, 50,196,145,203,178, 66, 94,116,206, 36,104, + 74,214, 81, 77,101, 59, 60,227,147,139, 43, 93,219,247, 50,154, 29,202, 55, 95, 60,149, 75, 61, 95,144, 56, 22,249, 84,190,125, +117, 34, 63,255,116,139,207, 5,120, 9, 84,235,135,122,214,193,157,238,175, 94,108,201,201,229,101, 99, 79,141,206, 79,229,163, + 82, 36, 28, 40, 36,134, 76, 84,192,218,104,241,156,220, 89, 31,202, 8,163, 48, 93,155, 63,127,190, 39, 55,250, 34,111,166, 53, + 5, 85,184,134, 18,163,183,130,224,188,152,107,240, 73, 90, 46,190,101,239, 70,243, 82,206,187,137,129,210,125,187,255,104,159, + 78,144, 87,183,119,242,234,162, 43,191,254,227,111,136,153,129, 2, 29,222, 85,225,227,138,152,123,182,146,237,141,129, 38,140, + 67, 50, 94,112,190, 76, 11,115,245, 91,186,126, 69,226, 18,216,208,237, 67,103,133, 38, 94,149, 21, 42,109, 42, 7, 62,116, 22, +201,184,161,169,143,158,135,211, 72,250,160, 18,183, 51,151,164,181,115,134, 29,149,194,232,167,149,174,219,221,141, 39,178,152, + 94,115,255,237,110,172,203,245,237,185,124,250,108, 40,154, 63, 55,174,128,143,245,204,197,186,124,253,193, 64,116,155, 27, 27, +114, 87,116,101,216,154,203,213,125, 45, 79, 54, 86,249,185, 72,202,159, 60,122, 36, 87,119, 5,147,191,133, 86,229,240,173,159, + 59, 62,135,227, 73, 77, 40,231,149, 89, 17, 35,177,195,120, 19, 94,233,184,135, 69, 30,216, 32, 17, 1,136,151,183, 35,121,126, +176,207,253, 93, 81, 31, 3,178,114, 16,141, 24, 12,120, 48,143,239, 39,132,199,103,110,194, 96,243, 63,243,123,237, 68, 93,115, +108, 99, 75, 59,227, 75, 20, 23,160, 73,220,155,187,246,224, 96, 46, 81,102, 90,130,175,221, 83,144, 33,230, 65, 81,213,117,131, +214, 13, 82,167,193,180,161,242,170,193,170,185,146, 0, 21,100,232,248,247,176, 41, 37,232,206, 47, 23,214, 49, 96,133, 23, 59, + 87,185,101,202, 91,204,110, 90,108,235, 36,238,217, 14,245,160,253,158, 25, 82, 32, 91,183, 89,120,202, 96,135,249, 54,102, 84, +108,229,234,130, 93, 95, 29, 82, 37, 10,243, 18, 86, 36,104,247,234, 75,202, 29,169, 91, 7, 75, 84,199, 32,156, 94, 92,210, 79, + 24,224, 35, 32,204, 31,239,111,145, 26,130,141, 9, 20,176, 73,232,198,204,166, 10,167, 39, 12,251, 70, 99,227, 44, 27,242,156, +186,152, 80, 37,219,102,171,216,118,159,187, 48, 74,139, 90,240, 57, 53,192,153, 85,214,102, 33, 91,186,102,120, 92,154, 53,107, +234,213, 48,229, 76, 93,114,181, 40, 12,192, 71,218, 97, 48,186, 32,178,219,146,169, 64,163, 43,203,170,233,158,240, 80,204, 43, + 62,143,202, 69,104, 10,103, 14,160, 18, 71, 82,132,224,119, 75, 14,171, 93, 31,241, 6,117,216, 60, 86,213,226,208, 49, 80, 99, +253, 23,198, 47,152, 97,154, 19,209,220,225,145, 60,229, 89,245, 96, 99, 95,107, 98, 4,215,165, 26,159, 91, 47,154,214,221,210, + 29,179,224,230,135,181,133,113, 4,178,218,173,158, 85, 7, 8,198,244, 35,240,132,114, 78,153,226,248,129,246,228, 52,161,210, +169,128, 52, 37,138, 45, 72,198,110,170, 83, 20, 15,188, 93,155, 93,165, 46, 15, 28, 59,223, 31,116, 34,107,161,146, 11, 29,153, +197, 34,102,164,183,115,107, 13, 91,235, 82, 19,162, 40,211,117, 87,186, 41,142, 39,193,152,255,102, 6,122,185, 43, 38, 4, 41, +209,184, 68, 63,175,237,223, 67, 65, 65,180,185, 11, 75,140, 96,132, 86, 85,210, 0, 47, 67,182,206,192, 5,172, 3,214, 41, 40, + 86, 75,211,252,230, 33, 87,106,130,167,193,118,161,255,108, 69,133, 62,243,142, 6,126,171,200,192, 47,199,225,129, 68, 5, 79, + 2, 7, 7, 57,210, 98,163, 9, 40,140,225,175,149,193, 10,207, 4,172,143,254,160,227,244,186, 5,233, 52,148,101,133,196,101, +103, 97,173,123,120, 21,204, 10, 23, 69, 50,209, 32,208,122,146,184, 77,228,117,201,145, 82,183,121, 55, 56,212,145,212, 0,101, + 13, 16, 16, 28,170, 94,190,121,195,118,124,227,252, 72, 32,159,174, 19, 77, 10,240,189, 68,207,123, 98,143,223,191, 50, 24, 56, + 98,125,202,231,139,179, 9, 69, 3, 19,124, 23,149, 10,133,200, 45,188,166,105, 63,107,116,202,243, 73, 44,207,182,135,242, 47, + 47, 79,181,122,218,166, 19,217, 91,124, 79, 10, 78,183, 86,186,187,125, 89,209,235,101,194,236, 34, 93,137, 62,199, 39, 59,155, +242,233,167,207,153,232,128, 57, 4, 65, 17, 0, 26, 87, 86,134,178,127,176,199,207,184, 29,141, 25, 48,158,106,240, 26,143, 47, +245,185,181, 88, 81,102, 96,174, 44,204, 20,138, 21,121,157,234,215, 98, 34,170, 99,151,188, 5,138, 30,104, 67, 0,243,134, 89, +151,103, 24,236, 92,113, 95,250,129, 76, 62,199,247, 6, 6, 68,176, 71, 49,130,125, 7, 77,245, 79,158,238,201,209,201,169,252, +240,250,131,220,237, 14,100,119,179, 39,239, 79,239,249,110, 54, 53,176,143, 39, 87,114, 62, 42, 40, 90, 51, 97,199,106,238, 50, +195, 54,238, 1, 96, 17,204, 13, 36,164, 93, 50, 23,114,202,109,163, 3,132,196,230, 63,252,252, 83,249,195,219, 19,210, 75,209, + 57,187,210,138,184, 21, 37,126,142, 90, 98, 16,149, 19,221,199, 91, 28, 23,226,217,195,191, 98,163, 7, 42,163, 38,131,243, 25, +231,221,160, 23,190, 63, 58,148, 86,103, 32,173,238,134, 22,247, 87,242,238,228, 59,202,239,162, 24, 91,237,181, 8,118,198, 94, +129,212,237,197,205,173, 28,158, 93, 88, 33,226, 86,170,140, 19, 14,255,196, 8,137,227, 50,170, 7,102, 4,185, 97,138,147,231, + 11,125,119,214,125, 69, 91, 59,170, 34,138, 38,161,133,223,211,100,237,147, 39, 95,203,254,134,158,253, 67, 99, 20,161, 91,133, +130, 1, 14,117,223,189,187, 98, 37, 62, 91, 76, 73, 67, 59,120,242, 68,254,233,183,191,147, 95,236, 63,146, 15, 71, 26,248, 23, + 35,125,166,125,226,175,144,228, 98,126,143, 22,121,197,142,193, 76,190,212,253,118,114,165, 69,216,106, 42,155,253, 92, 70,139, +129,124,254,116, 67, 11,191, 59, 89, 93,216, 51,127,127,114, 38,239,175,231,242,201,254,154,220,106, 1, 48, 66,119, 21, 20, 72, +208, 4,179, 21,118,124,113,135, 56,163,183, 53,153, 64,187, 29,206,135, 38, 12, 86, 52,160,232, 33, 40,122, 5,218,251, 61, 73, + 17,100,113,104, 48,120, 85, 38,106, 79, 51, 21, 84,226, 56, 72,111,111,200, 11,133, 22,242,221,228,142,129,223, 14,184,172, 1, +186,153,226, 91,101,186,200,142, 10,167,210, 19, 44,253,150,115,175,198,205,207,219, 40, 56,210, 28,228,116, 76, 43,108,102, 31, +102,113,141,152,140, 75,154,210, 59,215,145,215,193, 17, 45,200, 70,150, 46,181, 26, 44, 71,225,216,131, 69,200, 13, 14,125,231, +174, 1,118,168,228,166, 9, 12,230,141,147,169,102,229,117,206,140, 24,109,150,221,205,181,134,127, 78,158, 42, 37, 86, 19,130, +205,140,223,158,202,141, 46,170,136, 92,116, 67,171, 39,240,249,141,210, 6, 48, 71,145, 24,221,100, 43, 3, 67, 56, 32,155,236, +233, 11, 95, 95, 91, 97, 59,114, 56,236,243,154, 97,167, 10,174, 35,232, 56,152,169,161, 77,140,209, 4,102,237,120, 49, 70,210, +136, 72, 57,170, 43,147, 78, 13,138,120, 61, 2,230, 80,237, 45,172, 30, 97,203, 7,227,200,204,101, 36, 75,206, 73, 17, 64, 80, + 89, 35, 35, 93, 58,213, 11,200, 92,115,138, 18,175, 86, 10, 30, 48, 68,194, 79, 75,231, 40,219,117,183,169,246,101,160,180, 32, +179,139,196,129,112, 5,231, 6,219,200,198, 64,128,160,156,197,242, 96,116, 51, 95,232,239,132, 64,140, 6, 36,116, 58, 8, 66, +227,102,107, 55,162, 54, 8, 58,157, 94,198, 86, 41,192, 61, 0, 45,165,212,175, 94,176,202,253,216, 42, 55, 0, 22,209, 85,129, +199, 57,186, 74,168,204, 3,127, 63,136,208,240,218,219,102,172, 18,164, 39,215,145, 24,232,245, 94, 94,141, 72,239,194,189, 61, +218,221, 36,158,225,226,102,196,159, 69,242,132,131, 36, 74,109,166,140,231, 10,187, 69,182, 35,117,243,229,183, 38,209, 8, 64, + 85,192,154, 32, 57, 51,230, 68,144, 47, 78, 92, 59,222,198, 71,156, 77,139,110, 76, 13, 58,232,174, 68, 82, 55,162, 67, 8, 42, + 64,132, 47, 22, 51,190, 51, 84, 17, 29,112,211, 49, 2,139, 76,128, 2, 97,177,163,149, 57, 40, 71, 72, 34,145,104, 99,244,208, +233,181,136,209,192,103,110, 2, 28, 40, 54,159,111,105,197,216, 95,235, 18, 84, 5, 22, 0, 19,194,188, 98,245,189,161,107, 15, + 92,127,182, 0,161,138, 54,183, 68, 10, 73, 18,222, 49, 42,238,220,253,199,201,121,205, 50,118, 81,114, 23, 71, 33,247, 56,182, + 54, 39,110,184, 98, 43,187,205,228,149, 93, 45,204,102, 57,199,236,178,106, 35,123, 64,255, 29,174, 86,251, 59,187,186,222, 71, +154,160,109, 48, 57, 64,242,142,117, 57,158,140, 41, 18,195,118,118,171, 67,189,241,219,241, 88,191,111,141,137,222,181,158, 59, +184,158, 62,171,147, 5, 91,248, 9, 15,207,121, 99,252, 18, 45,221,118, 53, 55, 94,114,199,101,136,185,198,208, 5,140, 13,121, +111,218, 12,133, 73, 4, 59, 30, 3,235,227,228,118,206,128,244,243, 71,235,122, 6,244,245,172,232,202, 79, 14, 54, 53, 56, 14, + 24, 4, 48,242,233,234,231,227,111, 38,198, 26,216, 47,175,117,205, 68,102,139, 89,150, 25, 41,138, 87,183,122, 95,145,105,235, +255,240,225, 92,134, 26,176,162, 66,215,140,204,244, 29, 69,154,240,235,218,133, 16, 81,206,148, 73,127,110,201,164, 13,221, 16, +204, 95, 81, 84, 45, 22, 53, 59,148, 64, 93, 47,124,100,152,101,160,229, 45, 77,113, 15,129, 19,149,246,157, 85,177,107,232,176, +198,160,185,222,243,186, 79, 47, 71, 76,150, 95,233,231,239,108,172,104,208,236,202,143,199, 35,217, 90,105,201,129, 6,118, 24, +188,192, 41, 12,115,120,188,227, 77,253,243,241, 44,183,181,202,206,103,108,173,241,194,246, 59,232, 91,253,206, 80,126,241,249, + 83,249,238,232,146,231, 22,196, 95,254,244,246, 84, 43,195, 59, 82,223,240, 14,204,169,208,186,182,198,208, 75,224,110,174,247, +110,140, 0, 24,173, 96, 63, 78,230,112,196,195, 56, 70,100,117, 56,212,103, 54,146,179,139, 51,121,250, 20, 24,156,158,204,167, +155,250,251,215,228,236,234, 86,207,125,235,189, 66, 61, 17, 96,230,193,118,135,133,207,225,249, 21,247,119,160,154, 6,122, 42, + 60, 5, 58,236,190, 34, 49, 31,104,178,211,213,223,217, 33,168, 24, 96, 50,104,111,116, 0, 12,118,240,105,226,254, 35,135,103, + 99,185,208, 53,112, 53,186,210,160, 58,148,189,141, 30, 65,133, 0,207,165, 25,140,106, 54,229,248, 42,150, 15,103, 55, 76,166, +244,102, 9,128,163, 84,175,238,243,127,123,117, 41, 95, 62, 79,101, 4,219,216, 8,157,147,115,125,103, 29, 90,180,158, 95, 93, +235, 51, 31,107, 33,184, 46, 55,179, 90,239,173, 77, 16,235,197,184,144, 95,252,252,133,252,240,230,148, 2, 81,200, 79,254,244, +250, 88,250,186, 14, 96,142,195,243, 38,183,142,212, 82,215,191,141,116,240, 94,238,204, 28,141, 98, 73,115,147,168,230,136, 43, + 99,135,116, 81, 44,169,155,143,228, 39,197,193,194,195,169,238,112,214, 11, 41, 75, 4, 64, 28,118,247, 26,196,145,125, 12, 7, + 67, 82,222, 58,173,117, 86,220, 12,174, 14,148,193, 67, 37, 55, 87, 55, 42, 56,148, 73,108, 25,187,233, 93, 87,141,233, 7,125, +170,157,171,205, 64,221,137,121, 88, 4,247,179,212, 59, 3,156,173,147, 14,214, 54, 80, 29,102,244,110, 88,129,239, 91,186,177, + 76,203, 53,198,113,192,143,198,214, 58,179, 42,113, 41,245,164,230, 12, 14, 0,139, 96,111, 26,121,231,160,224,131,137,104, 34, +208, 75, 77,188, 3, 97,116,119,107,147, 27, 53,213,195,126, 67, 95, 10, 22, 83, 43,179,234, 19,207,162,214,195, 6,217, 82, 59, +106, 91, 16,167,246,187,127,158, 25, 38,243,144, 66, 27, 39,213, 23, 15,176, 24, 50, 74,180, 63,215,181,226, 79,221, 95, 30, 40, +224, 78,142,141,164,139, 65,171,220,227,139,107, 86,155,224,148, 50,232, 96,230,168,255,141,159, 99,146,210, 50,195, 5,108, 42, + 32,188,219,173, 53, 86, 50, 88,228,248, 51,116, 1,240,103,153, 38, 7, 68, 62,186, 54, 59,170,186,153, 3, 32,131,236,109,167, +213,114, 9, 94,211, 23, 8,192, 65,128, 55,176,177,239,167,134,137,200, 25,216,141,131,159,248,156, 27, 7, 13, 91,144, 64,243, + 87, 25, 93,205,112, 32, 97,108, 0, 12, 64,237,134, 26,168,148,208,122,133, 98, 28,222, 27,158,255, 84, 3, 53, 18,195,121,110, +146,152,200, 13,110,238,166,182, 17,245, 57,103,144,233, 4, 56,169, 64,155,112, 64,212,251,237,232,158,207,183,211, 49, 29,236, + 41, 17,250,152, 89,149, 78,117, 20, 38, 93,156, 53, 45,103,114,113, 49,230,218, 66,114,138,174, 1,146,187,152,154,230, 49,105, + 76, 21, 90,167,122,212,140, 33, 90,115, 58,114,251,220,140,127,150,116,173, 26,130,202, 20, 84,198, 16,188, 96, 80, 81,187,115, + 95, 49, 3,200, 38,247,121,109,217, 48, 58,152,150, 86, 15, 74,135, 28, 35, 85, 70, 99, 58,120,180,195,153, 54,214,212,164, 92, +152,250, 32, 90,121,165, 5,159,150,204, 53,120,104, 82, 85, 14,217,158,238, 68,246,243,160,135, 77,151, 70,207, 44,131,238,130, + 30, 6, 43,200,222, 49,159,108, 67,105,202, 0, 76, 33,137,194, 38, 71,150,143,164,135, 99,162,218,198, 95, 61,138, 95, 0,117, + 28, 19,116,122, 51, 94,178,123,197,153,126, 39, 53, 13,131, 8,212,197,109,206,230,176,119, 35, 6,228,182,241,219, 43,105, 40, +143, 24, 31,236,107,242,139,206,222,185, 6,175, 13, 61,172,230,250, 92, 46,174,175,189,221,205,255,101,155,176, 40, 23, 60, 39, + 46,245, 96,187,231,243,180, 52,190,204, 75, 6,219, 89,101,216,146,136, 10, 91, 70,223,196,251,159,233,126,221,213,247,176,185, +185,169,135,254,141, 51, 62, 58,236, 94, 89,167, 79,207,138, 60,229,152,208, 52, 32,140,245,129,195,174,203, 22,106, 91,146,194, + 88, 15, 53,215,123,187, 1,223,190,120,116,192, 36,225,248,236,220, 37,143, 99,158, 57, 55,211,165,236,174,164,178,181,181, 65, + 44, 66,172, 95,123,212,170,229, 15,239,206,233, 60, 54,151, 54,103,155,239, 1,196, 28,232,245,102, 61, 3, 22, 70, 87,236,232, +129, 13,129, 34,232,145, 38,165,120,254,147,229, 84, 86,239, 11,154,123, 64,151,125,111,163, 47, 31,206,187,156, 29,147, 87, 92, +185, 42, 30,206,193, 18, 70,191,133,225,133,240,140, 42, 59, 11,109,236,104,237,100, 51,189,177, 46, 86, 44,198,182, 65,114, 60, +236,111,104,130,113,109,251, 81,215,239,114, 98,128, 65,152,185,108,104, 16,203,167, 35, 13, 44, 35, 57,185,238,203,179,189, 33, + 13, 68,128,250,223, 66, 48,167, 65, 84,106,197,149,239,113,124,102, 89, 23,164, 45, 87, 76,144, 44,225, 31, 77, 23, 46,144,149, + 49, 72,253,249,253,189,252,245, 39,251,242,116,111,155,213,252, 83, 61, 39,222, 31,159,106,113, 50,109,176, 53, 96, 13, 76,167, + 24,107,172, 24,104, 45, 43,229,100, 26,177,189, 12,183,178, 71,195, 13,141, 45, 99,121,250,232, 5, 85,251,190,127,253, 86, 34, + 77,184,254,250,103, 95,115,238,142, 66, 1,179,124,156, 13, 8, 88,244,196,208,235, 60,210,119,119,161,239,200,100, 49, 44,177, + 52, 77, 20,188, 23, 36, 47,125, 2, 19,245, 9,179,115, 6, 86, 9,226, 14,217, 71,145,141,181,196, 89, 82, 56,167, 54, 32, 64, +116, 14, 1,159, 91,249,221,235, 75,185,253,205, 57,231,241,148, 76,166,137,149,117,188, 0,174, 59, 58, 62,100, 2,131,245,255, +157, 94,239,198,218,150, 22,141, 83,130,137,123, 90,197, 31,105,181,253,211,207,158, 51,177,187, 71,247,164,219, 33,247, 31,123, + 96,164,123,243,248, 52,145,255,241, 23,143,229,234,122, 33,111, 15, 83, 26,103, 97, 47,236,111,173,176,186, 71,130, 6,134,213, +202, 80,207,243,137,185, 40, 98, 60,157,118,250,214,217, 92, 29,242,251,128,186,199,103, 14,168, 57,210,147,237,245,117,158,131, +120, 62,123,219,155,220,231,255,191, 0, 3, 0, 4, 77, 15, 40,213, 32,193, 90, 0, 0, 0, 0, 73, 69, 78, 68,174, 66, 96,130, + 0}; + diff --git a/source/blender/editors/datafiles/startup.blend.c b/source/blender/editors/datafiles/startup.blend.c new file mode 100644 index 00000000000..f34cf16430b --- /dev/null +++ b/source/blender/editors/datafiles/startup.blend.c @@ -0,0 +1,7537 @@ +/* DataToC output of file <startup_blend> */ + +int datatoc_startup_blend_size= 240980; +char datatoc_startup_blend[]= { + 66, 76, 69, 78, 68, 69, 82, 45,118, 50, 53, 50, 82, 69, 78, 68, 32, 0, 0, 0, +144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 71, 76, 79, 66, 24, 1, 0, 0,144,180, 39,248,255,127, 0, 0, +201, 0, 0, 0, 1, 0, 0, 0, 32, 32, 32, 53, 5, 0, 0, 0,250, 0, 0, 0, 1, 0, 0, 1,200,187, 85, 3, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 16, 0, 0,128, 32, 4, 0, 47,104,111,109,101, 47, 98,114,101, 99,104,116, 47, 46, 98,108, +101,110,100,101,114, 47, 50, 46, 53, 50, 47, 99,111,110,102,105,103, 47,115,116, 97,114,116,117,112, 46, 98,108,101,110,100, 0, + 61,117,232, 0, 0, 0, 0, 0, 40, 0, 0, 0, 48, 0, 0, 0,208,181, 39,248, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, + 40,102,128, 4, 0, 0, 0, 0, 64,181, 39,248,255,127, 0, 0,104, 14,145, 4, 0, 0, 0, 0,112,181, 39,248,255,127, 0, 0, +133,119,232, 0, 0, 0, 0, 0,252, 0, 0, 0, 0, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 32, 0, 0, 0, 82, 69, 78, 68, + 40,102,128, 4, 0, 0, 0, 0, 82, 69, 78, 68, 32, 0, 0, 0,144,181, 39,248,255,127, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +152,212, 83, 3, 0, 0, 0, 0,192,181, 39,248,255,127, 0, 0, 67,126,232, 0, 0, 0, 0, 0,104,209, 83, 3, 0, 0, 0, 0, + 40,102,128, 4, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 83, 99,101,110,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 87, 77, 0, 0, 24, 1, 0, 0,152,212, 83, 3, 0, 0, 0, 0,111, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 77, 87,105,110, 77, 97,110, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,173, 70, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, + 88,225, 90, 3, 0, 0, 0, 0, 88,225, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0,248,213, 83, 3, 0, 0, 0, 0, +112, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16,174, 70, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115, 99,114,101,101,110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 30, 0,118, 7, 97, 4, + 0, 0, 0, 0, 1, 0,238, 3, 0, 0, 1, 0, 0, 0, 0, 0,248, 1, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0,136, 21, 55, 3, 0, 0, 0, 0,104,177,126, 4, 0, 0, 0, 0, +104,177,126, 4, 0, 0, 0, 0, 88, 3, 94, 3, 0, 0, 0, 0,232, 4, 94, 3, 0, 0, 0, 0,120, 6, 94, 3, 0, 0, 0, 0, +120, 6, 94, 3, 0, 0, 0, 0, 72, 7, 94, 3, 0, 0, 0, 0,120, 76, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 82, 65,110,105,109, 97,116,105,111,110, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0, +104,236, 83, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, 72,215, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,217, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, +184,216, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,217, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, +120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,219, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 52, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,220, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 52, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, + 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +192, 1, 84, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, +248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,222, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 0, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 4, 48, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 48, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,224, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0, + 40,224, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0, +152,224, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0, + 8,225, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,225, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0, +120,225, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0, +232,225, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,226, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0, + 88,226, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0, +200,226, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,227, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0, + 56,227, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0, +168,227, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0, + 24,228, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,228, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0, +136,228, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0, +248,228, 83, 3, 0, 0, 0, 0,232,218, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,229, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0, +104,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0, +216,229, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,230, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0, + 72,230, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0, +184,230, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,231, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0, + 40,231, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0, +152,231, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0, + 8,232, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,232, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0, +120,232, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0, +232,232, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,233, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0, + 88,233, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0, +200,233, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,234, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0, + 56,234, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0, +168,234, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0, + 24,235, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,235, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0, +136,235, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,236, 83, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,235, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,168,240, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0,184,216, 83, 3, 0, 0, 0, 0, 40,217, 83, 3, 0, 0, 0, 0, +120,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,234, 84, 3, 0, 0, 0, 0, + 56,234, 84, 3, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,237, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,239, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56,239, 83, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,237, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +168,240, 83, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,216,236, 83, 3, 0, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0,152,217, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 51, 1, 0, 0, 4, 4,222, 0, 52, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, 72, 22, 84, 3, 0, 0, 0, 0, +152,241, 83, 3, 0, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,241, 83, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 55, 0, 0, 94, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, 31, 0,222, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 51, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,243, 83, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,241, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 77, 67, 1,128,138,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 62, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,222, 0, 21, 1,205, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 21, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,120, 14, 84, 3, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0, +168,240, 83, 3, 0, 0, 0, 0, 72,216, 83, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, +232,218, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 83, 0, 0, 0, + 15, 15, 32, 4, 84, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 27, 84, 3, 0, 0, 0, 0, + 72, 35, 84, 3, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 24, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 26, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,140, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,132, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 32, 4, 26, 0, 32, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 26, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 24, 84, 3, 0, 0, 0, 0, + 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 31, 4, 0, 0, 18, 0, 0, 0, 57, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66, +205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 26, 0, 0, 0, 83, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 4, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0, +152, 27, 84, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +184, 55, 84, 3, 0, 0, 0, 0,200, 23, 84, 3, 0, 0, 0, 0,200,219, 83, 3, 0, 0, 0, 0, 72,223, 83, 3, 0, 0, 0, 0, +184,223, 83, 3, 0, 0, 0, 0, 56,220, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 53, 1, 0, 0, 47, 2, 0, 0, 3, 3,222, 0,251, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152, 40, 84, 3, 0, 0, 0, 0, 56, 54, 84, 3, 0, 0, 0, 0,184, 37, 84, 3, 0, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,184, 37, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 94, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,221, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 66, 67, 0, 0,200, 65, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,222, 0, + 26, 0,222, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 22, 2, 0, 0, 47, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0, 26, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 40, 39, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 37, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0,100, 66, 0, 0,131, 67, + 0, 0, 79,195, 0, 0, 0, 0,205, 0, 0, 0,222, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,204, 0, 0, 0, 18, 0, 0, 0,224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,222, 0, +225, 0,205, 0,207, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, + 53, 1, 0, 0, 21, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222, 0,225, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 1, 0, 0,152, 40, 84, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 42, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0, + 8, 42, 84, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0, + 68, 65, 84, 65,208, 0, 0, 0,104, 42, 84, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, +120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0, +120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, +232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 24,176, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +104, 84, 84, 3, 0, 0, 0, 0,200, 36, 84, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0,248,221, 83, 3, 0, 0, 0, 0, + 88,219, 83, 3, 0, 0, 0, 0, 24,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, + 85, 0, 0, 0,186, 2, 0, 0, 1, 1, 95, 2,102, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232, 78, 84, 3, 0, 0, 0, 0, 72, 83, 84, 3, 0, 0, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168, 56, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,117, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 23, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 95, 2, + 26, 0, 95, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24, 58, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136, 59, 84, 3, 0, 0, 0, 0, +168, 56, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, +255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, + 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0,193, 1, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 76, 2, 0, 0, 5, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136, 59, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 60, 84, 3, 0, 0, 0, 0, + 24, 58, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, + 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, +120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,111, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, + 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248, 60, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 73, 84, 3, 0, 0, 0, 0, +136, 59, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 96,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128, 96,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,147, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, +148, 3,163, 0,130, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 4, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200, 73, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248, 60, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,193, 1, 0, 0, 31, 4, 0, 0, +111, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95, 2, 76, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0, + 68, 65, 84, 65,104, 3, 0, 0, 56, 75, 84, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25,134,144, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63, +176, 84, 89,188, 0, 0, 0, 0, 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, + 43, 61,228, 62, 0, 0, 0, 0,164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, + 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65, 99,240,191, 62,110,116, 85, 63, + 80,185, 70,188, 0, 0, 82,180,206, 44,182,190,198,158, 47, 62, 36,239, 74, 63, 0, 0, 8,179, 67,108,117,194,183,204,216, 65, +104,156, 5,194,212,247,159,192,235, 62,114, 66, 59,254,213,193,157,225, 3, 66, 55, 8,160, 64, 68,239,209, 62, 51,177,205,190, +184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, + 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,215, 62,232,190, + 48,180, 81,191,184,158, 81,191,117, 90,127, 63,158,227, 95, 62, 26, 63,185, 62, 35, 44,185, 62,145,180,109,188,243, 90,129, 63, +138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, 9,185,108, 65,214,211,111, 65,255,189, 88, 64, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,189, 88, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190, +237,203,148,190, 3,236,234,190,214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,234,108, 69, 59, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 32, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 1, 0, 0,232, 78, 84, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 8,147, 84, 3, 0, 0, 0, 0,184, 55, 84, 3, 0, 0, 0, 0,168,220, 83, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, +216,222, 83, 3, 0, 0, 0, 0,136,221, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 85, 0, 0, 0,255, 0, 0, 0, 2, 2,192, 1,171, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24, 91, 84, 3, 0, 0, 0, 0,232,145, 84, 3, 0, 0, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 88, 85, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 86, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 85, 0, 0, 0,110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200, 86, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0, + 88, 85, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,254,194, 0, 0, 0, 0,200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, +145, 0,200, 0,127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0,145, 0, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 56, 88, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,168, 89, 84, 3, 0, 0, 0, 0, +200, 86, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168, 89, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 88, 84, 3, 0, 0, 0, 0, 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, + 0, 0, 16,193, 0, 0, 32, 65, 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,144, 0, 0, 0,111, 18,131, 58,111, 18,131, 58, + 0,124,146, 72, 0, 80, 67, 71, 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0,231, 0, +145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0,191, 1, 0, 0, +111, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,231, 0,145, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,240, 0, 0, 0, 24, 91, 84, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 92, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88, 92, 84, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 72,215, 84, 3, 0, 0, 0, 0,104, 84, 84, 3, 0, 0, 0, 0,104,222, 83, 3, 0, 0, 0, 0, 8,218, 83, 3, 0, 0, 0, 0, +248,221, 83, 3, 0, 0, 0, 0,216,222, 83, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 1, 1, 0, 0,186, 2, 0, 0, 12, 12,192, 1,186, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,152, 84, 3, 0, 0, 0, 0, 40,214, 84, 3, 0, 0, 0, 0,248,147, 84, 3, 0, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248,147, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,149, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 98, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,224, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, + 0,192,103, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,192, 1, + 26, 0,192, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,191, 1, 0, 0, + 1, 1, 0, 0, 26, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 1, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104,149, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,150, 84, 3, 0, 0, 0, 0, +248,147, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 55, 67, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, + 0, 0,199,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 8, 4, 0, 0, 2, 0, 3, 3, 0, 0, 2, 4, 6, 0,200, 0, +160, 1,200, 0,142, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0,160, 1, 0, 0, 2, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216,150, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,149, 84, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 32,193, 0, 0,104, 68, + 0, 0,199,195, 0, 0, 0, 0,231, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,230, 0, 0, 0, 18, 0, 0, 0,159, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0,124,146, 72, 0, 64, 28, 70, 10,215, 35, 60, 0, 0, 72, 66, 74, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 4, 4, 0,248, 0, +160, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200, 0, 0, 0,191, 1, 0, 0, + 27, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 0,160, 1, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 0, 1, 0, 0, 72,152, 84, 3, 0, 0, 0, 0, 25, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 2, 0, 2, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 72,215, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,147, 84, 3, 0, 0, 0, 0, + 72,223, 83, 3, 0, 0, 0, 0, 88,219, 83, 3, 0, 0, 0, 0,120,218, 83, 3, 0, 0, 0, 0,184,223, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 1, 1,222, 0,138, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,222, 84, 3, 0, 0, 0, 0,248,232, 84, 3, 0, 0, 0, 0, + 56,216, 84, 3, 0, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,168,217, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,194, 67, 0, 0, 0, 64, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, + 0, 0, 0, 0, 23, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 0, 10, 0,132, 1, 24, 0,132, 1, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0, 49, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,217, 84, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,216, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 33, 4, 0, 0,254, 4, 0, 0, 49, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,222, 0,138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 24,219, 84, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0, 23,255, 13, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,109,100, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, + 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65,231, 70,158, 62, 24,234,167, 62,160,206,159,187, 0, 0,170,180,243, 26,182,189,252, 74,179, 61, +195,111,128, 62, 0, 0,124, 51,211,120, 21,194,144, 5, 2, 66, 10,136,213,193,193,214,159,192,219, 38, 19, 66,196,173,255,193, +158,101,210, 65,173, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63, 2,201,194, 63, 61,254,144,191,244,250, 39,191, 8,165, 39,191,142,164,206, 63,250,192,142, 63, +180,164, 28, 63,149, 84, 28, 63,177,153,196,188,189,133, 76, 64, 8,108,228,190, 50,247,227,190, 81, 21, 64,191,119, 24,172,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190, 0, 0, 32, 65, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,240, 13,133, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 7, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,200,222, 84, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0, 40,215, 83, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 67,111,109,112,111,115,105,116,105,110,103, 0,103, 46, + 48, 48, 49, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, +184,120, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,236, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,237, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, + 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 64, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, +200,236, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, 8,242, 84, 3, 0, 0, 0, 0, 88,236, 84, 3, 0, 0, 0, 0, +168,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0,120,242, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,232,242, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 88,243, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,200,243, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, 56,244, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0,168,244, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, 24,245, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,136,245, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,248,245, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,104,246, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, + 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0,216,246, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, + 72,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, 72,247, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0,184,247, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 40,248, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,152,248, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, 8,249, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0,120,249, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,249, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, 88,250, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, +152,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,251, 84, 3, 0, 0, 0, 0, +197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,250, 84, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0, + 88,236, 84, 3, 0, 0, 0, 0,200,236, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0, 56,187, 85, 3, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, + 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,252, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 8,254, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8,254, 84, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,252, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, + 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +120, 12, 85, 3, 0, 0, 0, 0,168,251, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +248,238, 84, 3, 0, 0, 0, 0, 56,237, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,234, 0, 64, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 3, 85, 3, 0, 0, 0, 0,248, 10, 85, 3, 0, 0, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104, 0, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 1, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192,116, 68, 0, 0, 0, 0, 0, 0,208, 65, 0,128,190, 67, 0,192, 25, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,234, 0, + 26, 0,234, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,216, 1, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 0, 85, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66, 50, 51, 74,193,154,209,131, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,234, 0, + 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 4, 0, 0,254, 4, 0, 0, + 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,234, 0, 38, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0, 72, 3, 85, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0,120,255, 84, 3, 0, 0, 0, 0,136,238, 84, 3, 0, 0, 0, 0, +104,239, 84, 3, 0, 0, 0, 0, 24,238, 84, 3, 0, 0, 0, 0,248,238, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,186, 2, 0, 0, 4, 4,234, 0,122, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,152, 50, 85, 3, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, +216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 13, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +216, 14, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,156, 2, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216, 14, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,104, 13, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 88, 67, 0,192, 22,196, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, + 0, 0, 0, 0, 82, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0, 90, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,234, 0, 91, 2,217, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 65, 0, 0, 0,155, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 91, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,200, 35, 85, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 24, 52, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,120, 12, 85, 3, 0, 0, 0, 0, + 40,241, 84, 3, 0, 0, 0, 0,184,240, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0,152,241, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 1, 1, 19, 2, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0,248, 90, 85, 3, 0, 0, 0, 0, + 8, 53, 85, 3, 0, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,192, 4, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 19, 2, 26, 0, 19, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 8, 53, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, + 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 1, 2, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,250, 0, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0,120, 54, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, + 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0,232, 55, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,192,108,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0,184,195, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,130, 1,163, 0,112, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 40, 70, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 57, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 19, 2,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0,152, 71, 85, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0, 37,101,230, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249,173,116, 64, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 65,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 72, 1, 77,190, 0, 0, 0, 0,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63,223,149, 47, 63, 55, 70, 58, 63,192, 56, 49,188, 0, 0, 0, 0, 87,126,162,190,228,251,159, 62, + 56, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,150, 84, 28,191, 50,247,227, 62, 0, 0, 0, 0,110,101,239, 64,151, 62,208,192, + 77,255,170, 64, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, +216, 49, 49, 65,152, 9, 52, 65, 80, 25,195, 62,218,249,206, 62, 0,237,196,187, 0, 0, 96,179,234, 2,170,189,191, 98,167, 61, + 1,208,111, 62, 0, 0,224, 49,254,120, 21,194,182, 5, 2, 66, 70,136,213,193,239,214,159,192, 5, 39, 19, 66, 15,174,255,193, +217,101,210, 65,219, 40,160, 64,221,149, 47, 63, 85,126,162,190, 8,165, 39, 63, 0, 0, 0, 0, 51, 70, 58, 63,225,251,159, 62, +149, 84, 28,191, 0, 0, 0, 0,191, 56, 49,188, 54, 53,101, 63, 50,247,227, 62, 0, 0, 0, 0, 90, 38,173,190,254,221,192,190, +152, 9, 52,193, 0, 0,128, 63, 4, 6,158, 63,214, 78,155,191,244,250, 39,191, 8,165, 39,191,170,164,167, 63,203,232,152, 63, +180,164, 28, 63,149, 84, 28, 63, 1,127,159,188,123, 18, 91, 64, 8,108,228,190, 50,247,227,190,222,212, 27,191,168, 86,184,191, +216, 49, 49, 65,152, 9, 52, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,241, 22, 72, 63, 78,162,246,190, 44, 8, 90,190, 2, 35,171,190,214,211,111, 65,214,211,111, 65, + 0, 0, 0, 0, 0, 0, 0, 0,223, 34, 9, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, 72, 75, 85, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 24, 92, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0, 24, 52, 85, 3, 0, 0, 0, 0, +216,239, 84, 3, 0, 0, 0, 0,168,237, 84, 3, 0, 0, 0, 0,104,239, 84, 3, 0, 0, 0, 0, 72,240, 84, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 16, 16, 20, 4,166, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 95, 85, 3, 0, 0, 0, 0,152,119, 85, 3, 0, 0, 0, 0, + 8, 93, 85, 3, 0, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 37, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 94, 85, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 93, 85, 3, 0, 0, 0, 0, 0, 0, 32,193, 0, 0, 0, 68, + 0, 0, 32,193, 0, 0, 0, 68,110,142,241,195, 55,199,120, 68,240, 80,128,193,136, 2, 4, 68, 3, 4, 0, 0, 20, 4, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, + 18, 0, 0, 0,139, 1, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70,236, 81,184, 61, 10,215, 19, 64, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 20, 4,140, 1, 3, 4,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,232, 95, 85, 3, 0, 0, 0, 0, +177, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 10,215, 19, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 6, 61,181, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,120, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 24, 92, 85, 3, 0, 0, 0, 0,232,235, 84, 3, 0, 0, 0, 0,216,239, 84, 3, 0, 0, 0, 0, +184,240, 84, 3, 0, 0, 0, 0, 40,241, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 19, 1, 0, 0, 6, 6, 0, 2, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,125, 85, 3, 0, 0, 0, 0, 24,186, 85, 3, 0, 0, 0, 0,168,121, 85, 3, 0, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,168,121, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,123, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, + 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 0, 2, + 26, 0, 0, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 24,123, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,136,124, 85, 3, 0, 0, 0, 0, +168,121, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, + 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136,124, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 24,123, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0,191, 0, 0,192, 63, + 0, 0, 64, 60, 0, 0,125, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 0, 0, + 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2,250, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 72, 33, 0, 0,248,125, 85, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, + 0, 0, 0, 0,100, 0, 0, 0,154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,200,187, 85, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, +200,234, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 68,101,102, 97,117,108, +116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +232,188, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0, + 8,202, 85, 3, 0, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92,100,177, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 88,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, +232,188, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +200,189, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 97, 4, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +118, 7, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 24,191, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 4, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, +168,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136,191, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 70, 4, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +216,192, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6,116, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, +104,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7,116, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72,193, 85, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 48, 6, 92, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,194, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 8,195, 85, 3, 0, 0, 0, 0, 40,194, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,195, 85, 3, 0, 0, 0, 0,152,194, 85, 3, 0, 0, 0, 0,200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,195, 85, 3, 0, 0, 0, 0, 8,195, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,196, 85, 3, 0, 0, 0, 0,120,195, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,196, 85, 3, 0, 0, 0, 0,232,195, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,197, 85, 3, 0, 0, 0, 0, 88,196, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,197, 85, 3, 0, 0, 0, 0,200,196, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,198, 85, 3, 0, 0, 0, 0, 56,197, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,198, 85, 3, 0, 0, 0, 0,168,197, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,198, 85, 3, 0, 0, 0, 0, 24,198, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,199, 85, 3, 0, 0, 0, 0,136,198, 85, 3, 0, 0, 0, 0, 56,190, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +216,199, 85, 3, 0, 0, 0, 0,248,198, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 72,200, 85, 3, 0, 0, 0, 0,104,199, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +184,200, 85, 3, 0, 0, 0, 0,216,199, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 40,201, 85, 3, 0, 0, 0, 0, 72,200, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +152,201, 85, 3, 0, 0, 0, 0,184,200, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,201, 85, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 40,201, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,184,193, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8,202, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +216,205, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0, 88,189, 85, 3, 0, 0, 0, 0, +200,189, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, + 71, 4, 0, 0, 97, 4, 0, 0, 7, 7,119, 7, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 40,193, 55, 3, 0, 0, 0, 0, +152,201, 86, 3, 0, 0, 0, 0,152,201, 86, 3, 0, 0, 0, 0,248,202, 85, 3, 0, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,104, 96, 3, 0, 0, 0, 0, 72, 22, 94, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248,202, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,204, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,148, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,238, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,119, 7, + 26, 0,119, 7, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,118, 7, 0, 0, + 71, 4, 0, 0, 96, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,119, 7, 26, 0, 2, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,195, 55, 3, 0, 0, 0, 0, +120, 77,142, 4, 0, 0, 0, 0,120, 77,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56, 24, 94, 3, 0, 0, 0, 0,232, 28, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,104,204, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +248,202, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 97, 4, 0, 0, 97, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 55, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0, + 8,202, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, + 56,190, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0,115, 3, 0, 0, + 4, 4, 70, 1,116, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,188, 55, 3, 0, 0, 0, 0, 72, 85, 86, 3, 0, 0, 0, 0, + 24, 93, 86, 3, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200, 22, 94, 3, 0, 0, 0, 0,184, 29, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,206, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,208, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,160, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,248, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 70, 1, 31, 0, 70, 1, 31, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 85, 3, 0, 0,115, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 31, 0, 3, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,192, 55, 3, 0, 0, 0, 0,248, 24,142, 4, 0, 0, 0, 0, +248, 24,142, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 31, 94, 3, 0, 0, 0, 0, + 24, 34, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 56,208, 85, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,206, 85, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,163, 67, 0, 64, 85,196, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,154, 67, 0, 64, 85,196, 0, 0, 0, 0, + 53, 1, 0, 0, 70, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 74, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 70, 1, 85, 3, 53, 1, 85, 3, 0, 0, +104, 88,127, 4, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 49, 6, 0, 0,118, 7, 0, 0, 0, 0, 0, 0, 84, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 70, 1, 85, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,189, 55, 3, 0, 0, 0, 0,152, 68,129, 4, 0, 0, 0, 0, + 40, 15, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 35, 94, 3, 0, 0, 0, 0, + 72, 39, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0, + 72, 85, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0,184,172,127, 4, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +152,107, 86, 3, 0, 0, 0, 0,216,205, 85, 3, 0, 0, 0, 0,232,188, 85, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0, +184,193, 85, 3, 0, 0, 0, 0,136,191, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 91, 0, 0, 0, 15, 15, 48, 6, 92, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,147, 55, 3, 0, 0, 0, 0, +104, 98, 86, 3, 0, 0, 0, 0, 24,106, 86, 3, 0, 0, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 30, 94, 3, 0, 0, 0, 0, 24, 40, 94, 3, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,136, 95, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248, 96, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160,137, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, + 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, + 26, 0, 48, 6, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 5, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,149, 55, 3, 0, 0, 0, 0, +200,111,129, 4, 0, 0, 0, 0,200,111,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8, 42, 94, 3, 0, 0, 0, 0,120, 44, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,248, 96, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136, 95, 86, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, + 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 18, 0, 0, 0, 65, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, + 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0, 48, 6, + 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, + 26, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 66, 0, 6, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,148, 55, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184, 45, 94, 3, 0, 0, 0, 0, 56, 51, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,216, 0, 0, 0,104, 98, 86, 3, 0, 0, 0, 0,176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,152,107, 86, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,152, 94, 86, 3, 0, 0, 0, 0,104,192, 85, 3, 0, 0, 0, 0, +248,191, 85, 3, 0, 0, 0, 0, 24,191, 85, 3, 0, 0, 0, 0,216,192, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 69, 4, 0, 0, 3, 3, 70, 1,209, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,144, 55, 3, 0, 0, 0, 0,104,111, 86, 3, 0, 0, 0, 0, 24,125, 86, 3, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, +248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152, 40, 94, 3, 0, 0, 0, 0, + 8, 52, 94, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,108, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248,109, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,244, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 69, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 66, 67, 0, 0,200, 65, 0, 0, 66, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0, 70, 1, 26, 0, 70, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0, 44, 4, 0, 0, 69, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 1, 26, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104,146, 55, 3, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 56,223,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 53, 94, 3, 0, 0, 0, 0,104, 56, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,109, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,108, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,154, 67, 0, 0, 37,195, 0, 0, 0, 0, 53, 1, 0, 0, 70, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, + 0, 0, 0, 0, 52, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 52, 1, 0, 0, 18, 0, 0, 0,182, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 6, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0, 70, 1,183, 0, 53, 1,165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 49, 6, 0, 0,118, 7, 0, 0,117, 3, 0, 0, 43, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 70, 1,183, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,145, 55, 3, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0,184, 89,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168, 57, 94, 3, 0, 0, 0, 0, 8, 60, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,104,111, 86, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,248, 87,141, 4, 0, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,216,112, 86, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 14, 0, 0, 0, 14, 0, 0, 0, + 56,113, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,224, 0, 0, 0, 56,113, 86, 3, 0, 0, 0, 0,222, 0, 0, 0, 14, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 21, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,152,126, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,107, 86, 3, 0, 0, 0, 0, 72,193, 85, 3, 0, 0, 0, 0,168,190, 85, 3, 0, 0, 0, 0,248,191, 85, 3, 0, 0, 0, 0, +184,193, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0, 69, 4, 0, 0, + 1, 1, 48, 6,233, 3, 1, 0, 0, 0, 0, 0, 0, 0, 8, 0, 88,150, 55, 3, 0, 0, 0, 0,232,183, 86, 3, 0, 0, 0, 0, +120,200, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 52, 94, 3, 0, 0, 0, 0, 8, 21, 55, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,127, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64,123, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,198, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 47, 6, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 48, 6, 26, 0, 48, 6, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 93, 0, 0, 0,118, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 6, 26, 0, 9, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,160, 55, 3, 0, 0, 0, 0,152, 81,128, 4, 0, 0, 0, 0, +152, 81,128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 64, 94, 3, 0, 0, 0, 0, + 72, 68, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248,128, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0,136,127, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 67, 0,192, 37,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0,192, 37,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0,150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,151, 2,143, 0,151, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,175, 1, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0,151, 2, 10, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,157, 55, 3, 0, 0, 0, 0,136, 13,129, 4, 0, 0, 0, 0, +136, 13,129, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136, 69, 94, 3, 0, 0, 0, 0, +248, 71, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,154, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0,248,128, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 33, 67, 0,128,157,195, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67,136,135,157,195, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 55, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 56, 1,143, 0, 56, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,159, 0, 0, 0,119, 0, 0, 0,174, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 56, 1, 11, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 56, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,158, 55, 3, 0, 0, 0, 0,248, 8, 54, 3, 0, 0, 0, 0, +248, 8, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 73, 94, 3, 0, 0, 0, 0, +168, 75, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,157, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200,178, 86, 3, 0, 0, 0, 0,200,154, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 52, 67, 0,192,115,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,115,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0,206, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,207, 3,163, 0,207, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 6, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,152, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200,178, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,157, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 0, 0, 47, 6, 0, 0,119, 0, 0, 0, 69, 4, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,144, 5,207, 3, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,151, 55, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,106, 94, 3, 0, 0, 0, 0, +216,105, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,180, 86, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, + 56,180, 86, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0,255,255,139, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,200,120,204, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,218,205, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 39,240,191, 62,125,116, 85, 63, 96,189, 70,188, 0, 0,186,180, + 34,195,128,190, 66, 66,248, 61,254,111, 15, 63, 0, 0,150, 52, 61,119,117,194,106,214,216, 65, 98,162, 5,194,251,254,159,192, + 72, 51,114, 66,244,243,213,193, 71,219, 3, 66,160, 0,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,177,157,229, 62, 64, 74, 36,191,222,160, 81,191,184,158, 81,191, +115, 90,127, 63,248, 96,158, 62, 9, 46,185, 62, 35, 44,185, 62,143,180,109,188,235, 2,183, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 21,163,108, 65,214,211,111, 65, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 97,199,184, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,142, 79,168, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 30, 33, 12, 66, 85,152,137, 66,116, 27,126, 66, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, +232,183, 86, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 24, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +205,204,204, 61, 0, 64,156, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0,255,255, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, +200,187, 85, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 71, 97,109,101, 32, 76, +111,103,105, 99, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, +152,218, 86, 3, 0, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 40,204, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 20, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 56,207, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, +200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,124, 3, 20, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +124, 3,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0, 20, 1, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,212, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,209, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0,104,209, 86, 3, 0, 0, 0, 0, +184,203, 86, 3, 0, 0, 0, 0, 8,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0,216,209, 86, 3, 0, 0, 0, 0, + 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,210, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, 72,210, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0,184,210, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +152,211, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, 40,211, 86, 3, 0, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 8,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0,152,211, 86, 3, 0, 0, 0, 0, +152,204, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +120,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, 8,212, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +232,212, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0,120,212, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 88,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0,232,212, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +200,213, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, 88,213, 86, 3, 0, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 56,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0,200,213, 86, 3, 0, 0, 0, 0, +152,204, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +168,214, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, 56,214, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 24,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0,168,214, 86, 3, 0, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +136,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, 24,215, 86, 3, 0, 0, 0, 0, +120,205, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +248,215, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0,136,215, 86, 3, 0, 0, 0, 0, + 56,207, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +104,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0,248,215, 86, 3, 0, 0, 0, 0, +232,205, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +216,216, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0,104,216, 86, 3, 0, 0, 0, 0, +168,207, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 72,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0,216,216, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, +184,217, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,218, 86, 3, 0, 0, 0, 0, 72,217, 86, 3, 0, 0, 0, 0, + 24,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, + 40,218, 86, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,217, 86, 3, 0, 0, 0, 0, +136,208, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +152,218, 86, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,184,203, 86, 3, 0, 0, 0, 0, 40,204, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, + 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, 40,185, 87, 3, 0, 0, 0, 0, +136,219, 86, 3, 0, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,219, 86, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,248,220, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,220, 86, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,219, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, + 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,152,218, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, + 88,206, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0,152,204, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 4, 4,234, 0, 20, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,136, 4, 87, 3, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, +200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 88,223, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,224, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 55, 0, 0,106, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,233, 0, 0, 0, 0, 0, 0, 0, 30, 0, 0, 0, + 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,234, 0, 31, 0,234, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0,245, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,224, 86, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 88,223, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,105, 67, 0, 64, 80,196, 0, 0, 0, 0, + 0, 0, 0, 0,254,255, 88, 67,254,255,116,195, 0, 0, 0, 0,217, 0, 0, 0,234, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, + 0, 0, 0, 0, 78, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 1, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,234, 0,245, 0,217, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 21, 4, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,244, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +234, 0,245, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,184,245, 86, 3, 0, 0, 0, 0,165, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 8, 6, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,104,222, 86, 3, 0, 0, 0, 0, + 72,203, 86, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, 88,206, 86, 3, 0, 0, 0, 0,200,206, 86, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 19, 1, 0, 0, 17, 17, 20, 4, 20, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0,232, 77, 87, 3, 0, 0, 0, 0, +248, 6, 87, 3, 0, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,150, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,130, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 63, 68, 0, 0,200, 65, 0,192, 63, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 20, 4, 26, 0, 20, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 20, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,120, 11, 87, 3, 0, 0, 0, 0,248, 6, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 67, + 0, 0,122,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,122,195, 0, 0, 0, 0,203, 0, 0, 0,220, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, + 0, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,250, 0,203, 0,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0,250, 0, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,120, 11, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104, 8, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 68, + 0, 0, 0, 0, 0, 0,112, 67, 4, 0, 39,195, 0,224,180, 68, 1, 0,224,194, 0, 0,176, 67, 39, 3, 0, 0, 56, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 38, 3, 0, 0, + 18, 0, 0, 0,249, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,250, 70, 0, 0,250, 70, 0, 0, 0, 63, 72,225,154, 63, + 10, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, 56, 3,250, 0, 39, 3,232, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0, 19, 4, 0, 0, 26, 0, 0, 0, 19, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 3,250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 0, 0, 0,232, 12, 87, 3, 0, 0, 0, 0, +178, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, 8, 6, 87, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, + 24,208, 86, 3, 0, 0, 0, 0,120,205, 86, 3, 0, 0, 0, 0, 56,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 9, 9,130, 1,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 82, 87, 3, 0, 0, 0, 0, 56,109, 87, 3, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, +104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 79, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +104, 81, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,209, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0,193, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,181, 67, 0, 0,200, 65, 0,128,181, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,130, 1, 26, 0,130, 1, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +130, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 81, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248, 79, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,181, 67, 0, 0, 0, 0, 0,128,218, 67, + 0, 0, 0, 0,131,248, 1, 68, 0, 0, 0, 0,126, 86, 5, 68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,129, 1, 0, 0, 0, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, + 0, 0, 0, 4, 10, 0,130, 1,140, 1,130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +125, 3, 0, 0,254, 4, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +130, 1,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0,216, 82, 87, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, 8, 79, 87, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, +248,208, 86, 3, 0, 0, 0, 0, 24,208, 86, 3, 0, 0, 0, 0,168,207, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 1, 1,167, 2,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,133, 87, 3, 0, 0, 0, 0,152,149, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, +200,128, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,111, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 56, 0,192, 41, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,166, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,167, 2, 26, 0,167, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,113, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +136,114, 87, 3, 0, 0, 0, 0,168,111, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,213, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0,140, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,114, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +248,115, 87, 3, 0, 0, 0, 0, 24,113, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, + 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0, 47, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248,115, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, +200,128, 87, 3, 0, 0, 0, 0,136,114, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0,192,108,196, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128, 23,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,111, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, + 18, 0, 0, 0, 6, 0,180, 0,112, 2,163, 0, 94, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +123, 3, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,128, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,115, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +213, 0, 0, 0,123, 3, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +167, 2,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 56,130, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56,130, 87, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +149, 53,207, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,126,177,113, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +190, 35, 30, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,167,147,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,111, 18,131,187, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,149, 53,207, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 63,156, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232,133, 87, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, + 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,184,150, 87, 3, 0, 0, 0, 0, +199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,110, 87, 3, 0, 0, 0, 0,232,205, 86, 3, 0, 0, 0, 0, + 8,205, 86, 3, 0, 0, 0, 0,248,208, 86, 3, 0, 0, 0, 0,136,208, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0,186, 2, 0, 0, 3, 3,212, 0,166, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,154, 87, 3, 0, 0, 0, 0, 8,184, 87, 3, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, + 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,151, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 24,153, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 84, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,211, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 83, 67, 0, 0,200, 65, 0, 0, 83, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, + 4, 0, 12, 4, 10, 0,212, 0, 26, 0,212, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 21, 1, 0, 0, 46, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 24,153, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,168,151, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, + 0, 0, 80, 66, 0, 0,119, 67, 0, 0,189,195, 0, 0, 0, 0,195, 0, 0, 0,212, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0,194, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,194, 0, 0, 0, 18, 0, 0, 0,139, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, + 0, 0, 0, 4, 6, 0,212, 0,140, 1,195, 0,122, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,211, 0, 0, 0, 47, 1, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +212, 0,140, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0,136,154, 87, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 68, 65, 84, 65, 16, 0, 0, 0,248,155, 87, 3, 0, 0, 0, 0,223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, + 88,156, 87, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, 88,156, 87, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0,184,185, 87, 3, 0, 0, 0, 0, +195, 0, 0, 0, 1, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, 40,202, 86, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 83, 99,114,105,112,116,105,110,103, 0,103, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, +104,193, 87, 3, 0, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +216,186, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 40,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, +184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +152,188, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,187, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3,187, 2, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, +120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 88,190, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +244, 3, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, + 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 28, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 24,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,244, 3, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 12, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,193, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0, +104,193, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0, +216,193, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,194, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0, + 72,194, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0, +184,194, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,195, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0, + 40,195, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0, +152,195, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0, + 8,196, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232,196, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0, +120,196, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0, +232,196, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200,197, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0, + 88,197, 87, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0, +200,197, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168,198, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0, + 56,198, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0, +168,198, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0, + 24,199, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248,199, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0, +136,199, 87, 3, 0, 0, 0, 0,232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0, +248,199, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216,200, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0, +104,200, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0, +216,200, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184,201, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0, + 72,201, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0, +184,201, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152,202, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0, + 40,202, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8,203, 87, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +152,202, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 72,207, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0, 72,187, 87, 3, 0, 0, 0, 0,184,187, 87, 3, 0, 0, 0, 0, + 8,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,163, 88, 3, 0, 0, 0, 0, +216,163, 88, 3, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,204, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,205, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,205, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,204, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 72,207, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,120,203, 87, 3, 0, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,136,192, 87, 3, 0, 0, 0, 0, 40,188, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 11, 2, 0, 0, 4, 4, 10, 1, 12, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0,104,245, 87, 3, 0, 0, 0, 0, + 56,208, 87, 3, 0, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,168,209, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205, 67, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,248, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 1, 0, 0, + 0, 0, 0, 0, 30, 0, 0, 0, 0,128,137, 67, 0, 0,200, 65, 0,128,137, 67, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 31, 0, 10, 1, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0,237, 1, 0, 0, 11, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 31, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,168,209, 87, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56,208, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,132, 67, + 0, 64, 80,196, 0, 0, 0, 0, 0, 0, 0, 0,255,255,120, 67,255,127,246,195, 0, 0, 0, 0,249, 0, 0, 0, 10, 1, 0, 0, + 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0,126, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, + 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 1, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0, 10, 1,237, 1,249, 0,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,236, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,237, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,248, 0, 0, 0,152,230, 87, 3, 0, 0, 0, 0, +165, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 21, 0, 0,160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,232,246, 87, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0, + 72,207, 87, 3, 0, 0, 0, 0, 56,191, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,200,190, 87, 3, 0, 0, 0, 0, +232,189, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,251, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184,250, 87, 3, 0, 0, 0, 0, +232, 28, 88, 3, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,247, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72,249, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 76, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72,249, 87, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216,247, 87, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,253, 67, 0, 0, 0, 0, 0, 0, 48, 65, 0, 0, 0, 0, 0, 0,245, 67, 0, 0, 0, 0, 0, 0,129, 67, +234, 1, 0, 0,251, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,233, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,251, 1, 2, 1,234, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, +184,250, 87, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 8, 30, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0, +232,246, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, +200,190, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, + 1, 1,251, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 41, 88, 3, 0, 0, 0, 0, + 72, 63, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248, 30, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,102, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128,253, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,250, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,251, 1, 26, 0,251, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104, 32, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0,248, 30, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 70,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67,255,127, 70,196, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0, 43, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,160, 0, 44, 3,143, 0, 26, 3, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,249, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,132, 1, 0, 0, 5, 0, 3, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216, 33, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0,104, 32, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 16, 67, 0, 0,206,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 0, 0,206,194, 0, 0, 0, 0, +143, 0, 0, 0,160, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,142, 0, 0, 0, 18, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,102, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0, 55, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 6, 0, 34, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 35, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 36, 88, 3, 0, 0, 0, 0,216, 33, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 35, 67, 0,128,142,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, 0, 0, 26,196, 0, 0, 0, 0, +163, 0, 0, 0,180, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,162, 0, 0, 0, 18, 0, 0, 0,121, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0,122, 2,163, 0,104, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,243, 3, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 36, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 35, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,249, 1, 0, 0,243, 3, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,251, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 38, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, + 40, 38, 88, 3, 0, 0, 0, 0,159, 0, 0, 0, 1, 0, 0, 0, 0, 0,140, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 42,240,182, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 80, 1,128,191, 0, 0,128,191, + 0, 0, 0, 0, 0, 0, 0, 0,225,215,163,188, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,176, 84, 89,188, 0, 0, 0, 0, + 53,177,205,190,142, 74, 70, 62,166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0, +164, 96, 68, 65,111,121,173,192,248,209,213, 64, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65,217,236,191, 62, 54,117, 85, 63, 0,247, 70,188, 0,192, 32,182, + 15,232,143,190,210,186, 10, 62, 44, 83, 32, 63, 0,192, 24, 54,215,104, 25,196,133,132,135, 67, 37, 9,167,195,136,252, 71,194, + 3, 54, 25, 68,158, 87,135,195,205,209,166, 67,151,254, 71, 66, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, + 70,119,105, 63,143, 74, 70, 62, 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,214,211,111,193, 0, 0,128, 63,178,157,229, 62,242,252, 18,191,222,160, 81,191,184,158, 81,191, +117, 90,127, 63, 8,179,141, 62, 9, 46,185, 62, 35, 44,185, 62,145,180,109,188,225,188,163, 63,129, 63,228,190, 42, 61,228,190, + 0, 0, 0, 0, 0, 0, 0, 0, 96,132,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, +214,211,111, 65,214,211,111, 65, 0, 0, 0, 0, 0, 0, 0, 0,138, 93,108, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0, +216, 41, 88, 3, 0, 0, 0, 0,160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 7, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 3, 0, 0, 0, 1, 0, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,250, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 16, 0, 0, 0, 7, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,104, 64, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0, + 8, 30, 88, 3, 0, 0, 0, 0,216,186, 87, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,168,191, 87, 3, 0, 0, 0, 0, + 56,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 27, 1, 0, 0, + 18, 18,248, 1, 28, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 68, 88, 3, 0, 0, 0, 0, +104,102, 88, 3, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 88, 65, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,200, 66, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,231, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +200, 66, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 65, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,251, 67, 0, 0, 0, 0, 0, 0, 65, 67, 0, 0, 0, 0, 0,128,243, 67, 0, 0, 0, 0, 0, 0,129, 67, +231, 1, 0, 0,248, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,230, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 2, 2, 0, 0, 1, 0, 3, 3, 2, 0, 0, 4, 10, 0,248, 1, 2, 1,231, 1, 2, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 26, 0, 0, 0, 27, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 1, 0, 0, + 56, 68, 88, 3, 0, 0, 0, 0,181, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 62, 62, 62, 32, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,112,121,116,104,111,110, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,136,103, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0, +104, 64, 88, 3, 0, 0, 0, 0, 24,192, 87, 3, 0, 0, 0, 0,120,189, 87, 3, 0, 0, 0, 0, 8,189, 87, 3, 0, 0, 0, 0, +136,192, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0,186, 2, 0, 0, + 3, 3, 10, 1,174, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88,107, 88, 3, 0, 0, 0, 0, +248,127, 88, 3, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +120,104, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,232,105, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,163, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,133, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,149, 67, 0, 0,200, 65, 0,128,149, 67, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 10, 1, 26, 0, 10, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 13, 2, 0, 0, 38, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +232,105, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,104, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,128,131, 67, 0, 0,228,194, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 67, 0, 0, 2,195, 0, 0, 0, 0, +249, 0, 0, 0, 10, 1, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0,147, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 18, 2, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0, 10, 1,148, 0,249, 0,130, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,245, 3, 0, 0,254, 4, 0, 0, 39, 2, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 1,148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 1, 0, 0, + 88,107, 88, 3, 0, 0, 0, 0,169, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 68, 65, 84, 65, 16, 0, 0, 0,200,108, 88, 3, 0, 0, 0, 0, +223, 0, 0, 0, 1, 0, 0, 0, 13, 0, 0, 0, 13, 0, 0, 0, 40,109, 88, 3, 0, 0, 0, 0, 68, 65, 84, 65,208, 0, 0, 0, + 40,109, 88, 3, 0, 0, 0, 0,222, 0, 0, 0, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 20, 0, 0, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, + 21, 0, 1, 0, 1, 0, 1, 0,120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,104,181, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 72,129, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,232,200, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,200,110, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0,200,195, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0,232,176, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 1, 0, 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 24,176, 89, 3, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,120,129, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,103, 88, 3, 0, 0, 0, 0, 88,190, 87, 3, 0, 0, 0, 0,152,188, 87, 3, 0, 0, 0, 0,248,192, 87, 3, 0, 0, 0, 0, +168,191, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0,186, 2, 0, 0, + 9, 9,248, 1,158, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 88, 3, 0, 0, 0, 0, +184,162, 88, 3, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,130, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,131, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 73, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0,252, 67, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,224,189, 68, 0, 0,200, 65, 0,224,189, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,248, 1, 26, 0,248, 1, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 29, 1, 0, 0, 54, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,131, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,130, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,189, 68, 0, 0, 0, 0, 0,192, 22, 68,236,140, 21, 68, 20, 51,102, 68,120, 83, 49, 67, 68,214,212, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,247, 1, 0, 0, 0, 0, 0, 0,131, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10,215, 35, 60, 0, 0,122, 68, 0, 0, 0, 0, 1, 0, 3, 0, 0, 0, 0, 4, 10, 0,248, 1,132, 1,248, 1,132, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,247, 1, 0, 0, 55, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 1,132, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 2, 0, 0, + 72,133, 88, 3, 0, 0, 0, 0,172, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 12, 0, 7, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,231, 1, 0, 0,243, 1, 0, 0, +122, 1, 0, 0,124, 1, 0, 0,231, 1, 0, 0,243, 1, 0, 0, 4, 0, 0, 0,124, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 78, 0, 0,208, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0,248, 10, 89, 3, 0, 0, 0, 0, +184,185, 87, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 85, 86, 32, 69,100,105, +116,105,110,103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0, +216,173, 88, 3, 0, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +120,159, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +248,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, +136,165, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +104,166, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 72,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 40,168, 88, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,132, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +132, 2, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +120,169, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +232,169, 88, 3, 0, 0, 0, 0, 8,169, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 88,170, 88, 3, 0, 0, 0, 0,120,169, 88, 3, 0, 0, 0, 0,104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +200,170, 88, 3, 0, 0, 0, 0,232,169, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 56,171, 88, 3, 0, 0, 0, 0, 88,170, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +168,171, 88, 3, 0, 0, 0, 0,200,170, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 24,172, 88, 3, 0, 0, 0, 0, 56,171, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +136,172, 88, 3, 0, 0, 0, 0,168,171, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +248,172, 88, 3, 0, 0, 0, 0, 24,172, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, +104,173, 88, 3, 0, 0, 0, 0,136,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,152,168, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,104,173, 88, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,248,172, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0,216,173, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, +168,177, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0,248,165, 88, 3, 0, 0, 0, 0, +104,166, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,214, 2, 0, 0, 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +104, 10, 89, 3, 0, 0, 0, 0,104, 10, 89, 3, 0, 0, 0, 0,200,174, 88, 3, 0, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0,200,174, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 56,176, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, + 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, + 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, +188, 2, 0, 0,213, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 1, 0, 0, 56,176, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +200,174, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, + 0, 0, 0,192, 0, 0, 0, 0,112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, + 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, + 2, 0,112, 7, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +214, 2, 0, 0,214, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,120,234, 88, 3, 0, 0, 0, 0, +216,173, 88, 3, 0, 0, 0, 0,136,165, 88, 3, 0, 0, 0, 0, 72,167, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0, +152,168, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, + 6, 6,132, 2,187, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,184, 88, 3, 0, 0, 0, 0, + 88,233, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152,178, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,202, 67, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 33, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192, 41, 68, 0, 0,200, 65, 0,192, 41, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,132, 2, 26, 0,132, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,131, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,132, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 8,180, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 24,183, 88, 3, 0, 0, 0, 0,152,178, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 91, 67, 0, 0, 40,196, 0, 0, 0, 0, 0, 0, 0, 0,254,255, 74, 67,254, 63, 40,196, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,160, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,161, 2,203, 0,161, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,219, 0, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,161, 2, 0, 0, 4, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 24,183, 88, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8,180, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 67,102,102, 38,190,205,204,148, 63, 51, 51, 13,191,154,153,198, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,168, 1, 0, 0, 0, 0, 0, 0,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0, 0, 0,131, 2, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 72, 33, 0, 0, +136,184, 88, 3, 0, 0, 0, 0,170, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,240, 65, 0, 0, 0, 0,154,153,153, 62, 0, 0, 0, 0,100, 0, 0, 0, +154,153,153, 62,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, +120,234, 88, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,177, 88, 3, 0, 0, 0, 0, +152,168, 88, 3, 0, 0, 0, 0, 40,168, 88, 3, 0, 0, 0, 0,184,167, 88, 3, 0, 0, 0, 0,216,166, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0,186, 2, 0, 0, 1, 1,122, 2,187, 2, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, 72, 9, 89, 3, 0, 0, 0, 0, +104,235, 88, 3, 0, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104,235, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,102, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 30, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,121, 2, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,122, 2, 26, 0,122, 2, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,122, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,216,236, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0,104,235, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 67, + 0, 64, 10,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 15, 67, 0, 64, 10,196, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0, 40, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0, 41, 2,143, 0, 41, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0,146, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0, 41, 2, 0, 0, 5, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,136,241, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0,216,236, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 67, + 0, 0,242,194, 0, 0, 0, 0, 0, 0, 0, 0,231,102, 16, 67, 91, 90,242,194, 0, 0, 0, 0,143, 0, 0, 0,160, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,142, 0, 0, 0, + 0, 0, 0, 0,119, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,160, 0,120, 0,143, 0,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,133, 2, 0, 0, 36, 3, 0, 0, 26, 0, 0, 0,145, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,160, 0,120, 0, 0, 0, 6, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,152,244, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,200,255, 88, 3, 0, 0, 0, 0,136,241, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67, + 0,128,126,196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 67,255,191,126,196, 0, 0, 0, 0,163, 0, 0, 0,180, 0, 0, 0, + 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,162, 0, 0, 0, + 18, 0, 0, 0, 12, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 64, + 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 0, 6, 0,180, 0, 13, 4,163, 0,251, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,200,255, 88, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,244, 88, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 37, 3, 0, 0,254, 4, 0, 0, 26, 0, 0, 0,186, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,218, 1,161, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 3, 0, 0, 56, 1, 89, 3, 0, 0, 0, 0, +159, 0, 0, 0, 1, 0, 0, 0,193,198,198, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,140, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 13,128,191, 0, 0,128,191, 0, 0, 0, 0, 0, 0, 0, 0, + 74,215, 76,190, 0, 0, 0, 0, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 95,192, 0, 0,128, 63, 69,239,209, 62, 70,119,105, 63,160, 84, 89,188, 0, 0, 0, 0, 52,177,205,190,142, 74, 70, 62, +166, 33,101, 63, 0, 0, 0, 0,185,158, 81, 63, 35, 44,185,190, 43, 61,228, 62, 0, 0, 0, 0,188,173, 54, 64,136, 95,161,191, +147,231,198, 63, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +101, 98, 82, 64, 0, 25, 95, 64,101, 47,135, 62,134, 86, 22, 63, 32,243, 11,188, 0, 0,160,179,195, 15,188,190,132, 75, 53, 62, +216,125, 81, 63, 0, 0,192,179,115, 77,100,193, 17,173,201, 64,181,148,248,192,202,247,159,192,233, 74, 87, 65,247, 46,190,192, + 88,106,234, 64, 44, 8,160, 64, 68,239,209, 62, 51,177,205,190,184,158, 81, 63, 0, 0, 0, 0, 70,119,105, 63,143, 74, 70, 62, + 35, 44,185,190, 0, 0, 0, 0,162, 84, 89,188,166, 33,101, 63, 42, 61,228, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 25, 95,192, 0, 0,128, 63, 12, 2, 35, 63,208,249,224,190, 48,180, 81,191,184,158, 81,191,130, 71,181, 63,140,225, 88, 62, + 26, 63,185, 62, 35, 44,185, 62, 49,192,168,188,206,156,122, 63,138, 84,228,190, 42, 61,228,190, 0, 0, 0, 0, 0, 0, 0, 0, +101, 98, 82, 64, 0, 25, 95, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 92, 62, 55, 63, 56,186,224,190,237,203,148,190, 3,236,234,190, 0, 25, 95, 64, 0, 25, 95, 64, + 0, 0, 0, 0, 0, 0, 0, 0,116, 16, 50, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 1, 0, 0,232, 4, 89, 3, 0, 0, 0, 0, +160, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 51, 51, 51, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 7, 0, + 8,184, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 8, 8, 0, 0, 0, 0, 0, 0, 12, 66, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,205,204,204, 61, 0, 0,250, 67, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 7, 0, 10, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 78, 0, 0,208, 0, 0, 0, +248, 10, 89, 3, 0, 0, 0, 0,195, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,164, 88, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 82, 86,105,100,101,111, 32, 69,100,105,116,105,110,103, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, +232, 16, 89, 3, 0, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, +152,134, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, +136, 12, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4,214, 2, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +216, 13, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, +104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 72, 14, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,254, 4,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +254, 4, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, +152, 15, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 32, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, + 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2,187, 2, 1, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0, + 8, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, +196, 0, 0, 0, 1, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 52, 2, 84, 1, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,196, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 64, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200, 17, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0, + 88, 17, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 56, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0, +200, 17, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,168, 18, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0, + 56, 18, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 24, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0, +168, 18, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,136, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0, + 24, 19, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,248, 19, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0, +136, 19, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,104, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0, +248, 19, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,216, 20, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0, +104, 20, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0, +216, 20, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,184, 21, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0, + 72, 21, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 40, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0, +184, 21, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,152, 22, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0, + 40, 22, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 8, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0, +152, 22, 89, 3, 0, 0, 0, 0, 24, 12, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,120, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0, + 8, 23, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,232, 23, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0, +120, 23, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 88, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0, +232, 23, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0,200, 24, 89, 3, 0, 0, 0, 0,197, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 24, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 29, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,136, 12, 89, 3, 0, 0, 0, 0,248, 12, 89, 3, 0, 0, 0, 0, + 72, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,214, 2, 0, 0, + 7, 7,255, 4, 27, 0, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,158, 89, 3, 0, 0, 0, 0, +232,158, 89, 3, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 26, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 27, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,224,162, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,128,237, 68, 0, 0,200, 65, 0,128,237, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,188, 2, 0, 0,213, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152, 27, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 26, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0,240,109, 69, 0, 0,128,192, 0, 0, 0, 0, 0, 0, 0, 0,255,255,109, 69, 0, 0, 0,192, 0, 0, 0, 0, +112, 7, 0, 0,129, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,111, 7, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,111, 7, 0, 0, 18, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 0, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,129, 7, 2, 0,112, 7, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,214, 2, 0, 0,214, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,160, 0, 0, 0, + 8, 29, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0, 56, 25, 89, 3, 0, 0, 0, 0, + 24, 12, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0,232, 16, 89, 3, 0, 0, 0, 0,104, 13, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 15, 15,255, 4, 64, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0,136, 40, 89, 3, 0, 0, 0, 0, +248, 29, 89, 3, 0, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,140, 68, + 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 0, 0, 0, 0, 25, 0, 0, 0, 0,224,202, 68, 0, 0,200, 65, 0,224,202, 68, 0, 0,200, 65, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0,104, 31, 89, 3, 0, 0, 0, 0, +200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,248, 29, 89, 3, 0, 0, 0, 0, 0, 0, 64,192, 0, 0,126, 67, + 0, 0, 0, 0, 0, 0, 72, 66,112,189, 17,192,246, 70,125, 67, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, + 18, 0, 0, 0, 37, 0, 0, 0, 0, 0,128, 63, 0, 0, 72, 66, 0,124,146, 72, 0, 0, 72, 66,205,204,204, 61, 0, 0, 32, 65, + 72, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 4, 8, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 26, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,216, 0, 0, 0,216, 32, 89, 3, 0, 0, 0, 0, +176, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 8, 42, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0, + 8, 29, 89, 3, 0, 0, 0, 0, 40, 15, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,184, 14, 89, 3, 0, 0, 0, 0, +232, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 83, 1, 0, 0, + 8, 8,255, 4, 19, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,184, 48, 89, 3, 0, 0, 0, 0, + 56, 65, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248, 42, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 39, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,224,159, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,254, 4, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 96,191, 68, 0, 0,200, 65, 0, 96,191, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,255, 4, 26, 0,255, 4, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0, 65, 0, 0, 0, 90, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 4, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104, 44, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0,248, 42, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 92, 67, 0, 0,121,195, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 67, 0, 0,121,195, 0, 0, 0, 0, +203, 0, 0, 0,220, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,202, 0, 0, 0, 0, 0, 0, 0,248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 64, 10, 3, 0, 0, 1, 0, 7, 0, 18, 0, 0, 4, 6, 0,220, 0,249, 0,203, 0,249, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4, 0, 0,254, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,220, 0,249, 0, 0, 0, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216, 45, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 72, 47, 89, 3, 0, 0, 0, 0,104, 44, 89, 3, 0, 0, 0, 0, + 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, 0, 0,112,196, 0, 0,112, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, +172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 83, 1, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 7, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 47, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 45, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 18, 0, 0, 0, 34, 4, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 34, 4, 0, 0, 18, 0, 0, 0,248, 0, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 8, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 4, 0, 0, 91, 0, 0, 0, 83, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 4,249, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, +184, 48, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0, 88, 66, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0, + 8, 42, 89, 3, 0, 0, 0, 0, 8, 16, 89, 3, 0, 0, 0, 0,216, 13, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, +120, 16, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, + 2, 2, 52, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 73, 89, 3, 0, 0, 0, 0, +120,133, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 72, 67, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 64, 93, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0, 0, 13, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 51, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0,192,103, 68, 0, 0,200, 65, 0,192,103, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0, 52, 2, 26, 0, 52, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +184, 68, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, 72, 67, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,112,193, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 67, 0, 0,157,195, 0, 0, 0, 0, +200, 0, 0, 0,217, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0,199, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 0, 0, 0, 0,199, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 10, 6, 0, 0, 2, 0, 3, 3, 0, 0, 0, 4, 6, 0,217, 0, 76, 1,200, 0, 58, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,216, 0, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 76, 1, 0, 0, 2, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, + 40, 70, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,152, 71, 89, 3, 0, 0, 0, 0,184, 68, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 2, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +152, 71, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 70, 89, 3, 0, 0, 0, 0, + 0, 0, 16,193, 0, 0,130, 67, 0, 0,160,192, 0, 0,160, 64, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 16,193, 0, 0, 32, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0, 90, 1, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0, 90, 1, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0,111, 18,131, 58,111, 18,131, 58, 0,124,146, 72, 0, 80, 67, 71, + 0, 0, 0, 0, 0, 0, 0, 0,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,217, 0, 0, 0, 51, 2, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 1, 76, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, + 8, 73, 89, 3, 0, 0, 0, 0,164, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 40, 0, 0, 0, 72, 74, 89, 3, 0, 0, 0, 0, 24, 1, 0, 0, 1, 0, 0, 0,120,159, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,160, 0, 0, 0,152,134, 89, 3, 0, 0, 0, 0,199, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88, 66, 89, 3, 0, 0, 0, 0,120, 16, 89, 3, 0, 0, 0, 0,152, 15, 89, 3, 0, 0, 0, 0, 72, 14, 89, 3, 0, 0, 0, 0, +184, 14, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,186, 2, 0, 0, + 8, 8,202, 2,102, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 89, 3, 0, 0, 0, 0, +200,157, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +136,135, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0,192, 15, 68, 0, 0, 0, 0, 0, 0,208, 65, 0, 0, 0, 0, 0,128, 50, 68, 0, 0, 0, 0, 0, 0,208, 65, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 25, 0, 0, 0, 0, 64, 50, 68, 0, 0,200, 65, 0, 64, 50, 68, 0, 0,200, 65, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 2, 0, 3, 3, 4, 0, 12, 4, 10, 0,202, 2, 26, 0,202, 2, 26, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0, 85, 1, 0, 0,110, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 26, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +248,136, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0,136,135, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,254, 4, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 4, 0, 4, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +104,138, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0,216,139, 89, 3, 0, 0, 0, 0,248,136, 89, 3, 0, 0, 0, 0, + 0, 0,112,195, 0, 0,112, 67, 0, 0, 7,195, 0, 0, 7, 67,105, 42,145,196,105, 42,145, 68, 0, 0, 7,196, 0, 0, 7, 68, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 59, 70, 0,128, 59, 70, +172,197, 39, 55, 0, 80,195, 71, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 4, 0, 0,202, 2, 76, 1,202, 2, 76, 1, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 2, 0, 0,254, 4, 0, 0,111, 1, 0, 0,186, 2, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,202, 2, 76, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 1, 0, 0, +216,139, 89, 3, 0, 0, 0, 0,200, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,104,138, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, 0, 0, 0, 0, 0, 0,122, 67, 0, 0, 0, 0, 0, 0, 0, 65, + 0, 0, 0, 0, 17, 0, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 18, 0, 0, 0,201, 2, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, + 18, 0, 0, 0,201, 2, 0, 0, 18, 0, 0, 0, 75, 1, 0, 0, 0, 0, 32, 65, 0, 0,128, 64, 0,124,146, 72, 0, 0, 0, 66, + 10,215, 35, 60, 0, 0,200, 66,105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0,202, 2, 76, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,240, 0, 0, 0, + 72,141, 89, 3, 0, 0, 0, 0,166, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 83, 67, 0, 0, 8, 6, 0, 0,120,159, 89, 3, 0, 0, 0, 0,157, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 67, 83, 99,101,110,101, 0, +116, 97,103,101, 0, 97,105,110, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 8,184, 89, 3, 0, 0, 0, 0,104,181, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,169, 89, 3, 0, 0, 0, 0, +184, 55,127, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,100, 0, 0, 0,100, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 1, 0, + 1, 0, 0, 0, 6, 0, 50, 0,141, 0,128, 7, 56, 4, 8, 0, 8, 0, 0, 0, 24, 0, 17, 0, 0, 0, 0, 0, 90, 0, 1, 0, + 0, 0, 0, 0, 81, 0, 0, 0, 23, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 8, 0, 24, 0, 10, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0, + 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 1, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 5, 0, 2, 0, 1, 0, 1, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47, 47, 98, 97, 99,107, 98,117,102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 31, 5, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 16, 0, 0, 0,128, 63, 0, 0,128, 63, +173, 2, 95, 0,154,153,217, 63, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 76, 69, 78, 68, 69, 82, 95, 82, 69, 78, 68, 69, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68,172, 0, 0, 0, 0,128, 63,102,166,171, 67, 0, 0,128, 63, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +144,175, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,141, 90, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 1, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 32, 0, 32, 0, 1, 0, 0, 0, + 0, 0, 0, 0,128, 0, 5, 0, 60, 0, 5, 0, 1, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 2,224, 1, 60, 0, 32, 0, 0, 0, 0, 0, 0, 0, 4, 0, 1, 0,180, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0,128, 7, 56, 4,205,204,204, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,195,245, 28,193, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 96, 0, 0, 0,200,165, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,120,166, 89, 3, 0, 0, 0, 0, +120,166, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, +120,166, 89, 3, 0, 0, 0, 0, 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 6, 0, 0, 0,110,101,116,119,111,114,107, 95,114,101,110,100,101,114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 96, 0, 0, 0, 40,167, 89, 3, 0, 0, 0, 0, + 16, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,115,101,114,118, +101,114, 95, 97,100,100,114,101,115,115, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 68, 65, 84, 65, 12, 0, 0, 0,216,167, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, + 91,100,101,102, 97,117,108,116, 93, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, +200, 2,231, 1, 40,189, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0, 56,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, +152, 3, 37, 3,200,195, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0, 24,169, 89, 3, 0, 0, 0, 0,133, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,168,168, 89, 3, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 4, 0, 0, +157, 0, 72, 2, 8,184, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,184, 1, 0, 0,136,169, 89, 3, 0, 0, 0, 0,153, 0, 0, 0, + 1, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0, 0, 0,128, 63, + 1, 0, 1, 0,205,204, 76, 63, 0, 0,180, 66, 9, 0, 1, 0, 0, 0,128, 63,111, 18,131, 58,205,204,204, 61, 0, 0, 1, 0, + 32, 0, 32, 0, 32, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0,184,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 80, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 5, 0, + 5, 0,255,255, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,200, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 72, 66, 50, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 10,215, 35, 60,205,204,204, 61, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0,250, 0,205,204,204, 61, +205,204,204, 61,102,102,166, 63, 0, 0,192, 63, 0, 0,240, 65, 72,225,122, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 67, 2, 0, 3, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 0, 0, 0,136,171, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 24,172, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 1, 0, 0, 0, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0, 24,172, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0,184,208, 90, 3, + 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0,184,156, 90, 3, + 0, 0, 0, 0, 68, 65, 84, 65, 64, 0, 0, 0,152,172, 89, 3, 0, 0, 0, 0,152, 0, 0, 0, 1, 0, 0, 0, 40,173, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,200,255,128, 1, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 56, 0, 0, 0, 40,173, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, + 0, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0,184,180, 90, 3, + 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 56, 0, 0, 0,168,173, 89, 3, 0, 0, 0, 0,151, 0, 0, 0, + 1, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,100,100,128, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, + 64, 0, 0, 0, 40,174, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,200, 90, 3, + 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,176, 90, 3, + 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 32, 0, 0, 0,184,174, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,152, 90, 3, + 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, 68, 65, 84, 65, 88, 0, 0, 0, 40,175, 89, 3, 0, 0, 0, 0,139, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82,101,110,100,101,114, 76, 97,121,101,114, 0, +114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,255,255, 15, 0, 0, 0, 0, 0,255,127, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 67, 65, 0, 0, +136, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 29, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 65, 67, 97,109,101,114, 97, 0, 97,109,101, +114, 97, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 63,205,204,204, 61, 0, 0,200, 66, 0, 0, 12, 66,161, 14,234, 64, 0, 0, 0, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 0, 0, +216, 1, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 41, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 65, 76, 97,109,112, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63,247,255,239, 65, 0, 0,150, 66,154,153, 25, 62, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 8,179, 89, 3, 0, 0, 0, 0, 2, 0, 0, 0, 46, 26,128, 63, 25, 4,240, 65, + 0, 0, 52, 66, 0, 0,128, 63, 0, 0, 64, 64,205,204, 76, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 11, 3, 0, + 1, 0, 0, 0, 0, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111, 18,131, 58, + 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,248,180, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 64, 1, 0, 0, 8,179, 89, 3, 0, 0, 0, 0, 83, 1, 0, 0, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 1, 0, 0, 0,128, 67, 0, 0, 0, 0, + 0, 0,128, 63,243, 4, 53,191,242, 4, 53, 63,242, 4, 53,191,243, 4, 53, 63,152,180, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 24, 0, 0, 0,152,180, 89, 3, 0, 0, 0, 0, 81, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,248,180, 89, 3, + 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 0, 0,232, 1, 0, 0,104,181, 89, 3, + 0, 0, 0, 0,132, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 79, 87,111,114,108,100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,114, 99, 80, 61,114, 99, 80, 61,114, 99, 80, 61, 0, 0, 0, 0,199, 54, 36, 60,199, 54, 36, 60,199, 54, 36, 60, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0,205,204, 28, 65, 0, 0, 0, 0, 0, 0, 32, 0,128, 0, 5, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,160, 64, 0, 0,200, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,112, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 65, + 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 61, 0, 0, 5, 0, 0, 0, 0, 0, 10,215,163, 59, 0, 0, 0, 0, 0, 0,128, 62, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,183, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,152,183, 89, 3, + 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0, 8,184, 89, 3, + 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67, 97,109,101,114, 97, 0, 97,109,101,114, 97, 46, 48, 48, 49, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0, +250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 42,254,141, 63,192, 57, 49, 60, 34,159, 80, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,222,149, 47, 63, 53, 70, 58, 63, +222, 56, 49,188, 0, 0, 0, 0, 86,126,162,190,227,251,159, 62, 55, 53,101, 63, 0, 0, 0, 0, 7,165, 39, 63,149, 84, 28,191, + 51,247,227, 62, 0, 0, 0, 0,110,101,239, 64,150, 62,208,192, 78,255,170, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 1, 0,128, 63, 1, 0,128, 51, + 1, 0, 0,179, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0,128, 63, 1, 0,128, 51, 0, 0, 0, 0, 2, 0, 0,179, 2, 0, 0,167, + 1, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 53, 1, 0, 0, 41, 1, 0,128,168, 0, 0,128, 63, 0, 0,128, 63,157,190,215, 49, +167,170, 4, 52, 0, 0, 0,128,129,116,157,178, 1, 0,128, 63, 33, 69, 15, 51, 0, 0, 0,128, 73,254, 67, 51,243, 97,106, 49, + 0, 0,128, 63, 0, 0, 0,128, 3, 0, 64, 52,183,164,157, 39, 0, 0,128, 53, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, + 0, 0, 0, 0, 5, 0, 1, 0, 0, 0, 0, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, +100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,187,225, 16, 63, 0, 0,128, 63,205,204,204, 62,237, 54, 32, 63, + 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 1, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 0, 0, +208, 4, 0, 0, 40,189, 89, 3, 0, 0, 0, 0,121, 0, 0, 0, 1, 0, 0, 0,200,195, 89, 3, 0, 0, 0, 0, 8,184, 89, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 67,117, 98,101, 0,112,104,101,114,101, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 40, 54, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0,152,194, 89, 3, + 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, +222,149, 47, 63, 52, 70, 58, 63,179, 56, 49,188, 0, 0, 0,128, 86,126,162,190,227,251,159, 62, 56, 53,101, 63, 0, 0, 0,128, + 7,165, 39, 63,149, 84, 28,191, 50,247,227, 62, 0, 0, 0,128,110,101,239, 64,151, 62,208,192, 77,255,170, 64, 0, 0,128, 63, + 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 68, 0, 79, 66, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63, +205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0,143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, + 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,248,181,126, 4, + 0, 0, 0, 0,184,189,126, 4, 0, 0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 68, 65, 84, 65, 4, 0, 0, 0,152,194, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65,152, 0, 0, 0,232,194, 89, 3, 0, 0, 0, 0,124, 0, 0, 0, 1, 0, 0, 0, 0,192, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,205,204,204, 61,205,204, 76, 62, 10,215,163, 60, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72, 0, 0, 0, 79, 66, 0, 0,208, 4, 0, 0,200,195, 89, 3, 0, 0, 0, 0, +121, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40,189, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 79, 66, 76, 97,109,112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,176, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 6, 0, 0, 0, 1, 0, 0, 0,250, 0, 0, 0, + 10, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,229,123, 38, 63, + 87, 43, 98, 61,229,229,238, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 54,236,148,190, 25,134,116, 63,236, 13, 98,189, + 0, 0, 0, 0,221,102, 69,191, 57,174, 76,190, 34,194, 26, 63, 0, 0, 0, 0, 37,255, 16, 63,241,161, 95, 62,164,111, 75, 63, + 0, 0, 0, 0,154,112,130, 64,183,178,128, 63,112,236,188, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 1, 0,128, 50, 0, 0, 0,179, + 0, 0, 0, 0, 1, 0,128, 50, 1, 0,128, 63, 1, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 1, 0, 0, 39, 1, 0, 0, 52, 1, 0,128, 39, 0, 0,128, 63, 53,236,148,190,222,102, 69,191, 37,255, 16, 63, + 0, 0, 0,128, 24,134,116, 63, 57,174, 76,190,240,161, 95, 62, 0, 0, 0,128,235, 13, 98,189, 34,194, 26, 63,166,111, 75, 63, + 0, 0, 0,128,208, 19, 13, 63,234, 65,102,190, 10, 10,231,192, 0, 0,128, 63, 1, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, + 5, 0, 1, 0, 0, 0, 68, 0, 79, 66, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,100, 0, 0, 0, + 0, 0, 0, 0, 56,180,150,201, 0, 0,128, 63,169, 19,208, 60, 0, 0,128, 63,205,204,204, 62,229,208, 34, 62, 0, 0, 0, 0, +143,194,117, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 5, 0, 1, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 0, 0, 32, 3, 0, 0, +232,200, 89, 3, 0, 0, 0, 0, 44, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 77, 65, 77, 97,116,101,114,105, 97,108, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 1, 0,205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63,205,204, 76, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 10,215, 35, 60, 0, 0, 0, 0, + 0, 0, 8, 0, 1, 0, 50, 0,205,204, 76, 62, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,160, 63, + 0, 0, 0, 0, 0, 0,160, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 2, 0, 2, 0, 50, 0, 0, 6, 0, 0,128, 63, + 0, 0,128, 63, 18, 0, 18, 0, 10,215,163, 59, 10,215,163, 59, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 4, 0, 67, 0, 64, 3, + 67, 0, 64, 3, 1, 0, 4, 0, 12, 0, 4, 0, 0, 0, 0, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0,128, 64, 0, 0, 0, 63, +205,204,204, 61, 0, 0, 0, 63,205,204,204, 61,205,204,204, 61, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 88,204, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +184,205, 89, 3, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,111,148, 26, 63,111,148, 26, 63,111,148, 26, 63,205,204, 76, 61,205,204,204, 61, +102,102,166, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 88,204, 89, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,200,110, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 40, 0, 0, 0, +184,205, 89, 3, 0, 0, 0, 0, 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, 32, 0, 0, 0, 96, 0, 0, 0, + 0, 0, 1, 0, 0, 0, 0, 0, 40,206, 89, 3, 0, 0, 0, 0,120,222, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0, + 40,206, 89, 3, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0,144, 0, 0,120,222, 89, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 84, 69, 0, 0,112, 1, 0, 0,200,110, 90, 3, 0, 0, 0, 0, 39, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 84, 69, 84,101,120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 62, 0, 0,160, 64, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 64, + 0, 0, 0, 64, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 32, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 5, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 8, 0, 0, 0, 1, 0, 1, 0, 3, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,205,204,204, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 40, 0, 0, 0,136,112, 90, 3, 0, 0, 0, 0, + 19, 0, 0, 0, 1, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, +248,112, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 0, 16, 0, 0,248,112, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, + 0, 0, 0,255, 0, 0, 0,255, 77, 69, 0, 0,176, 1, 0, 0, 72,129, 90, 3, 0, 0, 0, 0, 54, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 77, 69, 67,117, 98,101, 0,112,104,101,114,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, +152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, + 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,152,131, 90, 3, 0, 0, 0, 0, + 1, 0, 0, 0, 5, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 88,134, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,232,136, 90, 3, 0, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 20, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,128, 51, 0, 0, 0,180, 0, 0, 0, 0, 4, 0,128, 63, 4, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 0, 0, 0, 30, 0, 6, 0, 1, 0, 1, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 8, 0, 0, 0, 72,131, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0,232,200, 89, 3, 0, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0,152,131, 90, 3, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,192, 0, 0, 0, 72,133, 90, 3, 0, 0, 0, 0, + 60, 0, 0, 0, 8, 0, 0, 0, 0, 0,128, 63,255,255,127, 63, 0, 0,128,191,230, 73,230, 73, 26,182,255,127, 1, 0, 0, 0, + 0, 0,128, 63, 0, 0,128,191, 0, 0,128,191,230, 73, 26,182, 26,182,255,127, 1, 0, 0, 0, 1, 0,128,191,253,255,127,191, + 0, 0,128,191, 26,182, 26,182, 26,182,255,127, 1, 0, 0, 0,250,255,127,191, 3, 0,128, 63, 0, 0,128,191, 26,182,230, 73, + 26,182,255,127, 1, 0, 0, 0, 4, 0,128, 63,247,255,127, 63, 0, 0,128, 63,230, 73,230, 73,230, 73,255,127, 1, 0, 0, 0, +245,255,127, 63, 5, 0,128,191, 0, 0,128, 63,230, 73, 26,182,230, 73,255,127, 1, 0, 0, 0, 3, 0,128,191,250,255,127,191, + 0, 0,128, 63, 26,182, 26,182,230, 73,255,127, 1, 0, 0, 0,255,255,127,191, 0, 0,128, 63, 0, 0,128, 63, 26,182,230, 73, +230, 73,255,127, 1, 0, 0, 0, 68, 65, 84, 65,104, 1, 0, 0, 88,134, 90, 3, 0, 0, 0, 0, 88, 1, 0, 0, 5, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 8,136, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,144, 0, 0, 0, 8,136, 90, 3, 0, 0, 0, 0, 57, 0, 0, 0, 12, 0, 0, 0, + 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 4, 0, 0, 0, + 0, 0, 35, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 0, 35, 0, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 35, 0, 2, 0, 0, 0, 6, 0, 0, 0, 0, 0, 35, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, + 4, 0, 0, 0, 5, 0, 0, 0, 0, 0, 35, 0, 4, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 5, 0, 0, 0, 6, 0, 0, 0, + 0, 0, 35, 0, 6, 0, 0, 0, 7, 0, 0, 0, 0, 0, 35, 0, 68, 65, 84, 65,104, 1, 0, 0,232,136, 90, 3, 0, 0, 0, 0, + 88, 1, 0, 0, 5, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65,120, 0, 0, 0,152,138, 90, 3, 0, 0, 0, 0, + 56, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, + 7, 0, 0, 0, 6, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 2, 1, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 2, 2, 0, 0, 0, 6, 0, 0, 0, + 7, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 2, 4, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 2, + 66, 82, 0, 0,168, 1, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 65,100,100, 0,104, 46, + 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,142, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 1, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0,192,139, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,142, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,144, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,148, 90, 3, 0, 0, 0, 0, 88,139, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 66,108,117,114, 0, 46, 48, 48, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,146, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 4, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,145, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,146, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,148, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,148, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,148, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,152, 90, 3, 0, 0, 0, 0,184,144, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108, 97,121, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,150, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 8, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,149, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,150, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,152, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,152, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0,184,148, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 67,108,111,110,101, 0, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 3, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,153, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,154, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,156, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, +184,152, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 68, 97,114,107,101,110, + 0, 48, 54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,158, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 6, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,157, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,158, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,160, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,164, 90, 3, 0, 0, 0, 0,184,156, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 68,114, 97,119, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,162, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,161, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,162, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,164, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,164, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,164, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,168, 90, 3, 0, 0, 0, 0,184,160, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 70,108, 97,116,116,101,110, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,166, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 7, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,165, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,166, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,168, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,168, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0,184,164, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 71,114, 97, 98, 0, 46, 48, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 5, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,169, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,170, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,172, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, +184,168, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 73,110,102,108, 97,116, +101, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,174, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 4, 0, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,173, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,174, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,176, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,180, 90, 3, 0, 0, 0, 0,184,172, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 76, 97,121,101,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,178, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 6, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,177, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,178, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,180, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,180, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,180, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,184, 90, 3, 0, 0, 0, 0,184,176, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 76,105,103,104,116,101,110, 0, 53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,182, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 5, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,181, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,182, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,184, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,184, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0,184,180, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,105,120, 0,104, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,185, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,186, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,188, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, +184,184, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 77,117,108,116,105,112, +108,121, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,190, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 3, 0, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,189, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,190, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,192, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, +184,196, 90, 3, 0, 0, 0, 0,184,188, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 80,105,110, 99,104, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,194, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 3, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,193, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,194, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,196, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,196, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,196, 90, 3, 0, 0, 0, 0, + 87, 1, 0, 0, 1, 0, 0, 0,184,200, 90, 3, 0, 0, 0, 0,184,192, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,101, 97,114, 0, 48, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 0,168,198, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 2, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,197, 90, 3, 0, 0, 0, 0, + 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0, +168,198, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, + 56,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,200, 90, 3, 0, 0, 0, 0, + 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, + 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0, +184,200, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0,184,196, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,109,111,111,116,104, 0, 48, 49, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63, +205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 2, 0, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, + 32,201, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 68, 65, 84, 65, 64, 1, 0, 0,168,202, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, + 14,215,126,191, 46,189,194, 61, 56,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, + 56,204, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, + 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 0, 0,168, 1, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0,184,208, 90, 3, 0, 0, 0, 0, +184,200, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 83,111,102,116,101,110, + 0, 48, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0,168,206, 90, 3, 0, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 64, + 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 1, 0, 1, 0, + 68, 65, 84, 65, 16, 1, 0, 0, 32,205, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,206, 90, 3, 0, 0, 0, 0, 83, 1, 0, 0, 1, 0, 0, 0, + 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, 0, 0, 0, 0, 0, 0,128, 63, + 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,208, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 68, 65, 84, 65, 48, 0, 0, 0, 56,208, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0, 0, 0, 66, 82, 0, 0,168, 1, 0, 0,184,208, 90, 3, 0, 0, 0, 0, 87, 1, 0, 0, 1, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,184,204, 90, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 66, 82, 83,117, 98,116,114, 97, 99,116, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 2, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, +168,210, 90, 3, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, +128, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 4, 0, 0, 25, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 96, 64, 75, 0, 0, 0,102,102,102, 63,205,204,204, 61, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, +205,204, 76, 62, 1, 2, 0, 0, 68, 65, 84, 65, 16, 1, 0, 0, 32,209, 90, 3, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 0, 0, + 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0, + 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63,205,204, 76, 62, 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 68, 65, 84, 65, 64, 1, 0, 0,168,210, 90, 3, 0, 0, 0, 0, + 83, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 63, 4, 0, 0, 0, 0, 0,128, 67, + 0, 0, 0, 0, 0, 0,128, 63, 14,215,126,191, 54,189,194, 61, 14,215,126,191, 46,189,194, 61, 56,212, 90, 3, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 48, 0, 0, 0, 56,212, 90, 3, 0, 0, 0, 0, 81, 1, 0, 0, 4, 0, 0, 0, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0,128, 62, 31,133,107, 63, 0, 0, 0, 0, 0, 0, 64, 63, 10,215,163, 61, + 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 85, 83, 69, 82, 8, 13, 0, 0, 96,119,163, 2, 0, 0, 0, 0, +194, 0, 0, 0, 1, 0, 0, 0, 33, 8, 17, 1, 63, 2, 0, 0, 5, 0, 0, 0, 47,116,109,112, 47, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 85,115,101,114,115, 47,116,111,110, + 47, 68,101,115,107,116,111,112, 47, 0, 45,112,111,119,101,114,112, 99, 47, 98,105,110, 47, 98,108,101,110,100,101,114, 46, 97, +112,112, 47, 67,111,110,116,101,110,116,115, 47, 82,101,115,111,117,114, 99,101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 35, 0, 0, 0, 2, 0, 94, 1, + 8, 0, 0, 0, 3, 0, 0, 0, 56, 52, 39, 1, 0, 0, 0, 0, 2, 0, 2, 0, 0, 8, 0, 0, 2, 0, 0, 0, 68,172, 0, 0, + 36, 0, 0, 0, 2, 0, 0, 0,128, 0, 0, 0, 72, 0, 0, 0, 0, 0, 64, 0, 5, 0, 2, 0, 8,226, 90, 3, 0, 0, 0, 0, + 8,226, 90, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,120,107, 94, 3, 0, 0, 0, 0,152,219, 94, 3, 0, 0, 0, 0, +152,219, 94, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 1, 0, 2, 0, 25, 0, 1, 0, 20, 0, 20, 0, 1, 0, 0, 0, 0, 0, 0, 0, +205,204, 76, 63,205,204, 76, 63,205,204, 76, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 30, 90,100,191,154,153,153, 62,102,102,102, 63, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 31,250,254, 62, 9, 0, 0, 63, +156,153, 25, 63, 0, 0, 0, 0,205,204, 76, 62,205,204, 76, 62,205,204, 76, 62, 0, 0,128, 63, 44,135, 22, 63, 32,133,235, 62, +184,243,125, 62, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,195, 73, 76, 63, 42,135, 86, 63, 0, 0,128, 63, 0, 0, 0, 0, + 1, 43,135, 61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 16, 47, 93, 62, 58,180,200,190, 24, 47, 93,190, 0, 0, 0, 0, + 14, 0, 0, 0, 25, 0, 15, 0,120, 0, 60, 0, 3, 0, 0, 0,128, 0, 0, 0, 0, 0, 0, 0,144, 31, 15, 0, 6, 0, 25, 0, + 8, 0, 10, 0,200, 0, 0, 0,100, 0,100, 0, 0, 0, 0, 0, 2, 0, 1, 0, 10, 0, 50, 0,200, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, + 0, 0, 2, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0,128, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, + 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, + 0, 0, 0, 63, 0, 0,128, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0, 0, 63, 0, 0,128, 63, + 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68, 65, 84, 65, 56, 29, 0, 0, 8,226, 90, 3, 0, 0, 0, 0, +191, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 68,101,102, 97,117,108,116, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255, 0, 0, 0,255,255,255,255,255, 1, 0, 15, 0,241,255, 0, 0, 25, 25, 25,255,153,153,153,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255, 90, 90, 90,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 25, 25, 25,255,180,180,180,255, +153,153,153,255,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0,236,255, 0, 0, 0, 0, 0, 0, 0,255, 70, 70, 70,255, + 70, 70, 70,255,255,255,255,255,255,255,255,255,204,204,204,255, 1, 0, 15, 0,241,255, 0, 0, 0, 0, 0,255, 63, 63, 63,255, + 86,128,194,255,255,255,255,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 25, 25, 25,230, + 45, 45, 45,230,100,100,100,255,160,160,160,255,255,255,255,255, 0, 0, 25, 0,236,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255,255,255,255,255,255,255,255,255, 0, 0, 0,255, 0, 0, 38, 0, 0, 0, 0, 0, 25, 25, 25,255,128,128,128,255, +100,100,100,255, 25, 25, 25,255, 0, 0, 0,255,255,255,255,255, 0, 0, 0, 0, 0, 0, 0, 0, 50, 50, 50,180, 80, 80, 80,180, +100,100,100,180,128,128,128,255, 0, 0, 0,255,255,255,255,255, 1, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255,190,190,190,255, +100,100,100,180, 68, 68, 68,255, 0, 0, 0,255,255,255,255,255, 0, 0, 5, 0,251,255, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, + 86,128,194,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0, 0,115,190, 76,255, 90,166, 51,255, +240,235,100,255,215,211, 75,255,180, 0,255,255,153, 0,230,255, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,130,130,130,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255,204, 0,153,255, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255,255,255,255,255, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 76, 76, 76,255, 0, 0, 0, 0, +250,250,250,255, 15, 15, 15,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,145,145,145,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100,255,140, 25,255,250,250,250,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,130,130,130,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,250,250,250,255,250,250,250,255,250,250,250,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,107,107,107,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,255,255,255,150, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255,124,137,150,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +107,107,107,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,102,102,102,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +255,255,255,150, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,150,150,150,100,112,112,112,100, 96,192, 64,255, 94, 94, 94,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 79,101, 73,255,135,177,125,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 12, 10, 10,128,255,140, 0,255, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 82, 96,110,255, +124,137,150,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0,255,255,133, 0,255, 3, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,116,116,116,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81,105,135,255,109, 88,129,255, + 78,152, 62,255, 46,143,143,255,169, 84,124,255,126,126, 80,255,162, 95,111,255,109,145,131,255,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 53, 53,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0,255,255,255, 10,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255,110,110,110,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,132,132,132,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255, 94, 94, 94,255,172,172,172,255, 17, 27, 60,100, 94, 94, 94,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,195,195,195,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +153,153,153,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,143,143,143,255,198,119,119,255,255, 0, 0,255, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,100, 0, 0,255, + 0, 0,200,255,128, 0, 80,255, 95, 95, 0,255, 0,100, 50,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +173,173,173,255,127,112,112,100, 0, 0, 0, 0, 91, 91, 91,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 57, 57, 57,255, 0, 0, 0, 0, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, + 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255, +255,255,255,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, + 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255, +128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255, +128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0,155,155,155,160,100,100,100,255,108,105,111,255, +104,106,117,255,105,117,110,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +100,100,100,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, + 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255, +255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18, +255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, + 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255, +144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0,114,114,114,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,255, 0, 0, 0,255, + 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,160,160,160,100,127,112,112,100, + 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, 8, 48, 8,255, 85,187, 85,255, +255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255,255, 32, 32,255, 75, 75, 75,255, + 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255,200,200,200,255, 80,200,255, 80, + 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255,240,255, 64,255,240,144,160,255, + 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255,240,255, 64,255, 64,192, 48,255, +240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255,255,255,128, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 0, 0, 0, 0, 0, 0, 0,255,255,255,255,255, +114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,114,114,114,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +165,165,165,255, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255,165,165,165,127, 0, 0, 0,255, 0, 0, 0,255,255,255,255,255, +160,160,160,100,127,112,112,100, 0, 0, 0, 0, 64, 64, 64,255, 0, 0, 0,255,241, 88, 0,255, 0, 0, 0, 40,255,140, 25,255, + 8, 48, 8,255, 85,187, 85,255,255,255,255,255, 0, 0, 0,255,255,133, 0,255, 0, 0, 0,255,255,160, 0,255,219, 37, 18,255, +255, 32, 32,255, 75, 75, 75,255, 0, 0, 0, 0, 0, 0, 0, 18,255,133, 0, 60,255,133, 0,255, 34,221,221,255, 35, 97,221,255, +200,200,200,255, 80,200,255, 80, 0, 0, 0, 0, 0, 0, 0, 0, 96,192, 64,255,144,144, 0,255,128, 48, 96,255,219, 37, 18,255, +240,255, 64,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0,255,144,144, 0,255, 64,144, 48,255,128, 48, 96,255, 0, 0, 0,255, +240,255, 64,255, 64,192, 48,255,240,144,160,255, 0, 0, 0, 0, 0, 0, 0, 0, 96,128,255,255,255,255,255,255, 0,170, 0,255, +220, 96, 96,255,220, 96, 96,255, 3, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, +255,255,255,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,154, 0, 0,255,189, 17, 17,255, +247, 10, 10,255, 0, 0, 0, 0,247, 64, 24,255,246,105, 19,255,250,153, 0,255, 0, 0, 0, 0, 30,145, 9,255, 89,183, 11,255, +131,239, 29,255, 0, 0, 0, 0, 10, 54,148,255, 54,103,223,255, 94,193,239,255, 0, 0, 0, 0,169, 41, 78,255,193, 65,106,255, +240, 93,145,255, 0, 0, 0, 0, 67, 12,120,255, 84, 58,163,255,135,100,213,255, 0, 0, 0, 0, 36,120, 90,255, 60,149,121,255, +111,182,171,255, 0, 0, 0, 0, 75,112,124,255,106,134,145,255,155,194,205,255, 0, 0, 0, 0,244,201, 12,255,238,194, 54,255, +243,255, 0,255, 0, 0, 0, 0, 30, 32, 36,255, 72, 76, 86,255,255,255,255,255, 0, 0, 0, 0,111, 47,106,255,152, 69,190,255, +211, 48,214,255, 0, 0, 0, 0,108,142, 34,255,127,176, 34,255,187,239, 91,255, 0, 0, 0, 0,141,141,141,255,176,176,176,255, +222,222,222,255, 0, 0, 0, 0,131, 67, 38,255,139, 88, 17,255,189,106, 17,255, 0, 0, 0, 0, 8, 49, 14,255, 28, 67, 11,255, + 52, 98, 43,255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, + 68, 78, 65, 49,112,224, 0, 0,200,207,143, 4, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 83, 68, 78, 65, 78, 65, 77, 69, +179, 11, 0, 0, 42,110,101,120,116, 0, 42,112,114,101,118, 0, 42,100, 97,116, 97, 0, 42,102,105,114,115,116, 0, 42,108, 97, +115,116, 0,120, 0,121, 0,122, 0,119, 0,120,109,105,110, 0,120,109, 97,120, 0,121,109,105,110, 0,121,109, 97,120, 0, 42, +112,111,105,110,116,101,114, 0,103,114,111,117,112, 0,118, 97,108, 0,118, 97,108, 50, 0,116,121,112,101, 0,115,117, 98,116, +121,112,101, 0,102,108, 97,103, 0,110, 97,109,101, 91, 51, 50, 93, 0,115, 97,118,101,100, 0,100, 97,116, 97, 0,108,101,110, + 0,116,111,116, 97,108,108,101,110, 0, 42,110,101,119,105,100, 0, 42,108,105, 98, 0,110, 97,109,101, 91, 50, 52, 93, 0,117, +115, 0,105, 99,111,110, 95,105,100, 0, 42,112,114,111,112,101,114,116,105,101,115, 0,105,100, 0, 42,105,100, 98,108,111, 99, +107, 0, 42,102,105,108,101,100, 97,116, 97, 0,110, 97,109,101, 91, 50, 52, 48, 93, 0,102,105,108,101,112, 97,116,104, 91, 50, + 52, 48, 93, 0,116,111,116, 0,112, 97,100, 0, 42,112, 97,114,101,110,116, 0,119, 91, 50, 93, 0,104, 91, 50, 93, 0, 99,104, + 97,110,103,101,100, 91, 50, 93, 0,112, 97,100, 48, 0,112, 97,100, 49, 0, 42,114,101, 99,116, 91, 50, 93, 0, 42,111, 98, 0, + 98,108,111, 99,107,116,121,112,101, 0, 97,100,114, 99,111,100,101, 0,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 98,112, 0, + 42, 98,101,122,116, 0,109, 97,120,114, 99,116, 0,116,111,116,114, 99,116, 0,118, 97,114,116,121,112,101, 0,116,111,116,118, +101,114,116, 0,105,112,111, 0,101,120,116,114, 97,112, 0,114,116, 0, 98,105,116,109, 97,115,107, 0,115,108,105,100,101, 95, +109,105,110, 0,115,108,105,100,101, 95,109, 97,120, 0, 99,117,114,118, 97,108, 0, 42,100,114,105,118,101,114, 0, 99,117,114, +118,101, 0, 99,117,114, 0,115,104,111,119,107,101,121, 0,109,117,116,101,105,112,111, 0,112,111,115, 0,114,101,108, 97,116, +105,118,101, 0,116,111,116,101,108,101,109, 0,112, 97,100, 50, 0, 42,119,101,105,103,104,116,115, 0,118,103,114,111,117,112, + 91, 51, 50, 93, 0,115,108,105,100,101,114,109,105,110, 0,115,108,105,100,101,114,109, 97,120, 0, 42, 97,100,116, 0, 42,114, +101,102,107,101,121, 0,101,108,101,109,115,116,114, 91, 51, 50, 93, 0,101,108,101,109,115,105,122,101, 0, 98,108,111, 99,107, + 0, 42,105,112,111, 0, 42,102,114,111,109, 0,116,111,116,107,101,121, 0,115,108,117,114,112,104, 0, 42,108,105,110,101, 0, + 42,102,111,114,109, 97,116, 0, 98,108,101,110, 0,108,105,110,101,110,111, 0,115,116, 97,114,116, 0,101,110,100, 0,102,108, + 97,103,115, 0, 99,111,108,111,114, 91, 52, 93, 0,112, 97,100, 91, 52, 93, 0, 42,110, 97,109,101, 0,110,108,105,110,101,115, + 0,108,105,110,101,115, 0, 42, 99,117,114,108, 0, 42,115,101,108,108, 0, 99,117,114, 99, 0,115,101,108, 99, 0,109, 97,114, +107,101,114,115, 0, 42,117,110,100,111, 95, 98,117,102, 0,117,110,100,111, 95,112,111,115, 0,117,110,100,111, 95,108,101,110, + 0, 42, 99,111,109,112,105,108,101,100, 0,109,116,105,109,101, 0,115,105,122,101, 0,115,101,101,107, 0,112, 97,115,115,101, +112, 97,114,116, 97,108,112,104, 97, 0, 99,108,105,112,115,116, 97, 0, 99,108,105,112,101,110,100, 0,108,101,110,115, 0,111, +114,116,104,111, 95,115, 99, 97,108,101, 0,100,114, 97,119,115,105,122,101, 0,115,104,105,102,116,120, 0,115,104,105,102,116, +121, 0, 89, 70, 95,100,111,102,100,105,115,116, 0, 42,100,111,102, 95,111, 98, 0,102,114, 97,109,101,110,114, 0,102,114, 97, +109,101,115, 0,111,102,102,115,101,116, 0,115,102,114, 97, 0,102,105,101, 95,105,109, 97, 0, 99,121, 99,108, 0,111,107, 0, +109,117,108,116,105, 95,105,110,100,101,120, 0,108, 97,121,101,114, 0,112, 97,115,115, 0,109,101,110,117,110,114, 0, 42,115, + 99,101,110,101, 0,105, 98,117,102,115, 0, 42,103,112,117,116,101,120,116,117,114,101, 0, 42, 97,110,105,109, 0, 42,114,114, + 0, 42,114,101,110,100,101,114,115, 91, 56, 93, 0,114,101,110,100,101,114, 95,115,108,111,116, 0,108, 97,115,116, 95,114,101, +110,100,101,114, 95,115,108,111,116, 0,115,111,117,114, 99,101, 0,108, 97,115,116,102,114, 97,109,101, 0,116,112, 97,103,101, +102,108, 97,103, 0,116,111,116, 98,105,110,100, 0,120,114,101,112, 0,121,114,101,112, 0,116,119,115,116, 97, 0,116,119,101, +110,100, 0, 98,105,110,100, 99,111,100,101, 0, 42,114,101,112, 98,105,110,100, 0, 42,112, 97, 99,107,101,100,102,105,108,101, + 0, 42,112,114,101,118,105,101,119, 0,108, 97,115,116,117,112,100, 97,116,101, 0,108, 97,115,116,117,115,101,100, 0, 97,110, +105,109,115,112,101,101,100, 0,103,101,110, 95,120, 0,103,101,110, 95,121, 0,103,101,110, 95,116,121,112,101, 0, 97,115,112, +120, 0, 97,115,112,121, 0,116,101,120, 99,111, 0,109, 97,112,116,111, 0,109, 97,112,116,111,110,101,103, 0, 98,108,101,110, +100,116,121,112,101, 0, 42,111, 98,106,101, 99,116, 0, 42,116,101,120, 0,117,118,110, 97,109,101, 91, 51, 50, 93, 0,112,114, +111,106,120, 0,112,114,111,106,121, 0,112,114,111,106,122, 0,109, 97,112,112,105,110,103, 0,111,102,115, 91, 51, 93, 0,115, +105,122,101, 91, 51, 93, 0,114,111,116, 0,116,101,120,102,108, 97,103, 0, 99,111,108,111,114,109,111,100,101,108, 0,112,109, + 97,112,116,111, 0,112,109, 97,112,116,111,110,101,103, 0,110,111,114,109, 97,112,115,112, 97, 99,101, 0,119,104,105, 99,104, + 95,111,117,116,112,117,116, 0, 98,114,117,115,104, 95,109, 97,112, 95,109,111,100,101, 0,112, 97,100, 91, 55, 93, 0,114, 0, +103, 0, 98, 0,107, 0,100,101,102, 95,118, 97,114, 0, 99,111,108,102, 97, 99, 0,118, 97,114,102, 97, 99, 0,110,111,114,102, + 97, 99, 0,100,105,115,112,102, 97, 99, 0,119, 97,114,112,102, 97, 99, 0, 99,111,108,115,112,101, 99,102, 97, 99, 0,109,105, +114,114,102, 97, 99, 0, 97,108,112,104, 97,102, 97, 99, 0,100,105,102,102,102, 97, 99, 0,115,112,101, 99,102, 97, 99, 0,101, +109,105,116,102, 97, 99, 0,104, 97,114,100,102, 97, 99, 0,114, 97,121,109,105,114,114,102, 97, 99, 0,116,114, 97,110,115,108, +102, 97, 99, 0, 97,109, 98,102, 97, 99, 0, 99,111,108,101,109,105,116,102, 97, 99, 0, 99,111,108,114,101,102,108,102, 97, 99, + 0, 99,111,108,116,114, 97,110,115,102, 97, 99, 0,100,101,110,115,102, 97, 99, 0,115, 99, 97,116,116,101,114,102, 97, 99, 0, +114,101,102,108,102, 97, 99, 0,116,105,109,101,102, 97, 99, 0,108,101,110,103,116,104,102, 97, 99, 0, 99,108,117,109,112,102, + 97, 99, 0,107,105,110,107,102, 97, 99, 0,114,111,117,103,104,102, 97, 99, 0,112, 97,100,101,110,115,102, 97, 99, 0,108,105, +102,101,102, 97, 99, 0,115,105,122,101,102, 97, 99, 0,105,118,101,108,102, 97, 99, 0,112,118,101,108,102, 97, 99, 0,115,104, + 97,100,111,119,102, 97, 99, 0,122,101,110,117,112,102, 97, 99, 0,122,101,110,100,111,119,110,102, 97, 99, 0, 98,108,101,110, +100,102, 97, 99, 0,110, 97,109,101, 91, 49, 54, 48, 93, 0, 42,104, 97,110,100,108,101, 0, 42,112,110, 97,109,101, 0, 42,115, +116,110, 97,109,101,115, 0,115,116,121,112,101,115, 0,118, 97,114,115, 0, 42,118, 97,114,115,116,114, 0, 42,114,101,115,117, +108,116, 0, 42, 99,102,114, 97, 0,100, 97,116, 97, 91, 51, 50, 93, 0, 40, 42,100,111,105,116, 41, 40, 41, 0, 40, 42,105,110, +115,116, 97,110, 99,101, 95,105,110,105,116, 41, 40, 41, 0, 40, 42, 99, 97,108,108, 98, 97, 99,107, 41, 40, 41, 0,118,101,114, +115,105,111,110, 0, 97, 0,105,112,111,116,121,112,101, 0, 42,105,109, 97, 0, 42, 99,117, 98,101, 91, 54, 93, 0,105,109, 97, +116, 91, 52, 93, 91, 52, 93, 0,111, 98,105,109, 97,116, 91, 51, 93, 91, 51, 93, 0,115,116,121,112,101, 0,118,105,101,119,115, + 99, 97,108,101, 0,110,111,116,108, 97,121, 0, 99,117, 98,101,114,101,115, 0,100,101,112,116,104, 0,114,101, 99, 97,108, 99, + 0,108, 97,115,116,115,105,122,101, 0,102, 97,108,108,111,102,102, 95,116,121,112,101, 0,102, 97,108,108,111,102,102, 95,115, +111,102,116,110,101,115,115, 0,114, 97,100,105,117,115, 0, 99,111,108,111,114, 95,115,111,117,114, 99,101, 0,116,111,116,112, +111,105,110,116,115, 0,112,100,112, 97,100, 0,112,115,121,115, 0,112,115,121,115, 95, 99, 97, 99,104,101, 95,115,112, 97, 99, +101, 0,111, 98, 95, 99, 97, 99,104,101, 95,115,112, 97, 99,101, 0, 42,112,111,105,110,116, 95,116,114,101,101, 0, 42,112,111, +105,110,116, 95,100, 97,116, 97, 0,110,111,105,115,101, 95,115,105,122,101, 0,110,111,105,115,101, 95,100,101,112,116,104, 0, +110,111,105,115,101, 95,105,110,102,108,117,101,110, 99,101, 0,110,111,105,115,101, 95, 98, 97,115,105,115, 0,112,100,112, 97, +100, 51, 91, 51, 93, 0,110,111,105,115,101, 95,102, 97, 99, 0,115,112,101,101,100, 95,115, 99, 97,108,101, 0, 42, 99,111, 98, + 97, 0,114,101,115,111,108, 91, 51, 93, 0,105,110,116,101,114,112, 95,116,121,112,101, 0,102,105,108,101, 95,102,111,114,109, + 97,116, 0,101,120,116,101,110,100, 0,115,109,111,107,101,100, 95,116,121,112,101, 0,105,110,116, 95,109,117,108,116,105,112, +108,105,101,114, 0,115,116,105,108,108, 95,102,114, 97,109,101, 0,115,111,117,114, 99,101, 95,112, 97,116,104, 91, 50, 52, 48, + 93, 0, 42,100, 97,116, 97,115,101,116, 0, 99, 97, 99,104,101,100,102,114, 97,109,101, 0,110,111,105,115,101,115,105,122,101, + 0,116,117,114, 98,117,108, 0, 98,114,105,103,104,116, 0, 99,111,110,116,114, 97,115,116, 0,115, 97,116,117,114, 97,116,105, +111,110, 0,114,102, 97, 99, 0,103,102, 97, 99, 0, 98,102, 97, 99, 0,102,105,108,116,101,114,115,105,122,101, 0,109,103, 95, + 72, 0,109,103, 95,108, 97, 99,117,110, 97,114,105,116,121, 0,109,103, 95,111, 99,116, 97,118,101,115, 0,109,103, 95,111,102, +102,115,101,116, 0,109,103, 95,103, 97,105,110, 0,100,105,115,116, 95, 97,109,111,117,110,116, 0,110,115, 95,111,117,116,115, + 99, 97,108,101, 0,118,110, 95,119, 49, 0,118,110, 95,119, 50, 0,118,110, 95,119, 51, 0,118,110, 95,119, 52, 0,118,110, 95, +109,101,120,112, 0,118,110, 95,100,105,115,116,109, 0,118,110, 95, 99,111,108,116,121,112,101, 0,110,111,105,115,101,100,101, +112,116,104, 0,110,111,105,115,101,116,121,112,101, 0,110,111,105,115,101, 98, 97,115,105,115, 0,110,111,105,115,101, 98, 97, +115,105,115, 50, 0,105,109, 97,102,108, 97,103, 0, 99,114,111,112,120,109,105,110, 0, 99,114,111,112,121,109,105,110, 0, 99, +114,111,112,120,109, 97,120, 0, 99,114,111,112,121,109, 97,120, 0,116,101,120,102,105,108,116,101,114, 0, 97,102,109, 97,120, + 0,120,114,101,112,101, 97,116, 0,121,114,101,112,101, 97,116, 0, 99,104,101, 99,107,101,114,100,105,115,116, 0,110, 97, 98, +108, 97, 0,105,117,115,101,114, 0, 42,110,111,100,101,116,114,101,101, 0, 42,112,108,117,103,105,110, 0, 42,101,110,118, 0, + 42,112,100, 0, 42,118,100, 0,117,115,101, 95,110,111,100,101,115, 0,108,111, 99, 91, 51, 93, 0,114,111,116, 91, 51, 93, 0, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,109,105,110, 91, 51, 93, 0,109, 97,120, 91, 51, 93, 0,109,111,100,101, 0,116,111,116, +101,120, 0,115,104,100,119,114, 0,115,104,100,119,103, 0,115,104,100,119, 98, 0,115,104,100,119,112, 97,100, 0,101,110,101, +114,103,121, 0,100,105,115,116, 0,115,112,111,116,115,105,122,101, 0,115,112,111,116, 98,108,101,110,100, 0,104, 97,105,110, +116, 0, 97,116,116, 49, 0, 97,116,116, 50, 0, 42, 99,117,114,102, 97,108,108,111,102,102, 0,115,104, 97,100,115,112,111,116, +115,105,122,101, 0, 98,105, 97,115, 0,115,111,102,116, 0, 99,111,109,112,114,101,115,115,116,104,114,101,115,104, 0,112, 97, +100, 53, 91, 51, 93, 0, 98,117,102,115,105,122,101, 0,115, 97,109,112, 0, 98,117,102,102,101,114,115, 0,102,105,108,116,101, +114,116,121,112,101, 0, 98,117,102,102,108, 97,103, 0, 98,117,102,116,121,112,101, 0,114, 97,121, 95,115, 97,109,112, 0,114, + 97,121, 95,115, 97,109,112,121, 0,114, 97,121, 95,115, 97,109,112,122, 0,114, 97,121, 95,115, 97,109,112, 95,116,121,112,101, + 0, 97,114,101, 97, 95,115,104, 97,112,101, 0, 97,114,101, 97, 95,115,105,122,101, 0, 97,114,101, 97, 95,115,105,122,101,121, + 0, 97,114,101, 97, 95,115,105,122,101,122, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 0,114, 97,121, 95,115, 97,109, +112, 95,109,101,116,104,111,100, 0,116,101,120, 97, 99,116, 0,115,104, 97,100,104, 97,108,111,115,116,101,112, 0,115,117,110, + 95,101,102,102,101, 99,116, 95,116,121,112,101, 0,115,107,121, 98,108,101,110,100,116,121,112,101, 0,104,111,114,105,122,111, +110, 95, 98,114,105,103,104,116,110,101,115,115, 0,115,112,114,101, 97,100, 0,115,117,110, 95, 98,114,105,103,104,116,110,101, +115,115, 0,115,117,110, 95,115,105,122,101, 0, 98, 97, 99,107,115, 99, 97,116,116,101,114,101,100, 95,108,105,103,104,116, 0, +115,117,110, 95,105,110,116,101,110,115,105,116,121, 0, 97,116,109, 95,116,117,114, 98,105,100,105,116,121, 0, 97,116,109, 95, +105,110,115, 99, 97,116,116,101,114,105,110,103, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,101,120,116,105,110, 99,116,105, +111,110, 95,102, 97, 99,116,111,114, 0, 97,116,109, 95,100,105,115,116, 97,110, 99,101, 95,102, 97, 99,116,111,114, 0,115,107, +121, 98,108,101,110,100,102, 97, 99, 0,115,107,121, 95,101,120,112,111,115,117,114,101, 0,115,107,121, 95, 99,111,108,111,114, +115,112, 97, 99,101, 0,112, 97,100, 52, 91, 54, 93, 0, 42,109,116,101,120, 91, 49, 56, 93, 0,112,114, 95,116,101,120,116,117, +114,101, 0,112, 97,100, 54, 91, 54, 93, 0,100,101,110,115,105,116,121, 0,101,109,105,115,115,105,111,110, 0,115, 99, 97,116, +116,101,114,105,110,103, 0,114,101,102,108,101, 99,116,105,111,110, 0,101,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, + 93, 0,116,114, 97,110,115,109,105,115,115,105,111,110, 95, 99,111,108, 91, 51, 93, 0,114,101,102,108,101, 99,116,105,111,110, + 95, 99,111,108, 91, 51, 93, 0,100,101,110,115,105,116,121, 95,115, 99, 97,108,101, 0,100,101,112,116,104, 95, 99,117,116,111, +102,102, 0, 97,115,121,109,109,101,116,114,121, 0,115,116,101,112,115,105,122,101, 95,116,121,112,101, 0,115,104, 97,100,101, +102,108, 97,103, 0,115,104, 97,100,101, 95,116,121,112,101, 0,112,114,101, 99, 97, 99,104,101, 95,114,101,115,111,108,117,116, +105,111,110, 0,115,116,101,112,115,105,122,101, 0,109,115, 95,100,105,102,102, 0,109,115, 95,105,110,116,101,110,115,105,116, +121, 0,109,115, 95,115,112,114,101, 97,100, 0,109, 97,116,101,114,105, 97,108, 95,116,121,112,101, 0,115,112,101, 99,114, 0, +115,112,101, 99,103, 0,115,112,101, 99, 98, 0,109,105,114,114, 0,109,105,114,103, 0,109,105,114, 98, 0, 97,109, 98,114, 0, + 97,109, 98, 98, 0, 97,109, 98,103, 0, 97,109, 98, 0,101,109,105,116, 0, 97,110,103, 0,115,112,101, 99,116,114, 97, 0,114, + 97,121, 95,109,105,114,114,111,114, 0, 97,108,112,104, 97, 0,114,101,102, 0,115,112,101, 99, 0,122,111,102,102,115, 0, 97, +100,100, 0,116,114, 97,110,115,108,117, 99,101,110, 99,121, 0,118,111,108, 0,102,114,101,115,110,101,108, 95,109,105,114, 0, +102,114,101,115,110,101,108, 95,109,105,114, 95,105, 0,102,114,101,115,110,101,108, 95,116,114, 97, 0,102,114,101,115,110,101, +108, 95,116,114, 97, 95,105, 0,102,105,108,116,101,114, 0,116,120, 95,108,105,109,105,116, 0,116,120, 95,102, 97,108,108,111, +102,102, 0,114, 97,121, 95,100,101,112,116,104, 0,114, 97,121, 95,100,101,112,116,104, 95,116,114, 97, 0,104, 97,114, 0,115, +101,101,100, 49, 0,115,101,101,100, 50, 0,103,108,111,115,115, 95,109,105,114, 0,103,108,111,115,115, 95,116,114, 97, 0,115, + 97,109,112, 95,103,108,111,115,115, 95,109,105,114, 0,115, 97,109,112, 95,103,108,111,115,115, 95,116,114, 97, 0, 97,100, 97, +112,116, 95,116,104,114,101,115,104, 95,109,105,114, 0, 97,100, 97,112,116, 95,116,104,114,101,115,104, 95,116,114, 97, 0, 97, +110,105,115,111, 95,103,108,111,115,115, 95,109,105,114, 0,100,105,115,116, 95,109,105,114, 0,102, 97,100,101,116,111, 95,109, +105,114, 0,115,104, 97,100,101, 95,102,108, 97,103, 0,109,111,100,101, 95,108, 0,102,108, 97,114,101, 99, 0,115,116, 97,114, + 99, 0,108,105,110,101, 99, 0,114,105,110,103, 99, 0,104, 97,115,105,122,101, 0,102,108, 97,114,101,115,105,122,101, 0,115, +117, 98,115,105,122,101, 0,102,108, 97,114,101, 98,111,111,115,116, 0,115,116,114, 97,110,100, 95,115,116, 97, 0,115,116,114, + 97,110,100, 95,101,110,100, 0,115,116,114, 97,110,100, 95,101, 97,115,101, 0,115,116,114, 97,110,100, 95,115,117,114,102,110, +111,114, 0,115,116,114, 97,110,100, 95,109,105,110, 0,115,116,114, 97,110,100, 95,119,105,100,116,104,102, 97,100,101, 0,115, +116,114, 97,110,100, 95,117,118,110, 97,109,101, 91, 51, 50, 93, 0,115, 98,105, 97,115, 0,108, 98,105, 97,115, 0,115,104, 97, +100, 95, 97,108,112,104, 97, 0,115,101,112,116,101,120, 0,114,103, 98,115,101,108, 0,112,114, 95,116,121,112,101, 0,112,114, + 95, 98, 97, 99,107, 0,112,114, 95,108, 97,109,112, 0,109,108, 95,102,108, 97,103, 0,100,105,102,102, 95,115,104, 97,100,101, +114, 0,115,112,101, 99, 95,115,104, 97,100,101,114, 0,114,111,117,103,104,110,101,115,115, 0,114,101,102,114, 97, 99, 0,112, + 97,114, 97,109, 91, 52, 93, 0,114,109,115, 0,100, 97,114,107,110,101,115,115, 0, 42,114, 97,109,112, 95, 99,111,108, 0, 42, +114, 97,109,112, 95,115,112,101, 99, 0,114, 97,109,112,105,110, 95, 99,111,108, 0,114, 97,109,112,105,110, 95,115,112,101, 99, + 0,114, 97,109,112, 98,108,101,110,100, 95, 99,111,108, 0,114, 97,109,112, 98,108,101,110,100, 95,115,112,101, 99, 0,114, 97, +109,112, 95,115,104,111,119, 0,112, 97,100, 51, 0,114, 97,109,112,102, 97, 99, 95, 99,111,108, 0,114, 97,109,112,102, 97, 99, + 95,115,112,101, 99, 0, 42,103,114,111,117,112, 0,102,114,105, 99,116,105,111,110, 0,102,104, 0,114,101,102,108,101, 99,116, + 0,102,104,100,105,115,116, 0,120,121,102,114,105, 99,116, 0,100,121,110, 97,109,111,100,101, 0,115,115,115, 95,114, 97,100, +105,117,115, 91, 51, 93, 0,115,115,115, 95, 99,111,108, 91, 51, 93, 0,115,115,115, 95,101,114,114,111,114, 0,115,115,115, 95, +115, 99, 97,108,101, 0,115,115,115, 95,105,111,114, 0,115,115,115, 95, 99,111,108,102, 97, 99, 0,115,115,115, 95,116,101,120, +102, 97, 99, 0,115,115,115, 95,102,114,111,110,116, 0,115,115,115, 95, 98, 97, 99,107, 0,115,115,115, 95,102,108, 97,103, 0, +115,115,115, 95,112,114,101,115,101,116, 0,109, 97,112,116,111, 95,116,101,120,116,117,114,101,100, 0,112, 97,100, 52, 0,103, +112,117,109, 97,116,101,114,105, 97,108, 0,110, 97,109,101, 91, 50, 53, 54, 93, 0, 42, 98, 98, 0,105, 49, 0,106, 49, 0,107, + 49, 0,105, 50, 0,106, 50, 0,107, 50, 0,115,101,108, 99,111,108, 49, 0,115,101,108, 99,111,108, 50, 0,113,117, 97,116, 91, + 52, 93, 0,101,120,112,120, 0,101,120,112,121, 0,101,120,112,122, 0,114, 97,100, 0,114, 97,100, 50, 0,115, 0, 42,109, 97, +116, 0, 42,105,109, 97,116, 0,101,108,101,109,115, 0,100,105,115,112, 0, 42,101,100,105,116,101,108,101,109,115, 0, 42, 42, +109, 97,116, 0,102,108, 97,103, 50, 0,116,111,116, 99,111,108, 0,119,105,114,101,115,105,122,101, 0,114,101,110,100,101,114, +115,105,122,101, 0,116,104,114,101,115,104, 0, 42,108, 97,115,116,101,108,101,109, 0,118,101, 99, 91, 51, 93, 91, 51, 93, 0, + 97,108,102, 97, 0,119,101,105,103,104,116, 0,104, 49, 0,104, 50, 0,102, 49, 0,102, 50, 0,102, 51, 0,104,105,100,101, 0, +118,101, 99, 91, 52, 93, 0,109, 97,116, 95,110,114, 0,112,110,116,115,117, 0,112,110,116,115,118, 0,114,101,115,111,108,117, + 0,114,101,115,111,108,118, 0,111,114,100,101,114,117, 0,111,114,100,101,114,118, 0,102,108, 97,103,117, 0,102,108, 97,103, +118, 0, 42,107,110,111,116,115,117, 0, 42,107,110,111,116,115,118, 0,116,105,108,116, 95,105,110,116,101,114,112, 0,114, 97, +100,105,117,115, 95,105,110,116,101,114,112, 0, 99,104, 97,114,105,100,120, 0,107,101,114,110, 0,104, 0,110,117,114, 98, 0, + 42,101,100,105,116,110,117,114, 98, 0, 42, 98,101,118,111, 98,106, 0, 42,116, 97,112,101,114,111, 98,106, 0, 42,116,101,120, +116,111,110, 99,117,114,118,101, 0, 42,112, 97,116,104, 0, 42,107,101,121, 0, 98,101,118, 0,100,114, 97,119,102,108, 97,103, + 0,116,119,105,115,116, 95,109,111,100,101, 0,112, 97,100, 91, 50, 93, 0,116,119,105,115,116, 95,115,109,111,111,116,104, 0, +112, 97,116,104,108,101,110, 0, 98,101,118,114,101,115,111,108, 0,119,105,100,116,104, 0,101,120,116, 49, 0,101,120,116, 50, + 0,114,101,115,111,108,117, 95,114,101,110, 0,114,101,115,111,108,118, 95,114,101,110, 0, 97, 99,116,110,117, 0, 42,108, 97, +115,116,115,101,108, 0,115,112, 97, 99,101,109,111,100,101, 0,115,112, 97, 99,105,110,103, 0,108,105,110,101,100,105,115,116, + 0,115,104,101, 97,114, 0,102,115,105,122,101, 0,119,111,114,100,115,112, 97, 99,101, 0,117,108,112,111,115, 0,117,108,104, +101,105,103,104,116, 0,120,111,102, 0,121,111,102, 0,108,105,110,101,119,105,100,116,104, 0, 42,115,116,114, 0, 42,115,101, +108, 98,111,120,101,115, 0, 42,101,100,105,116,102,111,110,116, 0,102, 97,109,105,108,121, 91, 50, 52, 93, 0, 42,118,102,111, +110,116, 0, 42,118,102,111,110,116, 98, 0, 42,118,102,111,110,116,105, 0, 42,118,102,111,110,116, 98,105, 0,115,101,112, 99, +104, 97,114, 0, 99,116,105,109,101, 0,116,111,116, 98,111,120, 0, 97, 99,116, 98,111,120, 0, 42,116, 98, 0,115,101,108,115, +116, 97,114,116, 0,115,101,108,101,110,100, 0, 42,115,116,114,105,110,102,111, 0, 99,117,114,105,110,102,111, 0,101,102,102, +101, 99,116, 0, 42,109,102, 97, 99,101, 0, 42,109,116,102, 97, 99,101, 0, 42,116,102, 97, 99,101, 0, 42,109,118,101,114,116, + 0, 42,109,101,100,103,101, 0, 42,100,118,101,114,116, 0, 42,109, 99,111,108, 0, 42,109,115,116,105, 99,107,121, 0, 42,116, +101,120, 99,111,109,101,115,104, 0, 42,109,115,101,108,101, 99,116, 0, 42,101,100,105,116, 95,109,101,115,104, 0,118,100, 97, +116, 97, 0,101,100, 97,116, 97, 0,102,100, 97,116, 97, 0,116,111,116,101,100,103,101, 0,116,111,116,102, 97, 99,101, 0,116, +111,116,115,101,108,101, 99,116, 0, 97, 99,116, 95,102, 97, 99,101, 0,101,100,105,116,102,108, 97,103, 0, 99,117, 98,101,109, + 97,112,115,105,122,101, 0,115,109,111,111,116,104,114,101,115,104, 0,115,117, 98,100,105,118, 0,115,117, 98,100,105,118,114, + 0,115,117, 98,115,117,114,102,116,121,112,101, 0, 42,109,114, 0, 42,112,118, 0, 42,116,112, 97,103,101, 0,117,118, 91, 52, + 93, 91, 50, 93, 0, 99,111,108, 91, 52, 93, 0,116,114, 97,110,115,112, 0,116,105,108,101, 0,117,110,119,114, 97,112, 0,118, + 49, 0,118, 50, 0,118, 51, 0,118, 52, 0,101,100, 99,111,100,101, 0, 99,114,101, 97,115,101, 0, 98,119,101,105,103,104,116, + 0,100,101,102, 95,110,114, 0, 42,100,119, 0,116,111,116,119,101,105,103,104,116, 0, 99,111, 91, 51, 93, 0,110,111, 91, 51, + 93, 0,117,118, 91, 50, 93, 0, 99,111, 91, 50, 93, 0,105,110,100,101,120, 0,102, 0,105, 0,115, 91, 50, 53, 54, 93, 0,116, +111,116,100,105,115,112, 0, 40, 42,100,105,115,112,115, 41, 40, 41, 0,118, 91, 52, 93, 0,109,105,100, 0,118, 91, 50, 93, 0, + 42,102, 97, 99,101,115, 0, 42, 99,111,108,102, 97, 99,101,115, 0, 42,101,100,103,101,115, 0, 42,118,101,114,116,115, 0,108, +101,118,101,108,115, 0,108,101,118,101,108, 95, 99,111,117,110,116, 0, 99,117,114,114,101,110,116, 0,110,101,119,108,118,108, + 0,101,100,103,101,108,118,108, 0,112,105,110,108,118,108, 0,114,101,110,100,101,114,108,118,108, 0,117,115,101, 95, 99,111, +108, 0, 42,101,100,103,101, 95,102,108, 97,103,115, 0, 42,101,100,103,101, 95, 99,114,101, 97,115,101,115, 0, 42,118,101,114, +116, 95,109, 97,112, 0, 42,101,100,103,101, 95,109, 97,112, 0, 42,111,108,100, 95,102, 97, 99,101,115, 0, 42,111,108,100, 95, +101,100,103,101,115, 0,115,116, 97, 99,107,105,110,100,101,120, 0, 42,101,114,114,111,114, 0,109,111,100,105,102,105,101,114, + 0,115,117, 98,100,105,118, 84,121,112,101, 0,114,101,110,100,101,114, 76,101,118,101,108,115, 0, 42,101,109, 67, 97, 99,104, +101, 0, 42,109, 67, 97, 99,104,101, 0,100,101,102, 97,120,105,115, 0,112, 97,100, 91, 54, 93, 0,108,101,110,103,116,104, 0, +114, 97,110,100,111,109,105,122,101, 0,115,101,101,100, 0, 42,111, 98, 95, 97,114,109, 0, 42,115,116, 97,114,116, 95, 99, 97, +112, 0, 42,101,110,100, 95, 99, 97,112, 0, 42, 99,117,114,118,101, 95,111, 98, 0, 42,111,102,102,115,101,116, 95,111, 98, 0, +111,102,102,115,101,116, 91, 51, 93, 0,115, 99, 97,108,101, 91, 51, 93, 0,109,101,114,103,101, 95,100,105,115,116, 0,102,105, +116, 95,116,121,112,101, 0,111,102,102,115,101,116, 95,116,121,112,101, 0, 99,111,117,110,116, 0, 97,120,105,115, 0,116,111, +108,101,114, 97,110, 99,101, 0, 42,109,105,114,114,111,114, 95,111, 98, 0,115,112,108,105,116, 95, 97,110,103,108,101, 0,118, + 97,108,117,101, 0,114,101,115, 0,118, 97,108, 95,102,108, 97,103,115, 0,108,105,109, 95,102,108, 97,103,115, 0,101, 95,102, +108, 97,103,115, 0, 98,101,118,101,108, 95, 97,110,103,108,101, 0,100,101,102,103,114,112, 95,110, 97,109,101, 91, 51, 50, 93, + 0, 42,100,111,109, 97,105,110, 0, 42,102,108,111,119, 0, 42, 99,111,108,108, 0,116,105,109,101, 0, 42,116,101,120,116,117, +114,101, 0,115,116,114,101,110,103,116,104, 0,100,105,114,101, 99,116,105,111,110, 0,109,105,100,108,101,118,101,108, 0,116, +101,120,109, 97,112,112,105,110,103, 0, 42,109, 97,112, 95,111, 98,106,101, 99,116, 0,117,118,108, 97,121,101,114, 95,110, 97, +109,101, 91, 51, 50, 93, 0,117,118,108, 97,121,101,114, 95,116,109,112, 0, 42,112,114,111,106,101, 99,116,111,114,115, 91, 49, + 48, 93, 0, 42,105,109, 97,103,101, 0,110,117,109, 95,112,114,111,106,101, 99,116,111,114,115, 0, 97,115,112,101, 99,116,120, + 0, 97,115,112,101, 99,116,121, 0,115, 99, 97,108,101,120, 0,115, 99, 97,108,101,121, 0,112,101,114, 99,101,110,116, 0,102, + 97, 99,101, 67,111,117,110,116, 0,102, 97, 99, 0,114,101,112,101, 97,116, 0, 42,111, 98,106,101, 99,116, 99,101,110,116,101, +114, 0,115,116, 97,114,116,120, 0,115,116, 97,114,116,121, 0,104,101,105,103,104,116, 0,110, 97,114,114,111,119, 0,115,112, +101,101,100, 0,100, 97,109,112, 0,102, 97,108,108,111,102,102, 0,116,105,109,101,111,102,102,115, 0,108,105,102,101,116,105, +109,101, 0,100,101,102,111,114,109,102,108, 97,103, 0,109,117,108,116,105, 0, 42,112,114,101,118, 67,111,115, 0,115,117, 98, +116, 97,114,103,101,116, 91, 51, 50, 93, 0,112, 97,114,101,110,116,105,110,118, 91, 52, 93, 91, 52, 93, 0, 99,101,110,116, 91, + 51, 93, 0, 42,105,110,100,101,120, 97,114, 0,116,111,116,105,110,100,101,120, 0,102,111,114, 99,101, 0, 42, 99,108,111,116, +104, 79, 98,106,101, 99,116, 0, 42,115,105,109, 95,112, 97,114,109,115, 0, 42, 99,111,108,108, 95,112, 97,114,109,115, 0, 42, +112,111,105,110,116, 95, 99, 97, 99,104,101, 0,112,116, 99, 97, 99,104,101,115, 0, 42,120, 0, 42,120,110,101,119, 0, 42,120, +111,108,100, 0, 42, 99,117,114,114,101,110,116, 95,120,110,101,119, 0, 42, 99,117,114,114,101,110,116, 95,120, 0, 42, 99,117, +114,114,101,110,116, 95,118, 0, 42,109,102, 97, 99,101,115, 0,110,117,109,118,101,114,116,115, 0,110,117,109,102, 97, 99,101, +115, 0, 42, 98,118,104,116,114,101,101, 0, 42,118, 0, 42,100,109, 0, 99,102,114, 97, 0,111,112,101,114, 97,116,105,111,110, + 0,118,101,114,116,101,120, 0,116,111,116,105,110,102,108,117,101,110, 99,101, 0,103,114,105,100,115,105,122,101, 0, 42, 98, +105,110,100,105,110,102,108,117,101,110, 99,101,115, 0, 42, 98,105,110,100,111,102,102,115,101,116,115, 0, 42, 98,105,110,100, + 99, 97,103,101, 99,111,115, 0,116,111,116, 99, 97,103,101,118,101,114,116, 0, 42,100,121,110,103,114,105,100, 0, 42,100,121, +110,105,110,102,108,117,101,110, 99,101,115, 0, 42,100,121,110,118,101,114,116,115, 0, 42,112, 97,100, 50, 0,100,121,110,103, +114,105,100,115,105,122,101, 0,100,121,110, 99,101,108,108,109,105,110, 91, 51, 93, 0,100,121,110, 99,101,108,108,119,105,100, +116,104, 0, 98,105,110,100,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 42, 98,105,110,100,119,101,105,103,104,116,115, 0, 42, 98, +105,110,100, 99,111,115, 0, 40, 42, 98,105,110,100,102,117,110, 99, 41, 40, 41, 0, 42,112,115,121,115, 0,116,111,116,100,109, +118,101,114,116, 0,116,111,116,100,109,101,100,103,101, 0,116,111,116,100,109,102, 97, 99,101, 0,112,111,115,105,116,105,111, +110, 0,114, 97,110,100,111,109, 95,112,111,115,105,116,105,111,110, 0, 42,102, 97, 99,101,112, 97, 0,118,103,114,111,117,112, + 0,112,114,111,116,101, 99,116, 0,108,118,108, 0,115, 99,117,108,112,116,108,118,108, 0,116,111,116,108,118,108, 0,115,105, +109,112,108,101, 0, 42,102,115,115, 0, 42,116, 97,114,103,101,116, 0, 42, 97,117,120, 84, 97,114,103,101,116, 0,118,103,114, +111,117,112, 95,110, 97,109,101, 91, 51, 50, 93, 0,107,101,101,112, 68,105,115,116, 0,115,104,114,105,110,107, 84,121,112,101, + 0,115,104,114,105,110,107, 79,112,116,115, 0,112,114,111,106, 65,120,105,115, 0,115,117, 98,115,117,114,102, 76,101,118,101, +108,115, 0, 42,111,114,105,103,105,110, 0,102, 97, 99,116,111,114, 0,108,105,109,105,116, 91, 50, 93, 0,111,114,105,103,105, +110, 79,112,116,115, 0,111,102,102,115,101,116, 95,102, 97, 99, 0, 99,114,101, 97,115,101, 95,105,110,110,101,114, 0, 99,114, +101, 97,115,101, 95,111,117,116,101,114, 0, 99,114,101, 97,115,101, 95,114,105,109, 0, 42,111, 98, 95, 97,120,105,115, 0,115, +116,101,112,115, 0,114,101,110,100,101,114, 95,115,116,101,112,115, 0,105,116,101,114, 0,115, 99,114,101,119, 95,111,102,115, + 0, 97,110,103,108,101, 0,112,110,116,115,119, 0,111,112,110,116,115,117, 0,111,112,110,116,115,118, 0,111,112,110,116,115, +119, 0,116,121,112,101,117, 0,116,121,112,101,118, 0,116,121,112,101,119, 0,102,117, 0,102,118, 0,102,119, 0,100,117, 0, +100,118, 0,100,119, 0, 42,100,101,102, 0, 42,108, 97,116,116,105, 99,101,100, 97,116, 97, 0,108, 97,116,109, 97,116, 91, 52, + 93, 91, 52, 93, 0, 42,101,100,105,116,108, 97,116,116, 0,118,101, 99, 91, 56, 93, 91, 51, 93, 0, 42,115, 99,117,108,112,116, + 0,112, 97,114,116,121,112,101, 0,112, 97,114, 49, 0,112, 97,114, 50, 0,112, 97,114, 51, 0,112, 97,114,115,117, 98,115,116, +114, 91, 51, 50, 93, 0, 42,116,114, 97, 99,107, 0, 42,112,114,111,120,121, 0, 42,112,114,111,120,121, 95,103,114,111,117,112, + 0, 42,112,114,111,120,121, 95,102,114,111,109, 0, 42, 97, 99,116,105,111,110, 0, 42,112,111,115,101,108,105, 98, 0, 42,112, +111,115,101, 0, 42,103,112,100, 0, 97,118,115, 0, 42,109,112, 97,116,104, 0, 99,111,110,115,116,114, 97,105,110,116, 67,104, + 97,110,110,101,108,115, 0,100,101,102, 98, 97,115,101, 0,109,111,100,105,102,105,101,114,115, 0,114,101,115,116,111,114,101, + 95,109,111,100,101, 0, 42,109, 97,116, 98,105,116,115, 0, 97, 99,116, 99,111,108, 0,100,108,111, 99, 91, 51, 93, 0,111,114, +105,103, 91, 51, 93, 0,100,115,105,122,101, 91, 51, 93, 0,100,114,111,116, 91, 51, 93, 0,100,113,117, 97,116, 91, 52, 93, 0, +114,111,116, 65,120,105,115, 91, 51, 93, 0,100,114,111,116, 65,120,105,115, 91, 51, 93, 0,114,111,116, 65,110,103,108,101, 0, +100,114,111,116, 65,110,103,108,101, 0,111, 98,109, 97,116, 91, 52, 93, 91, 52, 93, 0, 99,111,110,115,116,105,110,118, 91, 52, + 93, 91, 52, 93, 0,108, 97,121, 0, 99,111,108, 98,105,116,115, 0,116,114, 97,110,115,102,108, 97,103, 0,112,114,111,116,101, + 99,116,102,108, 97,103, 0,116,114, 97, 99,107,102,108, 97,103, 0,117,112,102,108, 97,103, 0,110,108, 97,102,108, 97,103, 0, +105,112,111,102,108, 97,103, 0,105,112,111,119,105,110, 0,115, 99, 97,102,108, 97,103, 0,115, 99, 97,118,105,115,102,108, 97, +103, 0, 98,111,117,110,100,116,121,112,101, 0,100,117,112,111,110, 0,100,117,112,111,102,102, 0,100,117,112,115,116, 97, 0, +100,117,112,101,110,100, 0,115,102, 0,109, 97,115,115, 0,100, 97,109,112,105,110,103, 0,105,110,101,114,116,105, 97, 0,102, +111,114,109,102, 97, 99,116,111,114, 0,114,100, 97,109,112,105,110,103, 0,109, 97,114,103,105,110, 0,109, 97,120, 95,118,101, +108, 0,109,105,110, 95,118,101,108, 0,109, 95, 99,111,110,116, 97, 99,116, 80,114,111, 99,101,115,115,105,110,103, 84,104,114, +101,115,104,111,108,100, 0,114,111,116,109,111,100,101, 0,100,116, 0,100,116,120, 0,101,109,112,116,121, 95,100,114, 97,119, +116,121,112,101, 0,112, 97,100, 49, 91, 51, 93, 0,101,109,112,116,121, 95,100,114, 97,119,115,105,122,101, 0,100,117,112,102, + 97, 99,101,115, 99, 97, 0,112,114,111,112, 0,115,101,110,115,111,114,115, 0, 99,111,110,116,114,111,108,108,101,114,115, 0, + 97, 99,116,117, 97,116,111,114,115, 0, 98, 98,115,105,122,101, 91, 51, 93, 0, 97, 99,116,100,101,102, 0,103, 97,109,101,102, +108, 97,103, 0,103, 97,109,101,102,108, 97,103, 50, 0, 42, 98,115,111,102,116, 0,115,111,102,116,102,108, 97,103, 0, 97,110, +105,115,111,116,114,111,112,105, 99, 70,114,105, 99,116,105,111,110, 91, 51, 93, 0, 99,111,110,115,116,114, 97,105,110,116,115, + 0,110,108, 97,115,116,114,105,112,115, 0,104,111,111,107,115, 0,112, 97,114,116,105, 99,108,101,115,121,115,116,101,109, 0, + 42,115,111,102,116, 0, 42,100,117,112, 95,103,114,111,117,112, 0,102,108,117,105,100,115,105,109, 70,108, 97,103, 0,114,101, +115,116,114,105, 99,116,102,108, 97,103, 0,115,104, 97,112,101,110,114, 0,115,104, 97,112,101,102,108, 97,103, 0,114,101, 99, + 97,108, 99,111, 0, 98,111,100,121, 95,116,121,112,101, 0, 42,102,108,117,105,100,115,105,109, 83,101,116,116,105,110,103,115, + 0, 42,100,101,114,105,118,101,100, 68,101,102,111,114,109, 0, 42,100,101,114,105,118,101,100, 70,105,110, 97,108, 0,108, 97, +115,116, 68, 97,116, 97, 77, 97,115,107, 0,115,116, 97,116,101, 0,105,110,105,116, 95,115,116, 97,116,101, 0,103,112,117,108, + 97,109,112, 0,112, 99, 95,105,100,115, 0, 42,100,117,112,108,105,108,105,115,116, 0, 99,117,114,105,110,100,101,120, 0, 97, + 99,116,105,118,101, 0,111,114,105,103,108, 97,121, 0,110,111, 95,100,114, 97,119, 0, 97,110,105,109, 97,116,101,100, 0,111, +109, 97,116, 91, 52, 93, 91, 52, 93, 0,111,114, 99,111, 91, 51, 93, 0,100,101,102,108,101, 99,116, 0,102,111,114, 99,101,102, +105,101,108,100, 0,115,104, 97,112,101, 0,116,101,120, 95,109,111,100,101, 0,107,105,110,107, 0,107,105,110,107, 95, 97,120, +105,115, 0,122,100,105,114, 0,102, 95,115,116,114,101,110,103,116,104, 0,102, 95,100, 97,109,112, 0,102, 95,102,108,111,119, + 0,102, 95,115,105,122,101, 0,102, 95,112,111,119,101,114, 0,109, 97,120,100,105,115,116, 0,109,105,110,100,105,115,116, 0, +102, 95,112,111,119,101,114, 95,114, 0,109, 97,120,114, 97,100, 0,109,105,110,114, 97,100, 0,112,100,101,102, 95,100, 97,109, +112, 0,112,100,101,102, 95,114,100, 97,109,112, 0,112,100,101,102, 95,112,101,114,109, 0,112,100,101,102, 95,102,114,105, 99, +116, 0,112,100,101,102, 95,114,102,114,105, 99,116, 0,112,100,101,102, 95,115,116,105, 99,107,110,101,115,115, 0, 97, 98,115, +111,114,112,116,105,111,110, 0,112,100,101,102, 95,115, 98,100, 97,109,112, 0,112,100,101,102, 95,115, 98,105,102,116, 0,112, +100,101,102, 95,115, 98,111,102,116, 0, 99,108,117,109,112, 95,102, 97, 99, 0, 99,108,117,109,112, 95,112,111,119, 0,107,105, +110,107, 95,102,114,101,113, 0,107,105,110,107, 95,115,104, 97,112,101, 0,107,105,110,107, 95, 97,109,112, 0,102,114,101,101, + 95,101,110,100, 0,116,101,120, 95,110, 97, 98,108, 97, 0, 42,114,110,103, 0,102, 95,110,111,105,115,101, 0,119,101,105,103, +104,116, 91, 49, 51, 93, 0,103,108,111, 98, 97,108, 95,103,114, 97,118,105,116,121, 0,114,116, 91, 51, 93, 0,102,114, 97,109, +101, 0,116,111,116,112,111,105,110,116, 0,100, 97,116, 97, 95,116,121,112,101,115, 0, 42,105,110,100,101,120, 95, 97,114,114, + 97,121, 0, 42,100, 97,116, 97, 91, 56, 93, 0, 42, 99,117,114, 91, 56, 93, 0,115,116,101,112, 0,115,105,109,102,114, 97,109, +101, 0,115,116, 97,114,116,102,114, 97,109,101, 0,101,110,100,102,114, 97,109,101, 0,101,100,105,116,102,114, 97,109,101, 0, +108, 97,115,116, 95,101,120, 97, 99,116, 0,110, 97,109,101, 91, 54, 52, 93, 0,112,114,101,118, 95,110, 97,109,101, 91, 54, 52, + 93, 0,105,110,102,111, 91, 54, 52, 93, 0,112, 97,116,104, 91, 50, 52, 48, 93, 0,109,101,109, 95, 99, 97, 99,104,101, 0, 42, +101,100,105,116, 0, 40, 42,102,114,101,101, 95,101,100,105,116, 41, 40, 41, 0,108,105,110, 83,116,105,102,102, 0, 97,110,103, + 83,116,105,102,102, 0,118,111,108,117,109,101, 0,118,105,116,101,114, 97,116,105,111,110,115, 0,112,105,116,101,114, 97,116, +105,111,110,115, 0,100,105,116,101,114, 97,116,105,111,110,115, 0, 99,105,116,101,114, 97,116,105,111,110,115, 0,107, 83, 82, + 72, 82, 95, 67, 76, 0,107, 83, 75, 72, 82, 95, 67, 76, 0,107, 83, 83, 72, 82, 95, 67, 76, 0,107, 83, 82, 95, 83, 80, 76, 84, + 95, 67, 76, 0,107, 83, 75, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 83, 83, 95, 83, 80, 76, 84, 95, 67, 76, 0,107, 86, 67, 70, + 0,107, 68, 80, 0,107, 68, 71, 0,107, 76, 70, 0,107, 80, 82, 0,107, 86, 67, 0,107, 68, 70, 0,107, 77, 84, 0,107, 67, 72, + 82, 0,107, 75, 72, 82, 0,107, 83, 72, 82, 0,107, 65, 72, 82, 0, 99,111,108,108,105,115,105,111,110,102,108, 97,103,115, 0, +110,117,109, 99,108,117,115,116,101,114,105,116,101,114, 97,116,105,111,110,115, 0,119,101,108,100,105,110,103, 0,116,111,116, +115,112,114,105,110,103, 0, 42, 98,112,111,105,110,116, 0, 42, 98,115,112,114,105,110,103, 0,109,115,103, 95,108,111, 99,107, + 0,109,115,103, 95,118, 97,108,117,101, 0,110,111,100,101,109, 97,115,115, 0,110, 97,109,101,100, 86, 71, 95, 77, 97,115,115, + 91, 51, 50, 93, 0,103,114, 97,118, 0,109,101,100,105, 97,102,114,105, 99,116, 0,114,107,108,105,109,105,116, 0,112,104,121, +115,105, 99,115, 95,115,112,101,101,100, 0,103,111, 97,108,115,112,114,105,110,103, 0,103,111, 97,108,102,114,105, 99,116, 0, +109,105,110,103,111, 97,108, 0,109, 97,120,103,111, 97,108, 0,100,101,102,103,111, 97,108, 0,118,101,114,116,103,114,111,117, +112, 0,110, 97,109,101,100, 86, 71, 95, 83,111,102,116,103,111, 97,108, 91, 51, 50, 93, 0,102,117,122,122,121,110,101,115,115, + 0,105,110,115,112,114,105,110,103, 0,105,110,102,114,105, 99,116, 0,110, 97,109,101,100, 86, 71, 95, 83,112,114,105,110,103, + 95, 75, 91, 51, 50, 93, 0,101,102,114, 97, 0,105,110,116,101,114,118, 97,108, 0,108,111, 99, 97,108, 0,115,111,108,118,101, +114,102,108, 97,103,115, 0, 42, 42,107,101,121,115, 0,116,111,116,112,111,105,110,116,107,101,121, 0,115,101, 99,111,110,100, +115,112,114,105,110,103, 0, 99,111,108, 98, 97,108,108, 0, 98, 97,108,108,100, 97,109,112, 0, 98, 97,108,108,115,116,105,102, +102, 0,115, 98, 99, 95,109,111,100,101, 0, 97,101,114,111,101,100,103,101, 0,109,105,110,108,111,111,112,115, 0,109, 97,120, +108,111,111,112,115, 0, 99,104,111,107,101, 0,115,111,108,118,101,114, 95, 73, 68, 0,112,108, 97,115,116,105, 99, 0,115,112, +114,105,110,103,112,114,101,108,111, 97,100, 0, 42,115, 99,114, 97,116, 99,104, 0,115,104,101, 97,114,115,116,105,102,102, 0, +105,110,112,117,115,104, 0, 42,112,111,105,110,116, 99, 97, 99,104,101, 0, 42,101,102,102,101, 99,116,111,114, 95,119,101,105, +103,104,116,115, 0,108, 99,111,109, 91, 51, 93, 0,108,114,111,116, 91, 51, 93, 91, 51, 93, 0,108,115, 99, 97,108,101, 91, 51, + 93, 91, 51, 93, 0,112, 97,100, 52, 91, 52, 93, 0, 42,102,109,100, 0,115,104,111,119, 95, 97,100,118, 97,110, 99,101,100,111, +112,116,105,111,110,115, 0,114,101,115,111,108,117,116,105,111,110,120,121,122, 0,112,114,101,118,105,101,119,114,101,115,120, +121,122, 0,114,101, 97,108,115,105,122,101, 0,103,117,105, 68,105,115,112,108, 97,121, 77,111,100,101, 0,114,101,110,100,101, +114, 68,105,115,112,108, 97,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 86, 97,108,117,101, 0,118,105,115, 99, +111,115,105,116,121, 77,111,100,101, 0,118,105,115, 99,111,115,105,116,121, 69,120,112,111,110,101,110,116, 0,103,114, 97,118, +120, 0,103,114, 97,118,121, 0,103,114, 97,118,122, 0, 97,110,105,109, 83,116, 97,114,116, 0, 97,110,105,109, 69,110,100, 0, + 98, 97,107,101, 83,116, 97,114,116, 0, 98, 97,107,101, 69,110,100, 0,103,115,116, 97,114, 0,109, 97,120, 82,101,102,105,110, +101, 0,105,110,105, 86,101,108,120, 0,105,110,105, 86,101,108,121, 0,105,110,105, 86,101,108,122, 0, 42,111,114,103, 77,101, +115,104, 0, 42,109,101,115,104, 83,117,114,102, 97, 99,101, 0, 42,109,101,115,104, 66, 66, 0,115,117,114,102,100, 97,116, 97, + 80, 97,116,104, 91, 50, 52, 48, 93, 0, 98, 98, 83,116, 97,114,116, 91, 51, 93, 0, 98, 98, 83,105,122,101, 91, 51, 93, 0,116, +121,112,101, 70,108, 97,103,115, 0,100,111,109, 97,105,110, 78,111,118,101, 99,103,101,110, 0,118,111,108,117,109,101, 73,110, +105,116, 84,121,112,101, 0,112, 97,114,116, 83,108,105,112, 86, 97,108,117,101, 0,103,101,110,101,114, 97,116,101, 84,114, 97, + 99,101,114,115, 0,103,101,110,101,114, 97,116,101, 80, 97,114,116,105, 99,108,101,115, 0,115,117,114,102, 97, 99,101, 83,109, +111,111,116,104,105,110,103, 0,115,117,114,102, 97, 99,101, 83,117, 98,100,105,118,115, 0,112, 97,114,116,105, 99,108,101, 73, +110,102, 83,105,122,101, 0,112, 97,114,116,105, 99,108,101, 73,110,102, 65,108,112,104, 97, 0,102, 97,114, 70,105,101,108,100, + 83,105,122,101, 0, 42,109,101,115,104, 83,117,114,102, 78,111,114,109, 97,108,115, 0, 99,112,115, 84,105,109,101, 83,116, 97, +114,116, 0, 99,112,115, 84,105,109,101, 69,110,100, 0, 99,112,115, 81,117, 97,108,105,116,121, 0, 97,116,116,114, 97, 99,116, +102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0, 97,116,116,114, 97, 99,116,102,111,114, 99,101, 82, 97,100,105,117,115, + 0,118,101,108,111, 99,105,116,121,102,111,114, 99,101, 83,116,114,101,110,103,116,104, 0,118,101,108,111, 99,105,116,121,102, +111,114, 99,101, 82, 97,100,105,117,115, 0,108, 97,115,116,103,111,111,100,102,114, 97,109,101, 0,109,105,115,116,121,112,101, + 0,104,111,114,114, 0,104,111,114,103, 0,104,111,114, 98, 0,104,111,114,107, 0,122,101,110,114, 0,122,101,110,103, 0,122, +101,110, 98, 0,122,101,110,107, 0, 97,109, 98,107, 0,102, 97,115,116, 99,111,108, 0,101,120,112,111,115,117,114,101, 0,101, +120,112, 0,114, 97,110,103,101, 0,108,105,110,102, 97, 99, 0,108,111,103,102, 97, 99, 0,103,114, 97,118,105,116,121, 0, 97, + 99,116,105,118,105,116,121, 66,111,120, 82, 97,100,105,117,115, 0,115,107,121,116,121,112,101, 0,111, 99, 99,108,117,115,105, +111,110, 82,101,115, 0,112,104,121,115,105, 99,115, 69,110,103,105,110,101, 0,116,105, 99,114, 97,116,101, 0,109, 97,120,108, +111,103,105, 99,115,116,101,112, 0,112,104,121,115,117, 98,115,116,101,112, 0,109, 97,120,112,104,121,115,116,101,112, 0,109, +105,115,105, 0,109,105,115,116,115,116, 97, 0,109,105,115,116,100,105,115,116, 0,109,105,115,116,104,105, 0,115,116, 97,114, +114, 0,115,116, 97,114,103, 0,115,116, 97,114, 98, 0,115,116, 97,114,107, 0,115,116, 97,114,115,105,122,101, 0,115,116, 97, +114,109,105,110,100,105,115,116, 0,115,116, 97,114,100,105,115,116, 0,115,116, 97,114, 99,111,108,110,111,105,115,101, 0,100, +111,102,115,116, 97, 0,100,111,102,101,110,100, 0,100,111,102,109,105,110, 0,100,111,102,109, 97,120, 0, 97,111,100,105,115, +116, 0, 97,111,100,105,115,116,102, 97, 99, 0, 97,111,101,110,101,114,103,121, 0, 97,111, 98,105, 97,115, 0, 97,111,109,111, +100,101, 0, 97,111,115, 97,109,112, 0, 97,111,109,105,120, 0, 97,111, 99,111,108,111,114, 0, 97,111, 95, 97,100, 97,112,116, + 95,116,104,114,101,115,104, 0, 97,111, 95, 97,100, 97,112,116, 95,115,112,101,101,100, 95,102, 97, 99, 0, 97,111, 95, 97,112, +112,114,111,120, 95,101,114,114,111,114, 0, 97,111, 95, 97,112,112,114,111,120, 95, 99,111,114,114,101, 99,116,105,111,110, 0, + 97,111, 95,105,110,100,105,114,101, 99,116, 95,101,110,101,114,103,121, 0, 97,111, 95,101,110,118, 95,101,110,101,114,103,121, + 0, 97,111, 95,112, 97,100, 50, 0, 97,111, 95,105,110,100,105,114,101, 99,116, 95, 98,111,117,110, 99,101,115, 0, 97,111, 95, +112, 97,100, 0, 97,111, 95,115, 97,109,112, 95,109,101,116,104,111,100, 0, 97,111, 95,103, 97,116,104,101,114, 95,109,101,116, +104,111,100, 0, 97,111, 95, 97,112,112,114,111,120, 95,112, 97,115,115,101,115, 0, 42, 97,111,115,112,104,101,114,101, 0, 42, + 97,111,116, 97, 98,108,101,115, 0,112, 97,100, 91, 51, 93, 0,115,101,108, 99,111,108, 0,115,120, 0,115,121, 0, 42,108,112, + 70,111,114,109, 97,116, 0, 42,108,112, 80, 97,114,109,115, 0, 99, 98, 70,111,114,109, 97,116, 0, 99, 98, 80, 97,114,109,115, + 0,102, 99, 99, 84,121,112,101, 0,102, 99, 99, 72, 97,110,100,108,101,114, 0,100,119, 75,101,121, 70,114, 97,109,101, 69,118, +101,114,121, 0,100,119, 81,117, 97,108,105,116,121, 0,100,119, 66,121,116,101,115, 80,101,114, 83,101, 99,111,110,100, 0,100, +119, 70,108, 97,103,115, 0,100,119, 73,110,116,101,114,108,101, 97,118,101, 69,118,101,114,121, 0, 97,118,105, 99,111,100,101, + 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 42, 99,100, 80, 97,114,109,115, 0, 42,112, 97,100, 0, 99,100, 83,105,122,101, 0, +113,116, 99,111,100,101, 99,110, 97,109,101, 91, 49, 50, 56, 93, 0, 99,111,100,101, 99, 84,121,112,101, 0, 99,111,100,101, 99, + 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0, 99,111,100,101, 99, 0, 99,111,100,101, 99, 70,108, 97,103,115, 0, + 99,111,108,111,114, 68,101,112,116,104, 0, 99,111,100,101, 99, 84,101,109,112,111,114, 97,108, 81,117, 97,108,105,116,121, 0, +109,105,110, 83,112, 97,116,105, 97,108, 81,117, 97,108,105,116,121, 0,109,105,110, 84,101,109,112,111,114, 97,108, 81,117, 97, +108,105,116,121, 0,107,101,121, 70,114, 97,109,101, 82, 97,116,101, 0, 98,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 99, +111,100,101, 99, 84,121,112,101, 0, 97,117,100,105,111, 83, 97,109,112,108,101, 82, 97,116,101, 0, 97,117,100,105,111, 66,105, +116, 68,101,112,116,104, 0, 97,117,100,105,111, 67,104, 97,110,110,101,108,115, 0, 97,117,100,105,111, 67,111,100,101, 99, 70, +108, 97,103,115, 0, 97,117,100,105,111, 66,105,116, 82, 97,116,101, 0, 97,117,100,105,111, 95, 99,111,100,101, 99, 0,118,105, +100,101,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, 98,105,116,114, 97,116,101, 0, 97,117,100,105,111, 95, +109,105,120,114, 97,116,101, 0, 97,117,100,105,111, 95,118,111,108,117,109,101, 0,103,111,112, 95,115,105,122,101, 0,114, 99, + 95,109,105,110, 95,114, 97,116,101, 0,114, 99, 95,109, 97,120, 95,114, 97,116,101, 0,114, 99, 95, 98,117,102,102,101,114, 95, +115,105,122,101, 0,109,117,120, 95,112, 97, 99,107,101,116, 95,115,105,122,101, 0,109,117,120, 95,114, 97,116,101, 0,109,105, +120,114, 97,116,101, 0,109, 97,105,110, 0,115,112,101,101,100, 95,111,102, 95,115,111,117,110,100, 0,100,111,112,112,108,101, +114, 95,102, 97, 99,116,111,114, 0,100,105,115,116, 97,110, 99,101, 95,109,111,100,101,108, 0, 42,109, 97,116, 95,111,118,101, +114,114,105,100,101, 0, 42,108,105,103,104,116, 95,111,118,101,114,114,105,100,101, 0,108, 97,121, 95,122,109, 97,115,107, 0, +108, 97,121,102,108, 97,103, 0,112, 97,115,115,102,108, 97,103, 0,112, 97,115,115, 95,120,111,114, 0, 42, 97,118,105, 99,111, +100,101, 99,100, 97,116, 97, 0, 42,113,116, 99,111,100,101, 99,100, 97,116, 97, 0,113,116, 99,111,100,101, 99,115,101,116,116, +105,110,103,115, 0,102,102, 99,111,100,101, 99,100, 97,116, 97, 0,115,117, 98,102,114, 97,109,101, 0,112,115,102,114, 97, 0, +112,101,102,114, 97, 0,105,109, 97,103,101,115, 0,102,114, 97,109, 97,112,116,111, 0,116,104,114,101, 97,100,115, 0,102,114, + 97,109,101,108,101,110, 0, 98,108,117,114,102, 97, 99, 0,101,100,103,101, 82, 0,101,100,103,101, 71, 0,101,100,103,101, 66, + 0,102,117,108,108,115, 99,114,101,101,110, 0,120,112,108, 97,121, 0,121,112,108, 97,121, 0,102,114,101,113,112,108, 97,121, + 0, 97,116,116,114,105, 98, 0,114,116, 50, 0,102,114, 97,109,101, 95,115,116,101,112, 0,115,116,101,114,101,111,109,111,100, +101, 0,100,105,109,101,110,115,105,111,110,115,112,114,101,115,101,116, 0,109, 97,120,105,109,115,105,122,101, 0,120,115, 99, +104, 0,121,115, 99,104, 0,120,112, 97,114,116,115, 0,121,112, 97,114,116,115, 0,119,105,110,112,111,115, 0,112,108, 97,110, +101,115, 0,105,109,116,121,112,101, 0,115,117, 98,105,109,116,121,112,101, 0,113,117, 97,108,105,116,121, 0,100,105,115,112, +108, 97,121,109,111,100,101, 0,114,112, 97,100, 49, 0,114,112, 97,100, 50, 0,115, 99,101,109,111,100,101, 0,114, 97,121,116, +114, 97, 99,101, 95,111,112,116,105,111,110,115, 0,114, 97,121,116,114, 97, 99,101, 95,115,116,114,117, 99,116,117,114,101, 0, +114,101,110,100,101,114,101,114, 0,111, 99,114,101,115, 0, 97,108,112,104, 97,109,111,100,101, 0,111,115, 97, 0,102,114,115, + 95,115,101, 99, 0,101,100,103,101,105,110,116, 0,115, 97,102,101,116,121, 0, 98,111,114,100,101,114, 0,100,105,115,112,114, +101, 99,116, 0,108, 97,121,101,114,115, 0, 97, 99,116,108, 97,121, 0,109, 98,108,117,114, 95,115, 97,109,112,108,101,115, 0, +120, 97,115,112, 0,121, 97,115,112, 0,102,114,115, 95,115,101, 99, 95, 98, 97,115,101, 0,103, 97,117,115,115, 0, 99,111,108, +111,114, 95,109,103,116, 95,102,108, 97,103, 0,112,111,115,116,103, 97,109,109, 97, 0,112,111,115,116,104,117,101, 0,112,111, +115,116,115, 97,116, 0,100,105,116,104,101,114, 95,105,110,116,101,110,115,105,116,121, 0, 98, 97,107,101, 95,111,115, 97, 0, + 98, 97,107,101, 95,102,105,108,116,101,114, 0, 98, 97,107,101, 95,109,111,100,101, 0, 98, 97,107,101, 95,102,108, 97,103, 0, + 98, 97,107,101, 95,110,111,114,109, 97,108, 95,115,112, 97, 99,101, 0, 98, 97,107,101, 95,113,117, 97,100, 95,115,112,108,105, +116, 0, 98, 97,107,101, 95,109, 97,120,100,105,115,116, 0, 98, 97,107,101, 95, 98,105, 97,115,100,105,115,116, 0, 98, 97,107, +101, 95,112, 97,100, 0, 98, 97, 99,107, 98,117,102, 91, 49, 54, 48, 93, 0,112,105, 99, 91, 49, 54, 48, 93, 0,115,116, 97,109, +112, 0,115,116, 97,109,112, 95,102,111,110,116, 95,105,100, 0,115,116, 97,109,112, 95,117,100, 97,116, 97, 91, 49, 54, 48, 93, + 0,102,103, 95,115,116, 97,109,112, 91, 52, 93, 0, 98,103, 95,115,116, 97,109,112, 91, 52, 93, 0,115,101,113, 95,112,114,101, +118, 95,116,121,112,101, 0,115,101,113, 95,114,101,110,100, 95,116,121,112,101, 0,115,101,113, 95,102,108, 97,103, 0,112, 97, +100, 53, 91, 53, 93, 0,115,105,109,112,108,105,102,121, 95,102,108, 97,103, 0,115,105,109,112,108,105,102,121, 95,115,117, 98, +115,117,114,102, 0,115,105,109,112,108,105,102,121, 95,115,104, 97,100,111,119,115, 97,109,112,108,101,115, 0,115,105,109,112, +108,105,102,121, 95,112, 97,114,116,105, 99,108,101,115, 0,115,105,109,112,108,105,102,121, 95, 97,111,115,115,115, 0, 99,105, +110,101,111,110,119,104,105,116,101, 0, 99,105,110,101,111,110, 98,108, 97, 99,107, 0, 99,105,110,101,111,110,103, 97,109,109, + 97, 0,106,112, 50, 95,112,114,101,115,101,116, 0,106,112, 50, 95,100,101,112,116,104, 0,114,112, 97,100, 51, 0,100,111,109, +101,114,101,115, 0,100,111,109,101,109,111,100,101, 0,100,111,109,101, 97,110,103,108,101, 0,100,111,109,101,116,105,108,116, + 0,100,111,109,101,114,101,115, 98,117,102, 0, 42,100,111,109,101,116,101,120,116, 0,101,110,103,105,110,101, 91, 51, 50, 93, + 0,112, 97,114,116,105, 99,108,101, 95,112,101,114, 99, 0,115,117, 98,115,117,114,102, 95,109, 97,120, 0,115,104, 97,100, 98, +117,102,115, 97,109,112,108,101, 95,109, 97,120, 0, 97,111, 95,101,114,114,111,114, 0,116,105,108,116, 0,114,101,115, 98,117, +102, 0, 42,119, 97,114,112,116,101,120,116, 0, 99,111,108, 91, 51, 93, 0,109, 97,116,109,111,100,101, 0,102,114, 97,109,105, +110,103, 0,114,116, 49, 0,100,111,109,101, 0,115,116,101,114,101,111,102,108, 97,103, 0,101,121,101,115,101,112, 97,114, 97, +116,105,111,110, 0, 42, 99, 97,109,101,114, 97, 0, 42, 42, 98,114,117,115,104,101,115, 0, 97, 99,116,105,118,101, 95, 98,114, +117,115,104, 95,105,110,100,101,120, 0, 98,114,117,115,104, 95, 99,111,117,110,116, 0, 42,112, 97,105,110,116, 95, 99,117,114, +115,111,114, 0,112, 97,105,110,116, 95, 99,117,114,115,111,114, 95, 99,111,108, 91, 52, 93, 0,112, 97,105,110,116, 0,115,101, + 97,109, 95, 98,108,101,101,100, 0,110,111,114,109, 97,108, 95, 97,110,103,108,101, 0,115, 99,114,101,101,110, 95,103,114, 97, + 98, 95,115,105,122,101, 91, 50, 93, 0, 42,112, 97,105,110,116, 99,117,114,115,111,114, 0,105,110,118,101,114,116, 0,116,111, +116,114,101,107,101,121, 0,116,111,116, 97,100,100,107,101,121, 0, 98,114,117,115,104,116,121,112,101, 0, 98,114,117,115,104, + 91, 55, 93, 0,101,109,105,116,116,101,114,100,105,115,116, 0,115,101,108,101, 99,116,109,111,100,101, 0,101,100,105,116,116, +121,112,101, 0,100,114, 97,119, 95,115,116,101,112, 0,102, 97,100,101, 95,102,114, 97,109,101,115, 0,110, 97,109,101, 91, 51, + 54, 93, 0,109, 97,116, 91, 51, 93, 91, 51, 93, 0,112,105,118,111,116, 91, 51, 93, 0,116, 97, 98,108,101,116, 95,115,105,122, +101, 0,116, 97, 98,108,101,116, 95,115,116,114,101,110,103,116,104, 0, 42,118,112, 97,105,110,116, 95,112,114,101,118, 0, 42, +119,112, 97,105,110,116, 95,112,114,101,118, 0, 42,118,112, 97,105,110,116, 0, 42,119,112, 97,105,110,116, 0,118,103,114,111, +117,112, 95,119,101,105,103,104,116, 0, 99,111,114,110,101,114,116,121,112,101, 0,101,100,105,116, 98,117,116,102,108, 97,103, + 0,106,111,105,110,116,114,105,108,105,109,105,116, 0,100,101,103,114, 0,116,117,114,110, 0,101,120,116,114, 95,111,102,102, +115, 0,100,111,117, 98,108,105,109,105,116, 0,110,111,114,109, 97,108,115,105,122,101, 0, 97,117,116,111,109,101,114,103,101, + 0,115,101,103,109,101,110,116,115, 0,114,105,110,103,115, 0,118,101,114,116,105, 99,101,115, 0,117,110,119,114, 97,112,112, +101,114, 0,117,118, 99, 97,108, 99, 95,114, 97,100,105,117,115, 0,117,118, 99, 97,108, 99, 95, 99,117, 98,101,115,105,122,101, + 0,117,118, 99, 97,108, 99, 95,109, 97,114,103,105,110, 0,117,118, 99, 97,108, 99, 95,109, 97,112,100,105,114, 0,117,118, 99, + 97,108, 99, 95,109, 97,112, 97,108,105,103,110, 0,117,118, 99, 97,108, 99, 95,102,108, 97,103, 0,117,118, 95,102,108, 97,103, + 0,117,118, 95,115,101,108,101, 99,116,109,111,100,101, 0,117,118, 95,112, 97,100, 91, 50, 93, 0, 97,117,116,111,105,107, 95, + 99,104, 97,105,110,108,101,110, 0,105,109, 97,112, 97,105,110,116, 0,112, 97,114,116,105, 99,108,101, 0,112,114,111,112,111, +114,116,105,111,110, 97,108, 95,115,105,122,101, 0,115,101,108,101, 99,116, 95,116,104,114,101,115,104, 0, 99,108,101, 97,110, + 95,116,104,114,101,115,104, 0, 97,117,116,111,107,101,121, 95,109,111,100,101, 0, 97,117,116,111,107,101,121, 95,102,108, 97, +103, 0,114,101,116,111,112,111, 95,109,111,100,101, 0,114,101,116,111,112,111, 95,112, 97,105,110,116, 95,116,111,111,108, 0, +108,105,110,101, 95,100,105,118, 0,101,108,108,105,112,115,101, 95,100,105,118, 0,114,101,116,111,112,111, 95,104,111,116,115, +112,111,116, 0,109,117,108,116,105,114,101,115, 95,115,117, 98,100,105,118, 95,116,121,112,101, 0,115,107,103,101,110, 95,114, +101,115,111,108,117,116,105,111,110, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,105,110,116,101,114,110, + 97,108, 0,115,107,103,101,110, 95,116,104,114,101,115,104,111,108,100, 95,101,120,116,101,114,110, 97,108, 0,115,107,103,101, +110, 95,108,101,110,103,116,104, 95,114, 97,116,105,111, 0,115,107,103,101,110, 95,108,101,110,103,116,104, 95,108,105,109,105, +116, 0,115,107,103,101,110, 95, 97,110,103,108,101, 95,108,105,109,105,116, 0,115,107,103,101,110, 95, 99,111,114,114,101,108, + 97,116,105,111,110, 95,108,105,109,105,116, 0,115,107,103,101,110, 95,115,121,109,109,101,116,114,121, 95,108,105,109,105,116, + 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95, 97,110,103,108,101, 95,119,101,105,103,104,116, 0,115,107,103, +101,110, 95,114,101,116, 97,114,103,101,116, 95,108,101,110,103,116,104, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95, +114,101,116, 97,114,103,101,116, 95,100,105,115,116, 97,110, 99,101, 95,119,101,105,103,104,116, 0,115,107,103,101,110, 95,111, +112,116,105,111,110,115, 0,115,107,103,101,110, 95,112,111,115,116,112,114,111, 0,115,107,103,101,110, 95,112,111,115,116,112, +114,111, 95,112, 97,115,115,101,115, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110,115, 91, 51, 93, 0, +115,107,103,101,110, 95,109,117,108,116,105, 95,108,101,118,101,108, 0, 42,115,107,103,101,110, 95,116,101,109,112,108, 97,116, +101, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 0, 98,111,110,101, 95,115,107,101,116, 99,104,105,110,103, 95, + 99,111,110,118,101,114,116, 0,115,107,103,101,110, 95,115,117, 98,100,105,118,105,115,105,111,110, 95,110,117,109, 98,101,114, + 0,115,107,103,101,110, 95,114,101,116, 97,114,103,101,116, 95,111,112,116,105,111,110,115, 0,115,107,103,101,110, 95,114,101, +116, 97,114,103,101,116, 95,114,111,108,108, 0,115,107,103,101,110, 95,115,105,100,101, 95,115,116,114,105,110,103, 91, 56, 93, + 0,115,107,103,101,110, 95,110,117,109, 95,115,116,114,105,110,103, 91, 56, 93, 0,101,100,103,101, 95,109,111,100,101, 0,115, +110, 97,112, 95,109,111,100,101, 0,115,110, 97,112, 95,102,108, 97,103, 0,115,110, 97,112, 95,116, 97,114,103,101,116, 0,112, +114,111,112,111,114,116,105,111,110, 97,108, 0,112,114,111,112, 95,109,111,100,101, 0, 97,117,116,111, 95,110,111,114,109, 97, +108,105,122,101, 0,105,110,116,112, 97,100, 0,116,111,116,111, 98,106, 0,116,111,116,108, 97,109,112, 0,116,111,116,111, 98, +106,115,101,108, 0,116,111,116, 99,117,114,118,101, 0,116,111,116,109,101,115,104, 0,116,111,116, 97,114,109, 97,116,117,114, +101, 0,115, 99, 97,108,101, 95,108,101,110,103,116,104, 0,115,121,115,116,101,109, 0,103,114, 97,118,105,116,121, 91, 51, 93, + 0,113,117,105, 99,107, 95, 99, 97, 99,104,101, 95,115,116,101,112, 0, 42,119,111,114,108,100, 0, 42,115,101,116, 0, 98, 97, +115,101, 0, 42, 98, 97,115, 97, 99,116, 0, 42,111, 98,101,100,105,116, 0, 99,117,114,115,111,114, 91, 51, 93, 0,116,119, 99, +101,110,116, 91, 51, 93, 0,116,119,109,105,110, 91, 51, 93, 0,116,119,109, 97,120, 91, 51, 93, 0,108, 97,121, 97, 99,116, 0, + 42,101,100, 0, 42,116,111,111,108,115,101,116,116,105,110,103,115, 0, 42,115,116, 97,116,115, 0, 97,117,100,105,111, 0,116, +114, 97,110,115,102,111,114,109, 95,115,112, 97, 99,101,115, 0, 42,115,111,117,110,100, 95,115, 99,101,110,101, 0, 42,115,111, +117,110,100, 95,115, 99,101,110,101, 95,104, 97,110,100,108,101, 0, 42,102,112,115, 95,105,110,102,111, 0, 42,116,104,101, 68, + 97,103, 0,100, 97,103,105,115,118, 97,108,105,100, 0,100, 97,103,102,108, 97,103,115, 0,106,117,109,112,102,114, 97,109,101, + 0,112, 97,100, 53, 0, 97, 99,116,105,118,101, 95,107,101,121,105,110,103,115,101,116, 0,107,101,121,105,110,103,115,101,116, +115, 0,103,109, 0,117,110,105,116, 0,112,104,121,115,105, 99,115, 95,115,101,116,116,105,110,103,115, 0, 98,108,101,110,100, + 0,118,105,101,119, 0,119,105,110,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116, 91, 52, 93, 91, 52, 93, + 0,118,105,101,119,105,110,118, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,101,114, +115,105,110,118, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,109, 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,112,101,114,115,109, + 97,116,111, 98, 91, 52, 93, 91, 52, 93, 0,116,119,109, 97,116, 91, 52, 93, 91, 52, 93, 0,118,105,101,119,113,117, 97,116, 91, + 52, 93, 0,122,102, 97, 99, 0, 99, 97,109,100,120, 0, 99, 97,109,100,121, 0,112,105,120,115,105,122,101, 0, 99, 97,109,122, +111,111,109, 0,118,105,101,119, 98,117,116, 0,116,119,100,114, 97,119,102,108, 97,103, 0,114,102,108, 97,103, 0,118,105,101, +119,108,111, 99,107, 0,112,101,114,115,112, 0, 99,108,105,112, 91, 54, 93, 91, 52, 93, 0, 99,108,105,112, 95,108,111, 99, 97, +108, 91, 54, 93, 91, 52, 93, 0, 42, 99,108,105,112, 98, 98, 0, 42,108,111, 99, 97,108,118,100, 0, 42,114,105, 0, 42,114,101, +116,111,112,111, 95,118,105,101,119, 95,100, 97,116, 97, 0, 42,100,101,112,116,104,115, 0, 42,115,109,115, 0, 42,115,109,111, +111,116,104, 95,116,105,109,101,114, 0,108,118,105,101,119,113,117, 97,116, 91, 52, 93, 0,108,112,101,114,115,112, 0,108,118, +105,101,119, 0,103,114,105,100,118,105,101,119, 0,116,119, 97,110,103,108,101, 91, 51, 93, 0,112, 97,100,102, 0,114,101,103, +105,111,110, 98, 97,115,101, 0,115,112, 97, 99,101,116,121,112,101, 0, 98,108,111, 99,107,115, 99, 97,108,101, 0, 98,108,111, + 99,107,104, 97,110,100,108,101,114, 91, 56, 93, 0,108, 97,121, 95,117,115,101,100, 0, 42,111, 98, 95, 99,101,110,116,114,101, + 0, 98,103,112,105, 99, 98, 97,115,101, 0, 42, 98,103,112,105, 99, 0,111, 98, 95, 99,101,110,116,114,101, 95, 98,111,110,101, + 91, 51, 50, 93, 0,100,114, 97,119,116,121,112,101, 0,115, 99,101,110,101,108,111, 99,107, 0, 97,114,111,117,110,100, 0,112, +105,118,111,116, 95,108, 97,115,116, 0,103,114,105,100, 0,110,101, 97,114, 0,102, 97,114, 0,103,114,105,100,108,105,110,101, +115, 0,103,114,105,100,102,108, 97,103, 0,103,114,105,100,115,117, 98,100,105,118, 0,109,111,100,101,115,101,108,101, 99,116, + 0,107,101,121,102,108, 97,103,115, 0,116,119,116,121,112,101, 0,116,119,109,111,100,101, 0,116,119,102,108, 97,103, 0, 99, +117,115,116,111,109,100, 97,116, 97, 95,109, 97,115,107, 0, 97,102,116,101,114,100,114, 97,119, 0,122, 98,117,102, 0,120,114, + 97,121, 0,110,100,111,102,109,111,100,101, 0,110,100,111,102,102,105,108,116,101,114, 0, 42,112,114,111,112,101,114,116,105, +101,115, 95,115,116,111,114, 97,103,101, 0,118,101,114,116, 0,104,111,114, 0,109, 97,115,107, 0,109,105,110, 91, 50, 93, 0, +109, 97,120, 91, 50, 93, 0,109,105,110,122,111,111,109, 0,109, 97,120,122,111,111,109, 0,115, 99,114,111,108,108, 0,115, 99, +114,111,108,108, 95,117,105, 0,107,101,101,112,116,111,116, 0,107,101,101,112,122,111,111,109, 0,107,101,101,112,111,102,115, + 0, 97,108,105,103,110, 0,119,105,110,120, 0,119,105,110,121, 0,111,108,100,119,105,110,120, 0,111,108,100,119,105,110,121, + 0, 42,116, 97, 98, 95,111,102,102,115,101,116, 0,116, 97, 98, 95,110,117,109, 0,116, 97, 98, 95, 99,117,114, 0, 42,115, 99, +114,101,101,110, 0,118, 50,100, 0, 42, 97,100,115, 0,103,104,111,115,116, 67,117,114,118,101,115, 0, 97,117,116,111,115,110, + 97,112, 0, 99,117,114,115,111,114, 86, 97,108, 0,109, 97,105,110, 98, 0,109, 97,105,110, 98,111, 0,109, 97,105,110, 98,117, +115,101,114, 0,114,101, 95, 97,108,105,103,110, 0,112,114,101,118,105,101,119, 0,112, 97,116,104,102,108, 97,103, 0,100, 97, +116, 97,105, 99,111,110, 0, 42,112,105,110,105,100, 0,114,101,110,100,101,114, 95,115,105,122,101, 0, 99,104, 97,110,115,104, +111,119,110, 0,122,101, 98,114, 97, 0,122,111,111,109, 0,116,105,116,108,101, 91, 50, 52, 93, 0,100,105,114, 91, 50, 52, 48, + 93, 0,102,105,108,101, 91, 56, 48, 93, 0,114,101,110, 97,109,101,102,105,108,101, 91, 56, 48, 93, 0,115,111,114,116, 0,100, +105,115,112,108, 97,121, 0, 97, 99,116,105,118,101, 95, 98,111,111,107,109, 97,114,107, 0, 97, 99,116,105,118,101, 95,102,105, +108,101, 0,115,101,108,115,116, 97,116,101, 0,102, 95,102,112, 0,102,112, 95,115,116,114, 91, 56, 93, 0,115, 99,114,111,108, +108, 95,111,102,102,115,101,116, 0, 42,112, 97,114, 97,109,115, 0, 42,102,105,108,101,115, 0, 42,102,111,108,100,101,114,115, + 95,112,114,101,118, 0, 42,102,111,108,100,101,114,115, 95,110,101,120,116, 0, 42,111,112, 0, 42,115,109,111,111,116,104,115, + 99,114,111,108,108, 95,116,105,109,101,114, 0, 42,108, 97,121,111,117,116, 0,114,101, 99,101,110,116,110,114, 0, 98,111,111, +107,109, 97,114,107,110,114, 0,115,121,115,116,101,109,110,114, 0,116,114,101,101, 0, 42,116,114,101,101,115,116,111,114,101, + 0,115,101, 97,114, 99,104, 95,115,116,114,105,110,103, 91, 51, 50, 93, 0,115,101, 97,114, 99,104, 95,116,115,101, 0,115,101, + 97,114, 99,104, 95,102,108, 97,103,115, 0,100,111, 95, 0,111,117,116,108,105,110,101,118,105,115, 0,115,116,111,114,101,102, +108, 97,103, 0, 42, 99,117,109, 97,112, 0,105,109, 97,110,114, 0, 99,117,114,116,105,108,101, 0,105,109,116,121,112,101,110, +114, 0,108,111, 99,107, 0,112,105,110, 0,100,116, 95,117,118, 0,115,116,105, 99,107,121, 0,100,116, 95,117,118,115,116,114, +101,116, 99,104, 0, 99,117,114,115,111,114, 91, 50, 93, 0, 99,101,110,116,120, 0, 99,101,110,116,121, 0,115, 99,111,112,101, +115, 0,115, 97,109,112,108,101, 95,108,105,110,101, 95,104,105,115,116, 0, 42,116,101,120,116, 0,116,111,112, 0,118,105,101, +119,108,105,110,101,115, 0,108,104,101,105,103,104,116, 0, 99,119,105,100,116,104, 0,108,105,110,101,110,114,115, 95,116,111, +116, 0,108,101,102,116, 0,115,104,111,119,108,105,110,101,110,114,115, 0,116, 97, 98,110,117,109, 98,101,114, 0,115,104,111, +119,115,121,110,116, 97,120, 0,111,118,101,114,119,114,105,116,101, 0,108,105,118,101, 95,101,100,105,116, 0,112,105,120, 95, +112,101,114, 95,108,105,110,101, 0,116,120,116,115, 99,114,111,108,108, 0,116,120,116, 98, 97,114, 0,119,111,114,100,119,114, + 97,112, 0,100,111,112,108,117,103,105,110,115, 0,102,105,110,100,115,116,114, 91, 50, 53, 54, 93, 0,114,101,112,108, 97, 99, +101,115,116,114, 91, 50, 53, 54, 93, 0, 42,112,121, 95,100,114, 97,119, 0, 42,112,121, 95,101,118,101,110,116, 0, 42,112,121, + 95, 98,117,116,116,111,110, 0, 42,112,121, 95, 98,114,111,119,115,101,114, 99, 97,108,108, 98, 97, 99,107, 0, 42,112,121, 95, +103,108,111, 98, 97,108,100,105, 99,116, 0,108, 97,115,116,115,112, 97, 99,101, 0,115, 99,114,105,112,116,110, 97,109,101, 91, + 50, 53, 54, 93, 0,115, 99,114,105,112,116, 97,114,103, 91, 50, 53, 54, 93, 0, 42,115, 99,114,105,112,116, 0, 42, 98,117,116, + 95,114,101,102,115, 0, 42, 97,114,114, 97,121, 0, 99, 97, 99,104,101,115, 0, 99, 97, 99,104,101, 95,100,105,115,112,108, 97, +121, 0,114,101,100,114, 97,119,115, 0, 42,105,100, 0, 97,115,112,101, 99,116, 0, 42, 99,117,114,102,111,110,116, 0,109,120, + 0,109,121, 0, 42,101,100,105,116,116,114,101,101, 0,116,114,101,101,116,121,112,101, 0,116,101,120,102,114,111,109, 0,109, +101,110,117, 0,110,117,109,116,105,108,101,115,120, 0,110,117,109,116,105,108,101,115,121, 0,118,105,101,119,114,101, 99,116, + 0, 98,111,111,107,109, 97,114,107,114,101, 99,116, 0,115, 99,114,111,108,108,112,111,115, 0,115, 99,114,111,108,108,104,101, +105,103,104,116, 0,115, 99,114,111,108,108, 97,114,101, 97, 0,114,101,116,118, 97,108, 0,112,114,118, 95,119, 0,112,114,118, + 95,104, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, +101,118,101,110,116, 41, 40, 41, 0, 40, 42,114,101,116,117,114,110,102,117,110, 99, 95, 97,114,103,115, 41, 40, 41, 0, 42, 97, +114,103, 49, 0, 42, 97,114,103, 50, 0, 42,109,101,110,117,112, 0, 42,112,117,112,109,101,110,117, 0, 42,105,109,103, 0,108, +101,110, 95, 97,108,108,111, 99, 0, 99,117,114,115,111,114, 0,114,112,116, 95,109, 97,115,107, 0,115, 99,114,111,108,108, 98, + 97, 99,107, 0,104,105,115,116,111,114,121, 0,112,114,111,109,112,116, 91, 50, 53, 54, 93, 0,108, 97,110,103,117, 97,103,101, + 91, 51, 50, 93, 0,115,101,108, 95,115,116, 97,114,116, 0,115,101,108, 95,101,110,100, 0,102,105,108,116,101,114, 91, 54, 52, + 93, 0,102,105,108,101,110, 97,109,101, 91, 50, 53, 54, 93, 0, 98,108,102, 95,105,100, 0,117,105,102,111,110,116, 95,105,100, + 0,114, 95,116,111, 95,108, 0,112,111,105,110,116,115, 0,107,101,114,110,105,110,103, 0,105,116, 97,108,105, 99, 0, 98,111, +108,100, 0,115,104, 97,100,111,119, 0,115,104, 97,100,120, 0,115,104, 97,100,121, 0,115,104, 97,100,111,119, 97,108,112,104, + 97, 0,115,104, 97,100,111,119, 99,111,108,111,114, 0,112, 97,110,101,108,116,105,116,108,101, 0,103,114,111,117,112,108, 97, + 98,101,108, 0,119,105,100,103,101,116,108, 97, 98,101,108, 0,119,105,100,103,101,116, 0,112, 97,110,101,108,122,111,111,109, + 0,109,105,110,108, 97, 98,101,108, 99,104, 97,114,115, 0,109,105,110,119,105,100,103,101,116, 99,104, 97,114,115, 0, 99,111, +108,117,109,110,115,112, 97, 99,101, 0,116,101,109,112,108, 97,116,101,115,112, 97, 99,101, 0, 98,111,120,115,112, 97, 99,101, + 0, 98,117,116,116,111,110,115,112, 97, 99,101,120, 0, 98,117,116,116,111,110,115,112, 97, 99,101,121, 0,112, 97,110,101,108, +115,112, 97, 99,101, 0,112, 97,110,101,108,111,117,116,101,114, 0,112, 97,100, 91, 49, 93, 0,111,117,116,108,105,110,101, 91, + 52, 93, 0,105,110,110,101,114, 91, 52, 93, 0,105,110,110,101,114, 95,115,101,108, 91, 52, 93, 0,105,116,101,109, 91, 52, 93, + 0,116,101,120,116, 91, 52, 93, 0,116,101,120,116, 95,115,101,108, 91, 52, 93, 0,115,104, 97,100,101,100, 0,115,104, 97,100, +101,116,111,112, 0,115,104, 97,100,101,100,111,119,110, 0, 97,108,112,104, 97, 95, 99,104,101, 99,107, 0,105,110,110,101,114, + 95, 97,110,105,109, 91, 52, 93, 0,105,110,110,101,114, 95, 97,110,105,109, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, + 95,107,101,121, 91, 52, 93, 0,105,110,110,101,114, 95,107,101,121, 95,115,101,108, 91, 52, 93, 0,105,110,110,101,114, 95,100, +114,105,118,101,110, 91, 52, 93, 0,105,110,110,101,114, 95,100,114,105,118,101,110, 95,115,101,108, 91, 52, 93, 0,119, 99,111, +108, 95,114,101,103,117,108, 97,114, 0,119, 99,111,108, 95,116,111,111,108, 0,119, 99,111,108, 95,116,101,120,116, 0,119, 99, +111,108, 95,114, 97,100,105,111, 0,119, 99,111,108, 95,111,112,116,105,111,110, 0,119, 99,111,108, 95,116,111,103,103,108,101, + 0,119, 99,111,108, 95,110,117,109, 0,119, 99,111,108, 95,110,117,109,115,108,105,100,101,114, 0,119, 99,111,108, 95,109,101, +110,117, 0,119, 99,111,108, 95,112,117,108,108,100,111,119,110, 0,119, 99,111,108, 95,109,101,110,117, 95, 98, 97, 99,107, 0, +119, 99,111,108, 95,109,101,110,117, 95,105,116,101,109, 0,119, 99,111,108, 95, 98,111,120, 0,119, 99,111,108, 95,115, 99,114, +111,108,108, 0,119, 99,111,108, 95,112,114,111,103,114,101,115,115, 0,119, 99,111,108, 95,108,105,115,116, 95,105,116,101,109, + 0,119, 99,111,108, 95,115,116, 97,116,101, 0,105, 99,111,110,102,105,108,101, 91, 56, 48, 93, 0, 98, 97, 99,107, 91, 52, 93, + 0,116,105,116,108,101, 91, 52, 93, 0,116,101,120,116, 95,104,105, 91, 52, 93, 0,104,101, 97,100,101,114, 91, 52, 93, 0,104, +101, 97,100,101,114, 95,116,105,116,108,101, 91, 52, 93, 0,104,101, 97,100,101,114, 95,116,101,120,116, 91, 52, 93, 0,104,101, + 97,100,101,114, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0, 98,117,116,116,111,110, 91, 52, 93, 0, 98,117,116,116,111,110, + 95,116,105,116,108,101, 91, 52, 93, 0, 98,117,116,116,111,110, 95,116,101,120,116, 91, 52, 93, 0, 98,117,116,116,111,110, 95, +116,101,120,116, 95,104,105, 91, 52, 93, 0,108,105,115,116, 91, 52, 93, 0,108,105,115,116, 95,116,105,116,108,101, 91, 52, 93, + 0,108,105,115,116, 95,116,101,120,116, 91, 52, 93, 0,108,105,115,116, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,112, 97, +110,101,108, 91, 52, 93, 0,112, 97,110,101,108, 95,116,105,116,108,101, 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, + 91, 52, 93, 0,112, 97,110,101,108, 95,116,101,120,116, 95,104,105, 91, 52, 93, 0,115,104, 97,100,101, 49, 91, 52, 93, 0,115, +104, 97,100,101, 50, 91, 52, 93, 0,104,105,108,105,116,101, 91, 52, 93, 0,103,114,105,100, 91, 52, 93, 0,119,105,114,101, 91, + 52, 93, 0,115,101,108,101, 99,116, 91, 52, 93, 0,108, 97,109,112, 91, 52, 93, 0, 97, 99,116,105,118,101, 91, 52, 93, 0,103, +114,111,117,112, 91, 52, 93, 0,103,114,111,117,112, 95, 97, 99,116,105,118,101, 91, 52, 93, 0,116,114, 97,110,115,102,111,114, +109, 91, 52, 93, 0,118,101,114,116,101,120, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0, +101,100,103,101, 91, 52, 93, 0,101,100,103,101, 95,115,101,108,101, 99,116, 91, 52, 93, 0,101,100,103,101, 95,115,101, 97,109, + 91, 52, 93, 0,101,100,103,101, 95,115,104, 97,114,112, 91, 52, 93, 0,101,100,103,101, 95,102, 97, 99,101,115,101,108, 91, 52, + 93, 0,101,100,103,101, 95, 99,114,101, 97,115,101, 91, 52, 93, 0,102, 97, 99,101, 91, 52, 93, 0,102, 97, 99,101, 95,115,101, +108,101, 99,116, 91, 52, 93, 0,102, 97, 99,101, 95,100,111,116, 91, 52, 93, 0,110,111,114,109, 97,108, 91, 52, 93, 0,118,101, +114,116,101,120, 95,110,111,114,109, 97,108, 91, 52, 93, 0, 98,111,110,101, 95,115,111,108,105,100, 91, 52, 93, 0, 98,111,110, +101, 95,112,111,115,101, 91, 52, 93, 0,115,116,114,105,112, 91, 52, 93, 0,115,116,114,105,112, 95,115,101,108,101, 99,116, 91, + 52, 93, 0, 99,102,114, 97,109,101, 91, 52, 93, 0,110,117,114, 98, 95,117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95, +118,108,105,110,101, 91, 52, 93, 0, 97, 99,116, 95,115,112,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95, +117,108,105,110,101, 91, 52, 93, 0,110,117,114, 98, 95,115,101,108, 95,118,108,105,110,101, 91, 52, 93, 0,108, 97,115,116,115, +101,108, 95,112,111,105,110,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100,108, +101, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95, + 97,108,105,103,110, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,102,114,101,101, 91, 52, 93, 0,104, 97,110,100, +108,101, 95,115,101,108, 95, 97,117,116,111, 91, 52, 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95,118,101, 99,116, 91, 52, + 93, 0,104, 97,110,100,108,101, 95,115,101,108, 95, 97,108,105,103,110, 91, 52, 93, 0,100,115, 95, 99,104, 97,110,110,101,108, + 91, 52, 93, 0,100,115, 95,115,117, 98, 99,104, 97,110,110,101,108, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,111,117,116, +112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,105,110,112,117,116, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95, +105,110,102,111, 91, 52, 93, 0, 99,111,110,115,111,108,101, 95,101,114,114,111,114, 91, 52, 93, 0, 99,111,110,115,111,108,101, + 95, 99,117,114,115,111,114, 91, 52, 93, 0,118,101,114,116,101,120, 95,115,105,122,101, 0,102, 97, 99,101,100,111,116, 95,115, +105,122,101, 0, 98,112, 97,100, 91, 50, 93, 0,115,121,110,116, 97,120,108, 91, 52, 93, 0,115,121,110,116, 97,120,110, 91, 52, + 93, 0,115,121,110,116, 97,120, 98, 91, 52, 93, 0,115,121,110,116, 97,120,118, 91, 52, 93, 0,115,121,110,116, 97,120, 99, 91, + 52, 93, 0,109,111,118,105,101, 91, 52, 93, 0,105,109, 97,103,101, 91, 52, 93, 0,115, 99,101,110,101, 91, 52, 93, 0, 97,117, +100,105,111, 91, 52, 93, 0,101,102,102,101, 99,116, 91, 52, 93, 0,112,108,117,103,105,110, 91, 52, 93, 0,116,114, 97,110,115, +105,116,105,111,110, 91, 52, 93, 0,109,101,116, 97, 91, 52, 93, 0,101,100,105,116,109,101,115,104, 95, 97, 99,116,105,118,101, + 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116, +101,120, 95,115,101,108,101, 99,116, 91, 52, 93, 0,104, 97,110,100,108,101, 95,118,101,114,116,101,120, 95,115,105,122,101, 0, +104,112, 97,100, 91, 55, 93, 0,112,114,101,118,105,101,119, 95, 98, 97, 99,107, 91, 52, 93, 0,115,111,108,105,100, 91, 52, 93, + 0,116,117,105, 0,116, 98,117,116,115, 0,116,118, 51,100, 0,116,102,105,108,101, 0,116,105,112,111, 0,116,105,110,102,111, + 0,116,115,110,100, 0,116, 97, 99,116, 0,116,110,108, 97, 0,116,115,101,113, 0,116,105,109, 97, 0,116,105,109, 97,115,101, +108, 0,116,101,120,116, 0,116,111,111,112,115, 0,116,116,105,109,101, 0,116,110,111,100,101, 0,116,108,111,103,105, 99, 0, +116,117,115,101,114,112,114,101,102, 0,116, 99,111,110,115,111,108,101, 0,116, 97,114,109, 91, 50, 48, 93, 0, 97, 99,116,105, +118,101, 95,116,104,101,109,101, 95, 97,114,101, 97, 0,109,111,100,117,108,101, 91, 54, 52, 93, 0,115,112,101, 99, 91, 52, 93, + 0,100,117,112,102,108, 97,103, 0,115, 97,118,101,116,105,109,101, 0,116,101,109,112,100,105,114, 91, 49, 54, 48, 93, 0,102, +111,110,116,100,105,114, 91, 49, 54, 48, 93, 0,114,101,110,100,101,114,100,105,114, 91, 49, 54, 48, 93, 0,116,101,120,116,117, +100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,116,101,120,100,105,114, 91, 49, 54, 48, 93, 0,112,108,117,103,115,101,113, +100,105,114, 91, 49, 54, 48, 93, 0,112,121,116,104,111,110,100,105,114, 91, 49, 54, 48, 93, 0,115,111,117,110,100,100,105,114, + 91, 49, 54, 48, 93, 0,105,109, 97,103,101, 95,101,100,105,116,111,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97, +121,101,114, 91, 50, 52, 48, 93, 0, 97,110,105,109, 95,112,108, 97,121,101,114, 95,112,114,101,115,101,116, 0,118, 50,100, 95, +109,105,110, 95,103,114,105,100,115,105,122,101, 0,116,105,109,101, 99,111,100,101, 95,115,116,121,108,101, 0,118,101,114,115, +105,111,110,115, 0,100, 98,108, 95, 99,108,105, 99,107, 95,116,105,109,101, 0,103, 97,109,101,102,108, 97,103,115, 0,119,104, +101,101,108,108,105,110,101,115, 99,114,111,108,108, 0,117,105,102,108, 97,103, 0,108, 97,110,103,117, 97,103,101, 0,117,115, +101,114,112,114,101,102, 0,118,105,101,119,122,111,111,109, 0,109,105,120, 98,117,102,115,105,122,101, 0, 97,117,100,105,111, +100,101,118,105, 99,101, 0, 97,117,100,105,111,114, 97,116,101, 0, 97,117,100,105,111,102,111,114,109, 97,116, 0, 97,117,100, +105,111, 99,104, 97,110,110,101,108,115, 0,100,112,105, 0,101,110, 99,111,100,105,110,103, 0,116,114, 97,110,115,111,112,116, +115, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 49, 0,109,101,110,117,116,104,114,101,115,104,111,108,100, 50, 0, +116,104,101,109,101,115, 0,117,105,102,111,110,116,115, 0,117,105,115,116,121,108,101,115, 0,107,101,121,109, 97,112,115, 0, + 97,100,100,111,110,115, 0,107,101,121, 99,111,110,102,105,103,115,116,114, 91, 54, 52, 93, 0,117,110,100,111,115,116,101,112, +115, 0,117,110,100,111,109,101,109,111,114,121, 0,103,112, 95,109, 97,110,104, 97,116,116,101,110,100,105,115,116, 0,103,112, + 95,101,117, 99,108,105,100,101, 97,110,100,105,115,116, 0,103,112, 95,101,114, 97,115,101,114, 0,103,112, 95,115,101,116,116, +105,110,103,115, 0,116, 98, 95,108,101,102,116,109,111,117,115,101, 0,116, 98, 95,114,105,103,104,116,109,111,117,115,101, 0, +108,105,103,104,116, 91, 51, 93, 0,116,119, 95,104,111,116,115,112,111,116, 0,116,119, 95,102,108, 97,103, 0,116,119, 95,104, + 97,110,100,108,101,115,105,122,101, 0,116,119, 95,115,105,122,101, 0,116,101,120,116,105,109,101,111,117,116, 0,116,101,120, + 99,111,108,108,101, 99,116,114, 97,116,101, 0,119,109,100,114, 97,119,109,101,116,104,111,100, 0,119,109,112, 97,100, 0,109, +101,109, 99, 97, 99,104,101,108,105,109,105,116, 0,112,114,101,102,101,116, 99,104,102,114, 97,109,101,115, 0,102,114, 97,109, +101,115,101,114,118,101,114,112,111,114,116, 0,112, 97,100, 95,114,111,116, 95, 97,110,103,108,101, 0,111, 98, 99,101,110,116, +101,114, 95,100,105, 97, 0,114,118,105,115,105,122,101, 0,114,118,105, 98,114,105,103,104,116, 0,114,101, 99,101,110,116, 95, +102,105,108,101,115, 0,115,109,111,111,116,104, 95,118,105,101,119,116,120, 0,103,108,114,101,115,108,105,109,105,116, 0,110, +100,111,102, 95,112, 97,110, 0,110,100,111,102, 95,114,111,116, 97,116,101, 0, 99,117,114,115,115,105,122,101, 0, 99,111,108, +111,114, 95,112,105, 99,107,101,114, 95,116,121,112,101, 0,105,112,111, 95,110,101,119, 0,107,101,121,104, 97,110,100,108,101, +115, 95,110,101,119, 0,115, 99,114, 99, 97,115,116,102,112,115, 0,115, 99,114, 99, 97,115,116,119, 97,105,116, 0,112,114,111, +112,119,105,100,116,104, 0,118,101,114,115,101,109, 97,115,116,101,114, 91, 49, 54, 48, 93, 0,118,101,114,115,101,117,115,101, +114, 91, 49, 54, 48, 93, 0,103,108, 97,108,112,104, 97, 99,108,105,112, 0, 99,111, 98, 97, 95,119,101,105,103,104,116, 0,118, +101,114,116, 98, 97,115,101, 0,101,100,103,101, 98, 97,115,101, 0, 97,114,101, 97, 98, 97,115,101, 0, 42,110,101,119,115, 99, +101,110,101, 0,102,117,108,108, 0,119,105,110,105,100, 0,100,111, 95,100,114, 97,119, 0,100,111, 95,114,101,102,114,101,115, +104, 0,100,111, 95,100,114, 97,119, 95,103,101,115,116,117,114,101, 0,100,111, 95,100,114, 97,119, 95,112, 97,105,110,116, 99, +117,114,115,111,114, 0,100,111, 95,100,114, 97,119, 95,100,114, 97,103, 0,115,119, 97,112, 0,109, 97,105,110,119,105,110, 0, +115,117, 98,119,105,110, 97, 99,116,105,118,101, 0, 42, 97,110,105,109,116,105,109,101,114, 0, 42, 99,111,110,116,101,120,116, + 0,104, 97,110,100,108,101,114, 91, 56, 93, 0, 42,110,101,119,118, 0,118,101, 99, 0, 42,118, 49, 0, 42,118, 50, 0, 42,116, +121,112,101, 0,112, 97,110,101,108,110, 97,109,101, 91, 54, 52, 93, 0,116, 97, 98,110, 97,109,101, 91, 54, 52, 93, 0,100,114, + 97,119,110, 97,109,101, 91, 54, 52, 93, 0,111,102,115,120, 0,111,102,115,121, 0,115,105,122,101,120, 0,115,105,122,101,121, + 0,108, 97, 98,101,108,111,102,115, 0,114,117,110,116,105,109,101, 95,102,108, 97,103, 0, 99,111,110,116,114,111,108, 0,115, +110, 97,112, 0,115,111,114,116,111,114,100,101,114, 0, 42,112, 97,110,101,108,116, 97, 98, 0, 42, 97, 99,116,105,118,101,100, + 97,116, 97, 0,108,105,115,116, 95,115, 99,114,111,108,108, 0,108,105,115,116, 95,115,105,122,101, 0,108,105,115,116, 95,108, + 97,115,116, 95,108,101,110, 0,108,105,115,116, 95,103,114,105,112, 95,115,105,122,101, 0,108,105,115,116, 95,115,101, 97,114, + 99,104, 91, 54, 52, 93, 0, 42,118, 51, 0, 42,118, 52, 0, 42,102,117,108,108, 0, 98,117,116,115,112, 97, 99,101,116,121,112, +101, 0,104,101, 97,100,101,114,116,121,112,101, 0,115,112, 97, 99,101,100, 97,116, 97, 0,104, 97,110,100,108,101,114,115, 0, + 97, 99,116,105,111,110,122,111,110,101,115, 0,119,105,110,114, 99,116, 0,100,114, 97,119,114, 99,116, 0,115,119,105,110,105, +100, 0,114,101,103,105,111,110,116,121,112,101, 0, 97,108,105,103,110,109,101,110,116, 0,100,111, 95,100,114, 97,119, 95,111, +118,101,114,108, 97,121, 0,117,105, 98,108,111, 99,107,115, 0,112, 97,110,101,108,115, 0, 42,104,101, 97,100,101,114,115,116, +114, 0, 42,114,101,103,105,111,110,100, 97,116, 97, 0,115,117, 98,118,115,116,114, 91, 52, 93, 0,115,117, 98,118,101,114,115, +105,111,110, 0,112, 97,100,115, 0,109,105,110,118,101,114,115,105,111,110, 0,109,105,110,115,117, 98,118,101,114,115,105,111, +110, 0, 42, 99,117,114,115, 99,114,101,101,110, 0, 42, 99,117,114,115, 99,101,110,101, 0,102,105,108,101,102,108, 97,103,115, + 0,103,108,111, 98, 97,108,102, 0,102,105,108,101,110, 97,109,101, 91, 50, 52, 48, 93, 0,110, 97,109,101, 91, 56, 48, 93, 0, + 42,105, 98,117,102, 0, 42,105, 98,117,102, 95, 99,111,109,112, 0, 42,115,101, 49, 0, 42,115,101, 50, 0, 42,115,101, 51, 0, +110,114, 0, 98,111,116,116,111,109, 0,114,105,103,104,116, 0,120,111,102,115, 0,121,111,102,115, 0,108,105,102,116, 91, 51, + 93, 0,103, 97,109,109, 97, 91, 51, 93, 0,103, 97,105,110, 91, 51, 93, 0,100,105,114, 91, 49, 54, 48, 93, 0,100,111,110,101, + 0,115,116, 97,114,116,115,116,105,108,108, 0,101,110,100,115,116,105,108,108, 0, 42,115,116,114,105,112,100, 97,116, 97, 0, +111,114,120, 0,111,114,121, 0, 42, 99,114,111,112, 0, 42,116,114, 97,110,115,102,111,114,109, 0, 42, 99,111,108,111,114, 95, + 98, 97,108, 97,110, 99,101, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95, +115,116, 97,114,116,115,116,105,108,108, 0, 42,116,115,116,114,105,112,100, 97,116, 97, 95,101,110,100,115,116,105,108,108, 0, + 42,105, 98,117,102, 95,115,116, 97,114,116,115,116,105,108,108, 0, 42,105, 98,117,102, 95,101,110,100,115,116,105,108,108, 0, + 42,105,110,115,116, 97,110, 99,101, 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42, 42, 99,117,114,114,101,110,116, + 95,112,114,105,118, 97,116,101, 95,100, 97,116, 97, 0, 42,116,109,112, 0,115,116, 97,114,116,111,102,115, 0,101,110,100,111, +102,115, 0,109, 97, 99,104,105,110,101, 0,115,116, 97,114,116,100,105,115,112, 0,101,110,100,100,105,115,112, 0,109,117,108, + 0,104, 97,110,100,115,105,122,101, 0, 97,110,105,109, 95,112,114,101,115,101,101,107, 0, 42,115,116,114,105,112, 0, 42,115, + 99,101,110,101, 95, 99, 97,109,101,114, 97, 0,101,102,102,101, 99,116, 95,102, 97,100,101,114, 0,115,112,101,101,100, 95,102, + 97,100,101,114, 0, 42,115,101,113, 49, 0, 42,115,101,113, 50, 0, 42,115,101,113, 51, 0,115,101,113, 98, 97,115,101, 0, 42, +115,111,117,110,100, 0, 42,115, 99,101,110,101, 95,115,111,117,110,100, 0,108,101,118,101,108, 0,112, 97,110, 0,115, 99,101, +110,101,110,114, 0,109,117,108,116,105, 99, 97,109, 95,115,111,117,114, 99,101, 0,115,116,114,111, 98,101, 0, 42,101,102,102, +101, 99,116,100, 97,116, 97, 0, 97,110,105,109, 95,115,116, 97,114,116,111,102,115, 0, 97,110,105,109, 95,101,110,100,111,102, +115, 0, 98,108,101,110,100, 95,109,111,100,101, 0, 98,108,101,110,100, 95,111,112, 97, 99,105,116,121, 0, 42,111,108,100, 98, + 97,115,101,112, 0, 42,112, 97,114,115,101,113, 0, 42,115,101,113, 98, 97,115,101,112, 0,109,101,116, 97,115,116, 97, 99,107, + 0, 42, 97, 99,116, 95,115,101,113, 0, 97, 99,116, 95,105,109, 97,103,101,100,105,114, 91, 50, 53, 54, 93, 0, 97, 99,116, 95, +115,111,117,110,100,100,105,114, 91, 50, 53, 54, 93, 0,111,118,101,114, 95,111,102,115, 0,111,118,101,114, 95, 99,102,114, 97, + 0,111,118,101,114, 95,102,108, 97,103, 0,111,118,101,114, 95, 98,111,114,100,101,114, 0,101,100,103,101, 87,105,100,116,104, + 0,102,111,114,119, 97,114,100, 0,119,105,112,101,116,121,112,101, 0,102, 77,105,110,105, 0,102, 67,108, 97,109,112, 0,102, + 66,111,111,115,116, 0,100, 68,105,115,116, 0,100, 81,117, 97,108,105,116,121, 0, 98, 78,111, 67,111,109,112, 0, 83, 99, 97, +108,101,120, 73,110,105, 0, 83, 99, 97,108,101,121, 73,110,105, 0, 83, 99, 97,108,101,120, 70,105,110, 0, 83, 99, 97,108,101, +121, 70,105,110, 0,120, 73,110,105, 0,120, 70,105,110, 0,121, 73,110,105, 0,121, 70,105,110, 0,114,111,116, 73,110,105, 0, +114,111,116, 70,105,110, 0,105,110,116,101,114,112,111,108, 97,116,105,111,110, 0,117,110,105,102,111,114,109, 95,115, 99, 97, +108,101, 0, 42,102,114, 97,109,101, 77, 97,112, 0,103,108,111, 98, 97,108, 83,112,101,101,100, 0,108, 97,115,116, 86, 97,108, +105,100, 70,114, 97,109,101, 0, 98,117,116,116,121,112,101, 0,117,115,101,114,106,105,116, 0,115,116, 97, 0,116,111,116,112, + 97,114,116, 0,110,111,114,109,102, 97, 99, 0,111, 98,102, 97, 99, 0,114, 97,110,100,102, 97, 99, 0,116,101,120,102, 97, 99, + 0,114, 97,110,100,108,105,102,101, 0,102,111,114, 99,101, 91, 51, 93, 0,118,101, 99,116,115,105,122,101, 0,109, 97,120,108, +101,110, 0,100,101,102,118,101, 99, 91, 51, 93, 0,109,117,108,116, 91, 52, 93, 0,108,105,102,101, 91, 52, 93, 0, 99,104,105, +108,100, 91, 52, 93, 0,109, 97,116, 91, 52, 93, 0,116,101,120,109, 97,112, 0, 99,117,114,109,117,108,116, 0,115,116, 97,116, +105, 99,115,116,101,112, 0,111,109, 97,116, 0,116,105,109,101,116,101,120, 0,115,112,101,101,100,116,101,120, 0,102,108, 97, +103, 50,110,101,103, 0,118,101,114,116,103,114,111,117,112, 95,118, 0,118,103,114,111,117,112,110, 97,109,101, 91, 51, 50, 93, + 0,118,103,114,111,117,112,110, 97,109,101, 95,118, 91, 51, 50, 93, 0, 42,107,101,121,115, 0,109,105,110,102, 97, 99, 0,117, +115,101,100, 0,117,115,101,100,101,108,101,109, 0, 42,112,111,105,110, 0,114,101,115,101,116,100,105,115,116, 0,108, 97,115, +116,118, 97,108, 0, 42,109, 97, 0,107,101,121, 0,113,117, 97,108, 0,113,117, 97,108, 50, 0,116, 97,114,103,101,116, 78, 97, +109,101, 91, 51, 50, 93, 0,116,111,103,103,108,101, 78, 97,109,101, 91, 51, 50, 93, 0,118, 97,108,117,101, 91, 51, 50, 93, 0, +109, 97,120,118, 97,108,117,101, 91, 51, 50, 93, 0,100,101,108, 97,121, 0,100,117,114, 97,116,105,111,110, 0,109, 97,116,101, +114,105, 97,108, 78, 97,109,101, 91, 51, 50, 93, 0,100, 97,109,112,116,105,109,101,114, 0,112,114,111,112,110, 97,109,101, 91, + 51, 50, 93, 0,109, 97,116,110, 97,109,101, 91, 51, 50, 93, 0, 97,120,105,115,102,108, 97,103, 0,112,111,115,101, 99,104, 97, +110,110,101,108, 91, 51, 50, 93, 0, 99,111,110,115,116,114, 97,105,110,116, 91, 51, 50, 93, 0, 42,102,114,111,109, 79, 98,106, +101, 99,116, 0,115,117, 98,106,101, 99,116, 91, 51, 50, 93, 0, 98,111,100,121, 91, 51, 50, 93, 0,111,116,121,112,101, 0,112, +117,108,115,101, 0,102,114,101,113, 0,116,111,116,108,105,110,107,115, 0, 42, 42,108,105,110,107,115, 0,116, 97,112, 0,106, +111,121,105,110,100,101,120, 0, 97,120,105,115, 95,115,105,110,103,108,101, 0, 97,120,105,115,102, 0, 98,117,116,116,111,110, + 0,104, 97,116, 0,104, 97,116,102, 0,112,114,101, 99,105,115,105,111,110, 0,115,116,114, 91, 49, 50, 56, 93, 0, 42,109,121, +110,101,119, 0,105,110,112,117,116,115, 0,116,111,116,115,108,105,110,107,115, 0, 42, 42,115,108,105,110,107,115, 0,118, 97, +108,111, 0,115,116, 97,116,101, 95,109, 97,115,107, 0, 42, 97, 99,116, 0,102,114, 97,109,101, 80,114,111,112, 91, 51, 50, 93, + 0, 98,108,101,110,100,105,110, 0,112,114,105,111,114,105,116,121, 0,101,110,100, 95,114,101,115,101,116, 0,115,116,114,105, +100,101, 97,120,105,115, 0,115,116,114,105,100,101,108,101,110,103,116,104, 0,115,110,100,110,114, 0,112, 97,100, 51, 91, 50, + 93, 0,112,105,116, 99,104, 0,115,111,117,110,100, 51, 68, 0,112, 97,100, 54, 91, 49, 93, 0, 42,109,101, 0,108,105,110, 86, +101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103, 86,101,108,111, 99,105,116,121, 91, 51, 93, 0,108,111, 99, 97,108,102, +108, 97,103, 0,100,121,110, 95,111,112,101,114, 97,116,105,111,110, 0,102,111,114, 99,101,108,111, 99, 91, 51, 93, 0,102,111, +114, 99,101,114,111,116, 91, 51, 93, 0,108,105,110,101, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 97,110,103,117, +108, 97,114,118,101,108,111, 99,105,116,121, 91, 51, 93, 0, 42,114,101,102,101,114,101,110, 99,101, 0,109,105,110, 0,109, 97, +120, 0,114,111,116,100, 97,109,112, 0,109,105,110,108,111, 99, 91, 51, 93, 0,109, 97,120,108,111, 99, 91, 51, 93, 0,109,105, +110,114,111,116, 91, 51, 93, 0,109, 97,120,114,111,116, 91, 51, 93, 0,109, 97,116,112,114,111,112, 91, 51, 50, 93, 0, 98,117, +116,115,116, 97, 0, 98,117,116,101,110,100, 0,100,105,115,116,114,105, 98,117,116,105,111,110, 0,105,110,116, 95, 97,114,103, + 95, 49, 0,105,110,116, 95, 97,114,103, 95, 50, 0,102,108,111, 97,116, 95, 97,114,103, 95, 49, 0,102,108,111, 97,116, 95, 97, +114,103, 95, 50, 0,116,111, 80,114,111,112, 78, 97,109,101, 91, 51, 50, 93, 0, 42,116,111, 79, 98,106,101, 99,116, 0, 98,111, +100,121, 84,121,112,101, 0,102,105,108,101,110, 97,109,101, 91, 54, 52, 93, 0,108,111, 97,100, 97,110,105,110, 97,109,101, 91, + 54, 52, 93, 0,105,110,116, 95, 97,114,103, 0,102,108,111, 97,116, 95, 97,114,103, 0, 42,115,117, 98,116, 97,114,103,101,116, + 0,103,111, 0, 97, 99, 99,101,108,108,101,114, 97,116,105,111,110, 0,109, 97,120,115,112,101,101,100, 0,109, 97,120,114,111, +116,115,112,101,101,100, 0,109, 97,120,116,105,108,116,115,112,101,101,100, 0,116,105,108,116,100, 97,109,112, 0,115,112,101, +101,100,100, 97,109,112, 0,109,105,110, 95,103, 97,105,110, 0,109, 97,120, 95,103, 97,105,110, 0,114,101,102,101,114,101,110, + 99,101, 95,100,105,115,116, 97,110, 99,101, 0,109, 97,120, 95,100,105,115,116, 97,110, 99,101, 0,114,111,108,108,111,102,102, + 95,102, 97, 99,116,111,114, 0, 99,111,110,101, 95,105,110,110,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117, +116,101,114, 95, 97,110,103,108,101, 0, 99,111,110,101, 95,111,117,116,101,114, 95,103, 97,105,110, 0, 42,110,101,119,112, 97, + 99,107,101,100,102,105,108,101, 0, 97,116,116,101,110,117, 97,116,105,111,110, 0,100,105,115,116, 97,110, 99,101, 0, 42, 99, + 97, 99,104,101, 0, 42,112,108, 97,121, 98, 97, 99,107, 95,104, 97,110,100,108,101, 0, 42, 97,114,101, 97, 0, 42,108, 97,109, +112,114,101,110, 0,103,111, 98,106,101, 99,116, 0,100,117,112,108,105, 95,111,102,115, 91, 51, 93, 0, 42,112,114,111,112, 0, + 99,104,105,108,100, 98, 97,115,101, 0,114,111,108,108, 0,104,101, 97,100, 91, 51, 93, 0,116, 97,105,108, 91, 51, 93, 0, 98, +111,110,101, 95,109, 97,116, 91, 51, 93, 91, 51, 93, 0, 97,114,109, 95,104,101, 97,100, 91, 51, 93, 0, 97,114,109, 95,116, 97, +105,108, 91, 51, 93, 0, 97,114,109, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,120,119,105,100,116,104, 0,122,119,105,100,116, +104, 0,101, 97,115,101, 49, 0,101, 97,115,101, 50, 0,114, 97,100, 95,104,101, 97,100, 0,114, 97,100, 95,116, 97,105,108, 0, + 98,111,110,101, 98, 97,115,101, 0, 99,104, 97,105,110, 98, 97,115,101, 0, 42,101,100, 98,111, 0, 42, 97, 99,116, 95, 98,111, +110,101, 0, 42, 97, 99,116, 95,101,100, 98,111,110,101, 0, 42,115,107,101,116, 99,104, 0,108, 97,121,101,114, 95,112,114,111, +116,101, 99,116,101,100, 0,103,104,111,115,116,101,112, 0,103,104,111,115,116,115,105,122,101, 0,103,104,111,115,116,116,121, +112,101, 0,112, 97,116,104,115,105,122,101, 0,103,104,111,115,116,115,102, 0,103,104,111,115,116,101,102, 0,112, 97,116,104, +115,102, 0,112, 97,116,104,101,102, 0,112, 97,116,104, 98, 99, 0,112, 97,116,104, 97, 99, 0, 42,112,111,105,110,116,115, 0, +115,116, 97,114,116, 95,102,114, 97,109,101, 0,101,110,100, 95,102,114, 97,109,101, 0,103,104,111,115,116, 95,115,102, 0,103, +104,111,115,116, 95,101,102, 0,103,104,111,115,116, 95, 98, 99, 0,103,104,111,115,116, 95, 97, 99, 0,103,104,111,115,116, 95, +116,121,112,101, 0,103,104,111,115,116, 95,115,116,101,112, 0,103,104,111,115,116, 95,102,108, 97,103, 0,112, 97,116,104, 95, +116,121,112,101, 0,112, 97,116,104, 95,115,116,101,112, 0,112, 97,116,104, 95,118,105,101,119,102,108, 97,103, 0,112, 97,116, +104, 95, 98, 97,107,101,102,108, 97,103, 0,112, 97,116,104, 95,115,102, 0,112, 97,116,104, 95,101,102, 0,112, 97,116,104, 95, + 98, 99, 0,112, 97,116,104, 95, 97, 99, 0, 99,111,110,115,116,102,108, 97,103, 0,105,107,102,108, 97,103, 0,115,101,108,101, + 99,116,102,108, 97,103, 0, 97,103,114,112, 95,105,110,100,101,120, 0, 42, 98,111,110,101, 0, 42, 99,104,105,108,100, 0,105, +107,116,114,101,101, 0, 42, 98, 95, 98,111,110,101, 95,109, 97,116,115, 0, 42,100,117, 97,108, 95,113,117, 97,116, 0, 42, 98, + 95, 98,111,110,101, 95,100,117, 97,108, 95,113,117, 97,116,115, 0,101,117,108, 91, 51, 93, 0, 99,104, 97,110, 95,109, 97,116, + 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,109, 97,116, 91, 52, 93, 91, 52, 93, 0,112,111,115,101, 95,104,101, 97,100, 91, + 51, 93, 0,112,111,115,101, 95,116, 97,105,108, 91, 51, 93, 0,108,105,109,105,116,109,105,110, 91, 51, 93, 0,108,105,109,105, +116,109, 97,120, 91, 51, 93, 0,115,116,105,102,102,110,101,115,115, 91, 51, 93, 0,105,107,115,116,114,101,116, 99,104, 0,105, +107,114,111,116,119,101,105,103,104,116, 0,105,107,108,105,110,119,101,105,103,104,116, 0, 42, 99,117,115,116,111,109, 0, 42, + 99,117,115,116,111,109, 95,116,120, 0, 99,104, 97,110, 98, 97,115,101, 0, 42, 99,104, 97,110,104, 97,115,104, 0,112,114,111, +120,121, 95,108, 97,121,101,114, 0,115,116,114,105,100,101, 95,111,102,102,115,101,116, 91, 51, 93, 0, 99,121, 99,108,105, 99, + 95,111,102,102,115,101,116, 91, 51, 93, 0, 97,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,103,114,111,117,112, 0, +105,107,115,111,108,118,101,114, 0, 42,105,107,100, 97,116, 97, 0, 42,105,107,112, 97,114, 97,109, 0,112,114,111,120,121, 95, + 97, 99,116, 95, 98,111,110,101, 91, 51, 50, 93, 0,110,117,109,105,116,101,114, 0,110,117,109,115,116,101,112, 0,109,105,110, +115,116,101,112, 0,109, 97,120,115,116,101,112, 0,115,111,108,118,101,114, 0,102,101,101,100, 98, 97, 99,107, 0,109, 97,120, +118,101,108, 0,100, 97,109,112,109, 97,120, 0,100, 97,109,112,101,112,115, 0, 99,104, 97,110,110,101,108,115, 0, 99,117,115, +116,111,109, 67,111,108, 0, 99,115, 0, 99,117,114,118,101,115, 0,103,114,111,117,112,115, 0, 97, 99,116,105,118,101, 95,109, + 97,114,107,101,114, 0, 42,115,111,117,114, 99,101, 0, 42,102,105,108,116,101,114, 95,103,114,112, 0,102,105,108,116,101,114, +102,108, 97,103, 0, 97,100,115, 0,116,105,109,101,115,108,105,100,101, 0, 42,103,114,112, 0,116,101,109,112, 0,110, 97,109, +101, 91, 51, 48, 93, 0,111,119,110,115,112, 97, 99,101, 0,116, 97,114,115,112, 97, 99,101, 0,101,110,102,111,114, 99,101, 0, +104,101, 97,100,116, 97,105,108, 0,108,105,110, 95,101,114,114,111,114, 0,114,111,116, 95,101,114,114,111,114, 0, 42,116, 97, +114, 0,109, 97,116,114,105,120, 91, 52, 93, 91, 52, 93, 0,115,112, 97, 99,101, 0,114,111,116, 79,114,100,101,114, 0,116, 97, +114,110,117,109, 0,116, 97,114,103,101,116,115, 0,105,116,101,114, 97,116,105,111,110,115, 0,114,111,111,116, 98,111,110,101, + 0,109, 97,120, 95,114,111,111,116, 98,111,110,101, 0, 42,112,111,108,101,116, 97,114, 0,112,111,108,101,115,117, 98,116, 97, +114,103,101,116, 91, 51, 50, 93, 0,112,111,108,101, 97,110,103,108,101, 0,111,114,105,101,110,116,119,101,105,103,104,116, 0, +103,114, 97, 98,116, 97,114,103,101,116, 91, 51, 93, 0,110,117,109,112,111,105,110,116,115, 0, 99,104, 97,105,110,108,101,110, + 0,120,122, 83, 99, 97,108,101, 77,111,100,101, 0,114,101,115,101,114,118,101,100, 49, 0,114,101,115,101,114,118,101,100, 50, + 0,109,105,110,109, 97,120,102,108, 97,103, 0,115,116,117, 99,107, 0, 99, 97, 99,104,101, 91, 51, 93, 0,108,111, 99,107,102, +108, 97,103, 0,102,111,108,108,111,119,102,108, 97,103, 0,118,111,108,109,111,100,101, 0,112,108, 97,110,101, 0,111,114,103, +108,101,110,103,116,104, 0, 98,117,108,103,101, 0,112,105,118, 88, 0,112,105,118, 89, 0,112,105,118, 90, 0, 97,120, 88, 0, + 97,120, 89, 0, 97,120, 90, 0,109,105,110, 76,105,109,105,116, 91, 54, 93, 0,109, 97,120, 76,105,109,105,116, 91, 54, 93, 0, +101,120,116,114, 97, 70,122, 0,105,110,118,109, 97,116, 91, 52, 93, 91, 52, 93, 0,102,114,111,109, 0,116,111, 0,109, 97,112, + 91, 51, 93, 0,101,120,112,111, 0,102,114,111,109, 95,109,105,110, 91, 51, 93, 0,102,114,111,109, 95,109, 97,120, 91, 51, 93, + 0,116,111, 95,109,105,110, 91, 51, 93, 0,116,111, 95,109, 97,120, 91, 51, 93, 0,114,111,116, 65,120,105,115, 0,122,109,105, +110, 0,122,109, 97,120, 0,112, 97,100, 91, 57, 93, 0, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,110,111, 95,114,111,116, + 95, 97,120,105,115, 0,115,116,114,105,100,101, 95, 97,120,105,115, 0, 99,117,114,109,111,100, 0, 97, 99,116,115,116, 97,114, +116, 0, 97, 99,116,101,110,100, 0, 97, 99,116,111,102,102,115, 0,115,116,114,105,100,101,108,101,110, 0,115, 99, 97,108,101, + 0, 98,108,101,110,100,111,117,116, 0,115,116,114,105,100,101, 99,104, 97,110,110,101,108, 91, 51, 50, 93, 0,111,102,102,115, + 95, 98,111,110,101, 91, 51, 50, 93, 0,104, 97,115,105,110,112,117,116, 0,104, 97,115,111,117,116,112,117,116, 0,100, 97,116, + 97,116,121,112,101, 0,115,111, 99,107,101,116,116,121,112,101, 0, 42,110,101,119, 95,115,111, 99,107, 0,110,115, 0,108,105, +109,105,116, 0,115,116, 97, 99,107, 95,105,110,100,101,120, 0,105,110,116,101,114,110, 0,115,116, 97, 99,107, 95,105,110,100, +101,120, 95,101,120,116, 0,108,111, 99,120, 0,108,111, 99,121, 0,111,119,110, 95,105,110,100,101,120, 0,116,111, 95,105,110, +100,101,120, 0, 42,116,111,115,111, 99,107, 0, 42,108,105,110,107, 0, 42,110,101,119, 95,110,111,100,101, 0,108, 97,115,116, +121, 0,111,117,116,112,117,116,115, 0, 42,115,116,111,114, 97,103,101, 0,109,105,110,105,119,105,100,116,104, 0, 99,117,115, +116,111,109, 49, 0, 99,117,115,116,111,109, 50, 0, 99,117,115,116,111,109, 51, 0, 99,117,115,116,111,109, 52, 0,110,101,101, +100, 95,101,120,101, 99, 0,101,120,101, 99, 0, 42,116,104,114,101, 97,100,100, 97,116, 97, 0,116,111,116,114, 0, 98,117,116, +114, 0,112,114,118,114, 0, 42, 98,108,111, 99,107, 0, 42,116,121,112,101,105,110,102,111, 0, 42,102,114,111,109,110,111,100, +101, 0, 42,116,111,110,111,100,101, 0, 42,102,114,111,109,115,111, 99,107, 0,110,111,100,101,115, 0,108,105,110,107,115, 0, + 42,115,116, 97, 99,107, 0, 42,116,104,114,101, 97,100,115,116, 97, 99,107, 0,105,110,105,116, 0,115,116, 97, 99,107,115,105, +122,101, 0, 99,117,114, 95,105,110,100,101,120, 0, 97,108,108,116,121,112,101,115, 0, 42,111,119,110,116,121,112,101, 0,112, + 97,100, 50, 91, 50, 93, 0, 40, 42,112,114,111,103,114,101,115,115, 41, 40, 41, 0, 40, 42,115,116, 97,116,115, 95,100,114, 97, +119, 41, 40, 41, 0, 40, 42,116,101,115,116, 95, 98,114,101, 97,107, 41, 40, 41, 0, 42,116, 98,104, 0, 42,112,114,104, 0, 42, +115,100,104, 0, 99,121, 99,108,105, 99, 0,109,111,118,105,101, 0,115, 97,109,112,108,101,115, 0,109,105,110,115,112,101,101, +100, 0,112,101,114, 99,101,110,116,120, 0,112,101,114, 99,101,110,116,121, 0, 98,111,107,101,104, 0,103, 97,109,109, 97, 0, + 99,117,114,118,101,100, 0,105,109, 97,103,101, 95,105,110, 95,119,105,100,116,104, 0,105,109, 97,103,101, 95,105,110, 95,104, +101,105,103,104,116, 0, 99,101,110,116,101,114, 95,120, 0, 99,101,110,116,101,114, 95,121, 0,115,112,105,110, 0,119,114, 97, +112, 0,115,105,103,109, 97, 95, 99,111,108,111,114, 0,115,105,103,109, 97, 95,115,112, 97, 99,101, 0,104,117,101, 0,115, 97, +116, 0,116, 49, 0,116, 50, 0,116, 51, 0,102,115,116,114,101,110,103,116,104, 0,102, 97,108,112,104, 97, 0,107,101,121, 91, + 52, 93, 0, 97,108,103,111,114,105,116,104,109, 0, 99,104, 97,110,110,101,108, 0,120, 49, 0,120, 50, 0,121, 49, 0,121, 50, + 0, 99,111,108,110, 97,109,101, 91, 51, 50, 93, 0, 98,107,116,121,112,101, 0,114,111,116, 97,116,105,111,110, 0,103, 97,109, + 99,111, 0,110,111, 95,122, 98,117,102, 0,102,115,116,111,112, 0,109, 97,120, 98,108,117,114, 0, 98,116,104,114,101,115,104, + 0, 42,100,105, 99,116, 0, 42,110,111,100,101, 0, 97,110,103,108,101, 95,111,102,115, 0, 99,111,108,109,111,100, 0,109,105, +120, 0,116,104,114,101,115,104,111,108,100, 0,102, 97,100,101, 0,109, 0, 99, 0,106,105,116, 0,112,114,111,106, 0,102,105, +116, 0,115,108,111,112,101, 91, 51, 93, 0,112,111,119,101,114, 91, 51, 93, 0,108,105,102,116, 95,108,103,103, 91, 51, 93, 0, +108,105,109, 99,104, 97,110, 0,117,110,115,112,105,108,108, 0,108,105,109,115, 99, 97,108,101, 0,117,115,112,105,108,108,114, + 0,117,115,112,105,108,108,103, 0,117,115,112,105,108,108, 98, 0,115,104,111,114,116,121, 0,109,105,110,116, 97, 98,108,101, + 0,109, 97,120,116, 97, 98,108,101, 0,101,120,116, 95,105,110, 91, 50, 93, 0,101,120,116, 95,111,117,116, 91, 50, 93, 0, 42, + 99,117,114,118,101, 0, 42,116, 97, 98,108,101, 0, 42,112,114,101,109,117,108,116, 97, 98,108,101, 0,112,114,101,115,101,116, + 0, 99,117,114,114, 0, 99,108,105,112,114, 0, 99,109, 91, 52, 93, 0, 98,108, 97, 99,107, 91, 51, 93, 0,119,104,105,116,101, + 91, 51, 93, 0, 98,119,109,117,108, 91, 51, 93, 0,115, 97,109,112,108,101, 91, 51, 93, 0,120, 95,114,101,115,111,108,117,116, +105,111,110, 0,100, 97,116, 97, 95,114, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,103, 91, 50, 53, 54, 93, 0,100, 97,116, 97, + 95, 98, 91, 50, 53, 54, 93, 0,100, 97,116, 97, 95,108,117,109, 97, 91, 50, 53, 54, 93, 0,115, 97,109,112,108,101, 95,102,117, +108,108, 0,115, 97,109,112,108,101, 95,108,105,110,101,115, 0, 97, 99, 99,117,114, 97, 99,121, 0,119, 97,118,101,102,114,109, + 95,109,111,100,101, 0,119, 97,118,101,102,114,109, 95, 97,108,112,104, 97, 0,119, 97,118,101,102,114,109, 95,121,102, 97, 99, + 0,119, 97,118,101,102,114,109, 95,104,101,105,103,104,116, 0,118,101, 99,115, 99,111,112,101, 95, 97,108,112,104, 97, 0,118, +101, 99,115, 99,111,112,101, 95,104,101,105,103,104,116, 0,109,105,110,109, 97,120, 91, 51, 93, 91, 50, 93, 0,104,105,115,116, + 0, 42,119, 97,118,101,102,111,114,109, 95, 49, 0, 42,119, 97,118,101,102,111,114,109, 95, 50, 0, 42,119, 97,118,101,102,111, +114,109, 95, 51, 0, 42,118,101, 99,115, 99,111,112,101, 0,119, 97,118,101,102,111,114,109, 95,116,111,116, 0,111,102,102,115, +101,116, 91, 50, 93, 0, 99,108,111,110,101, 0,109,116,101,120, 0,106,105,116,116,101,114, 0,115,109,111,111,116,104, 95,115, +116,114,111,107,101, 95,114, 97,100,105,117,115, 0,115,109,111,111,116,104, 95,115,116,114,111,107,101, 95,102, 97, 99,116,111, +114, 0,114, 97,116,101, 0,114,103, 98, 91, 51, 93, 0,115, 99,117,108,112,116, 95,116,111,111,108, 0,118,101,114,116,101,120, +112, 97,105,110,116, 95,116,111,111,108, 0,105,109, 97,103,101,112, 97,105,110,116, 95,116,111,111,108, 0, 97, 99,116,105,118, +101, 95,114,110,100, 0, 97, 99,116,105,118,101, 95, 99,108,111,110,101, 0, 97, 99,116,105,118,101, 95,109, 97,115,107, 0, 42, +108, 97,121,101,114,115, 0,116,111,116,108, 97,121,101,114, 0,109, 97,120,108, 97,121,101,114, 0,116,111,116,115,105,122,101, + 0, 42,112,111,111,108, 0, 42,101,120,116,101,114,110, 97,108, 0,118,101,108, 91, 51, 93, 0,114,111,116, 91, 52, 93, 0, 97, +118,101, 91, 51, 93, 0, 42,103,114,111,117,110,100, 0,119, 97,110,100,101,114, 91, 51, 93, 0,110,117,109, 0,112, 97,114,101, +110,116, 0,112, 97, 91, 52, 93, 0,119, 91, 52, 93, 0,102,117,118, 91, 52, 93, 0,102,111,102,102,115,101,116, 0,114,116, 91, + 50, 93, 0,112,114,101,118, 95,115,116, 97,116,101, 0, 42,104, 97,105,114, 0, 42, 98,111,105,100, 0,100,105,101,116,105,109, +101, 0,110,117,109, 95,100,109, 99, 97, 99,104,101, 0,104, 97,105,114, 95,105,110,100,101,120, 0, 97,108,105,118,101, 0,115, +112,114,105,110,103, 95,107, 0,114,101,115,116, 95,108,101,110,103,116,104, 0,118,105,115, 99,111,115,105,116,121, 95,111,109, +101,103, 97, 0,118,105,115, 99,111,115,105,116,121, 95, 98,101,116, 97, 0,115,116,105,102,102,110,101,115,115, 95,107, 0,115, +116,105,102,102,110,101,115,115, 95,107,110,101, 97,114, 0,114,101,115,116, 95,100,101,110,115,105,116,121, 0, 98,117,111,121, + 97,110, 99,121, 0, 42, 98,111,105,100,115, 0, 42,102,108,117,105,100, 0,100,105,115,116,114, 0,112,104,121,115,116,121,112, +101, 0, 97,118,101,109,111,100,101, 0,114,101, 97, 99,116,101,118,101,110,116, 0,100,114, 97,119, 0,100,114, 97,119, 95, 97, +115, 0,100,114, 97,119, 95,115,105,122,101, 0, 99,104,105,108,100,116,121,112,101, 0,114,101,110, 95, 97,115, 0,115,117, 98, +102,114, 97,109,101,115, 0,114,101,110, 95,115,116,101,112, 0,104, 97,105,114, 95,115,116,101,112, 0,107,101,121,115, 95,115, +116,101,112, 0, 97,100, 97,112,116, 95, 97,110,103,108,101, 0, 97,100, 97,112,116, 95,112,105,120, 0,114,111,116,102,114,111, +109, 0,105,110,116,101,103,114, 97,116,111,114, 0, 98, 98, 95, 97,108,105,103,110, 0, 98, 98, 95,117,118, 95,115,112,108,105, +116, 0, 98, 98, 95, 97,110,105,109, 0, 98, 98, 95,115,112,108,105,116, 95,111,102,102,115,101,116, 0, 98, 98, 95,116,105,108, +116, 0, 98, 98, 95,114, 97,110,100, 95,116,105,108,116, 0, 98, 98, 95,111,102,102,115,101,116, 91, 50, 93, 0,115,105,109,112, +108,105,102,121, 95,114,101,102,115,105,122,101, 0,115,105,109,112,108,105,102,121, 95,114, 97,116,101, 0,115,105,109,112,108, +105,102,121, 95,116,114, 97,110,115,105,116,105,111,110, 0,115,105,109,112,108,105,102,121, 95,118,105,101,119,112,111,114,116, + 0,116,105,109,101,116,119,101, 97,107, 0,106,105,116,102, 97, 99, 0,101,102,102, 95,104, 97,105,114, 0,103,114,105,100, 95, +114,101,115, 0,112, 97,114,116,102, 97, 99, 0,116, 97,110,102, 97, 99, 0,116, 97,110,112,104, 97,115,101, 0,114,101, 97, 99, +116,102, 97, 99, 0,111, 98, 95,118,101,108, 91, 51, 93, 0, 97,118,101,102, 97, 99, 0,112,104, 97,115,101,102, 97, 99, 0,114, + 97,110,100,114,111,116,102, 97, 99, 0,114, 97,110,100,112,104, 97,115,101,102, 97, 99, 0,114, 97,110,100,115,105,122,101, 0, +114,101, 97, 99,116,115,104, 97,112,101, 0, 97, 99, 99, 91, 51, 93, 0,100,114, 97,103,102, 97, 99, 0, 98,114,111,119,110,102, + 97, 99, 0,100, 97,109,112,102, 97, 99, 0,114, 97,110,100,108,101,110,103,116,104, 0, 99,104,105,108,100, 95,110, 98,114, 0, +114,101,110, 95, 99,104,105,108,100, 95,110, 98,114, 0,112, 97,114,101,110,116,115, 0, 99,104,105,108,100,115,105,122,101, 0, + 99,104,105,108,100,114, 97,110,100,115,105,122,101, 0, 99,104,105,108,100,114, 97,100, 0, 99,104,105,108,100,102,108, 97,116, + 0, 99,108,117,109,112,112,111,119, 0,114,111,117,103,104, 49, 0,114,111,117,103,104, 49, 95,115,105,122,101, 0,114,111,117, +103,104, 50, 0,114,111,117,103,104, 50, 95,115,105,122,101, 0,114,111,117,103,104, 50, 95,116,104,114,101,115, 0,114,111,117, +103,104, 95,101,110,100, 0,114,111,117,103,104, 95,101,110,100, 95,115,104, 97,112,101, 0, 99,108,101,110,103,116,104, 0, 99, +108,101,110,103,116,104, 95,116,104,114,101,115, 0, 98,114, 97,110, 99,104, 95,116,104,114,101,115, 0,100,114, 97,119, 95,108, +105,110,101, 91, 50, 93, 0,112, 97,116,104, 95,115,116, 97,114,116, 0,112, 97,116,104, 95,101,110,100, 0,116,114, 97,105,108, + 95, 99,111,117,110,116, 0,107,101,121,101,100, 95,108,111,111,112,115, 0,100,117,112,108,105,119,101,105,103,104,116,115, 0, + 42,101,102,102, 95,103,114,111,117,112, 0, 42,100,117,112, 95,111, 98, 0, 42, 98, 98, 95,111, 98, 0, 42,112,100, 50, 0, 42, +112, 97,114,116, 0, 42,112, 97,114,116,105, 99,108,101,115, 0, 42, 42,112, 97,116,104, 99, 97, 99,104,101, 0, 42, 42, 99,104, +105,108,100, 99, 97, 99,104,101, 0,112, 97,116,104, 99, 97, 99,104,101, 98,117,102,115, 0, 99,104,105,108,100, 99, 97, 99,104, +101, 98,117,102,115, 0, 42, 99,108,109,100, 0, 42,104, 97,105,114, 95,105,110, 95,100,109, 0, 42,104, 97,105,114, 95,111,117, +116, 95,100,109, 0, 42,116, 97,114,103,101,116, 95,111, 98, 0, 42,108, 97,116,116,105, 99,101, 0,116,114,101,101, 95,102,114, + 97,109,101, 0,116,111,116, 99,104,105,108,100, 0,116,111,116, 99, 97, 99,104,101,100, 0,116,111,116, 99,104,105,108,100, 99, + 97, 99,104,101, 0,116, 97,114,103,101,116, 95,112,115,121,115, 0,116,111,116,107,101,121,101,100, 0, 98, 97,107,101,115,112, + 97, 99,101, 0, 98, 98, 95,117,118,110, 97,109,101, 91, 51, 93, 91, 51, 50, 93, 0,118,103,114,111,117,112, 91, 49, 50, 93, 0, +118,103, 95,110,101,103, 0,114,116, 51, 0, 42,114,101,110,100,101,114,100, 97,116, 97, 0, 42,101,102,102,101, 99,116,111,114, +115, 0, 42,116,114,101,101, 0, 42,112,100,100, 0, 42,102,114, 97,110,100, 0, 67,100,105,115, 0, 67,118,105, 0,115,116,114, +117, 99,116,117,114, 97,108, 0, 98,101,110,100,105,110,103, 0,109, 97,120, 95, 98,101,110,100, 0,109, 97,120, 95,115,116,114, +117, 99,116, 0,109, 97,120, 95,115,104,101, 97,114, 0, 97,118,103, 95,115,112,114,105,110,103, 95,108,101,110, 0,116,105,109, +101,115, 99, 97,108,101, 0,101,102,102, 95,102,111,114, 99,101, 95,115, 99, 97,108,101, 0,101,102,102, 95,119,105,110,100, 95, +115, 99, 97,108,101, 0,115,105,109, 95,116,105,109,101, 95,111,108,100, 0,118,101,108,111, 99,105,116,121, 95,115,109,111,111, +116,104, 0, 99,111,108,108,105,100,101,114, 95,102,114,105, 99,116,105,111,110, 0,115,116,101,112,115, 80,101,114, 70,114, 97, +109,101, 0,112,114,101,114,111,108,108, 0,109, 97,120,115,112,114,105,110,103,108,101,110, 0,115,111,108,118,101,114, 95,116, +121,112,101, 0,118,103,114,111,117,112, 95, 98,101,110,100, 0,118,103,114,111,117,112, 95,109, 97,115,115, 0,118,103,114,111, +117,112, 95,115,116,114,117, 99,116, 0,115,104, 97,112,101,107,101,121, 95,114,101,115,116, 0,112,114,101,115,101,116,115, 0, +114,101,115,101,116, 0, 42, 99,111,108,108,105,115,105,111,110, 95,108,105,115,116, 0,101,112,115,105,108,111,110, 0,115,101, +108,102, 95,102,114,105, 99,116,105,111,110, 0,115,101,108,102,101,112,115,105,108,111,110, 0,115,101,108,102, 95,108,111,111, +112, 95, 99,111,117,110,116, 0,108,111,111,112, 95, 99,111,117,110,116, 0,112,114,101,115,115,117,114,101, 0,116,104,105, 99, +107,110,101,115,115, 0,115,116,114,111,107,101,115, 0,102,114, 97,109,101,110,117,109, 0, 42, 97, 99,116,102,114, 97,109,101, + 0,103,115,116,101,112, 0,105,110,102,111, 91, 49, 50, 56, 93, 0,115, 98,117,102,102,101,114, 95,115,105,122,101, 0,115, 98, +117,102,102,101,114, 95,115,102,108, 97,103, 0, 42,115, 98,117,102,102,101,114, 0, 42,116,121,112,101,115,116,114, 0, 42,109, +101,115,115, 97,103,101, 0,108,105,115,116, 0,112,114,105,110,116,108,101,118,101,108, 0,115,116,111,114,101,108,101,118,101, +108, 0, 42,114,101,112,111,114,116,116,105,109,101,114, 0,103,114,101,121,115, 99, 97,108,101, 0,119,105,100,116,104,102, 97, + 99, 0, 42,119,105,110,100,114, 97,119, 97, 98,108,101, 0, 42,119,105,110, 97, 99,116,105,118,101, 0,119,105,110,100,111,119, +115, 0,105,110,105,116,105, 97,108,105,122,101,100, 0,102,105,108,101, 95,115, 97,118,101,100, 0,111,112, 95,117,110,100,111, + 95,100,101,112,116,104, 0,111,112,101,114, 97,116,111,114,115, 0,113,117,101,117,101, 0,114,101,112,111,114,116,115, 0,106, +111, 98,115, 0,112, 97,105,110,116, 99,117,114,115,111,114,115, 0,100,114, 97,103,115, 0,107,101,121, 99,111,110,102,105,103, +115, 0, 42,100,101,102, 97,117,108,116, 99,111,110,102, 0,116,105,109,101,114,115, 0, 42, 97,117,116,111,115, 97,118,101,116, +105,109,101,114, 0, 42,103,104,111,115,116,119,105,110, 0,103,114, 97, 98, 99,117,114,115,111,114, 0, 42,110,101,119,115, 99, +114,101,101,110, 0,115, 99,114,101,101,110,110, 97,109,101, 91, 51, 50, 93, 0,112,111,115,120, 0,112,111,115,121, 0,119,105, +110,100,111,119,115,116, 97,116,101, 0,109,111,110,105,116,111,114, 0,108, 97,115,116, 99,117,114,115,111,114, 0, 97,100,100, +109,111,117,115,101,109,111,118,101, 0, 42,101,118,101,110,116,115,116, 97,116,101, 0, 42, 99,117,114,115,119,105,110, 0, 42, +116,119,101, 97,107, 0,100,114, 97,119,109,101,116,104,111,100, 0,100,114, 97,119,102, 97,105,108, 0, 42,100,114, 97,119,100, + 97,116, 97, 0,109,111,100, 97,108,104, 97,110,100,108,101,114,115, 0,115,117, 98,119,105,110,100,111,119,115, 0,103,101,115, +116,117,114,101, 0,105,100,110, 97,109,101, 91, 54, 52, 93, 0,112,114,111,112,118, 97,108,117,101, 0,115,104,105,102,116, 0, + 99,116,114,108, 0, 97,108,116, 0,111,115,107,101,121, 0,107,101,121,109,111,100,105,102,105,101,114, 0,109, 97,112,116,121, +112,101, 0, 42,112,116,114, 0,105,116,101,109,115, 0,115,112, 97, 99,101,105,100, 0,114,101,103,105,111,110,105,100, 0,107, +109,105, 95,105,100, 0, 40, 42,112,111,108,108, 41, 40, 41, 0, 42,109,111,100, 97,108, 95,105,116,101,109,115, 0, 98, 97,115, +101,110, 97,109,101, 91, 54, 52, 93, 0, 97, 99,116,107,101,121,109, 97,112, 0, 42, 99,117,115,116,111,109,100, 97,116, 97, 0, + 42,112,121, 95,105,110,115,116, 97,110, 99,101, 0, 42,114,101,112,111,114,116,115, 0,109, 97, 99,114,111, 0, 42,111,112,109, + 0, 42,101,100, 97,116, 97, 0,105,110,102,108,117,101,110, 99,101, 0, 42, 99,111,101,102,102,105, 99,105,101,110,116,115, 0, + 97,114,114, 97,121,115,105,122,101, 0,112,111,108,121, 95,111,114,100,101,114, 0, 97,109,112,108,105,116,117,100,101, 0,112, +104, 97,115,101, 95,109,117,108,116,105,112,108,105,101,114, 0,112,104, 97,115,101, 95,111,102,102,115,101,116, 0,118, 97,108, +117,101, 95,111,102,102,115,101,116, 0,109,105,100,118, 97,108, 0, 98,101,102,111,114,101, 95,109,111,100,101, 0, 97,102,116, +101,114, 95,109,111,100,101, 0, 98,101,102,111,114,101, 95, 99,121, 99,108,101,115, 0, 97,102,116,101,114, 95, 99,121, 99,108, +101,115, 0,114,101, 99,116, 0,112,104, 97,115,101, 0,109,111,100,105,102,105, 99, 97,116,105,111,110, 0,115,116,101,112, 95, +115,105,122,101, 0, 42,114,110, 97, 95,112, 97,116,104, 0,112, 99,104, 97,110, 95,110, 97,109,101, 91, 51, 50, 93, 0,116,114, + 97,110,115, 67,104, 97,110, 0,105,100,116,121,112,101, 0,116, 97,114,103,101,116,115, 91, 56, 93, 0,110,117,109, 95,116, 97, +114,103,101,116,115, 0,118, 97,114,105, 97, 98,108,101,115, 0,101,120,112,114,101,115,115,105,111,110, 91, 50, 53, 54, 93, 0, + 42,101,120,112,114, 95, 99,111,109,112, 0,118,101, 99, 91, 50, 93, 0, 42,102,112,116, 0, 97,114,114, 97,121, 95,105,110,100, +101,120, 0, 99,111,108,111,114, 95,109,111,100,101, 0, 99,111,108,111,114, 91, 51, 93, 0,102,114,111,109, 91, 49, 50, 56, 93, + 0,116,111, 91, 49, 50, 56, 93, 0,109, 97,112,112,105,110,103,115, 0,115,116,114,105,112,115, 0, 42,114,101,109, 97,112, 0, +102, 99,117,114,118,101,115, 0,115,116,114,105,112, 95,116,105,109,101, 0, 98,108,101,110,100,109,111,100,101, 0,101,120,116, +101,110,100,109,111,100,101, 0,103,114,111,117,112, 91, 54, 52, 93, 0,103,114,111,117,112,109,111,100,101, 0,107,101,121,105, +110,103,102,108, 97,103, 0,112, 97,116,104,115, 0,116,121,112,101,105,110,102,111, 91, 54, 52, 93, 0, 97, 99,116,105,118,101, + 95,112, 97,116,104, 0, 42,116,109,112, 97, 99,116, 0,110,108, 97, 95,116,114, 97, 99,107,115, 0, 42, 97, 99,116,115,116,114, +105,112, 0,100,114,105,118,101,114,115, 0,111,118,101,114,114,105,100,101,115, 0, 97, 99,116, 95, 98,108,101,110,100,109,111, +100,101, 0, 97, 99,116, 95,101,120,116,101,110,100,109,111,100,101, 0, 97, 99,116, 95,105,110,102,108,117,101,110, 99,101, 0, +114,117,108,101, 0,111,112,116,105,111,110,115, 0,102,101, 97,114, 95,102, 97, 99,116,111,114, 0,115,105,103,110, 97,108, 95, +105,100, 0,108,111,111,107, 95, 97,104,101, 97,100, 0,111,108,111, 99, 91, 51, 93, 0,113,117,101,117,101, 95,115,105,122,101, + 0,119, 97,110,100,101,114, 0,102,108,101,101, 95,100,105,115,116, 97,110, 99,101, 0,104,101, 97,108,116,104, 0,115,116, 97, +116,101, 95,105,100, 0,114,117,108,101,115, 0, 99,111,110,100,105,116,105,111,110,115, 0, 97, 99,116,105,111,110,115, 0,114, +117,108,101,115,101,116, 95,116,121,112,101, 0,114,117,108,101, 95,102,117,122,122,105,110,101,115,115, 0,108, 97,115,116, 95, +115,116, 97,116,101, 95,105,100, 0,108, 97,110,100,105,110,103, 95,115,109,111,111,116,104,110,101,115,115, 0, 98, 97,110,107, +105,110,103, 0, 97,103,103,114,101,115,115,105,111,110, 0, 97,105,114, 95,109,105,110, 95,115,112,101,101,100, 0, 97,105,114, + 95,109, 97,120, 95,115,112,101,101,100, 0, 97,105,114, 95,109, 97,120, 95, 97, 99, 99, 0, 97,105,114, 95,109, 97,120, 95, 97, +118,101, 0, 97,105,114, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, 99,101, 0,108, 97,110,100, 95,106,117,109,112, 95, +115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95,115,112,101,101,100, 0,108, 97,110,100, 95,109, 97,120, 95, 97, 99, + 99, 0,108, 97,110,100, 95,109, 97,120, 95, 97,118,101, 0,108, 97,110,100, 95,112,101,114,115,111,110, 97,108, 95,115,112, 97, + 99,101, 0,108, 97,110,100, 95,115,116,105, 99,107, 95,102,111,114, 99,101, 0,115,116, 97,116,101,115, 0, 42,115,109,100, 0, + 42,102,108,117,105,100, 95,103,114,111,117,112, 0, 42, 99,111,108,108, 95,103,114,111,117,112, 0, 42,119,116, 0, 42,116,101, +120, 95,119,116, 0, 42,116,101,120, 95,115,104, 97,100,111,119, 0, 42,115,104, 97,100,111,119, 0,112, 48, 91, 51, 93, 0,112, + 49, 91, 51, 93, 0,100,120, 0,111,109,101,103, 97, 0,116,101,109,112, 65,109, 98, 0, 98,101,116, 97, 0,114,101,115, 91, 51, + 93, 0, 97,109,112,108,105,102,121, 0,109, 97,120,114,101,115, 0,118,105,101,119,115,101,116,116,105,110,103,115, 0,110,111, +105,115,101, 0,100,105,115,115, 95,112,101,114, 99,101,110,116, 0,100,105,115,115, 95,115,112,101,101,100, 0,114,101,115, 95, +119,116, 91, 51, 93, 0,100,120, 95,119,116, 0,118, 51,100,110,117,109, 0, 99, 97, 99,104,101, 95, 99,111,109,112, 0, 99, 97, + 99,104,101, 95,104,105,103,104, 95, 99,111,109,112, 0, 42,112,111,105,110,116, 95, 99, 97, 99,104,101, 91, 50, 93, 0,112,116, + 99, 97, 99,104,101,115, 91, 50, 93, 0,118,101,108,111, 99,105,116,121, 91, 51, 93, 0,118,103,114,112, 95,104,101, 97,116, 95, +115, 99, 97,108,101, 91, 50, 93, 0,118,103,114,111,117,112, 95,102,108,111,119, 0,118,103,114,111,117,112, 95,100,101,110,115, +105,116,121, 0,118,103,114,111,117,112, 95,104,101, 97,116, 0, 42,112,111,105,110,116,115, 95,111,108,100, 0, 42,118,101,108, + 0,109, 97,116, 95,111,108,100, 91, 52, 93, 91, 52, 93, 0, 0, 84, 89, 80, 69,212, 1, 0, 0, 99,104, 97,114, 0,117, 99,104, + 97,114, 0,115,104,111,114,116, 0,117,115,104,111,114,116, 0,105,110,116, 0,108,111,110,103, 0,117,108,111,110,103, 0,102, +108,111, 97,116, 0,100,111,117, 98,108,101, 0,118,111,105,100, 0, 76,105,110,107, 0, 76,105,110,107, 68, 97,116, 97, 0, 76, +105,115,116, 66, 97,115,101, 0,118,101, 99, 50,115, 0,118,101, 99, 50,102, 0,118,101, 99, 50,105, 0,118,101, 99, 50,100, 0, +118,101, 99, 51,105, 0,118,101, 99, 51,102, 0,118,101, 99, 51,100, 0,118,101, 99, 52,105, 0,118,101, 99, 52,102, 0,118,101, + 99, 52,100, 0,114, 99,116,105, 0,114, 99,116,102, 0, 73, 68, 80,114,111,112,101,114,116,121, 68, 97,116, 97, 0, 73, 68, 80, +114,111,112,101,114,116,121, 0, 73, 68, 0, 76,105, 98,114, 97,114,121, 0, 70,105,108,101, 68, 97,116, 97, 0, 80,114,101,118, +105,101,119, 73,109, 97,103,101, 0, 73,112,111, 68,114,105,118,101,114, 0, 79, 98,106,101, 99,116, 0, 73,112,111, 67,117,114, +118,101, 0, 66, 80,111,105,110,116, 0, 66,101,122, 84,114,105,112,108,101, 0, 73,112,111, 0, 75,101,121, 66,108,111, 99,107, + 0, 75,101,121, 0, 65,110,105,109, 68, 97,116, 97, 0, 84,101,120,116, 76,105,110,101, 0, 84,101,120,116, 77, 97,114,107,101, +114, 0, 84,101,120,116, 0, 80, 97, 99,107,101,100, 70,105,108,101, 0, 67, 97,109,101,114, 97, 0, 73,109, 97,103,101, 85,115, +101,114, 0, 83, 99,101,110,101, 0, 73,109, 97,103,101, 0, 71, 80, 85, 84,101,120,116,117,114,101, 0, 97,110,105,109, 0, 82, +101,110,100,101,114, 82,101,115,117,108,116, 0, 77, 84,101,120, 0, 84,101,120, 0, 80,108,117,103,105,110, 84,101,120, 0, 67, + 66, 68, 97,116, 97, 0, 67,111,108,111,114, 66, 97,110,100, 0, 69,110,118, 77, 97,112, 0, 73,109, 66,117,102, 0, 80,111,105, +110,116, 68,101,110,115,105,116,121, 0, 86,111,120,101,108, 68, 97,116, 97, 0, 98, 78,111,100,101, 84,114,101,101, 0, 84,101, +120, 77, 97,112,112,105,110,103, 0, 76, 97,109,112, 0, 67,117,114,118,101, 77, 97,112,112,105,110,103, 0, 87, 97,118,101, 0, + 86,111,108,117,109,101, 83,101,116,116,105,110,103,115, 0, 77, 97,116,101,114,105, 97,108, 0, 71,114,111,117,112, 0, 86, 70, +111,110,116, 0, 86, 70,111,110,116, 68, 97,116, 97, 0, 77,101,116, 97, 69,108,101,109, 0, 66,111,117,110,100, 66,111,120, 0, + 77,101,116, 97, 66, 97,108,108, 0, 78,117,114, 98, 0, 67,104, 97,114, 73,110,102,111, 0, 84,101,120,116, 66,111,120, 0, 67, +117,114,118,101, 0, 80, 97,116,104, 0, 83,101,108, 66,111,120, 0, 69,100,105,116, 70,111,110,116, 0, 77,101,115,104, 0, 77, + 70, 97, 99,101, 0, 77, 84, 70, 97, 99,101, 0, 84, 70, 97, 99,101, 0, 77, 86,101,114,116, 0, 77, 69,100,103,101, 0, 77, 68, +101,102,111,114,109, 86,101,114,116, 0, 77, 67,111,108, 0, 77, 83,116,105, 99,107,121, 0, 77, 83,101,108,101, 99,116, 0, 69, +100,105,116, 77,101,115,104, 0, 67,117,115,116,111,109, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 0, 80, 97,114,116, +105, 97,108, 86,105,115,105, 98,105,108,105,116,121, 0, 77, 68,101,102,111,114,109, 87,101,105,103,104,116, 0, 77, 84,101,120, + 80,111,108,121, 0, 77, 76,111,111,112, 85, 86, 0, 77, 76,111,111,112, 67,111,108, 0, 77, 70,108,111, 97,116, 80,114,111,112, +101,114,116,121, 0, 77, 73,110,116, 80,114,111,112,101,114,116,121, 0, 77, 83,116,114,105,110,103, 80,114,111,112,101,114,116, +121, 0, 79,114,105,103, 83,112, 97, 99,101, 70, 97, 99,101, 0, 77, 68,105,115,112,115, 0, 77,117,108,116,105,114,101,115, 67, +111,108, 0, 77,117,108,116,105,114,101,115, 67,111,108, 70, 97, 99,101, 0, 77,117,108,116,105,114,101,115, 70, 97, 99,101, 0, + 77,117,108,116,105,114,101,115, 69,100,103,101, 0, 77,117,108,116,105,114,101,115, 76,101,118,101,108, 0, 77,111,100,105,102, +105,101,114, 68, 97,116, 97, 0, 83,117, 98,115,117,114,102, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116, +105, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,117,114,118,101, 77,111,100,105,102,105,101,114, 68, 97,116, + 97, 0, 66,117,105,108,100, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77, 97,115,107, 77,111,100,105,102,105,101,114, + 68, 97,116, 97, 0, 65,114,114, 97,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,105,114,114,111,114, 77,111,100, +105,102,105,101,114, 68, 97,116, 97, 0, 69,100,103,101, 83,112,108,105,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, + 66,101,118,101,108, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 77,101,115,104, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83,109,111,107,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,107,101, 68,111,109, 97,105, +110, 83,101,116,116,105,110,103,115, 0, 83,109,111,107,101, 70,108,111,119, 83,101,116,116,105,110,103,115, 0, 83,109,111,107, +101, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 68,105,115,112,108, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 85, 86, 80,114,111,106,101, 99,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101, 99,105,109, 97,116, +101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,109,111,111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 67, 97,115,116, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 87, 97,118,101, 77,111,100,105,102,105,101,114, 68, 97, +116, 97, 0, 65,114,109, 97,116,117,114,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 72,111,111,107, 77,111,100,105, +102,105,101,114, 68, 97,116, 97, 0, 83,111,102,116, 98,111,100,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108, +111,116,104, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 67,108,111,116,104, 0, 67,108,111,116,104, 83,105,109, 83,101, +116,116,105,110,103,115, 0, 67,108,111,116,104, 67,111,108,108, 83,101,116,116,105,110,103,115, 0, 80,111,105,110,116, 67, 97, + 99,104,101, 0, 67,111,108,108,105,115,105,111,110, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 66, 86, 72, 84,114,101, +101, 0, 83,117,114,102, 97, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 68,101,114,105,118,101,100, 77,101,115, +104, 0, 66, 86, 72, 84,114,101,101, 70,114,111,109, 77,101,115,104, 0, 66,111,111,108,101, 97,110, 77,111,100,105,102,105,101, +114, 68, 97,116, 97, 0, 77, 68,101,102, 73,110,102,108,117,101,110, 99,101, 0, 77, 68,101,102, 67,101,108,108, 0, 77,101,115, +104, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116, +101,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 83,121,115,116,101,109, 0, 80, 97, +114,116,105, 99,108,101, 73,110,115,116, 97,110, 99,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 69,120,112,108,111, +100,101, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 77,117,108,116,105,114,101,115, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 70,108,117,105,100,115,105,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 70,108,117,105,100,115,105, +109, 83,101,116,116,105,110,103,115, 0, 83,104,114,105,110,107,119,114, 97,112, 77,111,100,105,102,105,101,114, 68, 97,116, 97, + 0, 83,105,109,112,108,101, 68,101,102,111,114,109, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,104, 97,112,101, 75, +101,121, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 83,111,108,105,100,105,102,121, 77,111,100,105,102,105,101,114, 68, + 97,116, 97, 0, 83, 99,114,101,119, 77,111,100,105,102,105,101,114, 68, 97,116, 97, 0, 76, 97,116,116,105, 99,101, 0, 98, 68, +101,102,111,114,109, 71,114,111,117,112, 0, 83, 99,117,108,112,116, 83,101,115,115,105,111,110, 0, 98, 65, 99,116,105,111,110, + 0, 98, 80,111,115,101, 0, 98, 71, 80,100, 97,116, 97, 0, 98, 65,110,105,109, 86,105,122, 83,101,116,116,105,110,103,115, 0, + 98, 77,111,116,105,111,110, 80, 97,116,104, 0, 66,117,108,108,101,116, 83,111,102,116, 66,111,100,121, 0, 80, 97,114,116, 68, +101,102,108,101, 99,116, 0, 83,111,102,116, 66,111,100,121, 0, 79, 98, 72,111,111,107, 0, 68,117,112,108,105, 79, 98,106,101, + 99,116, 0, 82, 78, 71, 0, 69,102,102,101, 99,116,111,114, 87,101,105,103,104,116,115, 0, 80, 84, 67, 97, 99,104,101, 77,101, +109, 0, 80, 84, 67, 97, 99,104,101, 69,100,105,116, 0, 83, 66, 86,101,114,116,101,120, 0, 66,111,100,121, 80,111,105,110,116, + 0, 66,111,100,121, 83,112,114,105,110,103, 0, 83, 66, 83, 99,114, 97,116, 99,104, 0, 87,111,114,108,100, 0, 66, 97,115,101, + 0, 65,118,105, 67,111,100,101, 99, 68, 97,116, 97, 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 68, 97,116, 97, + 0, 81,117,105, 99,107,116,105,109,101, 67,111,100,101, 99, 83,101,116,116,105,110,103,115, 0, 70, 70, 77,112,101,103, 67,111, +100,101, 99, 68, 97,116, 97, 0, 65,117,100,105,111, 68, 97,116, 97, 0, 83, 99,101,110,101, 82,101,110,100,101,114, 76, 97,121, +101,114, 0, 82,101,110,100,101,114, 68, 97,116, 97, 0, 82,101,110,100,101,114, 80,114,111,102,105,108,101, 0, 71, 97,109,101, + 68,111,109,101, 0, 71, 97,109,101, 70,114, 97,109,105,110,103, 0, 71, 97,109,101, 68, 97,116, 97, 0, 84,105,109,101, 77, 97, +114,107,101,114, 0, 80, 97,105,110,116, 0, 66,114,117,115,104, 0, 73,109, 97,103,101, 80, 97,105,110,116, 83,101,116,116,105, +110,103,115, 0, 80, 97,114,116,105, 99,108,101, 66,114,117,115,104, 68, 97,116, 97, 0, 80, 97,114,116,105, 99,108,101, 69,100, +105,116, 83,101,116,116,105,110,103,115, 0, 84,114, 97,110,115,102,111,114,109, 79,114,105,101,110,116, 97,116,105,111,110, 0, + 83, 99,117,108,112,116, 0, 86, 80, 97,105,110,116, 0, 84,111,111,108, 83,101,116,116,105,110,103,115, 0, 98, 83,116, 97,116, +115, 0, 85,110,105,116, 83,101,116,116,105,110,103,115, 0, 80,104,121,115,105, 99,115, 83,101,116,116,105,110,103,115, 0, 69, +100,105,116,105,110,103, 0, 83, 99,101,110,101, 83,116, 97,116,115, 0, 68, 97,103, 70,111,114,101,115,116, 0, 66, 71,112,105, + 99, 0, 82,101,103,105,111,110, 86,105,101,119, 51, 68, 0, 82,101,110,100,101,114, 73,110,102,111, 0, 82,101,116,111,112,111, + 86,105,101,119, 68, 97,116, 97, 0, 86,105,101,119, 68,101,112,116,104,115, 0, 83,109,111,111,116,104, 86,105,101,119, 83,116, +111,114,101, 0,119,109, 84,105,109,101,114, 0, 86,105,101,119, 51, 68, 0, 83,112, 97, 99,101, 76,105,110,107, 0, 86,105,101, +119, 50, 68, 0, 83,112, 97, 99,101, 73,110,102,111, 0, 98, 83, 99,114,101,101,110, 0, 83,112, 97, 99,101, 73,112,111, 0, 98, + 68,111,112,101, 83,104,101,101,116, 0, 83,112, 97, 99,101, 66,117,116,115, 0, 83,112, 97, 99,101, 83,101,113, 0, 70,105,108, +101, 83,101,108,101, 99,116, 80, 97,114, 97,109,115, 0, 83,112, 97, 99,101, 70,105,108,101, 0, 70,105,108,101, 76,105,115,116, + 0,119,109, 79,112,101,114, 97,116,111,114, 0, 70,105,108,101, 76, 97,121,111,117,116, 0, 83,112, 97, 99,101, 79,111,112,115, + 0, 84,114,101,101, 83,116,111,114,101, 0, 84,114,101,101, 83,116,111,114,101, 69,108,101,109, 0, 83,112, 97, 99,101, 73,109, + 97,103,101, 0, 83, 99,111,112,101,115, 0, 72,105,115,116,111,103,114, 97,109, 0, 83,112, 97, 99,101, 78,108, 97, 0, 83,112, + 97, 99,101, 84,101,120,116, 0, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, 83, 99,114,105,112,116, 0, 83,112, 97, 99,101, + 84,105,109,101, 67, 97, 99,104,101, 0, 83,112, 97, 99,101, 84,105,109,101, 0, 83,112, 97, 99,101, 78,111,100,101, 0, 83,112, + 97, 99,101, 76,111,103,105, 99, 0, 83,112, 97, 99,101, 73,109, 97, 83,101,108, 0, 67,111,110,115,111,108,101, 76,105,110,101, + 0, 83,112, 97, 99,101, 67,111,110,115,111,108,101, 0, 83,112, 97, 99,101, 85,115,101,114, 80,114,101,102, 0,117,105, 70,111, +110,116, 0,117,105, 70,111,110,116, 83,116,121,108,101, 0,117,105, 83,116,121,108,101, 0,117,105, 87,105,100,103,101,116, 67, +111,108,111,114,115, 0,117,105, 87,105,100,103,101,116, 83,116, 97,116,101, 67,111,108,111,114,115, 0, 84,104,101,109,101, 85, + 73, 0, 84,104,101,109,101, 83,112, 97, 99,101, 0, 84,104,101,109,101, 87,105,114,101, 67,111,108,111,114, 0, 98, 84,104,101, +109,101, 0, 98, 65,100,100,111,110, 0, 83,111,108,105,100, 76,105,103,104,116, 0, 85,115,101,114, 68,101,102, 0, 83, 99,114, + 86,101,114,116, 0, 83, 99,114, 69,100,103,101, 0, 80, 97,110,101,108, 0, 80, 97,110,101,108, 84,121,112,101, 0,117,105, 76, + 97,121,111,117,116, 0, 83, 99,114, 65,114,101, 97, 0, 83,112, 97, 99,101, 84,121,112,101, 0, 65, 82,101,103,105,111,110, 0, + 65, 82,101,103,105,111,110, 84,121,112,101, 0, 70,105,108,101, 71,108,111, 98, 97,108, 0, 83,116,114,105,112, 69,108,101,109, + 0, 84, 83,116,114,105,112, 69,108,101,109, 0, 83,116,114,105,112, 67,114,111,112, 0, 83,116,114,105,112, 84,114, 97,110,115, +102,111,114,109, 0, 83,116,114,105,112, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 83,116,114,105,112, 80,114,111,120, +121, 0, 83,116,114,105,112, 0, 80,108,117,103,105,110, 83,101,113, 0, 83,101,113,117,101,110, 99,101, 0, 98, 83,111,117,110, +100, 0, 77,101,116, 97, 83,116, 97, 99,107, 0, 87,105,112,101, 86, 97,114,115, 0, 71,108,111,119, 86, 97,114,115, 0, 84,114, + 97,110,115,102,111,114,109, 86, 97,114,115, 0, 83,111,108,105,100, 67,111,108,111,114, 86, 97,114,115, 0, 83,112,101,101,100, + 67,111,110,116,114,111,108, 86, 97,114,115, 0, 69,102,102,101, 99,116, 0, 66,117,105,108,100, 69,102,102, 0, 80, 97,114,116, + 69,102,102, 0, 80, 97,114,116,105, 99,108,101, 0, 87, 97,118,101, 69,102,102, 0, 98, 80,114,111,112,101,114,116,121, 0, 98, + 78,101, 97,114, 83,101,110,115,111,114, 0, 98, 77,111,117,115,101, 83,101,110,115,111,114, 0, 98, 84,111,117, 99,104, 83,101, +110,115,111,114, 0, 98, 75,101,121, 98,111, 97,114,100, 83,101,110,115,111,114, 0, 98, 80,114,111,112,101,114,116,121, 83,101, +110,115,111,114, 0, 98, 65, 99,116,117, 97,116,111,114, 83,101,110,115,111,114, 0, 98, 68,101,108, 97,121, 83,101,110,115,111, +114, 0, 98, 67,111,108,108,105,115,105,111,110, 83,101,110,115,111,114, 0, 98, 82, 97,100, 97,114, 83,101,110,115,111,114, 0, + 98, 82, 97,110,100,111,109, 83,101,110,115,111,114, 0, 98, 82, 97,121, 83,101,110,115,111,114, 0, 98, 65,114,109, 97,116,117, +114,101, 83,101,110,115,111,114, 0, 98, 77,101,115,115, 97,103,101, 83,101,110,115,111,114, 0, 98, 83,101,110,115,111,114, 0, + 98, 67,111,110,116,114,111,108,108,101,114, 0, 98, 74,111,121,115,116,105, 99,107, 83,101,110,115,111,114, 0, 98, 69,120,112, +114,101,115,115,105,111,110, 67,111,110,116, 0, 98, 80,121,116,104,111,110, 67,111,110,116, 0, 98, 65, 99,116,117, 97,116,111, +114, 0, 98, 65,100,100, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 65, 99,116,105,111,110, 65, 99,116,117, + 97,116,111,114, 0, 98, 83,111,117,110,100, 65, 99,116,117, 97,116,111,114, 0, 83,111,117,110,100, 51, 68, 0, 98, 69,100,105, +116, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, 0, 98, 83, 99,101,110,101, 65, 99,116,117, 97,116,111,114, 0, 98, + 80,114,111,112,101,114,116,121, 65, 99,116,117, 97,116,111,114, 0, 98, 79, 98,106,101, 99,116, 65, 99,116,117, 97,116,111,114, + 0, 98, 73,112,111, 65, 99,116,117, 97,116,111,114, 0, 98, 67, 97,109,101,114, 97, 65, 99,116,117, 97,116,111,114, 0, 98, 67, +111,110,115,116,114, 97,105,110,116, 65, 99,116,117, 97,116,111,114, 0, 98, 71,114,111,117,112, 65, 99,116,117, 97,116,111,114, + 0, 98, 82, 97,110,100,111,109, 65, 99,116,117, 97,116,111,114, 0, 98, 77,101,115,115, 97,103,101, 65, 99,116,117, 97,116,111, +114, 0, 98, 71, 97,109,101, 65, 99,116,117, 97,116,111,114, 0, 98, 86,105,115,105, 98,105,108,105,116,121, 65, 99,116,117, 97, +116,111,114, 0, 98, 84,119,111, 68, 70,105,108,116,101,114, 65, 99,116,117, 97,116,111,114, 0, 98, 80, 97,114,101,110,116, 65, + 99,116,117, 97,116,111,114, 0, 98, 83,116, 97,116,101, 65, 99,116,117, 97,116,111,114, 0, 98, 65,114,109, 97,116,117,114,101, + 65, 99,116,117, 97,116,111,114, 0, 70,114,101,101, 67, 97,109,101,114, 97, 0, 83,112, 97, 99,101, 83,111,117,110,100, 0, 71, +114,111,117,112, 79, 98,106,101, 99,116, 0, 66,111,110,101, 0, 98, 65,114,109, 97,116,117,114,101, 0, 98, 77,111,116,105,111, +110, 80, 97,116,104, 86,101,114,116, 0, 98, 80,111,115,101, 67,104, 97,110,110,101,108, 0, 71, 72, 97,115,104, 0, 98, 73, 75, + 80, 97,114, 97,109, 0, 98, 73,116, 97,115, 99, 0, 98, 65, 99,116,105,111,110, 71,114,111,117,112, 0, 83,112, 97, 99,101, 65, + 99,116,105,111,110, 0, 98, 65, 99,116,105,111,110, 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, + 67,104, 97,110,110,101,108, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,111,110,115,116,114, 97,105,110,116, 84, + 97,114,103,101,116, 0, 98, 80,121,116,104,111,110, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 75,105,110,101,109, 97,116, +105, 99, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,112,108,105,110,101, 73, 75, 67,111,110,115,116,114, 97,105,110,116, + 0, 98, 84,114, 97, 99,107, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 97,116,101, 76,105,107,101, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 76,111, 99, 97,116,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, + 98, 83,105,122,101, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83, 97,109,101, 86,111,108,117,109,101, 67, +111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115, 76,105,107,101, 67,111,110,115,116,114, 97,105,110,116, 0, 98, + 77,105,110, 77, 97,120, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 76,111, 99,107, 84,114, 97, 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68, 97,109,112, 84,114, 97, + 99,107, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 70,111,108,108,111,119, 80, 97,116,104, 67,111,110,115,116,114, 97,105, +110,116, 0, 98, 83,116,114,101,116, 99,104, 84,111, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,105,103,105,100, 66,111, +100,121, 74,111,105,110,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 67,108, 97,109,112, 84,111, 67,111,110,115,116,114, + 97,105,110,116, 0, 98, 67,104,105,108,100, 79,102, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 84,114, 97,110,115,102,111, +114,109, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 80,105,118,111,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 76, +111, 99, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 82,111,116, 76,105,109,105,116, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 83,105,122,101, 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 68,105,115,116, + 76,105,109,105,116, 67,111,110,115,116,114, 97,105,110,116, 0, 98, 83,104,114,105,110,107,119,114, 97,112, 67,111,110,115,116, +114, 97,105,110,116, 0, 98, 65, 99,116,105,111,110, 77,111,100,105,102,105,101,114, 0, 98, 65, 99,116,105,111,110, 83,116,114, +105,112, 0, 98, 78,111,100,101, 83,116, 97, 99,107, 0, 98, 78,111,100,101, 83,111, 99,107,101,116, 0, 98, 78,111,100,101, 76, +105,110,107, 0, 98, 78,111,100,101, 0, 98, 78,111,100,101, 80,114,101,118,105,101,119, 0,117,105, 66,108,111, 99,107, 0, 98, + 78,111,100,101, 84,121,112,101, 0, 78,111,100,101, 73,109, 97,103,101, 65,110,105,109, 0, 78,111,100,101, 66,108,117,114, 68, + 97,116, 97, 0, 78,111,100,101, 68, 66,108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 66,105,108, 97,116,101,114, 97,108, 66, +108,117,114, 68, 97,116, 97, 0, 78,111,100,101, 72,117,101, 83, 97,116, 0, 78,111,100,101, 73,109, 97,103,101, 70,105,108,101, + 0, 78,111,100,101, 67,104,114,111,109, 97, 0, 78,111,100,101, 84,119,111, 88, 89,115, 0, 78,111,100,101, 84,119,111, 70,108, +111, 97,116,115, 0, 78,111,100,101, 71,101,111,109,101,116,114,121, 0, 78,111,100,101, 86,101,114,116,101,120, 67,111,108, 0, + 78,111,100,101, 68,101,102,111, 99,117,115, 0, 78,111,100,101, 83, 99,114,105,112,116, 68,105, 99,116, 0, 78,111,100,101, 71, +108, 97,114,101, 0, 78,111,100,101, 84,111,110,101,109, 97,112, 0, 78,111,100,101, 76,101,110,115, 68,105,115,116, 0, 78,111, +100,101, 67,111,108,111,114, 66, 97,108, 97,110, 99,101, 0, 78,111,100,101, 67,111,108,111,114,115,112,105,108,108, 0, 84,101, +120, 78,111,100,101, 79,117,116,112,117,116, 0, 67,117,114,118,101, 77, 97,112, 80,111,105,110,116, 0, 67,117,114,118,101, 77, + 97,112, 0, 66,114,117,115,104, 67,108,111,110,101, 0, 67,117,115,116,111,109, 68, 97,116, 97, 76, 97,121,101,114, 0, 67,117, +115,116,111,109, 68, 97,116, 97, 69,120,116,101,114,110, 97,108, 0, 72, 97,105,114, 75,101,121, 0, 80, 97,114,116,105, 99,108, +101, 75,101,121, 0, 66,111,105,100, 80, 97,114,116,105, 99,108,101, 0, 66,111,105,100, 68, 97,116, 97, 0, 67,104,105,108,100, + 80, 97,114,116,105, 99,108,101, 0, 80, 97,114,116,105, 99,108,101, 84, 97,114,103,101,116, 0, 80, 97,114,116,105, 99,108,101, + 68,117,112,108,105, 87,101,105,103,104,116, 0, 80, 97,114,116,105, 99,108,101, 68, 97,116, 97, 0, 83, 80, 72, 70,108,117,105, +100, 83,101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 83,101,116,116,105,110,103,115, 0, 66,111,105,100, 83, +101,116,116,105,110,103,115, 0, 80, 97,114,116,105, 99,108,101, 67, 97, 99,104,101, 75,101,121, 0, 75, 68, 84,114,101,101, 0, + 80, 97,114,116,105, 99,108,101, 68,114, 97,119, 68, 97,116, 97, 0, 76,105,110,107, 78,111,100,101, 0, 98, 71, 80, 68,115,112, +111,105,110,116, 0, 98, 71, 80, 68,115,116,114,111,107,101, 0, 98, 71, 80, 68,102,114, 97,109,101, 0, 98, 71, 80, 68,108, 97, +121,101,114, 0, 82,101,112,111,114,116, 0, 82,101,112,111,114,116, 76,105,115,116, 0, 82,101,112,111,114,116, 84,105,109,101, +114, 73,110,102,111, 0,119,109, 87,105,110,100,111,119, 77, 97,110, 97,103,101,114, 0,119,109, 87,105,110,100,111,119, 0,119, +109, 75,101,121, 67,111,110,102,105,103, 0,119,109, 69,118,101,110,116, 0,119,109, 83,117, 98, 87,105,110,100,111,119, 0,119, +109, 71,101,115,116,117,114,101, 0,119,109, 75,101,121, 77, 97,112, 73,116,101,109, 0, 80,111,105,110,116,101,114, 82, 78, 65, + 0,119,109, 75,101,121, 77, 97,112, 0,119,109, 79,112,101,114, 97,116,111,114, 84,121,112,101, 0, 70, 77,111,100,105,102,105, +101,114, 0, 70, 77,111,100, 95, 71,101,110,101,114, 97,116,111,114, 0, 70, 77,111,100, 95, 70,117,110, 99,116,105,111,110, 71, +101,110,101,114, 97,116,111,114, 0, 70, 67, 77, 95, 69,110,118,101,108,111,112,101, 68, 97,116, 97, 0, 70, 77,111,100, 95, 69, +110,118,101,108,111,112,101, 0, 70, 77,111,100, 95, 67,121, 99,108,101,115, 0, 70, 77,111,100, 95, 80,121,116,104,111,110, 0, + 70, 77,111,100, 95, 76,105,109,105,116,115, 0, 70, 77,111,100, 95, 78,111,105,115,101, 0, 70, 77,111,100, 95, 83,116,101,112, +112,101,100, 0, 68,114,105,118,101,114, 84, 97,114,103,101,116, 0, 68,114,105,118,101,114, 86, 97,114, 0, 67,104, 97,110,110, +101,108, 68,114,105,118,101,114, 0, 70, 80,111,105,110,116, 0, 70, 67,117,114,118,101, 0, 65,110,105,109, 77, 97,112, 80, 97, +105,114, 0, 65,110,105,109, 77, 97,112,112,101,114, 0, 78,108, 97, 83,116,114,105,112, 0, 78,108, 97, 84,114, 97, 99,107, 0, + 75, 83, 95, 80, 97,116,104, 0, 75,101,121,105,110,103, 83,101,116, 0, 65,110,105,109, 79,118,101,114,114,105,100,101, 0, 73, +100, 65,100,116, 84,101,109,112,108, 97,116,101, 0, 66,111,105,100, 82,117,108,101, 0, 66,111,105,100, 82,117,108,101, 71,111, + 97,108, 65,118,111,105,100, 0, 66,111,105,100, 82,117,108,101, 65,118,111,105,100, 67,111,108,108,105,115,105,111,110, 0, 66, +111,105,100, 82,117,108,101, 70,111,108,108,111,119, 76,101, 97,100,101,114, 0, 66,111,105,100, 82,117,108,101, 65,118,101,114, + 97,103,101, 83,112,101,101,100, 0, 66,111,105,100, 82,117,108,101, 70,105,103,104,116, 0, 66,111,105,100, 83,116, 97,116,101, + 0, 70, 76, 85, 73, 68, 95, 51, 68, 0, 87, 84, 85, 82, 66, 85, 76, 69, 78, 67, 69, 0, 0, 0, 84, 76, 69, 78, 1, 0, 1, 0, + 2, 0, 2, 0, 4, 0, 4, 0, 4, 0, 4, 0, 8, 0, 0, 0, 16, 0, 24, 0, 16, 0, 4, 0, 8, 0, 8, 0, 16, 0, 12, 0, + 12, 0, 24, 0, 16, 0, 16, 0, 32, 0, 16, 0, 16, 0, 32, 0, 96, 0, 72, 0, 72, 2, 0, 0, 40, 0,144, 0,208, 4,112, 0, + 36, 0, 56, 0,112, 0,128, 0,168, 0, 96, 0, 40, 0, 48, 0,176, 0, 16, 0,136, 0, 40, 0, 8, 6,240, 1, 0, 0, 0, 0, + 0, 0, 16, 1,112, 1,120, 1, 24, 0, 8, 3,200, 0, 0, 0, 88, 0, 40, 1,240, 0,136, 0,216, 1, 64, 1, 80, 0, 88, 0, + 32, 3,104, 0, 88, 1, 0, 0,128, 0,104, 0,208, 0, 80, 0, 8, 0, 16, 0,216, 1, 0, 0, 0, 0, 0, 0,176, 1, 20, 0, + 48, 0, 64, 0, 24, 0, 12, 0, 16, 0, 4, 0, 8, 0, 8, 0, 0, 0, 40, 0,128, 0, 48, 0, 8, 0, 16, 0, 8, 0, 8, 0, + 4, 0, 4, 0, 0, 1, 32, 0, 16, 0, 16, 0, 64, 0, 24, 0, 12, 0, 64, 0, 80, 0,104, 0,120, 0,128, 0, 96, 0,128, 0, +160, 0, 96, 0, 88, 0,136, 0, 88, 0,112, 0, 0, 1, 56, 0,192, 0,184, 0,232, 0, 88, 0,120, 0,136, 0,224, 0,136, 0, +248, 0, 80, 0,136, 0, 0, 0,152, 0, 40, 0, 8, 2,160, 0, 0, 0,120, 0, 0, 0, 0, 0, 96, 0, 8, 0, 8, 0, 48, 1, +112, 0,240, 1,104, 0, 96, 0, 88, 0, 96, 0,200, 1,144, 0,136, 0, 80, 0,136, 0,112, 0, 8, 1, 48, 0, 0, 0,144, 0, +176, 0,104, 0, 48, 0, 24, 0,120, 0,152, 0,120, 1,224, 0,192, 0, 0, 0, 72, 0,168, 0, 0, 0, 16, 0, 0, 0, 0, 0, + 0, 0,232, 1, 40, 0,184, 0,152, 0, 64, 0, 64, 0, 24, 0, 88, 0, 0, 4, 64, 0, 24, 0, 16, 0,104, 0, 96, 0, 32, 0, +168, 1, 56, 0, 16, 0,168, 0, 88, 0, 56, 0, 64, 0,184, 1, 32, 0, 8, 0, 24, 0, 80, 2, 0, 0, 0, 0, 88, 0,104, 3, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 1, 56, 0,144, 0, 72, 0,208, 0,240, 0, 40, 0,248, 0,240, 0,200, 1,104, 0, + 0, 0,168, 0, 0, 0, 32, 1, 16, 0, 16, 0, 72, 33,128, 16, 24, 16,216, 0,144, 2,120, 2, 64, 0, 48, 0,216, 0, 32, 1, + 72, 0,200, 2, 40, 0,144, 1,104, 0, 24, 1, 32, 0,232, 0, 32, 0, 32, 0,112, 2,104, 1, 16, 0, 56, 29, 80, 0, 56, 0, + 8, 13, 32, 0, 40, 0, 88, 1, 0, 0, 0, 0,160, 0, 0, 0, 40, 1, 0, 0, 24, 1, 80, 0, 48, 0, 16, 0, 8, 0, 44, 0, + 0, 1, 32, 1,200, 1, 24, 1,136, 1, 32, 0, 12, 0, 24, 0, 52, 0, 16, 0, 24, 0, 24, 0, 32, 0, 72, 1, 0, 0, 64, 0, + 64, 0, 48, 0, 8, 0, 48, 0, 72, 0,104, 0, 40, 0, 8, 0, 72, 0, 44, 0, 40, 0,108, 0, 72, 0, 72, 0, 96, 0,104, 0, + 60, 0,128, 0, 80, 0, 80, 0, 16, 0, 96, 0, 72, 0, 32, 0, 88, 0, 24, 0, 80, 0,112, 0, 84, 0, 32, 0, 96, 0, 56, 0, + 56, 0,112, 0,140, 0, 4, 0, 24, 0, 16, 0, 8, 0, 88, 0, 40, 0,216, 0, 40, 0, 40, 1,200, 0, 16, 0, 16, 2, 0, 0, + 4, 0, 40, 0,120, 0, 0, 1, 88, 0, 56, 0, 88, 0,128, 0, 80, 0,120, 0, 24, 0, 56, 0, 48, 0, 48, 0, 48, 0, 8, 0, + 40, 0, 72, 0, 72, 0, 48, 0, 48, 0, 24, 0, 56, 0,104, 0, 16, 0,112, 0, 96, 0, 56, 0, 28, 0, 28, 0, 28, 0, 56, 0, + 24, 0, 72, 0,168, 0, 40, 0,144, 0, 56, 0,232, 0, 0, 0, 0, 0, 0, 0, 16, 0, 40, 0, 28, 0, 12, 0, 12, 0, 16, 1, + 44, 0, 8, 0, 8, 0, 64, 0, 32, 0, 24, 0, 16, 0, 24, 0, 32, 0, 8, 0, 84, 0, 20, 0, 32, 0, 12, 0, 56, 0, 24, 0, + 72, 0,240, 0, 24, 0, 56, 0, 56, 0, 20, 0, 64, 0, 40, 0, 32, 0,192, 0, 36, 0, 16, 2,104, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 16, 0, 32, 0, 40, 0,192, 0, 40, 0, 40, 0, 20, 0, 24, 1,224, 0,168, 0, 0, 0, 0, 0, 0, 0,120, 0, 0, 0, +120, 0, 0, 0,104, 0, 24, 0, 24, 0, 16, 0, 24, 0, 8, 0, 16, 0, 24, 0, 20, 0, 20, 0, 56, 0, 24, 2, 40, 1, 16, 0, +104, 0, 0, 1, 40, 0,200, 0,104, 0,112, 0,168, 0, 32, 0, 80, 0, 56, 0, 80, 0, 64, 0,104, 0, 72, 0, 64, 0,128, 0, + 0, 0, 0, 0, 83, 84, 82, 67,153, 1, 0, 0, 10, 0, 2, 0, 10, 0, 0, 0, 10, 0, 1, 0, 11, 0, 3, 0, 11, 0, 0, 0, + 11, 0, 1, 0, 9, 0, 2, 0, 12, 0, 2, 0, 9, 0, 3, 0, 9, 0, 4, 0, 13, 0, 2, 0, 2, 0, 5, 0, 2, 0, 6, 0, + 14, 0, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0, 15, 0, 2, 0, 4, 0, 5, 0, 4, 0, 6, 0, 16, 0, 2, 0, 8, 0, 5, 0, + 8, 0, 6, 0, 17, 0, 3, 0, 4, 0, 5, 0, 4, 0, 6, 0, 4, 0, 7, 0, 18, 0, 3, 0, 7, 0, 5, 0, 7, 0, 6, 0, + 7, 0, 7, 0, 19, 0, 3, 0, 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 20, 0, 4, 0, 4, 0, 5, 0, 4, 0, 6, 0, + 4, 0, 7, 0, 4, 0, 8, 0, 21, 0, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, 7, 0, 8, 0, 22, 0, 4, 0, + 8, 0, 5, 0, 8, 0, 6, 0, 8, 0, 7, 0, 8, 0, 8, 0, 23, 0, 4, 0, 4, 0, 9, 0, 4, 0, 10, 0, 4, 0, 11, 0, + 4, 0, 12, 0, 24, 0, 4, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 25, 0, 4, 0, 9, 0, 13, 0, + 12, 0, 14, 0, 4, 0, 15, 0, 4, 0, 16, 0, 26, 0, 10, 0, 26, 0, 0, 0, 26, 0, 1, 0, 0, 0, 17, 0, 0, 0, 18, 0, + 2, 0, 19, 0, 0, 0, 20, 0, 4, 0, 21, 0, 25, 0, 22, 0, 4, 0, 23, 0, 4, 0, 24, 0, 27, 0, 9, 0, 9, 0, 0, 0, + 9, 0, 1, 0, 27, 0, 25, 0, 28, 0, 26, 0, 0, 0, 27, 0, 2, 0, 28, 0, 2, 0, 19, 0, 4, 0, 29, 0, 26, 0, 30, 0, + 28, 0, 8, 0, 27, 0, 31, 0, 27, 0, 32, 0, 29, 0, 33, 0, 0, 0, 34, 0, 0, 0, 35, 0, 4, 0, 36, 0, 4, 0, 37, 0, + 28, 0, 38, 0, 30, 0, 6, 0, 4, 0, 39, 0, 4, 0, 40, 0, 2, 0, 41, 0, 2, 0, 42, 0, 2, 0, 43, 0, 4, 0, 44, 0, + 31, 0, 6, 0, 32, 0, 45, 0, 2, 0, 46, 0, 2, 0, 47, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0, 48, 0, 33, 0, 21, 0, + 33, 0, 0, 0, 33, 0, 1, 0, 34, 0, 49, 0, 35, 0, 50, 0, 24, 0, 51, 0, 24, 0, 52, 0, 2, 0, 46, 0, 2, 0, 47, 0, + 2, 0, 53, 0, 2, 0, 54, 0, 2, 0, 55, 0, 2, 0, 56, 0, 2, 0, 19, 0, 2, 0, 57, 0, 7, 0, 11, 0, 7, 0, 12, 0, + 4, 0, 58, 0, 7, 0, 59, 0, 7, 0, 60, 0, 7, 0, 61, 0, 31, 0, 62, 0, 36, 0, 7, 0, 27, 0, 31, 0, 12, 0, 63, 0, + 24, 0, 64, 0, 2, 0, 46, 0, 2, 0, 65, 0, 2, 0, 66, 0, 2, 0, 37, 0, 37, 0, 16, 0, 37, 0, 0, 0, 37, 0, 1, 0, + 7, 0, 67, 0, 7, 0, 61, 0, 2, 0, 17, 0, 2, 0, 47, 0, 2, 0, 68, 0, 2, 0, 19, 0, 4, 0, 69, 0, 4, 0, 70, 0, + 9, 0, 2, 0, 7, 0, 71, 0, 0, 0, 20, 0, 0, 0, 72, 0, 7, 0, 73, 0, 7, 0, 74, 0, 38, 0, 13, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 37, 0, 76, 0, 0, 0, 77, 0, 4, 0, 78, 0, 7, 0, 61, 0, 12, 0, 79, 0, 36, 0, 80, 0, 27, 0, 81, 0, + 2, 0, 17, 0, 2, 0, 82, 0, 2, 0, 83, 0, 2, 0, 19, 0, 40, 0, 6, 0, 40, 0, 0, 0, 40, 0, 1, 0, 0, 0, 84, 0, + 0, 0, 85, 0, 4, 0, 23, 0, 4, 0, 86, 0, 41, 0, 10, 0, 41, 0, 0, 0, 41, 0, 1, 0, 4, 0, 87, 0, 4, 0, 88, 0, + 4, 0, 89, 0, 4, 0, 43, 0, 4, 0, 14, 0, 4, 0, 90, 0, 0, 0, 91, 0, 0, 0, 92, 0, 42, 0, 15, 0, 27, 0, 31, 0, + 0, 0, 93, 0, 4, 0, 90, 0, 4, 0, 94, 0, 12, 0, 95, 0, 40, 0, 96, 0, 40, 0, 97, 0, 4, 0, 98, 0, 4, 0, 99, 0, + 12, 0,100, 0, 0, 0,101, 0, 4, 0,102, 0, 4, 0,103, 0, 9, 0,104, 0, 8, 0,105, 0, 43, 0, 3, 0, 4, 0,106, 0, + 4, 0,107, 0, 9, 0, 2, 0, 44, 0, 15, 0, 27, 0, 31, 0, 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 7, 0,108, 0, + 7, 0,109, 0, 7, 0,110, 0, 7, 0,111, 0, 7, 0,112, 0, 7, 0,113, 0, 7, 0,114, 0, 7, 0,115, 0, 7, 0,116, 0, + 36, 0, 80, 0, 32, 0,117, 0, 45, 0, 13, 0, 4, 0,118, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 2, 0,122, 0, + 2, 0,123, 0, 2, 0, 19, 0, 2, 0,124, 0, 2, 0,125, 0, 2, 0,126, 0, 2, 0,127, 0, 2, 0,128, 0, 46, 0,129, 0, + 47, 0, 32, 0, 27, 0, 31, 0, 0, 0, 34, 0, 12, 0,130, 0, 48, 0,131, 0, 49, 0,132, 0, 50, 0,133, 0, 50, 0,134, 0, + 2, 0,135, 0, 2, 0,136, 0, 2, 0,124, 0, 2, 0, 19, 0, 2, 0,137, 0, 2, 0, 17, 0, 4, 0,138, 0, 2, 0,139, 0, + 2, 0,140, 0, 2, 0,141, 0, 2, 0,142, 0, 2, 0,143, 0, 2, 0,144, 0, 4, 0,145, 0, 4, 0,146, 0, 43, 0,147, 0, + 30, 0,148, 0, 7, 0,149, 0, 4, 0,150, 0, 2, 0,151, 0, 2, 0,152, 0, 2, 0,153, 0, 2, 0,154, 0, 7, 0,155, 0, + 7, 0,156, 0, 51, 0, 63, 0, 2, 0,157, 0, 2, 0,158, 0, 2, 0,159, 0, 2, 0,160, 0, 32, 0,161, 0, 52, 0,162, 0, + 0, 0,163, 0, 0, 0,164, 0, 0, 0,165, 0, 0, 0,166, 0, 0, 0,167, 0, 7, 0,168, 0, 7, 0,169, 0, 7, 0,170, 0, + 2, 0,171, 0, 2, 0,172, 0, 2, 0,173, 0, 2, 0,174, 0, 2, 0,175, 0, 2, 0,176, 0, 0, 0,177, 0, 0, 0,178, 0, + 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,182, 0, 7, 0,183, 0, 7, 0, 57, 0, 7, 0,184, 0, 7, 0,185, 0, + 7, 0,186, 0, 7, 0,187, 0, 7, 0,188, 0, 7, 0,189, 0, 7, 0,190, 0, 7, 0,191, 0, 7, 0,192, 0, 7, 0,193, 0, + 7, 0,194, 0, 7, 0,195, 0, 7, 0,196, 0, 7, 0,197, 0, 7, 0,198, 0, 7, 0,199, 0, 7, 0,200, 0, 7, 0,201, 0, + 7, 0,202, 0, 7, 0,203, 0, 7, 0,204, 0, 7, 0,205, 0, 7, 0,206, 0, 7, 0,207, 0, 7, 0,208, 0, 7, 0,209, 0, + 7, 0,210, 0, 7, 0,211, 0, 7, 0,212, 0, 7, 0,213, 0, 7, 0,214, 0, 7, 0,215, 0, 7, 0,216, 0, 7, 0,217, 0, + 7, 0,218, 0, 53, 0, 15, 0, 0, 0,219, 0, 9, 0,220, 0, 0, 0,221, 0, 0, 0,222, 0, 4, 0,223, 0, 4, 0,224, 0, + 9, 0,225, 0, 7, 0,226, 0, 7, 0,227, 0, 7, 0,228, 0, 4, 0,229, 0, 9, 0,230, 0, 9, 0,231, 0, 4, 0,232, 0, + 4, 0, 37, 0, 54, 0, 6, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,233, 0, 7, 0, 67, 0, 4, 0, 64, 0, + 55, 0, 5, 0, 2, 0, 19, 0, 2, 0, 36, 0, 2, 0, 64, 0, 2, 0,234, 0, 54, 0,228, 0, 56, 0, 17, 0, 32, 0,161, 0, + 47, 0,235, 0, 57, 0,236, 0, 7, 0,237, 0, 7, 0,238, 0, 2, 0, 17, 0, 2, 0,239, 0, 7, 0,109, 0, 7, 0,110, 0, + 7, 0,240, 0, 4, 0,241, 0, 2, 0,242, 0, 2, 0,243, 0, 4, 0,124, 0, 4, 0,138, 0, 2, 0,244, 0, 2, 0,245, 0, + 58, 0, 22, 0, 2, 0, 19, 0, 2, 0,246, 0, 7, 0,247, 0, 7, 0,248, 0, 2, 0,137, 0, 2, 0,249, 0, 4, 0,250, 0, + 4, 0,251, 0, 32, 0,161, 0, 4, 0,252, 0, 2, 0,253, 0, 2, 0,254, 0, 9, 0,255, 0, 7, 0, 0, 1, 7, 0, 1, 1, + 2, 0, 2, 1, 2, 0, 3, 1, 2, 0, 4, 1, 2, 0, 5, 1, 7, 0, 6, 1, 7, 0, 7, 1, 55, 0, 8, 1, 59, 0, 13, 0, + 4, 0, 9, 1, 4, 0, 10, 1, 2, 0, 11, 1, 2, 0, 19, 0, 2, 0, 12, 1, 2, 0, 13, 1, 32, 0,161, 0, 7, 0, 14, 1, + 4, 0, 15, 1, 0, 0, 16, 1, 7, 0, 17, 1, 4, 0, 18, 1, 4, 0,124, 0, 52, 0, 63, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 7, 0, 19, 1, 7, 0, 20, 1, 7, 0, 21, 1, 7, 0, 22, 1, 7, 0, 23, 1, 7, 0, 24, 1, 7, 0, 25, 1, 7, 0, 26, 1, + 7, 0, 27, 1, 7, 0, 70, 0, 7, 0, 28, 1, 7, 0, 29, 1, 7, 0, 30, 1, 7, 0, 31, 1, 7, 0, 32, 1, 7, 0, 33, 1, + 7, 0, 34, 1, 7, 0, 35, 1, 7, 0, 36, 1, 7, 0, 37, 1, 7, 0, 38, 1, 7, 0, 39, 1, 2, 0, 40, 1, 2, 0, 41, 1, + 2, 0, 42, 1, 2, 0, 43, 1, 2, 0, 44, 1, 2, 0, 45, 1, 2, 0, 46, 1, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,239, 0, + 7, 0, 47, 1, 7, 0, 48, 1, 7, 0, 49, 1, 7, 0, 50, 1, 4, 0, 51, 1, 4, 0, 52, 1, 2, 0, 53, 1, 2, 0, 54, 1, + 2, 0, 12, 1, 2, 0,122, 0, 4, 0, 23, 0, 4, 0,119, 0, 4, 0,120, 0, 4, 0,121, 0, 7, 0, 55, 1, 7, 0, 56, 1, + 7, 0, 43, 0, 45, 0, 57, 1, 60, 0, 58, 1, 36, 0, 80, 0, 47, 0,235, 0, 53, 0, 59, 1, 55, 0, 8, 1, 56, 0, 60, 1, + 30, 0,148, 0, 58, 0, 61, 1, 59, 0, 62, 1, 0, 0, 63, 1, 0, 0,178, 0, 61, 0, 8, 0, 7, 0, 64, 1, 7, 0, 65, 1, + 7, 0,169, 0, 4, 0, 19, 0, 7, 0, 66, 1, 7, 0, 67, 1, 7, 0, 68, 1, 32, 0, 45, 0, 62, 0, 72, 0, 27, 0, 31, 0, + 39, 0, 75, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 69, 1, 2, 0,172, 0, 2, 0, 70, 1, 7, 0,179, 0, 7, 0,180, 0, + 7, 0,181, 0, 7, 0,182, 0, 7, 0, 71, 1, 7, 0, 72, 1, 7, 0, 73, 1, 7, 0, 74, 1, 7, 0, 75, 1, 7, 0, 76, 1, + 7, 0, 77, 1, 7, 0, 78, 1, 7, 0, 79, 1, 7, 0, 80, 1, 7, 0, 81, 1, 63, 0, 82, 1, 2, 0,246, 0, 2, 0, 70, 0, + 7, 0,109, 0, 7, 0,110, 0, 7, 0, 83, 1, 7, 0, 84, 1, 7, 0, 85, 1, 7, 0, 86, 1, 7, 0, 87, 1, 2, 0, 88, 1, + 2, 0, 89, 1, 2, 0, 90, 1, 2, 0, 91, 1, 0, 0, 92, 1, 0, 0, 93, 1, 2, 0, 94, 1, 2, 0, 95, 1, 2, 0, 96, 1, + 2, 0, 97, 1, 2, 0, 98, 1, 7, 0, 99, 1, 7, 0,100, 1, 7, 0,101, 1, 7, 0,102, 1, 2, 0,103, 1, 2, 0, 43, 0, + 2, 0,104, 1, 2, 0,105, 1, 2, 0,106, 1, 2, 0,107, 1, 7, 0,108, 1, 7, 0,109, 1, 7, 0,110, 1, 7, 0,111, 1, + 7, 0,112, 1, 7, 0,113, 1, 7, 0,114, 1, 7, 0,115, 1, 7, 0,116, 1, 7, 0,117, 1, 7, 0,118, 1, 7, 0,119, 1, + 2, 0,120, 1, 0, 0,121, 1, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 0, 0,124, 1, 30, 0,148, 0, 64, 0, 2, 0, + 27, 0, 31, 0, 36, 0, 80, 0, 65, 0, 18, 0, 7, 0,125, 1, 7, 0,126, 1, 7, 0,127, 1, 7, 0,128, 1, 7, 0,129, 1, + 7, 0,130, 1, 7, 0,131, 1, 7, 0,132, 1, 7, 0,133, 1, 7, 0,134, 1, 2, 0,135, 1, 2, 0,136, 1, 2, 0,137, 1, + 2, 0,138, 1, 7, 0,139, 1, 7, 0,140, 1, 7, 0,141, 1, 7, 0,142, 1, 66, 0,124, 0, 27, 0, 31, 0, 39, 0, 75, 0, + 2, 0,143, 1, 2, 0, 19, 0, 7, 0,179, 0, 7, 0,180, 0, 7, 0,181, 0, 7, 0,144, 1, 7, 0,145, 1, 7, 0,146, 1, + 7, 0,147, 1, 7, 0,148, 1, 7, 0,149, 1, 7, 0,150, 1, 7, 0,151, 1, 7, 0,152, 1, 7, 0,153, 1, 7, 0,154, 1, + 7, 0,155, 1, 7, 0,156, 1, 7, 0,157, 1, 7, 0,158, 1, 7, 0,159, 1, 7, 0,160, 1, 7, 0,161, 1, 7, 0,162, 1, + 7, 0,163, 1, 65, 0,164, 1, 7, 0,165, 1, 7, 0,166, 1, 7, 0,167, 1, 7, 0,168, 1, 7, 0,169, 1, 7, 0,170, 1, + 7, 0,171, 1, 2, 0,172, 1, 2, 0,173, 1, 2, 0,174, 1, 0, 0,175, 1, 0, 0,176, 1, 7, 0,177, 1, 7, 0,178, 1, + 2, 0,179, 1, 2, 0,180, 1, 7, 0,181, 1, 7, 0,182, 1, 7, 0,183, 1, 7, 0,184, 1, 2, 0,185, 1, 2, 0,186, 1, + 4, 0, 69, 1, 4, 0,187, 1, 2, 0,188, 1, 2, 0,189, 1, 2, 0,190, 1, 2, 0,191, 1, 7, 0,192, 1, 7, 0,193, 1, + 7, 0,194, 1, 7, 0,195, 1, 7, 0,196, 1, 7, 0,197, 1, 7, 0,198, 1, 7, 0,199, 1, 7, 0,200, 1, 7, 0,201, 1, + 0, 0,202, 1, 7, 0,203, 1, 7, 0,204, 1, 7, 0,205, 1, 4, 0,206, 1, 0, 0,207, 1, 0, 0,104, 1, 0, 0,208, 1, + 0, 0, 63, 1, 2, 0,209, 1, 2, 0,210, 1, 2, 0,123, 1, 2, 0,211, 1, 2, 0,212, 1, 2, 0,213, 1, 7, 0,214, 1, + 7, 0,215, 1, 7, 0,216, 1, 7, 0,217, 1, 7, 0,218, 1, 2, 0,157, 0, 2, 0,158, 0, 55, 0,219, 1, 55, 0,220, 1, + 0, 0,221, 1, 0, 0,222, 1, 0, 0,223, 1, 0, 0,224, 1, 2, 0,225, 1, 2, 0,226, 1, 7, 0,227, 1, 7, 0,228, 1, + 51, 0,122, 1, 60, 0, 58, 1, 36, 0, 80, 0, 67, 0,229, 1, 30, 0,148, 0, 7, 0,230, 1, 7, 0,231, 1, 7, 0,232, 1, + 7, 0,233, 1, 7, 0,234, 1, 2, 0,235, 1, 2, 0, 70, 0, 7, 0,236, 1, 7, 0,237, 1, 7, 0,238, 1, 7, 0,239, 1, + 7, 0,240, 1, 7, 0,241, 1, 7, 0,242, 1, 7, 0,243, 1, 7, 0,244, 1, 2, 0,245, 1, 2, 0,246, 1, 4, 0,247, 1, + 4, 0,248, 1, 12, 0,249, 1, 68, 0, 4, 0, 27, 0, 31, 0, 0, 0,250, 1, 69, 0, 2, 0, 43, 0,147, 0, 70, 0, 26, 0, + 70, 0, 0, 0, 70, 0, 1, 0, 71, 0,251, 1, 4, 0,252, 1, 4, 0,253, 1, 4, 0,254, 1, 4, 0,255, 1, 4, 0, 0, 2, + 4, 0, 1, 2, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 2, 2, 2, 0, 3, 2, 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 7, 0, + 7, 0, 4, 2, 7, 0, 5, 2, 7, 0, 6, 2, 7, 0, 7, 2, 7, 0, 8, 2, 7, 0, 9, 2, 7, 0, 10, 2, 7, 0, 23, 0, + 7, 0, 11, 2, 7, 0, 12, 2, 72, 0, 20, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 13, 2, 12, 0, 14, 2, + 12, 0, 15, 2, 36, 0, 80, 0, 66, 0, 16, 2, 0, 0, 19, 0, 0, 0, 17, 2, 2, 0, 18, 2, 2, 0,171, 0, 2, 0, 37, 0, + 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 7, 0, 19, 2, 7, 0, 20, 2, 7, 0, 21, 2, 70, 0, 22, 2, 35, 0, 11, 0, + 7, 0, 23, 2, 7, 0, 24, 2, 7, 0, 25, 2, 7, 0,248, 0, 2, 0, 55, 0, 0, 0, 26, 2, 0, 0, 27, 2, 0, 0, 28, 2, + 0, 0, 29, 2, 0, 0, 30, 2, 0, 0, 31, 2, 34, 0, 7, 0, 7, 0, 32, 2, 7, 0, 24, 2, 7, 0, 25, 2, 2, 0, 28, 2, + 2, 0, 31, 2, 7, 0,248, 0, 7, 0, 37, 0, 73, 0, 21, 0, 73, 0, 0, 0, 73, 0, 1, 0, 2, 0, 17, 0, 2, 0, 33, 2, + 2, 0, 31, 2, 2, 0, 19, 0, 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 38, 2, 2, 0, 39, 2, + 2, 0, 40, 2, 2, 0, 41, 2, 7, 0, 42, 2, 7, 0, 43, 2, 34, 0, 49, 0, 35, 0, 50, 0, 2, 0, 44, 2, 2, 0, 45, 2, + 4, 0, 46, 2, 74, 0, 5, 0, 2, 0, 47, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0, 37, 0, 2, 0, 70, 0, 75, 0, 4, 0, + 7, 0, 5, 0, 7, 0, 6, 0, 7, 0, 8, 0, 7, 0, 48, 2, 76, 0, 68, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, + 12, 0, 49, 2, 12, 0, 14, 2, 12, 0, 50, 2, 32, 0, 51, 2, 32, 0, 52, 2, 32, 0, 53, 2, 36, 0, 80, 0, 77, 0, 54, 2, + 38, 0, 55, 2, 66, 0, 16, 2, 12, 0, 56, 2, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 65, 1, 2, 0,171, 0, 2, 0, 43, 0, + 2, 0, 57, 2, 2, 0, 58, 2, 2, 0, 59, 2, 7, 0, 60, 2, 7, 0, 70, 0, 2, 0, 61, 2, 2, 0, 18, 2, 2, 0, 19, 0, + 2, 0, 62, 2, 7, 0, 63, 2, 7, 0, 64, 2, 7, 0, 65, 2, 2, 0, 36, 2, 2, 0, 37, 2, 2, 0, 66, 2, 2, 0, 67, 2, + 4, 0, 68, 2, 9, 0, 69, 2, 2, 0, 23, 0, 2, 0, 95, 0, 2, 0, 67, 0, 2, 0, 70, 2, 7, 0, 71, 2, 7, 0, 72, 2, + 7, 0, 73, 2, 7, 0, 74, 2, 7, 0, 75, 2, 7, 0, 76, 2, 7, 0, 77, 2, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 80, 2, + 0, 0, 81, 2, 78, 0, 82, 2, 79, 0, 83, 2, 0, 0, 84, 2, 68, 0, 85, 2, 68, 0, 86, 2, 68, 0, 87, 2, 68, 0, 88, 2, + 4, 0, 89, 2, 7, 0, 90, 2, 4, 0, 91, 2, 4, 0, 92, 2, 75, 0, 93, 2, 4, 0, 94, 2, 4, 0, 95, 2, 74, 0, 96, 2, + 74, 0, 97, 2, 80, 0, 41, 0, 27, 0, 31, 0, 39, 0, 75, 0, 71, 0,251, 1, 12, 0, 98, 2, 36, 0, 80, 0, 38, 0, 55, 2, + 66, 0, 16, 2, 81, 0, 99, 2, 82, 0,100, 2, 83, 0,101, 2, 84, 0,102, 2, 85, 0,103, 2, 86, 0,104, 2, 87, 0,105, 2, + 88, 0,106, 2, 80, 0,107, 2, 89, 0,108, 2, 90, 0,109, 2, 91, 0,110, 2, 91, 0,111, 2, 91, 0,112, 2, 4, 0, 54, 0, + 4, 0,113, 2, 4, 0,114, 2, 4, 0,115, 2, 4, 0,116, 2, 2, 0,171, 0, 2, 0,117, 2, 7, 0, 64, 1, 7, 0,169, 0, + 7, 0, 65, 1, 7, 0,118, 2, 4, 0, 57, 2, 2, 0,119, 2, 2, 0, 19, 0, 2, 0,120, 2, 2, 0,121, 2, 2, 0, 18, 2, + 2, 0,122, 2, 92, 0,123, 2, 93, 0,124, 2, 83, 0, 8, 0, 9, 0,125, 2, 7, 0,126, 2, 4, 0,127, 2, 0, 0, 19, 0, + 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 81, 0, 7, 0, 4, 0,131, 2, 4, 0,132, 2, 4, 0,133, 2, + 4, 0,134, 2, 2, 0, 33, 2, 0, 0,135, 2, 0, 0, 19, 0, 85, 0, 5, 0, 4, 0,131, 2, 4, 0,132, 2, 0, 0,136, 2, + 0, 0,137, 2, 2, 0, 19, 0, 94, 0, 2, 0, 4, 0,138, 2, 7, 0, 25, 2, 86, 0, 3, 0, 94, 0,139, 2, 4, 0,140, 2, + 4, 0, 19, 0, 84, 0, 6, 0, 7, 0,141, 2, 2, 0,142, 2, 2, 0, 33, 2, 0, 0, 19, 0, 0, 0,137, 2, 0, 0, 59, 2, + 87, 0, 4, 0, 0, 0,233, 0, 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 95, 0, 6, 0, 47, 0,125, 2, 0, 0, 19, 0, + 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, 2, 0,130, 2, 96, 0, 1, 0, 7, 0,143, 2, 97, 0, 5, 0, 0, 0,233, 0, + 0, 0,179, 0, 0, 0,180, 0, 0, 0,181, 0, 4, 0, 37, 0, 88, 0, 1, 0, 7, 0,144, 2, 89, 0, 2, 0, 4, 0,145, 2, + 4, 0, 17, 0, 82, 0, 7, 0, 7, 0,126, 2, 47, 0,125, 2, 0, 0, 19, 0, 0, 0,128, 2, 2, 0, 69, 1, 2, 0,129, 2, + 2, 0,130, 2, 98, 0, 1, 0, 7, 0,146, 2, 99, 0, 1, 0, 4, 0,147, 2,100, 0, 1, 0, 0, 0,148, 2,101, 0, 1, 0, + 7, 0,126, 2,102, 0, 3, 0, 4, 0,149, 2, 0, 0, 92, 0, 7, 0,150, 2,103, 0, 4, 0, 7, 0,233, 0, 7, 0,179, 0, + 7, 0,180, 0, 7, 0,181, 0,104, 0, 1, 0,103, 0,127, 2,105, 0, 5, 0, 4, 0,151, 2, 4, 0,152, 2, 0, 0, 19, 0, + 0, 0, 33, 2, 0, 0, 59, 2,106, 0, 2, 0, 4, 0,153, 2, 4, 0,152, 2,107, 0, 10, 0,107, 0, 0, 0,107, 0, 1, 0, +105, 0,154, 2,104, 0,155, 2,106, 0,156, 2, 4, 0, 54, 0, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 37, 0, 84, 0,157, 2, + 92, 0, 14, 0, 12, 0,158, 2, 84, 0,157, 2, 0, 0,159, 2, 0, 0,160, 2, 0, 0,161, 2, 0, 0,162, 2, 0, 0,163, 2, + 0, 0,164, 2, 0, 0,165, 2, 0, 0, 19, 0, 91, 0,110, 2, 91, 0,112, 2, 2, 0,166, 2, 0, 0,167, 2, 93, 0, 8, 0, + 4, 0,168, 2, 4, 0,169, 2, 81, 0,170, 2, 85, 0,171, 2, 4, 0,114, 2, 4, 0,113, 2, 4, 0, 54, 0, 4, 0, 37, 0, +108, 0, 9, 0,108, 0, 0, 0,108, 0, 1, 0, 4, 0, 17, 0, 4, 0, 69, 1, 4, 0,172, 2, 4, 0, 37, 0, 0, 0, 20, 0, + 46, 0,129, 0, 0, 0,173, 2,109, 0, 7, 0,108, 0,174, 2, 2, 0,175, 2, 2, 0,158, 2, 2, 0,176, 2, 2, 0, 90, 0, + 9, 0,177, 2, 9, 0,178, 2,110, 0, 3, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0, 20, 0,111, 0, 5, 0,108, 0,174, 2, + 32, 0,161, 0, 0, 0, 20, 0, 2, 0,179, 2, 0, 0,180, 2,112, 0, 5, 0,108, 0,174, 2, 7, 0, 88, 0, 7, 0,181, 2, + 4, 0,182, 2, 4, 0,183, 2,113, 0, 5, 0,108, 0,174, 2, 32, 0,184, 2, 0, 0, 72, 0, 4, 0, 69, 1, 4, 0, 19, 0, +114, 0, 13, 0,108, 0,174, 2, 32, 0,185, 2, 32, 0,186, 2, 32, 0,187, 2, 32, 0,188, 2, 7, 0,189, 2, 7, 0,190, 2, + 7, 0,181, 2, 7, 0,191, 2, 4, 0,192, 2, 4, 0,193, 2, 4, 0, 90, 0, 4, 0,194, 2,115, 0, 5, 0,108, 0,174, 2, + 2, 0,195, 2, 2, 0, 19, 0, 7, 0,196, 2, 32, 0,197, 2,116, 0, 3, 0,108, 0,174, 2, 7, 0,198, 2, 4, 0, 90, 0, +117, 0, 10, 0,108, 0,174, 2, 7, 0,199, 2, 4, 0,200, 2, 4, 0, 37, 0, 2, 0, 90, 0, 2, 0,201, 2, 2, 0,202, 2, + 2, 0,203, 2, 7, 0,204, 2, 0, 0,205, 2,118, 0, 3, 0,108, 0,174, 2, 7, 0, 37, 0, 4, 0, 17, 0,119, 0, 6, 0, +108, 0,174, 2,120, 0,206, 2,121, 0,207, 2,122, 0,208, 2, 7, 0,209, 2, 4, 0, 17, 0,123, 0, 11, 0,108, 0,174, 2, + 52, 0,210, 2, 7, 0,211, 2, 4, 0,212, 2, 0, 0,205, 2, 7, 0,213, 2, 4, 0,214, 2, 32, 0,215, 2, 0, 0,216, 2, + 4, 0,217, 2, 4, 0, 37, 0,124, 0, 12, 0,108, 0,174, 2, 32, 0,218, 2, 47, 0,219, 2, 4, 0, 90, 0, 4, 0,220, 2, + 7, 0,221, 2, 7, 0,222, 2, 7, 0,223, 2, 7, 0,224, 2, 0, 0,216, 2, 4, 0,217, 2, 4, 0, 37, 0,125, 0, 3, 0, +108, 0,174, 2, 7, 0,225, 2, 4, 0,226, 2,126, 0, 5, 0,108, 0,174, 2, 7, 0,227, 2, 0, 0,205, 2, 2, 0, 19, 0, + 2, 0,228, 2,127, 0, 8, 0,108, 0,174, 2, 32, 0,161, 0, 7, 0,227, 2, 7, 0,248, 0, 7, 0,106, 0, 0, 0,205, 2, + 2, 0, 19, 0, 2, 0, 17, 0,128, 0, 21, 0,108, 0,174, 2, 32, 0,229, 2, 0, 0,205, 2, 52, 0,210, 2, 32, 0,215, 2, + 2, 0, 19, 0, 2, 0, 37, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, 7, 0,233, 2, 7, 0,234, 2, + 7, 0,235, 2, 7, 0,236, 2, 4, 0,214, 2, 4, 0,217, 2, 0, 0,216, 2, 7, 0,237, 2, 7, 0,238, 2, 7, 0, 43, 0, +129, 0, 7, 0,108, 0,174, 2, 2, 0,239, 2, 2, 0,240, 2, 4, 0, 70, 0, 32, 0,161, 0, 7, 0,241, 2, 0, 0,205, 2, +130, 0, 10, 0,108, 0,174, 2, 32, 0,161, 0, 0, 0,242, 2, 7, 0,243, 2, 7, 0,244, 2, 7, 0,236, 2, 4, 0,245, 2, + 4, 0,246, 2, 7, 0,247, 2, 0, 0, 20, 0,131, 0, 1, 0,108, 0,174, 2,132, 0, 7, 0,108, 0,174, 2, 46, 0,129, 0, +133, 0,248, 2,134, 0,249, 2,135, 0,250, 2,136, 0,251, 2, 12, 0,252, 2,137, 0, 13, 0,108, 0,174, 2, 84, 0,253, 2, + 84, 0,254, 2, 84, 0,255, 2, 84, 0, 0, 3, 84, 0, 1, 3, 84, 0, 2, 3, 81, 0, 3, 3, 4, 0, 4, 3, 4, 0, 5, 3, + 7, 0,209, 2, 7, 0, 37, 0,138, 0, 6, 3,139, 0, 7, 0,108, 0,174, 2, 84, 0,253, 2, 84, 0, 7, 3,140, 0, 8, 3, +141, 0, 6, 3, 4, 0, 9, 3, 4, 0, 4, 3,142, 0, 4, 0,108, 0,174, 2, 32, 0,161, 0, 4, 0, 10, 3, 4, 0, 37, 0, +143, 0, 2, 0, 4, 0, 11, 3, 7, 0, 25, 2,144, 0, 2, 0, 4, 0,120, 0, 4, 0, 12, 3,145, 0, 24, 0,108, 0,174, 2, + 32, 0,161, 0, 0, 0,205, 2, 2, 0, 13, 3, 2, 0, 19, 0, 2, 0, 69, 1, 2, 0, 37, 0,143, 0, 14, 3, 4, 0, 15, 3, + 7, 0, 16, 3, 4, 0, 54, 0, 4, 0, 17, 3,144, 0, 18, 3,143, 0, 19, 3, 4, 0, 20, 3, 4, 0, 21, 3, 4, 0, 22, 3, + 4, 0, 12, 3, 7, 0, 23, 3, 7, 0, 24, 3, 7, 0, 25, 3, 7, 0, 26, 3, 7, 0, 27, 3, 9, 0, 28, 3,146, 0, 8, 0, +108, 0,174, 2,147, 0, 29, 3,140, 0, 8, 3, 4, 0, 30, 3, 4, 0, 31, 3, 4, 0, 32, 3, 2, 0, 19, 0, 2, 0, 57, 0, +148, 0, 8, 0,108, 0,174, 2, 32, 0, 45, 0, 2, 0,252, 0, 2, 0, 19, 0, 2, 0,195, 2, 2, 0, 57, 0, 7, 0, 33, 3, + 7, 0, 34, 3,149, 0, 5, 0,108, 0,174, 2, 4, 0, 35, 3, 2, 0, 19, 0, 2, 0, 36, 3, 7, 0, 37, 3,150, 0, 8, 0, +108, 0,174, 2, 0, 0, 38, 3, 0, 0, 39, 3, 0, 0,164, 2, 0, 0, 40, 3, 0, 0, 41, 3, 0, 0, 90, 0, 0, 0, 59, 2, +151, 0, 3, 0,108, 0,174, 2,152, 0, 42, 3,136, 0,251, 2,153, 0, 10, 0,108, 0,174, 2, 32, 0, 43, 3, 32, 0, 44, 3, + 0, 0, 45, 3, 7, 0, 46, 3, 2, 0, 47, 3, 2, 0, 48, 3, 0, 0, 49, 3, 0, 0, 50, 3, 0, 0,180, 2,154, 0, 9, 0, +108, 0,174, 2, 32, 0, 51, 3, 0, 0, 45, 3, 7, 0, 52, 3, 7, 0, 53, 3, 0, 0, 69, 1, 0, 0,195, 2, 0, 0, 54, 3, + 0, 0, 37, 0,155, 0, 1, 0,108, 0,174, 2,156, 0, 8, 0,108, 0,174, 2, 0, 0,205, 2, 7, 0,120, 0, 7, 0, 55, 3, + 7, 0, 56, 3, 7, 0, 57, 3, 7, 0, 58, 3, 4, 0, 19, 0,157, 0, 9, 0,108, 0,174, 2, 32, 0, 59, 3, 4, 0, 60, 3, + 4, 0, 61, 3, 4, 0, 62, 3, 7, 0, 63, 3, 7, 0, 64, 3, 2, 0,195, 2, 2, 0, 19, 0,158, 0, 28, 0, 27, 0, 31, 0, + 2, 0, 34, 2, 2, 0, 35, 2, 2, 0, 65, 3, 2, 0, 19, 0, 2, 0, 66, 3, 2, 0, 67, 3, 2, 0, 68, 3, 2, 0, 70, 0, + 0, 0, 69, 3, 0, 0, 70, 3, 0, 0, 71, 3, 0, 0, 17, 0, 4, 0, 37, 0, 7, 0, 72, 3, 7, 0, 73, 3, 7, 0, 74, 3, + 7, 0, 75, 3, 7, 0, 76, 3, 7, 0, 77, 3, 34, 0, 78, 3, 36, 0, 80, 0, 38, 0, 55, 2, 86, 0,104, 2, 0, 0, 72, 0, + 7, 0, 79, 3, 7, 0, 80, 3,158, 0, 81, 3,159, 0, 3, 0,159, 0, 0, 0,159, 0, 1, 0, 0, 0, 20, 0, 71, 0, 3, 0, + 7, 0, 82, 3, 4, 0, 19, 0, 4, 0, 37, 0, 32, 0,126, 0, 27, 0, 31, 0, 39, 0, 75, 0,160, 0, 83, 3, 2, 0, 17, 0, + 2, 0, 84, 3, 4, 0, 85, 3, 4, 0, 86, 3, 4, 0, 87, 3, 0, 0, 88, 3, 32, 0, 38, 0, 32, 0, 89, 3, 32, 0, 90, 3, + 32, 0, 91, 3, 32, 0, 92, 3, 36, 0, 80, 0, 77, 0, 54, 2, 71, 0,251, 1,161, 0, 93, 3,161, 0, 94, 3,162, 0, 95, 3, + 9, 0, 2, 0,163, 0, 96, 3,164, 0, 97, 3,165, 0, 98, 3, 12, 0, 99, 3, 12, 0, 98, 2, 12, 0, 14, 2, 12, 0,100, 3, + 12, 0,101, 3, 4, 0, 69, 1, 4, 0,102, 3, 66, 0, 16, 2, 0, 0,103, 3, 4, 0, 18, 2, 4, 0,104, 3, 7, 0, 64, 1, + 7, 0,105, 3, 7, 0,106, 3, 7, 0,169, 0, 7, 0,107, 3, 7, 0, 65, 1, 7, 0,108, 3, 7, 0, 4, 2, 7, 0,109, 3, + 7, 0,110, 3, 7, 0,111, 3, 7, 0,112, 3, 7, 0,113, 3, 7, 0,114, 3, 7, 0,243, 2, 7, 0,115, 3, 7, 0,237, 0, + 4, 0,116, 3, 2, 0, 19, 0, 2, 0,117, 3, 2, 0,118, 3, 2, 0,119, 3, 2, 0,120, 3, 2, 0,121, 3, 2, 0,122, 3, + 2, 0,123, 3, 2, 0,124, 3, 2, 0,125, 3, 2, 0,126, 3, 2, 0,127, 3, 4, 0,128, 3, 4, 0,129, 3, 4, 0,130, 3, + 4, 0,131, 3, 7, 0,132, 3, 7, 0, 90, 2, 7, 0,133, 3, 7, 0,134, 3, 7, 0,135, 3, 7, 0,136, 3, 7, 0,137, 3, + 7, 0,212, 0, 7, 0,138, 3, 7, 0,139, 3, 7, 0,140, 3, 7, 0,141, 3, 2, 0,142, 3, 0, 0,143, 3, 0, 0,144, 3, + 0, 0,145, 3, 0, 0,146, 3, 7, 0,147, 3, 7, 0,148, 3, 12, 0,149, 3, 12, 0,150, 3, 12, 0,151, 3, 12, 0,152, 3, + 7, 0,153, 3, 2, 0,145, 2, 2, 0,154, 3, 7, 0,127, 2, 4, 0,155, 3, 4, 0,156, 3,166, 0,157, 3, 2, 0,158, 3, + 2, 0,244, 0, 7, 0,159, 3, 12, 0,160, 3, 12, 0,161, 3, 12, 0,162, 3, 12, 0,163, 3,167, 0, 61, 1,168, 0,164, 3, + 67, 0,165, 3, 2, 0,166, 3, 2, 0,167, 3, 2, 0,168, 3, 2, 0,169, 3, 7, 0,119, 2, 2, 0,170, 3, 2, 0,171, 3, +152, 0,172, 3,140, 0,173, 3,140, 0,174, 3, 4, 0,175, 3, 4, 0,176, 3, 4, 0,177, 3, 4, 0, 70, 0, 12, 0,178, 3, + 12, 0,179, 3, 12, 0,180, 3,169, 0, 14, 0,169, 0, 0, 0,169, 0, 1, 0, 32, 0, 38, 0, 7, 0,243, 2, 7, 0, 66, 1, + 7, 0,244, 2, 7, 0,236, 2, 0, 0, 20, 0, 4, 0,245, 2, 4, 0,246, 2, 4, 0,181, 3, 2, 0, 17, 0, 2, 0,182, 3, + 7, 0,247, 2,170, 0, 12, 0,170, 0, 0, 0,170, 0, 1, 0, 32, 0, 45, 0, 4, 0,183, 3, 4, 0,145, 2, 4, 0,184, 3, + 4, 0, 17, 0, 4, 0,185, 3, 7, 0, 66, 1, 7, 0,186, 3, 7, 0,187, 3, 7, 0,143, 2,167, 0, 40, 0, 4, 0, 19, 0, + 2, 0,188, 3, 2, 0,189, 3, 2, 0,236, 2, 2, 0,190, 3, 2, 0,191, 3, 2, 0,192, 3, 2, 0,193, 3, 2, 0,194, 3, + 7, 0,195, 3, 7, 0,196, 3, 7, 0,197, 3, 7, 0,198, 3, 7, 0,199, 3, 7, 0,200, 3, 7, 0,201, 3, 7, 0,202, 3, + 7, 0,203, 3, 7, 0,204, 3, 7, 0,205, 3, 7, 0,206, 3, 7, 0,207, 3, 7, 0,208, 3, 7, 0,209, 3, 7, 0,210, 3, + 7, 0,211, 3, 7, 0,212, 3, 7, 0,213, 3, 7, 0,214, 3, 7, 0,215, 3, 7, 0,216, 3, 7, 0,217, 3, 7, 0,218, 3, + 7, 0,219, 3, 7, 0,220, 3, 7, 0,221, 3, 52, 0,162, 0,171, 0,222, 3, 7, 0,223, 3, 4, 0,183, 2,172, 0, 5, 0, + 67, 0,229, 1, 7, 0,224, 3, 7, 0,225, 3, 2, 0, 19, 0, 2, 0,226, 3,173, 0, 9, 0,173, 0, 0, 0,173, 0, 1, 0, + 4, 0,227, 3, 4, 0,228, 3, 4, 0,229, 3, 4, 0, 19, 0, 4, 0,230, 3, 9, 0,231, 3, 9, 0,232, 3,136, 0, 19, 0, +136, 0, 0, 0,136, 0, 1, 0, 4, 0, 19, 0, 4, 0,233, 3, 4, 0,234, 3, 4, 0,235, 3, 4, 0,236, 3, 4, 0,237, 3, + 4, 0,238, 3, 4, 0,228, 3, 4, 0,145, 2, 4, 0, 57, 0, 0, 0,239, 3, 0, 0,240, 3, 0, 0,241, 3, 0, 0,242, 3, + 12, 0,243, 3,174, 0,244, 3, 9, 0,245, 3,175, 0, 1, 0, 7, 0, 32, 2,166, 0, 30, 0, 4, 0, 19, 0, 7, 0,246, 3, + 7, 0,247, 3, 7, 0,248, 3, 4, 0,249, 3, 4, 0,250, 3, 4, 0,251, 3, 4, 0,252, 3, 7, 0,253, 3, 7, 0,254, 3, + 7, 0,255, 3, 7, 0, 0, 4, 7, 0, 1, 4, 7, 0, 2, 4, 7, 0, 3, 4, 7, 0, 4, 4, 7, 0, 5, 4, 7, 0, 6, 4, + 7, 0, 7, 4, 7, 0, 8, 4, 7, 0, 9, 4, 7, 0, 10, 4, 7, 0, 11, 4, 7, 0, 12, 4, 7, 0, 13, 4, 7, 0, 14, 4, + 4, 0, 15, 4, 4, 0, 16, 4, 7, 0, 17, 4, 7, 0,138, 3,168, 0, 54, 0, 4, 0,228, 3, 4, 0, 18, 4,176, 0, 19, 4, +177, 0, 20, 4, 0, 0, 37, 0, 0, 0, 21, 4, 2, 0, 22, 4, 7, 0, 23, 4, 0, 0, 24, 4, 7, 0, 25, 4, 7, 0, 26, 4, + 7, 0, 27, 4, 7, 0, 28, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0, 31, 4, 7, 0, 32, 4, 7, 0, 33, 4, 2, 0, 34, 4, + 0, 0, 35, 4, 2, 0, 36, 4, 7, 0, 37, 4, 7, 0, 38, 4, 0, 0, 39, 4, 4, 0,121, 0, 4, 0, 40, 4, 4, 0, 41, 4, + 2, 0, 42, 4, 2, 0, 43, 4,175, 0, 44, 4, 4, 0, 45, 4, 4, 0, 82, 0, 7, 0, 46, 4, 7, 0, 47, 4, 7, 0, 48, 4, + 7, 0, 49, 4, 2, 0, 50, 4, 2, 0, 51, 4, 2, 0, 52, 4, 2, 0, 53, 4, 2, 0, 54, 4, 2, 0, 55, 4, 2, 0, 56, 4, + 2, 0, 57, 4,178, 0, 58, 4, 7, 0, 59, 4, 7, 0, 60, 4,136, 0, 61, 4, 12, 0,252, 2,172, 0, 62, 4, 7, 0, 63, 4, + 7, 0, 64, 4, 7, 0, 65, 4, 0, 0, 66, 4,152, 0, 51, 0,151, 0, 67, 4, 2, 0, 17, 0, 2, 0, 68, 4, 2, 0, 69, 4, + 2, 0, 70, 4, 7, 0, 71, 4, 2, 0, 72, 4, 2, 0, 73, 4, 7, 0, 74, 4, 2, 0, 75, 4, 2, 0, 76, 4, 7, 0, 77, 4, + 7, 0, 78, 4, 7, 0, 79, 4, 7, 0, 80, 4, 7, 0, 81, 4, 4, 0, 82, 4, 4, 0, 83, 4, 7, 0, 84, 4, 4, 0, 85, 4, + 7, 0, 86, 4, 7, 0, 87, 4, 7, 0, 88, 4, 80, 0, 89, 4, 80, 0, 90, 4, 80, 0, 91, 4, 0, 0, 92, 4, 7, 0, 93, 4, + 7, 0, 94, 4, 36, 0, 80, 0, 2, 0, 95, 4, 0, 0, 96, 4, 0, 0, 97, 4, 7, 0, 98, 4, 4, 0, 99, 4, 7, 0,100, 4, + 7, 0,101, 4, 4, 0,102, 4, 4, 0, 19, 0, 7, 0,103, 4, 7, 0,104, 4, 7, 0,105, 4, 84, 0,106, 4, 7, 0,107, 4, + 7, 0,108, 4, 7, 0,109, 4, 7, 0,110, 4, 7, 0,111, 4, 7, 0,112, 4, 7, 0,113, 4, 4, 0,114, 4,179, 0, 78, 0, + 27, 0, 31, 0, 39, 0, 75, 0, 2, 0,172, 0, 2, 0, 70, 1, 2, 0,104, 1, 2, 0,115, 4, 7, 0,116, 4, 7, 0,117, 4, + 7, 0,118, 4, 7, 0,119, 4, 7, 0,120, 4, 7, 0,121, 4, 7, 0,122, 4, 7, 0,123, 4, 7, 0,150, 1, 7, 0,152, 1, + 7, 0,151, 1, 7, 0,124, 4, 4, 0,125, 4, 7, 0,126, 4, 7, 0,127, 4, 7, 0,128, 4, 7, 0,129, 4, 7, 0,130, 4, + 7, 0,131, 4, 7, 0,132, 4, 2, 0,133, 4, 2, 0, 69, 1, 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, + 2, 0,138, 4, 2, 0,139, 4, 7, 0,140, 4, 7, 0,141, 4, 7, 0,142, 4, 7, 0,143, 4, 7, 0,144, 4, 7, 0,145, 4, + 7, 0,146, 4, 7, 0,147, 4, 7, 0,148, 4, 7, 0,149, 4, 7, 0,150, 4, 7, 0,151, 4, 2, 0,152, 4, 2, 0,153, 4, + 2, 0,154, 4, 2, 0,155, 4, 7, 0,156, 4, 7, 0,157, 4, 7, 0,158, 4, 7, 0,159, 4, 2, 0,160, 4, 2, 0,161, 4, + 2, 0,162, 4, 2, 0,163, 4, 7, 0,164, 4, 7, 0,165, 4, 7, 0,166, 4, 7, 0,167, 4, 7, 0,168, 4, 7, 0,169, 4, + 7, 0,170, 4, 2, 0,171, 4, 2, 0,172, 4, 2, 0,173, 4, 2, 0,174, 4, 2, 0,175, 4, 2, 0, 19, 0, 7, 0,176, 4, + 7, 0,177, 4, 36, 0, 80, 0, 51, 0,122, 1, 2, 0,123, 1, 2, 0,178, 4, 30, 0,148, 0,180, 0, 8, 0,180, 0, 0, 0, +180, 0, 1, 0, 4, 0,116, 3, 4, 0,179, 4, 4, 0, 19, 0, 2, 0,180, 4, 2, 0,181, 4, 32, 0,161, 0,181, 0, 13, 0, + 9, 0,182, 4, 9, 0,183, 4, 4, 0,184, 4, 4, 0,185, 4, 4, 0,186, 4, 4, 0,187, 4, 4, 0,188, 4, 4, 0,189, 4, + 4, 0,190, 4, 4, 0,191, 4, 4, 0,192, 4, 4, 0, 37, 0, 0, 0,193, 4,182, 0, 5, 0, 9, 0,194, 4, 9, 0,195, 4, + 4, 0,196, 4, 4, 0, 70, 0, 0, 0,197, 4,183, 0, 17, 0, 4, 0,198, 4, 4, 0,199, 4, 4, 0,200, 4, 4, 0,201, 4, + 4, 0,202, 4, 4, 0,203, 4, 4, 0,204, 4, 4, 0,205, 4, 4, 0,206, 4, 4, 0,207, 4, 4, 0,208, 4, 4, 0,209, 4, + 2, 0,210, 4, 2, 0,211, 4, 4, 0,212, 4, 4, 0,213, 4, 4, 0, 43, 0,184, 0, 15, 0, 4, 0, 17, 0, 4, 0,200, 4, + 4, 0,214, 4, 4, 0,215, 4, 4, 0,216, 4, 4, 0,217, 4, 7, 0,218, 4, 4, 0,219, 4, 4, 0, 90, 0, 4, 0,220, 4, + 4, 0,221, 4, 4, 0,222, 4, 4, 0,223, 4, 4, 0,224, 4, 26, 0, 30, 0,185, 0, 7, 0, 4, 0,225, 4, 7, 0,226, 4, + 7, 0,227, 4, 7, 0,228, 4, 4, 0,229, 4, 2, 0, 19, 0, 2, 0, 37, 0,186, 0, 11, 0,186, 0, 0, 0,186, 0, 1, 0, + 0, 0, 20, 0, 66, 0,230, 4, 67, 0,231, 4, 4, 0,116, 3, 4, 0,232, 4, 4, 0,233, 4, 4, 0, 37, 0, 4, 0,234, 4, + 4, 0,235, 4,187, 0,111, 0,181, 0,236, 4,182, 0,237, 4,183, 0,238, 4,184, 0,239, 4, 4, 0, 9, 3, 4, 0,121, 0, + 4, 0, 40, 4, 7, 0,240, 4, 4, 0,241, 4, 4, 0,242, 4, 4, 0,243, 4, 4, 0,244, 4, 2, 0, 19, 0, 2, 0,245, 4, + 7, 0,246, 4, 7, 0,247, 4, 7, 0,248, 4, 7, 0,249, 4, 7, 0,250, 4, 2, 0,251, 4, 2, 0,252, 4, 2, 0,253, 4, + 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 0, 5, 2, 0, 1, 5, 2, 0, 2, 5, 2, 0, 3, 5, 2, 0, 91, 1, + 2, 0,106, 0, 2, 0, 4, 5, 2, 0, 5, 5, 2, 0, 6, 5, 2, 0, 7, 5, 2, 0, 8, 5, 2, 0, 9, 5, 2, 0, 10, 5, + 2, 0, 11, 5, 2, 0, 12, 5, 2, 0, 92, 1, 2, 0, 13, 5, 2, 0, 14, 5, 2, 0, 15, 5, 2, 0, 16, 5, 4, 0, 17, 5, + 4, 0, 69, 1, 4, 0, 18, 5, 2, 0, 19, 5, 2, 0, 20, 5, 2, 0, 21, 5, 2, 0,248, 1, 2, 0, 22, 5, 2, 0, 23, 5, + 2, 0, 24, 5, 2, 0, 25, 5, 24, 0, 26, 5, 24, 0, 27, 5, 23, 0, 28, 5, 12, 0, 29, 5, 2, 0, 30, 5, 2, 0, 31, 5, + 7, 0, 32, 5, 7, 0, 33, 5, 7, 0, 34, 5, 7, 0, 35, 5, 4, 0, 36, 5, 7, 0, 37, 5, 7, 0, 38, 5, 7, 0, 39, 5, + 7, 0, 40, 5, 2, 0, 41, 5, 2, 0, 42, 5, 2, 0, 43, 5, 2, 0, 44, 5, 2, 0, 45, 5, 2, 0, 46, 5, 7, 0, 47, 5, + 7, 0, 48, 5, 7, 0, 49, 5, 0, 0, 50, 5, 0, 0, 51, 5, 4, 0, 52, 5, 2, 0, 53, 5, 2, 0,226, 1, 0, 0, 54, 5, + 7, 0, 55, 5, 7, 0, 56, 5, 0, 0, 57, 5, 0, 0, 58, 5, 0, 0, 59, 5, 0, 0, 60, 5, 4, 0, 61, 5, 2, 0, 62, 5, + 2, 0, 63, 5, 7, 0, 64, 5, 7, 0, 65, 5, 2, 0, 66, 5, 2, 0, 67, 5, 7, 0, 68, 5, 2, 0, 69, 5, 2, 0, 70, 5, + 4, 0, 71, 5, 2, 0, 72, 5, 2, 0, 73, 5, 2, 0, 74, 5, 2, 0, 75, 5, 7, 0, 76, 5, 7, 0, 70, 0, 42, 0, 77, 5, + 0, 0, 78, 5,188, 0, 9, 0,188, 0, 0, 0,188, 0, 1, 0, 0, 0, 20, 0, 2, 0, 79, 5, 2, 0, 80, 5, 2, 0, 81, 5, + 2, 0, 43, 0, 7, 0, 82, 5, 7, 0, 70, 0,189, 0, 7, 0, 2, 0,200, 2, 2, 0, 69, 1, 2, 0, 64, 3, 2, 0, 83, 5, + 7, 0, 84, 5, 7, 0, 70, 0, 42, 0, 85, 5,190, 0, 5, 0, 7, 0, 86, 5, 0, 0, 17, 0, 0, 0, 43, 0, 0, 0, 70, 0, + 0, 0,226, 1,191, 0, 28, 0, 7, 0,131, 4, 7, 0,132, 4, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0, 87, 5, 2, 0,178, 4, + 2, 0,134, 4, 2, 0,135, 4, 2, 0,136, 4, 2, 0,137, 4, 2, 0,138, 4, 2, 0,139, 4,190, 0, 88, 5, 2, 0,251, 4, + 2, 0,252, 4, 2, 0,253, 4, 2, 0,254, 4, 2, 0,243, 0, 2, 0,255, 4, 2, 0, 89, 5, 2, 0, 0, 5,189, 0, 90, 5, + 2, 0, 91, 5, 2, 0, 2, 5, 2, 0, 5, 5, 2, 0, 6, 5, 7, 0, 92, 5, 7, 0, 43, 0,192, 0, 6, 0,192, 0, 0, 0, +192, 0, 1, 0, 4, 0,227, 3, 0, 0,239, 3, 4, 0, 19, 0, 32, 0, 93, 5,193, 0, 6, 0,194, 0, 94, 5, 4, 0, 95, 5, + 4, 0, 96, 5, 9, 0, 97, 5, 0, 0, 98, 5, 4, 0, 90, 0,195, 0, 8, 0,193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, + 2, 0,100, 5, 2, 0,101, 5, 2, 0,102, 5, 4, 0, 43, 0, 9, 0,103, 5,196, 0, 6, 0, 2, 0,106, 0, 2, 0,233, 3, + 2, 0,104, 5, 2, 0,194, 2, 4, 0, 19, 0, 7, 0,211, 2,197, 0, 14, 0, 2, 0, 19, 0, 2, 0,105, 5, 2, 0,106, 5, + 2, 0,107, 5,196, 0,108, 5, 9, 0,103, 5, 7, 0,109, 5, 7, 0, 57, 0, 4, 0,110, 5, 4, 0,111, 5, 4, 0,112, 5, + 4, 0,113, 5, 46, 0,129, 0, 32, 0,161, 0,198, 0, 4, 0,198, 0, 0, 0,198, 0, 1, 0, 0, 0,114, 5, 7, 0,115, 5, +199, 0, 6, 0,193, 0, 99, 5, 7, 0,116, 5, 4, 0, 90, 0, 0, 0,117, 5, 0, 0,118, 5, 0, 0,180, 2,200, 0, 7, 0, +193, 0, 99, 5, 2, 0, 19, 0, 2, 0, 37, 0, 4, 0, 36, 0, 4, 0,119, 5, 86, 0,120, 5, 9, 0,103, 5,201, 0, 74, 0, +200, 0,121, 5,200, 0,122, 5,199, 0, 83, 3, 7, 0,123, 5, 2, 0,124, 5, 2, 0,125, 5, 7, 0,126, 5, 7, 0,127, 5, + 2, 0,233, 3, 2, 0,128, 5, 7, 0,129, 5, 7, 0,130, 5, 7, 0,131, 5, 2, 0,132, 5, 2, 0,110, 5, 2, 0,133, 5, + 2, 0,134, 5, 2, 0,135, 5, 2, 0,136, 5, 7, 0,137, 5, 7, 0,138, 5, 7, 0,139, 5, 2, 0,140, 5, 2, 0,141, 5, + 2, 0,142, 5, 2, 0,143, 5, 2, 0,144, 5, 2, 0,145, 5, 2, 0,146, 5,195, 0,147, 5,197, 0,148, 5, 7, 0,149, 5, + 7, 0,150, 5, 7, 0,151, 5, 2, 0,152, 5, 2, 0,153, 5, 0, 0,154, 5, 0, 0,155, 5, 0, 0,156, 5, 0, 0,157, 5, + 0, 0,158, 5, 0, 0,159, 5, 2, 0,160, 5, 7, 0,161, 5, 7, 0,162, 5, 7, 0,163, 5, 7, 0,164, 5, 7, 0,165, 5, + 7, 0,166, 5, 7, 0,167, 5, 7, 0,168, 5, 7, 0,169, 5, 7, 0,170, 5, 2, 0,171, 5, 0, 0,172, 5, 0, 0,173, 5, + 0, 0,174, 5, 0, 0,175, 5, 32, 0,176, 5, 0, 0,177, 5, 0, 0,178, 5, 0, 0,179, 5, 0, 0,180, 5, 0, 0,181, 5, + 0, 0,182, 5, 0, 0,183, 5, 0, 0,184, 5, 2, 0,185, 5, 2, 0,186, 5, 2, 0,187, 5, 2, 0,188, 5, 2, 0,189, 5, + 4, 0,190, 5, 4, 0,191, 5,202, 0, 8, 0, 4, 0,192, 5, 4, 0,193, 5, 4, 0,194, 5, 4, 0,195, 5, 4, 0,196, 5, + 4, 0,197, 5, 4, 0, 54, 0, 4, 0,114, 2,203, 0, 3, 0, 7, 0,198, 5, 2, 0,199, 5, 2, 0, 19, 0,204, 0, 4, 0, + 7, 0,200, 5, 4, 0, 19, 0, 4, 0,201, 5, 4, 0, 57, 0, 46, 0, 42, 0, 27, 0, 31, 0, 39, 0, 75, 0, 32, 0, 93, 5, +179, 0,202, 5, 46, 0,203, 5, 47, 0,235, 0, 12, 0,204, 5,180, 0,205, 5, 32, 0,206, 5, 7, 0,207, 5, 7, 0,208, 5, + 7, 0,209, 5, 7, 0,210, 5, 4, 0,116, 3, 4, 0,211, 5, 4, 0, 43, 0, 2, 0, 19, 0, 2, 0, 63, 1, 60, 0, 58, 1, +205, 0,212, 5,201, 0,213, 5,206, 0,214, 5,187, 0,179, 0,185, 0,215, 5, 12, 0,100, 0, 12, 0,216, 5, 9, 0,217, 5, + 9, 0,218, 5, 9, 0,219, 5,207, 0,220, 5, 2, 0,221, 5, 2, 0,222, 5, 2, 0,244, 0, 2, 0,223, 5, 4, 0,224, 5, + 4, 0,225, 5, 12, 0,226, 5,190, 0, 88, 5,191, 0,227, 5,203, 0,228, 5,163, 0, 96, 3,204, 0,229, 5,208, 0, 11, 0, +208, 0, 0, 0,208, 0, 1, 0, 47, 0,235, 0, 45, 0, 57, 1, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0,106, 0, 7, 0,230, 5, + 2, 0,231, 5, 2, 0, 19, 0, 7, 0, 70, 0,209, 0, 39, 0, 7, 0,232, 5, 7, 0,233, 5, 7, 0,234, 5, 7, 0,235, 5, + 7, 0,236, 5, 7, 0,237, 5, 7, 0,238, 5, 7, 0,239, 5, 7, 0,240, 5, 7, 0, 76, 1, 7, 0,241, 5, 7, 0,242, 5, + 7, 0,243, 5, 7, 0,244, 5, 7, 0,168, 0, 2, 0,245, 5, 2, 0,246, 5, 2, 0,247, 5, 2, 0, 37, 0, 2, 0,248, 5, + 2, 0,249, 5, 2, 0,250, 5, 2, 0,231, 5, 7, 0,251, 5, 7, 0,252, 5, 71, 0,253, 5,163, 0, 96, 3,209, 0,254, 5, +210, 0,255, 5,211, 0, 0, 6,212, 0, 1, 6,213, 0, 2, 6,214, 0, 3, 6, 7, 0, 4, 6, 2, 0, 5, 6, 2, 0, 6, 6, + 7, 0, 7, 6, 7, 0, 8, 6, 7, 0, 9, 6,215, 0, 55, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 7, 0,240, 5, 7, 0, 76, 1, 7, 0, 43, 0, 4, 0, 14, 6, 2, 0,250, 5, 2, 0,231, 5, + 32, 0, 93, 5, 32, 0, 15, 6, 12, 0, 16, 6,208, 0, 17, 6,215, 0,254, 5, 0, 0, 18, 6, 4, 0,116, 3, 4, 0,211, 5, + 2, 0, 19, 6, 2, 0, 70, 0, 2, 0, 20, 6, 2, 0, 21, 6, 2, 0,226, 1, 2, 0, 19, 0, 2, 0, 17, 2, 2, 0, 22, 6, + 7, 0,111, 0, 7, 0, 23, 6, 7, 0, 7, 6, 7, 0, 9, 6, 7, 0, 24, 6, 7, 0, 25, 6, 7, 0,168, 0, 7, 0,207, 5, + 2, 0, 26, 6, 2, 0,248, 1, 2, 0, 27, 6, 2, 0, 28, 6, 2, 0, 29, 6, 2, 0, 30, 6, 2, 0, 31, 6, 2, 0, 32, 6, + 2, 0, 33, 6, 2, 0,247, 5, 4, 0, 34, 6, 12, 0, 35, 6, 2, 0, 36, 6, 2, 0,128, 2, 2, 0, 37, 6, 0, 0, 38, 6, + 0, 0, 39, 6, 9, 0, 40, 6,163, 0, 96, 3,217, 0, 24, 0, 24, 0, 36, 0, 24, 0, 64, 0, 23, 0, 41, 6, 23, 0, 42, 6, + 23, 0, 43, 6, 7, 0, 44, 6, 7, 0, 45, 6, 7, 0, 46, 6, 7, 0, 47, 6, 2, 0, 48, 6, 2, 0, 49, 6, 2, 0, 50, 6, + 2, 0, 51, 6, 2, 0, 52, 6, 2, 0, 19, 0, 2, 0, 53, 6, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0, 56, 6, 2, 0, 57, 6, + 2, 0, 21, 6, 7, 0, 58, 6, 4, 0, 59, 6, 4, 0, 60, 6,216, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,218, 0, 8, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,219, 0, 61, 6, 46, 0,129, 0,220, 0, 14, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,221, 0, 63, 6, 12, 0, 64, 6, 2, 0, 69, 1, 2, 0, 65, 6, + 4, 0, 19, 0, 7, 0, 66, 6, 4, 0, 21, 6,222, 0, 20, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,210, 0,255, 5,217, 0, 62, 6, 2, 0, 67, 6, 2, 0, 68, 6, 2, 0, 69, 6, 2, 0, 70, 6, + 2, 0, 53, 6, 2, 0, 71, 6, 0, 0, 19, 0, 0, 0,178, 4, 9, 0, 54, 2, 4, 0, 72, 6, 4, 0, 73, 6, 27, 0, 74, 6, +223, 0, 18, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, + 7, 0, 78, 2, 7, 0, 79, 2, 2, 0, 67, 6, 2, 0, 75, 6, 2, 0, 76, 6, 2, 0, 77, 6, 4, 0, 19, 0, 7, 0, 78, 6, + 4, 0,231, 5, 4, 0, 37, 0,163, 0, 96, 3,224, 0, 15, 0, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 0, 0, 82, 6, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 83, 6, 2, 0, 84, 6, 2, 0,169, 1, 2, 0, 85, 6, 4, 0, 86, 6, 4, 0, 87, 6, + 2, 0, 88, 6, 2, 0, 37, 0, 0, 0, 89, 6,225, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 4, 0, 90, 6,224, 0, 91, 6,226, 0, 92, 6, 12, 0, 93, 6, 12, 0, 94, 6,227, 0, 95, 6,214, 0, 96, 6,228, 0, 97, 6, + 2, 0, 98, 6, 2, 0, 99, 6, 2, 0,100, 6, 2, 0, 70, 0,229, 0, 17, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 12, 0,101, 6,230, 0,102, 6, 0, 0,103, 6,231, 0,104, 6, + 4, 0,105, 6, 4, 0,106, 6, 2, 0, 19, 0, 2, 0,107, 6, 2, 0,108, 6, 2, 0, 37, 0,232, 0, 32, 0,216, 0, 0, 0, +216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 47, 0,219, 2, 45, 0, 57, 1, 63, 0,109, 6, + 2, 0,128, 0, 2, 0,110, 6, 2, 0, 70, 0, 2, 0,111, 6, 4, 0, 19, 0, 2, 0,112, 6, 2, 0,113, 6, 2, 0,114, 6, + 2, 0,226, 1, 0, 0,115, 6, 0, 0,116, 6, 0, 0,117, 6, 0, 0, 21, 6, 7, 0,118, 6, 7, 0, 78, 2, 7, 0, 79, 2, + 7, 0, 78, 6, 7, 0,248, 1, 7, 0,119, 6, 7, 0,120, 6,163, 0, 96, 3,233, 0,121, 6,234, 0,122, 6,235, 0, 11, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 65, 6, 2, 0, 19, 0, + 4, 0, 37, 0,221, 0, 63, 6,217, 0, 62, 6,236, 0, 27, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 42, 0,123, 6, 4, 0,124, 6, 4, 0,125, 6, 2, 0, 90, 0, 2, 0,128, 0, 2, 0,126, 6, + 0, 0,127, 6, 0, 0,128, 6, 4, 0,129, 6, 4, 0,130, 6, 4, 0,131, 6, 4, 0,132, 6, 2, 0,133, 6, 2, 0,134, 6, + 7, 0,135, 6, 23, 0,136, 6, 23, 0,137, 6, 4, 0,138, 6, 4, 0,139, 6, 0, 0,140, 6, 0, 0,141, 6,237, 0, 10, 0, + 27, 0, 31, 0, 9, 0,142, 6, 9, 0,143, 6, 9, 0,144, 6, 9, 0,145, 6, 9, 0,146, 6, 4, 0, 90, 0, 4, 0,147, 6, + 0, 0,148, 6, 0, 0,149, 6,238, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, +237, 0,150, 6, 2, 0, 90, 0, 2, 0,128, 0, 4, 0, 43, 0, 9, 0,151, 6,239, 0, 9, 0,239, 0, 0, 0,239, 0, 1, 0, + 4, 0, 17, 0, 4, 0, 19, 0, 7, 0,152, 6, 4, 0, 23, 0, 4, 0,235, 3, 4, 0,236, 3, 4, 0,124, 0,240, 0, 11, 0, +216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6,217, 0, 62, 6, 12, 0,153, 6, 4, 0,154, 6, + 4, 0, 37, 0, 4, 0, 19, 0, 4, 0,155, 6,241, 0, 25, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, 27, 0,156, 6, 27, 0, 81, 0, 2, 0, 19, 0, 2, 0,128, 0, 7, 0,157, 6, + 9, 0,158, 6, 7, 0, 78, 2, 7, 0, 79, 2, 7, 0, 78, 6, 7, 0, 9, 6, 7, 0,159, 6, 7, 0,160, 6, 60, 0, 58, 1, + 60, 0,161, 6, 4, 0,162, 6, 2, 0,163, 6, 2, 0, 37, 0,163, 0, 96, 3,242, 0, 10, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6, 2, 0, 19, 0, 2, 0,125, 3, 4, 0, 37, 0,163, 0, 96, 3, +243, 0, 42, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6, +226, 0, 92, 6, 0, 0, 79, 6, 0, 0, 80, 6, 0, 0, 81, 6, 2, 0, 17, 0, 2, 0,164, 6, 2, 0, 19, 0, 2, 0, 83, 6, + 9, 0,158, 6, 4, 0, 86, 6, 4, 0,165, 6, 4, 0,166, 6, 4, 0, 87, 6, 23, 0,167, 6, 23, 0,168, 6, 7, 0,169, 6, + 7, 0,170, 6, 7, 0,171, 6, 7, 0,157, 6, 2, 0,172, 6, 2, 0,234, 0, 2, 0,169, 1, 2, 0, 85, 6, 2, 0, 37, 0, + 2, 0, 43, 0, 2, 0,173, 6, 2, 0,174, 6, 9, 0,175, 6, 9, 0,176, 6, 9, 0,177, 6, 9, 0,178, 6, 9, 0,179, 6, + 2, 0,180, 6, 0, 0,181, 6, 57, 0,182, 6,244, 0, 7, 0,244, 0, 0, 0,244, 0, 1, 0, 4, 0,183, 6, 4, 0, 23, 0, + 0, 0, 84, 0, 4, 0,184, 6, 4, 0, 17, 0,245, 0, 16, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, + 7, 0, 12, 6, 2, 0, 13, 6, 4, 0, 17, 0, 4, 0,185, 6, 4, 0, 19, 0, 4, 0,126, 6, 12, 0,186, 6, 12, 0,187, 6, + 0, 0,188, 6, 0, 0,189, 6, 4, 0,190, 6, 4, 0,191, 6,246, 0, 6, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, + 4, 0, 11, 6, 4, 0, 37, 0, 0, 0,192, 6,247, 0, 7, 0,247, 0, 0, 0,247, 0, 1, 0, 0, 0,193, 6, 2, 0,194, 6, + 2, 0,195, 6, 2, 0,196, 6, 2, 0, 37, 0,248, 0, 12, 0, 2, 0,195, 6, 2, 0,197, 6, 2, 0,198, 6, 0, 0,180, 2, + 2, 0,199, 6, 2, 0,200, 6, 2, 0,201, 6, 2, 0,202, 6, 2, 0,203, 6, 2, 0, 53, 6, 7, 0,204, 6, 7, 0,205, 6, +249, 0, 18, 0,249, 0, 0, 0,249, 0, 1, 0, 0, 0,239, 3,248, 0,206, 6,248, 0,207, 6,248, 0,208, 6,248, 0,209, 6, + 7, 0,210, 6, 2, 0,211, 6, 2, 0,212, 6, 2, 0,213, 6, 2, 0,214, 6, 2, 0,215, 6, 2, 0,216, 6, 2, 0,217, 6, + 2, 0,218, 6, 2, 0,219, 6, 2, 0,220, 6,250, 0, 10, 0, 0, 0,221, 6, 0, 0,222, 6, 0, 0,223, 6, 0, 0,224, 6, + 0, 0,225, 6, 0, 0,226, 6, 2, 0,227, 6, 2, 0,228, 6, 2, 0,229, 6, 2, 0,230, 6,251, 0, 8, 0, 0, 0,231, 6, + 0, 0,232, 6, 0, 0,233, 6, 0, 0,234, 6, 0, 0,235, 6, 0, 0,236, 6, 7, 0,230, 5, 7, 0, 37, 0,252, 0, 18, 0, +250, 0,237, 6,250, 0,238, 6,250, 0,239, 6,250, 0,240, 6,250, 0,241, 6,250, 0,242, 6,250, 0,243, 6,250, 0,244, 6, +250, 0,245, 6,250, 0,246, 6,250, 0,247, 6,250, 0,248, 6,250, 0,249, 6,250, 0,250, 6,250, 0,251, 6,250, 0,252, 6, +251, 0,253, 6, 0, 0,254, 6,253, 0, 92, 0, 0, 0,255, 6, 0, 0, 0, 7, 0, 0,225, 6, 0, 0, 1, 7, 0, 0, 2, 7, + 0, 0, 3, 7, 0, 0, 4, 7, 0, 0, 5, 7, 0, 0, 6, 7, 0, 0, 7, 7, 0, 0, 8, 7, 0, 0, 9, 7, 0, 0, 10, 7, + 0, 0, 11, 7, 0, 0, 12, 7, 0, 0, 13, 7, 0, 0, 14, 7, 0, 0, 15, 7, 0, 0, 16, 7, 0, 0, 17, 7, 0, 0, 18, 7, + 0, 0, 19, 7, 0, 0, 20, 7, 0, 0, 21, 7, 0, 0, 22, 7, 0, 0, 23, 7, 0, 0, 24, 7, 0, 0, 25, 7, 0, 0, 26, 7, + 0, 0, 27, 7, 0, 0, 28, 7, 0, 0, 29, 7, 0, 0, 30, 7, 0, 0, 31, 7, 0, 0, 32, 7, 0, 0, 33, 7, 0, 0, 34, 7, + 0, 0, 35, 7, 0, 0, 36, 7, 0, 0, 37, 7, 0, 0, 38, 7, 0, 0, 39, 7, 0, 0, 40, 7, 0, 0, 41, 7, 0, 0, 42, 7, + 0, 0, 43, 7, 0, 0, 44, 7, 0, 0, 45, 7, 0, 0, 46, 7, 0, 0, 47, 7, 0, 0, 48, 7, 0, 0, 49, 7, 0, 0, 50, 7, + 0, 0, 51, 7, 0, 0, 52, 7, 0, 0, 53, 7, 0, 0, 54, 7, 0, 0, 55, 7, 0, 0, 56, 7, 0, 0, 57, 7, 0, 0, 58, 7, + 0, 0, 59, 7, 0, 0, 60, 7, 0, 0, 61, 7, 0, 0, 62, 7, 0, 0, 63, 7, 0, 0, 64, 7, 0, 0, 65, 7, 0, 0, 66, 7, + 0, 0, 67, 7, 0, 0, 68, 7, 0, 0, 69, 7, 0, 0, 70, 7, 0, 0, 71, 7, 0, 0, 72, 7, 0, 0, 73, 7, 0, 0, 74, 7, + 0, 0, 75, 7, 0, 0, 76, 7, 0, 0, 77, 7, 0, 0, 78, 7, 0, 0, 79, 7, 0, 0, 80, 7, 0, 0, 81, 7, 0, 0, 82, 7, + 0, 0, 83, 7, 0, 0, 84, 7, 0, 0, 85, 7, 0, 0, 86, 7, 0, 0, 87, 7, 0, 0, 88, 7, 0, 0, 89, 7,254, 0, 5, 0, + 0, 0, 90, 7, 0, 0, 23, 7, 0, 0, 25, 7, 2, 0, 19, 0, 2, 0, 37, 0,255, 0, 25, 0,255, 0, 0, 0,255, 0, 1, 0, + 0, 0, 20, 0,252, 0, 91, 7,253, 0, 92, 7,253, 0, 93, 7,253, 0, 94, 7,253, 0, 95, 7,253, 0, 96, 7,253, 0, 97, 7, +253, 0, 98, 7,253, 0, 99, 7,253, 0,100, 7,253, 0,101, 7,253, 0,102, 7,253, 0,103, 7,253, 0,104, 7,253, 0,105, 7, +253, 0,106, 7,253, 0,107, 7,253, 0,108, 7,253, 0,109, 7,254, 0,110, 7, 4, 0,111, 7, 4, 0, 37, 0, 0, 1, 3, 0, + 0, 1, 0, 0, 0, 1, 1, 0, 0, 0,112, 7, 1, 1, 5, 0, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,127, 2, 7, 0,113, 7, + 7, 0, 32, 2, 2, 1, 84, 0, 4, 0, 19, 0, 4, 0,114, 7, 4, 0,115, 7, 0, 0,116, 7, 0, 0,117, 7, 0, 0,118, 7, + 0, 0,119, 7, 0, 0,120, 7, 0, 0,121, 7, 0, 0,122, 7, 0, 0,123, 7, 0, 0,124, 7, 0, 0,125, 7, 4, 0,126, 7, + 2, 0,127, 7, 2, 0,128, 7, 2, 0,129, 7, 2, 0,130, 7, 4, 0,131, 7, 4, 0,132, 7, 4, 0,133, 7, 4, 0,134, 7, + 2, 0,135, 7, 2, 0,136, 7, 4, 0,137, 7, 4, 0,138, 7, 4, 0,139, 7, 4, 0,140, 7, 4, 0,141, 7, 4, 0,186, 6, + 4, 0,142, 7, 2, 0,143, 7, 2, 0,144, 7, 2, 0,145, 7, 2, 0,146, 7, 12, 0,147, 7, 12, 0,148, 7, 12, 0,149, 7, + 12, 0,150, 7, 12, 0,151, 7, 0, 0,152, 7, 2, 0,153, 7, 2, 0,154, 7, 2, 0,155, 7, 2, 0,156, 7, 2, 0,157, 7, + 2, 0,158, 7, 2, 0,159, 7, 2, 0,160, 7, 1, 1,161, 7, 2, 0,162, 7, 2, 0,163, 7, 2, 0,164, 7, 2, 0,165, 7, + 2, 0,166, 7, 2, 0,167, 7, 2, 0,168, 7, 2, 0,169, 7, 4, 0,170, 7, 4, 0,171, 7, 2, 0,172, 7, 2, 0,173, 7, + 2, 0,174, 7, 2, 0,175, 7, 2, 0,176, 7, 2, 0,177, 7, 2, 0,178, 7, 2, 0,179, 7, 2, 0,180, 7, 2, 0,181, 7, + 2, 0,182, 7, 2, 0,183, 7, 2, 0,184, 7, 2, 0,185, 7, 2, 0,186, 7, 2, 0,187, 7, 2, 0,188, 7, 2, 0,178, 4, + 0, 0,189, 7, 0, 0,190, 7, 7, 0,191, 7, 2, 0,152, 5, 2, 0,153, 5, 55, 0,192, 7,219, 0, 21, 0, 27, 0, 31, 0, + 12, 0,193, 7, 12, 0,194, 7, 12, 0,195, 7, 12, 0, 10, 6, 46, 0,129, 0, 46, 0,196, 7, 2, 0,197, 7, 2, 0,198, 7, + 2, 0,199, 7, 2, 0,200, 7, 2, 0,201, 7, 2, 0,202, 7, 2, 0,203, 7, 2, 0,204, 7, 2, 0,205, 7, 2, 0,206, 7, + 4, 0, 70, 0,214, 0,207, 7, 9, 0,208, 7, 2, 0,209, 7, 3, 1, 5, 0, 3, 1, 0, 0, 3, 1, 1, 0, 3, 1,210, 7, + 13, 0,211, 7, 4, 0, 19, 0, 4, 1, 7, 0, 4, 1, 0, 0, 4, 1, 1, 0, 3, 1,212, 7, 3, 1,213, 7, 2, 0, 27, 5, + 2, 0, 19, 0, 4, 0, 37, 0, 5, 1, 25, 0, 5, 1, 0, 0, 5, 1, 1, 0, 6, 1,214, 7, 7, 1, 97, 6, 0, 0,215, 7, + 0, 0,216, 7, 0, 0,217, 7, 2, 0,218, 7, 2, 0,219, 7, 2, 0,220, 7, 2, 0,221, 7, 2, 0,222, 7, 2, 0, 37, 0, + 2, 0, 19, 0, 2, 0,223, 7, 2, 0,224, 7, 2, 0,225, 7, 4, 0,226, 7, 5, 1,227, 7, 9, 0,228, 7, 4, 0,229, 7, + 4, 0,230, 7, 4, 0,231, 7, 4, 0,232, 7, 0, 0,233, 7, 8, 1, 22, 0, 8, 1, 0, 0, 8, 1, 1, 0, 3, 1,212, 7, + 3, 1,213, 7, 3, 1,234, 7, 3, 1,235, 7,219, 0,236, 7, 23, 0, 52, 0, 0, 0, 11, 6, 0, 0,237, 7, 2, 0, 54, 6, + 2, 0, 55, 6, 2, 0,238, 7, 2, 0, 37, 0, 2, 0,200, 7, 2, 0,184, 6, 2, 0, 19, 0, 9, 1,214, 7, 12, 0,239, 7, + 12, 0, 10, 6, 12, 0,240, 7, 12, 0,241, 7, 10, 1, 24, 0, 10, 1, 0, 0, 10, 1, 1, 0,217, 0, 62, 6, 23, 0,242, 7, + 23, 0,243, 7, 2, 0, 54, 6, 2, 0, 55, 6, 2, 0,244, 7, 2, 0,245, 7, 2, 0,246, 7, 2, 0, 19, 0, 7, 0, 74, 2, + 2, 0,220, 7, 2, 0,221, 7, 2, 0,199, 7, 2, 0,247, 7, 2, 0,204, 7, 2, 0,178, 4, 11, 1,214, 7, 12, 0,248, 7, + 12, 0,249, 7, 12, 0,240, 7, 0, 0,250, 7, 9, 0,251, 7, 12, 1, 12, 0, 0, 0,252, 7, 2, 0,253, 7, 2, 0,254, 7, + 2, 0,255, 7, 2, 0, 0, 8, 2, 0, 14, 5, 2, 0, 9, 5,219, 0, 1, 8, 46, 0, 2, 8, 4, 0, 3, 8, 4, 0, 4, 8, + 0, 0, 5, 8, 13, 1, 1, 0, 0, 0, 6, 8, 14, 1, 8, 0, 57, 0, 7, 8, 57, 0, 8, 8, 14, 1, 9, 8, 14, 1, 10, 8, + 14, 1, 11, 8, 2, 0,124, 0, 2, 0, 19, 0, 4, 0, 12, 8, 15, 1, 4, 0, 4, 0,124, 6, 4, 0, 13, 8, 4, 0,129, 6, + 4, 0, 14, 8, 16, 1, 2, 0, 4, 0, 15, 8, 4, 0, 16, 8, 17, 1, 5, 0, 7, 0, 17, 8, 7, 0, 18, 8, 7, 0, 19, 8, + 4, 0, 19, 0, 4, 0, 37, 0, 18, 1, 6, 0, 0, 0, 20, 8, 0, 0, 81, 6, 49, 0,132, 0, 2, 0,106, 0, 2, 0, 13, 5, + 4, 0, 37, 0, 19, 1, 21, 0, 19, 1, 0, 0, 19, 1, 1, 0, 4, 0, 57, 0, 4, 0, 23, 0, 4, 0, 28, 0, 4, 0, 21, 8, + 4, 0, 22, 8, 4, 0, 23, 8, 13, 1, 24, 8, 0, 0, 20, 8, 4, 0, 25, 8, 4, 0, 26, 8, 18, 1, 90, 3, 15, 1, 27, 8, + 16, 1, 28, 8, 17, 1, 29, 8, 14, 1, 30, 8, 14, 1, 31, 8, 14, 1, 32, 8, 57, 0, 33, 8, 57, 0, 34, 8, 20, 1, 12, 0, + 0, 0,250, 1, 9, 0,220, 0, 0, 0,221, 0, 4, 0,224, 0, 4, 0,232, 0, 9, 0,225, 0, 7, 0,227, 0, 7, 0,228, 0, + 9, 0, 35, 8, 9, 0, 36, 8, 9, 0,229, 0, 9, 0,231, 0, 21, 1, 46, 0, 21, 1, 0, 0, 21, 1, 1, 0, 9, 0, 37, 8, + 9, 0, 26, 0, 0, 0, 27, 0, 4, 0, 19, 0, 4, 0, 17, 0, 4, 0, 23, 0, 4, 0, 88, 0, 4, 0, 38, 8, 4, 0, 39, 8, + 4, 0, 22, 8, 4, 0, 23, 8, 4, 0, 40, 8, 4, 0,243, 0, 4, 0, 41, 8, 4, 0, 42, 8, 7, 0, 43, 8, 7, 0, 44, 8, + 4, 0,121, 0, 4, 0, 45, 8, 19, 1, 46, 8, 36, 0, 80, 0, 46, 0,129, 0, 32, 0, 47, 8, 49, 0,132, 0, 7, 0, 48, 8, + 7, 0, 49, 8, 20, 1, 59, 1, 21, 1, 50, 8, 21, 1, 51, 8, 21, 1, 52, 8, 12, 0, 53, 8, 22, 1, 54, 8, 9, 0, 55, 8, + 7, 0,248, 3, 7, 0, 56, 8, 7, 0, 57, 8, 4, 0, 58, 8, 4, 0, 59, 8, 7, 0, 60, 8, 9, 0, 61, 8, 4, 0, 62, 8, + 4, 0, 63, 8, 4, 0, 64, 8, 7, 0, 65, 8, 23, 1, 4, 0, 23, 1, 0, 0, 23, 1, 1, 0, 12, 0, 66, 8, 21, 1, 67, 8, +205, 0, 11, 0, 12, 0, 68, 8, 12, 0, 53, 8, 12, 0, 69, 8, 21, 1, 70, 8, 0, 0, 71, 8, 0, 0, 72, 8, 4, 0, 73, 8, + 4, 0, 74, 8, 4, 0, 75, 8, 4, 0, 37, 0, 24, 0, 76, 8, 24, 1, 4, 0, 7, 0, 77, 8, 7, 0, 64, 3, 2, 0, 78, 8, + 2, 0, 79, 8, 25, 1, 6, 0, 7, 0, 80, 8, 7, 0, 81, 8, 7, 0, 82, 8, 7, 0, 83, 8, 4, 0, 84, 8, 4, 0, 85, 8, + 26, 1, 13, 0, 7, 0, 86, 8, 7, 0, 87, 8, 7, 0, 88, 8, 7, 0, 89, 8, 7, 0, 90, 8, 7, 0, 91, 8, 7, 0, 92, 8, + 7, 0, 93, 8, 7, 0, 94, 8, 7, 0, 95, 8, 4, 0,225, 2, 4, 0, 96, 8, 4, 0, 97, 8, 27, 1, 2, 0, 7, 0, 86, 5, + 7, 0, 37, 0, 28, 1, 5, 0, 7, 0, 98, 8, 7, 0, 99, 8, 4, 0, 90, 0, 4, 0,181, 2, 4, 0,100, 8, 29, 1, 6, 0, + 29, 1, 0, 0, 29, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 30, 1, 8, 0, 30, 1, 0, 0, + 30, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0, 57, 0, 7, 0, 23, 0, 7, 0,121, 0, 31, 1, 45, 0, + 31, 1, 0, 0, 31, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 2, 0, 34, 4, 2, 0,102, 8, + 7, 0,103, 8, 7, 0, 89, 0, 7, 0,238, 2, 4, 0,104, 8, 4, 0, 82, 0, 4, 0,183, 2, 7, 0,105, 8, 7, 0,106, 8, + 7, 0,107, 8, 7, 0,108, 8, 7, 0,109, 8, 7, 0,110, 8, 7, 0,235, 2, 7, 0, 56, 1, 7, 0,111, 8, 7, 0,112, 8, + 7, 0, 37, 0, 7, 0,113, 8, 7, 0,114, 8, 7, 0,115, 8, 2, 0,116, 8, 2, 0,117, 8, 2, 0,118, 8, 2, 0,119, 8, + 2, 0,120, 8, 2, 0,121, 8, 2, 0,122, 8, 2, 0,123, 8, 2, 0, 17, 2, 2, 0,124, 8, 2, 0, 14, 2, 2, 0,125, 8, + 0, 0,126, 8, 0, 0,127, 8, 7, 0,237, 0, 32, 1,128, 8, 67, 0,229, 1, 33, 1, 16, 0, 33, 1, 0, 0, 33, 1, 1, 0, + 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,101, 8, 2, 0,239, 0, 7, 0,230, 2, 7, 0,231, 2, 7, 0,232, 2, 7, 0, 63, 2, + 7, 0,233, 2, 7, 0,234, 2, 7, 0,129, 8, 7, 0,235, 2, 7, 0,237, 2, 7, 0,238, 2,231, 0, 5, 0, 2, 0, 17, 0, + 2, 0, 12, 8, 2, 0, 19, 0, 2, 0,130, 8, 27, 0,156, 6,230, 0, 3, 0, 4, 0, 69, 0, 4, 0,131, 8,231, 0, 2, 0, + 34, 1, 7, 0, 34, 1, 0, 0, 34, 1, 1, 0, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 22, 0, 9, 0,132, 8, + 35, 1, 5, 0, 0, 0, 20, 0, 7, 0, 76, 1, 7, 0,133, 8, 4, 0,134, 8, 4, 0, 37, 0, 36, 1, 4, 0, 2, 0, 17, 0, + 2, 0, 19, 0, 2, 0, 43, 0, 2, 0, 70, 0, 37, 1, 4, 0, 0, 0, 20, 0, 66, 0,135, 8, 7, 0, 76, 1, 7, 0, 37, 0, + 38, 1, 6, 0, 2, 0,136, 8, 2, 0,137, 8, 2, 0, 17, 0, 2, 0,138, 8, 0, 0,139, 8, 0, 0,140, 8, 39, 1, 5, 0, + 4, 0, 17, 0, 4, 0, 37, 0, 0, 0, 20, 0, 0, 0,141, 8, 0, 0,142, 8, 40, 1, 3, 0, 4, 0, 17, 0, 4, 0, 37, 0, + 0, 0, 20, 0, 41, 1, 4, 0, 2, 0,143, 8, 2, 0,144, 8, 2, 0, 19, 0, 2, 0, 37, 0, 42, 1, 6, 0, 0, 0, 20, 0, + 0, 0,145, 8, 2, 0,146, 8, 2, 0,235, 2, 2, 0, 69, 1, 2, 0, 70, 0, 43, 1, 5, 0, 0, 0, 20, 0, 7, 0, 64, 3, + 7, 0,128, 4, 2, 0, 19, 0, 2, 0,195, 2, 44, 1, 3, 0, 0, 0, 20, 0, 4, 0,183, 2, 4, 0,143, 8, 45, 1, 7, 0, + 0, 0, 20, 0, 7, 0,128, 4, 0, 0,147, 8, 0, 0,148, 8, 2, 0, 69, 1, 2, 0, 43, 0, 4, 0,149, 8, 46, 1, 4, 0, + 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0,199, 2, 47, 1, 3, 0, 32, 0,152, 8, 0, 0,153, 8, 0, 0,154, 8, + 48, 1, 18, 0, 48, 1, 0, 0, 48, 1, 1, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0, 19, 0, 2, 0,156, 8, 2, 0,157, 8, + 2, 0,158, 8, 2, 0, 43, 0, 2, 0, 70, 0, 0, 0, 20, 0, 9, 0, 2, 0, 49, 1,159, 8, 32, 0, 45, 0, 2, 0,104, 5, + 2, 0, 56, 8, 2, 0,160, 8, 2, 0, 37, 0, 50, 1, 11, 0, 0, 0, 20, 0, 0, 0, 17, 0, 0, 0,161, 8, 2, 0, 19, 0, + 2, 0,195, 2, 2, 0,162, 8, 4, 0,163, 8, 4, 0,164, 8, 4, 0,165, 8, 4, 0,166, 8, 4, 0,167, 8, 51, 1, 1, 0, + 0, 0,168, 8, 52, 1, 4, 0, 42, 0,123, 6, 0, 0,112, 7, 4, 0, 69, 1, 4, 0, 19, 0, 49, 1, 18, 0, 49, 1, 0, 0, + 49, 1, 1, 0, 49, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,170, 8, 2, 0,158, 8, 2, 0,155, 8, 2, 0,171, 8, + 2, 0, 70, 0, 2, 0,226, 1, 0, 0, 20, 0, 9, 0, 2, 0, 53, 1,159, 8, 48, 1,172, 8, 2, 0, 15, 0, 2, 0,173, 8, + 4, 0,174, 8, 54, 1, 3, 0, 4, 0,209, 2, 4, 0, 37, 0, 32, 0, 45, 0, 55, 1, 12, 0,161, 0,175, 8, 2, 0, 17, 0, + 2, 0, 19, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0,177, 8, 2, 0,178, 8, 2, 0,179, 8, + 2, 0,180, 8, 7, 0,181, 8, 56, 1, 13, 0, 2, 0, 19, 0, 2, 0,182, 8, 4, 0, 43, 0, 4, 0, 70, 0, 2, 0,183, 8, + 7, 0,248, 3, 7, 0,184, 8, 22, 1, 54, 8, 57, 1,185, 8, 2, 0, 17, 0, 2, 0,248, 1, 2, 0,224, 5, 2, 0,186, 8, + 58, 1, 11, 0, 4, 0,209, 2, 2, 0, 17, 0, 2, 0, 19, 0, 32, 0, 45, 0, 80, 0,187, 8, 0, 0, 20, 0, 7, 0,188, 8, + 7, 0,189, 8, 7, 0,133, 3, 2, 0,190, 8, 2, 0,191, 8, 59, 1, 5, 0, 2, 0, 17, 0, 2, 0, 43, 0, 4, 0, 37, 0, + 46, 0,129, 0, 32, 0, 93, 5, 60, 1, 5, 0, 4, 0, 37, 0, 4, 0, 17, 0, 0, 0, 20, 0, 0, 0,141, 8, 32, 0, 45, 0, + 61, 1, 13, 0, 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,155, 8, 2, 0,134, 3, 7, 0,192, 8, 7, 0,193, 8, 7, 0,178, 4, + 7, 0,146, 3, 7, 0,105, 3, 7, 0,108, 3, 7, 0,194, 8, 7, 0,195, 8, 32, 0,196, 8, 62, 1, 10, 0, 2, 0, 19, 0, + 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 0, 0,176, 8, 2, 0, 43, 0, 2, 0, 70, 0, 2, 0,226, 1, + 2, 0,248, 1, 63, 1, 8, 0, 32, 0, 45, 0, 7, 0,232, 2, 7, 0,197, 8, 7, 0,198, 8, 7, 0, 37, 0, 2, 0, 43, 0, + 2, 0,195, 2, 7, 0, 70, 0, 64, 1, 12, 0, 2, 0, 17, 0, 2, 0, 69, 1, 2, 0, 19, 0, 2, 0,235, 2, 2, 0,209, 2, + 2, 0,199, 8, 4, 0, 37, 0, 7, 0,200, 8, 7, 0,201, 8, 7, 0,202, 8, 7, 0,203, 8, 0, 0,204, 8, 65, 1, 9, 0, + 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0, 20, 0, 2, 0,178, 4, 2, 0, 64, 0, 2, 0,205, 8, + 2, 0,206, 8, 66, 1, 7, 0, 4, 0,183, 2, 4, 0,207, 8, 4, 0,208, 8, 4, 0,209, 8, 7, 0,210, 8, 7, 0,211, 8, + 0, 0,147, 8, 67, 1, 7, 0, 0, 0,212, 8, 32, 0,213, 8, 0, 0,153, 8, 2, 0,214, 8, 2, 0, 43, 0, 4, 0, 70, 0, + 0, 0,154, 8, 68, 1, 6, 0, 2, 0, 19, 0, 2, 0, 17, 0, 4, 0,103, 8, 4, 0, 89, 0, 0, 0,215, 8, 0, 0,216, 8, + 69, 1, 1, 0, 4, 0, 19, 0, 70, 1, 6, 0, 0, 0, 92, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0,217, 8, 7, 0,218, 8, + 42, 0,123, 6, 71, 1, 4, 0, 0, 0, 59, 2, 2, 0, 19, 0, 4, 0, 17, 0, 32, 0, 45, 0, 72, 1, 2, 0, 4, 0, 17, 0, + 4, 0, 43, 6, 73, 1, 6, 0, 0, 0,150, 8, 0, 0,151, 8, 4, 0, 17, 0, 7, 0, 25, 2, 32, 0, 43, 3, 32, 0,219, 8, + 53, 1, 10, 0, 53, 1, 0, 0, 53, 1, 1, 0, 53, 1,169, 8, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,155, 8, 2, 0,220, 8, + 0, 0, 20, 0, 9, 0, 2, 0, 32, 0, 45, 0, 74, 1, 10, 0, 7, 0,133, 3, 7, 0,221, 8, 7, 0,222, 8, 7, 0,223, 8, + 7, 0,224, 8, 4, 0, 19, 0, 7, 0,199, 8, 7, 0,225, 8, 7, 0,226, 8, 7, 0, 37, 0, 57, 1, 8, 0, 7, 0,227, 8, + 7, 0,228, 8, 7, 0,229, 8, 7, 0,230, 8, 7, 0,231, 8, 7, 0,232, 8, 7, 0,233, 8, 7, 0,234, 8, 22, 1, 16, 0, + 27, 0, 31, 0, 0, 0, 34, 0, 43, 0,147, 0, 9, 0,220, 0, 43, 0,235, 8, 36, 0, 80, 0, 7, 0,248, 3, 7, 0,236, 8, + 7, 0,184, 8, 7, 0,227, 8, 7, 0,228, 8, 7, 0,237, 8, 4, 0, 90, 0, 4, 0, 37, 0, 9, 0,238, 8, 9, 0,239, 8, + 75, 1, 15, 0,216, 0, 0, 0,216, 0, 1, 0, 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 8, 1,240, 8,217, 0, 62, 6, + 22, 1, 54, 8, 2, 0, 69, 1, 2, 0,182, 8, 2, 0, 78, 2, 2, 0, 79, 2, 2, 0, 19, 0, 2, 0,113, 6, 4, 0, 70, 0, + 76, 1, 6, 0, 76, 1, 0, 0, 76, 1, 1, 0, 32, 0, 45, 0, 9, 0,241, 8, 4, 0,244, 0, 4, 0, 37, 0, 67, 0, 4, 0, + 27, 0, 31, 0, 12, 0,242, 8, 4, 0,126, 0, 7, 0,243, 8, 77, 1, 27, 0, 77, 1, 0, 0, 77, 1, 1, 0, 26, 0,244, 8, + 77, 1, 38, 0, 12, 0,245, 8, 0, 0, 20, 0, 7, 0,246, 8, 7, 0,247, 8, 7, 0,248, 8, 7, 0,249, 8, 4, 0, 19, 0, + 7, 0,250, 8, 7, 0,251, 8, 7, 0,252, 8, 7, 0, 76, 1, 7, 0, 25, 2, 7, 0,253, 8, 7, 0,181, 2, 7, 0,254, 8, + 7, 0,255, 8, 7, 0, 0, 9, 7, 0, 1, 9, 7, 0, 2, 9, 7, 0,169, 0, 4, 0,126, 0, 2, 0,133, 5, 2, 0,178, 4, + 78, 1, 25, 0, 27, 0, 31, 0, 39, 0, 75, 0, 12, 0, 3, 9, 12, 0, 4, 9, 12, 0, 5, 9, 77, 1, 6, 9, 9, 0, 7, 9, + 9, 0, 8, 9, 4, 0, 19, 0, 4, 0, 19, 6, 2, 0,239, 2, 2, 0, 72, 6, 4, 0, 37, 0, 4, 0,126, 0, 4, 0, 9, 9, + 2, 0, 10, 9, 2, 0, 11, 9, 2, 0, 12, 9, 2, 0, 13, 9, 4, 0, 14, 9, 4, 0, 15, 9, 4, 0, 16, 9, 4, 0, 17, 9, + 4, 0, 18, 9, 4, 0, 19, 9, 79, 1, 2, 0, 7, 0,141, 2, 4, 0, 19, 0,165, 0, 5, 0, 79, 1, 20, 9, 4, 0,181, 2, + 4, 0, 21, 9, 4, 0, 22, 9, 4, 0, 19, 0,164, 0, 16, 0, 4, 0, 23, 9, 4, 0, 24, 9, 4, 0, 25, 9, 4, 0, 26, 9, + 2, 0, 27, 9, 2, 0, 28, 9, 2, 0, 29, 9, 2, 0,244, 0, 2, 0, 30, 9, 2, 0, 31, 9, 2, 0, 32, 9, 2, 0, 33, 9, + 4, 0, 34, 9, 4, 0, 35, 9, 4, 0, 36, 9, 4, 0, 37, 9, 80, 1, 44, 0, 80, 1, 0, 0, 80, 1, 1, 0, 26, 0,244, 8, + 12, 0,160, 3, 0, 0, 20, 0, 2, 0, 19, 0, 2, 0, 38, 9, 2, 0, 39, 9, 2, 0, 40, 9, 2, 0,119, 3, 2, 0, 41, 9, + 4, 0, 61, 2, 4, 0, 16, 9, 4, 0, 17, 9, 77, 1, 42, 9, 80, 1, 38, 0, 80, 1, 43, 9, 12, 0, 44, 9, 9, 0, 45, 9, + 9, 0, 46, 9, 9, 0, 47, 9, 7, 0, 64, 1, 7, 0,169, 0, 7, 0, 48, 9, 7, 0, 4, 2, 7, 0,110, 3, 7, 0,112, 3, + 2, 0,142, 3, 2, 0, 37, 0, 7, 0, 49, 9, 7, 0, 50, 9, 7, 0,115, 3, 7, 0, 51, 9, 7, 0, 52, 9, 7, 0, 53, 9, + 7, 0, 54, 9, 7, 0, 55, 9, 7, 0, 56, 9, 7, 0, 57, 9, 7, 0, 58, 9, 7, 0, 54, 2,165, 0, 98, 3, 32, 0, 59, 9, + 80, 1, 60, 9,162, 0, 14, 0, 12, 0, 61, 9, 81, 1, 62, 9, 2, 0, 19, 0, 2, 0, 63, 9, 7, 0, 90, 2, 7, 0, 64, 9, + 7, 0, 65, 9, 12, 0, 66, 9, 4, 0, 67, 9, 4, 0, 68, 9, 9, 0, 69, 9, 9, 0, 70, 9,164, 0, 97, 3, 0, 0, 71, 9, + 82, 1, 1, 0, 4, 0, 68, 9, 83, 1, 12, 0, 4, 0, 68, 9, 7, 0,167, 8, 2, 0, 72, 9, 2, 0, 73, 9, 7, 0, 74, 9, + 7, 0, 75, 9, 2, 0, 76, 9, 2, 0, 19, 0, 7, 0, 77, 9, 7, 0, 78, 9, 7, 0, 79, 9, 7, 0, 80, 9, 84, 1, 7, 0, + 84, 1, 0, 0, 84, 1, 1, 0, 12, 0, 81, 9, 4, 0, 19, 0, 4, 0, 82, 9, 0, 0,239, 3,254, 0, 83, 9,161, 0, 7, 0, + 27, 0, 31, 0, 12, 0, 84, 9, 12, 0, 61, 9, 12, 0, 85, 9, 12, 0,100, 0, 4, 0, 19, 0, 4, 0, 86, 9,221, 0, 5, 0, + 27, 0, 87, 9, 12, 0, 61, 9, 67, 0, 88, 9, 4, 0, 89, 9, 4, 0, 19, 0, 85, 1, 13, 0,216, 0, 0, 0,216, 0, 1, 0, + 12, 0, 10, 6, 4, 0, 11, 6, 7, 0, 12, 6, 2, 0, 13, 6,217, 0, 62, 6,161, 0, 93, 3,221, 0, 90, 9, 0, 0, 69, 1, + 0, 0, 65, 6, 2, 0, 19, 0, 7, 0, 91, 9, 86, 1, 8, 0, 86, 1, 0, 0, 86, 1, 1, 0, 84, 1, 92, 9, 36, 0, 80, 0, + 12, 0, 99, 3, 4, 0, 19, 0, 0, 0, 20, 0, 4, 0, 93, 9, 87, 1, 5, 0, 87, 1, 0, 0, 87, 1, 1, 0, 36, 0, 80, 0, + 2, 0, 19, 0, 0, 0, 94, 9, 88, 1, 14, 0, 88, 1, 0, 0, 88, 1, 1, 0, 9, 0, 2, 0, 2, 0, 17, 0, 2, 0, 19, 0, + 0, 0, 95, 9, 0, 0, 96, 9, 0, 0, 94, 9, 7, 0, 97, 9, 7, 0, 98, 9, 4, 0, 37, 0, 36, 0, 80, 0, 7, 0, 99, 9, + 7, 0,100, 9, 89, 1, 9, 0, 89, 1, 0, 0, 89, 1, 1, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,102, 9, 2, 0,103, 9, + 2, 0, 19, 0, 2, 0, 17, 0, 2, 0,104, 9, 90, 1, 7, 0, 42, 0,123, 6, 26, 0,244, 8, 4, 0, 19, 0, 4, 0,105, 9, + 12, 0,106, 9, 32, 0,101, 9, 0, 0,242, 2, 91, 1, 15, 0, 32, 0,101, 9, 2, 0,107, 9, 2, 0, 19, 0, 2, 0,108, 9, + 2, 0,109, 9, 0, 0,242, 2, 32, 0,110, 9, 0, 0,111, 9, 7, 0,112, 9, 7, 0, 25, 2, 7, 0,113, 9, 7, 0,114, 9, + 2, 0, 17, 0, 2, 0, 69, 1, 7, 0, 76, 1, 92, 1, 6, 0, 32, 0,101, 9, 7, 0, 20, 9, 2, 0,115, 9, 2, 0,116, 9, + 2, 0, 19, 0, 2, 0,117, 9, 93, 1, 6, 0, 32, 0,101, 9, 4, 0,118, 9, 4, 0,119, 9, 4, 0, 90, 0, 4, 0, 37, 0, + 0, 0,242, 2, 94, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 95, 1, 4, 0, 32, 0,101, 9, + 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, 96, 1, 4, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0,118, 9, 0, 0,242, 2, + 97, 1, 2, 0, 4, 0, 19, 0, 7, 0,248, 3, 98, 1, 2, 0, 32, 0,101, 9, 0, 0,242, 2, 99, 1, 10, 0, 32, 0,101, 9, + 4, 0,120, 9, 7, 0,120, 0, 4, 0, 19, 0, 2, 0,116, 6, 2, 0,121, 9, 2, 0, 43, 0, 2, 0, 70, 0, 7, 0,122, 9, + 0, 0,242, 2,100, 1, 10, 0, 32, 0,101, 9, 2, 0, 17, 0, 2, 0, 42, 4, 4, 0, 88, 0, 4, 0, 89, 0, 7, 0,197, 8, + 7, 0,198, 8, 4, 0, 37, 0,161, 0,175, 8, 0, 0,242, 2,101, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0,123, 9, + 0, 0,242, 2,102, 1, 4, 0, 32, 0,101, 9, 4, 0,120, 3, 4, 0, 37, 0, 0, 0,242, 2,103, 1, 6, 0, 32, 0,101, 9, + 7, 0,120, 0, 7, 0, 55, 3, 4, 0,124, 9, 2, 0,120, 3, 2, 0,121, 3,104, 1, 6, 0, 32, 0,101, 9, 4, 0,125, 9, + 4, 0,126, 9, 7, 0,127, 9, 7, 0,128, 9, 0, 0,242, 2,105, 1, 16, 0, 32, 0,101, 9, 32, 0, 43, 9, 4, 0, 17, 0, + 7, 0,129, 9, 7, 0,130, 9, 7, 0,131, 9, 7, 0,132, 9, 7, 0,133, 9, 7, 0,134, 9, 7, 0,135, 9, 7, 0,136, 9, + 7, 0,137, 9, 2, 0, 19, 0, 2, 0, 37, 0, 2, 0, 43, 0, 2, 0, 70, 0,106, 1, 3, 0, 32, 0,101, 9, 4, 0, 19, 0, + 4, 0, 17, 2,107, 1, 5, 0, 32, 0,101, 9, 4, 0, 19, 0, 4, 0, 37, 0, 7, 0,138, 9, 0, 0,242, 2,108, 1, 10, 0, + 32, 0,101, 9, 0, 0,242, 2, 2, 0,139, 9, 2, 0,140, 9, 0, 0,141, 9, 0, 0,142, 9, 7, 0,143, 9, 7, 0,144, 9, + 7, 0,145, 9, 7, 0,146, 9,109, 1, 5, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0,189, 2, 2, 0,147, 9, 2, 0, 19, 0, +110, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, 2, 0, 19, 0, + 2, 0, 17, 2,111, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, 7, 0,149, 9, + 2, 0, 19, 0, 2, 0, 17, 2,112, 1, 8, 0, 7, 0, 9, 0, 7, 0, 10, 0, 7, 0, 11, 0, 7, 0, 12, 0, 7, 0,148, 9, + 7, 0,149, 9, 2, 0, 19, 0, 2, 0, 17, 2,113, 1, 7, 0, 32, 0,101, 9, 0, 0,242, 2, 7, 0, 76, 1, 7, 0, 85, 1, + 2, 0, 19, 0, 2, 0, 69, 1, 4, 0, 37, 0,114, 1, 5, 0, 32, 0, 43, 3, 7, 0, 76, 1, 2, 0, 47, 3, 0, 0, 49, 3, + 0, 0,150, 9,115, 1, 10, 0,115, 1, 0, 0,115, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 0, 0,151, 9, 7, 0, 19, 1, + 7, 0, 20, 1, 2, 0, 81, 9, 2, 0,152, 9, 32, 0, 45, 0,116, 1, 22, 0,116, 1, 0, 0,116, 1, 1, 0, 2, 0, 19, 0, + 2, 0, 69, 1, 2, 0,153, 9, 2, 0,154, 9, 36, 0, 80, 0,161, 0,175, 8, 32, 0,161, 0, 7, 0, 88, 0, 7, 0, 89, 0, + 7, 0,155, 9, 7, 0,156, 9, 7, 0,157, 9, 7, 0,158, 9, 7, 0,228, 2, 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, + 0, 0,161, 9, 0, 0,162, 9, 12, 0,101, 3,117, 1, 8, 0, 7, 0, 32, 2, 7, 0,197, 8, 7, 0,198, 8, 9, 0, 2, 0, + 2, 0,163, 9, 2, 0,164, 9, 2, 0,165, 9, 2, 0,166, 9,118, 1, 18, 0,118, 1, 0, 0,118, 1, 1, 0,118, 1,167, 9, + 0, 0, 20, 0,117, 1,168, 9, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0,169, 9, 2, 0,170, 9, 2, 0,171, 9, 2, 0,172, 9, + 4, 0, 43, 0, 7, 0,173, 9, 7, 0,174, 9, 4, 0,175, 9, 4, 0,176, 9,118, 1,177, 9,119, 1,178, 9,120, 1, 33, 0, +120, 1, 0, 0,120, 1, 1, 0,120, 1,179, 9, 0, 0, 20, 0, 2, 0, 17, 0, 2, 0, 19, 0, 2, 0, 21, 8, 2, 0, 56, 8, + 2, 0,180, 9, 2, 0,128, 0, 2, 0,170, 9, 2, 0, 12, 8, 12, 0,170, 8, 12, 0,181, 9, 27, 0,156, 6, 9, 0,182, 9, + 7, 0,173, 9, 7, 0,174, 9, 7, 0, 63, 2, 7, 0,183, 9, 2, 0,184, 9, 2, 0,185, 9, 7, 0,186, 9, 7, 0,187, 9, + 2, 0,188, 9, 2, 0,189, 9, 9, 0,190, 9, 24, 0,191, 9, 24, 0,192, 9, 24, 0,193, 9,121, 1,148, 0,122, 1,194, 9, +123, 1,195, 9,119, 1, 8, 0,119, 1, 0, 0,119, 1, 1, 0,120, 1,196, 9,120, 1,197, 9,118, 1,198, 9,118, 1,177, 9, + 4, 0, 19, 0, 4, 0, 37, 0, 60, 0, 22, 0, 27, 0, 31, 0, 39, 0, 75, 0,163, 0, 96, 3, 12, 0,199, 9, 12, 0,200, 9, +117, 1,201, 9, 12, 0,202, 9, 4, 0, 17, 0, 4, 0,203, 9, 4, 0,204, 9, 4, 0,205, 9, 4, 0, 19, 0, 4, 0, 37, 0, + 12, 0,206, 9,123, 1,207, 9, 4, 0,208, 9, 9, 0,209, 9, 9, 0,210, 9, 4, 0,211, 9, 9, 0,212, 9, 9, 0,213, 9, + 9, 0,214, 9,124, 1, 6, 0, 4, 0,119, 0, 4, 0,121, 0, 4, 0, 12, 8, 0, 0,215, 9, 0, 0,216, 9, 2, 0, 37, 0, +125, 1, 16, 0, 2, 0,220, 7, 2, 0,221, 7, 2, 0,217, 9, 2, 0,222, 8, 2, 0,218, 9, 2, 0, 68, 0, 7, 0,227, 2, + 7, 0,219, 9, 7, 0,220, 9, 2, 0, 91, 1, 0, 0,221, 9, 0, 0,222, 9, 2, 0,223, 9, 2, 0, 37, 0, 4, 0,224, 9, + 4, 0,225, 9,126, 1, 9, 0, 7, 0,226, 9, 7, 0,227, 9, 7, 0,237, 8, 7, 0, 64, 3, 7, 0,228, 9, 7, 0, 78, 6, + 2, 0, 62, 3, 0, 0,229, 9, 0, 0, 37, 0,127, 1, 4, 0, 7, 0,230, 9, 7, 0,231, 9, 2, 0, 62, 3, 2, 0, 37, 0, +128, 1, 3, 0, 7, 0,232, 9, 7, 0,233, 9, 7, 0, 15, 0,129, 1, 7, 0, 0, 0,250, 1, 2, 0, 11, 5, 2, 0, 12, 5, + 2, 0, 13, 5, 2, 0,200, 4, 4, 0,121, 0, 4, 0, 40, 4,130, 1, 9, 0, 7, 0,234, 9, 7, 0,235, 9, 7, 0,236, 9, + 7, 0, 74, 2, 7, 0,237, 9, 7, 0,238, 9, 7, 0,239, 9, 2, 0,240, 9, 2, 0,241, 9,131, 1, 4, 0, 2, 0,242, 9, + 2, 0,243, 9, 2, 0,244, 9, 2, 0,245, 9,132, 1, 2, 0, 7, 0, 5, 0, 7, 0, 6, 0,133, 1, 2, 0, 0, 0,163, 0, + 0, 0,246, 9,134, 1, 1, 0, 0, 0, 20, 0,135, 1, 10, 0, 0, 0,247, 9, 0, 0,248, 9, 0, 0, 71, 6, 0, 0,249, 9, + 2, 0,217, 9, 2, 0,250, 9, 7, 0,251, 9, 7, 0,252, 9, 7, 0,253, 9, 7, 0,159, 9,136, 1, 2, 0, 9, 0,254, 9, + 9, 0,255, 9,137, 1, 11, 0, 0, 0, 13, 5, 0, 0, 17, 0, 0, 0, 62, 3, 0, 0, 64, 3, 0, 0, 0, 10, 0, 0,106, 0, + 0, 0, 59, 2, 7, 0, 1, 10, 7, 0, 2, 10, 7, 0, 3, 10, 7, 0, 4, 10,138, 1, 8, 0, 7, 0,136, 8, 7, 0,120, 0, + 7, 0,222, 9, 7, 0,146, 2, 7, 0, 5, 10, 7, 0,233, 0, 7, 0, 6, 10, 4, 0, 17, 0,139, 1, 4, 0, 2, 0, 7, 10, + 2, 0, 8, 10, 2, 0, 9, 10, 2, 0, 37, 0,140, 1, 7, 0, 7, 0, 10, 10, 7, 0,189, 2, 7, 0, 11, 10, 7, 0, 17, 8, + 7, 0, 18, 8, 7, 0, 19, 8, 7, 0, 12, 10,141, 1, 6, 0, 2, 0, 13, 10, 2, 0, 14, 10, 7, 0, 15, 10, 7, 0, 16, 10, + 7, 0, 17, 10, 7, 0, 18, 10,142, 1, 1, 0, 0, 0, 20, 0,143, 1, 4, 0, 7, 0, 5, 0, 7, 0, 6, 0, 2, 0, 19, 0, + 2, 0, 19, 10,144, 1, 10, 0, 2, 0,228, 3, 2, 0, 19, 0, 7, 0,128, 4, 7, 0, 20, 10, 7, 0, 21, 10, 7, 0, 22, 10, + 7, 0, 23, 10,143, 1, 24, 10,143, 1, 25, 10,143, 1, 26, 10, 63, 0, 11, 0, 4, 0, 19, 0, 4, 0, 64, 0, 4, 0, 27, 10, + 4, 0, 37, 0, 24, 0, 28, 10, 24, 0, 29, 10,144, 1, 30, 10, 7, 0, 31, 10, 7, 0, 32, 10, 7, 0, 33, 10, 7, 0, 34, 10, +234, 0, 10, 0, 4, 0, 81, 9, 4, 0, 35, 10, 7, 0, 36, 10, 7, 0, 37, 10, 7, 0, 38, 10, 7, 0, 39, 10, 7, 0, 10, 0, + 7, 0, 12, 0, 4, 0, 69, 1, 4, 0,232, 2,233, 0, 18, 0, 4, 0,124, 0, 4, 0, 40, 10, 4, 0, 41, 10, 7, 0, 42, 10, + 4, 0, 43, 10, 7, 0, 44, 10, 7, 0, 45, 10, 4, 0, 46, 10, 7, 0, 47, 10, 4, 0, 48, 10, 7, 0, 49, 10,234, 0, 50, 10, + 7, 0, 51, 10, 7, 0, 52, 10, 7, 0, 53, 10, 7, 0, 54, 10, 4, 0, 55, 10, 4, 0, 37, 0,145, 1, 4, 0, 47, 0,219, 2, + 7, 0, 56, 10, 7, 0,158, 1, 7, 0, 37, 0,194, 0, 18, 0, 27, 0, 31, 0,145, 1, 57, 10, 63, 0, 24, 10, 51, 0, 58, 10, + 2, 0, 19, 0, 2, 0,230, 5, 4, 0,106, 0, 7, 0, 59, 10, 7, 0, 71, 2, 4, 0, 60, 10, 7, 0, 61, 10, 7, 0, 62, 10, + 7, 0, 63, 10, 7, 0,158, 1, 0, 0, 64, 10, 0, 0, 65, 10, 0, 0, 66, 10, 0, 0, 70, 0,146, 1, 10, 0, 4, 0, 17, 0, + 4, 0,120, 0, 4, 0, 19, 0, 4, 0,182, 3, 4, 0, 67, 10, 4, 0, 68, 10, 4, 0, 69, 10, 0, 0, 92, 0, 0, 0, 20, 0, + 9, 0, 2, 0,147, 1, 1, 0, 0, 0, 5, 8, 91, 0, 7, 0,146, 1, 70, 10, 4, 0, 71, 10, 4, 0, 72, 10, 4, 0, 73, 10, + 4, 0, 37, 0, 9, 0, 74, 10,147, 1, 75, 10,148, 1, 5, 0, 7, 0,141, 2, 7, 0,209, 2, 7, 0, 25, 2, 2, 0,117, 2, + 2, 0, 37, 0,149, 1, 5, 0, 7, 0,141, 2, 7, 0, 76, 10, 7, 0, 77, 10, 7, 0, 78, 10, 7, 0,209, 2,150, 1, 5, 0, + 32, 0, 79, 10,151, 1, 22, 0, 7, 0,200, 5, 7, 0, 80, 10, 7, 0, 57, 0,152, 1, 7, 0, 4, 0, 81, 10, 4, 0, 82, 10, + 4, 0, 83, 10, 7, 0, 84, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0, 57, 0,153, 1, 8, 0,153, 1, 0, 0,153, 1, 1, 0, + 32, 0, 45, 0, 4, 0,252, 0, 2, 0, 19, 0, 2, 0, 69, 1, 7, 0,209, 2, 7, 0,144, 8,154, 1, 6, 0,154, 1, 0, 0, +154, 1, 1, 0, 32, 0, 45, 0, 2, 0,194, 2, 2, 0, 19, 0, 2, 0, 87, 10,155, 1, 17, 0,149, 1,176, 3,149, 1, 88, 10, +148, 1, 89, 10,149, 1,128, 8,150, 1, 90, 10, 4, 0, 82, 0, 7, 0,209, 2, 7, 0,238, 2, 7, 0, 91, 10, 4, 0, 81, 10, + 4, 0, 92, 10, 7, 0, 85, 10, 7, 0, 86, 10, 7, 0,106, 0, 4, 0, 93, 10, 2, 0, 19, 0, 2, 0, 94, 10,156, 1, 9, 0, + 7, 0, 95, 10, 7, 0,248, 0, 7, 0, 96, 10, 7, 0, 97, 10, 7, 0, 98, 10, 7, 0, 99, 10, 7, 0,100, 10, 7, 0,101, 10, + 7, 0,102, 10,157, 1,111, 0, 27, 0, 31, 0, 39, 0, 75, 0,158, 1,103, 10,156, 1,104, 10,172, 0, 62, 4, 4, 0, 19, 0, + 2, 0, 17, 0, 2, 0,139, 9, 2, 0,105, 10, 2, 0,106, 10, 2, 0,142, 3, 2, 0,107, 10, 2, 0,108, 10, 2, 0,109, 10, + 2, 0,110, 10, 2, 0,111, 10, 2, 0,112, 10, 2, 0,113, 10, 2, 0,114, 10, 2, 0,112, 5, 2, 0,115, 10, 2, 0,116, 10, + 2, 0,117, 10, 2, 0,118, 10, 2, 0,119, 10, 2, 0, 14, 2, 2, 0,121, 8, 2, 0, 96, 8, 2, 0,120, 10, 2, 0,121, 10, + 2, 0,192, 3, 2, 0,193, 3, 2, 0,122, 10, 2, 0,123, 10, 2, 0,124, 10, 2, 0,125, 10, 7, 0,126, 10, 7, 0,127, 10, + 7, 0,128, 10, 2, 0, 61, 5, 2, 0,129, 10, 7, 0,130, 10, 7, 0,131, 10, 7, 0,132, 10, 7, 0,103, 8, 7, 0, 89, 0, + 7, 0,238, 2, 7, 0,109, 8, 7, 0,133, 10, 7, 0,134, 10, 7, 0,135, 10, 4, 0,104, 8, 4, 0,102, 8, 4, 0,136, 10, + 7, 0,105, 8, 7, 0,106, 8, 7, 0,107, 8, 7, 0,137, 10, 7, 0,138, 10, 7, 0,139, 10, 7, 0,140, 10, 7, 0,141, 10, + 7, 0, 57, 0, 7, 0,142, 10, 7, 0,143, 10, 7, 0,144, 10, 7, 0,145, 10, 7, 0,133, 3, 7, 0,106, 0, 7, 0,146, 10, + 7, 0,147, 10, 7, 0,148, 10, 7, 0,149, 10, 7, 0,150, 10, 7, 0,151, 10, 7, 0,152, 10, 4, 0,153, 10, 4, 0,154, 10, + 7, 0,155, 10, 7, 0,156, 10, 7, 0,157, 10, 7, 0,158, 10, 7, 0,159, 10, 7, 0,207, 0, 7, 0,160, 10, 7, 0,219, 3, + 7, 0,217, 3, 7, 0,218, 3, 7, 0,161, 10, 7, 0,162, 10, 7, 0,163, 10, 7, 0,164, 10, 7, 0,165, 10, 7, 0,166, 10, + 7, 0,167, 10, 7, 0,168, 10, 7, 0,169, 10, 7, 0,170, 10, 7, 0,171, 10, 7, 0,172, 10, 7, 0,173, 10, 4, 0,174, 10, + 4, 0,175, 10, 67, 0,165, 3, 12, 0,176, 10, 67, 0,177, 10, 32, 0,178, 10, 32, 0,179, 10, 36, 0, 80, 0,167, 0, 61, 1, +167, 0,180, 10,147, 0, 44, 0,147, 0, 0, 0,147, 0, 1, 0,157, 1,181, 10,155, 1,182, 10,152, 1, 43, 9,174, 0,244, 3, + 9, 0,245, 3,159, 1,183, 10,159, 1,184, 10, 12, 0,185, 10, 12, 0,186, 10,132, 0,187, 10,140, 0,188, 10,140, 0,189, 10, + 32, 0,190, 10, 32, 0,191, 10, 32, 0, 38, 0, 12, 0,106, 9, 0, 0, 20, 0, 7, 0,237, 0, 7, 0, 9, 3, 7, 0,192, 10, + 4, 0,183, 2, 4, 0, 57, 0, 4, 0, 19, 0, 4, 0,104, 8, 4, 0,193, 10, 4, 0,194, 10, 4, 0,195, 10, 2, 0,244, 0, + 2, 0,196, 10, 2, 0,197, 10, 2, 0,198, 10, 0, 0,199, 10, 2, 0,200, 10, 2, 0,201, 10, 2, 0,202, 10, 9, 0,203, 10, +136, 0, 61, 4, 12, 0,252, 2, 12, 0,204, 10,160, 1,205, 10,161, 1,206, 10, 7, 0,207, 10,134, 0, 37, 0,162, 1,238, 8, + 7, 0, 31, 4, 7, 0,208, 10, 7, 0,209, 10, 7, 0,200, 5, 7, 0,143, 3, 7, 0,133, 3, 7, 0,210, 10, 7, 0, 73, 2, + 7, 0,211, 10, 7, 0,212, 10, 7, 0,213, 10, 7, 0,214, 10, 7, 0,215, 10, 7, 0,216, 10, 7, 0, 32, 4, 7, 0,217, 10, + 7, 0,218, 10, 7, 0,219, 10, 7, 0, 33, 4, 7, 0, 29, 4, 7, 0, 30, 4, 7, 0,220, 10, 7, 0,221, 10, 4, 0,222, 10, + 4, 0, 90, 0, 4, 0,223, 10, 4, 0,224, 10, 2, 0,225, 10, 2, 0,226, 10, 2, 0,227, 10, 2, 0,228, 10, 2, 0,229, 10, + 2, 0,230, 10, 2, 0,231, 10, 2, 0,178, 4,172, 0, 62, 4,135, 0, 9, 0,162, 1,232, 10, 7, 0,233, 10, 7, 0,234, 10, + 7, 0,230, 1, 7, 0,235, 10, 4, 0, 90, 0, 2, 0,236, 10, 2, 0,237, 10, 67, 0,229, 1,163, 1, 4, 0, 7, 0, 5, 0, + 7, 0, 6, 0, 7, 0, 7, 0, 7, 0,238, 10,164, 1, 6, 0,164, 1, 0, 0,164, 1, 1, 0,163, 1, 20, 9, 4, 0,250, 0, + 2, 0,239, 10, 2, 0, 19, 0,165, 1, 5, 0,165, 1, 0, 0,165, 1, 1, 0, 12, 0,240, 10, 4, 0,241, 10, 4, 0, 19, 0, +166, 1, 9, 0,166, 1, 0, 0,166, 1, 1, 0, 12, 0,119, 0,165, 1,242, 10, 4, 0, 19, 0, 2, 0,239, 10, 2, 0,243, 10, + 7, 0, 91, 0, 0, 0,244, 10,163, 0, 6, 0, 27, 0, 31, 0, 12, 0, 29, 5, 4, 0, 19, 0, 2, 0,245, 10, 2, 0,246, 10, + 9, 0,247, 10,167, 1, 7, 0,167, 1, 0, 0,167, 1, 1, 0, 2, 0, 17, 0, 2, 0, 19, 0, 4, 0, 23, 0, 0, 0,248, 10, + 0, 0,249, 10,168, 1, 6, 0, 12, 0,250, 10, 4, 0,251, 10, 4, 0,252, 10, 4, 0, 19, 0, 4, 0, 37, 0,214, 0,253, 10, +169, 1, 3, 0, 7, 0, 86, 5, 7, 0,254, 10, 7, 0,255, 10,170, 1, 17, 0, 27, 0, 31, 0,171, 1, 0, 11,171, 1, 1, 11, + 12, 0, 2, 11, 4, 0, 3, 11, 2, 0, 4, 11, 2, 0, 5, 11, 12, 0, 6, 11, 12, 0, 7, 11,168, 1, 8, 11, 12, 0, 9, 11, + 12, 0, 10, 11, 12, 0, 11, 11, 12, 0, 12, 11,172, 1, 13, 11, 12, 0, 14, 11,214, 0, 15, 11,171, 1, 31, 0,171, 1, 0, 0, +171, 1, 1, 0, 9, 0, 16, 11, 4, 0,198, 7, 2, 0, 17, 11, 2, 0, 37, 0,219, 0, 61, 6,219, 0, 18, 11, 0, 0, 19, 11, + 2, 0, 20, 11, 2, 0, 21, 11, 2, 0,220, 7, 2, 0,221, 7, 2, 0, 22, 11, 2, 0, 23, 11, 2, 0,182, 3, 2, 0,184, 6, + 2, 0, 24, 11, 2, 0, 25, 11, 2, 0,208, 9,173, 1, 26, 11,174, 1, 27, 11,175, 1, 28, 11, 4, 0, 29, 11, 4, 0, 30, 11, + 9, 0, 31, 11, 12, 0, 7, 11, 12, 0,240, 7, 12, 0, 32, 11, 12, 0, 33, 11, 12, 0, 34, 11,176, 1, 17, 0,176, 1, 0, 0, +176, 1, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, 2, 0, 36, 11, 2, 0, 17, 0, 2, 0, 15, 0, 2, 0, 37, 11, 2, 0, 38, 11, + 2, 0, 39, 11, 2, 0, 40, 11, 2, 0, 41, 11, 2, 0, 19, 0, 2, 0, 42, 11, 2, 0, 31, 0, 2, 0, 37, 0,177, 1, 43, 11, +178, 1, 10, 0,178, 1, 0, 0,178, 1, 1, 0, 12, 0, 44, 11, 0, 0, 35, 11, 2, 0, 45, 11, 2, 0, 46, 11, 2, 0, 19, 0, + 2, 0, 47, 11, 4, 0, 48, 11, 9, 0, 49, 11,172, 1, 7, 0,172, 1, 0, 0,172, 1, 1, 0, 0, 0, 35, 11, 0, 0, 50, 11, + 12, 0,150, 7, 4, 0, 51, 11, 4, 0, 19, 0,227, 0, 14, 0,227, 0, 0, 0,227, 0, 1, 0, 0, 0, 35, 11, 26, 0, 30, 0, +179, 1,214, 7, 9, 0, 52, 11, 9, 0, 53, 11,177, 1, 43, 11,168, 1, 54, 11, 12, 0, 55, 11,227, 0, 56, 11, 7, 1, 97, 6, + 2, 0, 19, 0, 2, 0,178, 4,180, 1, 8, 0,180, 1, 0, 0,180, 1, 1, 0, 9, 0, 2, 0, 9, 0, 57, 11, 0, 0,239, 3, + 2, 0, 17, 0, 2, 0, 19, 0, 7, 0, 58, 11,181, 1, 5, 0, 7, 0, 59, 11, 4, 0, 60, 11, 4, 0, 61, 11, 4, 0, 69, 1, + 4, 0, 19, 0,182, 1, 6, 0, 7, 0, 62, 11, 7, 0, 63, 11, 7, 0, 64, 11, 7, 0, 65, 11, 4, 0, 17, 0, 4, 0, 19, 0, +183, 1, 5, 0, 7, 0,197, 8, 7, 0,198, 8, 7, 0,209, 2, 2, 0, 28, 2, 2, 0, 29, 2,184, 1, 5, 0,183, 1, 2, 0, + 4, 0, 54, 0, 7, 0, 66, 11, 7, 0,197, 8, 7, 0,198, 8,185, 1, 4, 0, 2, 0, 67, 11, 2, 0, 68, 11, 2, 0, 69, 11, + 2, 0, 70, 11,186, 1, 2, 0, 42, 0,150, 6, 26, 0,244, 8,187, 1, 3, 0, 24, 0, 71, 11, 4, 0, 19, 0, 4, 0, 37, 0, +188, 1, 6, 0, 7, 0,106, 0, 7, 0,211, 2, 7, 0, 72, 11, 7, 0, 37, 0, 2, 0,243, 0, 2, 0, 73, 11,189, 1, 5, 0, + 7, 0, 74, 11, 7, 0,120, 0, 7, 0, 21, 9, 7, 0, 22, 9, 4, 0, 19, 0,190, 1, 6, 0, 27, 0,156, 6, 0, 0, 75, 11, + 0, 0, 76, 11, 2, 0, 77, 11, 2, 0, 19, 0, 4, 0, 78, 11,191, 1, 7, 0,191, 1, 0, 0,191, 1, 1, 0, 0, 0,239, 3, +190, 1, 79, 11, 2, 0, 80, 11, 2, 0, 17, 0, 7, 0, 61, 0,192, 1, 7, 0, 12, 0, 81, 11, 0, 0, 82, 11, 9, 0, 83, 11, + 7, 0, 61, 0, 7, 0, 58, 11, 4, 0, 17, 0, 4, 0, 19, 0,193, 1, 3, 0, 7, 0, 84, 11, 4, 0, 19, 0, 4, 0, 37, 0, +194, 1, 15, 0,194, 1, 0, 0,194, 1, 1, 0, 84, 1, 92, 9,192, 1, 62, 0, 12, 0,101, 3, 35, 0, 50, 0,193, 1, 85, 11, + 4, 0, 54, 0, 7, 0, 61, 0, 2, 0, 19, 0, 2, 0, 12, 1, 4, 0, 86, 11, 0, 0, 75, 11, 4, 0, 87, 11, 7, 0, 88, 11, +195, 1, 2, 0, 0, 0, 89, 11, 0, 0, 90, 11,196, 1, 4, 0,196, 1, 0, 0,196, 1, 1, 0,161, 0, 43, 3, 12, 0, 91, 11, +197, 1, 24, 0,197, 1, 0, 0,197, 1, 1, 0, 12, 0, 92, 11,161, 0,175, 8,196, 1, 93, 11, 12, 0, 94, 11, 12, 0,101, 3, + 0, 0,239, 3, 7, 0, 58, 11, 7, 0, 95, 11, 7, 0, 88, 0, 7, 0, 89, 0, 7, 0,155, 9, 7, 0,156, 9, 7, 0,228, 2, + 7, 0,159, 9, 7, 0,177, 8, 7, 0,160, 9, 2, 0, 96, 11, 2, 0, 97, 11, 2, 0, 43, 0, 2, 0, 17, 0, 4, 0, 19, 0, + 4, 0, 70, 0,198, 1, 6, 0,198, 1, 0, 0,198, 1, 1, 0, 12, 0, 92, 11, 4, 0, 19, 0, 4, 0,145, 2, 0, 0,239, 3, +199, 1, 11, 0,199, 1, 0, 0,199, 1, 1, 0, 27, 0,156, 6, 0, 0, 98, 11, 4, 0, 78, 11, 2, 0, 99, 11, 2, 0, 37, 0, + 0, 0, 75, 11, 4, 0, 86, 11, 2, 0, 19, 0, 2, 0,100, 11,200, 1, 8, 0,200, 1, 0, 0,200, 1, 1, 0, 12, 0,101, 11, + 0, 0,239, 3, 0, 0,102, 11, 2, 0, 19, 0, 2, 0,100, 11, 4, 0,103, 11,201, 1, 5, 0,201, 1, 0, 0,201, 1, 1, 0, + 0, 0, 75, 11, 4, 0, 86, 11, 7, 0,199, 2, 39, 0, 12, 0,161, 0, 93, 3,161, 0,104, 11,196, 1, 93, 11, 12, 0,105, 11, +197, 1,106, 11, 12, 0,107, 11, 12, 0,108, 11, 4, 0, 19, 0, 4, 0,244, 0, 2, 0,109, 11, 2, 0,110, 11, 7, 0,111, 11, +202, 1, 2, 0, 27, 0, 31, 0, 39, 0, 75, 0,203, 1, 5, 0,203, 1, 0, 0,203, 1, 1, 0, 4, 0, 17, 0, 4, 0, 19, 0, + 0, 0, 20, 0,204, 1, 6, 0,203, 1,112, 11, 32, 0, 45, 0, 4, 0,113, 11, 7, 0,114, 11, 4, 0,115, 11, 4, 0, 81, 9, +205, 1, 3, 0,203, 1,112, 11, 4, 0,113, 11, 7, 0,116, 11,206, 1, 8, 0,203, 1,112, 11, 32, 0, 45, 0, 7, 0, 64, 1, + 7, 0,117, 11, 7, 0, 9, 3, 7, 0,237, 8, 4, 0,113, 11, 4, 0,118, 11,207, 1, 5, 0,203, 1,112, 11, 7, 0,119, 11, + 7, 0, 56, 8, 7, 0,234, 2, 7, 0, 57, 0,208, 1, 3, 0,203, 1,112, 11, 7, 0,237, 8, 7, 0,120, 11,151, 1, 4, 0, + 7, 0,121, 11, 7, 0,148, 10, 2, 0,122, 11, 2, 0, 69, 1,209, 1, 14, 0,209, 1, 0, 0,209, 1, 1, 0, 12, 0,123, 11, + 12, 0,124, 11, 12, 0,125, 11, 0, 0, 20, 0, 4, 0, 31, 0, 4, 0, 19, 0, 4, 0,126, 11, 7, 0,127, 11, 4, 0,115, 11, + 4, 0, 81, 9, 7, 0,248, 3, 7, 0,236, 2,158, 1, 23, 0, 4, 0,113, 11, 4, 0,128, 11, 7, 0,129, 11, 7, 0, 57, 0, + 7, 0,130, 11, 7, 0,232, 2, 7, 0,121, 11, 7, 0,131, 11, 7, 0,211, 2, 7, 0, 42, 10, 7, 0,128, 4, 7, 0,132, 11, + 7, 0,133, 11, 7, 0,134, 11, 7, 0,135, 11, 7, 0,136, 11, 7, 0,137, 11, 7, 0,138, 11, 7, 0,139, 11, 7, 0,140, 11, + 7, 0,141, 11, 7, 0,142, 11, 12, 0,143, 11,120, 0, 36, 0,119, 0,144, 11,210, 1,104, 10, 67, 0,145, 11, 67, 0,177, 10, + 67, 0,146, 11,211, 1,147, 11, 48, 0,162, 0, 48, 0,148, 11, 48, 0,149, 11, 7, 0,150, 11, 7, 0,151, 11, 7, 0,152, 11, + 7, 0,153, 11, 7, 0,154, 11, 7, 0, 93, 9, 7, 0,155, 11, 7, 0,158, 1, 7, 0,156, 11, 4, 0,157, 11, 4, 0,158, 11, + 4, 0,159, 11, 4, 0, 90, 0, 4, 0, 37, 0, 4, 0,160, 11, 2, 0,161, 11, 2, 0,162, 11, 4, 0,163, 11, 7, 0,211, 2, + 4, 0,164, 11, 7, 0,165, 11, 4, 0,166, 11, 4, 0,167, 11, 4, 0,168, 11,136, 0,169, 11, 12, 0,170, 11,172, 0, 62, 4, +121, 0, 11, 0,119, 0,144, 11,147, 0, 29, 3, 7, 0,125, 1, 7, 0, 93, 9, 7, 0,171, 11, 7, 0,172, 11, 2, 0,173, 11, + 2, 0,174, 11, 2, 0,175, 11, 2, 0, 17, 0, 4, 0, 37, 0,122, 0, 13, 0,119, 0,144, 11,138, 0, 6, 3,140, 0, 8, 3, + 7, 0, 20, 9, 7, 0,176, 11, 7, 0,177, 11, 7, 0, 66, 1, 7, 0,178, 11, 4, 0,115, 9, 4, 0, 4, 3, 2, 0, 17, 0, + 2, 0, 37, 0, 4, 0, 70, 0, 69, 78, 68, 66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0}; + diff --git a/source/blender/editors/gpencil/CMakeLists.txt b/source/blender/editors/gpencil/CMakeLists.txt new file mode 100644 index 00000000000..394418b5688 --- /dev/null +++ b/source/blender/editors/gpencil/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../imbuf + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/guardedalloc +) + +BLENDERLIB(bf_editor_gpencil "${SRC}" "${INC}") diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c index ed1835266d5..2b26f4a295d 100644 --- a/source/blender/editors/gpencil/drawgpencil.c +++ b/source/blender/editors/gpencil/drawgpencil.c @@ -34,19 +34,15 @@ #include "MEM_guardedalloc.h" -#include "IMB_imbuf.h" #include "IMB_imbuf_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" #include "DNA_gpencil_types.h" -#include "DNA_listBase.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -55,20 +51,15 @@ #include "BKE_sequencer.h" #include "BKE_utildefines.h" -#include "PIL_time.h" #include "WM_api.h" -#include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" #include "ED_gpencil.h" #include "ED_sequencer.h" -#include "ED_util.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "gpencil_intern.h" @@ -684,7 +675,7 @@ void draw_gpencil_2dimage (bContext *C, ImBuf *ibuf) zoom= (float)(SEQ_ZOOM_FAC(sseq->zoom)); if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) { /* XXX sequencer zoom should store it? */ - zoomx = zoom; // * ((float)G.scene->r.xasp / (float)G.scene->r.yasp); + zoomx = zoom; // * (G.scene->r.xasp / G.scene->r.yasp); zoomy = zoom; } else @@ -718,7 +709,7 @@ void draw_gpencil_2dimage (bContext *C, ImBuf *ibuf) /* draw grease-pencil sketches to specified 2d-view assuming that matrices are already set correctly * Note: this gets called twice - first time with onlyv2d=1 to draw 'canvas' strokes, second time with onlyv2d=0 for screen-aligned strokes */ -void draw_gpencil_2dview (bContext *C, short onlyv2d) +void draw_gpencil_view2d (bContext *C, short onlyv2d) { ScrArea *sa= CTX_wm_area(C); ARegion *ar= CTX_wm_region(C); @@ -744,7 +735,7 @@ void draw_gpencil_2dview (bContext *C, short onlyv2d) /* draw grease-pencil sketches to specified 3d-view assuming that matrices are already set correctly * Note: this gets called twice - first time with only3d=1 to draw 3d-strokes, second time with only3d=0 for screen-aligned strokes */ -void draw_gpencil_3dview_ext (Scene *scene, ARegion *ar, short only3d) +void draw_gpencil_view3d_ext (Scene *scene, ARegion *ar, short only3d) { bGPdata *gpd; int dflag = 0; @@ -758,11 +749,11 @@ void draw_gpencil_3dview_ext (Scene *scene, ARegion *ar, short only3d) gp_draw_data(gpd, 0, 0, ar->winx, ar->winy, CFRA, dflag); } -void draw_gpencil_3dview (bContext *C, short only3d) +void draw_gpencil_view3d (bContext *C, short only3d) { ARegion *ar= CTX_wm_region(C); Scene *scene= CTX_data_scene(C); - draw_gpencil_3dview_ext(scene, ar, only3d); + draw_gpencil_view3d_ext(scene, ar, only3d); } /* ************************************************** */ diff --git a/source/blender/editors/gpencil/editaction_gpencil.c b/source/blender/editors/gpencil/editaction_gpencil.c index bfe0ba16af5..dff0839b5bd 100644 --- a/source/blender/editors/gpencil/editaction_gpencil.c +++ b/source/blender/editors/gpencil/editaction_gpencil.c @@ -36,14 +36,6 @@ #include "BLI_math.h" #include "BLI_blenlib.h" -#include "DNA_listBase.h" -#include "DNA_action_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "BKE_global.h" #include "BKE_utildefines.h" @@ -54,15 +46,7 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "PIL_time.h" -#include "ED_anim_api.h" -#include "ED_gpencil.h" -#include "ED_keyframes_edit.h" -#include "ED_keyframes_draw.h" -#include "ED_markers.h" -#include "ED_util.h" -#include "ED_types.h" #include "gpencil_intern.h" diff --git a/source/blender/editors/gpencil/gpencil_buttons.c b/source/blender/editors/gpencil/gpencil_buttons.c index 789355d2136..17bafa3d399 100644 --- a/source/blender/editors/gpencil/gpencil_buttons.c +++ b/source/blender/editors/gpencil/gpencil_buttons.c @@ -36,11 +36,7 @@ #include "BLI_blenlib.h" #include "DNA_gpencil_types.h" -#include "DNA_listBase.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -56,12 +52,9 @@ #include "BIF_glutil.h" #include "ED_gpencil.h" -#include "ED_sequencer.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "gpencil_intern.h" @@ -129,11 +122,11 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* active */ icon= (gpl->flag & GP_LAYER_ACTIVE) ? ICON_RADIOBUT_ON : ICON_RADIOBUT_OFF; - uiItemR(subrow, "", icon, &ptr, "active", 0); + uiItemR(subrow, &ptr, "active", 0, "", icon); /* locked */ icon= (gpl->flag & GP_LAYER_LOCKED) ? ICON_LOCKED : ICON_UNLOCKED; - uiItemR(subrow, "", icon, &ptr, "locked", 0); + uiItemR(subrow, &ptr, "locked", 0, "", icon); /* when layer is locked or hidden, only draw header */ if (gpl->flag & (GP_LAYER_LOCKED|GP_LAYER_HIDE)) { @@ -141,7 +134,7 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* visibility button (only if hidden but not locked!) */ if ((gpl->flag & GP_LAYER_HIDE) && !(gpl->flag & GP_LAYER_LOCKED)) - uiItemR(subrow, "", ICON_RESTRICT_VIEW_ON, &ptr, "hide", 0); + uiItemR(subrow, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_ON); /* name */ @@ -166,17 +159,17 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) else { /* draw rest of header -------------------------------- */ /* visibility button */ - uiItemR(subrow, "", ICON_RESTRICT_VIEW_OFF, &ptr, "hide", 0); + uiItemR(subrow, &ptr, "hide", 0, "", ICON_RESTRICT_VIEW_OFF); /* frame locking */ // TODO: this needs its own icons... icon= (gpl->flag & GP_LAYER_FRAMELOCK) ? ICON_RENDER_STILL : ICON_RENDER_ANIMATION; - uiItemR(subrow, "", icon, &ptr, "frame_lock", 0); + uiItemR(subrow, &ptr, "frame_lock", 0, "", icon); uiBlockSetEmboss(block, UI_EMBOSS); /* name */ - uiItemR(subrow, "", 0, &ptr, "info", 0); + uiItemR(subrow, &ptr, "info", 0, "", 0); /* delete 'button' */ uiBlockSetEmboss(block, UI_EMBOSSN); @@ -200,17 +193,17 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* color */ subcol= uiLayoutColumn(col, 1); - uiItemR(subcol, "", 0, &ptr, "color", 0); - uiItemR(subcol, NULL, 0, &ptr, "opacity", UI_ITEM_R_SLIDER); + uiItemR(subcol, &ptr, "color", 0, "", 0); + uiItemR(subcol, &ptr, "opacity", UI_ITEM_R_SLIDER, NULL, 0); /* stroke thickness */ subcol= uiLayoutColumn(col, 1); - uiItemR(subcol, NULL, 0, &ptr, "line_thickness", UI_ITEM_R_SLIDER); + uiItemR(subcol, &ptr, "line_thickness", UI_ITEM_R_SLIDER, NULL, 0); /* debugging options */ if (G.f & G_DEBUG) { subcol= uiLayoutColumn(col, 1); - uiItemR(subcol, NULL, 0, &ptr, "show_points", 0); + uiItemR(subcol, &ptr, "show_points", 0, NULL, 0); } /* right column ................... */ @@ -218,8 +211,8 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) /* onion-skinning */ subcol= uiLayoutColumn(col, 1); - uiItemR(subcol, "Onion Skinning", 0, &ptr, "use_onion_skinning", 0); - uiItemR(subcol, "Frames", 0, &ptr, "max_ghost_range", 0); // XXX shorter name here? (i.e. GStep) + uiItemR(subcol, &ptr, "use_onion_skinning", 0, "Onion Skinning", 0); + uiItemR(subcol, &ptr, "max_ghost_range", 0, "Frames", 0); // XXX shorter name here? i.e. GStep /* additional options... */ subcol= uiLayoutColumn(col, 1); @@ -228,12 +221,20 @@ static void gp_drawui_layer (uiLayout *layout, bGPdata *gpd, bGPDlayer *gpl) } } +/* stroke drawing options available */ +typedef enum eGP_Stroke_Ops { + STROKE_OPTS_NORMAL = 0, + STROKE_OPTS_V3D_OFF, + STROKE_OPTS_V3D_ON, +} eGP_Stroke_Ops; + /* Draw the contents for a grease-pencil panel*/ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, PointerRNA *ctx_ptr) { PointerRNA gpd_ptr; bGPDlayer *gpl; uiLayout *col, *row; + short v3d_stroke_opts = STROKE_OPTS_NORMAL; /* make new PointerRNA for Grease Pencil block */ RNA_id_pointer_create((ID *)gpd, &gpd_ptr); @@ -242,7 +243,7 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi col= uiLayoutColumn(layout, 0); /* current Grease Pencil block */ // TODO: show some info about who owns this? - uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink"); + uiTemplateID(col, C, ctx_ptr, "grease_pencil", "GPENCIL_OT_data_add", NULL, "GPENCIL_OT_data_unlink", NULL); /* add new layer button - can be used even when no data, since it can add a new block too */ uiItemO(col, NULL, 0, "GPENCIL_OT_layer_add"); @@ -262,17 +263,26 @@ static void draw_gpencil_panel (bContext *C, uiLayout *layout, bGPdata *gpd, Poi /* label */ uiItemL(col, "Drawing Settings:", 0); - /* 'stick to view' option */ + /* check whether advanced 3D-View drawing space options can be used */ + if (CTX_wm_view3d(C)) { + if (gpd->flag & (GP_DATA_DEPTH_STROKE|GP_DATA_DEPTH_VIEW)) + v3d_stroke_opts = STROKE_OPTS_V3D_ON; + else + v3d_stroke_opts = STROKE_OPTS_V3D_OFF; + } + + /* drawing space options */ row= uiLayoutRow(col, 1); - uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "VIEW"); - uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "CURSOR"); + uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "VIEW", NULL, 0); + uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "CURSOR", NULL, 0); row= uiLayoutRow(col, 1); - uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "SURFACE"); - uiItemEnumR_string(row, NULL, 0, &gpd_ptr, "draw_mode", "STROKE"); + uiLayoutSetActive(row, v3d_stroke_opts); + uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "SURFACE", NULL, 0); + uiItemEnumR_string(row, &gpd_ptr, "draw_mode", "STROKE", NULL, 0); row= uiLayoutRow(col, 0); - uiLayoutSetActive(row, (gpd->flag & (GP_DATA_DEPTH_STROKE|GP_DATA_DEPTH_VIEW)) ? 1:0); - uiItemR(row, NULL, 0, &gpd_ptr, "use_stroke_endpoints", 0); + uiLayoutSetActive(row, v3d_stroke_opts==STROKE_OPTS_V3D_ON); + uiItemR(row, &gpd_ptr, "use_stroke_endpoints", 0, NULL, 0); } diff --git a/source/blender/editors/gpencil/gpencil_edit.c b/source/blender/editors/gpencil/gpencil_edit.c index 7bcfc81bf26..c487c0469ba 100644 --- a/source/blender/editors/gpencil/gpencil_edit.c +++ b/source/blender/editors/gpencil/gpencil_edit.c @@ -34,23 +34,16 @@ #include "MEM_guardedalloc.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" -#include "DNA_listBase.h" -#include "DNA_armature_types.h" #include "DNA_curve_types.h" -#include "DNA_gpencil_types.h" #include "DNA_object_types.h" #include "DNA_node_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_vec_types.h" #include "DNA_view3d_types.h" #include "BKE_armature.h" @@ -76,9 +69,6 @@ #include "UI_view2d.h" -#include "ED_armature.h" -#include "ED_gpencil.h" -#include "ED_sequencer.h" #include "ED_view3d.h" #include "gpencil_intern.h" @@ -423,7 +413,7 @@ static void gp_stroke_to_path (bContext *C, bGPDlayer *gpl, bGPDstroke *gps, Cur nu->pntsu= gps->totpoints; nu->pntsv= 1; nu->orderu= gps->totpoints; - nu->flagu= 2; /* endpoint */ + nu->flagu= CU_NURB_ENDPOINT; nu->resolu= 32; nu->bp= (BPoint *)MEM_callocN(sizeof(BPoint)*gps->totpoints, "bpoints"); @@ -451,38 +441,60 @@ static void gp_stroke_to_bezier (bContext *C, bGPDlayer *gpl, bGPDstroke *gps, C bGPDspoint *pt; Nurb *nu; BezTriple *bezt; - int i; - + int i, tot; + float p3d_cur[3], p3d_prev[3], p3d_next[3]; + /* create new 'nurb' within the curve */ nu = (Nurb *)MEM_callocN(sizeof(Nurb), "gpstroke_to_bezier(nurb)"); - + nu->pntsu= gps->totpoints; nu->resolu= 12; nu->resolv= 12; nu->type= CU_BEZIER; nu->bezt = (BezTriple *)MEM_callocN(gps->totpoints*sizeof(BezTriple), "bezts"); - + + tot= gps->totpoints; + + /* get initial coordinates */ + pt=gps->points; + if (tot) { + gp_strokepoint_convertcoords(C, gps, pt, p3d_cur); + if (tot > 1) { + gp_strokepoint_convertcoords(C, gps, pt+1, p3d_next); + } + } + /* add points */ - for (i=0, pt=gps->points, bezt=nu->bezt; i < gps->totpoints; i++, pt++, bezt++) { - float p3d[3]; - - /* get coordinates to add at */ - gp_strokepoint_convertcoords(C, gps, pt, p3d); - - /* TODO: maybe in future the handles shouldn't be in same place */ - copy_v3_v3(bezt->vec[0], p3d); - copy_v3_v3(bezt->vec[1], p3d); - copy_v3_v3(bezt->vec[2], p3d); - + for (i=0, bezt=nu->bezt; i < tot; i++, pt++, bezt++) { + float h1[3], h2[3]; + + if (i) interp_v3_v3v3(h1, p3d_cur, p3d_prev, 0.3); + else interp_v3_v3v3(h1, p3d_cur, p3d_next, -0.3); + + if (i < tot-1) interp_v3_v3v3(h2, p3d_cur, p3d_next, 0.3); + else interp_v3_v3v3(h2, p3d_cur, p3d_prev, -0.3); + + copy_v3_v3(bezt->vec[0], h1); + copy_v3_v3(bezt->vec[1], p3d_cur); + copy_v3_v3(bezt->vec[2], h2); + /* set settings */ bezt->h1= bezt->h2= HD_FREE; bezt->f1= bezt->f2= bezt->f3= SELECT; bezt->radius = bezt->weight = pt->pressure * gpl->thickness * 0.1f; + + /* shift coord vects */ + copy_v3_v3(p3d_prev, p3d_cur); + copy_v3_v3(p3d_cur, p3d_next); + + if (i < tot) { + gp_strokepoint_convertcoords(C, gps, pt+1, p3d_next); + } } - + /* must calculate handles or else we crash */ calchandlesNurb(nu); - + /* add nurb to curve */ BLI_addtail(&cu->nurb, nu); } @@ -503,7 +515,7 @@ static void gp_layer_to_curve (bContext *C, bGPdata *gpd, bGPDlayer *gpl, short /* only convert if there are any strokes on this layer's frame to convert */ if (gpf->strokes.first == NULL) return; - + /* init the curve object (remove rotation and get curve data from it) * - must clear transforms set on object, as those skew our results */ @@ -549,16 +561,16 @@ static int gp_convert_layer_exec (bContext *C, wmOperator *op) View3D *v3d= CTX_wm_view3d(C); float *fp= give_cursor(scene, v3d); int mode= RNA_enum_get(op->ptr, "type"); - + /* check if there's data to work with */ if (gpd == NULL) { BKE_report(op->reports, RPT_ERROR, "No Grease Pencil data to work on."); return OPERATOR_CANCELLED; } - + /* initialise 3d-cursor correction globals */ initgrabz(CTX_wm_region_view3d(C), fp[0], fp[1], fp[2]); - + /* handle conversion modes */ switch (mode) { case GP_STROKECONVERT_PATH: @@ -570,10 +582,11 @@ static int gp_convert_layer_exec (bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "Unknown conversion option."); return OPERATOR_CANCELLED; } - + /* notifiers */ WM_event_add_notifier(C, NC_OBJECT|NA_ADDED, NULL); - + WM_event_add_notifier(C, NC_SCENE|ND_OB_ACTIVE, scene); + /* done */ return OPERATOR_FINISHED; } diff --git a/source/blender/editors/gpencil/gpencil_intern.h b/source/blender/editors/gpencil/gpencil_intern.h index c2a8f339e14..1bfe65eb36c 100644 --- a/source/blender/editors/gpencil/gpencil_intern.h +++ b/source/blender/editors/gpencil/gpencil_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/gpencil/gpencil_ops.c b/source/blender/editors/gpencil/gpencil_ops.c index 5c8594d4016..d9bd43cc851 100644 --- a/source/blender/editors/gpencil/gpencil_ops.c +++ b/source/blender/editors/gpencil/gpencil_ops.c @@ -31,14 +31,11 @@ #include "BLI_blenlib.h" -#include "DNA_windowmanager_types.h" #include "WM_api.h" #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" -#include "RNA_enum_types.h" #include "gpencil_intern.h" diff --git a/source/blender/editors/gpencil/gpencil_paint.c b/source/blender/editors/gpencil/gpencil_paint.c index 2e45c65568f..b52297a319c 100644 --- a/source/blender/editors/gpencil/gpencil_paint.c +++ b/source/blender/editors/gpencil/gpencil_paint.c @@ -42,21 +42,12 @@ #include "BKE_report.h" #include "BKE_utildefines.h" -#include "DNA_gpencil_types.h" -#include "DNA_action_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_view2d_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "UI_view2d.h" -#include "ED_armature.h" #include "ED_gpencil.h" -#include "ED_sequencer.h" #include "ED_screen.h" #include "ED_view3d.h" @@ -170,7 +161,9 @@ static void gp_get_3d_reference (tGPsdata *p, float *vec) float *fp= give_cursor(p->scene, v3d); /* the reference point used depends on the owner... */ - if (p->ownerPtr.type == &RNA_Object) { +#if 0 // XXX: disabled for now, since we can't draw relative ot the owner yet + if (p->ownerPtr.type == &RNA_Object) + { Object *ob= (Object *)p->ownerPtr.data; /* active Object @@ -178,7 +171,9 @@ static void gp_get_3d_reference (tGPsdata *p, float *vec) */ sub_v3_v3v3(vec, fp, ob->loc); } - else { + else +#endif + { /* use 3D-cursor */ copy_v3_v3(vec, fp); } @@ -1077,7 +1072,7 @@ static void gp_paint_initstroke (tGPsdata *p, short paintmode) /* calculate zoom factor */ zoom= (float)(SEQ_ZOOM_FAC(sseq->zoom)); if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) { - zoomx = zoom * ((float)p->scene->r.xasp / (float)p->scene->r.yasp); + zoomx = zoom * (p->scene->r.xasp / p->scene->r.yasp); zoomy = zoom; } else @@ -1101,7 +1096,20 @@ static void gp_paint_initstroke (tGPsdata *p, short paintmode) #endif case SPACE_IMAGE: { - p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE; + SpaceImage *sima= (SpaceImage *)p->sa->spacedata.first; + + /* only set these flags if the image editor doesn't have an image active, + * otherwise user will be confused by strokes not appearing after they're drawn + * + * Admittedly, this is a bit hacky, but it works much nicer from an ergonomic standpoint! + */ + if ELEM(NULL, sima, sima->image) { + /* make strokes be drawn in screen space */ + p->gpd->sbuffer_sflag &= ~GP_STROKE_2DSPACE; + p->gpd->flag &= ~GP_DATA_VIEWALIGN; + } + else + p->gpd->sbuffer_sflag |= GP_STROKE_2DSPACE; } break; } @@ -1473,6 +1481,7 @@ static int gpencil_draw_modal (bContext *C, wmOperator *op, wmEvent *event) /* moving mouse - assumed that mouse button is down if in painting status */ case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: /* check if we're currently painting */ if (p->status == GP_STATUS_PAINTING) { /* handle drawing event */ @@ -1507,6 +1516,8 @@ static EnumPropertyItem prop_gpencil_drawmodes[] = { void GPENCIL_OT_draw (wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Grease Pencil Draw"; ot->idname= "GPENCIL_OT_draw"; @@ -1523,6 +1534,8 @@ void GPENCIL_OT_draw (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; /* settings for drawing */ - RNA_def_enum(ot->srna, "mode", prop_gpencil_drawmodes, 0, "Mode", "Way to intepret mouse movements."); + prop= RNA_def_enum(ot->srna, "mode", prop_gpencil_drawmodes, 0, "Mode", "Way to intepret mouse movements."); + RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", ""); } diff --git a/source/blender/editors/include/BIF_gl.h b/source/blender/editors/include/BIF_gl.h index 963a617fe87..aca0e671067 100644 --- a/source/blender/editors/include/BIF_gl.h +++ b/source/blender/editors/include/BIF_gl.h @@ -31,7 +31,7 @@ #ifndef BIF_GL_H #define BIF_GL_H -#include "GL/glew.h" +#include "../../../../extern/glew/include/GL/glew.h" /* * these should be phased out. cpack should be replaced in diff --git a/source/blender/editors/include/BIF_glutil.h b/source/blender/editors/include/BIF_glutil.h index 99fb25e336d..8f37baf9af1 100644 --- a/source/blender/editors/include/BIF_glutil.h +++ b/source/blender/editors/include/BIF_glutil.h @@ -1,5 +1,5 @@ /** - * $Id: BIF_glutil.h + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_anim_api.h b/source/blender/editors/include/ED_anim_api.h index 2f089a41a3f..5fb7fa41752 100644 --- a/source/blender/editors/include/ED_anim_api.h +++ b/source/blender/editors/include/ED_anim_api.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -102,8 +102,11 @@ typedef struct bAnimListElem { int flag; /* copy of elem's flags for quick access */ int index; /* for un-named data, the index of the data in it's collection */ - void *key_data; /* motion data - mostly F-Curves, but can be other types too */ + short elemFlag; /* flags for the list elem instance (not the data it represents) */ + short datatype; /* type of motion data to expect */ + void *key_data; /* motion data - mostly F-Curves, but can be other types too */ + struct ID *id; /* ID block that channel is attached to */ struct AnimData *adt; /* source of the animation data attached to ID block (for convenience) */ @@ -192,6 +195,7 @@ typedef enum eAnimFilter_Flags { ANIMFILTER_ANIMDATA = (1<<9), /* only return the underlying AnimData blocks (not the tracks, etc.) data comes from */ ANIMFILTER_NLATRACKS = (1<<10), /* only include NLA-tracks */ ANIMFILTER_SELEDIT = (1<<11), /* link editability with selected status */ + ANIMFILTER_NODUPLIS = (1<<12), /* duplicate entries for animation data attached to multi-user blocks must not occur */ /* all filters - the power inside the bracket must be the last power for left-shifts + 1 */ ANIMFILTER_ALLFILTERS = ((1<<12) - 1) @@ -326,7 +330,7 @@ typedef enum eAnimChannels_SetFlag { /* types of settings for AnimChannels */ typedef enum eAnimChannel_Settings { - ACHANNEL_SETTING_SELECT = 0, + ACHANNEL_SETTING_SELECT = 0, ACHANNEL_SETTING_PROTECT, // warning: for drawing UI's, need to check if this is off (maybe inverse this later) ACHANNEL_SETTING_MUTE, ACHANNEL_SETTING_EXPAND, @@ -452,9 +456,28 @@ void ANIM_draw_previewrange(const struct bContext *C, struct View2D *v2d); /* ************************************************* */ /* F-MODIFIER TOOLS */ +/* ------------- UI Panel Drawing -------------- */ + /* draw a given F-Modifier for some layout/UI-Block */ void ANIM_uiTemplate_fmodifier_draw(struct uiLayout *layout, struct ID *id, ListBase *modifiers, struct FModifier *fcm); +/* ------------- Copy/Paste Buffer -------------- */ + + +/* free the copy/paste buffer */ +void free_fmodifiers_copybuf(void); + +/* copy the given F-Modifiers to the buffer, returning whether anything was copied or not + * assuming that the buffer has been cleared already with free_fmodifiers_copybuf() + * - active: only copy the active modifier + */ +short ANIM_fmodifiers_copy_to_buf(ListBase *modifiers, short active); + +/* 'Paste' the F-Modifier(s) from the buffer to the specified list + * - replace: free all the existing modifiers to leave only the pasted ones + */ +short ANIM_fmodifiers_paste_from_buf(ListBase *modifiers, short replace); + /* ************************************************* */ /* ASSORTED TOOLS */ diff --git a/source/blender/editors/include/ED_armature.h b/source/blender/editors/include/ED_armature.h index 95d0c4cfaca..d2d1e2a1d69 100644 --- a/source/blender/editors/include/ED_armature.h +++ b/source/blender/editors/include/ED_armature.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -102,7 +102,6 @@ void ED_keymap_armature(struct wmKeyConfig *keyconf); void ED_armature_from_edit(struct Object *obedit); void ED_armature_to_edit(struct Object *ob); void ED_armature_edit_free(struct Object *ob); -void ED_armature_edit_remake(struct Object *obedit); void ED_armature_deselectall(struct Object *obedit, int toggle, int doundo); int ED_do_pose_selectbuffer(struct Scene *scene, struct Base *base, unsigned int *buffer, @@ -166,7 +165,7 @@ void BDR_drawSketch(const struct bContext *vc); int BDR_drawSketchNames(struct ViewContext *vc); /* meshlaplacian.c */ -void mesh_deform_bind(struct Scene *scene, struct DerivedMesh *dm, +void mesh_deform_bind(struct Scene *scene, struct MeshDeformModifierData *mmd, float *vertexcos, int totvert, float cagemat[][4]); diff --git a/source/blender/editors/include/ED_curve.h b/source/blender/editors/include/ED_curve.h index d1bba6bf796..a229d919e77 100644 --- a/source/blender/editors/include/ED_curve.h +++ b/source/blender/editors/include/ED_curve.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -71,5 +71,7 @@ void free_editText (struct Object *obedit); void ED_text_to_object(struct bContext *C, struct Text *text, int split_lines); +int CU_select_nth(struct Object *obedit, int nth); + #endif /* ED_CURVE_H */ diff --git a/source/blender/editors/include/ED_datafiles.h b/source/blender/editors/include/ED_datafiles.h index 136d46cdc91..9a5a1a5bea6 100644 --- a/source/blender/editors/include/ED_datafiles.h +++ b/source/blender/editors/include/ED_datafiles.h @@ -31,8 +31,8 @@ /* Datafiles embedded in Blender */ -extern int datatoc_B_blend_size; -extern char datatoc_B_blend[]; +extern int datatoc_startup_blend_size; +extern char datatoc_startup_blend[]; extern int datatoc_blenderbuttons_size; extern char datatoc_blenderbuttons[]; diff --git a/source/blender/editors/include/ED_fileselect.h b/source/blender/editors/include/ED_fileselect.h index 44785b36d0c..5001323cb61 100644 --- a/source/blender/editors/include/ED_fileselect.h +++ b/source/blender/editors/include/ED_fileselect.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,6 +31,7 @@ struct SpaceFile; struct ARegion; struct FileSelectParams; +struct bContext; #define FILE_LAYOUT_HOR 1 #define FILE_LAYOUT_VER 2 @@ -82,11 +83,15 @@ void ED_fileselect_init_layout(struct SpaceFile *sfile, struct ARegion *ar); FileLayout* ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar); int ED_fileselect_layout_numfiles(FileLayout* layout, struct ARegion *ar); -int ED_fileselect_layout_offset(FileLayout* layout, int x, int y); +int ED_fileselect_layout_offset(FileLayout* layout, int clamp_bounds, int x, int y); void ED_fileselect_layout_tilepos(FileLayout* layout, int tile, int *x, int *y); void ED_operatormacros_file(void); +void ED_fileselect_clear(struct bContext *C, struct SpaceFile *sfile); + +void ED_fileselect_exit(struct bContext *C, struct SpaceFile *sfile); + #endif /* ED_FILES_H */ diff --git a/source/blender/editors/include/ED_fluidsim.h b/source/blender/editors/include/ED_fluidsim.h index 8a9a294d423..a1ab3ba2fcc 100644 --- a/source/blender/editors/include/ED_fluidsim.h +++ b/source/blender/editors/include/ED_fluidsim.h @@ -34,8 +34,6 @@ struct Object; struct FluidsimSettings; -extern double fluidsimViscosityPreset[6]; -extern char* fluidsimViscosityPresetString[6]; /* allocates and initializes fluidsim data */ struct FluidsimSettings* fluidsimSettingsNew(struct Object *srcob); diff --git a/source/blender/editors/include/ED_gpencil.h b/source/blender/editors/include/ED_gpencil.h index 05534bd584c..0003cea8147 100644 --- a/source/blender/editors/include/ED_gpencil.h +++ b/source/blender/editors/include/ED_gpencil.h @@ -70,9 +70,9 @@ void ED_operatortypes_gpencil(void); /* drawgpencil.c */ void draw_gpencil_2dimage(struct bContext *C, struct ImBuf *ibuf); -void draw_gpencil_2dview(struct bContext *C, short onlyv2d); -void draw_gpencil_3dview(struct bContext *C, short only3d); -void draw_gpencil_3dview_ext(struct Scene *scene, struct ARegion *ar, short only3d); +void draw_gpencil_view2d(struct bContext *C, short onlyv2d); +void draw_gpencil_view3d(struct bContext *C, short only3d); +void draw_gpencil_view3d_ext(struct Scene *scene, struct ARegion *ar, short only3d); void gpencil_panel_standard(const struct bContext *C, struct Panel *pa); diff --git a/source/blender/editors/include/ED_image.h b/source/blender/editors/include/ED_image.h index 7bf0c284c9b..1d674112b8d 100644 --- a/source/blender/editors/include/ED_image.h +++ b/source/blender/editors/include/ED_image.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_info.h b/source/blender/editors/include/ED_info.h index 2132ef96709..33b890cea60 100644 --- a/source/blender/editors/include/ED_info.h +++ b/source/blender/editors/include/ED_info.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_keyframes_edit.h b/source/blender/editors/include/ED_keyframes_edit.h index 1219cee3a11..60f2526191c 100644 --- a/source/blender/editors/include/ED_keyframes_edit.h +++ b/source/blender/editors/include/ED_keyframes_edit.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -60,10 +60,14 @@ typedef enum eEditKeyframes_Validate { /* select modes */ typedef enum eEditKeyframes_Select { + /* SELECT_SUBTRACT for all, followed by SELECT_ADD for some */ SELECT_REPLACE = (1<<0), + /* add ok keyframes to selection */ SELECT_ADD = (1<<1), + /* remove ok keyframes from selection */ SELECT_SUBTRACT = (1<<2), - SELECT_INVERT = (1<<4), + /* flip ok status of keyframes based on key status */ + SELECT_INVERT = (1<<3), } eEditKeyframes_Select; /* "selection map" building modes */ @@ -94,9 +98,9 @@ typedef enum eEditKeyframes_Mirror { /* ************************************************ */ /* Non-Destuctive Editing API (keyframes_edit.c) */ -/* --- Generic Properties for Bezier Edit Tools ----- */ +/* --- Generic Properties for Keyframe Edit Tools ----- */ -typedef struct BeztEditData { +typedef struct KeyframeEditData { /* generic properties/data access */ ListBase list; /* temp list for storing custom list of data to check */ struct Scene *scene; /* pointer to current scene - many tools need access to cfra/etc. */ @@ -107,36 +111,60 @@ typedef struct BeztEditData { /* current iteration data */ struct FCurve *fcu; /* F-Curve that is being iterated over */ int curIndex; /* index of current keyframe being iterated over */ -} BeztEditData; + + /* flags */ + short curflags; /* current flags for the keyframe we're reached in the iteration process */ + short iterflags; /* settings for iteration process */ // XXX: unused... +} KeyframeEditData; /* ------- Function Pointer Typedefs ---------------- */ /* callback function that refreshes the F-Curve after use */ typedef void (*FcuEditFunc)(struct FCurve *fcu); /* callback function that operates on the given BezTriple */ -typedef short (*BeztEditFunc)(BeztEditData *bed, struct BezTriple *bezt); +typedef short (*KeyframeEditFunc)(KeyframeEditData *ked, struct BezTriple *bezt); + +/* ---------- Defines for 'OK' polls ----------------- */ + +/* which verts of a keyframe is active (after polling) */ +typedef enum eKeyframeVertOk { + /* 'key' itself is ok */ + KEYFRAME_OK_KEY = (1<<0), + /* 'handle 1' is ok */ + KEYFRAME_OK_H1 = (1<<1), + /* 'handle 2' is ok */ + KEYFRAME_OK_H2 = (1<<2), + /* all flags */ + KEYFRAME_OK_ALL = (KEYFRAME_OK_KEY|KEYFRAME_OK_H1|KEYFRAME_OK_H2) +} eKeyframeVertOk; + +/* Flags for use during iteration */ +typedef enum eKeyframeIterFlags { + /* consider handles in addition to key itself */ + KEYFRAME_ITER_INCL_HANDLES = (1<<0), +} eKeyframeIterFlags; /* ------- Custom Data Type Defines ------------------ */ /* Custom data for remapping one range to another in a fixed way */ -typedef struct BeztEditCD_Remap { +typedef struct KeyframeEditCD_Remap { float oldMin, oldMax; /* old range */ float newMin, newMax; /* new range */ -} BeztEditCD_Remap; +} KeyframeEditCD_Remap; /* ---------------- Looping API --------------------- */ /* functions for looping over keyframes */ /* function for working with F-Curve data only (i.e. when filters have been chosen to explicitly use this) */ -short ANIM_fcurve_keys_bezier_loop(BeztEditData *bed, struct FCurve *fcu, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb); +short ANIM_fcurve_keyframes_loop(KeyframeEditData *ked, struct FCurve *fcu, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb); /* function for working with any type (i.e. one of the known types) of animation channel * - filterflag is bDopeSheet->flag (DOPESHEET_FILTERFLAG) */ -short ANIM_animchannel_keys_bezier_loop(BeztEditData *bed, struct bAnimListElem *ale, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag); +short ANIM_animchannel_keyframes_loop(KeyframeEditData *ked, struct bAnimListElem *ale, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag); /* same as above, except bAnimListElem wrapper is not needed... * - keytype is eAnim_KeyType */ -short ANIM_animchanneldata_keys_bezier_loop(BeztEditData *bed, void *data, int keytype, BeztEditFunc bezt_ok, BeztEditFunc bezt_cb, FcuEditFunc fcu_cb, int filterflag); +short ANIM_animchanneldata_keyframes_loop(KeyframeEditData *ked, void *data, int keytype, KeyframeEditFunc key_ok, KeyframeEditFunc key_cb, FcuEditFunc fcu_cb, int filterflag); /* functions for making sure all keyframes are in good order */ void ANIM_editkeyframes_refresh(struct bAnimContext *ac); @@ -144,40 +172,40 @@ void ANIM_editkeyframes_refresh(struct bAnimContext *ac); /* ----------- BezTriple Callback Getters ---------- */ /* accessories */ -BeztEditFunc ANIM_editkeyframes_ok(short mode); +KeyframeEditFunc ANIM_editkeyframes_ok(short mode); /* edit */ -BeztEditFunc ANIM_editkeyframes_snap(short mode); -BeztEditFunc ANIM_editkeyframes_mirror(short mode); -BeztEditFunc ANIM_editkeyframes_select(short mode); -BeztEditFunc ANIM_editkeyframes_handles(short mode); -BeztEditFunc ANIM_editkeyframes_ipo(short mode); -BeztEditFunc ANIM_editkeyframes_keytype(short mode); +KeyframeEditFunc ANIM_editkeyframes_snap(short mode); +KeyframeEditFunc ANIM_editkeyframes_mirror(short mode); +KeyframeEditFunc ANIM_editkeyframes_select(short mode); +KeyframeEditFunc ANIM_editkeyframes_handles(short mode); +KeyframeEditFunc ANIM_editkeyframes_ipo(short mode); +KeyframeEditFunc ANIM_editkeyframes_keytype(short mode); /* -------- BezTriple Callbacks (Selection Map) ---------- */ /* Get a callback to populate the selection settings map - * requires: bed->custom = char[] of length fcurve->totvert + * requires: ked->custom = char[] of length fcurve->totvert */ -BeztEditFunc ANIM_editkeyframes_buildselmap(short mode); +KeyframeEditFunc ANIM_editkeyframes_buildselmap(short mode); /* Change the selection status of the keyframe based on the map entry for this vert - * requires: bed->custom = char[] of length fcurve->totvert + * requires: ked->custom = char[] of length fcurve->totvert */ -short bezt_selmap_flush(BeztEditData *bed, struct BezTriple *bezt); +short bezt_selmap_flush(KeyframeEditData *ked, struct BezTriple *bezt); /* ----------- BezTriple Callback (Assorted Utilities) ---------- */ /* used to calculate the the average location of all relevant BezTriples by summing their locations */ -short bezt_calc_average(BeztEditData *bed, struct BezTriple *bezt); +short bezt_calc_average(KeyframeEditData *ked, struct BezTriple *bezt); /* used to extract a set of cfra-elems from the keyframes */ -short bezt_to_cfraelem(BeztEditData *bed, struct BezTriple *bezt); +short bezt_to_cfraelem(KeyframeEditData *ked, struct BezTriple *bezt); /* used to remap times from one range to another - * requires: bed->custom = BeztEditCD_Remap + * requires: ked->custom = KeyframeEditCD_Remap */ -void bezt_remap_times(BeztEditData *bed, struct BezTriple *bezt); +void bezt_remap_times(KeyframeEditData *ked, struct BezTriple *bezt); /* ************************************************ */ /* Destructive Editing API (keyframes_general.c) */ diff --git a/source/blender/editors/include/ED_keyframing.h b/source/blender/editors/include/ED_keyframing.h index 2c58d9e3ff5..fc5e3a43a62 100644 --- a/source/blender/editors/include/ED_keyframing.h +++ b/source/blender/editors/include/ED_keyframing.h @@ -47,6 +47,8 @@ struct wmOperatorType; struct PointerRNA; struct PropertyRNA; +#include "RNA_types.h" + /* ************ Keyframing Management **************** */ /* Get the active settings for keyframing settings from context (specifically the given scene) @@ -89,8 +91,6 @@ int insert_vert_fcurve(struct FCurve *fcu, float x, float y, short flag); */ short insert_keyframe_direct(struct PointerRNA ptr, struct PropertyRNA *prop, struct FCurve *fcu, float cfra, short flag); - - /* -------- */ /* Main Keyframing API calls: @@ -106,48 +106,99 @@ short delete_keyframe(struct ID *id, struct bAction *act, const char group[], co /* ************ Keying Sets ********************** */ -/* temporary struct to gather data combos to keyframe - * (is used by modify_keyframes for 'relative' KeyingSets, provided via the dsources arg) - */ -typedef struct bCommonKeySrc { - struct bCommonKeySrc *next, *prev; - - /* general data/destination-source settings */ - struct ID *id; /* id-block this comes from */ +/* forward decl. for this struct which is declared a bit later... */ +struct KeyingSetInfo; +struct ExtensionRNA; + +/* Polling Callback for KeyingSets */ +typedef int (*cbKeyingSet_Poll)(struct KeyingSetInfo *ksi, struct bContext *C); +/* Context Iterator Callback for KeyingSets */ +typedef void (*cbKeyingSet_Iterator)(struct KeyingSetInfo *ksi, struct bContext *C, struct KeyingSet *ks); +/* Property Specifier Callback for KeyingSets (called from iterators) */ +typedef void (*cbKeyingSet_Generate)(struct KeyingSetInfo *ksi, struct bContext *C, struct KeyingSet *ks, struct PointerRNA *ptr); + + +/* Callback info for 'Procedural' KeyingSets to use */ +typedef struct KeyingSetInfo { + struct KeyingSetInfo *next, *prev; + + /* info */ + /* identifier so that user can hook this up to a KeyingSet */ + char name[64]; + /* identifier used for class name, which KeyingSet instances reference as "Typeinfo Name" */ + char idname[64]; + /* keying settings */ + short keyingflag; + + /* polling callbacks */ + /* callback for polling the context for whether the right data is available */ + cbKeyingSet_Poll poll; - /* specific cases */ - struct bPoseChannel *pchan; - struct bConstraint *con; -} bCommonKeySrc; + /* generate callbacks */ + /* iterator to use to go through collections of data in context + * - this callback is separate from the 'adding' stage, allowing + * BuiltIn KeyingSets to be manually specified to use + */ + cbKeyingSet_Iterator iter; + /* generator to use to add properties based on the data found by iterator */ + cbKeyingSet_Generate generate; + + /* RNA integration */ + struct ExtensionRNA ext; +} KeyingSetInfo; /* -------- */ +/* Add another data source for Relative Keying Sets to be evaluated with */ +void ANIM_relative_keyingset_add_source(ListBase *dsources, struct ID *id, struct StructRNA *srna, void *data); + + /* mode for modify_keyframes */ typedef enum eModifyKey_Modes { MODIFYKEY_MODE_INSERT = 0, MODIFYKEY_MODE_DELETE, } eModifyKey_Modes; -/* Keyframing Helper Call - use the provided Keying Set to Add/Remove Keyframes */ -int modify_keyframes(struct Scene *scene, struct ListBase *dsources, struct bAction *act, struct KeyingSet *ks, short mode, float cfra); +/* return codes for errors (with Relative KeyingSets) */ +typedef enum eModifyKey_Returns { + /* context info was invalid for using the Keying Set */ + MODIFYKEY_INVALID_CONTEXT = -1, + /* there isn't any typeinfo for generating paths from context */ + MODIFYKEY_MISSING_TYPEINFO = -2, +} eModifyKey_Returns; -/* -------- */ +/* use the specified KeyingSet to add/remove various Keyframes on the specified frame */ +int ANIM_apply_keyingset(struct bContext *C, ListBase *dsources, struct bAction *act, struct KeyingSet *ks, short mode, float cfra); -/* Generate menu of KeyingSets */ -char *ANIM_build_keyingsets_menu(struct ListBase *list, short for_edit); +/* -------- */ /* Get the first builtin KeyingSet with the given name, which occurs after the given one (or start of list if none given) */ -struct KeyingSet *ANIM_builtin_keyingset_get_named(struct KeyingSet *prevKS, char name[]); +struct KeyingSet *ANIM_builtin_keyingset_get_named(struct KeyingSet *prevKS, const char name[]); -/* Initialise builtin KeyingSets on startup */ -void init_builtin_keyingsets(void); +/* Find KeyingSet type info given a name */ +KeyingSetInfo *ANIM_keyingset_info_find_named(const char name[]); +/* for RNA type registrations... */ +void ANIM_keyingset_info_register(const struct bContext *C, KeyingSetInfo *ksi); +void ANIM_keyingset_info_unregister(const struct bContext *C, KeyingSetInfo *ksi); + +/* cleanup on exit */ +void ANIM_keyingset_infos_exit(void); /* -------- */ /* Get the active KeyingSet for the given scene */ struct KeyingSet *ANIM_scene_get_active_keyingset(struct Scene *scene); +/* Get the index of the Keying Set provided, for the given Scene */ +int ANIM_scene_get_keyingset_index(struct Scene *scene, struct KeyingSet *ks); + +/* Create (and show) a menu containing all the Keying Sets which can be used in the current context */ +void ANIM_keying_sets_menu_setup(struct bContext *C, char title[], char op_name[]); + +/* Check if KeyingSet can be used in the current context */ +short ANIM_keyingset_context_ok_poll(struct bContext *C, struct KeyingSet *ks); + /* ************ Drivers ********************** */ /* Returns whether there is a driver in the copy/paste buffer to paste */ @@ -206,7 +257,7 @@ short fcurve_frame_has_keyframe(struct FCurve *fcu, float frame, short filter); * Checks whether a keyframe exists for the given ID-block one the given frame. * - It is recommended to call this method over the other keyframe-checkers directly, * in case some detail of the implementation changes... - * - frame: the value of this is quite often result of frame_to_float(CFRA) + * - frame: the value of this is quite often result of BKE_curframe() */ short id_frame_has_keyframe(struct ID *id, float frame, short filter); diff --git a/source/blender/editors/include/ED_logic.h b/source/blender/editors/include/ED_logic.h new file mode 100644 index 00000000000..96d10cf2c72 --- /dev/null +++ b/source/blender/editors/include/ED_logic.h @@ -0,0 +1,36 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. + * All rights reserved. + * + * Contributor(s): Blender Foundation + * + * ***** END GPL LICENSE BLOCK ***** + */ +#ifndef ED_LOGIC_H +#define ED_LOGIC_H + +/* logic_ops.c */ +void ED_operatortypes_logic(void); + +#endif /* ED_LOGIC_H */ + + + diff --git a/source/blender/editors/include/ED_markers.h b/source/blender/editors/include/ED_markers.h index 06434d70656..e5e1f3cef10 100644 --- a/source/blender/editors/include/ED_markers.h +++ b/source/blender/editors/include/ED_markers.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_mesh.h b/source/blender/editors/include/ED_mesh.h index a1655065e1e..68eb8566759 100644 --- a/source/blender/editors/include/ED_mesh.h +++ b/source/blender/editors/include/ED_mesh.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_node.h b/source/blender/editors/include/ED_node.h index b7dc9bf73b5..6e42b772bef 100644 --- a/source/blender/editors/include/ED_node.h +++ b/source/blender/editors/include/ED_node.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -40,6 +40,7 @@ void ED_init_node_butfuncs(void); /* node_draw.c */ void ED_node_changed_update(struct ID *id, struct bNode *node); +void ED_node_generic_update(struct Main *bmain, struct Scene *scene, struct bNodeTree *ntree, struct bNode *node); /* node_edit.c */ void ED_node_shader_default(struct Material *ma); diff --git a/source/blender/editors/include/ED_numinput.h b/source/blender/editors/include/ED_numinput.h index ca5dc4797de..7df1f1f28cb 100644 --- a/source/blender/editors/include/ED_numinput.h +++ b/source/blender/editors/include/ED_numinput.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -27,13 +27,13 @@ typedef struct NumInput { - short idx; - short idx_max; - short flag; /* Different flags to indicate different behaviors */ - char inv[3]; /* If the value is inverted or not */ - float val[3]; /* Direct value of the input */ - int ctrl[3]; /* Control to indicate what to do with the numbers that are typed */ - float increment; + short idx; + short idx_max; + short flag; /* Different flags to indicate different behaviors */ + char inv[3]; /* If the value is inverted or not */ + float val[3]; /* Direct value of the input */ + int ctrl[3]; /* Control to indicate what to do with the numbers that are typed */ + float increment; } NumInput ; /* NUMINPUT FLAGS */ diff --git a/source/blender/editors/include/ED_object.h b/source/blender/editors/include/ED_object.h index 8045f2a9130..a03cd135f1c 100644 --- a/source/blender/editors/include/ED_object.h +++ b/source/blender/editors/include/ED_object.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -48,6 +48,9 @@ struct wmOperator; struct wmEvent; /* object_edit.c */ +struct Object *ED_object_active_context(struct bContext *C); + +/* object_ops.c */ void ED_operatortypes_object(void); void ED_operatormacros_object(void); void ED_keymap_object(struct wmKeyConfig *keyconf); @@ -62,7 +65,6 @@ void ED_base_object_activate(struct bContext *C, struct Base *base); void ED_base_object_free_and_unlink(struct Scene *scene, struct Base *base); -void ED_object_apply_obmat(struct Object *ob); /* single object duplicate, if dupflag==0, fully linked, else it uses the flags given */ struct Base *ED_object_add_duplicate(struct Scene *scene, struct Base *base, int dupflag); @@ -82,11 +84,11 @@ void ED_object_enter_editmode(struct bContext *C, int flag); void ED_object_location_from_view(struct bContext *C, float *loc); void ED_object_rotation_from_view(struct bContext *C, float *rot); void ED_object_base_init_transform(struct bContext *C, struct Base *base, float *loc, float *rot); -float ED_object_new_primitive_matrix(struct bContext *C, float *loc, float *rot, float primmat[][4]); +float ED_object_new_primitive_matrix(struct bContext *C, struct Object *editob, float *loc, float *rot, float primmat[][4]); void ED_object_add_generic_props(struct wmOperatorType *ot, int do_editmode); int ED_object_add_generic_invoke(struct bContext *C, struct wmOperator *op, struct wmEvent *event); -void ED_object_add_generic_get_opts(struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer); +int ED_object_add_generic_get_opts(struct bContext *C, struct wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer); struct Object *ED_object_add_type(struct bContext *C, int type, float *loc, float *rot, int enter_editmode, unsigned int layer); void ED_object_single_users(struct Scene *scene, int full); diff --git a/source/blender/editors/include/ED_physics.h b/source/blender/editors/include/ED_physics.h index 606740d3c61..51906bf41c1 100644 --- a/source/blender/editors/include/ED_physics.h +++ b/source/blender/editors/include/ED_physics.h @@ -35,7 +35,7 @@ struct wmKeyConfig; /* particle_edit.c */ int PE_poll(struct bContext *C); int PE_hair_poll(struct bContext *C); -int PE_poll_3dview(struct bContext *C); +int PE_poll_view3d(struct bContext *C); /* operators */ void ED_operatortypes_physics(void); diff --git a/source/blender/editors/include/ED_render.h b/source/blender/editors/include/ED_render.h index a81c562bccb..f34670da471 100644 --- a/source/blender/editors/include/ED_render.h +++ b/source/blender/editors/include/ED_render.h @@ -78,7 +78,10 @@ void ED_preview_free_dbase(void); void ED_preview_shader_job(const struct bContext *C, void *owner, struct ID *id, struct ID *parent, struct MTex *slot, int sizex, int sizey, int method); void ED_preview_icon_job(const struct bContext *C, void *owner, struct ID *id, unsigned int *rect, int sizex, int sizey); +void ED_preview_kill_jobs(const struct bContext *C); void ED_preview_draw(const struct bContext *C, void *idp, void *parentp, void *slot, rcti *rect); +void ED_render_clear_mtex_copybuf(void); + #endif diff --git a/source/blender/editors/include/ED_screen.h b/source/blender/editors/include/ED_screen.h index aae354b79fa..3478447b058 100644 --- a/source/blender/editors/include/ED_screen.h +++ b/source/blender/editors/include/ED_screen.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -55,6 +55,7 @@ void ED_region_set(const struct bContext *C, struct ARegion *ar); void ED_region_init(struct bContext *C, struct ARegion *ar); void ED_region_tag_redraw(struct ARegion *ar); void ED_region_tag_redraw_partial(struct ARegion *ar, struct rcti *rct); +void ED_region_tag_redraw_overlay(struct ARegion *ar); void ED_region_panels_init(struct wmWindowManager *wm, struct ARegion *ar); void ED_region_panels(const struct bContext *C, struct ARegion *ar, int vertical, char *context, int contextnr); void ED_region_header_init(struct ARegion *ar); @@ -97,11 +98,12 @@ void ED_screen_set_scene(struct bContext *C, struct Scene *scene); void ED_screen_delete_scene(struct bContext *C, struct Scene *scene); void ED_screen_set_subwinactive(struct wmWindow *win, struct wmEvent *event); void ED_screen_exit(struct bContext *C, struct wmWindow *window, struct bScreen *screen); -void ED_screen_animation_timer(struct bContext *C, int redraws, int sync, int enable); -void ED_screen_animation_timer_update(struct bScreen *screen, int redraws); +void ED_screen_animation_timer(struct bContext *C, int redraws, int refresh, int sync, int enable); +void ED_screen_animation_timer_update(struct bScreen *screen, int redraws, int refresh); int ED_screen_full_newspace(struct bContext *C, ScrArea *sa, int type); void ED_screen_full_prevspace(struct bContext *C, ScrArea *sa); void ED_screen_full_restore(struct bContext *C, ScrArea *sa); +struct ScrArea *ED_screen_full_toggle(struct bContext *C, struct wmWindow *win, struct ScrArea *sa); void ED_screen_new_window(struct bContext *C, struct rcti *position, int type); diff --git a/source/blender/editors/include/ED_screen_types.h b/source/blender/editors/include/ED_screen_types.h index 8580dcc33c9..c55dafa6f51 100644 --- a/source/blender/editors/include/ED_screen_types.h +++ b/source/blender/editors/include/ED_screen_types.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -35,6 +35,7 @@ typedef struct ScreenAnimData { ARegion *ar; /* do not read from this, only for comparing if region exists */ short redraws; + short refresh; short flag; /* flags for playback */ int sfra; /* frame that playback was started from */ } ScreenAnimData; diff --git a/source/blender/editors/include/ED_sculpt.h b/source/blender/editors/include/ED_sculpt.h index 61267ef1c93..db2013fb411 100644 --- a/source/blender/editors/include/ED_sculpt.h +++ b/source/blender/editors/include/ED_sculpt.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -38,7 +38,7 @@ struct wmWindowManager; /* sculpt.c */ void ED_operatortypes_sculpt(void); void sculpt_get_redraw_planes(float planes[4][4], struct ARegion *ar, - struct RegionView3D *rv3d, struct Object *ob); + struct RegionView3D *rv3d, struct Object *ob); void ED_sculpt_force_update(struct bContext *C); /* paint_ops.c */ diff --git a/source/blender/editors/include/ED_sequencer.h b/source/blender/editors/include/ED_sequencer.h index f996956c15d..d99187afce9 100644 --- a/source/blender/editors/include/ED_sequencer.h +++ b/source/blender/editors/include/ED_sequencer.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_space_api.h b/source/blender/editors/include/ED_space_api.h index 3529eddd6d9..69a3d1f758a 100644 --- a/source/blender/editors/include/ED_space_api.h +++ b/source/blender/editors/include/ED_space_api.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_text.h b/source/blender/editors/include/ED_text.h index 156d1030063..081e83b1844 100644 --- a/source/blender/editors/include/ED_text.h +++ b/source/blender/editors/include/ED_text.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_transform.h b/source/blender/editors/include/ED_transform.h index 8267ed022e3..d8954be08c9 100644 --- a/source/blender/editors/include/ED_transform.h +++ b/source/blender/editors/include/ED_transform.h @@ -135,9 +135,15 @@ void BIF_selectOrientation(void); /* to be able to add operator properties to other operators */ -void Properties_Proportional(struct wmOperatorType *ot); -void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align); -void Properties_Constraints(struct wmOperatorType *ot); +#define P_MIRROR (1 << 0) +#define P_PROPORTIONAL (1 << 1) +#define P_AXIS (1 << 2) +#define P_SNAP (1 << 3) +#define P_GEO_SNAP (P_SNAP|(1 << 4)) +#define P_ALIGN_SNAP (P_GEO_SNAP|(1 << 5)) +#define P_CONSTRAINT (1 << 6) + +void Transform_Properties(struct wmOperatorType *ot, int flags); /* view3d manipulators */ diff --git a/source/blender/editors/include/ED_types.h b/source/blender/editors/include/ED_types.h index 92de24fa33e..96a5d5857fa 100644 --- a/source/blender/editors/include/ED_types.h +++ b/source/blender/editors/include/ED_types.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_util.h b/source/blender/editors/include/ED_util.h index d517d05e9b0..96ad1989497 100644 --- a/source/blender/editors/include/ED_util.h +++ b/source/blender/editors/include/ED_util.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -37,6 +37,7 @@ struct wmOperatorType; /* ed_util.c */ +void ED_editors_init (struct bContext *C); void ED_editors_exit (struct bContext *C); /* ************** Undo ************************ */ diff --git a/source/blender/editors/include/ED_uvedit.h b/source/blender/editors/include/ED_uvedit.h index da05353e82d..65ead416971 100644 --- a/source/blender/editors/include/ED_uvedit.h +++ b/source/blender/editors/include/ED_uvedit.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/include/ED_view3d.h b/source/blender/editors/include/ED_view3d.h index 50d557c36fc..ae670350a56 100644 --- a/source/blender/editors/include/ED_view3d.h +++ b/source/blender/editors/include/ED_view3d.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,28 +30,33 @@ /* ********* exports for space_view3d/ module ********** */ struct ARegion; -struct BoundBox; -struct View3D; -struct RegionView3D; -struct ViewContext; +struct bContext; +struct BezTriple; struct bglMats; +struct BoundBox; struct BPoint; struct Nurb; struct BezTriple; struct BMVert; struct BMEdge; struct BMFace; +struct EditVert; struct ImBuf; -struct Scene; -struct bContext; struct Main; +struct Nurb; +struct Object; struct rcti; +struct RegionView3D; +struct Scene; +struct View3D; +struct ViewContext; + /* for derivedmesh drawing callbacks, for view3d_select, .... */ typedef struct ViewContext { Scene *scene; - Object *obact; - Object *obedit; + struct Object *obact; + struct Object *obedit; struct ARegion *ar; struct View3D *v3d; struct RegionView3D *rv3d; @@ -98,6 +103,7 @@ void viewvector(struct RegionView3D *rv3d, float coord[3], float vec[3]); void viewline(struct ARegion *ar, struct View3D *v3d, float mval[2], float ray_start[3], float ray_end[3]); void viewray(struct ARegion *ar, struct View3D *v3d, float mval[2], float ray_start[3], float ray_normal[3]); +int get_view3d_cliprange(struct View3D *v3d, struct RegionView3D *rv3d, float *clipsta, float *clipend); int get_view3d_viewplane(struct View3D *v3d, struct RegionView3D *rv3d, int winxi, int winyi, rctf *viewplane, float *clipsta, float *clipend, float *pixsize); int get_view3d_ortho(struct View3D *v3d, struct RegionView3D *rv3d); void view3d_get_object_project_mat(struct RegionView3D *v3d, struct Object *ob, float pmat[4][4]); @@ -150,13 +156,15 @@ struct RegionView3D *ED_view3d_context_rv3d(struct bContext *C); void ED_view3d_init_mats_rv3d(struct Object *ob, struct RegionView3D *rv3d); -void ED_view3d_scene_layers_update(struct Main *bmain, struct Scene *scene); -int ED_view3d_scene_layer_set(int lay, const int *values); +int ED_view3d_scene_layer_set(int lay, const int *values, int *active); int ED_view3d_context_activate(struct bContext *C); void ED_view3d_draw_offscreen(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int winx, int winy, float viewmat[][4], float winmat[][4]); +struct ImBuf *ED_view3d_draw_offscreen_imbuf(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, int sizex, int sizey); +struct ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, int drawtype); + void view3d_clipping_local(struct RegionView3D *rv3d, float mat[][4]); Base *ED_view3d_give_base_under_cursor(struct bContext *C, short *mval); diff --git a/source/blender/editors/include/UI_icons.h b/source/blender/editors/include/UI_icons.h index 7b84c7054b0..fd459def112 100644 --- a/source/blender/editors/include/UI_icons.h +++ b/source/blender/editors/include/UI_icons.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -107,7 +107,7 @@ DEF_ICON(ICON_NEW) DEF_ICON(ICON_FILE_TICK) DEF_ICON(ICON_QUIT) DEF_ICON(ICON_URL) -DEF_ICON(ICON_BLANK037) +DEF_ICON(ICON_RECOVER_LAST) DEF_ICON(ICON_BLANK038) DEF_ICON(ICON_FULLSCREEN_ENTER) DEF_ICON(ICON_FULLSCREEN_EXIT) @@ -540,7 +540,7 @@ DEF_ICON(ICON_MOD_FLUIDSIM) DEF_ICON(ICON_MOD_MULTIRES) DEF_ICON(ICON_MOD_SMOKE) DEF_ICON(ICON_MOD_SOLIDIFY) -DEF_ICON(ICON_BLANK159) +DEF_ICON(ICON_MOD_SCREW) DEF_ICON(ICON_BLANK160) DEF_ICON(ICON_BLANK161) DEF_ICON(ICON_BLANK162) @@ -571,7 +571,7 @@ DEF_ICON(ICON_PREV_KEYFRAME) DEF_ICON(ICON_NEXT_KEYFRAME) DEF_ICON(ICON_PLAY_AUDIO) DEF_ICON(ICON_PLAY_REVERSE) -DEF_ICON(ICON_BLANK179) +DEF_ICON(ICON_PREVIEW_RANGE) DEF_ICON(ICON_BLANK180) DEF_ICON(ICON_PMARKER_ACT) DEF_ICON(ICON_PMARKER_SEL) @@ -682,7 +682,7 @@ DEF_ICON(ICON_BLANK227) DEF_ICON(ICON_BLANK228) DEF_ICON(ICON_BLANK229) DEF_ICON(ICON_BLANK230) -DEF_ICON(ICON_BLANK231) +DEF_ICON(ICON_SNAP_SURFACE) DEF_ICON(ICON_BLANK232) DEF_ICON(ICON_BLANK233) DEF_ICON(ICON_RETOPO) @@ -847,7 +847,7 @@ DEF_ICON(ICON_SEQ_PREVIEW) DEF_ICON(ICON_SEQ_LUMA_WAVEFORM) DEF_ICON(ICON_SEQ_CHROMA_SCOPE) DEF_ICON(ICON_SEQ_HISTOGRAM) -DEF_ICON(ICON_BLANK330) +DEF_ICON(ICON_SEQ_SPLITVIEW) DEF_ICON(ICON_BLANK331) DEF_ICON(ICON_BLANK332) DEF_ICON(ICON_BLANK333) diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 5c6ac272c53..4b6b396483d 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -142,7 +142,7 @@ typedef struct uiLayout uiLayout; #define UI_BUT_ALIGN_DOWN (1<<17) #define UI_BUT_DISABLED (1<<18) -#define UI_BUT_UNUSED (1<<19) +#define UI_BUT_COLOR_LOCK (1<<19) #define UI_BUT_ANIMATED (1<<20) #define UI_BUT_ANIMATED_KEY (1<<21) #define UI_BUT_DRIVEN (1<<22) @@ -152,6 +152,9 @@ typedef struct uiLayout uiLayout; #define UI_BUT_IMMEDIATE (1<<26) #define UI_BUT_NO_TOOLTIP (1<<27) +#define UI_BUT_VEC_SIZE_LOCK (1<<28) /* used to flag if color hsv-circle should keep luminance */ +#define UI_BUT_COLOR_CUBIC (1<<29) /* cubic saturation for the color wheel */ + #define UI_PANEL_WIDTH 340 #define UI_COMPACT_PANEL_WIDTH 160 @@ -218,6 +221,9 @@ typedef struct uiLayout uiLayout; #define HOTKEYEVT (45<<9) #define BUT_IMAGE (46<<9) #define HISTOGRAM (47<<9) +#define WAVEFORM (48<<9) +#define VECTORSCOPE (49<<9) +#define PROGRESSBAR (50<<9) #define BUTTYPE (63<<9) @@ -245,8 +251,9 @@ void uiDrawMenuBox(float minx, float miny, float maxx, float maxy, short flag, s void uiDrawBoxShadow(unsigned char alpha, float minx, float miny, float maxx, float maxy); /* state for scrolldrawing */ -#define UI_SCROLL_PRESSED 1 -#define UI_SCROLL_ARROWS 2 +#define UI_SCROLL_PRESSED 1 +#define UI_SCROLL_ARROWS 2 +#define UI_SCROLL_NO_OUTLINE 4 void uiWidgetScrollDraw(struct uiWidgetColors *wcol, struct rcti *rect, struct rcti *slider, int state); /* Menu Callbacks */ @@ -662,63 +669,65 @@ uiBlock *uiLayoutAbsoluteBlock(uiLayout *layout); void uiTemplateHeader(uiLayout *layout, struct bContext *C, int menus); void uiTemplateDopeSheetFilter(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr); void uiTemplateID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop); + char *newop, char *openop, char *unlinkop, char *filterop); void uiTemplateIDBrowse(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop); + char *newop, char *openop, char *unlinkop, char *filterop); void uiTemplateIDPreview(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, - char *newop, char *openop, char *unlinkop, int rows, int cols); + char *newop, char *openop, char *unlinkop, char *filterop, int rows, int cols); void uiTemplateAnyID(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, char *proptypename, char *text); void uiTemplatePathBuilder(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *root_ptr, char *text); uiLayout *uiTemplateModifier(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, int compact); -uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr); +uiLayout *uiTemplateConstraint(uiLayout *layout, struct PointerRNA *ptr, int compact); void uiTemplatePreview(uiLayout *layout, struct ID *id, struct ID *parent, struct MTex *slot); void uiTemplateColorRamp(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateHistogram(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); +void uiTemplateWaveform(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); +void uiTemplateVectorscope(uiLayout *layout, struct PointerRNA *ptr, char *propname, int expand); void uiTemplateCurveMapping(uiLayout *layout, struct PointerRNA *ptr, char *propname, int type, int levels, int brush); -void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock); +void uiTemplateColorWheel(uiLayout *layout, struct PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic); void uiTemplateTriColorSet(uiLayout *layout, struct PointerRNA *ptr, char *propname); void uiTemplateLayers(uiLayout *layout, struct PointerRNA *ptr, char *propname, - PointerRNA *used_ptr, char *used_propname, int active_layer); + PointerRNA *used_ptr, char *used_propname, int active_layer); void uiTemplateImage(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *userptr, int compact); void uiTemplateImageLayers(uiLayout *layout, struct bContext *C, struct Image *ima, struct ImageUser *iuser); void uiTemplateRunningJobs(uiLayout *layout, struct bContext *C); void uiTemplateOperatorSearch(uiLayout *layout); void uiTemplateHeader3D(uiLayout *layout, struct bContext *C); void uiTemplateTextureImage(uiLayout *layout, struct bContext *C, struct Tex *tex); -void uiTemplateReportsBanner(uiLayout *layout, struct bContext *C, struct wmOperator *op); +void uiTemplateReportsBanner(uiLayout *layout, struct bContext *C); void uiTemplateList(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, char *propname, struct PointerRNA *activeptr, char *activeprop, int rows, int maxrows, int type); /* items */ void uiItemO(uiLayout *layout, char *name, int icon, char *opname); -void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value); +void uiItemEnumO(uiLayout *layout, char *opname, char *name, int icon, char *propname, int value); void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value); void uiItemsEnumO(uiLayout *layout, char *opname, char *propname); void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value); void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value); void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *propname, float value); void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value); -PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, struct IDProperty *properties, int context, int flag); +PointerRNA uiItemFullO(uiLayout *layout, char *idname, char *name, int icon, struct IDProperty *properties, int context, int flag); -void uiItemR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int flag); -void uiItemFullR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag); +void uiItemR(uiLayout *layout, struct PointerRNA *ptr, char *propname, int flag, char *name, int icon); +void uiItemFullR(uiLayout *layout, struct PointerRNA *ptr, struct PropertyRNA *prop, int index, int value, int flag, char *name, int icon); void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value); -void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value); +void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *value, char *name, int icon); void uiItemsEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname); -void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname); +void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname, char *name, int icon); void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, struct IDProperty *properties, int context, int flag); void uiItemL(uiLayout *layout, char *name, int icon); /* label */ void uiItemLDrag(uiLayout *layout, struct PointerRNA *ptr, char *name, int icon); /* label icon for dragging */ -void uiItemM(uiLayout *layout, struct bContext *C, char *name, int icon, char *menuname); /* menu */ +void uiItemM(uiLayout *layout, struct bContext *C, char *menuname, char *name, int icon); /* menu */ void uiItemV(uiLayout *layout, char *name, int icon, int argval); /* value */ void uiItemS(uiLayout *layout); /* separator */ void uiItemMenuF(uiLayout *layout, char *name, int icon, uiMenuCreateFunc func, void *arg); -void uiItemMenuEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname); -void uiItemMenuEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname); +void uiItemMenuEnumO(uiLayout *layout, char *opname, char *propname, char *name, int icon); +void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *name, int icon); /* UI Operators */ void UI_buttons_operatortypes(void); diff --git a/source/blender/editors/include/UI_resources.h b/source/blender/editors/include/UI_resources.h index 9ec64155b43..3b76520c4bf 100644 --- a/source/blender/editors/include/UI_resources.h +++ b/source/blender/editors/include/UI_resources.h @@ -49,12 +49,12 @@ typedef enum { typedef enum { #define BIFCOLORSHADE_FIRST (COLORSHADE_DARK) - COLORSHADE_DARK, - COLORSHADE_GREY, - COLORSHADE_MEDIUM, - COLORSHADE_HILITE, - COLORSHADE_LIGHT, - COLORSHADE_WHITE + COLORSHADE_DARK, + COLORSHADE_GREY, + COLORSHADE_MEDIUM, + COLORSHADE_HILITE, + COLORSHADE_LIGHT, + COLORSHADE_WHITE #define BIFCOLORSHADE_LAST (COLORSHADE_WHITE) #define BIFNCOLORSHADES (BIFCOLORSHADE_LAST-BIFCOLORSHADE_FIRST + 1) } BIFColorShade; @@ -164,6 +164,23 @@ enum { TH_FACE_DOT, TH_FACEDOT_SIZE, TH_CFRAME, + TH_NURB_ULINE, + TH_NURB_VLINE, + TH_NURB_SEL_ULINE, + TH_NURB_SEL_VLINE, + + /* this eight colors should be in one block */ + TH_HANDLE_FREE, + TH_HANDLE_AUTO, + TH_HANDLE_VECT, + TH_HANDLE_ALIGN, + TH_HANDLE_SEL_FREE, + TH_HANDLE_SEL_AUTO, + TH_HANDLE_SEL_VECT, + TH_HANDLE_SEL_ALIGN, + + TH_ACTIVE_SPLINE, + TH_LASTSEL_POINT, TH_SYNTAX_B, TH_SYNTAX_V, @@ -214,6 +231,8 @@ enum { TH_PIN_OPAC, TH_PREVIEW_BACK, + + TH_EDGE_CREASE, }; /* XXX WARNING: previous is saved in file, so do not change order! */ @@ -264,6 +283,9 @@ void UI_ColorPtrBlendShade3ubv(char *cp1, char *cp2, float fac, int offset); // get a 3 byte color, blended and shaded between two other char color pointers void UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, int offset); +// clear the openGL ClearColor using the input colorid +void UI_ThemeClearColor(int colorid); + // internal (blender) usage only, for init and set active void UI_SetTheme(int spacetype, int regionid); diff --git a/source/blender/editors/include/UI_view2d.h b/source/blender/editors/include/UI_view2d.h index 38c2780608f..bf4a3de9cc6 100644 --- a/source/blender/editors/include/UI_view2d.h +++ b/source/blender/editors/include/UI_view2d.h @@ -164,6 +164,7 @@ void UI_view2d_view_restore(const struct bContext *C); View2DGrid *UI_view2d_grid_calc(const struct bContext *C, struct View2D *v2d, short xunits, short xclamp, short yunits, short yclamp, int winx, int winy); void UI_view2d_grid_draw(const struct bContext *C, struct View2D *v2d, View2DGrid *grid, int flag); void UI_view2d_constant_grid_draw(const struct bContext *C, struct View2D *v2d); +void UI_view2d_grid_size(View2DGrid *grid, float *r_dx, float *r_dy); void UI_view2d_grid_free(View2DGrid *grid); /* scrollbar drawing */ diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt new file mode 100644 index 00000000000..4b4590aeee5 --- /dev/null +++ b/source/blender/editors/interface/CMakeLists.txt @@ -0,0 +1,46 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenfont + ../../blenkernel + ../../blenlib + ../../gpu + ../../imbuf + ../../makesdna + ../../makesrna + ../../python + ../../windowmanager + ../../../../intern/guardedalloc +) + +IF(WITH_INTERNATIONAL) + ADD_DEFINITIONS(-DINTERNATIONAL) +ENDIF(WITH_INTERNATIONAL) + +IF(NOT WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(NOT WITH_PYTHON) + +BLENDERLIB(bf_editor_interface "${SRC}" "${INC}") diff --git a/source/blender/editors/interface/interface.c b/source/blender/editors/interface/interface.c index ea7e89f5102..3f0cd3bee78 100644 --- a/source/blender/editors/interface/interface.c +++ b/source/blender/editors/interface/interface.c @@ -32,11 +32,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_ID.h" -#include "DNA_listBase.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_texture_types.h" #include "DNA_userdef_types.h" #include "BLI_math.h" @@ -58,7 +55,6 @@ #include "UI_interface.h" -#include "ED_screen.h" #include "WM_api.h" #include "WM_types.h" @@ -66,7 +62,6 @@ #include "wm_window.h" #include "RNA_access.h" -#include "RNA_types.h" #include "BPY_extern.h" @@ -235,7 +230,7 @@ static void ui_text_bounds_block(uiBlock *block, float offset) //int transopts= ui_translate_buttons(); //if(bt->type==TEX || bt->type==IDPOIN) transopts= 0; - j= BLF_width(bt->drawstr); + j= BLF_width(style->widget.uifont_id, bt->drawstr); if(j > i) i = j; } @@ -289,7 +284,7 @@ void ui_bounds_block(uiBlock *block) if(bt->x1 < block->minx) block->minx= bt->x1; if(bt->y1 < block->miny) block->miny= bt->y1; - if(bt->x2 > block->maxx) block->maxx= bt->x2; + if(bt->x2 > block->maxx) block->maxx= bt->x2; if(bt->y2 > block->maxy) block->maxy= bt->y2; bt= bt->next; @@ -373,9 +368,9 @@ static void ui_popup_bounds_block(const bContext *C, uiBlock *block, int bounds_ width= block->maxx - block->minx; height= block->maxy - block->miny; - /* avoid divide by zero below, caused by calling with no UI, but better not crash */ - oldwidth= oldwidth > 0 ? oldwidth : MAX2(1, width); - oldheight= oldheight > 0 ? oldheight : MAX2(1, height); + /* avoid divide by zero below, caused by calling with no UI, but better not crash */ + oldwidth= oldwidth > 0 ? oldwidth : MAX2(1, width); + oldheight= oldheight > 0 ? oldheight : MAX2(1, height); /* offset block based on mouse position, user offset is scaled along in case we resized the block in ui_text_bounds_block */ @@ -648,10 +643,6 @@ void uiEndBlock(const bContext *C, uiBlock *block) CTX_store_set((bContext*)C, NULL); } - /* only update soft range while not editing */ - if(but->rnaprop && !(but->editval || but->editstr || but->editvec)) - ui_set_but_soft_range(but, ui_get_but_val(but)); - ui_but_anim_flag(but, (scene)? scene->r.cfra: 0.0f); } @@ -1189,12 +1180,12 @@ void ui_get_but_vectorf(uiBut *but, float *vec) float *fp= (float *)but->poin; VECCOPY(vec, fp); } - else { - if (but->editvec==NULL) { - fprintf(stderr, "ui_get_but_vectorf: can't get color, should never happen\n"); - vec[0]= vec[1]= vec[2]= 0.0f; - } - } + else { + if (but->editvec==NULL) { + fprintf(stderr, "ui_get_but_vectorf: can't get color, should never happen\n"); + vec[0]= vec[1]= vec[2]= 0.0f; + } + } } /* for buttons pointing to color for example */ @@ -1603,7 +1594,7 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) } else if(but->type == IDPOIN) { /* ID pointer */ - but->idpoin_func(C, (char*)str, but->idpoin_idpp); + but->idpoin_func(C, (char*)str, but->idpoin_idpp); return 1; } else if(but->type == TEX) { @@ -1642,7 +1633,7 @@ int ui_set_but_string(bContext *C, uiBut *but, const char *str) bUnit_ReplaceString(str_unit_convert, sizeof(str_unit_convert), but->drawstr, ui_get_but_scale_unit(but, 1.0), scene->unit.system, unit_type); } - if(BPY_button_eval(C, str_unit_convert, &value)) { + if(BPY_eval_button(C, str_unit_convert, &value)) { value = ui_get_but_val(but); /* use its original value */ if(str[0]) @@ -1940,6 +1931,10 @@ void ui_check_but(uiBut *but) // if(but->type==TEX || but->type==IDPOIN) transopts= 0; + /* only update soft range while not editing */ + if(but->rnaprop && !(but->editval || but->editstr || but->editvec)) + ui_set_but_soft_range(but, ui_get_but_val(but)); + /* test for min and max, icon sliders, etc */ switch( but->type ) { case NUM: @@ -2308,7 +2303,7 @@ ui_def_but is the function that draws many button types for float buttons: "a1" Click Step (how much to change the value each click) "a2" Number of decimal point values to display. 0 defaults to 3 (0.000) 1,2,3, and a maximum of 4, - all greater values will be clamped to 4. + all greater values will be clamped to 4. */ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short x1, short y1, short x2, short y2, void *poin, float min, float max, float a1, float a2, char *tip) @@ -2381,7 +2376,7 @@ static uiBut *ui_def_but(uiBlock *block, int type, int retval, char *str, short } } - if((block->flag & UI_BLOCK_LOOP) || ELEM7(but->type, MENU, TEX, LABEL, IDPOIN, BLOCK, BUTM, SEARCH_MENU)) + if((block->flag & UI_BLOCK_LOOP) || ELEM8(but->type, MENU, TEX, LABEL, IDPOIN, BLOCK, BUTM, SEARCH_MENU, PROGRESSBAR)) but->flag |= (UI_TEXT_LEFT|UI_ICON_LEFT); else if(but->type==BUT_TOGDUAL) but->flag |= UI_ICON_LEFT; @@ -2698,7 +2693,7 @@ void autocomplete_end(AutoComplete *autocpl, char *autoname) static void autocomplete_id(bContext *C, char *str, void *arg_v) { int blocktype= (intptr_t)arg_v; - ListBase *listb= wich_libbase(CTX_data_main(C), blocktype); + ListBase *listb= which_libbase(CTX_data_main(C), blocktype); if(listb==NULL) return; @@ -3332,9 +3327,6 @@ void UI_init_userdef(void) { /* fix saved themes */ init_userdef_do_versions(); - /* set default colors in default theme */ - ui_theme_init_userdef(); - uiStyleInit(); } diff --git a/source/blender/editors/interface/interface_anim.c b/source/blender/editors/interface/interface_anim.c index 6a7f2b2fcb7..4108e1c8532 100644 --- a/source/blender/editors/interface/interface_anim.c +++ b/source/blender/editors/interface/interface_anim.c @@ -16,8 +16,6 @@ #include "BKE_context.h" #include "BKE_fcurve.h" -#include "RNA_access.h" -#include "RNA_types.h" #include "ED_keyframing.h" @@ -113,7 +111,7 @@ void ui_but_anim_autokey(bContext *C, uiBut *but, Scene *scene, float cfra) fcu->flag &= ~FCURVE_SELECTED; insert_keyframe(id, action, ((fcu->grp)?(fcu->grp->name):(NULL)), fcu->rna_path, fcu->array_index, cfra, flag); - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } } } diff --git a/source/blender/editors/interface/interface_draw.c b/source/blender/editors/interface/interface_draw.c index aaf9ba6e214..0dd333dc387 100644 --- a/source/blender/editors/interface/interface_draw.c +++ b/source/blender/editors/interface/interface_draw.c @@ -29,15 +29,13 @@ #include <string.h> #include "DNA_color_types.h" -#include "DNA_listBase.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_userdef_types.h" #include "BLI_math.h" #include "BKE_colortools.h" +#include "BKE_global.h" #include "BKE_texture.h" #include "BKE_utildefines.h" @@ -47,8 +45,9 @@ #include "BIF_gl.h" #include "BIF_glutil.h" +#include "BLF_api.h" + #include "UI_interface.h" -#include "UI_interface_icons.h" #include "interface_intern.h" @@ -81,7 +80,7 @@ int uiGetRoundBox(void) void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad) { float vec[7][2]= {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169}, {0.707, 0.293}, - {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; + {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; int a; /* mult */ @@ -151,7 +150,7 @@ static void round_box_shade_col(float *col1, float *col2, float fac) void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadetop, float shadedown) { float vec[7][2]= {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169}, {0.707, 0.293}, - {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; + {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; float div= maxy-miny; float coltop[3], coldown[3], color[4]; int a; @@ -258,7 +257,7 @@ void gl_round_box_shade(int mode, float minx, float miny, float maxx, float maxy void gl_round_box_vertical_shade(int mode, float minx, float miny, float maxx, float maxy, float rad, float shadeLeft, float shadeRight) { float vec[7][2]= {{0.195, 0.02}, {0.383, 0.067}, {0.55, 0.169}, {0.707, 0.293}, - {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; + {0.831, 0.45}, {0.924, 0.617}, {0.98, 0.805}}; float div= maxx-minx; float colLeft[3], colRight[3], color[4]; int a; @@ -470,7 +469,7 @@ void ui_draw_but_IMAGE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *rect //int w, h; /* hardcoded to splash, loading and freeing every draw, eek! */ - ibuf= IMB_ibImageFromMemory((int *)datatoc_splash_png, datatoc_splash_png_size, IB_rect); + ibuf= IMB_ibImageFromMemory((unsigned char*)datatoc_splash_png, datatoc_splash_png_size, IB_rect); if (!ibuf) return; @@ -565,7 +564,7 @@ static void ui_draw_but_CHARTAB(uiBut *but) int err; strcpy(tmpStr, G.selfont->name); - BLI_convertstringcode(tmpStr, G.sce); + BLI_path_abs(tmpStr, G.sce); err = FTF_SetFont((unsigned char *)tmpStr, 0, 14.0); } } @@ -689,6 +688,64 @@ static void ui_draw_but_CHARTAB(uiBut *but) #endif // INTERNATIONAL #endif +static void draw_scope_end(rctf *rect, GLint *scissor) +{ + float scaler_x1, scaler_x2; + + /* restore scissortest */ + glScissor(scissor[0], scissor[1], scissor[2], scissor[3]); + + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + /* scale widget */ + scaler_x1 = rect->xmin + (rect->xmax - rect->xmin)/2 - SCOPE_RESIZE_PAD; + scaler_x2 = rect->xmin + (rect->xmax - rect->xmin)/2 + SCOPE_RESIZE_PAD; + + glColor4f(0.f, 0.f, 0.f, 0.25f); + fdrawline(scaler_x1, rect->ymin-4, scaler_x2, rect->ymin-4); + fdrawline(scaler_x1, rect->ymin-7, scaler_x2, rect->ymin-7); + glColor4f(1.f, 1.f, 1.f, 0.25f); + fdrawline(scaler_x1, rect->ymin-5, scaler_x2, rect->ymin-5); + fdrawline(scaler_x1, rect->ymin-8, scaler_x2, rect->ymin-8); + + /* outline */ + glColor4f(0.f, 0.f, 0.f, 0.5f); + uiSetRoundBox(15); + gl_round_box(GL_LINE_LOOP, rect->xmin-1, rect->ymin, rect->xmax+1, rect->ymax+1, 3.0f); +} + +void histogram_draw_one(float r, float g, float b, float alpha, float x, float y, float w, float h, float *data, int res) +{ + int i; + + /* under the curve */ + glBlendFunc(GL_SRC_ALPHA, GL_ONE); + glColor4f(r, g, b, alpha); + + glShadeModel(GL_FLAT); + glBegin(GL_QUAD_STRIP); + glVertex2f(x, y); + glVertex2f(x, y + (data[0]*h)); + for (i=1; i < res; i++) { + float x2 = x + i * (w/(float)res); + glVertex2f(x2, y + (data[i]*h)); + glVertex2f(x2, y); + } + glEnd(); + + /* curve outline */ + glColor4f(0.f, 0.f, 0.f, 0.25f); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glEnable(GL_LINE_SMOOTH); + glBegin(GL_LINE_STRIP); + for (i=0; i < res; i++) { + float x2 = x + i * (w/(float)res); + glVertex2f(x2, y + (data[i]*h)); + } + glEnd(); + glDisable(GL_LINE_SMOOTH); +} void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *recti) { @@ -696,21 +753,19 @@ void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti * int res = hist->x_resolution; rctf rect; int i; - int rgb; float w, h; - float alpha; + //float alpha; GLint scissor[4]; if (hist==NULL) { printf("hist is null \n"); return; } - rect.xmin = (float)recti->xmin; - rect.xmax = (float)recti->xmax; - rect.ymin = (float)recti->ymin; - rect.ymax = (float)recti->ymax; + rect.xmin = (float)recti->xmin+1; + rect.xmax = (float)recti->xmax-1; + rect.ymin = (float)recti->ymin+SCOPE_RESIZE_PAD+2; + rect.ymax = (float)recti->ymax-1; w = rect.xmax - rect.xmin; - h = rect.ymax - rect.ymin; - h *= hist->ymax; + h = (rect.ymax - rect.ymin) * hist->ymax; glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); @@ -729,56 +784,327 @@ void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti * /* need scissor test, histogram can draw outside of boundary */ glGetIntegerv(GL_VIEWPORT, scissor); glScissor(ar->winrct.xmin + (rect.xmin-1), ar->winrct.ymin+(rect.ymin-1), (rect.xmax+1)-(rect.xmin-1), (rect.ymax+1)-(rect.ymin-1)); - - for (rgb=0; rgb<3; rgb++) { - float *data = NULL; - - if (rgb==0) data = hist->data_r; - else if (rgb==1) data = hist->data_g; - else if (rgb==2) data = hist->data_b; - - glBlendFunc(GL_SRC_ALPHA, GL_ONE); - alpha = 0.75; - if (rgb==0) glColor4f(1.f, 0.f, 0.f, alpha); - else if (rgb==1) glColor4f(0.f, 1.f, 0.f, alpha); - else if (rgb==2) glColor4f(0.f, 0.f, 1.f, alpha); - - glShadeModel(GL_FLAT); - glBegin(GL_QUAD_STRIP); - glVertex2f(rect.xmin, rect.ymin); - glVertex2f(rect.xmin, rect.ymin + (data[0]*h)); - for (i=1; i < res; i++) { - float x = rect.xmin + i * (w/(float)res); - glVertex2f(x, rect.ymin + (data[i]*h)); - glVertex2f(x, rect.ymin); + + if (hist->mode == HISTO_MODE_LUMA) + histogram_draw_one(1.0, 1.0, 1.0, 0.75, rect.xmin, rect.ymin, w, h, hist->data_luma, res); + else { + if (hist->mode == HISTO_MODE_RGB || hist->mode == HISTO_MODE_R) + histogram_draw_one(1.0, 0.0, 0.0, 0.75, rect.xmin, rect.ymin, w, h, hist->data_r, res); + if (hist->mode == HISTO_MODE_RGB || hist->mode == HISTO_MODE_G) + histogram_draw_one(0.0, 1.0, 0.0, 0.75, rect.xmin, rect.ymin, w, h, hist->data_g, res); + if (hist->mode == HISTO_MODE_RGB || hist->mode == HISTO_MODE_B) + histogram_draw_one(0.0, 0.0, 1.0, 0.75, rect.xmin, rect.ymin, w, h, hist->data_b, res); + } + + /* outline, scale gripper */ + draw_scope_end(&rect, scissor); +} + +void ui_draw_but_WAVEFORM(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *recti) +{ + Scopes *scopes = (Scopes *)but->poin; + rctf rect; + int i, c; + float w, w3, h, alpha, yofs; + GLint scissor[4]; + float colors[3][3] = {{1,0,0},{0,1,0},{0,0,1}}; + float colorsycc[3][3] = {{1,0,1},{1,1,0},{0,1,1}}; + float colors_alpha[3][3], colorsycc_alpha[3][3]; /* colors pre multiplied by alpha for speed up */ + float min, max; + + if (scopes==NULL) return; + + rect.xmin = (float)recti->xmin+1; + rect.xmax = (float)recti->xmax-1; + rect.ymin = (float)recti->ymin+SCOPE_RESIZE_PAD+2; + rect.ymax = (float)recti->ymax-1; + + if (scopes->wavefrm_yfac < 0.5f ) + scopes->wavefrm_yfac =0.98f; + w = rect.xmax - rect.xmin-7; + h = (rect.ymax - rect.ymin)*scopes->wavefrm_yfac; + yofs= rect.ymin + (rect.ymax - rect.ymin -h)/2.0f; + w3=w/3.0f; + + /* log scale for alpha */ + alpha = scopes->wavefrm_alpha*scopes->wavefrm_alpha; + + for(c=0; c<3; c++) { + for(i=0; i<3; i++) { + colors_alpha[c][i] = colors[c][i] * alpha; + colorsycc_alpha[c][i] = colorsycc[c][i] * alpha; } - glEnd(); - - glColor4f(0.f, 0.f, 0.f, 0.25f); + } + + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + + glColor4f(0.f, 0.f, 0.f, 0.3f); + uiSetRoundBox(15); + gl_round_box(GL_POLYGON, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f); + + + /* need scissor test, waveform can draw outside of boundary */ + glGetIntegerv(GL_VIEWPORT, scissor); + glScissor(ar->winrct.xmin + (rect.xmin-1), ar->winrct.ymin+(rect.ymin-1), (rect.xmax+1)-(rect.xmin-1), (rect.ymax+1)-(rect.ymin-1)); + + glColor4f(1.f, 1.f, 1.f, 0.08f); + /* draw grid lines here */ + for (i=0; i<6; i++) { + char str[4]; + sprintf(str,"%-3d",i*20); + str[3]='\0'; + fdrawline(rect.xmin+22, yofs+(i/5.f)*h, rect.xmax+1, yofs+(i/5.f)*h); + BLF_draw_default(rect.xmin+1, yofs-5+(i/5.f)*h, 0, str); + /* in the loop because blf_draw reset it */ + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + } + /* 3 vertical separation */ + if (scopes->wavefrm_mode!= SCOPES_WAVEFRM_LUMA) { + for (i=1; i<3; i++) { + fdrawline(rect.xmin+i*w3, rect.ymin, rect.xmin+i*w3, rect.ymax); + } + } + + /* separate min max zone on the right */ + fdrawline(rect.xmin+w, rect.ymin, rect.xmin+w, rect.ymax); + /* 16-235-240 level in case of ITU-R BT601/709 */ + glColor4f(1.f, 0.4f, 0.f, 0.2f); + if (ELEM(scopes->wavefrm_mode, SCOPES_WAVEFRM_YCC_601, SCOPES_WAVEFRM_YCC_709)){ + fdrawline(rect.xmin+22, yofs+h*16.0f/255.0f, rect.xmax+1, yofs+h*16.0f/255.0f); + fdrawline(rect.xmin+22, yofs+h*235.0f/255.0f, rect.xmin+w3, yofs+h*235.0f/255.0f); + fdrawline(rect.xmin+3*w3, yofs+h*235.0f/255.0f, rect.xmax+1, yofs+h*235.0f/255.0f); + fdrawline(rect.xmin+w3, yofs+h*240.0f/255.0f, rect.xmax+1, yofs+h*240.0f/255.0f); + } + /* 7.5 IRE black point level for NTSC */ + if (scopes->wavefrm_mode== SCOPES_WAVEFRM_LUMA) + fdrawline(rect.xmin, yofs+h*0.075f, rect.xmax+1, yofs+h*0.075f); + + if (scopes->ok && scopes->waveform_1 != NULL) { - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - glEnable(GL_LINE_SMOOTH); - glBegin(GL_LINE_STRIP); - for (i=0; i < res; i++) { - float x = rect.xmin + i * (w/(float)res); - glVertex2f(x, rect.ymin + (data[i]*h)); + /* LUMA (1 channel) */ + glBlendFunc(GL_ONE,GL_ONE); + glColor3f(alpha, alpha, alpha); + if (scopes->wavefrm_mode == SCOPES_WAVEFRM_LUMA){ + + glBlendFunc(GL_ONE,GL_ONE); + + glPushMatrix(); + glEnableClientState(GL_VERTEX_ARRAY); + + glTranslatef(rect.xmin, yofs, 0.f); + glScalef(w, h, 0.f); + glVertexPointer(2, GL_FLOAT, 0, scopes->waveform_1); + glDrawArrays(GL_POINTS, 0, scopes->waveform_tot); + + glDisableClientState(GL_VERTEX_ARRAY); + glPopMatrix(); + + /* min max */ + glColor3f(.5f, .5f, .5f); + min= yofs+scopes->minmax[0][0]*h; + max= yofs+scopes->minmax[0][1]*h; + CLAMP(min, rect.ymin, rect.ymax); + CLAMP(max, rect.ymin, rect.ymax); + fdrawline(rect.xmax-3,min,rect.xmax-3,max); } - glEnd(); - glDisable(GL_LINE_SMOOTH); + + /* RGB / YCC (3 channels) */ + else if (ELEM4(scopes->wavefrm_mode, SCOPES_WAVEFRM_RGB, SCOPES_WAVEFRM_YCC_601, SCOPES_WAVEFRM_YCC_709, SCOPES_WAVEFRM_YCC_JPEG)) { + int rgb = (scopes->wavefrm_mode == SCOPES_WAVEFRM_RGB); + + glBlendFunc(GL_ONE,GL_ONE); + + glPushMatrix(); + glEnableClientState(GL_VERTEX_ARRAY); + + glTranslatef(rect.xmin, yofs, 0.f); + glScalef(w3, h, 0.f); + + glColor3fv((rgb)?colors_alpha[0]:colorsycc_alpha[0]); + glVertexPointer(2, GL_FLOAT, 0, scopes->waveform_1); + glDrawArrays(GL_POINTS, 0, scopes->waveform_tot); + + glTranslatef(1.f, 0.f, 0.f); + glColor3fv((rgb)?colors_alpha[1]:colorsycc_alpha[1]); + glVertexPointer(2, GL_FLOAT, 0, scopes->waveform_2); + glDrawArrays(GL_POINTS, 0, scopes->waveform_tot); + + glTranslatef(1.f, 0.f, 0.f); + glColor3fv((rgb)?colors_alpha[2]:colorsycc_alpha[2]); + glVertexPointer(2, GL_FLOAT, 0, scopes->waveform_3); + glDrawArrays(GL_POINTS, 0, scopes->waveform_tot); + + glDisableClientState(GL_VERTEX_ARRAY); + glPopMatrix(); + + + /* min max */ + for (c=0; c<3; c++) { + if (scopes->wavefrm_mode == SCOPES_WAVEFRM_RGB) + glColor3f(colors[c][0]*0.75, colors[c][1]*0.75, colors[c][2]*0.75); + else + glColor3f(colorsycc[c][0]*0.75, colorsycc[c][1]*0.75, colorsycc[c][2]*0.75); + min= yofs+scopes->minmax[c][0]*h; + max= yofs+scopes->minmax[c][1]*h; + CLAMP(min, rect.ymin, rect.ymax); + CLAMP(max, rect.ymin, rect.ymax); + fdrawline(rect.xmin+w+2+c*2,min,rect.xmin+w+2+c*2,max); + } + } + } - /* restore scissortest */ - glScissor(scissor[0], scissor[1], scissor[2], scissor[3]); + /* outline, scale gripper */ + draw_scope_end(&rect, scissor); +} + +float polar_to_x(float center, float diam, float ampli, float angle) +{ + return center + diam * ampli * cosf(angle); +} + +float polar_to_y(float center, float diam, float ampli, float angle) +{ + return center + diam * ampli * sinf(angle); +} + +void vectorscope_draw_target(float centerx, float centery, float diam, float r, float g, float b) +{ + float y,u,v; + float tangle=0.f, tampli; + float dangle, dampli, dangle2, dampli2; + + rgb_to_yuv(r,g,b, &y, &u, &v); + if (u>0 && v>=0) tangle=atanf(v/u); + else if (u>0 && v<0) tangle=atanf(v/u)+2*M_PI; + else if (u<0) tangle=atanf(v/u)+M_PI; + else if (u==0 && v>0) tangle=M_PI/2.0f; + else if (u==0 && v<0) tangle=-M_PI/2.0f; + tampli= sqrtf(u*u+v*v); + + /* small target vary by 2.5 degree and 2.5 IRE unit */ + glColor4f(1.0f, 1.0f, 1.0, 0.12f); + dangle= 2.5*M_PI/180.0f; + dampli= 2.5f/200.0f; + glBegin(GL_LINE_STRIP); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle+dangle), polar_to_y(centery,diam,tampli+dampli,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle+dangle), polar_to_y(centery,diam,tampli-dampli,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle-dangle), polar_to_y(centery,diam,tampli-dampli,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle-dangle), polar_to_y(centery,diam,tampli+dampli,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle+dangle), polar_to_y(centery,diam,tampli+dampli,tangle+dangle)); + glEnd(); + /* big target vary by 10 degree and 20% amplitude */ + glColor4f(1.0f, 1.0f, 1.0, 0.12f); + dangle= 10*M_PI/180.0f; + dampli= 0.2*tampli; + dangle2= 5.0f*M_PI/180.0f; + dampli2= 0.5f*dampli; + glBegin(GL_LINE_STRIP); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli-dampli2,tangle+dangle), polar_to_y(centery,diam,tampli+dampli-dampli2,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle+dangle), polar_to_y(centery,diam,tampli+dampli,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle+dangle-dangle2), polar_to_y(centery,diam,tampli+dampli,tangle+dangle-dangle2)); + glEnd(); + glBegin(GL_LINE_STRIP); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli+dampli2,tangle+dangle), polar_to_y(centery ,diam,tampli-dampli+dampli2,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle+dangle), polar_to_y(centery,diam,tampli-dampli,tangle+dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle+dangle-dangle2), polar_to_y(centery,diam,tampli-dampli,tangle+dangle-dangle2)); + glEnd(); + glBegin(GL_LINE_STRIP); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli+dampli2,tangle-dangle), polar_to_y(centery,diam,tampli-dampli+dampli2,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle-dangle), polar_to_y(centery,diam,tampli-dampli,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli-dampli,tangle-dangle+dangle2), polar_to_y(centery,diam,tampli-dampli,tangle-dangle+dangle2)); + glEnd(); + glBegin(GL_LINE_STRIP); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli-dampli2,tangle-dangle), polar_to_y(centery,diam,tampli+dampli-dampli2,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle-dangle), polar_to_y(centery,diam,tampli+dampli,tangle-dangle)); + glVertex2f(polar_to_x(centerx,diam,tampli+dampli,tangle-dangle+dangle2), polar_to_y(centery,diam,tampli+dampli,tangle-dangle+dangle2)); + glEnd(); +} + +void ui_draw_but_VECTORSCOPE(ARegion *ar, uiBut *but, uiWidgetColors *wcol, rcti *recti) +{ + Scopes *scopes = (Scopes *)but->poin; + rctf rect; + int i, j; + int skina= 123; /* angle in degree of the skin tone line */ + float w, h, centerx, centery, diam; + float alpha; + float colors[6][3]={{.75,0,0},{.75,.75,0},{0,.75,0},{0,.75,.75},{0,0,.75},{.75,0,.75}}; + GLint scissor[4]; + + rect.xmin = (float)recti->xmin+1; + rect.xmax = (float)recti->xmax-1; + rect.ymin = (float)recti->ymin+SCOPE_RESIZE_PAD+2; + rect.ymax = (float)recti->ymax-1; + + w = rect.xmax - rect.xmin; + h = rect.ymax - rect.ymin; + centerx = rect.xmin + w/2; + centery = rect.ymin + h/2; + diam= (w<h)?w:h; + alpha = scopes->vecscope_alpha*scopes->vecscope_alpha*scopes->vecscope_alpha; + + glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - glColor4f(0.f, 0.f, 0.f, 0.5f); + + glColor4f(0.f, 0.f, 0.f, 0.3f); uiSetRoundBox(15); - gl_round_box(GL_LINE_LOOP, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f); + gl_round_box(GL_POLYGON, rect.xmin-1, rect.ymin-1, rect.xmax+1, rect.ymax+1, 3.0f); + + /* need scissor test, hvectorscope can draw outside of boundary */ + glGetIntegerv(GL_VIEWPORT, scissor); + glScissor(ar->winrct.xmin + (rect.xmin-1), ar->winrct.ymin+(rect.ymin-1), (rect.xmax+1)-(rect.xmin-1), (rect.ymax+1)-(rect.ymin-1)); + glColor4f(1.f, 1.f, 1.f, 0.08f); + /* draw grid elements */ + /* cross */ + fdrawline(centerx - (diam/2)-5, centery, centerx + (diam/2)+5, centery); + fdrawline(centerx, centery - (diam/2)-5, centerx, centery + (diam/2)+5); + /* circles */ + for(j=0; j<5; j++) { + glBegin(GL_LINE_STRIP); + for(i=0; i<=360; i=i+15) { + float a= i*M_PI/180.0; + float r= (j+1)/10.0f; + glVertex2f( polar_to_x(centerx,diam,r,a), polar_to_y(centery,diam,r,a)); + } + glEnd(); + } + /* skin tone line */ + glColor4f(1.f, 0.4f, 0.f, 0.2f); + fdrawline( polar_to_x(centerx, diam, 0.5f, skina*M_PI/180.0), polar_to_y(centery,diam,0.5,skina*M_PI/180.0), + polar_to_x(centerx, diam, 0.1f, skina*M_PI/180.0), polar_to_y(centery,diam,0.1,skina*M_PI/180.0)); + /* saturation points */ + for(i=0; i<6; i++) + vectorscope_draw_target(centerx, centery, diam, colors[i][0], colors[i][1], colors[i][2]); + + if (scopes->ok && scopes->vecscope != NULL) { + /* pixel point cloud */ + glBlendFunc(GL_ONE,GL_ONE); + glColor3f(alpha, alpha, alpha); + + glPushMatrix(); + glEnableClientState(GL_VERTEX_ARRAY); + + glTranslatef(centerx, centery, 0.f); + glScalef(diam, diam, 0.f); + + glVertexPointer(2, GL_FLOAT, 0, scopes->vecscope); + glDrawArrays(GL_POINTS, 0, scopes->waveform_tot); + + glDisableClientState(GL_VERTEX_ARRAY); + glPopMatrix(); + } + + /* outline, scale gripper */ + draw_scope_end(&rect, scissor); + glDisable(GL_BLEND); } - void ui_draw_but_COLORBAND(uiBut *but, uiWidgetColors *wcol, rcti *rect) { ColorBand *coba; diff --git a/source/blender/editors/interface/interface_handlers.c b/source/blender/editors/interface/interface_handlers.c index 83aede3156c..7eda0920534 100644 --- a/source/blender/editors/interface/interface_handlers.c +++ b/source/blender/editors/interface/interface_handlers.c @@ -24,19 +24,15 @@ */ #include <float.h> +#include <limits.h> #include <math.h> #include <stdlib.h> #include <string.h> #include "MEM_guardedalloc.h" -#include "DNA_color_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -181,6 +177,7 @@ typedef struct uiAfterFunc { int autokey; } uiAfterFunc; +static int ui_but_contains_pt(uiBut *but, int mx, int my); static int ui_mouse_inside_button(ARegion *ar, uiBut *but, int x, int y); static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState state); static int ui_handler_region_menu(bContext *C, wmEvent *event, void *userdata); @@ -189,11 +186,16 @@ static void button_timers_tooltip_remove(bContext *C, uiBut *but); /* ******************** menu navigation helpers ************** */ +static int ui_but_editable(uiBut *but) +{ + return ELEM5(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX, PROGRESSBAR); +} + static uiBut *ui_but_prev(uiBut *but) { while(but->prev) { but= but->prev; - if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but; + if(!ui_but_editable(but)) return but; } return NULL; } @@ -202,7 +204,7 @@ static uiBut *ui_but_next(uiBut *but) { while(but->next) { but= but->next; - if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but; + if(!ui_but_editable(but)) return but; } return NULL; } @@ -213,7 +215,7 @@ static uiBut *ui_but_first(uiBlock *block) but= block->buttons.first; while(but) { - if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but; + if(!ui_but_editable(but)) return but; but= but->next; } return NULL; @@ -225,7 +227,7 @@ static uiBut *ui_but_last(uiBlock *block) but= block->buttons.last; while(but) { - if(!ELEM4(but->type, LABEL, SEPR, ROUNDBOX, LISTBOX)) return but; + if(!ui_but_editable(but)) return but; but= but->prev; } return NULL; @@ -234,7 +236,7 @@ static uiBut *ui_but_last(uiBlock *block) static int ui_is_a_warp_but(uiBut *but) { if(U.uiflag & USER_CONTINUOUS_MOUSE) - if(ELEM(but->type, NUM, NUMABS)) + if(ELEM3(but->type, NUM, NUMABS, HSVCIRCLE)) return TRUE; return FALSE; @@ -782,6 +784,8 @@ static void ui_apply_but_LINK(bContext *C, uiBut *but, uiHandleButtonData *data) break; } if(bt && bt!=but) { + if (!ELEM(bt->type, LINK, INLINK) || !ELEM(but->type, LINK, INLINK)) + return; if(but->type==LINK) ui_add_link(but, bt); else ui_add_link(bt, but); @@ -806,6 +810,14 @@ static void ui_apply_but_HISTOGRAM(bContext *C, uiBut *but, uiHandleButtonData * data->applied= 1; } +static void ui_apply_but_WAVEFORM(bContext *C, uiBut *but, uiHandleButtonData *data) +{ + ui_apply_but_func(C, but); + data->retval= but->retval; + data->applied= 1; +} + + static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, int interactive) { char *editstr; @@ -931,6 +943,9 @@ static void ui_apply_button(bContext *C, uiBlock *block, uiBut *but, uiHandleBut case HISTOGRAM: ui_apply_but_HISTOGRAM(C, but, data); break; + case WAVEFORM: + ui_apply_but_WAVEFORM(C, but, data); + break; default: break; } @@ -956,7 +971,7 @@ static void ui_but_drop(bContext *C, wmEvent *event, uiBut *but, uiHandleButtonD if(ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) { ID *id= (ID *)wmd->poin; - if(but->poin==NULL && but->rnapoin.data==NULL); + if(but->poin==NULL && but->rnapoin.data==NULL) {} button_activate_state(C, but, BUTTON_STATE_TEXT_EDITING); BLI_strncpy(data->str, id->name+2, data->maxlen); button_activate_state(C, but, BUTTON_STATE_EXIT); @@ -998,7 +1013,11 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, if(but->poin==NULL && but->rnapoin.data==NULL); else if(mode=='c') { - sprintf(buf, "%f", ui_get_but_val(but)); + if(ui_is_but_float(but)) + sprintf(buf, "%f", ui_get_but_val(but)); + else + sprintf(buf, "%d", (int)ui_get_but_val(but)); + WM_clipboard_text_set(buf, 0); } else { @@ -1032,7 +1051,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, } /* text/string and ID data */ - else if(ELEM(but->type, TEX, IDPOIN)) { + else if(ELEM3(but->type, TEX, IDPOIN, SEARCH_MENU)) { uiHandleButtonData *data= but->active; if(but->poin==NULL && but->rnapoin.data==NULL); @@ -1052,7 +1071,7 @@ static void ui_but_copy_paste(bContext *C, uiBut *but, uiHandleButtonData *data, /* colorband (not supported by system clipboard) */ else if(but->type==BUT_COLORBAND) { if(mode=='c') { - if(but->poin) + if(but->poin==NULL) return; memcpy(&but_copypaste_coba, but->poin, sizeof(ColorBand)); @@ -1144,18 +1163,22 @@ static int ui_textedit_delete_selection(uiBut *but, uiHandleButtonData *data) return change; } +/* note, but->block->aspect is used here, when drawing button style is getting scaled too */ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, short x) { uiStyle *style= U.uistyles.first; // XXX pass on as arg + uiFontStyle *fstyle = &style->widget; int startx= but->x1; char *origstr; - uiStyleFontSet(&style->widget); + uiStyleFontSet(fstyle); + if (fstyle->kerning==1) /* for BLF_width */ + BLF_enable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + origstr= MEM_callocN(sizeof(char)*data->maxlen, "ui_textedit origstr"); BLI_strncpy(origstr, but->drawstr, data->maxlen); - but->pos= strlen(origstr)-but->ofs; /* XXX solve generic */ if(but->type==NUM || but->type==NUMSLI) @@ -1166,16 +1189,38 @@ static void ui_textedit_set_cursor_pos(uiBut *but, uiHandleButtonData *data, sho startx += 16; } - /* XXX does not take zoom level into account */ - while((BLF_width(origstr+but->ofs) + startx) > x) { - if (but->pos <= 0) break; - but->pos--; - origstr[but->pos+but->ofs] = 0; + /* mouse dragged outside the widget to the left */ + if (x < startx && but->ofs > 0) { + int i= but->ofs; + + origstr[but->ofs] = 0; + + while (i > 0) { + i--; + if (BLF_width(fstyle->uifont_id, origstr+i) > (startx - x)*0.25) break; // 0.25 == scale factor for less sensitivity + } + but->ofs = i; + but->pos = but->ofs; + } + /* mouse inside the widget */ + else if (x >= startx) { + float aspect= sqrt(but->block->aspect); + + but->pos= strlen(origstr)-but->ofs; + + /* XXX does not take zoom level into account */ + while (aspect*startx + aspect*BLF_width(fstyle->uifont_id, origstr+but->ofs) > x) { + if (but->pos <= 0) break; + but->pos--; + origstr[but->pos+but->ofs] = 0; + } + but->pos += but->ofs; + if(but->pos<0) but->pos= 0; } - but->pos += but->ofs; - if(but->pos<0) but->pos= 0; - + if (fstyle->kerning == 1) + BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + MEM_freeN(origstr); } @@ -1507,6 +1552,8 @@ static void ui_textedit_begin(bContext *C, uiBut *but, uiHandleButtonData *data) } ui_check_but(but); + + WM_cursor_modal(CTX_wm_window(C), BC_TEXTEDITCURSOR); } static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data) @@ -1523,6 +1570,8 @@ static void ui_textedit_end(bContext *C, uiBut *but, uiHandleButtonData *data) but->editstr= NULL; but->pos= -1; } + + WM_cursor_restore(CTX_wm_window(C)); } static void ui_textedit_next_but(uiBlock *block, uiBut *actbut, uiHandleButtonData *data) @@ -1612,7 +1661,7 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle my= event->y; ui_window_to_block(data->region, block, &mx, &my); - if ((but->y1 <= my) && (my <= but->y2) && (but->x1 <= mx) && (mx <= but->x2)) { + if (ui_but_contains_pt(but, mx, my)) { ui_textedit_set_cursor_pos(but, data, mx); but->selsta = but->selend = but->pos; data->selstartx= mx; @@ -1718,7 +1767,11 @@ static void ui_do_but_textedit(bContext *C, uiBlock *block, uiBut *but, uiHandle if(event->ascii && (retval == WM_UI_HANDLER_CONTINUE)) { changed= ui_textedit_type_ascii(but, data, event->ascii); retval= WM_UI_HANDLER_BREAK; + } + /* textbutton with magnifier icon: do live update for search button */ + if(but->icon==ICON_VIEWZOOM) + update= 1; } if(changed) { @@ -1948,14 +2001,17 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data if(event->type == MOUSEMOVE) return WM_UI_HANDLER_CONTINUE; - if(event->type == ESCKEY) { - /* data->cancel doesnt work, this button opens immediate */ - if(but->flag & UI_BUT_IMMEDIATE) - ui_set_but_val(but, 0); - else - data->cancel= 1; - button_activate_state(C, but, BUTTON_STATE_EXIT); - return WM_UI_HANDLER_BREAK; + if(event->type == LEFTMOUSE && event->val==KM_PRESS) { + /* only cancel if click outside the button */ + if(ui_mouse_inside_button(but->active->region, but, event->x, event->y) == 0) { + /* data->cancel doesnt work, this button opens immediate */ + if(but->flag & UI_BUT_IMMEDIATE) + ui_set_but_val(but, 0); + else + data->cancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + return WM_UI_HANDLER_BREAK; + } } /* always set */ @@ -1989,15 +2045,11 @@ static int ui_do_but_HOTKEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data return WM_UI_HANDLER_CONTINUE; } - static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, wmEvent *event) { if(data->state == BUTTON_STATE_HIGHLIGHT) { if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) { - short event= (short)ui_get_but_val(but); - /* hardcoded prevention from editing or assigning ESC */ - if(event!=ESCKEY) - button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT); + button_activate_state(C, but, BUTTON_STATE_WAIT_KEY_EVENT); return WM_UI_HANDLER_BREAK; } } @@ -2006,7 +2058,7 @@ static int ui_do_but_KEYEVT(bContext *C, uiBut *but, uiHandleButtonData *data, w return WM_UI_HANDLER_CONTINUE; if(event->val==KM_PRESS) { - if(event->type!=ESCKEY && WM_key_event_string(event->type)[0]) + if(WM_key_event_string(event->type)[0]) ui_set_but_val(but, event->type); else data->cancel= 1; @@ -2062,16 +2114,24 @@ static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, wmE /* first handle click on icondrag type button */ if(event->type==LEFTMOUSE && but->dragpoin) { if(ui_but_mouse_inside_icon(but, data->region, event)) { + + /* tell the button to wait and keep checking further events to + * see if it should start dragging */ button_activate_state(C, but, BUTTON_STATE_WAIT_DRAG); data->dragstartx= event->x; data->dragstarty= event->y; - return WM_UI_HANDLER_BREAK; + return WM_UI_HANDLER_CONTINUE; } } if(ELEM3(event->type, LEFTMOUSE, PADENTER, RETKEY) && event->val==KM_PRESS) { + int ret = WM_UI_HANDLER_BREAK; + /* XXX (a bit ugly) Special case handling for filebrowser drag button */ + if(but->dragpoin && but->imb && ui_but_mouse_inside_icon(but, data->region, event)) { + ret = WM_UI_HANDLER_CONTINUE; + } button_activate_state(C, but, BUTTON_STATE_EXIT); - return WM_UI_HANDLER_BREAK; + return ret; } } else if(data->state == BUTTON_STATE_WAIT_DRAG) { @@ -2081,14 +2141,16 @@ static int ui_do_but_EXIT(bContext *C, uiBut *but, uiHandleButtonData *data, wmE return WM_UI_HANDLER_BREAK; } - /* pass on release as press for other keymaps XXX hack alert! */ + /* If the mouse has been pressed and released, getting to + * this point without triggering a drag, then clear the + * drag state for this button and continue to pass on the event */ if(event->type==LEFTMOUSE && event->val==KM_RELEASE) { button_activate_state(C, but, BUTTON_STATE_EXIT); - event->val= KM_CLICK; return WM_UI_HANDLER_CONTINUE; } - /* while wait drag, always block other events to get handled */ + /* while waiting for a drag to be triggered, always block + * other events from getting handled */ return WM_UI_HANDLER_BREAK; } @@ -2162,7 +2224,6 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i softmax= but->softmax; softrange= softmax - softmin; - if(ui_is_a_warp_but(but)) { /* Mouse location isn't screen clamped to the screen so use a linear mapping * 2px == 1-int, or 1px == 1-ClickStep */ @@ -2222,15 +2283,18 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i /* Use a non-linear mapping of the mouse drag especially for large floats (normal behavior) */ deler= 500; if(!ui_is_but_float(but)) { - if((softrange)<100) deler= 200.0; - if((softrange)<25) deler= 50.0; + /* prevent large ranges from getting too out of control */ + if (softrange > 600) deler = powf(softrange, 0.75); + + if (softrange < 100) deler= 200.0; + if (softrange < 25) deler= 50.0; } deler /= fac; - if(ui_is_but_float(but) && softrange > 11) { + if(softrange > 11) { /* non linear change in mouse input- good for high precicsion */ data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.002); - } else if (!ui_is_but_float(but) && softrange > 129) { /* only scale large int buttons */ + } else if (softrange > 129) { /* only scale large int buttons */ /* non linear change in mouse input- good for high precicsionm ints need less fine tuning */ data->dragf+= (((float)(mx-data->draglastx))/deler) * (fabs(data->dragstartx-mx)*0.004); } else { @@ -2238,8 +2302,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i data->dragf+= ((float)(mx-data->draglastx))/deler ; } - if(data->dragf>1.0) data->dragf= 1.0; - if(data->dragf<0.0) data->dragf= 0.0; + CLAMP(data->dragf, 0.0, 1.0); data->draglastx= mx; tempf= (softmin + data->dragf*softrange); @@ -2251,7 +2314,7 @@ static int ui_numedit_but_NUM(uiBut *but, uiHandleButtonData *data, float fac, i CLAMP(temp, softmin, softmax); lvalue= (int)data->value; - + if(temp != lvalue) { data->dragchange= 1; data->value= (double)temp; @@ -2891,8 +2954,7 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, float range; /* vertical 'value' strip */ - hsv[2]= y; - + /* exception only for value strip - use the range set in but->min/max */ range = but->softmax - but->softmin; hsv[2] = y*range + but->softmin; @@ -2900,10 +2962,12 @@ static int ui_numedit_but_HSVCUBE(uiBut *but, uiHandleButtonData *data, int mx, if (color_profile) hsv[2] = srgb_to_linearrgb(hsv[2]); + if (hsv[2] > but->softmax) + hsv[2] = but->softmax; } hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); - ui_set_but_vectorf(but, rgb); + copy_v3_v3(data->vec, rgb); data->draglastx= mx; data->draglasty= my; @@ -2983,7 +3047,7 @@ static int ui_do_but_HSVCUBE(bContext *C, uiBlock *block, uiBut *but, uiHandleBu return WM_UI_HANDLER_CONTINUE; } -static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx, int my) +static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx, int my, int shift) { rcti rect; int changed= 1; @@ -2997,13 +3061,29 @@ static int ui_numedit_but_HSVCIRCLE(uiBut *but, uiHandleButtonData *data, int mx /* exception, when using color wheel in 'locked' value state: * allow choosing a hue for black values, by giving a tiny increment */ - if (but->a2 == 1) { // lock + if (but->flag & UI_BUT_COLOR_LOCK) { // lock if (hsv[2] == 0.f) hsv[2] = 0.0001f; } - + + if(U.uiflag & USER_CONTINUOUS_MOUSE) { + float fac= shift ? 0.05 : 1.0f; + /* slow down the mouse, this is fairly picky */ + mx = (data->dragstartx*(1.0f-fac) + mx*fac); + my = (data->dragstarty*(1.0f-fac) + my*fac); + } + ui_hsvcircle_vals_from_pos(hsv, hsv+1, &rect, (float)mx, (float)my); - + + if(but->flag & UI_BUT_COLOR_CUBIC) + hsv[1]= 1.0f - sqrt3f(1.0f - hsv[1]); + hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); + + if((but->flag & UI_BUT_VEC_SIZE_LOCK) && (rgb[0] || rgb[1] || rgb[2])) { + normalize_v3(rgb); + mul_v3_fl(rgb, but->a2); + } + ui_set_but_vectorf(but, rgb); data->draglastx= mx; @@ -3030,7 +3110,7 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); /* also do drag the first time */ - if(ui_numedit_but_HSVCIRCLE(but, data, mx, my)) + if(ui_numedit_but_HSVCIRCLE(but, data, mx, my, event->shift)) ui_numedit_apply(C, block, but, data); return WM_UI_HANDLER_BREAK; @@ -3081,7 +3161,7 @@ static int ui_do_but_HSVCIRCLE(bContext *C, uiBlock *block, uiBut *but, uiHandle } else if(event->type == MOUSEMOVE) { if(mx!=data->draglastx || my!=data->draglasty) { - if(ui_numedit_but_HSVCIRCLE(but, data, mx, my)) + if(ui_numedit_but_HSVCIRCLE(but, data, mx, my, event->shift)) ui_numedit_apply(C, block, but, data); } } @@ -3434,6 +3514,12 @@ static int ui_do_but_CURVE(bContext *C, uiBlock *block, uiBut *but, uiHandleButt return WM_UI_HANDLER_CONTINUE; } +static int in_scope_resize_zone(uiBut *but, int x, int y) +{ + // bottom corner return (x > but->x2 - SCOPE_RESIZE_PAD) && (y < but->y1 + SCOPE_RESIZE_PAD); + return (y < but->y1 + SCOPE_RESIZE_PAD); +} + static int ui_numedit_but_HISTOGRAM(uiBut *but, uiHandleButtonData *data, int mx, int my) { Histogram *hist = (Histogram *)but->poin; @@ -3447,10 +3533,17 @@ static int ui_numedit_but_HISTOGRAM(uiBut *but, uiHandleButtonData *data, int mx dx = mx - data->draglastx; dy = my - data->draglasty; - yfac = MIN2(powf(hist->ymax, 2.f), 1.f) * 0.5; - hist->ymax += dy * yfac; - CLAMP(hist->ymax, 1.f, 100.f); + if (in_scope_resize_zone(but, data->dragstartx, data->dragstarty)) { + /* resize histogram widget itself */ + hist->height = (but->y2 - but->y1) + (data->dragstarty - my); + } else { + /* scale histogram values */ + yfac = MIN2(powf(hist->ymax, 2.f), 1.f) * 0.5; + hist->ymax += dy * yfac; + + CLAMP(hist->ymax, 1.f, 100.f); + } data->draglastx= mx; data->draglasty= my; @@ -3509,6 +3602,156 @@ static int ui_do_but_HISTOGRAM(bContext *C, uiBlock *block, uiBut *but, uiHandle return WM_UI_HANDLER_CONTINUE; } +static int ui_numedit_but_WAVEFORM(uiBut *but, uiHandleButtonData *data, int mx, int my) +{ + Scopes *scopes = (Scopes *)but->poin; + rcti rect; + int changed= 1; + float dx, dy, yfac=1.f; + + rect.xmin= but->x1; rect.xmax= but->x2; + rect.ymin= but->y1; rect.ymax= but->y2; + + dx = mx - data->draglastx; + dy = my - data->draglasty; + + + if (in_scope_resize_zone(but, data->dragstartx, data->dragstarty)) { + /* resize waveform widget itself */ + scopes->wavefrm_height = (but->y2 - but->y1) + (data->dragstarty - my); + } else { + /* scale waveform values */ + yfac = scopes->wavefrm_yfac; + scopes->wavefrm_yfac += dy/200.0f; + + CLAMP(scopes->wavefrm_yfac, 0.5f, 2.f); + } + + data->draglastx= mx; + data->draglasty= my; + + return changed; +} + +static int ui_do_but_WAVEFORM(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) +{ + int mx, my; + + mx= event->x; + my= event->y; + ui_window_to_block(data->region, block, &mx, &my); + + if(data->state == BUTTON_STATE_HIGHLIGHT) { + if(event->type==LEFTMOUSE && event->val==KM_PRESS) { + data->dragstartx= mx; + data->dragstarty= my; + data->draglastx= mx; + data->draglasty= my; + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + + /* also do drag the first time */ + if(ui_numedit_but_WAVEFORM(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + + return WM_UI_HANDLER_BREAK; + } + else if (event->type == ZEROKEY && event->val == KM_PRESS) { + Scopes *scopes = (Scopes *)but->poin; + scopes->wavefrm_yfac = 1.f; + + button_activate_state(C, but, BUTTON_STATE_EXIT); + return WM_UI_HANDLER_BREAK; + } + } + else if(data->state == BUTTON_STATE_NUM_EDITING) { + if(event->type == ESCKEY) { + data->cancel= 1; + data->escapecancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + else if(event->type == MOUSEMOVE) { + if(mx!=data->draglastx || my!=data->draglasty) { + if(ui_numedit_but_WAVEFORM(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + } + } + else if(event->type==LEFTMOUSE && event->val!=KM_PRESS) { + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + return WM_UI_HANDLER_BREAK; + } + + return WM_UI_HANDLER_CONTINUE; +} + +static int ui_numedit_but_VECTORSCOPE(uiBut *but, uiHandleButtonData *data, int mx, int my) +{ + Scopes *scopes = (Scopes *)but->poin; + rcti rect; + int changed= 1; + float dx, dy; + + rect.xmin= but->x1; rect.xmax= but->x2; + rect.ymin= but->y1; rect.ymax= but->y2; + + dx = mx - data->draglastx; + dy = my - data->draglasty; + + if (in_scope_resize_zone(but, data->dragstartx, data->dragstarty)) { + /* resize vectorscope widget itself */ + scopes->vecscope_height = (but->y2 - but->y1) + (data->dragstarty - my); + } + + data->draglastx= mx; + data->draglasty= my; + + return changed; +} + +static int ui_do_but_VECTORSCOPE(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) +{ + int mx, my; + + mx= event->x; + my= event->y; + ui_window_to_block(data->region, block, &mx, &my); + + if(data->state == BUTTON_STATE_HIGHLIGHT) { + if(event->type==LEFTMOUSE && event->val==KM_PRESS) { + data->dragstartx= mx; + data->dragstarty= my; + data->draglastx= mx; + data->draglasty= my; + button_activate_state(C, but, BUTTON_STATE_NUM_EDITING); + + /* also do drag the first time */ + if(ui_numedit_but_VECTORSCOPE(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + + return WM_UI_HANDLER_BREAK; + } + } + else if(data->state == BUTTON_STATE_NUM_EDITING) { + if(event->type == ESCKEY) { + data->cancel= 1; + data->escapecancel= 1; + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + else if(event->type == MOUSEMOVE) { + if(mx!=data->draglastx || my!=data->draglasty) { + if(ui_numedit_but_VECTORSCOPE(but, data, mx, my)) + ui_numedit_apply(C, block, but, data); + } + } + else if(event->type==LEFTMOUSE && event->val!=KM_PRESS) { + button_activate_state(C, but, BUTTON_STATE_EXIT); + } + return WM_UI_HANDLER_BREAK; + } + + return WM_UI_HANDLER_CONTINUE; +} + #ifdef INTERNATIONAL static int ui_do_but_CHARTAB(bContext *C, uiBlock *block, uiBut *but, uiHandleButtonData *data, wmEvent *event) { @@ -3706,7 +3949,7 @@ static uiBlock *menu_change_shortcut(bContext *C, ARegion *ar, void *arg) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 200, 20, style); - uiItemR(layout, "", 0, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE); + uiItemR(layout, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE, "", 0); uiPopupBoundsBlock(block, 6, 100, 10); uiEndBlock(C, block); @@ -3740,7 +3983,7 @@ static uiBlock *menu_add_shortcut(bContext *C, ARegion *ar, void *arg) layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, 0, 0, 200, 20, style); - uiItemR(layout, "", 0, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE); + uiItemR(layout, &ptr, "type", UI_ITEM_R_FULL_EVENT|UI_ITEM_R_IMMEDIATE, "", 0); uiPopupBoundsBlock(block, 6, 100, 10); uiEndBlock(C, block); @@ -3937,28 +4180,28 @@ static int ui_but_menu(bContext *C, uiBut *but) WM_operator_properties_create(&ptr_props, "WM_OT_doc_view"); RNA_string_set(&ptr_props, "doc_id", buf); - uiItemFullO(layout, "View Docs", 0, "WM_OT_doc_view", ptr_props.data, WM_OP_EXEC_DEFAULT, 0); + uiItemFullO(layout, "WM_OT_doc_view", "View Docs", 0, ptr_props.data, WM_OP_EXEC_DEFAULT, 0); WM_operator_properties_create(&ptr_props, "WM_OT_doc_edit"); RNA_string_set(&ptr_props, "doc_id", buf); RNA_string_set(&ptr_props, "doc_new", RNA_property_description(but->rnaprop)); - uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + uiItemFullO(layout, "WM_OT_doc_edit", "Submit Description", 0, ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); } else if (but->optype) { WM_operator_py_idname(buf, but->optype->idname); WM_operator_properties_create(&ptr_props, "WM_OT_doc_view"); RNA_string_set(&ptr_props, "doc_id", buf); - uiItemFullO(layout, "View Docs", 0, "WM_OT_doc_view", ptr_props.data, WM_OP_EXEC_DEFAULT, 0); + uiItemFullO(layout, "WM_OT_doc_view", "View Docs", 0, ptr_props.data, WM_OP_EXEC_DEFAULT, 0); WM_operator_properties_create(&ptr_props, "WM_OT_doc_edit"); RNA_string_set(&ptr_props, "doc_id", buf); RNA_string_set(&ptr_props, "doc_new", but->optype->description); - uiItemFullO(layout, "Submit Description", 0, "WM_OT_doc_edit", ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); + uiItemFullO(layout, "WM_OT_doc_edit", "Submit Description", 0, ptr_props.data, WM_OP_INVOKE_DEFAULT, 0); } } @@ -3989,7 +4232,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) ui_but_drop (C, event, but, data); } /* handle keyframing */ - else if(event->type == IKEY && event->val == KM_PRESS) { + else if(event->type == IKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_delete_keyframe(C); else @@ -4000,7 +4243,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } /* handle drivers */ - else if(event->type == DKEY && event->val == KM_PRESS) { + else if(event->type == DKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_remove_driver(C); else @@ -4011,7 +4254,7 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) return WM_UI_HANDLER_BREAK; } /* handle keyingsets */ - else if(event->type == KKEY && event->val == KM_PRESS) { + else if(event->type == KKEY && !ELEM3(1, event->ctrl, event->oskey, event->shift) && event->val == KM_PRESS) { if(event->alt) ui_but_anim_remove_keyingset(C); else @@ -4093,11 +4336,18 @@ static int ui_do_button(bContext *C, uiBlock *block, uiBut *but, wmEvent *event) case ROW: case LISTROW: case BUT_IMAGE: + case PROGRESSBAR: retval= ui_do_but_EXIT(C, but, data, event); break; case HISTOGRAM: retval= ui_do_but_HISTOGRAM(C, block, but, data, event); break; + case WAVEFORM: + retval= ui_do_but_WAVEFORM(C, block, but, data, event); + break; + case VECTORSCOPE: + retval= ui_do_but_VECTORSCOPE(C, block, but, data, event); + break; case TEX: case IDPOIN: case SEARCH_MENU: @@ -4406,7 +4656,7 @@ static void button_activate_state(bContext *C, uiBut *but, uiHandleButtonState s but->flag |= UI_SELECT; button_timers_tooltip_remove(C, but); } - + /* text editing */ if(state == BUTTON_STATE_TEXT_EDITING && data->state != BUTTON_STATE_TEXT_SELECTING) ui_textedit_begin(C, but, data); @@ -5381,8 +5631,7 @@ static int ui_handler_region(bContext *C, wmEvent *event, void *userdata) /* either handle events for already activated button or try to activate */ but= ui_but_find_activated(ar); - if(!but || !button_modal_state(but->active->state)) - retval= ui_handler_panel_region(C, event); + retval= ui_handler_panel_region(C, event); if(retval == WM_UI_HANDLER_CONTINUE) retval= ui_handle_list_event(C, event, ar); diff --git a/source/blender/editors/interface/interface_icons.c b/source/blender/editors/interface/interface_icons.c index 457713755fd..232b6f7f317 100644 --- a/source/blender/editors/interface/interface_icons.c +++ b/source/blender/editors/interface/interface_icons.c @@ -44,10 +44,9 @@ #include "BLI_blenlib.h" #include "BLI_storage_types.h" -#include "DNA_material_types.h" #include "DNA_screen_types.h" -#include "DNA_scene_types.h" #include "DNA_userdef_types.h" +#include "DNA_brush_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -66,7 +65,6 @@ #include "UI_interface.h" #include "UI_interface_icons.h" -#include "UI_resources.h" /* elubie: should be removed once the enum for the ICONS is in BIF_preview_icons.h */ #include "interface_intern.h" @@ -460,30 +458,25 @@ static void init_internal_icons() ImBuf *bbuf= NULL; int x, y, icontype; char iconfilestr[FILE_MAXDIR+FILE_MAXFILE]; - char filenamestr[FILE_MAXFILE+16]; // 16 == strlen(".blender/icons/")+1 if ((btheme!=NULL) && (strlen(btheme->tui.iconfile) > 0)) { - -#ifdef WIN32 - sprintf(filenamestr, "icons/%s", btheme->tui.iconfile); -#else - sprintf(filenamestr, ".blender/icons/%s", btheme->tui.iconfile); -#endif - - BLI_make_file_string("/", iconfilestr, BLI_gethome(), filenamestr); - - if (BLI_exists(iconfilestr)) { - bbuf = IMB_loadiffname(iconfilestr, IB_rect); - if(bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H) { - if (G.f & G_DEBUG) - printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); - IMB_freeImBuf(bbuf); - bbuf= NULL; + char *datadir= BLI_get_folder(BLENDER_DATAFILES, NULL); + if (datadir) { + BLI_make_file_string("/", iconfilestr, datadir, btheme->tui.iconfile); + + if (BLI_exists(iconfilestr)) { + bbuf = IMB_loadiffname(iconfilestr, IB_rect); + if(bbuf->x < ICON_IMAGE_W || bbuf->y < ICON_IMAGE_H) { + if (G.f & G_DEBUG) + printf("\n***WARNING***\nIcons file %s too small.\nUsing built-in Icons instead\n", iconfilestr); + IMB_freeImBuf(bbuf); + bbuf= NULL; + } } } } if(bbuf==NULL) - bbuf = IMB_ibImageFromMemory((int *)datatoc_blenderbuttons, datatoc_blenderbuttons_size, IB_rect); + bbuf = IMB_ibImageFromMemory((unsigned char*)datatoc_blenderbuttons, datatoc_blenderbuttons_size, IB_rect); if(bbuf) { /* free existing texture if any */ @@ -521,12 +514,14 @@ static void init_internal_icons() else icontype= ICON_TYPE_BUFFER; - for (y=0; y<ICON_GRID_ROWS; y++) { - for (x=0; x<ICON_GRID_COLS; x++) { - def_internal_icon(bbuf, BIFICONID_FIRST + y*ICON_GRID_COLS + x, - x*(ICON_GRID_W+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, - y*(ICON_GRID_H+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, ICON_GRID_W, - icontype); + if(bbuf) { + for (y=0; y<ICON_GRID_ROWS; y++) { + for (x=0; x<ICON_GRID_COLS; x++) { + def_internal_icon(bbuf, BIFICONID_FIRST + y*ICON_GRID_COLS + x, + x*(ICON_GRID_W+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, + y*(ICON_GRID_H+ICON_GRID_MARGIN)+ICON_GRID_MARGIN, ICON_GRID_W, + icontype); + } } } @@ -556,14 +551,14 @@ static void init_iconfile_list(struct ListBase *list) char icondirstr[FILE_MAX]; char iconfilestr[FILE_MAX+16]; /* allow 256 chars for file+dir */ char olddir[FILE_MAX]; - + char *datadir= NULL; + list->first = list->last = NULL; + datadir = BLI_get_folder(BLENDER_DATAFILES, NULL); -#ifdef WIN32 - BLI_make_file_string("/", icondirstr, BLI_gethome(), "icons"); -#else - BLI_make_file_string("/", icondirstr, BLI_gethome(), ".blender/icons"); -#endif + if (!datadir) return; + + BLI_make_file_string("/", icondirstr, datadir, ""); if(BLI_exists(icondirstr)==0) return; @@ -573,8 +568,7 @@ static void init_iconfile_list(struct ListBase *list) if(!BLI_getwdN(olddir)) restoredir = 0; totfile = BLI_getdir(icondirstr, &dir); - if (restoredir && !chdir(olddir)) - ; /* fix warning about checking return value */ + if (restoredir && !chdir(olddir)) {} /* fix warning about checking return value */ for(i=0; i<totfile; i++) { if( (dir[i].type & S_IFREG) ) { @@ -769,6 +763,7 @@ static void icon_create_mipmap(struct PreviewImage* prv_img, int miplevel) prv_img->w[miplevel] = size; prv_img->h[miplevel] = size; prv_img->changed[miplevel] = 1; + prv_img->changed_timestamp[miplevel] = 0; prv_img->rect[miplevel] = MEM_callocN(size*size*sizeof(unsigned int), "prv_rect"); } } @@ -983,6 +978,16 @@ int ui_id_icon_get(bContext *C, ID *id, int preview) /* checks if not exists, or changed */ ui_id_icon_render(C, id, preview); break; + case ID_BR: + { /* use the image in the brush as the icon */ + /* XXX redundancy here can be reduced be rewriting this switch as an if */ + ID* ima_id = (ID*)((Brush*)id)->image_icon; + id = ima_id ? ima_id : id; + iconid= BKE_icon_getid(id); + /* checks if not exists, or changed */ + ui_id_icon_render(C, id, preview); + } + break; default: break; } diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h index 4f7a97f0579..cb8130573fe 100644 --- a/source/blender/editors/interface/interface_intern.h +++ b/source/blender/editors/interface/interface_intern.h @@ -87,7 +87,8 @@ typedef enum { UI_WTYPE_NORMAL, UI_WTYPE_BOX, UI_WTYPE_SCROLL, - UI_WTYPE_LISTITEM + UI_WTYPE_LISTITEM, + UI_WTYPE_PROGRESSBAR, } uiWidgetTypeEnum; @@ -127,6 +128,9 @@ typedef enum { #define EXTEND_LEFT 1 #define EXTEND_RIGHT 2 +/* for scope resize zone */ +#define SCOPE_RESIZE_PAD 9 + typedef struct { short xim, yim; unsigned int *rect; @@ -180,8 +184,11 @@ struct uiBut { struct bContextStore *context; + /* not ysed yet, was used in 2.4x for ui_draw_pulldown_round & friends */ + /* void (*embossfunc)(int , int , float, float, float, float, float, int); void (*sliderfunc)(int , float, float, float, float, float, float, int); + */ uiButCompleteFunc autocomplete_func; void *autofunc_arg; @@ -224,12 +231,12 @@ struct uiBut { /* Operator data */ struct wmOperatorType *optype; - int opcontext; struct IDProperty *opproperties; struct PointerRNA *opptr; + short opcontext; /* Draggable data, type is WM_DRAG_... */ - int dragtype; + short dragtype; void *dragpoin; struct ImBuf *imb; float imb_scale; @@ -440,6 +447,8 @@ extern void gl_round_box_vertical_shade(int mode, float minx, float miny, float void ui_draw_gradient(rcti *rect, float *rgb, int type, float alpha); void ui_draw_but_HISTOGRAM(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); +void ui_draw_but_WAVEFORM(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); +void ui_draw_but_VECTORSCOPE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_COLORBAND(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_NORMAL(uiBut *but, struct uiWidgetColors *wcol, rcti *rect); void ui_draw_but_CURVE(ARegion *ar, uiBut *but, struct uiWidgetColors *wcol, rcti *rect); @@ -474,7 +483,7 @@ int ui_id_icon_get(struct bContext *C, struct ID *id, int preview); /* resources.c */ void init_userdef_do_versions(void); -void ui_theme_init_userdef(void); +void ui_theme_init_default(void); void ui_resources_init(void); void ui_resources_free(void); diff --git a/source/blender/editors/interface/interface_layout.c b/source/blender/editors/interface/interface_layout.c index d4a47be11ca..b7b9a2156ef 100644 --- a/source/blender/editors/interface/interface_layout.c +++ b/source/blender/editors/interface/interface_layout.c @@ -29,11 +29,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_ID.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_listbase.h" #include "BLI_string.h" @@ -48,12 +45,7 @@ #include "RNA_access.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" -#include "ED_util.h" -#include "ED_types.h" -#include "ED_screen.h" #include "WM_api.h" #include "WM_types.h" @@ -439,18 +431,14 @@ static void ui_item_array(uiLayout *layout, uiBlock *block, char *name, int icon but->type= TOG; } } - else if(ELEM(subtype, PROP_COLOR, PROP_COLOR_GAMMA) && len == 4) { - but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, w, UI_UNIT_Y); - if(slider && but->type==NUM) - but->type= NUMSLI; - } } uiBlockSetCurLayout(block, layout); } -static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, char *uiname, int x, int y, int w, int h, int icon_only) +static void ui_item_enum_expand(uiLayout *layout, uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, char *uiname, int x, int y, int w, int h, int icon_only) { + uiBut *but; EnumPropertyItem *item; const char *identifier; char *name; @@ -470,11 +458,14 @@ static void ui_item_enum_row(uiLayout *layout, uiBlock *block, PointerRNA *ptr, itemw= ui_text_icon_width(block->curlayout, name, icon, 0); if(icon && strcmp(name, "") != 0 && !icon_only) - uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefIconTextButR(block, ROW, 0, icon, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else if(icon) - uiDefIconButR(block, ROW, 0, icon, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefIconButR(block, ROW, 0, icon, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); else - uiDefButR(block, ROW, 0, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + but= uiDefButR(block, ROW, 0, name, 0, 0, itemw, h, ptr, identifier, -1, 0, value, -1, -1, NULL); + + if(ui_layout_local_dir(layout) != UI_LAYOUT_HORIZONTAL) + but->flag |= UI_TEXT_LEFT; } uiBlockSetCurLayout(block, layout); @@ -522,7 +513,7 @@ static uiBut *ui_item_with_label(uiLayout *layout, uiBlock *block, char *name, i uiDefAutoButR(block, ptr, prop, index, "", icon, x, y, w-UI_UNIT_X, h); /* BUTTONS_OT_file_browse calls uiFileBrowseContextProperty */ - but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, "Browse for file or directory"); + but= uiDefIconButO(block, BUT, "BUTTONS_OT_file_browse", WM_OP_INVOKE_DEFAULT, ICON_FILESEL, x, y, UI_UNIT_X, h, NULL); } else if(subtype == PROP_DIRECTION) { uiDefButR(block, BUT_NORMAL, 0, name, x, y, 100, 100, ptr, RNA_property_identifier(prop), index, 0, 0, -1, -1, NULL); @@ -600,7 +591,7 @@ static void ui_item_disabled(uiLayout *layout, char *name) } /* operator items */ -PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDProperty *properties, int context, int flag) +PointerRNA uiItemFullO(uiLayout *layout, char *idname, char *name, int icon, IDProperty *properties, int context, int flag) { uiBlock *block= layout->root->block; wmOperatorType *ot= WM_operatortype_find(idname, 0); @@ -622,6 +613,9 @@ PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDP w= ui_text_icon_width(layout, name, icon, 0); + if (flag & UI_ITEM_R_NO_BG) + uiBlockSetEmboss(block, UI_EMBOSSN); + if(icon && strcmp(name, "") != 0) but= uiDefIconTextButO(block, BUT, ot->idname, context, icon, (char*)name, 0, 0, w, UI_UNIT_Y, NULL); else if(icon) @@ -632,7 +626,10 @@ PointerRNA uiItemFullO(uiLayout *layout, char *name, int icon, char *idname, IDP /* text alignment for toolbar buttons */ if((layout->root->type == UI_LAYOUT_TOOLBAR) && !icon) but->flag |= UI_TEXT_LEFT; - + + if (flag & UI_ITEM_R_NO_BG) + uiBlockSetEmboss(block, UI_EMBOSS); + /* assign properties */ if(properties || (flag & UI_ITEM_O_RETURN_PROPS)) { PointerRNA *opptr= uiButGetOperatorPtrRNA(but); @@ -681,7 +678,7 @@ static char *ui_menu_enumpropname(uiLayout *layout, char *opname, char *propname return ""; } -void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value) +void uiItemEnumO(uiLayout *layout, char *opname, char *name, int icon, char *propname, int value) { PointerRNA ptr; @@ -691,7 +688,7 @@ void uiItemEnumO(uiLayout *layout, char *name, int icon, char *opname, char *pro if(!name) name= ui_menu_enumpropname(layout, opname, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, IDProperty *properties, int context, int flag) @@ -731,10 +728,10 @@ void uiItemsFullEnumO(uiLayout *layout, char *opname, char *propname, IDProperty ptr.data= IDP_CopyProperty(properties); RNA_enum_set(&ptr, propname, item[i].value); - uiItemFullO(column, (char*)item[i].name, item[i].icon, opname, ptr.data, context, flag); + uiItemFullO(column, opname, (char*)item[i].name, item[i].icon, ptr.data, context, flag); } else - uiItemEnumO(column, (char*)item[i].name, item[i].icon, opname, propname, item[i].value); + uiItemEnumO(column, opname, (char*)item[i].name, item[i].icon, propname, item[i].value); } else { if(item[i].name) { @@ -798,7 +795,7 @@ void uiItemEnumO_string(uiLayout *layout, char *name, int icon, char *opname, ch if(!name) name= ui_menu_enumpropname(layout, opname, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value) @@ -808,7 +805,7 @@ void uiItemBooleanO(uiLayout *layout, char *name, int icon, char *opname, char * WM_operator_properties_create(&ptr, opname); RNA_boolean_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *propname, int value) @@ -818,7 +815,7 @@ void uiItemIntO(uiLayout *layout, char *name, int icon, char *opname, char *prop WM_operator_properties_create(&ptr, opname); RNA_int_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *propname, float value) @@ -828,7 +825,7 @@ void uiItemFloatO(uiLayout *layout, char *name, int icon, char *opname, char *pr WM_operator_properties_create(&ptr, opname); RNA_float_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *propname, char *value) @@ -838,12 +835,12 @@ void uiItemStringO(uiLayout *layout, char *name, int icon, char *opname, char *p WM_operator_properties_create(&ptr, opname); RNA_string_set(&ptr, propname, value); - uiItemFullO(layout, name, icon, opname, ptr.data, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, ptr.data, layout->root->opcontext, 0); } void uiItemO(uiLayout *layout, char *name, int icon, char *opname) { - uiItemFullO(layout, name, icon, opname, NULL, layout->root->opcontext, 0); + uiItemFullO(layout, opname, name, icon, NULL, layout->root->opcontext, 0); } /* RNA property items */ @@ -892,7 +889,7 @@ static void ui_item_rna_size(uiLayout *layout, char *name, int icon, PointerRNA *r_h= h; } -void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int flag) +void uiItemFullR(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, int index, int value, int flag, char *name, int icon) { uiBlock *block= layout->root->block; uiBut *but; @@ -954,7 +951,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper } /* expanded enum */ else if(type == PROP_ENUM && expand) - ui_item_enum_row(layout, block, ptr, prop, name, 0, 0, w, h, icon_only); + ui_item_enum_expand(layout, block, ptr, prop, name, 0, 0, w, h, icon_only); /* property with separate label */ else if(type == PROP_ENUM || type == PROP_STRING || type == PROP_POINTER) { but= ui_item_with_label(layout, block, name, icon, ptr, prop, index, 0, 0, w, h, flag); @@ -975,7 +972,7 @@ void uiItemFullR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, Proper uiBlockSetEmboss(block, UI_EMBOSS); } -void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *propname, int flag) +void uiItemR(uiLayout *layout, PointerRNA *ptr, char *propname, int flag, char *name, int icon) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); @@ -985,7 +982,7 @@ void uiItemR(uiLayout *layout, char *name, int icon, PointerRNA *ptr, char *prop return; } - uiItemFullR(layout, name, icon, ptr, prop, RNA_NO_INDEX, 0, flag); + uiItemFullR(layout, ptr, prop, RNA_NO_INDEX, 0, flag, name, icon); } void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, int value) @@ -998,10 +995,10 @@ void uiItemEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, return; } - uiItemFullR(layout, name, icon, ptr, prop, RNA_ENUM_VALUE, value, 0); + uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, value, 0, name, icon); } -void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, char *value) +void uiItemEnumR_string(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *value, char *name, int icon) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); EnumPropertyItem *item; @@ -1024,7 +1021,7 @@ void uiItemEnumR_string(uiLayout *layout, char *name, int icon, struct PointerRN for(a=0; item[a].identifier; a++) { if(item[a].value == ivalue) { - uiItemFullR(layout, (char*)item[a].name, item[a].icon, ptr, prop, RNA_ENUM_VALUE, ivalue, 0); + uiItemFullR(layout, ptr, prop, RNA_ENUM_VALUE, ivalue, 0, (char*)item[a].name, item[a].icon); break; } } @@ -1113,9 +1110,11 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, ui if(flag & PROP_ID_SELF_CHECK) if(itemptr.data == but->rnapoin.id.data) continue; - - if(RNA_struct_is_ID(itemptr.type)) - iconid= ui_id_icon_get((bContext*)C, itemptr.data, 0); + + if(itemptr.type && RNA_struct_is_ID(itemptr.type)) + iconid= ui_id_icon_get((bContext*)C, itemptr.data, 1); + else + iconid = 0; name= RNA_struct_name_get_alloc(&itemptr, NULL, 0); @@ -1127,8 +1126,8 @@ static void rna_search_cb(const struct bContext *C, void *arg_but, char *str, ui cis->iconid = iconid; BLI_addtail(items_list, cis); } + MEM_freeN(name); } - MEM_freeN(name); i++; } @@ -1199,7 +1198,7 @@ void ui_but_add_search(uiBut *but, PointerRNA *ptr, PropertyRNA *prop, PointerRN } } -void uiItemPointerR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname) +void uiItemPointerR(uiLayout *layout, struct PointerRNA *ptr, char *propname, struct PointerRNA *searchptr, char *searchpropname, char *name, int icon) { PropertyRNA *prop, *searchprop; PropertyType type; @@ -1297,11 +1296,13 @@ static void ui_item_menu(uiLayout *layout, char *name, int icon, uiMenuCreateFun if(layout->root->type == UI_LAYOUT_HEADER) uiBlockSetEmboss(block, UI_EMBOSS); - else if(layout->root->type == UI_LAYOUT_PANEL) + else if(layout->root->type == UI_LAYOUT_PANEL) { but->type= MENU; + but->flag |= UI_TEXT_LEFT; + } } -void uiItemM(uiLayout *layout, bContext *C, char *name, int icon, char *menuname) +void uiItemM(uiLayout *layout, bContext *C, char *menuname, char *name, int icon) { MenuType *mt; @@ -1419,7 +1420,7 @@ static void menu_item_enum_opname_menu(bContext *C, uiLayout *layout, void *arg) uiItemsEnumO(layout, lvl->opname, lvl->propname); } -void uiItemMenuEnumO(uiLayout *layout, char *name, int icon, char *opname, char *propname) +void uiItemMenuEnumO(uiLayout *layout, char *opname, char *propname, char *name, int icon) { wmOperatorType *ot= WM_operatortype_find(opname, 0); MenuItemLevel *lvl; @@ -1450,7 +1451,7 @@ static void menu_item_enum_rna_menu(bContext *C, uiLayout *layout, void *arg) uiItemsEnumR(layout, &lvl->rnapoin, lvl->propname); } -void uiItemMenuEnumR(uiLayout *layout, char *name, int icon, struct PointerRNA *ptr, char *propname) +void uiItemMenuEnumR(uiLayout *layout, struct PointerRNA *ptr, char *propname, char *name, int icon) { MenuItemLevel *lvl; PropertyRNA *prop; @@ -2074,7 +2075,7 @@ uiLayout *uiLayoutBox(uiLayout *layout) uiLayout *uiLayoutListBox(uiLayout *layout, PointerRNA *ptr, PropertyRNA *prop, PointerRNA *actptr, PropertyRNA *actprop) { - uiLayoutItemBx *box= ui_layout_box(layout, LISTBOX); + uiLayoutItemBx *box= ui_layout_box(layout, LISTBOX); uiBut *but= box->roundbox; but->rnasearchpoin= *ptr; diff --git a/source/blender/editors/interface/interface_ops.c b/source/blender/editors/interface/interface_ops.c index c23e7f86833..20752099814 100644 --- a/source/blender/editors/interface/interface_ops.c +++ b/source/blender/editors/interface/interface_ops.c @@ -34,10 +34,6 @@ #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_vec_types.h" -#include "DNA_view2d_types.h" #include "BLI_blenlib.h" #include "BLI_math_color.h" @@ -48,15 +44,16 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "BIF_gl.h" + +#include "UI_interface.h" + +#include "interface_intern.h" + #include "WM_api.h" #include "WM_types.h" -#include "BIF_gl.h" -#include "ED_screen.h" - -#include "UI_interface.h" -#include "UI_resources.h" /* ********************************************************** */ @@ -94,18 +91,20 @@ static int eyedropper_cancel(bContext *C, wmOperator *op) static void eyedropper_sample(bContext *C, Eyedropper *eye, short mx, short my) { - float col[3]; + if(RNA_property_type(eye->prop) == PROP_FLOAT) { + const int color_manage = CTX_data_scene(C)->r.color_mgt_flag & R_COLOR_MANAGEMENT; + float col[4]; + + RNA_property_float_get_array(&eye->ptr, eye->prop, col); - glReadBuffer(GL_FRONT); - glReadPixels(mx, my, 1, 1, GL_RGB, GL_FLOAT, col); - glReadBuffer(GL_BACK); + glReadBuffer(GL_FRONT); + glReadPixels(mx, my, 1, 1, GL_RGB, GL_FLOAT, col); + glReadBuffer(GL_BACK); - if(RNA_property_type(eye->prop) == PROP_FLOAT) { - if (RNA_property_array_length(&eye->ptr, eye->prop) < 3) return; /* convert from screen (srgb) space to linear rgb space */ - if (RNA_property_subtype(eye->prop) == PROP_COLOR) + if (color_manage && RNA_property_subtype(eye->prop) == PROP_COLOR) srgb_to_linearrgb_v3_v3(col, col); RNA_property_float_set_array(&eye->ptr, eye->prop, col); @@ -195,6 +194,29 @@ void UI_OT_eyedropper(wmOperatorType *ot) /* properties */ } +/* Reset Default Theme ------------------------ */ + +static int reset_default_theme_exec(bContext *C, wmOperator *op) +{ + ui_theme_init_default(); + WM_event_add_notifier(C, NC_WINDOW, NULL); + + return OPERATOR_FINISHED; +} + +void UI_OT_reset_default_theme(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reset to Default Theme"; + ot->idname= "UI_OT_reset_default_theme"; + ot->description= "Reset to the default theme colors"; + + /* callbacks */ + ot->exec= reset_default_theme_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER; +} /* Copy Data Path Operator ------------------------ */ @@ -300,6 +322,8 @@ static int copy_to_selected_list(bContext *C, PointerRNA *ptr, ListBase *lb) *lb = CTX_data_collection_get(C, "selected_editable_bones"); else if(RNA_struct_is_a(ptr->type, &RNA_PoseBone)) *lb = CTX_data_collection_get(C, "selected_pose_bones"); + else if(RNA_struct_is_a(ptr->type, &RNA_Sequence)) + *lb = CTX_data_collection_get(C, "selected_editable_sequences"); else return 0; @@ -386,6 +410,7 @@ void UI_OT_copy_to_selected_button(wmOperatorType *ot) void UI_buttons_operatortypes(void) { WM_operatortype_append(UI_OT_eyedropper); + WM_operatortype_append(UI_OT_reset_default_theme); WM_operatortype_append(UI_OT_copy_data_path_button); WM_operatortype_append(UI_OT_reset_default_button); WM_operatortype_append(UI_OT_copy_to_selected_button); diff --git a/source/blender/editors/interface/interface_panel.c b/source/blender/editors/interface/interface_panel.c index bf4a2a49fcb..61694b859c5 100644 --- a/source/blender/editors/interface/interface_panel.c +++ b/source/blender/editors/interface/interface_panel.c @@ -39,8 +39,6 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_userdef_types.h" #include "BKE_context.h" @@ -56,7 +54,6 @@ #include "ED_screen.h" #include "UI_interface.h" -#include "UI_view2d.h" #include "interface_intern.h" @@ -288,32 +285,6 @@ void uiEndPanel(uiBlock *block, int width, int height) } } -#if 0 -void uiPanelToMouse(const bContext *C, Panel *pa) -{ - /* global control over this feature; UI_PNL_TO_MOUSE only called for hotkey panels */ - if(U.uiflag & USER_PANELPINNED); - else if(pa->control & UI_PNL_TO_MOUSE) { - int mx, my; - - mx= CTX_wm_window(C)->eventstate->x; - my= CTX_wm_window(C)->eventstate->y; - - pa->ofsx= mx-pa->sizex/2; - pa->ofsy= my-pa->sizey/2; - - if(pa->flag & PNL_CLOSED) pa->flag &= ~PNL_CLOSED; - } - - if(pa->control & UI_PNL_UNSTOW) { - if(pa->flag & PNL_CLOSEDY) { - pa->flag &= ~PNL_CLOSED; - } - } -} -#endif - - static void ui_offset_panel_block(uiBlock *block) { uiStyle *style= U.uistyles.first; @@ -659,6 +630,10 @@ static int find_highest_panel(const void *a1, const void *a2) { const PanelSort *ps1=a1, *ps2=a2; + /* stick uppermost header-less panels to the top of the region - + * prevent them from being sorted */ + if (ps1->pa->sortorder < ps2->pa->sortorder && ps1->pa->type->flag & PNL_NO_HEADER) return -1; + if(ps1->pa->ofsy+ps1->pa->sizey < ps2->pa->ofsy+ps2->pa->sizey) return 1; else if(ps1->pa->ofsy+ps1->pa->sizey > ps2->pa->ofsy+ps2->pa->sizey) return -1; else if(ps1->pa->sortorder > ps2->pa->sortorder) return 1; @@ -802,7 +777,7 @@ void uiBeginPanels(const bContext *C, ARegion *ar) { Panel *pa; - /* set all panels as inactive, so that at the end we know + /* set all panels as inactive, so that at the end we know * which ones were used */ for(pa=ar->panels.first; pa; pa=pa->next) { if(pa->runtime_flag & PNL_ACTIVE) @@ -867,6 +842,8 @@ void uiEndPanels(const bContext *C, ARegion *ar) if(firstpa) firstpa->runtime_flag |= PNL_FIRST; + UI_ThemeClearColor(TH_BACK); + /* draw panels, selected on top */ for(block= ar->uiblocks.first; block; block=block->next) { if(block->active && block->panel && !(block->panel->flag & PNL_SELECT)) { @@ -957,7 +934,7 @@ static void ui_do_drag(const bContext *C, wmEvent *event, Panel *panel) /* this function is supposed to call general window drawing too */ /* also it supposes a block has panel, and isnt a menu */ -static void ui_handle_panel_header(const bContext *C, uiBlock *block, int mx, int my) +static void ui_handle_panel_header(const bContext *C, uiBlock *block, int mx, int my, int event) { ScrArea *sa= CTX_wm_area(C); ARegion *ar= CTX_wm_region(C); @@ -969,7 +946,11 @@ static void ui_handle_panel_header(const bContext *C, uiBlock *block, int mx, in /* XXX weak code, currently it assumes layout style for location of widgets */ /* check open/collapsed button */ - if(block->panel->flag & PNL_CLOSEDX) { + if(event==RETKEY) + button= 1; + else if(event==AKEY) + button= 1; + else if(block->panel->flag & PNL_CLOSEDX) { if(my >= block->maxy) button= 1; } else if(block->panel->control & UI_PNL_CLOSE) { @@ -1022,6 +1003,9 @@ static void ui_handle_panel_header(const bContext *C, uiBlock *block, int mx, in } } +/* XXX should become modal keymap */ +/* AKey is opening/closing panels, independent of button state now */ + int ui_handler_panel_region(bContext *C, wmEvent *event) { ARegion *ar= CTX_wm_region(C); @@ -1030,11 +1014,6 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) int retval, mx, my, inside_header= 0, inside_scale= 0, inside; retval= WM_UI_HANDLER_CONTINUE; - - /* buttons get priority */ - if(ui_button_is_active(ar)) - return retval; - for(block=ar->uiblocks.last; block; block=block->prev) { mx= event->x; my= event->y; @@ -1052,7 +1031,25 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) if(block->minx <= mx && block->maxx >= mx) if(block->miny <= my && block->maxy+PNL_HEADER >= my) inside= 1; - + + if(inside && event->val==KM_PRESS) { + if(event->type == AKEY && !ELEM4(1, event->ctrl, event->oskey, event->shift, event->alt)) { + + if(pa->flag & PNL_CLOSEDY) { + if((block->maxy <= my) && (block->maxy+PNL_HEADER >= my)) + ui_handle_panel_header(C, block, mx, my, event->type); + } + else + ui_handle_panel_header(C, block, mx, my, event->type); + + continue; + } + } + + /* on active button, do not handle panels */ + if(ui_button_is_active(ar)) + continue; + if(inside) { /* clicked at panel header? */ if(pa->flag & PNL_CLOSEDX) { @@ -1069,9 +1066,16 @@ int ui_handler_panel_region(bContext *C, wmEvent *event) } if(event->val==KM_PRESS) { - if(event->type == LEFTMOUSE) { + /* open close on header */ + if(ELEM(event->type, RETKEY, PADENTER)) { + if(inside_header) { + ui_handle_panel_header(C, block, mx, my, RETKEY); + break; + } + } + else if(event->type == LEFTMOUSE) { if(inside_header) { - ui_handle_panel_header(C, block, mx, my); + ui_handle_panel_header(C, block, mx, my, 0); break; } else if(inside_scale && !(pa->flag & PNL_CLOSED)) { diff --git a/source/blender/editors/interface/interface_regions.c b/source/blender/editors/interface/interface_regions.c index bc03be84b65..f17a3371df1 100644 --- a/source/blender/editors/interface/interface_regions.c +++ b/source/blender/editors/interface/interface_regions.c @@ -30,10 +30,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_screen_types.h" -#include "DNA_view2d_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -413,6 +410,15 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Python: %s.%s", RNA_struct_identifier(but->rnapoin.type), RNA_property_identifier(but->rnaprop)); data->linedark[data->totline]= 1; data->totline++; + + if(but->rnapoin.id.data) { + ID *id= but->rnapoin.id.data; + if(id->lib && id->lib->name) { + BLI_snprintf(data->lines[data->totline], sizeof(data->lines[0]), "Library: %s", id->lib->name); + data->linedark[data->totline]= 1; + data->totline++; + } + } } else if (but->optype) { PointerRNA *opptr; @@ -447,10 +453,10 @@ ARegion *ui_tooltip_create(bContext *C, ARegion *butregion, uiBut *but) data->fstyle.align= UI_STYLE_TEXT_CENTER; uiStyleFontSet(&data->fstyle); - h= BLF_height(data->lines[0]); + h= BLF_height(data->fstyle.uifont_id, data->lines[0]); for(a=0, fontw=0, fonth=0; a<data->totline; a++) { - w= BLF_width(data->lines[a]); + w= BLF_width(data->fstyle.uifont_id, data->lines[a]); fontw= MAX2(fontw, w); fonth += (a == 0)? h: h+5; } @@ -1553,12 +1559,21 @@ void ui_set_but_hsv(uiBut *but) } /* also used by small picker, be careful with name checks below... */ -void ui_update_block_buts_rgb(uiBlock *block, float *rgb) +void ui_update_block_buts_rgb(uiBlock *block, float *rgb, float *rhsv) { uiBut *bt; float hsv[3]; - rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); + /* this is to keep the H and S value when V is equal to zero + * and we are working in HSV mode, of course! + */ + if (rhsv) { + hsv[0]= rhsv[0]; + hsv[1]= rhsv[1]; + hsv[2]= rhsv[2]; + } + else + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); // this updates button strings, is hackish... but button pointers are on stack of caller function for(bt= block->buttons.first; bt; bt= bt->next) { @@ -1568,9 +1583,24 @@ void ui_update_block_buts_rgb(uiBlock *block, float *rgb) } else if(strcmp(bt->str, "Hex: ")==0) { + float rgb_gamma[3]; + double intpart; char col[16]; - sprintf(col, "%02X%02X%02X", (unsigned int)(rgb[0]*255.0), (unsigned int)(rgb[1]*255.0), (unsigned int)(rgb[2]*255.0)); + /* Hex code is assumed to be in sRGB space (coming from other applications, web, etc) */ + + if (block->color_profile == BLI_PR_NONE) { + copy_v3_v3(rgb_gamma, rgb); + } else { + /* make an sRGB version, for Hex code */ + linearrgb_to_srgb_v3_v3(rgb_gamma, rgb); + } + + if (rgb_gamma[0] > 1.0f) rgb_gamma[0] = modf(rgb_gamma[0], &intpart); + if (rgb_gamma[1] > 1.0f) rgb_gamma[1] = modf(rgb_gamma[1], &intpart); + if (rgb_gamma[2] > 1.0f) rgb_gamma[2] = modf(rgb_gamma[2], &intpart); + + sprintf(col, "%02X%02X%02X", FTOCHAR(rgb_gamma[0]), FTOCHAR(rgb_gamma[1]), FTOCHAR(rgb_gamma[2])); strcpy(bt->poin, col); } @@ -1609,7 +1639,7 @@ static void do_picker_rna_cb(bContext *C, void *bt1, void *unused) if (prop) { RNA_property_float_get_array(&ptr, prop, rgb); - ui_update_block_buts_rgb(but->block, rgb); + ui_update_block_buts_rgb(but->block, rgb, NULL); } if(popup) @@ -1625,7 +1655,7 @@ static void do_hsv_rna_cb(bContext *C, void *bt1, void *hsv_arg) hsv_to_rgb(hsv[0], hsv[1], hsv[2], rgb, rgb+1, rgb+2); - ui_update_block_buts_rgb(but->block, rgb); + ui_update_block_buts_rgb(but->block, rgb, hsv); if(popup) popup->menuretval= UI_RETURN_UPDATE; @@ -1640,7 +1670,13 @@ static void do_hex_rna_cb(bContext *C, void *bt1, void *hexcl) hex_to_rgb(hexcol, rgb, rgb+1, rgb+2); - ui_update_block_buts_rgb(but->block, rgb); + /* Hex code is assumed to be in sRGB space (coming from other applications, web, etc) */ + if (but->block->color_profile != BLI_PR_NONE) { + /* so we need to linearise it for Blender */ + srgb_to_linearrgb_v3_v3(rgb, rgb); + } + + ui_update_block_buts_rgb(but->block, rgb, NULL); if(popup) popup->menuretval= UI_RETURN_UPDATE; @@ -1662,6 +1698,13 @@ static void picker_new_hide_reveal(uiBlock *block, short colormode) /* tag buttons */ for(bt= block->buttons.first; bt; bt= bt->next) { + if (bt->type == LABEL) { + if( bt->str[1]=='G') { + if(colormode==2) bt->flag &= ~UI_HIDDEN; + else bt->flag |= UI_HIDDEN; + } + } + if(bt->type==NUMSLI || bt->type==TEX) { if( bt->str[1]=='e') { if(colormode==2) bt->flag &= ~UI_HIDDEN; @@ -1702,11 +1745,11 @@ static void circle_picker(uiBlock *block, PointerRNA *ptr, const char *propname) uiBut *bt; /* HS circle */ - bt= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, PICKER_H, PICKER_W, ptr, propname, -1, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, PICKER_H, PICKER_W, ptr, propname, 0, 0.0, 0.0, 0, 0, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); /* value */ - bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, -1, 0.0, 0.0, UI_GRAD_V_ALT, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", PICKER_W+PICKER_SPACE,0,PICKER_BAR,PICKER_H, ptr, propname, 0, 0.0, 0.0, UI_GRAD_V_ALT, 0, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); } @@ -1717,11 +1760,11 @@ static void square_picker(uiBlock *block, PointerRNA *ptr, const char *propname, int bartype = type + 3; /* HS square */ - bt= uiDefButR(block, HSVCUBE, 0, "", 0, PICKER_BAR+PICKER_SPACE, PICKER_TOTAL_W, PICKER_H, ptr, propname, -1, 0.0, 0.0, type, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", 0, PICKER_BAR+PICKER_SPACE, PICKER_TOTAL_W, PICKER_H, ptr, propname, 0, 0.0, 0.0, type, 0, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); /* value */ - bt= uiDefButR(block, HSVCUBE, 0, "", 0, 0, PICKER_TOTAL_W, PICKER_BAR, ptr, propname, -1, 0.0, 0.0, bartype, 0, ""); + bt= uiDefButR(block, HSVCUBE, 0, "", 0, 0, PICKER_TOTAL_W, PICKER_BAR, ptr, propname, 0, 0.0, 0.0, bartype, 0, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); } @@ -1735,17 +1778,27 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR static char tip[50]; static float hsv[3]; static char hexcol[128]; + float rgb_gamma[3]; + float min, max, step, precision; const char *propname = RNA_property_identifier(prop); width= PICKER_TOTAL_W; butwidth = width - UI_UNIT_X - 10; /* existence of profile means storage is in linear colour space, with display correction */ - if (block->color_profile == BLI_PR_NONE) + if (block->color_profile == BLI_PR_NONE) { sprintf(tip, "Value in Display Color Space"); - else + copy_v3_v3(rgb_gamma, rgb); + } else { sprintf(tip, "Value in Linear RGB Color Space"); + /* make an sRGB version, for Hex code */ + linearrgb_to_srgb_v3_v3(rgb_gamma, rgb); + } + /* sneaky way to check for alpha */ + rgb[3]= FLT_MAX; + + RNA_property_float_ui_range(ptr, prop, &min, &max, &step, &precision); RNA_property_float_get_array(ptr, prop, rgb); rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); @@ -1779,13 +1832,14 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR /* RGB values */ uiBlockBeginAlign(block); - bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "R ", 0, -60, butwidth, UI_UNIT_Y, ptr, propname, 0, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "G ", 0, -80, butwidth, UI_UNIT_Y, ptr, propname, 1, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 0, ""); + bt= uiDefButR(block, NUMSLI, 0, "B ", 0, -100, butwidth, UI_UNIT_Y, ptr, propname, 2, 0.0, 0.0, 0, 3, ""); uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); - // could use uiItemFullR(col, "", 0, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER); + + // could use uiItemFullR(col, ptr, prop, -1, 0, UI_ITEM_R_EXPAND|UI_ITEM_R_SLIDER, "", 0); // but need to use uiButSetFunc for updating other fake buttons /* HSV values */ @@ -1794,15 +1848,25 @@ static void uiBlockPicker(uiBlock *block, float *rgb, PointerRNA *ptr, PropertyR uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); bt= uiDefButF(block, NUMSLI, 0, "S ", 0, -80, butwidth, UI_UNIT_Y, hsv+1, 0.0, 1.0, 10, 3, ""); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); - bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, 1.0, 10, 3, ""); + bt= uiDefButF(block, NUMSLI, 0, "V ", 0, -100, butwidth, UI_UNIT_Y, hsv+2, 0.0, max, 10, 3, ""); uiButSetFunc(bt, do_hsv_rna_cb, bt, hsv); uiBlockEndAlign(block); - + + if(rgb[3] != FLT_MAX) { + bt= uiDefButR(block, NUMSLI, 0, "A ", 0, -120, butwidth, UI_UNIT_Y, ptr, propname, 3, 0.0, 0.0, 0, 0, ""); + uiButSetFunc(bt, do_picker_rna_cb, bt, NULL); + } + else { + rgb[3]= 1.0f; + } + rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); - sprintf(hexcol, "%02X%02X%02X", (unsigned int)(rgb[0]*255.0), (unsigned int)(rgb[1]*255.0), (unsigned int)(rgb[2]*255.0)); + + sprintf(hexcol, "%02X%02X%02X", FTOCHAR(rgb_gamma[0]), FTOCHAR(rgb_gamma[1]), FTOCHAR(rgb_gamma[2])); bt= uiDefBut(block, TEX, 0, "Hex: ", 0, -60, butwidth, UI_UNIT_Y, hexcol, 0, 8, 0, 0, "Hex triplet for color (#RRGGBB)"); uiButSetFunc(bt, do_hex_rna_cb, bt, hexcol); + uiDefBut(block, LABEL, 0, "(Gamma Corrected)", 0, -80, butwidth, UI_UNIT_Y, NULL, 0.0, 0.0, 0, 0, ""); picker_new_hide_reveal(block, colormode); } @@ -1833,7 +1897,7 @@ static int ui_picker_small_wheel(const bContext *C, uiBlock *block, wmEvent *eve ui_set_but_vectorf(but, col); - ui_update_block_buts_rgb(block, col); + ui_update_block_buts_rgb(block, col, NULL); if(popup) popup->menuretval= UI_RETURN_UPDATE; @@ -2054,13 +2118,13 @@ uiPopupBlockHandle *ui_popup_menu_create(bContext *C, ARegion *butregion, uiBut pup->mx= window->eventstate->x; pup->my= window->eventstate->y; pup->popup= 1; + pup->block->flag |= UI_BLOCK_NO_FLIP; } if(str) { /* menu is created from a string */ pup->menu_func= ui_block_func_MENUSTR; pup->menu_arg= str; - // XXX pup->block->flag |= UI_BLOCK_NO_FLIP; } else { /* menu is created from a callback */ @@ -2264,7 +2328,7 @@ void uiPupMenuReports(bContext *C, ReportList *reports) ds= BLI_dynstr_new(); for(report=reports->list.first; report; report=report->next) { - if(report->type <= reports->printlevel) + if(report->type < reports->printlevel) ; /* pass */ else if(report->type >= RPT_ERROR) BLI_dynstr_appendf(ds, "Error %%i%d%%t|%s", ICON_ERROR, report->message); diff --git a/source/blender/editors/interface/interface_style.c b/source/blender/editors/interface/interface_style.c index 777fb7806ad..e3317e5598f 100644 --- a/source/blender/editors/interface/interface_style.c +++ b/source/blender/editors/interface/interface_style.c @@ -30,10 +30,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_ID.h" #include "DNA_screen_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_listbase.h" @@ -50,13 +48,8 @@ #include "BLF_api.h" #include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "ED_datafiles.h" -#include "ED_util.h" -#include "ED_types.h" #include "interface_intern.h" @@ -154,34 +147,34 @@ void uiStyleFontDraw(uiFontStyle *fs, rcti *rect, char *str) uiStyleFontSet(fs); - height= BLF_height("2"); /* correct offset is on baseline, the j is below that */ + height= BLF_height(fs->uifont_id, "2"); /* correct offset is on baseline, the j is below that */ yofs= floor( 0.5f*(rect->ymax - rect->ymin - height)); if(fs->align==UI_STYLE_TEXT_CENTER) - xofs= floor( 0.5f*(rect->xmax - rect->xmin - BLF_width(str))); + xofs= floor( 0.5f*(rect->xmax - rect->xmin - BLF_width(fs->uifont_id, str))); else if(fs->align==UI_STYLE_TEXT_RIGHT) - xofs= rect->xmax - rect->xmin - BLF_width(str) - 1; + xofs= rect->xmax - rect->xmin - BLF_width(fs->uifont_id, str) - 1; /* clip is very strict, so we give it some space */ - BLF_clipping(rect->xmin-1, rect->ymin-4, rect->xmax+1, rect->ymax+4); - BLF_enable(BLF_CLIPPING); - BLF_position(rect->xmin+xofs, rect->ymin+yofs, 0.0f); + BLF_clipping(fs->uifont_id, rect->xmin-1, rect->ymin-4, rect->xmax+1, rect->ymax+4); + BLF_enable(fs->uifont_id, BLF_CLIPPING); + BLF_position(fs->uifont_id, rect->xmin+xofs, rect->ymin+yofs, 0.0f); if (fs->shadow) { - BLF_enable(BLF_SHADOW); - BLF_shadow(fs->shadow, fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha); - BLF_shadow_offset(fs->shadx, fs->shady); + BLF_enable(fs->uifont_id, BLF_SHADOW); + BLF_shadow(fs->uifont_id, fs->shadow, fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha); + BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); } if (fs->kerning == 1) - BLF_enable(BLF_KERNING_DEFAULT); + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - BLF_draw(str); - BLF_disable(BLF_CLIPPING); + BLF_draw(fs->uifont_id, str); + BLF_disable(fs->uifont_id, BLF_CLIPPING); if (fs->shadow) - BLF_disable(BLF_SHADOW); + BLF_disable(fs->uifont_id, BLF_SHADOW); if (fs->kerning == 1) - BLF_disable(BLF_KERNING_DEFAULT); + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); } /* drawn same as above, but at 90 degree angle */ @@ -194,7 +187,7 @@ void uiStyleFontDrawRotated(uiFontStyle *fs, rcti *rect, char *str) uiStyleFontSet(fs); - height= BLF_height("2"); /* correct offset is on baseline, the j is below that */ + height= BLF_height(fs->uifont_id, "2"); /* correct offset is on baseline, the j is below that */ /* becomes x-offset when rotated */ xofs= floor( 0.5f*(rect->ymax - rect->ymin - height)) + 1; @@ -202,7 +195,7 @@ void uiStyleFontDrawRotated(uiFontStyle *fs, rcti *rect, char *str) /* rotate counter-clockwise for now (assumes left-to-right language)*/ xofs+= height; - yofs= BLF_width(str) + 5; + yofs= BLF_width(fs->uifont_id, str) + 5; angle= 90.0f; /* translate rect to vertical */ @@ -213,29 +206,29 @@ void uiStyleFontDrawRotated(uiFontStyle *fs, rcti *rect, char *str) /* clip is very strict, so we give it some space */ /* clipping is done without rotation, so make rect big enough to contain both positions */ - BLF_clipping(txtrect.xmin-1, txtrect.ymin-yofs-xofs-4, rect->xmax+1, rect->ymax+4); - BLF_enable(BLF_CLIPPING); - BLF_position(txtrect.xmin+xofs, txtrect.ymax-yofs, 0.0f); + BLF_clipping(fs->uifont_id, txtrect.xmin-1, txtrect.ymin-yofs-xofs-4, rect->xmax+1, rect->ymax+4); + BLF_enable(fs->uifont_id, BLF_CLIPPING); + BLF_position(fs->uifont_id, txtrect.xmin+xofs, txtrect.ymax-yofs, 0.0f); - BLF_enable(BLF_ROTATION); - BLF_rotation(angle); + BLF_enable(fs->uifont_id, BLF_ROTATION); + BLF_rotation(fs->uifont_id, angle); if (fs->shadow) { - BLF_enable(BLF_SHADOW); - BLF_shadow(fs->shadow, fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha); - BLF_shadow_offset(fs->shadx, fs->shady); + BLF_enable(fs->uifont_id, BLF_SHADOW); + BLF_shadow(fs->uifont_id, fs->shadow, fs->shadowcolor, fs->shadowcolor, fs->shadowcolor, fs->shadowalpha); + BLF_shadow_offset(fs->uifont_id, fs->shadx, fs->shady); } if (fs->kerning == 1) - BLF_enable(BLF_KERNING_DEFAULT); + BLF_enable(fs->uifont_id, BLF_KERNING_DEFAULT); - BLF_draw(str); - BLF_disable(BLF_ROTATION); - BLF_disable(BLF_CLIPPING); + BLF_draw(fs->uifont_id, str); + BLF_disable(fs->uifont_id, BLF_ROTATION); + BLF_disable(fs->uifont_id, BLF_CLIPPING); if (fs->shadow) - BLF_disable(BLF_SHADOW); + BLF_disable(fs->uifont_id, BLF_SHADOW); if (fs->kerning == 1) - BLF_disable(BLF_KERNING_DEFAULT); + BLF_disable(fs->uifont_id, BLF_KERNING_DEFAULT); } /* ************** helpers ************************ */ @@ -244,9 +237,19 @@ void uiStyleFontDrawRotated(uiFontStyle *fs, rcti *rect, char *str) int UI_GetStringWidth(char *str) { uiStyle *style= U.uistyles.first; + uiFontStyle *fstyle= &style->widget; + int width; - uiStyleFontSet(&style->widget); - return BLF_width(str); + if (fstyle->kerning==1) /* for BLF_width */ + BLF_enable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + + uiStyleFontSet(fstyle); + width= BLF_width(fstyle->uifont_id, str); + + if (fstyle->kerning==1) + BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + + return width; } /* temporarily, does widget font */ @@ -255,8 +258,8 @@ void UI_DrawString(float x, float y, char *str) uiStyle *style= U.uistyles.first; uiStyleFontSet(&style->widget); - BLF_position(x, y, 0.0f); - BLF_draw(str); + BLF_position(style->widget.uifont_id, x, y, 0.0f); + BLF_draw(style->widget.uifont_id, str); } /* ************** init exit ************************ */ @@ -296,14 +299,13 @@ void uiStyleInit(void) printf("uiStyleInit error, no fonts available\n"); } else { - BLF_set(font->blf_id); /* ? just for speed to initialize? * Yes, this build the glyph cache and create * the texture. */ - BLF_size(11, U.dpi); - BLF_size(12, U.dpi); - BLF_size(14, U.dpi); + BLF_size(font->blf_id, 11, U.dpi); + BLF_size(font->blf_id, 12, U.dpi); + BLF_size(font->blf_id, 14, U.dpi); } } @@ -316,7 +318,6 @@ void uiStyleFontSet(uiFontStyle *fs) { uiFont *font= uifont_to_blfont(fs->uifont_id); - BLF_set(font->blf_id); - BLF_size(fs->points, U.dpi); + BLF_size(font->blf_id, fs->points, U.dpi); } diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index e3dac41979d..f951def739f 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -28,9 +28,9 @@ #include "MEM_guardedalloc.h" -#include "DNA_color_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" +#include "DNA_userdef_types.h" +#include "DNA_windowmanager_types.h" #include "BLI_string.h" @@ -40,7 +40,9 @@ #include "BKE_global.h" #include "BKE_library.h" #include "BKE_main.h" +#include "BKE_texture.h" #include "BKE_utildefines.h" +#include "BKE_report.h" #include "ED_screen.h" #include "ED_render.h" @@ -51,9 +53,10 @@ #include "WM_types.h" #include "UI_interface.h" -#include "UI_resources.h" #include "interface_intern.h" +#include "BLF_api.h" + void ui_template_fix_linking() { } @@ -78,52 +81,56 @@ void uiTemplateDopeSheetFilter(uiLayout *layout, bContext *C, PointerRNA *ptr) uiLayout *row= layout; short nlaActive= ((sa) && (sa->spacetype==SPACE_NLA)); - /* more 'generic' filtering options */ + /* most 'generic' filtering options */ row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "only_selected", 0); - uiItemR(row, "", 0, ptr, "display_transforms", 0); // xxx: include in another position instead? + uiItemR(row, ptr, "only_selected", 0, "", 0); + uiItemR(row, ptr, "display_hidden", 0, "", 0); + + /* object-level filtering options */ + row= uiLayoutRow(layout, 1); + uiItemR(row, ptr, "display_transforms", 0, "", 0); if (nlaActive) - uiItemR(row, "", 0, ptr, "include_missing_nla", 0); + uiItemR(row, ptr, "include_missing_nla", 0, "", 0); /* datatype based - only available datatypes are shown */ row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "display_scene", 0); - uiItemR(row, "", 0, ptr, "display_world", 0); - uiItemR(row, "", 0, ptr, "display_node", 0); + uiItemR(row, ptr, "display_scene", 0, "", 0); + uiItemR(row, ptr, "display_world", 0, "", 0); + uiItemR(row, ptr, "display_node", 0, "", 0); if (mainptr && mainptr->mesh.first) - uiItemR(row, "", 0, ptr, "display_mesh", 0); + uiItemR(row, ptr, "display_mesh", 0, "", 0); if (mainptr && mainptr->key.first) - uiItemR(row, "", 0, ptr, "display_shapekeys", 0); + uiItemR(row, ptr, "display_shapekeys", 0, "", 0); if (mainptr && mainptr->mat.first) - uiItemR(row, "", 0, ptr, "display_material", 0); + uiItemR(row, ptr, "display_material", 0, "", 0); if (mainptr && mainptr->lamp.first) - uiItemR(row, "", 0, ptr, "display_lamp", 0); + uiItemR(row, ptr, "display_lamp", 0, "", 0); if (mainptr && mainptr->tex.first) - uiItemR(row, "", 0, ptr, "display_texture", 0); + uiItemR(row, ptr, "display_texture", 0, "", 0); if (mainptr && mainptr->camera.first) - uiItemR(row, "", 0, ptr, "display_camera", 0); + uiItemR(row, ptr, "display_camera", 0, "", 0); if (mainptr && mainptr->curve.first) - uiItemR(row, "", 0, ptr, "display_curve", 0); + uiItemR(row, ptr, "display_curve", 0, "", 0); if (mainptr && mainptr->mball.first) - uiItemR(row, "", 0, ptr, "display_metaball", 0); + uiItemR(row, ptr, "display_metaball", 0, "", 0); if (mainptr && mainptr->armature.first) - uiItemR(row, "", 0, ptr, "display_armature", 0); + uiItemR(row, ptr, "display_armature", 0, "", 0); if (mainptr && mainptr->particle.first) - uiItemR(row, "", 0, ptr, "display_particle", 0); + uiItemR(row, ptr, "display_particle", 0, "", 0); /* group-based filtering (only when groups are available */ if (mainptr && mainptr->group.first) { row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "only_group_objects", 0); + uiItemR(row, ptr, "only_group_objects", 0, "", 0); /* if enabled, show the group selection field too */ if (RNA_boolean_get(ptr, "only_group_objects")) - uiItemR(row, "", 0, ptr, "filtering_group", 0); + uiItemR(row, ptr, "filtering_group", 0, "", 0); } } @@ -135,6 +142,8 @@ typedef struct TemplateID { ListBase *idlb; int prv_rows, prv_cols; + + char filterop[64]; } TemplateID; /* Search browse menu, assign */ @@ -164,8 +173,52 @@ static void id_search_cb(const bContext *C, void *arg_template, char *str, uiSea /* ID listbase */ for(id= lb->first; id; id= id->next) { if(!((flag & PROP_ID_SELF_CHECK) && id == id_from)) { + int filter_yes; + + filter_yes= 0; + + /* use filter */ + if (template->filterop[0] != 0) { + PointerRNA ptr; + ReportList reports; + FunctionRNA *func; + ParameterList parms; + + RNA_id_pointer_create(id, &ptr); + + BKE_reports_init(&reports, RPT_PRINT); + + func= RNA_struct_find_function(&ptr, template->filterop); + + if (func) { + RNA_parameter_list_create(&parms, &ptr, func); + + RNA_parameter_set_lookup(&parms, "context", &C); + + if (RNA_function_call(C, &reports, &ptr, func, &parms) == 0) { + int* ret; + RNA_parameter_get_lookup(&parms, "ret", (void **)&ret); + + if (!(*ret)) { + RNA_parameter_list_free(&parms); + continue; + } + else { + filter_yes= 1; + } + } + + RNA_parameter_list_free(&parms); + } + } + + /* hide dot-datablocks, but only if filter does not force it visible */ + if(!filter_yes && U.uiflag & USER_HIDE_DOT) + if ((id->name[2]=='.') && (str[0] != '.')) + continue; + if(BLI_strcasestr(id->name+2, str)) { - iconid= ui_id_icon_get((bContext*)C, id, 0); + iconid= ui_id_icon_get((bContext*)C, id, 1); if(!uiSearchItemAdd(items, id->name+2, id, iconid)) break; @@ -328,7 +381,7 @@ static void template_id_cb(bContext *C, void *arg_litem, void *arg_event) } } -static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop) +static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, StructRNA *type, int flag, char *newop, char *openop, char *unlinkop, char *filterop) { uiBut *but; uiBlock *block; @@ -420,7 +473,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str int w= id?UI_UNIT_X: (flag & UI_ID_OPEN)? UI_UNIT_X*3: UI_UNIT_X*6; if(newop) { - but= uiDefIconTextButO(block, BUT, newop, WM_OP_EXEC_DEFAULT, ICON_ZOOMIN, (id)? "": "New", 0, 0, w, UI_UNIT_Y, NULL); + but= uiDefIconTextButO(block, BUT, newop, WM_OP_INVOKE_DEFAULT, ICON_ZOOMIN, (id)? "": "New", 0, 0, w, UI_UNIT_Y, NULL); uiButSetNFunc(but, template_id_cb, MEM_dupallocN(template), SET_INT_IN_POINTER(UI_ID_ADD_NEW)); } else { @@ -468,7 +521,7 @@ static void template_ID(bContext *C, uiLayout *layout, TemplateID *template, Str uiBlockEndAlign(block); } -static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int flag, int prv_rows, int prv_cols) +static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char* filterop, int flag, int prv_rows, int prv_cols) { TemplateID *template; PropertyRNA *prop; @@ -486,40 +539,44 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char template->prop= prop; template->prv_rows = prv_rows; template->prv_cols = prv_cols; - + + if (filterop) + BLI_strncpy(template->filterop, filterop, sizeof(template->filterop)); + else + template->filterop[0] = 0; + if(newop) flag |= UI_ID_ADD_NEW; if(openop) flag |= UI_ID_OPEN; type= RNA_property_pointer_type(ptr, prop); - template->idlb= wich_libbase(CTX_data_main(C), RNA_type_to_ID_code(type)); + template->idlb= which_libbase(CTX_data_main(C), RNA_type_to_ID_code(type)); /* create UI elements for this template * - template_ID makes a copy of the template data and assigns it to the relevant buttons */ if(template->idlb) { uiLayoutRow(layout, 1); - template_ID(C, layout, template, type, flag, newop, openop, unlinkop); + template_ID(C, layout, template, type, flag, newop, openop, unlinkop, filterop); } MEM_freeN(template); - } -void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) +void uiTemplateID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE, 0, 0); } -void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop) +void uiTemplateIDBrowse(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME, 0, 0); } -void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, int rows, int cols) +void uiTemplateIDPreview(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propname, char *newop, char *openop, char *unlinkop, char *filterop, int rows, int cols) { - ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols); + ui_template_id(layout, C, ptr, propname, newop, openop, unlinkop, filterop, UI_ID_BROWSE|UI_ID_RENAME|UI_ID_DELETE|UI_ID_PREVIEWS, rows, cols); } /************************ ID Chooser Template ***************************/ @@ -558,10 +615,10 @@ void uiTemplateAnyID(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn /* ID-Type Selector - just have a menu of icons */ // FIXME: the icon-only setting doesn't work when we supply a blank name - uiItemFullR(row, "", 0, ptr, propType, 0, 0, UI_ITEM_R_ICON_ONLY); + uiItemFullR(row, ptr, propType, 0, 0, UI_ITEM_R_ICON_ONLY, "", 0); /* ID-Block Selector - just use pointer widget... */ - uiItemFullR(row, "", 0, ptr, propID, 0, 0, 0); + uiItemFullR(row, ptr, propID, 0, 0, 0, "", 0); } /********************* RNA Path Builder Template ********************/ @@ -590,7 +647,7 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char row= uiLayoutRow(layout, 1); /* Path (existing string) Widget */ - uiItemR(row, text, ICON_RNA, ptr, propname, 0); + uiItemR(row, ptr, propname, 0, text, ICON_RNA); // TODO: attach something to this to make allow searching of nested properties to 'build' the path } @@ -602,9 +659,6 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char #include <string.h> #include "DNA_object_force.h" -#include "DNA_object_types.h" -#include "DNA_modifier_types.h" -#include "DNA_scene_types.h" #include "BKE_depsgraph.h" #include "BKE_DerivedMesh.h" @@ -614,7 +668,6 @@ void uiTemplatePathBuilder(uiLayout *layout, bContext *C, PointerRNA *ptr, char #include "BKE_particle.h" #include "BKE_report.h" -#include "UI_resources.h" #include "ED_util.h" #include "BLI_math.h" @@ -721,7 +774,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif uiBlockSetEmboss(block, UI_EMBOSSN); /* Open/Close ................................. */ - uiItemR(row, "", 0, &ptr, "expanded", 0); + uiItemR(row, &ptr, "expanded", 0, "", 0); /* modifier-type icon */ uiItemL(row, "", RNA_struct_ui_icon(ptr.type)); @@ -741,7 +794,7 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif block = uiLayoutGetBlock(row); /* modifier name */ - uiItemR(row, "", 0, &ptr, "name", 0); + uiItemR(row, &ptr, "name", 0, "", 0); if (compact) { /* insert delete button at end of top row before splitting to second line */ @@ -763,11 +816,11 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif if ( ((md->type!=eModifierType_Softbody && md->type!=eModifierType_Collision) || !(ob->pd && ob->pd->deflect)) && (md->type!=eModifierType_Surface) ) { - uiItemR(row, "", 0, &ptr, "render", 0); - uiItemR(row, "", 0, &ptr, "realtime", 0); + uiItemR(row, &ptr, "render", 0, "", 0); + uiItemR(row, &ptr, "realtime", 0, "", 0); if (mti->flags & eModifierTypeFlag_SupportsEditmode) - uiItemR(row, "", 0, &ptr, "editmode", 0); + uiItemR(row, &ptr, "editmode", 0, "", 0); } if ((ob->type==OB_MESH) && modifier_couldBeCage(scene, md) && (index <= lastCageIndex)) { @@ -805,9 +858,9 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif uiBlockSetButLock(block, object_data_is_libdata(ob), ERROR_LIBDATA_MESSAGE); if (md->type==eModifierType_ParticleSystem) { - ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys; + ParticleSystem *psys= ((ParticleSystemModifierData *)md)->psys; - if (!(ob->mode & OB_MODE_PARTICLE_EDIT) && psys->pathcache) { + if (!(ob->mode & OB_MODE_PARTICLE_EDIT) && psys->pathcache) { if(ELEM(psys->part->ren_as, PART_DRAW_GR, PART_DRAW_OB)) uiItemO(row, "Convert", 0, "OBJECT_OT_duplicates_make_real"); else if(psys->part->ren_as == PART_DRAW_PATH) @@ -815,10 +868,11 @@ static uiLayout *draw_modifier(uiLayout *layout, Scene *scene, Object *ob, Modif } } else { - uiItemEnumO(row, "Apply", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_DATA); + uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT); + uiItemEnumO(row, "OBJECT_OT_modifier_apply", "Apply", 0, "apply_as", MODIFIER_APPLY_DATA); if (modifier_sameTopology(md)) - uiItemEnumO(row, "Apply as Shape", 0, "OBJECT_OT_modifier_apply", "apply_as", MODIFIER_APPLY_SHAPE); + uiItemEnumO(row, "OBJECT_OT_modifier_apply", "Apply as Shape", 0, "apply_as", MODIFIER_APPLY_SHAPE); } uiBlockClearButLock(block); @@ -884,7 +938,6 @@ uiLayout *uiTemplateModifier(uiLayout *layout, bContext *C, PointerRNA *ptr, int /************************ Constraint Template *************************/ -#include "DNA_action_types.h" #include "DNA_constraint_types.h" #include "BKE_action.h" @@ -939,88 +992,15 @@ static void constraint_active_func(bContext *C, void *ob_v, void *con_v) ED_object_constraint_set_active(ob_v, con_v); } - -/* some commonly used macros in the constraints drawing code */ -#define is_armature_target(target) (target && target->type==OB_ARMATURE) -#define is_armature_owner(ob) ((ob->type == OB_ARMATURE) && (ob->mode & OB_MODE_POSE)) -#define is_geom_target(target) (target && (ELEM(target->type, OB_MESH, OB_LATTICE)) ) - -/* Helper function for draw constraint - draws constraint space stuff - * This function should not be called if no menus are required - * owner/target: -1 = don't draw menu; 0= not posemode, 1 = posemode - */ -static void draw_constraint_spaceselect (uiBlock *block, bConstraint *con, short xco, short yco, short owner, short target) -{ - short tarx, ownx, iconx; - short bwidth; - short iconwidth = 20; - - /* calculate sizes and placement of menus */ - if (owner == -1) { - bwidth = 125; - tarx = 120; - ownx = 0; - } - else if (target == -1) { - bwidth = 125; - tarx = 0; - ownx = 120; - } - else { - bwidth = 100; - tarx = 85; - iconx = tarx + bwidth + 5; - ownx = tarx + bwidth + iconwidth + 10; - } - - - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Convert:", xco, yco, 80,18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - - /* Target-Space */ - if (target == 1) { - uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Pose Space %x2|Local with Parent %x3|Local Space %x1", - tarx, yco, bwidth, 18, &con->tarspace, 0, 0, 0, 0, "Choose space that target is evaluated in"); - } - else if (target == 0) { - uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Local (Without Parent) Space %x1", - tarx, yco, bwidth, 18, &con->tarspace, 0, 0, 0, 0, "Choose space that target is evaluated in"); - } - - if ((target != -1) && (owner != -1)) - uiDefIconBut(block, LABEL, 0, ICON_ARROW_LEFTRIGHT, - iconx, yco, 20, 20, NULL, 0.0, 0.0, 0.0, 0.0, ""); - - /* Owner-Space */ - if (owner == 1) { - uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Owner Space %t|World Space %x0|Pose Space %x2|Local with Parent %x3|Local Space %x1", - ownx, yco, bwidth, 18, &con->ownspace, 0, 0, 0, 0, "Choose space that owner is evaluated in"); - } - else if (owner == 0) { - uiDefButC(block, MENU, B_CONSTRAINT_TEST, "Owner Space %t|World Space %x0|Local (Without Parent) Space %x1", - ownx, yco, bwidth, 18, &con->ownspace, 0, 0, 0, 0, "Choose space that owner is evaluated in"); - } -} - -static void test_obpoin_but(bContext *C, char *name, ID **idpp) -{ - ID *id= BLI_findstring(&CTX_data_main(C)->object, name, offsetof(ID, name) + 2); - *idpp= id; /* can be NULL */ - - if(id) - id_lib_extern(id); /* checks lib data, sets correct flag for saving then */ -} - /* draw panel showing settings for a constraint */ -static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) +static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con, int compact) { bPoseChannel *pchan= get_active_posechannel(ob); bConstraintTypeInfo *cti; uiBlock *block; uiLayout *result= NULL, *col, *box, *row, *subrow; - uiBut *but; PointerRNA ptr; char typestr[32]; - short width = 265; short proxy_protected, xco=0, yco=0; int rb_col; @@ -1053,38 +1033,30 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) uiLayoutSetContextPointer(col, "constraint", &ptr); box= uiLayoutBox(col); - row= uiLayoutRow(box, 0); - + row = uiLayoutRow(box, 0); block= uiLayoutGetBlock(box); - subrow= uiLayoutRow(row, 0); - uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_LEFT); - /* Draw constraint header */ - uiBlockSetEmboss(block, UI_EMBOSSN); /* rounded header */ rb_col= (con->flag & CONSTRAINT_ACTIVE)?50:20; - + /* open/close */ - uiItemR(subrow, "", 0, &ptr, "expanded", UI_ITEM_R_ICON_ONLY); - - /* name */ + uiBlockSetEmboss(block, UI_EMBOSSN); + uiItemR(row, &ptr, "expanded", UI_ITEM_R_ICON_ONLY, "", 0); uiBlockSetEmboss(block, UI_EMBOSS); /* XXX if (con->flag & CONSTRAINT_DISABLE) uiBlockSetCol(block, TH_REDALERT);*/ + /* name */ uiDefBut(block, LABEL, B_CONSTRAINT_TEST, typestr, xco+10, yco, 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - + if(proxy_protected == 0) { - uiItemR(subrow, "", 0, &ptr, "name", 0); + uiItemR(row, &ptr, "name", 0, "", 0); } else - uiItemL(subrow, con->name, 0); - - subrow= uiLayoutRow(row, 0); - uiLayoutSetAlignment(subrow, UI_LAYOUT_ALIGN_RIGHT); + uiItemL(row, con->name, 0); /* proxy-protected constraints cannot be edited, so hide up/down + close buttons */ if (proxy_protected) { @@ -1118,31 +1090,43 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) show_upbut= ((prev_proxylock == 0) && (con->prev)); show_downbut= (con->next) ? 1 : 0; + + /* Code for compact Constraint UI */ + if (compact) { + subrow = uiLayoutRow(box, 0); + } + else { + subrow = row; + } + + uiLayoutSetOperatorContext(subrow, WM_OP_INVOKE_DEFAULT); + /* up/down */ if (show_upbut || show_downbut) { uiBlockBeginAlign(block); - uiBlockSetEmboss(block, UI_EMBOSS); + if (show_upbut) + uiItemO(subrow, "", ICON_TRIA_UP, "CONSTRAINT_OT_move_up"); - if (show_upbut) - uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_up", WM_OP_INVOKE_DEFAULT, ICON_TRIA_UP, xco+width-50, yco, 16, 18, "Move constraint up in constraint stack"); - - if (show_downbut) - uiDefIconButO(block, BUT, "CONSTRAINT_OT_move_down", WM_OP_INVOKE_DEFAULT, ICON_TRIA_DOWN, xco+width-50+18, yco, 16, 18, "Move constraint down in constraint stack"); + if (show_downbut) + uiItemO(subrow, "", ICON_TRIA_DOWN, "CONSTRAINT_OT_move_down"); uiBlockEndAlign(block); } - + + /* enabled */ + uiItemR(subrow, &ptr, "enabled", 0, "", 0); + + uiLayoutSetOperatorContext(row, WM_OP_INVOKE_DEFAULT); + /* Close 'button' - emboss calls here disable drawing of 'button' behind X */ uiBlockSetEmboss(block, UI_EMBOSSN); - uiDefIconButBitS(block, ICONTOGN, CONSTRAINT_OFF, B_CONSTRAINT_TEST, ICON_CHECKBOX_DEHLT, xco+243, yco, 19, 19, &con->flag, 0.0, 0.0, 0.0, 0.0, "enable/disable constraint"); - - uiDefIconButO(block, BUT, "CONSTRAINT_OT_delete", WM_OP_INVOKE_DEFAULT, ICON_X, xco+262, yco, 19, 19, "Delete constraint"); + uiItemO(row, "", ICON_X, "CONSTRAINT_OT_delete"); uiBlockSetEmboss(block, UI_EMBOSS); } - + /* Set but-locks for protected settings (magic numbers are used here!) */ if (proxy_protected) uiBlockSetButLock(block, 1, "Cannot edit Proxy-Protected Constraint"); - + /* Draw constraint data */ if ((con->flag & CONSTRAINT_EXPAND) == 0) { (yco) -= 21; @@ -1150,108 +1134,16 @@ static uiLayout *draw_constraint(uiLayout *layout, Object *ob, bConstraint *con) else { box= uiLayoutBox(col); block= uiLayoutAbsoluteBlock(box); - - switch (con->type) { -#ifndef DISABLE_PYTHON - case CONSTRAINT_TYPE_PYTHON: - { - bPythonConstraint *data = con->data; - bConstraintTarget *ct; - // uiBut *but2; - int tarnum, theight; - // static int pyconindex=0; - // char *menustr; - - theight = (data->tarnum)? (data->tarnum * 38) : (38); - - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Script:", xco+60, yco-24, 55, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - - /* do the scripts menu */ - /* XXX menustr = buildmenu_pyconstraints(data->text, &pyconindex); - but2 = uiDefButI(block, MENU, B_CONSTRAINT_TEST, menustr, - xco+120, yco-24, 150, 20, &pyconindex, - 0, 0, 0, 0, "Set the Script Constraint to use"); - uiButSetFunc(but2, validate_pyconstraint_cb, data, &pyconindex); - MEM_freeN(menustr); */ - - /* draw target(s) */ - if (data->flag & PYCON_USETARGETS) { - /* Draw target parameters */ - for (ct=data->targets.first, tarnum=1; ct; ct=ct->next, tarnum++) { - char tarstr[32]; - short yoffset= ((tarnum-1) * 38); - - /* target label */ - sprintf(tarstr, "Target %d:", tarnum); - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, tarstr, xco+45, yco-(48+yoffset), 100, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - - /* target space-selector - per target */ - if (is_armature_target(ct->tar)) { - uiDefButS(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Pose Space %x3|Local with Parent %x4|Local Space %x1", - xco+10, yco-(66+yoffset), 100, 18, &ct->space, 0, 0, 0, 0, "Choose space that target is evaluated in"); - } - else { - uiDefButS(block, MENU, B_CONSTRAINT_TEST, "Target Space %t|World Space %x0|Local (Without Parent) Space %x1", - xco+10, yco-(66+yoffset), 100, 18, &ct->space, 0, 0, 0, 0, "Choose space that target is evaluated in"); - } - - uiBlockBeginAlign(block); - /* target object */ - uiDefIDPoinBut(block, test_obpoin_but, ID_OB, B_CONSTRAINT_CHANGETARGET, "OB:", xco+120, yco-(48+yoffset), 150, 18, &ct->tar, "Target Object"); - - /* subtarget */ - if (is_armature_target(ct->tar)) { - but= uiDefBut(block, TEX, B_CONSTRAINT_CHANGETARGET, "BO:", xco+120, yco-(66+yoffset),150,18, &ct->subtarget, 0, 24, 0, 0, "Subtarget Bone"); - //uiButSetCompleteFunc(but, autocomplete_bone, (void *)ct->tar); - } - else if (is_geom_target(ct->tar)) { - but= uiDefBut(block, TEX, B_CONSTRAINT_CHANGETARGET, "VG:", xco+120, yco-(66+yoffset),150,18, &ct->subtarget, 0, 24, 0, 0, "Name of Vertex Group defining 'target' points"); - //uiButSetCompleteFunc(but, autocomplete_vgroup, (void *)ct->tar); - } - else { - strcpy(ct->subtarget, ""); - } - uiBlockEndAlign(block); - } - } - else { - /* Draw indication that no target needed */ - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Target:", xco+60, yco-48, 55, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - uiDefBut(block, LABEL, B_CONSTRAINT_TEST, "Not Applicable", xco+120, yco-48, 150, 18, NULL, 0.0, 0.0, 0.0, 0.0, ""); - } - - /* settings */ - uiBlockBeginAlign(block); - but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Options", xco, yco-(52+theight), (width/2),18, NULL, 0, 24, 0, 0, "Change some of the constraint's settings."); - // XXX uiButSetFunc(but, BPY_pyconstraint_settings, data, NULL); - - but=uiDefBut(block, BUT, B_CONSTRAINT_TEST, "Refresh", xco+((width/2)+10), yco-(52+theight), (width/2),18, NULL, 0, 24, 0, 0, "Force constraint to refresh it's settings"); - uiBlockEndAlign(block); - - /* constraint space settings */ - draw_constraint_spaceselect(block, con, xco, yco-(73+theight), is_armature_owner(ob), -1); - } - break; -#endif - - case CONSTRAINT_TYPE_NULL: - { - uiItemL(box, "", 0); - } - break; - default: - result= box; - break; + result= box; } - } - + /* clear any locks set up for proxies/lib-linking */ uiBlockClearButLock(block); return result; } -uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr) +uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr, int compact) { Object *ob; bConstraint *con; @@ -1279,7 +1171,7 @@ uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr) return NULL; } - return draw_constraint(layout, ob, con); + return draw_constraint(layout, ob, con, compact); } @@ -1287,6 +1179,7 @@ uiLayout *uiTemplateConstraint(uiLayout *layout, PointerRNA *ptr) #include "DNA_lamp_types.h" #include "DNA_material_types.h" +#include "DNA_texture_types.h" #include "DNA_world_types.h" #define B_MATPRV 1 @@ -1305,8 +1198,11 @@ void uiTemplatePreview(uiLayout *layout, ID *id, ID *parent, MTex *slot) uiLayout *row, *col; uiBlock *block; Material *ma= NULL; + Tex *tex = (Tex*)id; ID *pid, *pparent; short *pr_texture= NULL; + PointerRNA material_ptr; + PointerRNA texture_ptr; if(id && !ELEM4(GS(id->name), ID_MA, ID_TE, ID_WO, ID_LA)) { printf("uiTemplatePreview: expected ID of type material, texture, lamp or world.\n"); @@ -1349,20 +1245,20 @@ void uiTemplatePreview(uiLayout *layout, ID *id, ID *parent, MTex *slot) if(GS(pid->name) == ID_MA || (pparent && GS(pparent->name) == ID_MA)) { if(GS(pid->name) == ID_MA) ma= (Material*)pid; else ma= (Material*)pparent; + + /* Create RNA Pointer */ + RNA_pointer_create(id, &RNA_Material, ma, &material_ptr); - uiLayoutColumn(row, 1); - - uiDefIconButC(block, ROW, B_MATPRV, ICON_MATPLANE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_FLAT, 0, 0, "Preview type: Flat XY plane"); - uiDefIconButC(block, ROW, B_MATPRV, ICON_MATSPHERE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_SPHERE, 0, 0, "Preview type: Sphere"); - uiDefIconButC(block, ROW, B_MATPRV, ICON_MATCUBE, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_CUBE, 0, 0, "Preview type: Cube"); - uiDefIconButC(block, ROW, B_MATPRV, ICON_MONKEY, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_MONKEY, 0, 0, "Preview type: Monkey"); - uiDefIconButC(block, ROW, B_MATPRV, ICON_HAIR, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_HAIR, 0, 0, "Preview type: Hair strands"); - uiDefIconButC(block, ROW, B_MATPRV, ICON_MAT_SPHERE_SKY, 0, 0,UI_UNIT_X*1.5,UI_UNIT_Y, &(ma->pr_type), 10, MA_SPHERE_A, 0, 0, "Preview type: Large sphere with sky"); + col = uiLayoutColumn(row, 1); + uiLayoutSetScaleX(col, 1.5); + uiItemR(col, &material_ptr, "preview_render_type", UI_ITEM_R_EXPAND, "", 0); } if(pr_texture) { + /* Create RNA Pointer */ + RNA_pointer_create(id, &RNA_Texture, tex, &texture_ptr); + uiLayoutRow(layout, 1); - uiDefButS(block, ROW, B_MATPRV, "Texture", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_TEXTURE, 0, 0, ""); if(GS(parent->name) == ID_MA) uiDefButS(block, ROW, B_MATPRV, "Material", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); @@ -1371,6 +1267,12 @@ void uiTemplatePreview(uiLayout *layout, ID *id, ID *parent, MTex *slot) else if(GS(parent->name) == ID_WO) uiDefButS(block, ROW, B_MATPRV, "World", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_OTHER, 0, 0, ""); uiDefButS(block, ROW, B_MATPRV, "Both", 0, 0,UI_UNIT_X*10,UI_UNIT_Y, pr_texture, 10, TEX_PR_BOTH, 0, 0, ""); + + /* Alpha buton for texture preview */ + if(*pr_texture!=TEX_PR_OTHER) { + row = uiLayoutRow(layout, 0); + uiItemR(row, &texture_ptr, "use_preview_alpha", 0, NULL, 0); + } } } } @@ -1428,6 +1330,33 @@ static void colorband_add_cb(bContext *C, void *cb_v, void *coba_v) { ColorBand *coba= coba_v; + if(coba->tot > 0) { + CBData *xnew, *x1, *x2; + float col[4]; + + xnew= &coba->data[coba->tot]; + + if(coba->tot > 1) { + if(coba->cur > 0) { + x1= &coba->data[coba->cur-1]; + x2= &coba->data[coba->cur]; + } + else { + x1= &coba->data[coba->cur]; + x2= &coba->data[coba->cur+1]; + } + + xnew->pos = x1->pos + ((x2->pos - x1->pos) / 2); + } + + do_colorband(coba, xnew->pos, col); + + xnew->r= col[0]; + xnew->g= col[1]; + xnew->b= col[2]; + xnew->a= col[3]; + } + if(coba->tot < MAXCOLORBAND-1) coba->tot++; coba->cur= coba->tot-1; @@ -1454,6 +1383,29 @@ static void colorband_del_cb(bContext *C, void *cb_v, void *coba_v) rna_update_cb(C, cb_v, NULL); } +static void colorband_flip_cb(bContext *C, void *cb_v, void *coba_v) +{ + CBData data_tmp[MAXCOLORBAND]; + + ColorBand *coba= coba_v; + int a; + + for(a=0; a<coba->tot; a++) { + data_tmp[a]= coba->data[coba->tot - (a + 1)]; + } + for(a=0; a<coba->tot; a++) { + data_tmp[a].pos = 1.0f - data_tmp[a].pos; + coba->data[a]= data_tmp[a]; + } + + /* may as well flip the cur*/ + coba->cur= coba->tot - (coba->cur + 1); + + ED_undo_push(C, "Flip colorband"); + + rna_update_cb(C, cb_v, NULL); +} + /* offset aligns from bottom, standard width 300, height 115 */ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand *coba, int xoffs, int yoffs, RNAUpdateCb *cb) @@ -1464,12 +1416,17 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand if(coba==NULL) return; - bt= uiDefBut(block, BUT, 0, "Add", 0+xoffs,100+yoffs,50,20, 0, 0, 0, 0, 0, "Add a new color stop to the colorband"); + bt= uiDefBut(block, BUT, 0, "Add", 0+xoffs,100+yoffs,40,20, 0, 0, 0, 0, 0, "Add a new color stop to the colorband"); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, "Delete", 60+xoffs,100+yoffs,50,20, 0, 0, 0, 0, 0, "Delete the active position"); + bt= uiDefBut(block, BUT, 0, "Delete", 45+xoffs,100+yoffs,45,20, 0, 0, 0, 0, 0, "Delete the active position"); uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba); + + /* XXX, todo for later - convert to operator - campbell */ + bt= uiDefBut(block, BUT, 0, "F", 95+xoffs,100+yoffs,20,20, 0, 0, 0, 0, 0, "Flip colorband"); + uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); + uiDefButS(block, NUM, 0, "", 120+xoffs,100+yoffs,80, 20, &coba->cur, 0.0, (float)(MAX2(0, coba->tot-1)), 0, 0, "Choose active color stop"); bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4", @@ -1480,6 +1437,8 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand bt= uiDefBut(block, BUT_COLORBAND, 0, "", xoffs,65+yoffs,300,30, coba, 0, 0, 0, 0, ""); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); + + if(coba->tot) { CBData *cbd= coba->data + coba->cur; @@ -1487,8 +1446,8 @@ static void colorband_buttons_large(uiLayout *layout, uiBlock *block, ColorBand PointerRNA ptr; RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr); row= uiLayoutRow(layout, 0); - uiItemR(row, "Pos", 0, &ptr, "position", 0); - uiItemR(row, "", 0, &ptr, "color", 0); + uiItemR(row, &ptr, "position", 0, "Pos", 0); + uiItemR(row, &ptr, "color", 0, "", 0); } } @@ -1502,15 +1461,17 @@ static void colorband_buttons_small(uiLayout *layout, uiBlock *block, ColorBand uiBlockBeginAlign(block); bt= uiDefBut(block, BUT, 0, "Add", xs,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Add a new color stop to the colorband"); uiButSetNFunc(bt, colorband_add_cb, MEM_dupallocN(cb), coba); - bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+20.0f,2.0f*unit,20, NULL, 0, 0, 0, 0, "Delete the active position"); + bt= uiDefBut(block, BUT, 0, "Delete", xs+2.0f*unit,butr->ymin+20.0f,1.5f*unit,20, NULL, 0, 0, 0, 0, "Delete the active position"); uiButSetNFunc(bt, colorband_del_cb, MEM_dupallocN(cb), coba); + bt= uiDefBut(block, BUT, 0, "F", xs+3.5f*unit,butr->ymin+20.0f,0.5f*unit,20, NULL, 0, 0, 0, 0, "Flip the color ramp"); + uiButSetNFunc(bt, colorband_flip_cb, MEM_dupallocN(cb), coba); uiBlockEndAlign(block); if(coba->tot) { CBData *cbd= coba->data + coba->cur; PointerRNA ptr; RNA_pointer_create(cb->ptr.id.data, &RNA_ColorRampElement, cbd, &ptr); - uiItemR(layout, "", 0, &ptr, "color", 0); + uiItemR(layout, &ptr, "color", 0, "", 0); } bt= uiDefButS(block, MENU, 0, "Interpolation %t|Ease %x1|Cardinal %x3|Linear %x0|B-Spline %x2|Constant %x4", @@ -1587,10 +1548,85 @@ void uiTemplateHistogram(uiLayout *layout, PointerRNA *ptr, char *propname, int block= uiLayoutAbsoluteBlock(layout); //colorband_buttons_layout(layout, block, cptr.data, &rect, !expand, cb); - + hist = (Histogram *)cptr.data; + + hist->height= (hist->height<=0)?100:hist->height; + + bt= uiDefBut(block, HISTOGRAM, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, hist->height, hist, 0, 0, 0, 0, ""); + uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); + + MEM_freeN(cb); +} + +/********************* Waveform Template ************************/ + +void uiTemplateWaveform(uiLayout *layout, PointerRNA *ptr, char *propname, int expand) +{ + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); + PointerRNA cptr; + RNAUpdateCb *cb; + uiBlock *block; + uiBut *bt; + Scopes *scopes; + rctf rect; + + if(!prop || RNA_property_type(prop) != PROP_POINTER) + return; + + cptr= RNA_property_pointer_get(ptr, prop); + if(!cptr.data || !RNA_struct_is_a(cptr.type, &RNA_Scopes)) + return; + scopes = (Scopes *)cptr.data; + + cb= MEM_callocN(sizeof(RNAUpdateCb), "RNAUpdateCb"); + cb->ptr= *ptr; + cb->prop= prop; + + rect.xmin= 0; rect.xmax= 200; + rect.ymin= 0; rect.ymax= 190; + + block= uiLayoutAbsoluteBlock(layout); + + scopes->wavefrm_height= (scopes->wavefrm_height<=0)?100:scopes->wavefrm_height; + + bt= uiDefBut(block, WAVEFORM, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, scopes->wavefrm_height, scopes, 0, 0, 0, 0, ""); + + MEM_freeN(cb); +} + +/********************* Vectorscope Template ************************/ + +void uiTemplateVectorscope(uiLayout *layout, PointerRNA *ptr, char *propname, int expand) +{ + PropertyRNA *prop= RNA_struct_find_property(ptr, propname); + PointerRNA cptr; + RNAUpdateCb *cb; + uiBlock *block; + uiBut *bt; + Scopes *scopes; + rctf rect; + + if(!prop || RNA_property_type(prop) != PROP_POINTER) + return; + + cptr= RNA_property_pointer_get(ptr, prop); + if(!cptr.data || !RNA_struct_is_a(cptr.type, &RNA_Scopes)) + return; + scopes = (Scopes *)cptr.data; + + cb= MEM_callocN(sizeof(RNAUpdateCb), "RNAUpdateCb"); + cb->ptr= *ptr; + cb->prop= prop; - bt= uiDefBut(block, HISTOGRAM, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, 100.0f, hist, 0, 0, 0, 0, ""); + rect.xmin= 0; rect.xmax= 200; + rect.ymin= 0; rect.ymax= 190; + + block= uiLayoutAbsoluteBlock(layout); + + scopes->vecscope_height= (scopes->vecscope_height<=0)?100:scopes->vecscope_height; + + bt= uiDefBut(block, VECTORSCOPE, 0, "", rect.xmin, rect.ymin, rect.xmax-rect.xmin, scopes->vecscope_height, scopes, 0, 0, 0, 0, ""); uiButSetNFunc(bt, rna_update_cb, MEM_dupallocN(cb), NULL); MEM_freeN(cb); @@ -1707,7 +1743,7 @@ static void curvemap_tools_dofunc(bContext *C, void *cumap_v, int event) switch(event) { case 0: /* reset */ - curvemap_reset(cuma, &cumap->clipr, CURVE_PRESET_LINE); + curvemap_reset(cuma, &cumap->clipr, cumap->preset); curvemapping_changed(cumap, 0); break; case 1: @@ -1729,10 +1765,6 @@ static void curvemap_tools_dofunc(bContext *C, void *cumap_v, int event) cuma->flag |= CUMA_EXTEND_EXTRAPOLATE; curvemapping_changed(cumap, 0); break; - case 6: /* reset smooth */ - curvemap_reset(cuma, &cumap->clipr, CURVE_PRESET_SMOOTH); - curvemapping_changed(cumap, 0); - break; } ED_region_tag_redraw(CTX_wm_region(C)); } @@ -1770,7 +1802,7 @@ static uiBlock *curvemap_brush_tools_func(bContext *C, struct ARegion *ar, void uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset View", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 1, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Vector Handle", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 2, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Auto Handle", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, ""); - uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset Curve", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 6, ""); + uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Reset Curve", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 0, ""); uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 50); @@ -1789,8 +1821,9 @@ static void curvemap_buttons_reset(bContext *C, void *cb_v, void *cumap_v) CurveMapping *cumap = cumap_v; int a; + cumap->preset = CURVE_PRESET_LINE; for(a=0; a<CM_TOT; a++) - curvemap_reset(cumap->cm+a, &cumap->clipr, CURVE_PRESET_LINE); + curvemap_reset(cumap->cm+a, &cumap->clipr, cumap->preset); cumap->black[0]=cumap->black[1]=cumap->black[2]= 0.0f; cumap->white[0]=cumap->white[1]=cumap->white[2]= 1.0f; @@ -1918,8 +1951,8 @@ static void curvemap_buttons_layout(uiLayout *layout, PointerRNA *ptr, char labe /* black/white levels */ if(levels) { split= uiLayoutSplit(layout, 0, 0); - uiItemR(uiLayoutColumn(split, 0), NULL, 0, ptr, "black_level", UI_ITEM_R_EXPAND); - uiItemR(uiLayoutColumn(split, 0), NULL, 0, ptr, "white_level", UI_ITEM_R_EXPAND); + uiItemR(uiLayoutColumn(split, 0), ptr, "black_level", UI_ITEM_R_EXPAND, NULL, 0); + uiItemR(uiLayoutColumn(split, 0), ptr, "white_level", UI_ITEM_R_EXPAND, NULL, 0); uiLayoutRow(layout, 0); bt=uiDefBut(block, BUT, 0, "Reset", 0, 0, UI_UNIT_X*10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Reset Black/White point and curves"); @@ -1955,37 +1988,44 @@ void uiTemplateCurveMapping(uiLayout *layout, PointerRNA *ptr, char *propname, i #define WHEEL_SIZE 100 -void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock) +void uiTemplateColorWheel(uiLayout *layout, PointerRNA *ptr, char *propname, int value_slider, int lock, int lock_luminosity, int cubic) { PropertyRNA *prop= RNA_struct_find_property(ptr, propname); uiBlock *block= uiLayoutGetBlock(layout); uiLayout *col, *row; + uiBut *but; float softmin, softmax, step, precision; if (!prop) { printf("uiTemplateColorWheel: property not found: %s\n", propname); return; } - + RNA_property_float_ui_range(ptr, prop, &softmin, &softmax, &step, &precision); col = uiLayoutColumn(layout, 0); row= uiLayoutRow(col, 1); - uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, lock, ""); - + but= uiDefButR(block, HSVCIRCLE, 0, "", 0, 0, WHEEL_SIZE, WHEEL_SIZE, ptr, propname, -1, 0.0, 0.0, 0, 0, ""); + + if(lock) { + but->flag |= UI_BUT_COLOR_LOCK; + } + + if(lock_luminosity) { + float color[4]; /* incase of alpha */ + but->flag |= UI_BUT_VEC_SIZE_LOCK; + RNA_property_float_get_array(ptr, prop, color); + but->a2= len_v3(color); + } + + if(cubic) + but->flag |= UI_BUT_COLOR_CUBIC; + uiItemS(row); if (value_slider) uiDefButR(block, HSVCUBE, 0, "", WHEEL_SIZE+6, 0, 14, WHEEL_SIZE, ptr, propname, -1, softmin, softmax, 9, 0, ""); - - /* maybe a switch for this? - row= uiLayoutRow(col, 0); - if(ELEM(RNA_property_subtype(prop), PROP_COLOR, PROP_COLOR_GAMMA) && RNA_property_array_length(ptr, prop) == 4) { - but= uiDefAutoButR(block, ptr, prop, 3, "A:", 0, 0, 0, WHEEL_SIZE+20, UI_UNIT_Y); - } - */ - } @@ -2008,9 +2048,9 @@ void uiTemplateTriColorSet(uiLayout *layout, PointerRNA *ptr, char *propname) /* nselected, selected, active color swatches */ csPtr= RNA_property_pointer_get(ptr, prop); - uiItemR(row, "", 0, &csPtr, "normal", 0); - uiItemR(row, "", 0, &csPtr, "selected", 0); - uiItemR(row, "", 0, &csPtr, "active", 0); + uiItemR(row, &csPtr, "normal", 0, "", 0); + uiItemR(row, &csPtr, "selected", 0, "", 0); + uiItemR(row, &csPtr, "active", 0, "", 0); } /********************* Layer Buttons Template ************************/ @@ -2039,7 +2079,7 @@ static void handle_layer_buttons(bContext *C, void *arg1, void *arg2) // the array of layer bitflags void uiTemplateLayers(uiLayout *layout, PointerRNA *ptr, char *propname, - PointerRNA *used_ptr, char *used_propname, int active_layer) + PointerRNA *used_ptr, char *used_propname, int active_layer) { uiLayout *uRow, *uCol; PropertyRNA *prop, *used_prop= NULL; @@ -2201,11 +2241,11 @@ static void list_item_row(bContext *C, uiLayout *layout, PointerRNA *ptr, Pointe uiBlockSetEmboss(block, UI_EMBOSSN); row= uiLayoutRow(split, 1); if(i == 0) uiItemL(row, "", 0); - else uiItemR(row, "", 0, itemptr, "value", 0); + else uiItemR(row, itemptr, "value", 0, "", 0); if(ob->mode == OB_MODE_EDIT && !((ob->shapeflag & OB_SHAPE_EDIT_MODE) && ob->type == OB_MESH)) uiLayoutSetActive(row, 0); - //uiItemR(row, "", ICON_MUTE_IPO_OFF, itemptr, "mute", 0); + //uiItemR(row, itemptr, "mute", 0, "", ICON_MUTE_IPO_OFF); uiBlockSetEmboss(block, UI_EMBOSS); } else @@ -2448,6 +2488,7 @@ void uiTemplateOperatorSearch(uiLayout *layout) #define B_STOPRENDER 1 #define B_STOPCAST 2 #define B_STOPANIM 3 +#define B_STOPCOMPO 4 static void do_running_jobs(bContext *C, void *arg, int event) { @@ -2456,11 +2497,14 @@ static void do_running_jobs(bContext *C, void *arg, int event) G.afbreek= 1; break; case B_STOPCAST: - WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C)); + WM_jobs_stop(CTX_wm_manager(C), CTX_wm_screen(C), NULL); break; case B_STOPANIM: WM_operator_name_call(C, "SCREEN_OT_animation_play", WM_OP_INVOKE_SCREEN, NULL); break; + case B_STOPCOMPO: + WM_jobs_stop(CTX_wm_manager(C), CTX_wm_area(C), NULL); + break; } } @@ -2469,15 +2513,36 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C) bScreen *screen= CTX_wm_screen(C); Scene *scene= CTX_data_scene(C); wmWindowManager *wm= CTX_wm_manager(C); + ScrArea *sa= CTX_wm_area(C); uiBlock *block; - + void *owner; + int handle_event; + block= uiLayoutGetBlock(layout); uiBlockSetCurLayout(block, layout); uiBlockSetHandleFunc(block, do_running_jobs, NULL); - if(WM_jobs_test(wm, scene)) - uiDefIconTextBut(block, BUT, B_STOPRENDER, ICON_CANCEL, "Render", 0,0,75,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop rendering"); + if(sa->spacetype==SPACE_NODE) { + owner = sa; + handle_event= B_STOPCOMPO; + } else { + owner = scene; + handle_event= B_STOPRENDER; + } + + if(WM_jobs_test(wm, owner)) { + uiLayout *abs; + + abs = uiLayoutAbsolute(layout, 0); + + uiDefIconBut(block, BUT, handle_event, ICON_PANEL_CLOSE, + 0, UI_UNIT_Y*0.1, UI_UNIT_X*0.8, UI_UNIT_Y*0.8, NULL, 0.0f, 0.0f, 0, 0, "Stop this job"); + uiDefBut(block, PROGRESSBAR, 0, WM_jobs_name(wm, owner), + UI_UNIT_X, 0, 100, UI_UNIT_Y, NULL, 0.0f, 0.0f, WM_jobs_progress(wm, owner), 0, "Progress"); + + uiLayoutRow(layout, 0); + } if(WM_jobs_test(wm, screen)) uiDefIconTextBut(block, BUT, B_STOPCAST, ICON_CANCEL, "Capture", 0,0,85,UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, "Stop screencast"); if(screen->animtimer) @@ -2486,43 +2551,55 @@ void uiTemplateRunningJobs(uiLayout *layout, bContext *C) /************************* Reports for Last Operator Template **************************/ -void uiTemplateReportsBanner(uiLayout *layout, bContext *C, wmOperator *op) +void uiTemplateReportsBanner(uiLayout *layout, bContext *C) { - ReportList *reports = op->reports; - uiLayout *box; + ReportList *reports = CTX_wm_reports(C); + Report *report= BKE_reports_last_displayable(reports); + ReportTimerInfo *rti; - /* sanity checks */ - if (ELEM(NULL, op, reports)) { - printf("uiTemplateReportsBanner: no operator with reports!\n"); - return; - } + uiLayout *abs; + uiBlock *block; + uiBut *but; + uiStyle *style= U.uistyles.first; + int width; + float hsv[3]; + + /* if the report display has timed out, don't show */ + if (!reports->reporttimer) return; + + rti= (ReportTimerInfo *)reports->reporttimer->customdata; + + if (!rti || rti->widthfac==0.0 || !report) return; + + abs = uiLayoutAbsolute(layout, 0); + block= uiLayoutGetBlock(abs); + + rgb_to_hsv(rti->col[0], rti->col[1], rti->col[2], hsv+0, hsv+1, hsv+2); + + width = BLF_width(style->widget.uifont_id, report->message); + width = MIN2(rti->widthfac*width, width); + width = MAX2(width, 10); /* make a box around the report to make it stand out */ - box = uiLayoutBox(layout); - uiLayoutSetScaleY(box, 0.48); /* experimentally determined value to reduce execessive padding... */ + uiBlockBeginAlign(block); + but= uiDefBut(block, ROUNDBOX, 0, "", 0, 0, UI_UNIT_X+10, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + copy_v3_v3(but->hsv, hsv); /* set the report's bg colour in but->hsv - ROUNDBOX feature */ - /* if more than one report, we need to show the popup when user clicks on the temp label... */ - if (reports->list.first != reports->list.last) { - int numReports = BLI_countlist(&reports->list); - char buf[64]; - - // XXX: we need uiItem* to return uiBut pointer so that we can use it to set callbacks - // used to call uiPupMenuReports... as alternative, we could fall back to the "old ways" - //sprintf(buf, "Last Operator had %d errors. Click to see more...", numReports); - sprintf(buf, "Last Operator had %d errors", numReports); - uiItemL(box, buf, ICON_INFO); - } - else { - /* single report, so show report directly */ - // XXX: what if the report is too long? should we truncate the text? - Report *report= (Report *)reports->list.first; - - if(report->type >= RPT_ERROR) - uiItemL(box, report->message, ICON_ERROR); - else if(report->type >= RPT_WARNING) - uiItemL(box, report->message, ICON_ERROR); - else if(report->type >= RPT_INFO) - uiItemL(box, report->message, ICON_INFO); - } + but= uiDefBut(block, ROUNDBOX, 0, "", UI_UNIT_X+10, 0, UI_UNIT_X+width, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + but->hsv[0] = but->hsv[1] = 0.0; /* set a greyscale bg colour in but->hsv - ROUNDBOX feature */ + but->hsv[2] = rti->greyscale; + uiBlockEndAlign(block); + + + /* icon and report message on top */ + if(report->type & RPT_ERROR_ALL) + uiDefIconBut(block, LABEL, 0, ICON_ERROR, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + else if(report->type & RPT_WARNING_ALL) + uiDefIconBut(block, LABEL, 0, ICON_ERROR, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + else if(report->type & RPT_INFO_ALL) + uiDefIconBut(block, LABEL, 0, ICON_INFO, 2, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + + uiDefBut(block, LABEL, 0, report->message, UI_UNIT_X+10, 0, UI_UNIT_X+width, UI_UNIT_Y, NULL, 0.0f, 0.0f, 0, 0, ""); + } diff --git a/source/blender/editors/interface/interface_utils.c b/source/blender/editors/interface/interface_utils.c index c9024704b5e..37278340275 100644 --- a/source/blender/editors/interface/interface_utils.c +++ b/source/blender/editors/interface/interface_utils.c @@ -37,8 +37,6 @@ #include "UI_interface.h" #include "UI_resources.h" -#include "WM_api.h" -#include "WM_types.h" /*************************** RNA Utilities ******************************/ @@ -159,7 +157,7 @@ void uiDefAutoButsRNA(const bContext *C, uiLayout *layout, PointerRNA *ptr, int else col= NULL; - uiItemFullR(col, "", 0, ptr, prop, -1, 0, 0); + uiItemFullR(col, ptr, prop, -1, 0, 0, "", 0); } RNA_STRUCT_END; } diff --git a/source/blender/editors/interface/interface_widgets.c b/source/blender/editors/interface/interface_widgets.c index e02a8f53a4e..d2860adbf50 100644 --- a/source/blender/editors/interface/interface_widgets.c +++ b/source/blender/editors/interface/interface_widgets.c @@ -30,10 +30,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_ID.h" #include "DNA_screen_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_listbase.h" @@ -53,26 +51,22 @@ #include "UI_interface.h" #include "UI_interface_icons.h" -#include "UI_resources.h" -#include "UI_view2d.h" -#include "ED_util.h" -#include "ED_types.h" #include "interface_intern.h" /* ************** widget base functions ************** */ /* - - in: roundbox codes for corner types and radius - - return: array of [size][2][x,y] points, the edges of the roundbox, + UV coords + - in: roundbox codes for corner types and radius + - return: array of [size][2][x,y] points, the edges of the roundbox, + UV coords - - draw black box with alpha 0 on exact button boundbox - - for ever AA step: - - draw the inner part for a round filled box, with color blend codes or texture coords - - draw outline in outline color - - draw outer part, bottom half, extruded 1 pixel to bottom, for emboss shadow - - draw extra decorations - - draw background color box with alpha 1 on exact button boundbox + - draw black box with alpha 0 on exact button boundbox + - for ever AA step: + - draw the inner part for a round filled box, with color blend codes or texture coords + - draw outline in outline color + - draw outer part, bottom half, extruded 1 pixel to bottom, for emboss shadow + - draw extra decorations + - draw background color box with alpha 1 on exact button boundbox */ @@ -289,10 +283,10 @@ static void round_box__edges(uiWidgetBase *wt, int roundboxalign, rcti *rect, fl float maxxi= maxx - 1.0f; float minyi= miny + 1.0f; float maxyi= maxy - 1.0f; - float facxi= 1.0f/(maxxi-minxi); /* for uv */ - float facyi= 1.0f/(maxyi-minyi); + float facxi= (maxxi!=minxi) ? 1.0f/(maxxi-minxi) : 0.0f; /* for uv, can divide by zero */ + float facyi= (maxyi!=minyi) ? 1.0f/(maxyi-minyi) : 0.0f; int a, tot= 0, minsize; - + minsize= MIN2(rect->xmax-rect->xmin, rect->ymax-rect->ymin); if(2.0f*rad > minsize) @@ -614,14 +608,67 @@ static void widgetbase_draw(uiWidgetBase *wtb, uiWidgetColors *wcol) /* backdrop non AA */ if(wtb->inner) { if(wcol->shaded==0) { - - /* filled center, solid */ - glColor4ubv((unsigned char*)wcol->inner); - glBegin(GL_POLYGON); - for(a=0; a<wtb->totvert; a++) - glVertex2fv(wtb->inner_v[a]); - glEnd(); + if (wcol->alpha_check) { + GLubyte checker_stipple_sml[32*32/8] = + { + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 255,0,255,0,255,0,255,0,255,0,255,0,255,0,255,0, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + 0,255,0,255,0,255,0,255,0,255,0,255,0,255,0,255, \ + }; + + float x_mid= 0.0f; /* used for dumb clamping of values */ + + /* dark checkers */ + glColor4ub(100, 100, 100, 255); + glBegin(GL_POLYGON); + for(a=0; a<wtb->totvert; a++) { + glVertex2fv(wtb->inner_v[a]); + } + glEnd(); + + /* light checkers */ + glEnable(GL_POLYGON_STIPPLE); + glColor4ub(160, 160, 160, 255); + glPolygonStipple(checker_stipple_sml); + glBegin(GL_POLYGON); + for(a=0; a<wtb->totvert; a++) { + glVertex2fv(wtb->inner_v[a]); + } + glEnd(); + glDisable(GL_POLYGON_STIPPLE); + /* alpha fill */ + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4ubv((unsigned char*)wcol->inner); + glBegin(GL_POLYGON); + for(a=0; a<wtb->totvert; a++) { + glVertex2fv(wtb->inner_v[a]); + x_mid += wtb->inner_v[a][0]; + } + x_mid /= wtb->totvert; + glEnd(); + + /* 1/2 solid color */ + glColor4ub(wcol->inner[0], wcol->inner[1], wcol->inner[2], 255); + glBegin(GL_POLYGON); + for(a=0; a<wtb->totvert; a++) + glVertex2f(MIN2(wtb->inner_v[a][0], x_mid), wtb->inner_v[a][1]); + glEnd(); + } + else { + /* simple fill */ + glColor4ubv((unsigned char*)wcol->inner); + glBegin(GL_POLYGON); + for(a=0; a<wtb->totvert; a++) + glVertex2fv(wtb->inner_v[a]); + glEnd(); + } } else { char col1[4], col2[4]; @@ -817,14 +864,17 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) /* need to set this first */ uiStyleFontSet(fstyle); + + if (fstyle->kerning==1) /* for BLF_width */ + BLF_enable(fstyle->uifont_id, BLF_KERNING_DEFAULT); - but->strwidth= BLF_width(but->drawstr); + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr); but->ofs= 0; while(but->strwidth > okwidth ) { but->ofs++; - but->strwidth= BLF_width(but->drawstr+but->ofs); + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); /* textbut exception */ if(but->editstr && but->pos != -1) { @@ -843,6 +893,9 @@ static void ui_text_leftclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) if(but->strwidth < 10) break; } + + if (fstyle->kerning==1) + BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); } static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) @@ -855,7 +908,10 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) /* need to set this first */ uiStyleFontSet(fstyle); - but->strwidth= BLF_width(but->drawstr); + if (fstyle->kerning==1) /* for BLF_width */ + BLF_enable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr); but->ofs= 0; /* find the space after ':' separator */ @@ -870,7 +926,7 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) memmove(cp2-1, cp2, strlen(cp2)+1); cp2--; - but->strwidth= BLF_width(but->drawstr+but->ofs); + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); if(but->strwidth < 10) break; } @@ -879,7 +935,7 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) while ((but->strwidth > okwidth) && (but->ofs < 2)) { but->ofs++; - but->strwidth= BLF_width(but->drawstr+but->ofs); + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); if(but->strwidth < 10) break; } @@ -892,10 +948,12 @@ static void ui_text_label_rightclip(uiFontStyle *fstyle, uiBut *but, rcti *rect) but->drawstr[ pos-1 ] = 0; pos--; - but->strwidth= BLF_width(but->drawstr+but->ofs); + but->strwidth= BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); if(but->strwidth < 10) break; } + if (fstyle->kerning==1) + BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); } @@ -910,7 +968,10 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b fstyle->align= UI_STYLE_TEXT_LEFT; else fstyle->align= UI_STYLE_TEXT_CENTER; - + + if (fstyle->kerning==1) /* for BLF_width */ + BLF_enable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + /* text button selection and cursor */ if(but->editstr && but->pos != -1) { short t=0, pos=0, ch; @@ -927,7 +988,7 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b ch= but->drawstr[selsta_tmp]; but->drawstr[selsta_tmp]= 0; - selsta_draw = BLF_width(but->drawstr+but->ofs); + selsta_draw = BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); but->drawstr[selsta_tmp]= ch; } else @@ -936,7 +997,7 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b ch= but->drawstr[selend_tmp]; but->drawstr[selend_tmp]= 0; - selwidth_draw = BLF_width(but->drawstr+but->ofs); + selwidth_draw = BLF_width(fstyle->uifont_id, but->drawstr+but->ofs); but->drawstr[selend_tmp]= ch; @@ -951,16 +1012,20 @@ static void widget_draw_text(uiFontStyle *fstyle, uiWidgetColors *wcol, uiBut *b ch= but->drawstr[pos]; but->drawstr[pos]= 0; - t= BLF_width(but->drawstr+but->ofs); + t= BLF_width(fstyle->uifont_id, but->drawstr+but->ofs) / but->aspect; but->drawstr[pos]= ch; } - glColor3ub(255,0,0); + glColor3f(0.20, 0.6, 0.9); glRects(rect->xmin+t, rect->ymin+2, rect->xmin+t+2, rect->ymax-2); } } } + + if (fstyle->kerning == 1) + BLF_disable(fstyle->uifont_id, BLF_KERNING_DEFAULT); + // ui_rasterpos_safe(x, y, but->aspect); // if(but->type==IDPOIN) transopts= 0; // no translation, of course! // else transopts= ui_translate_buttons(); @@ -1264,6 +1329,19 @@ static struct uiWidgetColors wcol_scroll= { 5, -5 }; +static struct uiWidgetColors wcol_progress= { + {0, 0, 0, 255}, + {190, 190, 190, 255}, + {100, 100, 100, 180}, + {68, 68, 68, 255}, + + {0, 0, 0, 255}, + {255, 255, 255, 255}, + + 0, + 0, 0 +}; + static struct uiWidgetColors wcol_list_item= { {0, 0, 0, 255}, {0, 0, 0, 0}, @@ -1310,6 +1388,7 @@ void ui_widget_color_init(ThemeUI *tui) tui->wcol_box= wcol_box; tui->wcol_scroll= wcol_scroll; tui->wcol_list_item= wcol_list_item; + tui->wcol_progress= wcol_progress; tui->wcol_state= wcol_state; } @@ -1577,10 +1656,10 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) rgb_to_hsv(rgb[0], rgb[1], rgb[2], hsv, hsv+1, hsv+2); copy_v3_v3(hsvo, hsv); - /* exception: if 'lock' is set (stored in but->a2), + /* exception: if 'lock' is set * lock the value of the color wheel to 1. * Useful for color correction tools where you're only interested in hue. */ - if (but->a2) hsv[2] = 1.f; + if (but->flag & UI_BUT_COLOR_LOCK) hsv[2] = 1.f; hsv_to_rgb(0.f, 0.f, hsv[2], colcent, colcent+1, colcent+2); @@ -1595,6 +1674,8 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) float co= cos(ang); ui_hsvcircle_vals_from_pos(hsv, hsv+1, rect, centx + co*radius, centy + si*radius); + CLAMP(hsv[2], 0.0f, 1.0f); /* for display only */ + hsv_to_rgb(hsv[0], hsv[1], hsv[2], col, col+1, col+2); glColor3fv(col); glVertex2f( centx + co*radius, centy + si*radius); @@ -1609,14 +1690,19 @@ void ui_draw_but_HSVCIRCLE(uiBut *but, uiWidgetColors *wcol, rcti *rect) glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH ); glColor3ubv((unsigned char*)wcol->outline); - glutil_draw_lined_arc(0.0f, M_PI*2.0, radius, tot); + glutil_draw_lined_arc(0.0f, M_PI*2.0, radius, tot + 1); glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH ); glPopMatrix(); /* cursor */ ang= 2.0f*M_PI*hsvo[0] + 0.5f*M_PI; - radius= hsvo[1]*radius; + + if(but->flag & UI_BUT_COLOR_CUBIC) + radius= (1.0f - pow(1.0f - hsvo[1], 3.0f)) *radius; + else + radius= hsvo[1] * radius; + ui_hsv_cursor(centx + cos(-ang)*radius, centy + sin(-ang)*radius); } @@ -1942,6 +2028,7 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int stat uiWidgetBase wtb; float rad; int horizontal; + short outline=0; widget_init(&wtb); @@ -1983,6 +2070,10 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int stat /* draw */ wtb.emboss= 0; /* only emboss once */ + /* exception for progress bar */ + if (state & UI_SCROLL_NO_OUTLINE) + SWAP(short, outline, wtb.outline); + round_box_edges(&wtb, 15, slider, rad); if(state & UI_SCROLL_ARROWS) { @@ -2001,6 +2092,9 @@ void uiWidgetScrollDraw(uiWidgetColors *wcol, rcti *rect, rcti *slider, int stat } } widgetbase_draw(&wtb, wcol); + + if (state & UI_SCROLL_NO_OUTLINE) + SWAP(short, outline, wtb.outline); } } @@ -2065,9 +2159,35 @@ static void widget_scroll(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat uiWidgetScrollDraw(wcol, rect, &rect1, state); } -static void widget_link(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) +static void widget_progressbar(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) { + rcti rect_prog = *rect, rect_bar = *rect; + float value = but->a1; + float w, min; + + /* make the progress bar a proportion of the original height */ + /* hardcoded 4px high for now */ + rect_prog.ymax = rect_prog.ymin + 4; + rect_bar.ymax = rect_bar.ymin + 4; + + w = value * (rect_prog.xmax - rect_prog.xmin); + + /* ensure minimium size */ + min= rect_prog.ymax - rect_prog.ymin; + w = MAX2(w, min); + + rect_bar.xmax = rect_bar.xmin + w; + + uiWidgetScrollDraw(wcol, &rect_prog, &rect_bar, UI_SCROLL_NO_OUTLINE); + + /* raise text a bit */ + rect->ymin += 6; + rect->xmin -= 6; +} +static void widget_link(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) +{ + if(but->flag & UI_SELECT) { rcti rectlink; @@ -2082,7 +2202,6 @@ static void widget_link(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, } } - static void widget_numslider(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) { uiWidgetBase wtb, wtb1; @@ -2149,9 +2268,15 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat float col[4]; int color_profile = but->block->color_profile; + col[3]= 1.0f; + if (but->rnaprop) { if (RNA_property_subtype(but->rnaprop) == PROP_COLOR_GAMMA) color_profile = BLI_PR_NONE; + + if(RNA_property_array_length(&but->rnapoin, but->rnaprop)==4) { + col[3]= RNA_property_float_get_index(&but->rnapoin, but->rnaprop, 3); + } } widget_init(&wtb); @@ -2167,8 +2292,10 @@ static void widget_swatch(uiBut *but, uiWidgetColors *wcol, rcti *rect, int stat wcol->inner[0]= FTOCHAR(col[0]); wcol->inner[1]= FTOCHAR(col[1]); wcol->inner[2]= FTOCHAR(col[2]); + wcol->inner[3]= FTOCHAR(col[3]); wcol->shaded = 0; - + wcol->alpha_check = (wcol->inner[3] < 255); + widgetbase_draw(&wtb, wcol); } @@ -2306,6 +2433,36 @@ static void widget_radiobut(uiWidgetColors *wcol, rcti *rect, int state, int rou } +static void widget_box(uiBut *but, uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) +{ + uiWidgetBase wtb; + char old_col[3]; + + widget_init(&wtb); + + VECCOPY(old_col, wcol->inner); + + /* abuse but->hsv - if it's non-zero, use this colour as the box's background */ + if ((but->hsv[0] != 0.0) || (but->hsv[1] != 0.0) || (but->hsv[2] != 0.0)) { + float rgb[3]; + hsv_to_rgb(but->hsv[0], but->hsv[1], but->hsv[2], rgb+0, rgb+1, rgb+2); + wcol->inner[0] = rgb[0] * 255; + wcol->inner[1] = rgb[1] * 255; + wcol->inner[2] = rgb[2] * 255; + } + + /* half rounded */ + round_box_edges(&wtb, roundboxalign, rect, 4.0f); + + widgetbase_draw(&wtb, wcol); + + /* store the box bg as gl clearcolor, to retrieve later when drawing semi-transparent rects + * over the top to indicate disabled buttons */ + glClearColor(wcol->inner[0]/255.0, wcol->inner[1]/255.0, wcol->inner[2]/255.0, 1.0); + + VECCOPY(wcol->inner, old_col); +} + static void widget_but(uiWidgetColors *wcol, rcti *rect, int state, int roundboxalign) { uiWidgetBase wtb; @@ -2372,10 +2529,11 @@ static void widget_disabled(rcti *rect) /* can't use theme TH_BACK or TH_PANEL... undefined */ glGetFloatv(GL_COLOR_CLEAR_VALUE, col); glColor4f(col[0], col[1], col[2], 0.5f); + /* need -1 and +1 to make it work right for aligned buttons, * but problem may be somewhere else? */ - glRectf(rect->xmin-1, rect->ymin, rect->xmax, rect->ymax+1); - + glRectf(rect->xmin-1, rect->ymin-1, rect->xmax, rect->ymax+1); + glDisable(GL_BLEND); } @@ -2492,6 +2650,7 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type) break; case UI_WTYPE_BOX: + wt.custom= widget_box; wt.wcol_theme= &btheme->tui.wcol_box; break; @@ -2511,6 +2670,11 @@ static uiWidgetType *widget_type(uiWidgetTypeEnum type) wt.wcol_theme= &btheme->tui.wcol_list_item; wt.draw= widget_list_itembut; break; + + case UI_WTYPE_PROGRESSBAR: + wt.wcol_theme= &btheme->tui.wcol_progress; + wt.custom= widget_progressbar; + break; } return &wt; @@ -2715,9 +2879,22 @@ void ui_draw_but(const bContext *C, ARegion *ar, uiStyle *style, uiBut *but, rct ui_draw_but_HISTOGRAM(ar, but, &tui->wcol_regular, rect); break; + case WAVEFORM: + ui_draw_but_WAVEFORM(ar, but, &tui->wcol_regular, rect); + break; + + case VECTORSCOPE: + ui_draw_but_VECTORSCOPE(ar, but, &tui->wcol_regular, rect); + break; + case BUT_CURVE: ui_draw_but_CURVE(ar, but, &tui->wcol_regular, rect); break; + + case PROGRESSBAR: + wt= widget_type(UI_WTYPE_PROGRESSBAR); + fstyle= &style->widgetlabel; + break; case SCROLL: wt= widget_type(UI_WTYPE_SCROLL); @@ -2801,7 +2978,7 @@ void ui_draw_menu_item(uiFontStyle *fstyle, rcti *rect, char *name, int iconid, cpoin= strchr(name, '|'); if(cpoin) { *cpoin= 0; - rect->xmax -= BLF_width(cpoin+1) + 10; + rect->xmax -= BLF_width(fstyle->uifont_id, cpoin+1) + 10; } glColor3ubv((unsigned char*)wt->wcol.text); @@ -2844,8 +3021,8 @@ void ui_draw_preview_item(uiFontStyle *fstyle, rcti *rect, char *name, int iconi glColor3ubv((unsigned char*)wt->wcol.text_sel); trect.xmin += 0; - trect.xmax = trect.xmin + BLF_width(name) + 10; + trect.xmax = trect.xmin + BLF_width(fstyle->uifont_id, name) + 10; trect.ymin += 10; - trect.ymax = trect.ymin + BLF_height(name); + trect.ymax = trect.ymin + BLF_height(fstyle->uifont_id, name); uiStyleFontDraw(fstyle, &trect, name); } diff --git a/source/blender/editors/interface/resources.c b/source/blender/editors/interface/resources.c index 8566e620fb8..58357bc67cf 100644 --- a/source/blender/editors/interface/resources.c +++ b/source/blender/editors/interface/resources.c @@ -34,15 +34,10 @@ #include <stdlib.h> #include <string.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "DNA_curve_types.h" -#include "DNA_listBase.h" #include "DNA_userdef_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" @@ -50,8 +45,6 @@ #include "BLI_blenlib.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" #include "BKE_DerivedMesh.h" #include "BKE_global.h" @@ -62,7 +55,6 @@ #include "BIF_gl.h" #include "UI_interface.h" -#include "UI_resources.h" #include "UI_interface_icons.h" #include "interface_intern.h" @@ -279,6 +271,8 @@ char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) cp= ts->edge_seam; break; case TH_EDGE_SHARP: cp= ts->edge_sharp; break; + case TH_EDGE_CREASE: + cp= ts->edge_crease; break; case TH_EDITMESH_ACTIVE: cp= ts->editmesh_active; break; case TH_EDGE_FACESEL: @@ -305,7 +299,35 @@ char *UI_ThemeGetColorPtr(bTheme *btheme, int spacetype, int colorid) cp= ts->strip_select; break; case TH_CFRAME: cp= ts->cframe; break; - + case TH_NURB_ULINE: + cp= ts->nurb_uline; break; + case TH_NURB_VLINE: + cp= ts->nurb_vline; break; + case TH_NURB_SEL_ULINE: + cp= ts->nurb_sel_uline; break; + case TH_NURB_SEL_VLINE: + cp= ts->nurb_sel_vline; break; + case TH_ACTIVE_SPLINE: + cp= ts->act_spline; break; + case TH_LASTSEL_POINT: + cp= ts->lastsel_point; break; + case TH_HANDLE_FREE: + cp= ts->handle_free; break; + case TH_HANDLE_AUTO: + cp= ts->handle_auto; break; + case TH_HANDLE_VECT: + cp= ts->handle_vect; break; + case TH_HANDLE_ALIGN: + cp= ts->handle_align; break; + case TH_HANDLE_SEL_FREE: + cp= ts->handle_sel_free; break; + case TH_HANDLE_SEL_AUTO: + cp= ts->handle_sel_auto; break; + case TH_HANDLE_SEL_VECT: + cp= ts->handle_sel_vect; break; + case TH_HANDLE_SEL_ALIGN: + cp= ts->handle_sel_align; break; + case TH_SYNTAX_B: cp= ts->syntaxb; break; case TH_SYNTAX_V: @@ -438,11 +460,11 @@ static void ui_theme_init_new(bTheme *btheme) #define SETCOL(col, r, g, b, a) col[0]=r; col[1]=g; col[2]= b; col[3]= a; #define SETCOLF(col, r, g, b, a) col[0]=r*255; col[1]=g*255; col[2]= b*255; col[3]= a*255; -/* initialize default theme, can't be edited +/* initialize default theme Note: when you add new colors, created & saved themes need initialized use function below, init_userdef_do_versions() */ -void ui_theme_init_userdef(void) +void ui_theme_init_default(void) { bTheme *btheme= U.themes.first; @@ -500,6 +522,23 @@ void ui_theme_init_userdef(void) btheme->tv3d.facedot_size= 4; SETCOL(btheme->tv3d.cframe, 0x60, 0xc0, 0x40, 255); + SETCOL(btheme->tv3d.nurb_uline, 0x90, 0x90, 0x00, 255); + SETCOL(btheme->tv3d.nurb_vline, 0x80, 0x30, 0x60, 255); + SETCOL(btheme->tv3d.nurb_sel_uline, 0xf0, 0xff, 0x40, 255); + SETCOL(btheme->tv3d.nurb_sel_vline, 0xf0, 0x90, 0xa0, 255); + + SETCOL(btheme->tv3d.handle_free, 0, 0, 0, 255); + SETCOL(btheme->tv3d.handle_auto, 0x90, 0x90, 0x00, 255); + SETCOL(btheme->tv3d.handle_vect, 0x40, 0x90, 0x30, 255); + SETCOL(btheme->tv3d.handle_align, 0x80, 0x30, 0x60, 255); + SETCOL(btheme->tv3d.handle_sel_free, 0, 0, 0, 255); + SETCOL(btheme->tv3d.handle_sel_auto, 0xf0, 0xff, 0x40, 255); + SETCOL(btheme->tv3d.handle_sel_vect, 0x40, 0xc0, 0x30, 255); + SETCOL(btheme->tv3d.handle_sel_align, 0xf0, 0x90, 0xa0, 255); + + SETCOL(btheme->tv3d.act_spline, 0xdb, 0x25, 0x12, 255); + SETCOL(btheme->tv3d.lastsel_point, 0xff, 0xff, 0xff, 255); + SETCOL(btheme->tv3d.bone_solid, 200, 200, 200, 255); SETCOL(btheme->tv3d.bone_pose, 80, 200, 255, 80); // alpha 80 is not meant editable, used for wire+action draw @@ -912,6 +951,14 @@ void UI_GetColorPtrBlendShade3ubv(char *cp1, char *cp2, char *col, float fac, in col[2] = b; } +void UI_ThemeClearColor(int colorid) +{ + float col[3]; + + UI_GetThemeColor3fv(colorid, col); + glClearColor(col[0], col[1], col[2], 0.0); +} + void UI_make_axis_color(char *src_col, char *dst_col, char axis) { switch(axis) @@ -1377,7 +1424,75 @@ void init_userdef_do_versions(void) if(U.wmdrawmethod == USER_DRAW_TRIPLE) U.wmdrawmethod = USER_DRAW_AUTOMATIC; } + + if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 3)) { + if (U.flag & USER_LMOUSESELECT) + U.flag &= ~USER_TWOBUTTONMOUSE; + } + if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 4)) { + bTheme *btheme; + + /* default new handle type is auto handles */ + U.keyhandles_new = HD_AUTO; + + /* init new curve colors */ + for(btheme= U.themes.first; btheme; btheme= btheme->next) { + /* init colors used for handles in 3D-View */ + SETCOL(btheme->tv3d.handle_free, 0, 0, 0, 255); + SETCOL(btheme->tv3d.handle_auto, 0x90, 0x90, 0x00, 255); + SETCOL(btheme->tv3d.handle_vect, 0x40, 0x90, 0x30, 255); + SETCOL(btheme->tv3d.handle_align, 0x80, 0x30, 0x60, 255); + SETCOL(btheme->tv3d.handle_sel_free, 0, 0, 0, 255); + SETCOL(btheme->tv3d.handle_sel_auto, 0xf0, 0xff, 0x40, 255); + SETCOL(btheme->tv3d.handle_sel_vect, 0x40, 0xc0, 0x30, 255); + SETCOL(btheme->tv3d.handle_sel_align, 0xf0, 0x90, 0xa0, 255); + SETCOL(btheme->tv3d.act_spline, 0xdb, 0x25, 0x12, 255); + + /* same colors again for Graph Editor... */ + SETCOL(btheme->tipo.handle_free, 0, 0, 0, 255); + SETCOL(btheme->tipo.handle_auto, 0x90, 0x90, 0x00, 255); + SETCOL(btheme->tipo.handle_vect, 0x40, 0x90, 0x30, 255); + SETCOL(btheme->tipo.handle_align, 0x80, 0x30, 0x60, 255); + SETCOL(btheme->tipo.handle_sel_free, 0, 0, 0, 255); + SETCOL(btheme->tipo.handle_sel_auto, 0xf0, 0xff, 0x40, 255); + SETCOL(btheme->tipo.handle_sel_vect, 0x40, 0xc0, 0x30, 255); + SETCOL(btheme->tipo.handle_sel_align, 0xf0, 0x90, 0xa0, 255); + + /* edge crease */ + SETCOLF(btheme->tv3d.edge_crease, 0.8, 0, 0.6, 1.0); + } + } + if (G.main->versionfile <= 252) { + bTheme *btheme; + /* init new curve colors */ + for(btheme= U.themes.first; btheme; btheme= btheme->next) { + if (btheme->tv3d.lastsel_point[3] == 0) + SETCOL(btheme->tv3d.lastsel_point, 0xff, 0xff, 0xff, 255); + } + } + if (G.main->versionfile < 252 || (G.main->versionfile == 252 && G.main->subversionfile < 5)) { + bTheme *btheme; + + /* interface_widgets.c */ + struct uiWidgetColors wcol_progress= { + {0, 0, 0, 255}, + {190, 190, 190, 255}, + {100, 100, 100, 180}, + {68, 68, 68, 255}, + + {0, 0, 0, 255}, + {255, 255, 255, 255}, + + 0, + 5, -5 + }; + + for(btheme= U.themes.first; btheme; btheme= btheme->next) { + /* init progress bar theme */ + btheme->tui.wcol_progress= wcol_progress; + } + } /* GL Texture Garbage Collection (variable abused above!) */ if (U.textimeout == 0) { @@ -1403,13 +1518,25 @@ void init_userdef_do_versions(void) if (U.v2d_min_gridsize == 0) { U.v2d_min_gridsize= 35; } + + /* Single Column UI Value */ + if (U.propwidth == 0) { + U.propwidth = 200; + } /* funny name, but it is GE stuff, moves userdef stuff to engine */ // XXX space_set_commmandline_options(); /* this timer uses U */ // XXX reset_autosave(); -} + /* GSOC Sculpt 2010 - Sanity check on Sculpt/Paint settings */ + if (U.sculpt_paint_unified_alpha == 0) + U.sculpt_paint_unified_alpha = 0.5f; + if (U.sculpt_paint_unified_unprojected_radius == 0) + U.sculpt_paint_unified_unprojected_radius = 0.125f; + if (U.sculpt_paint_unified_size == 0) + U.sculpt_paint_unified_size = 35; +} diff --git a/source/blender/editors/interface/view2d.c b/source/blender/editors/interface/view2d.c index 2bdf1ea4c88..9a88a52d4b4 100644 --- a/source/blender/editors/interface/view2d.c +++ b/source/blender/editors/interface/view2d.c @@ -33,10 +33,7 @@ #include "MEM_guardedalloc.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_userdef_types.h" -#include "DNA_view2d_types.h" #include "BLI_blenlib.h" @@ -55,7 +52,6 @@ #include "ED_screen.h" #include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "interface_intern.h" @@ -1318,6 +1314,13 @@ void UI_view2d_constant_grid_draw(const bContext *C, View2D *v2d) glEnd(); } +/* the price we pay for not exposting structs :( */ +void UI_view2d_grid_size(View2DGrid *grid, float *r_dx, float *r_dy) +{ + *r_dx= grid->dx; + *r_dy= grid->dy; +} + /* free temporary memory used for drawing grid */ void UI_view2d_grid_free(View2DGrid *grid) { @@ -1393,6 +1396,7 @@ View2DScrollers *UI_view2d_scrollers_calc(const bContext *C, View2D *v2d, short /* scroller 'button' extents */ totsize= v2d->tot.xmax - v2d->tot.xmin; scrollsize= (float)(hor.xmax - hor.xmin); + if(totsize==0.0f) totsize = 1.0f; /* avoid divide by zero */ fac1= (v2d->cur.xmin - v2d->tot.xmin) / totsize; if(fac1<=0.0f) @@ -1433,6 +1437,7 @@ View2DScrollers *UI_view2d_scrollers_calc(const bContext *C, View2D *v2d, short /* scroller 'button' extents */ totsize= v2d->tot.ymax - v2d->tot.ymin; scrollsize= (float)(vert.ymax - vert.ymin); + if(totsize==0.0f) totsize = 1.0f; /* avoid divide by zero */ fac1= (v2d->cur.ymin- v2d->tot.ymin) / totsize; if(fac1<=0.0f) @@ -1706,8 +1711,9 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v /* draw vertical steps */ if (dfac > 0.0f) { - BLF_default_rotation(90.0f); - + BLF_rotation_default(90.0f); + BLF_enable_default(BLF_ROTATION); + for (; fac < vert.ymax-10; fac+= dfac, val += grid->dy) { /* make prints look nicer for scrollers */ @@ -1717,7 +1723,7 @@ void UI_view2d_scrollers_draw(const bContext *C, View2D *v2d, View2DScrollers *v scroll_printstr(vs, scene, (float)(vert.xmax)-2.0f, fac, val, grid->powery, vs->yunits, 'v'); } - BLF_default_rotation(0.0f); + BLF_disable_default(BLF_ROTATION); } } } @@ -2057,12 +2063,10 @@ void UI_view2d_text_cache_draw(ARegion *ar) yofs= ceil( 0.5f*(v2s->rect.ymax - v2s->rect.ymin - BLF_height_default("28"))); if(yofs<1) yofs= 1; - BLF_clipping(v2s->rect.xmin-4, v2s->rect.ymin-4, v2s->rect.xmax+4, v2s->rect.ymax+4); - BLF_enable(BLF_CLIPPING); - + BLF_clipping_default(v2s->rect.xmin-4, v2s->rect.ymin-4, v2s->rect.xmax+4, v2s->rect.ymax+4); + BLF_enable_default(BLF_CLIPPING); BLF_draw_default(v2s->rect.xmin+xofs, v2s->rect.ymin+yofs, 0.0f, v2s->str); - - BLF_disable(BLF_CLIPPING); + BLF_disable_default(BLF_CLIPPING); } } diff --git a/source/blender/editors/interface/view2d_ops.c b/source/blender/editors/interface/view2d_ops.c index 7476751fecd..a5ed57a9ee8 100644 --- a/source/blender/editors/interface/view2d_ops.c +++ b/source/blender/editors/interface/view2d_ops.c @@ -29,12 +29,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_userdef_types.h" -#include "DNA_vec_types.h" -#include "DNA_view2d_types.h" #include "BLI_blenlib.h" @@ -51,7 +46,6 @@ #include "ED_screen.h" -#include "UI_resources.h" #include "UI_view2d.h" static int view2d_poll(bContext *C) @@ -78,6 +72,7 @@ static int view2d_poll(bContext *C) typedef struct v2dViewPanData { bScreen *sc; /* screen where view pan was initiated */ ScrArea *sa; /* area where view pan was initiated */ + ARegion *ar; /* region where view pan was initiated */ View2D *v2d; /* view2d we're operating in */ float facx, facy; /* amount to move view relative to zoom */ @@ -114,6 +109,7 @@ static int view_pan_init(bContext *C, wmOperator *op) vpd->sc= CTX_wm_screen(C); vpd->sa= CTX_wm_area(C); vpd->v2d= v2d; + vpd->ar = ar; /* calculate translation factor - based on size of view */ winx= (float)(ar->winrct.xmax - ar->winrct.xmin + 1); @@ -149,12 +145,14 @@ static void view_pan_apply(bContext *C, wmOperator *op) UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(vpd->sa); + ED_region_tag_redraw(vpd->ar); + UI_view2d_sync(vpd->sc, vpd->sa, v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); /* exceptions */ - if(vpd->sa->spacetype==SPACE_OUTLINER) { + if (vpd->sa->spacetype==SPACE_OUTLINER) { + /* don't rebuild full tree, since we're just changing our view */ SpaceOops *soops= vpd->sa->spacedata.first; soops->storeflag |= SO_TREESTORE_REDRAW; } @@ -295,7 +293,7 @@ void VIEW2D_OT_pan(wmOperatorType *ot) ot->modal= view_pan_modal; ot->cancel= view_pan_cancel; - /* operator is repeatable */ + /* operator is modal */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; /* rna - must keep these in sync with the other operators */ @@ -342,9 +340,6 @@ void VIEW2D_OT_scroll_right(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollright_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -389,9 +384,6 @@ void VIEW2D_OT_scroll_left(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollleft_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -416,7 +408,7 @@ static int view_scrolldown_exec(bContext *C, wmOperator *op) /* set RNA-Props */ RNA_int_set(op->ptr, "deltax", 0); - RNA_int_set(op->ptr, "deltay", -20); + RNA_int_set(op->ptr, "deltay", -40); /* apply movement, then we're done */ view_pan_apply(C, op); @@ -435,9 +427,6 @@ void VIEW2D_OT_scroll_down(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrolldown_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -463,7 +452,7 @@ static int view_scrollup_exec(bContext *C, wmOperator *op) /* set RNA-Props */ RNA_int_set(op->ptr, "deltax", 0); - RNA_int_set(op->ptr, "deltay", 20); + RNA_int_set(op->ptr, "deltay", 40); /* apply movement, then we're done */ view_pan_apply(C, op); @@ -482,9 +471,6 @@ void VIEW2D_OT_scroll_up(wmOperatorType *ot) /* api callbacks */ ot->exec= view_scrollup_exec; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_int(ot->srna, "deltax", 0, INT_MIN, INT_MAX, "Delta X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "deltay", 0, INT_MIN, INT_MAX, "Delta Y", "", INT_MIN, INT_MAX); @@ -509,6 +495,7 @@ void VIEW2D_OT_scroll_up(wmOperatorType *ot) /* temp customdata for operator */ typedef struct v2dViewZoomData { View2D *v2d; /* view2d we're operating in */ + ARegion *ar; int lastx, lasty; /* previous x/y values of mouse in window */ float dx, dy; /* running tally of previous delta values (for obtaining final zoom) */ @@ -538,6 +525,7 @@ static int view_zoomdrag_init(bContext *C, wmOperator *op) /* set pointers to owners */ vzd->v2d= v2d; + vzd->ar = ar; return 1; } @@ -570,11 +558,12 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) float dx, dy, facx, facy; /* calculate amount to move view by, ensuring symmetry so the - * old zoom level is restored after zooming back the same amount */ + * old zoom level is restored after zooming back the same amount + */ facx= RNA_float_get(op->ptr, "zoomfacx"); facy= RNA_float_get(op->ptr, "zoomfacy"); - if(facx >= 0.0f) { + if (facx >= 0.0f) { dx= (v2d->cur.xmax - v2d->cur.xmin) * facx; dy= (v2d->cur.ymax - v2d->cur.ymin) * facy; } @@ -589,16 +578,17 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) v2d->cur.xmax -= 2*dx; } else if (v2d->keepofs & V2D_KEEPOFS_X) { - if(v2d->align & V2D_ALIGN_NO_POS_X) + if (v2d->align & V2D_ALIGN_NO_POS_X) v2d->cur.xmin += 2*dx; else v2d->cur.xmax -= 2*dx; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->mx_2d - v2d->cur.xmin) / (v2d->cur.xmax-v2d->cur.xmin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dx) - (mval_faci * dx); + v2d->cur.xmin += ofs + dx; v2d->cur.xmax += ofs - dx; } @@ -613,19 +603,21 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) v2d->cur.ymax -= 2*dy; } else if (v2d->keepofs & V2D_KEEPOFS_Y) { - if(v2d->align & V2D_ALIGN_NO_POS_Y) + if (v2d->align & V2D_ALIGN_NO_POS_Y) v2d->cur.ymin += 2*dy; else v2d->cur.ymax -= 2*dy; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->my_2d - v2d->cur.ymin) / (v2d->cur.ymax-v2d->cur.ymin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dy) - (mval_faci * dy); + v2d->cur.ymin += ofs + dy; v2d->cur.ymax += ofs - dy; - } else { + } + else { v2d->cur.ymin += dy; v2d->cur.ymax -= dy; } @@ -636,7 +628,7 @@ static void view_zoomstep_apply(bContext *C, wmOperator *op) UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(vzd->ar); UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); } @@ -680,9 +672,13 @@ static int view_zoomin_invoke(bContext *C, wmOperator *op, wmEvent *event) vzd= op->customdata; - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } return view_zoomin_exec(C, op); @@ -700,9 +696,6 @@ void VIEW2D_OT_zoom_in(wmOperatorType *ot) ot->exec= view_zoomin_exec; ot->poll= view_zoom_poll; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "zoomfacx", 0, -FLT_MAX, FLT_MAX, "Zoom Factor X", "", -FLT_MAX, FLT_MAX); RNA_def_float(ot->srna, "zoomfacy", 0, -FLT_MAX, FLT_MAX, "Zoom Factor Y", "", -FLT_MAX, FLT_MAX); @@ -738,7 +731,11 @@ static int view_zoomout_invoke(bContext *C, wmOperator *op, wmEvent *event) if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } return view_zoomout_exec(C, op); @@ -756,9 +753,6 @@ void VIEW2D_OT_zoom_out(wmOperatorType *ot) ot->exec= view_zoomout_exec; ot->poll= view_zoom_poll; - /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER; - /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "zoomfacx", 0, -FLT_MAX, FLT_MAX, "Zoom Factor X", "", -FLT_MAX, FLT_MAX); RNA_def_float(ot->srna, "zoomfacy", 0, -FLT_MAX, FLT_MAX, "Zoom Factor Y", "", -FLT_MAX, FLT_MAX); @@ -790,10 +784,11 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.xmax -= 2*dx; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->mx_2d - v2d->cur.xmin) / (v2d->cur.xmax-v2d->cur.xmin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dx) - (mval_faci * dx); + v2d->cur.xmin += ofs + dx; v2d->cur.xmax += ofs - dx; } @@ -808,10 +803,11 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) v2d->cur.ymax -= 2*dy; } else { - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { float mval_fac = (vzd->my_2d - v2d->cur.ymin) / (v2d->cur.ymax-v2d->cur.ymin); float mval_faci = 1.0 - mval_fac; float ofs= (mval_fac * dy) - (mval_faci * dy); + v2d->cur.ymin += ofs + dy; v2d->cur.ymax += ofs - dy; } @@ -826,7 +822,7 @@ static void view_zoomdrag_apply(bContext *C, wmOperator *op) UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(vzd->ar); UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); } @@ -872,7 +868,8 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event) vzd->lasty= event->prevy; /* As we have only 1D information (magnify value), feed both axes - with magnify information that is stored in x axis */ + * with magnify information that is stored in x axis + */ fac= 0.01f * (event->x - event->prevx); dx= fac * (v2d->cur.xmax - v2d->cur.xmin) / 10.0f; dy= fac * (v2d->cur.ymax - v2d->cur.ymin) / 10.0f; @@ -891,9 +888,13 @@ static int view_zoomdrag_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_float_set(op->ptr, "deltax", 0); RNA_float_set(op->ptr, "deltay", 0); - if(U.uiflag & USER_ZOOM_TO_MOUSEPOS) { + if (U.uiflag & USER_ZOOM_TO_MOUSEPOS) { ARegion *ar= CTX_wm_region(C); - UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &vzd->mx_2d, &vzd->my_2d); + + /* store initial mouse position (in view space) */ + UI_view2d_region_to_view(&ar->v2d, + event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &vzd->mx_2d, &vzd->my_2d); } if (v2d->keepofs & V2D_LOCKOFS_X) @@ -1015,7 +1016,7 @@ void VIEW2D_OT_zoom(wmOperatorType *ot) ot->poll= view_zoom_poll; /* operator is repeatable */ - // ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING; + // ot->flag= OPTYPE_BLOCKING; /* rna - must keep these in sync with the other operators */ RNA_def_float(ot->srna, "deltax", 0, -FLT_MAX, FLT_MAX, "Delta X", "", -FLT_MAX, FLT_MAX); @@ -1039,17 +1040,16 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) ARegion *ar= CTX_wm_region(C); View2D *v2d= &ar->v2d; rctf rect; - int event_type; + int gesture_mode; /* convert coordinates of rect to 'tot' rect coordinates */ UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmin"), RNA_int_get(op->ptr, "ymin"), &rect.xmin, &rect.ymin); UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmax"), RNA_int_get(op->ptr, "ymax"), &rect.xmax, &rect.ymax); /* check if zooming in/out view */ - // XXX hardcoded for now! - event_type= RNA_int_get(op->ptr, "event_type"); + gesture_mode= RNA_int_get(op->ptr, "gesture_mode"); - if (event_type == LEFTMOUSE) { + if (gesture_mode == GESTURE_MODAL_IN) { /* zoom in: * - 'cur' rect will be defined by the coordinates of the border region * - just set the 'cur' rect to have the same coordinates as the border region @@ -1064,7 +1064,7 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) v2d->cur.ymax= rect.ymax; } } - else { + else /* if (gesture_mode == GESTURE_MODAL_OUT) */ { /* zoom out: * - the current 'cur' rect coordinates are going to end upwhere the 'rect' ones are, * but the 'cur' rect coordinates will need to be adjusted to take in more of the view @@ -1095,7 +1095,7 @@ static int view_borderzoom_exec(bContext *C, wmOperator *op) UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(ar); UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); @@ -1117,7 +1117,7 @@ void VIEW2D_OT_zoom_border(wmOperatorType *ot) ot->poll= view_zoom_poll; /* rna */ - RNA_def_int(ot->srna, "event_type", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "gesture_mode", 0, INT_MIN, INT_MAX, "Gesture Mode", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "xmin", 0, INT_MIN, INT_MAX, "X Min", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "xmax", 0, INT_MIN, INT_MAX, "X Max", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "ymin", 0, INT_MIN, INT_MAX, "Y Min", "", INT_MIN, INT_MAX); @@ -1139,6 +1139,7 @@ void VIEW2D_OT_zoom_border(wmOperatorType *ot) /* customdata for scroller-invoke data */ typedef struct v2dScrollerMove { View2D *v2d; /* View2D data that this operation affects */ + ARegion *ar; /* region that the scroller is in */ short scroller; /* scroller that mouse is in ('h' or 'v') */ short zone; /* -1 is min zoomer, 0 is bar, 1 is max zoomer */ // XXX find some way to provide visual feedback of this (active colour?) @@ -1146,6 +1147,8 @@ typedef struct v2dScrollerMove { float fac; /* view adjustment factor, based on size of region */ float delta; /* amount moved by mouse on axis of interest */ + float scrollbarwidth; /* width of the scrollbar itself, used for page up/down clicks */ + int lastx, lasty; /* previous mouse coordinates (in screen coordinates) for determining movement */ } v2dScrollerMove; @@ -1165,19 +1168,21 @@ struct View2DScrollers { enum { SCROLLHANDLE_MIN= -1, SCROLLHANDLE_BAR, - SCROLLHANDLE_MAX + SCROLLHANDLE_MAX, + SCROLLHANDLE_MIN_OUTSIDE, + SCROLLHANDLE_MAX_OUTSIDE } eV2DScrollerHandle_Zone; /* ------------------------ */ /* check if mouse is within scroller handle * - mouse = relevant mouse coordinate in region space - * - sc_min, sc_max = extents of scroller - * - sh_min, sh_max = positions of scroller handles + * - sc_min, sc_max = extents of scroller 'groove' (potential available space for scroller) + * - sh_min, sh_max = positions of scrollbar handles */ static short mouse_in_scroller_handle(int mouse, int sc_min, int sc_max, int sh_min, int sh_max) { - short in_min, in_max, in_view=1; + short in_min, in_max, in_bar, out_min, out_max, in_view=1; /* firstly, check if * - 'bubble' fills entire scroller @@ -1199,17 +1204,24 @@ static short mouse_in_scroller_handle(int mouse, int sc_min, int sc_max, int sh_ } /* check if mouse is in or past either handle */ + // TODO: check if these extents are still valid or not in_max= ( (mouse >= (sh_max - V2D_SCROLLER_HANDLE_SIZE)) && (mouse <= (sh_max + V2D_SCROLLER_HANDLE_SIZE)) ); in_min= ( (mouse <= (sh_min + V2D_SCROLLER_HANDLE_SIZE)) && (mouse >= (sh_min - V2D_SCROLLER_HANDLE_SIZE)) ); + in_bar= ( (mouse < (sh_max - V2D_SCROLLER_HANDLE_SIZE)) && (mouse > (sh_min + V2D_SCROLLER_HANDLE_SIZE)) ); + out_min= mouse < (sh_min - V2D_SCROLLER_HANDLE_SIZE); + out_max= mouse > (sh_max + V2D_SCROLLER_HANDLE_SIZE); - /* check if overlap --> which means user clicked on bar, as bar is within handles region */ - if (in_max && in_min) + if (in_bar) return SCROLLHANDLE_BAR; else if (in_max) return SCROLLHANDLE_MAX; else if (in_min) return SCROLLHANDLE_MIN; - + else if (out_min) + return SCROLLHANDLE_MIN_OUTSIDE; + else if (out_max) + return SCROLLHANDLE_MAX_OUTSIDE; + /* unlikely to happen, though we just cover it in case */ return SCROLLHANDLE_BAR; } @@ -1230,6 +1242,7 @@ static void scroller_activate_init(bContext *C, wmOperator *op, wmEvent *event, /* set general data */ vsm->v2d= v2d; + vsm->ar= ar; vsm->scroller= in_scroller; /* store mouse-coordinates, and convert mouse/screen coordinates to region coordinates */ @@ -1248,14 +1261,14 @@ static void scroller_activate_init(bContext *C, wmOperator *op, wmEvent *event, vsm->fac= (v2d->tot.xmax - v2d->tot.xmin) / mask_size; /* get 'zone' (i.e. which part of scroller is activated) */ - if (v2d->keepzoom & V2D_LOCKZOOM_X) { + vsm->zone= mouse_in_scroller_handle(x, v2d->hor.xmin, v2d->hor.xmax, scrollers->hor_min, scrollers->hor_max); + + if ((v2d->keepzoom & V2D_LOCKZOOM_X) && ELEM(vsm->zone, SCROLLHANDLE_MIN, SCROLLHANDLE_MAX)) { /* default to scroll, as handles not usable */ vsm->zone= SCROLLHANDLE_BAR; } - else { - /* check which handle we're in */ - vsm->zone= mouse_in_scroller_handle(x, v2d->hor.xmin, v2d->hor.xmax, scrollers->hor_min, scrollers->hor_max); - } + + vsm->scrollbarwidth = scrollers->hor_max - scrollers->hor_min; } else { /* vertical scroller - calculate adjustment factor first */ @@ -1263,14 +1276,14 @@ static void scroller_activate_init(bContext *C, wmOperator *op, wmEvent *event, vsm->fac= (v2d->tot.ymax - v2d->tot.ymin) / mask_size; /* get 'zone' (i.e. which part of scroller is activated) */ - if (v2d->keepzoom & V2D_LOCKZOOM_Y) { + vsm->zone= mouse_in_scroller_handle(y, v2d->vert.ymin, v2d->vert.ymax, scrollers->vert_min, scrollers->vert_max); + + if ((v2d->keepzoom & V2D_LOCKZOOM_Y) && ELEM(vsm->zone, SCROLLHANDLE_MIN, SCROLLHANDLE_MAX)) { /* default to scroll, as handles not usable */ vsm->zone= SCROLLHANDLE_BAR; } - else { - /* check which handle we're in */ - vsm->zone= mouse_in_scroller_handle(y, v2d->vert.ymin, v2d->vert.ymax, scrollers->vert_min, scrollers->vert_max); - } + + vsm->scrollbarwidth = scrollers->vert_max - scrollers->vert_min; } UI_view2d_scrollers_free(scrollers); @@ -1320,8 +1333,11 @@ static void scroller_activate_apply(bContext *C, wmOperator *op) if ((vsm->scroller == 'v') && !(v2d->keepzoom & V2D_LOCKZOOM_Y)) v2d->cur.ymax += temp; break; - - default: /* SCROLLHANDLE_BAR */ + + case SCROLLHANDLE_MIN_OUTSIDE: + case SCROLLHANDLE_MAX_OUTSIDE: + case SCROLLHANDLE_BAR: + default: /* only move view on an axis if panning is allowed */ if ((vsm->scroller == 'h') && !(v2d->keepofs & V2D_LOCKOFS_X)) { v2d->cur.xmin += temp; @@ -1332,13 +1348,14 @@ static void scroller_activate_apply(bContext *C, wmOperator *op) v2d->cur.ymax += temp; } break; + } /* validate that view is in valid configuration after this operation */ UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(vsm->ar); UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); } @@ -1353,7 +1370,7 @@ static int scroller_activate_modal(bContext *C, wmOperator *op, wmEvent *event) case MOUSEMOVE: { /* calculate new delta transform, then store mouse-coordinates for next-time */ - if (vsm->zone != SCROLLHANDLE_MIN) { + if (ELEM(vsm->zone, SCROLLHANDLE_BAR, SCROLLHANDLE_MAX)) { /* if using bar (i.e. 'panning') or 'max' zoom widget */ switch (vsm->scroller) { case 'h': /* horizontal scroller - so only horizontal movement ('cur' moves opposite to mouse) */ @@ -1364,7 +1381,7 @@ static int scroller_activate_modal(bContext *C, wmOperator *op, wmEvent *event) break; } } - else { + else if (vsm->zone == SCROLLHANDLE_MIN) { /* using 'min' zoom widget */ switch (vsm->scroller) { case 'h': /* horizontal scroller - so only horizontal movement ('cur' moves with mouse) */ @@ -1386,8 +1403,23 @@ static int scroller_activate_modal(bContext *C, wmOperator *op, wmEvent *event) case LEFTMOUSE: if (event->val==KM_RELEASE) { - scroller_activate_exit(C, op); - return OPERATOR_FINISHED; + /* single-click was in empty space outside bubble, so scroll by 1 'page' */ + if (ELEM(vsm->zone, SCROLLHANDLE_MIN_OUTSIDE, SCROLLHANDLE_MAX_OUTSIDE)) { + if (vsm->zone == SCROLLHANDLE_MIN_OUTSIDE) + vsm->delta = -vsm->scrollbarwidth * 0.8; + else if (vsm->zone == SCROLLHANDLE_MAX_OUTSIDE) + vsm->delta = vsm->scrollbarwidth * 0.8; + + scroller_activate_apply(C, op); + scroller_activate_exit(C, op); + return OPERATOR_FINISHED; + } + + /* otherwise, end the drag action */ + if (vsm->lastx || vsm->lasty) { + scroller_activate_exit(C, op); + return OPERATOR_FINISHED; + } } break; } @@ -1502,7 +1534,7 @@ static int reset_exec(bContext *C, wmOperator *op) v2d->cur.ymax= v2d->cur.ymin + winy; /* align */ - if(v2d->align) { + if (v2d->align) { /* posx and negx flags are mutually exclusive, so watch out */ if ((v2d->align & V2D_ALIGN_NO_POS_X) && !(v2d->align & V2D_ALIGN_NO_NEG_X)) { v2d->cur.xmax= 0.0f; @@ -1528,7 +1560,7 @@ static int reset_exec(bContext *C, wmOperator *op) UI_view2d_curRect_validate(v2d); /* request updates to be done... */ - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(ar); UI_view2d_sync(CTX_wm_screen(C), CTX_wm_area(C), v2d, V2D_LOCK_COPY); WM_event_add_mousemove(C); @@ -1545,9 +1577,6 @@ void VIEW2D_OT_reset(wmOperatorType *ot) /* api callbacks */ ot->exec= reset_exec; ot->poll= view2d_poll; - - /* flags */ - // ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } /* ********************************************************* */ diff --git a/source/blender/editors/mesh/CMakeLists.txt b/source/blender/editors/mesh/CMakeLists.txt new file mode 100644 index 00000000000..809ccb86234 --- /dev/null +++ b/source/blender/editors/mesh/CMakeLists.txt @@ -0,0 +1,41 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../bmesh + ../../imbuf + ../../makesdna + ../../makesrna + ../../windowmanager + ../../render/extern/include + ../../../../intern/guardedalloc +) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_mesh "${SRC}" "${INC}") diff --git a/source/blender/editors/mesh/bmesh_select.c b/source/blender/editors/mesh/bmesh_select.c index 2199a4bc594..dd86b2da9ee 100644 --- a/source/blender/editors/mesh/bmesh_select.c +++ b/source/blender/editors/mesh/bmesh_select.c @@ -167,7 +167,7 @@ static void draw_triangulated(short mcords[][2], short tot) } /* do the fill */ - filldisplist(&lb, &lb); + filldisplist(&lb, &lb, 0); /* do the draw */ dl= lb.first; /* filldisplist adds in head of list */ diff --git a/source/blender/editors/mesh/bmesh_tools.c b/source/blender/editors/mesh/bmesh_tools.c index 8291c46eedd..2d5323aa255 100644 --- a/source/blender/editors/mesh/bmesh_tools.c +++ b/source/blender/editors/mesh/bmesh_tools.c @@ -514,7 +514,6 @@ short EDBM_Extrude_vert(Object *obedit, BMEditMesh *em, short flag, float *nor) static int extrude_repeat_mesh(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em = ((Mesh *)obedit->data)->edit_btmesh; RegionView3D *rv3d = CTX_wm_region_view3d(C); @@ -671,7 +670,6 @@ static int mesh_extrude_region_exec(bContext *C, wmOperator *op) static int mesh_extrude_region_invoke(bContext *C, wmOperator *op, wmEvent *event) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh; float nor[3]; @@ -710,8 +708,7 @@ void MESH_OT_extrude_region(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* to give to transform */ - Properties_Proportional(ot); - Properties_Constraints(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } @@ -730,7 +727,6 @@ static int mesh_extrude_verts_exec(bContext *C, wmOperator *op) static int mesh_extrude_verts_invoke(bContext *C, wmOperator *op, wmEvent *event) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh; float nor[3]; @@ -769,8 +765,7 @@ void MESH_OT_extrude_verts_indiv(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* to give to transform */ - Properties_Proportional(ot); - Properties_Constraints(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } @@ -789,11 +784,9 @@ static int mesh_extrude_edges_exec(bContext *C, wmOperator *op) static int mesh_extrude_edges_invoke(bContext *C, wmOperator *op, wmEvent *event) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh; float nor[3]; - int constraint_axis[3] = {0, 0, 1}; int tmode; tmode = EDBM_Extrude_edges_indiv(em, op, BM_SELECT, nor); @@ -828,8 +821,7 @@ void MESH_OT_extrude_edges_indiv(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* to give to transform */ - Properties_Proportional(ot); - Properties_Constraints(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } @@ -848,7 +840,6 @@ static int mesh_extrude_faces_exec(bContext *C, wmOperator *op) static int mesh_extrude_faces_invoke(bContext *C, wmOperator *op, wmEvent *event) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh; float nor[3]; @@ -890,8 +881,7 @@ void MESH_OT_extrude_faces_indiv(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* to give to transform */ - Properties_Proportional(ot); - Properties_Constraints(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_CONSTRAINT|P_AXIS); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } @@ -1258,7 +1248,6 @@ void MESH_OT_selection_type(wmOperatorType *ot) static int editbmesh_mark_seam(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); Mesh *me= ((Mesh *)obedit->data); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -1308,7 +1297,6 @@ void MESH_OT_mark_seam(wmOperatorType *ot) static int editbmesh_mark_sharp(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); Mesh *me= ((Mesh *)obedit->data); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -1359,9 +1347,7 @@ void MESH_OT_mark_sharp(wmOperatorType *ot) static int editbmesh_vert_connect(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); - Mesh *me= ((Mesh *)obedit->data); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; BMesh *bm = em->bm; BMOperator bmop; @@ -1394,9 +1380,7 @@ void MESH_OT_vert_connect(wmOperatorType *ot) static int editbmesh_edge_split(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); - Mesh *me= ((Mesh *)obedit->data); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; BMesh *bm = em->bm; BMOperator bmop; @@ -1433,7 +1417,6 @@ void MESH_OT_edge_split(wmOperatorType *ot) static int mesh_duplicate_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -1482,7 +1465,6 @@ void MESH_OT_duplicate(wmOperatorType *ot) static int flip_normals(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh; @@ -1525,14 +1507,12 @@ static const EnumPropertyItem direction_items[]= { /* only accepts 1 selected edge, or 2 selected faces */ static int edge_rotate_selected(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; BMOperator bmop; BMEdge *eed; BMIter iter; int ccw = RNA_int_get(op->ptr, "direction") == 1; // direction == 2 when clockwise and ==1 for counter CW. - short edgeCount = 0; if (!(em->bm->totfacesel == 2 || em->bm->totedgesel == 1)) { BKE_report(op->reports, RPT_ERROR, "Select one edge or two adjacent faces"); @@ -1629,7 +1609,6 @@ void EDBM_pin_mesh(BMEditMesh *em, int swap) static int pin_mesh_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh; Mesh *me= ((Mesh *)obedit->data); @@ -1666,8 +1645,6 @@ void EDBM_unpin_mesh(BMEditMesh *em, int swap) { BMIter iter; BMHeader *ele; - int types[3] = {BM_VERTS_OF_MESH, BM_EDGES_OF_MESH, BM_FACES_OF_MESH}; - int sels[3] = {1, !(em->selectmode & SCE_SELECT_VERTEX), !(em->selectmode & SCE_SELECT_VERTEX | SCE_SELECT_EDGE)}; int itermode; if(em==NULL) return; @@ -1690,9 +1667,7 @@ void EDBM_unpin_mesh(BMEditMesh *em, int swap) static int unpin_mesh_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh; - Mesh *me= ((Mesh *)obedit->data); EDBM_unpin_mesh(em, RNA_boolean_get(op->ptr, "unselected")); @@ -1755,7 +1730,6 @@ void EDBM_hide_mesh(BMEditMesh *em, int swap) static int hide_mesh_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh; EDBM_hide_mesh(em, RNA_boolean_get(op->ptr, "unselected")); @@ -1809,7 +1783,6 @@ void EDBM_reveal_mesh(BMEditMesh *em) static int reveal_mesh_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= (((Mesh *)obedit->data))->edit_btmesh; EDBM_reveal_mesh(em); @@ -1837,7 +1810,6 @@ void MESH_OT_reveal(wmOperatorType *ot) static int normals_make_consistent_exec(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -1874,7 +1846,6 @@ void MESH_OT_normals_make_consistent(wmOperatorType *ot) static int do_smooth_vertex(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; ModifierData *md; @@ -1940,7 +1911,6 @@ void MESH_OT_vertices_smooth(wmOperatorType *ot) static int bm_test_exec(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); RegionView3D *r3d = CTX_wm_region_view3d(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -2033,7 +2003,6 @@ void mesh_set_smooth_faces(BMEditMesh *em, short smooth) static int mesh_faces_shade_smooth_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -2062,7 +2031,6 @@ void MESH_OT_faces_shade_smooth(wmOperatorType *ot) static int mesh_faces_shade_flat_exec(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; @@ -2100,7 +2068,6 @@ static const EnumPropertyItem axis_items[]= { static int mesh_rotate_uvs(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_edit_object(C); BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -2131,7 +2098,6 @@ static int mesh_rotate_uvs(bContext *C, wmOperator *op) static int mesh_reverse_uvs(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_edit_object(C); BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -2158,7 +2124,6 @@ static int mesh_reverse_uvs(bContext *C, wmOperator *op) static int mesh_rotate_colors(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_edit_object(C); BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -2190,7 +2155,6 @@ static int mesh_rotate_colors(bContext *C, wmOperator *op) static int mesh_reverse_colors(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_edit_object(C); BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -2370,7 +2334,7 @@ static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d, Object *ob, { BMIter iter; BMVert *v; - float *vco, co[3], cent[3] = {0.0f, 0.0f, 0.0f}, fac; + float *vco=NULL, co[3], cent[3] = {0.0f, 0.0f, 0.0f}, fac; int i; if (target) { @@ -2392,9 +2356,10 @@ static int merge_target(BMEditMesh *em, Scene *scene, View3D *v3d, Object *ob, fac = 1.0f / (float)i; VECMUL(cent, fac); VECCOPY(co, cent); + vco = co; } - if (!co) + if (!vco) return OPERATOR_CANCELLED; if (uvmerge) { @@ -2517,7 +2482,6 @@ void MESH_OT_merge(wmOperatorType *ot) static int removedoublesflag_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; BMOperator bmop; int count; @@ -2587,7 +2551,6 @@ typedef struct PathEdge { int select_vertex_path_exec(bContext *C, wmOperator *op) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_edit_object(C); BMEditMesh *em = ((Mesh*)ob->data)->edit_btmesh; BMOperator bmop; @@ -3259,7 +3222,7 @@ void MESH_OT_rip(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* to give to transform */ - Properties_Proportional(ot); + Transform_Properties(ot, P_PROPORTIONAL); RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); } @@ -3343,7 +3306,7 @@ static int blend_from_shape_exec(bContext *C, wmOperator *op) float blend= RNA_float_get(op->ptr, "blend"); int shape= RNA_enum_get(op->ptr, "shape"); int add= RNA_int_get(op->ptr, "add"); - int blended= 0, totshape; + int totshape; /*sanity check*/ totshape = CustomData_number_of_layers(&em->bm->vdata, CD_SHAPEKEY); @@ -3525,6 +3488,7 @@ static int solidify_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; #endif + return OPERATOR_CANCELLED; } @@ -3789,7 +3753,7 @@ static int knife_cut_exec(bContext *C, wmOperator *op) } /*the floating point coordinates of verts in screen space will be stored in a hash table according to the vertices pointer*/ - gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "knife cut exec"); for(bv=BMIter_New(&iter, bm, BM_VERTS_OF_MESH, NULL);bv;bv=BMIter_Step(&iter)){ scr = MEM_mallocN(sizeof(float)*2, "Vertex Screen Coordinates"); VECCOPY(co, bv->co); @@ -4008,7 +3972,6 @@ void MESH_OT_quads_convert_to_tris(wmOperatorType *ot) static int tris_convert_to_quads_exec(bContext *C, wmOperator *op) { Object *obedit= CTX_data_edit_object(C); - Scene *scene = CTX_data_scene(C); BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh; int dosharp, douvs, dovcols, domaterials; float limit = RNA_float_get(op->ptr, "limit"); @@ -4103,8 +4066,8 @@ static int split_mesh(bContext *C, wmOperator *op) WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); BKE_mesh_end_editmesh(obedit->data, em); - return OPERATOR_FINISHED; #endif + return OPERATOR_FINISHED; } void MESH_OT_split(wmOperatorType *ot) @@ -4204,6 +4167,7 @@ static int spin_mesh(bContext *C, wmOperator *op, float *dvec, int steps, float BKE_mesh_end_editmesh(obedit->data, em); return ok; #endif + return OPERATOR_CANCELLED; } static int spin_mesh_exec(bContext *C, wmOperator *op) @@ -4235,8 +4199,8 @@ static int spin_mesh_invoke(bContext *C, wmOperator *op, wmEvent *event) RNA_float_set_array(op->ptr, "center", give_cursor(scene, v3d)); RNA_float_set_array(op->ptr, "axis", rv3d->viewinv[2]); - return spin_mesh_exec(C, op); #endif + return spin_mesh_exec(C, op); } void MESH_OT_spin(wmOperatorType *ot) @@ -4333,6 +4297,7 @@ static int screw_mesh_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } #endif + return OPERATOR_CANCELLED; } /* get center and axis, in global coords */ diff --git a/source/blender/editors/mesh/editbmesh_add.c b/source/blender/editors/mesh/editbmesh_add.c index 72e728ec731..20bd2d3d82b 100644 --- a/source/blender/editors/mesh/editbmesh_add.c +++ b/source/blender/editors/mesh/editbmesh_add.c @@ -166,7 +166,7 @@ static int add_primitive_plane_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -211,7 +211,7 @@ static int add_primitive_cube_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit= CTX_data_edit_object(C); @@ -251,7 +251,7 @@ static int add_primitive_circle_exec(bContext *C, wmOperator *op) int enter_editmode; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode); make_prim_ext(C, loc, rot, enter_editmode, PRIM_CIRCLE, RNA_int_get(op->ptr, "vertices"), 0, 0, @@ -294,7 +294,7 @@ static int add_primitive_tube_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -344,7 +344,7 @@ static int add_primitive_cone_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -396,7 +396,7 @@ static int add_primitive_grid_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -449,7 +449,7 @@ static int add_primitive_monkey_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -493,7 +493,7 @@ static int add_primitive_uvsphere_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); @@ -544,7 +544,7 @@ static int add_primitive_icosphere_exec(bContext *C, wmOperator *op) int state; int layer; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer); make_prim_init(C, &dia, mat, &state, loc, rot, layer); obedit = CTX_data_edit_object(C); diff --git a/source/blender/editors/mesh/editbmesh_bvh.c b/source/blender/editors/mesh/editbmesh_bvh.c index e783e855d5e..c0f82a0fe23 100644 --- a/source/blender/editors/mesh/editbmesh_bvh.c +++ b/source/blender/editors/mesh/editbmesh_bvh.c @@ -374,7 +374,7 @@ static float topo_compare(BMesh *bm, BMVert *v1, BMVert *v2, int tag) if (BM_Vert_EdgeCount(v1) != BM_Vert_EdgeCount(v2)) return 1.0f; /*full mismatch*/ - gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh bvh"); #define SPUSH(s, d, vt, lv, e)\ if (BLI_array_count(s) <= lvl) BLI_array_growone(s);\ @@ -619,7 +619,7 @@ BMVert *BMBVH_FindClosestVertTopo(BMBVHTree *tree, float *co, float maxdist, BMV tree->curv = NULL; tree->curtag = 1; - tree->gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + tree->gh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "bmesh bvh"); tree->maxdist = maxdist; tree->v = sourcev; diff --git a/source/blender/editors/mesh/editface.c b/source/blender/editors/mesh/editface.c index 442a0121ca5..0ee1e97ee77 100644 --- a/source/blender/editors/mesh/editface.c +++ b/source/blender/editors/mesh/editface.c @@ -40,14 +40,9 @@ #include "IMB_imbuf_types.h" #include "IMB_imbuf.h" -#include "DNA_image_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_view3d_types.h" #include "BKE_brush.h" #include "BKE_customdata.h" @@ -66,7 +61,6 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "GPU_draw.h" #ifndef DISABLE_PYTHON //#include "BPY_extern.h" @@ -75,7 +69,6 @@ #include "ED_mesh.h" #include "ED_screen.h" -#include "ED_object.h" #include "ED_view3d.h" #include "WM_api.h" @@ -85,7 +78,7 @@ #include "mesh_intern.h" /* ***************** XXX **************** */ -static int pupmenu() {return 0;} +static int pupmenu(const char *dummy) {return 0;} /* ***************** XXX **************** */ @@ -784,7 +777,7 @@ void seam_mark_clear_tface(Scene *scene, short mode) for (a=0, med=me->medge; a<me->totedge; a++, med++) if (BLI_edgehash_haskey(ehash1, med->v1, med->v2) && - BLI_edgehash_haskey(ehash2, med->v1, med->v2)) + BLI_edgehash_haskey(ehash2, med->v1, med->v2)) med->flag |= ME_SEAM; BLI_edgehash_free(ehash1, NULL); diff --git a/source/blender/editors/mesh/loopcut.c b/source/blender/editors/mesh/loopcut.c index 4d5af4eb236..b92e73ac77d 100644 --- a/source/blender/editors/mesh/loopcut.c +++ b/source/blender/editors/mesh/loopcut.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -73,7 +73,6 @@ #include "RNA_define.h" #include "UI_interface.h" -#include "UI_resources.h" #include "WM_api.h" #include "WM_types.h" @@ -130,7 +129,7 @@ static void ringsel_draw(const bContext *C, ARegion *ar, void *arg) static void edgering_find_order(BMEditMesh *em, BMEdge *lasteed, BMEdge *eed, BMVert *lastv1, BMVert *v[2][2]) { - BMIter iter, liter; + BMIter liter; BMLoop *l, *l2; int rev; @@ -178,7 +177,7 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) float (*edges)[2][3] = NULL; BLI_array_declare(edges); float co[2][3]; - int looking=1, i, tot=0; + int i, tot=0; if (!startedge) return; @@ -209,10 +208,6 @@ static void edgering_sel(tringselOpData *lcd, int previewlines, int select) lastv1 = NULL; for (lasteed=NULL; eed; eed=BMW_Step(&walker)) { if (lasteed) { - BMIter liter; - BMLoop *l, *l2; - int rev; - if (lastv1) { v[1][0] = v[0][0]; v[1][1] = v[0][1]; @@ -291,7 +286,16 @@ static void ringsel_finish(bContext *C, wmOperator *op) BM_esubdivideflag(lcd->ob, em->bm, BM_SELECT, 0.0f, 0.0f, 0, cuts, SUBDIV_SELECT_LOOPCUT, SUBD_PATH, 0, 0); - + /* force edge slide to edge select mode in in face select mode */ + if (em->selectmode & SCE_SELECT_FACE) { + if (em->selectmode == SCE_SELECT_FACE) + em->selectmode = SCE_SELECT_EDGE; + else + em->selectmode &= ~SCE_SELECT_FACE; + CTX_data_tool_settings(C)->selectmode= em->selectmode; + EDBM_selectmode_set(em); + } + WM_event_add_notifier(C, NC_GEOM|ND_SELECT|ND_DATA, lcd->ob->data); DAG_id_flush_update(lcd->ob->data, OB_RECALC_DATA); } @@ -416,7 +420,7 @@ static int ringsel_modal (bContext *C, wmOperator *op, wmEvent *event) return OPERATOR_FINISHED; case RIGHTMOUSE: /* confirm */ // XXX hardcoded - if (event->val == KM_RELEASE) { + if (event->val == KM_PRESS) { /* finish */ ED_region_tag_redraw(lcd->ar); diff --git a/source/blender/editors/mesh/mesh_data.c b/source/blender/editors/mesh/mesh_data.c index be688cf0c6c..6f6af2d84a5 100644 --- a/source/blender/editors/mesh/mesh_data.c +++ b/source/blender/editors/mesh/mesh_data.c @@ -32,20 +32,18 @@ #include "MEM_guardedalloc.h" -#include "DNA_customdata_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_context.h" #include "BKE_customdata.h" #include "BKE_depsgraph.h" #include "BKE_displist.h" #include "BKE_global.h" +#include "BKE_image.h" #include "BKE_library.h" #include "BKE_material.h" #include "BKE_mesh.h" @@ -321,17 +319,33 @@ static int drop_named_image_invoke(bContext *C, wmOperator *op, wmEvent *event) { Scene *scene= CTX_data_scene(C); Base *base= ED_view3d_give_base_under_cursor(C, event->mval); - Image *ima; + Image *ima= NULL; Mesh *me; Object *obedit; int exitmode= 0; char name[32]; + /* Check context */ + if(base==NULL || base->object->type!=OB_MESH) { + BKE_report(op->reports, RPT_ERROR, "Not an Object or Mesh"); + return OPERATOR_CANCELLED; + } + /* check input variables */ - RNA_string_get(op->ptr, "name", name); - ima= (Image *)find_id("IM", name); - if(base==NULL || base->object->type!=OB_MESH || ima==NULL) { - BKE_report(op->reports, RPT_ERROR, "Not a Mesh or no Image."); + if(RNA_property_is_set(op->ptr, "filepath")) { + char path[FILE_MAX]; + + RNA_string_get(op->ptr, "filepath", path); + ima= BKE_add_image_file(path, + scene ? scene->r.cfra : 1); + } + else { + RNA_string_get(op->ptr, "name", name); + ima= (Image *)find_id("IM", name); + } + + if(!ima) { + BKE_report(op->reports, RPT_ERROR, "Not an Image."); return OPERATOR_CANCELLED; } @@ -377,6 +391,7 @@ void MESH_OT_drop_named_image(wmOperatorType *ot) /* properties */ RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Image name to assign."); + RNA_def_string(ot->srna, "filepath", "Path", FILE_MAX, "Filepath", "Path to image file"); } static int uv_texture_remove_exec(bContext *C, wmOperator *op) @@ -703,7 +718,7 @@ static void mesh_add_faces(Mesh *mesh, int len) /* set default flags */ mface= &mesh->mface[mesh->totface]; for(i=0; i<len; i++, mface++) - mface->flag= SELECT; + mface->flag= ME_FACE_SEL; mesh->totface= totface; } diff --git a/source/blender/editors/mesh/mesh_intern.h b/source/blender/editors/mesh/mesh_intern.h index 27312b83c14..13299405a57 100644 --- a/source/blender/editors/mesh/mesh_intern.h +++ b/source/blender/editors/mesh/mesh_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -40,6 +40,8 @@ #include "BLI_editVert.h" +#include "RNA_types.h" + struct bContext; struct wmOperatorType; struct ViewContext; @@ -225,35 +227,22 @@ void MESH_OT_flip_normals(struct wmOperatorType *ot); void MESH_OT_solidify(struct wmOperatorType *ot); void MESH_OT_select_nth(struct wmOperatorType *ot); -extern void EM_automerge(Scene *scene, Object *obedit, int update); -void editmesh_select_by_material(EditMesh *em, int index); -void EM_recalc_normal_direction(EditMesh *em, int inside, int select); /* makes faces righthand turning */ -void EM_select_more(EditMesh *em); -void selectconnected_mesh_all(EditMesh *em); -void faceloop_select(struct BMEditMesh *em, struct BMEdge *startedge, int select); - -/** - * findnearestvert - * - * dist (in/out): minimal distance to the nearest and at the end, actual distance - * sel: selection bias - * if SELECT, selected vertice are given a 5 pixel bias to make them farter than unselect verts - * if 0, unselected vertice are given the bias - * strict: if 1, the vertice corresponding to the sel parameter are ignored and not just biased - */ -extern EditVert *findnearestvert(struct ViewContext *vc, int *dist, short sel, short strict); - - -/* ******************* editmesh_tools.c */ #define SUBDIV_SELECT_ORIG 0 #define SUBDIV_SELECT_INNER 1 #define SUBDIV_SELECT_INNER_SEL 2 #define SUBDIV_SELECT_LOOPCUT 3 +/* edge subdivide corner cut types */ +#define SUBDIV_CORNER_PATH 0 +#define SUBDIV_CORNER_INNERVERT 1 +#define SUBDIV_CORNER_FAN 2 + +extern EnumPropertyItem corner_type_items[]; + void join_triangles(EditMesh *em); int removedoublesflag(EditMesh *em, short flag, short automerge, float limit); /* return amount */ -void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beautify, int numcuts, int seltype); +void esubdivideflag(Object *obedit, EditMesh *em, int flag, float smooth, float fractal, int beautify, int numcuts, int corner_pattern, int seltype); int EdgeSlide(EditMesh *em, struct wmOperator *op, short immediate, float imperc); void MESH_OT_merge(struct wmOperatorType *ot); @@ -291,6 +280,7 @@ void MESH_OT_rip(struct wmOperatorType *ot); void MESH_OT_shape_propagate_to_all(struct wmOperatorType *ot); void MESH_OT_blend_from_shape(struct wmOperatorType *ot); +void MESH_OT_sort_faces(struct wmOperatorType *ot); /* ******************* mesh_data.c */ diff --git a/source/blender/editors/mesh/mesh_ops.c b/source/blender/editors/mesh/mesh_ops.c index 0aa7dfee67d..0e034c8ca6d 100644 --- a/source/blender/editors/mesh/mesh_ops.c +++ b/source/blender/editors/mesh/mesh_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -33,11 +33,6 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -49,18 +44,14 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "ED_mesh.h" #include "ED_object.h" #include "ED_screen.h" -#include "ED_transform.h" #include "ED_view3d.h" -#include "UI_interface.h" #include "mesh_intern.h" @@ -122,6 +113,7 @@ void ED_operatortypes_mesh(void) WM_operatortype_append(MESH_OT_edge_flip); WM_operatortype_append(MESH_OT_faces_shade_smooth); WM_operatortype_append(MESH_OT_faces_shade_flat); + //WM_operatortype_append(MESH_OT_sort_faces); WM_operatortype_append(MESH_OT_delete); @@ -184,30 +176,35 @@ void ED_operatormacros_mesh(void) WM_operatortype_macro_define(ot, "MESH_OT_duplicate"); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); ot= WM_operatortype_append_macro("MESH_OT_rip_move", "Rip", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Rip polygons and move the result"; WM_operatortype_macro_define(ot, "MESH_OT_rip"); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); ot= WM_operatortype_append_macro("MESH_OT_extrude_region_move", "Extrude Region and Move", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Extrude region and move result"; otmacro= WM_operatortype_macro_define(ot, "MESH_OT_extrude_region"); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); ot= WM_operatortype_append_macro("MESH_OT_extrude_faces_move", "Extrude Individual Faces and Move", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Extrude faces and move result"; otmacro= WM_operatortype_macro_define(ot, "MESH_OT_extrude_faces_indiv"); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_shrink_fatten"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); ot= WM_operatortype_append_macro("MESH_OT_extrude_edges_move", "Extrude Only Edges and Move", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Extrude edges and move result"; otmacro= WM_operatortype_macro_define(ot, "MESH_OT_extrude_edges_indiv"); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); ot= WM_operatortype_append_macro("MESH_OT_extrude_vertices_move", "Extrude Only Vertices and Move", OPTYPE_UNDO|OPTYPE_REGISTER); ot->description = "Extrude vertices and move result"; @@ -215,6 +212,7 @@ void ED_operatormacros_mesh(void) RNA_enum_set(otmacro->ptr, "type", 4); otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); RNA_enum_set(otmacro->ptr, "proportional", 0); + RNA_boolean_set(otmacro->ptr, "mirror", 0); } /* note mesh keymap also for other space? */ @@ -272,8 +270,9 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_spin", RKEY, KM_PRESS, KM_ALT, 0); - WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "MESH_OT_fill", FKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_add_item(keymap, "MESH_OT_beautify_fill", FKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + //WM_keymap_add_item(keymap, "MESH_OT_sort_faces", FKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_quads_convert_to_tris", TKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "MESH_OT_tris_convert_to_quads", JKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "MESH_OT_edge_flip", FKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); @@ -298,6 +297,7 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MESH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MESH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, 0, KKEY); RNA_enum_set(WM_keymap_add_item(keymap, "MESH_OT_knife_cut", LEFTMOUSE, KM_PRESS, KM_SHIFT, KKEY)->ptr, "type", 2/*KNIFE_MIDPOINT*/); @@ -313,6 +313,6 @@ void ED_keymap_mesh(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "VIEW3D_MT_uv_map", UKEY, KM_PRESS, 0, 0); WM_keymap_add_menu(keymap, "VIEW3D_MT_vertex_group", GKEY, KM_PRESS, KM_CTRL, 0); - ED_object_generic_keymap(keyconf, keymap, TRUE); + ED_object_generic_keymap(keyconf, keymap, 2); } diff --git a/source/blender/editors/mesh/meshtools.c b/source/blender/editors/mesh/meshtools.c index 557c15872a1..bcc00e0640a 100644 --- a/source/blender/editors/mesh/meshtools.c +++ b/source/blender/editors/mesh/meshtools.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -39,18 +39,12 @@ #include "MEM_guardedalloc.h" -#include "DNA_image_types.h" #include "DNA_key_types.h" #include "DNA_material_types.h" #include "DNA_meshdata_types.h" -#include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -89,10 +83,6 @@ /* own include */ #include "mesh_intern.h" -/* XXX */ -static int pupmenu() {return 0;} -/* XXX */ - /* * ********************** no editmode!!! *********** */ @@ -662,153 +652,6 @@ int join_mesh_shapes_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -/* ********************** SORT FACES ******************* */ - -static void permutate(void *list, int num, int size, int *index) -{ - void *buf; - int len; - int i; - - len = num * size; - - buf = MEM_mallocN(len, "permutate"); - memcpy(buf, list, len); - - for (i = 0; i < num; i++) { - memcpy((char *)list + (i * size), (char *)buf + (index[i] * size), size); - } - MEM_freeN(buf); -} - -/* sort faces on view axis */ -static float *face_sort_floats; -static int float_sort(const void *v1, const void *v2) -{ - float x1, x2; - - x1 = face_sort_floats[((int *) v1)[0]]; - x2 = face_sort_floats[((int *) v2)[0]]; - - if( x1 > x2 ) return 1; - else if( x1 < x2 ) return -1; - return 0; -} - - -void sort_faces(Scene *scene, View3D *v3d) -{ - RegionView3D *rv3d= NULL; // get from context - Object *ob= OBACT; - Mesh *me; - CustomDataLayer *layer; - int i, *index; - short event; - float reverse = 1; - int ctrl= 0; // XXX - - if(!ob) return; - if(scene->obedit) return; - if(ob->type!=OB_MESH) return; - if (!v3d) return; - - me= ob->data; - if(me->totface==0) return; - - event = pupmenu( - "Sort Faces (Ctrl to reverse)%t|" - "View Axis%x1|" - "Cursor Distance%x2|" - "Material%x3|" - "Selection%x4|" - "Randomize%x5"); - - if (event==-1) return; - - if(ctrl) - reverse = -1; - -/* create index list */ - index = (int *) MEM_mallocN(sizeof(int) * me->totface, "sort faces"); - for (i = 0; i < me->totface; i++) { - index[i] = i; - } - - face_sort_floats = (float *) MEM_mallocN(sizeof(float) * me->totface, "sort faces float"); - -/* sort index list instead of faces itself - and apply this permutation to all face layers */ - - if (event == 5) { - /* Random */ - for(i=0; i<me->totface; i++) { - face_sort_floats[i] = BLI_frand(); - } - qsort(index, me->totface, sizeof(int), float_sort); - } else { - MFace *mf; - float vec[3]; - float mat[4][4]; - float cur[3]; - - if (event == 1) - mul_m4_m4m4(mat, OBACT->obmat, rv3d->viewmat); /* apply the view matrix to the object matrix */ - else if (event == 2) { /* sort from cursor */ - if( v3d && v3d->localvd ) { - VECCOPY(cur, v3d->cursor); - } else { - VECCOPY(cur, scene->cursor); - } - invert_m4_m4(mat, OBACT->obmat); - mul_m4_v3(mat, cur); - } - - mf= me->mface; - for(i=0; i<me->totface; i++, mf++) { - - if (event==3) { - face_sort_floats[i] = ((float)mf->mat_nr)*reverse; - } else if (event==4) { - /*selected first*/ - if (mf->flag & ME_FACE_SEL) face_sort_floats[i] = 0.0; - else face_sort_floats[i] = reverse; - } else { - /* find the faces center */ - add_v3_v3v3(vec, (me->mvert+mf->v1)->co, (me->mvert+mf->v2)->co); - if (mf->v4) { - add_v3_v3v3(vec, vec, (me->mvert+mf->v3)->co); - add_v3_v3v3(vec, vec, (me->mvert+mf->v4)->co); - mul_v3_fl(vec, 0.25f); - } else { - add_v3_v3v3(vec, vec, (me->mvert+mf->v3)->co); - mul_v3_fl(vec, 1.0f/3.0f); - } /* done */ - - if (event == 1) { /* sort on view axis */ - mul_m4_v3(mat, vec); - face_sort_floats[i] = vec[2] * reverse; - } else if(event == 2) { /* distance from cursor*/ - face_sort_floats[i] = len_v3v3(cur, vec) * reverse; /* back to front */ - } - } - } - qsort(index, me->totface, sizeof(int), float_sort); - } - - MEM_freeN(face_sort_floats); - - for(i = 0; i < me->fdata.totlayer; i++) { - layer = &me->fdata.layers[i]; - permutate(layer->data, me->totface, CustomData_sizeof(layer->type), index); - } - - MEM_freeN(index); - - DAG_id_flush_update(ob->data, OB_RECALC_DATA); -} - - - /* ********************* MESH VERTEX OCTREE LOOKUP ************* */ /* important note; this is unfinished, needs better API for editmode, and custom threshold */ @@ -1367,11 +1210,6 @@ float *editmesh_get_mirror_uv(int axis, float *uv, float *mirrCent, float *face_ cent_vec[1] = face_cent[1]; } - /* - G.v2d->cursor[0] = mirrCent[0]; - G.v2d->cursor[1] = mirrCent[1]; - */ - /* TODO - Optimize */ { EditFace *efa; @@ -1460,7 +1298,7 @@ int *mesh_get_x_mirror_faces(Object *ob, BMEditMesh *em) mesh_octree_table(ob, em, NULL, 'e'); - fhash= BLI_ghash_new(mirror_facehash, mirror_facecmp); + fhash= BLI_ghash_new(mirror_facehash, mirror_facecmp, "mirror_facehash gh"); for(a=0, mf=mface; a<me->totface; a++, mf++) BLI_ghash_insert(fhash, mf, mf); diff --git a/source/blender/editors/metaball/CMakeLists.txt b/source/blender/editors/metaball/CMakeLists.txt new file mode 100644 index 00000000000..5e821a5c1e8 --- /dev/null +++ b/source/blender/editors/metaball/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../makesdna + ../../makesrna + ../../render/extern/include + ../../windowmanager + ../../../../intern/guardedalloc +) + +BLENDERLIB(bf_editor_metaball "${SRC}" "${INC}") diff --git a/source/blender/editors/metaball/mball_edit.c b/source/blender/editors/metaball/mball_edit.c index 625f9b630f4..1d76717e9eb 100644 --- a/source/blender/editors/metaball/mball_edit.c +++ b/source/blender/editors/metaball/mball_edit.c @@ -30,10 +30,6 @@ #include <math.h> #include <string.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" @@ -43,9 +39,6 @@ #include "DNA_meta_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_userdef_types.h" #include "RNA_define.h" #include "RNA_access.h" @@ -54,6 +47,7 @@ #include "BKE_depsgraph.h" #include "BKE_object.h" #include "BKE_context.h" +#include "BKE_library.h" #include "ED_screen.h" #include "ED_view3d.h" @@ -66,6 +60,10 @@ /* This function is used to free all MetaElems from MetaBall */ void free_editMball(Object *obedit) { + MetaBall *mb = (MetaBall*)obedit->data; + + mb->editelems= NULL; + mb->lastelem= NULL; } /* This function is called, when MetaBall Object is @@ -87,13 +85,9 @@ void make_editMball(Object *obedit) /* This function is called, when MetaBall Object switched from * edit mode to object mode. List od MetaElements is copied - * from object->data->edit_elems to to object->data->elems. */ + * from object->data->edit_elems to object->data->elems. */ void load_editMball(Object *obedit) { - MetaBall *mb = (MetaBall*)obedit->data; - - mb->editelems= NULL; - mb->lastelem= NULL; } /* Add metaelem primitive to metaball object (which is in edit mode) */ @@ -129,24 +123,29 @@ MetaElem *add_metaball_primitive(bContext *C, float mat[4][4], int type, int new case MB_BALL: ml->type = MB_BALL; ml->expx= ml->expy= ml->expz= 1.0; + break; case MB_TUBE: ml->type = MB_TUBE; ml->expx= ml->expy= ml->expz= 1.0; + break; case MB_PLANE: ml->type = MB_PLANE; ml->expx= ml->expy= ml->expz= 1.0; + break; case MB_ELIPSOID: ml->type = MB_ELIPSOID; ml->expx= 1.2f; ml->expy= 0.8f; ml->expz= 1.0; + break; case MB_CUBE: ml->type = MB_CUBE; ml->expx= ml->expy= ml->expz= 1.0; + break; default: break; @@ -206,7 +205,7 @@ void MBALL_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select/Deselect All"; - ot->description= "Change selection of all meta elements"; + ot->description= "Change selection of all meta elements"; ot->idname= "MBALL_OT_select_all"; /* callback functions */ @@ -247,7 +246,7 @@ void MBALL_OT_select_inverse_metaelems(wmOperatorType *ot) { /* identifiers */ ot->name= "Inverse"; - ot->description= "Select inverse of (un)selected metaelements"; + ot->description= "Select inverse of (un)selected metaelements"; ot->idname= "MBALL_OT_select_inverse_metaelems"; /* callback functions */ @@ -293,7 +292,7 @@ void MBALL_OT_select_random_metaelems(struct wmOperatorType *ot) { /* identifiers */ ot->name= "Random..."; - ot->description= "Randomly select metaelements"; + ot->description= "Randomly select metaelements"; ot->idname= "MBALL_OT_select_random_metaelems"; /* callback functions */ @@ -352,7 +351,7 @@ void MBALL_OT_duplicate_metaelems(wmOperatorType *ot) { /* identifiers */ ot->name= "Duplicate"; - ot->description= "Delete selected metaelement(s)"; + ot->description= "Delete selected metaelement(s)"; ot->idname= "MBALL_OT_duplicate_metaelems"; /* callback functions */ @@ -398,7 +397,7 @@ void MBALL_OT_delete_metaelems(wmOperatorType *ot) { /* identifiers */ ot->name= "Delete"; - ot->description= "Delete selected metaelement(s)"; + ot->description= "Delete selected metaelement(s)"; ot->idname= "MBALL_OT_delete_metaelems"; /* callback functions */ @@ -448,7 +447,7 @@ void MBALL_OT_hide_metaelems(wmOperatorType *ot) { /* identifiers */ ot->name= "Hide"; - ot->description= "Hide (un)selected metaelement(s)"; + ot->description= "Hide (un)selected metaelement(s)"; ot->idname= "MBALL_OT_hide_metaelems"; /* callback functions */ @@ -489,7 +488,7 @@ void MBALL_OT_reveal_metaelems(wmOperatorType *ot) { /* identifiers */ ot->name= "Reveal"; - ot->description= "Reveal all hidden metaelements"; + ot->description= "Reveal all hidden metaelements"; ot->idname= "MBALL_OT_reveal_metaelems"; /* callback functions */ diff --git a/source/blender/editors/metaball/mball_ops.c b/source/blender/editors/metaball/mball_ops.c index 9b8cccbbfce..e8d2237d8a2 100644 --- a/source/blender/editors/metaball/mball_ops.c +++ b/source/blender/editors/metaball/mball_ops.c @@ -31,8 +31,6 @@ #include "RNA_access.h" -#include "DNA_listBase.h" -#include "DNA_windowmanager_types.h" #include "ED_screen.h" @@ -66,6 +64,7 @@ void ED_keymap_metaball(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "MBALL_OT_delete_metaelems", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "MBALL_OT_duplicate_metaelems", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "MBALL_OT_select_all", AKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/object/CMakeLists.txt b/source/blender/editors/object/CMakeLists.txt new file mode 100644 index 00000000000..e1085fd87ca --- /dev/null +++ b/source/blender/editors/object/CMakeLists.txt @@ -0,0 +1,48 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../bmesh + ../../gpu + ../../ikplugin + ../../imbuf + ../../makesdna + ../../makesrna + ../../python + ../../windowmanager + ../../render/extern/include + ../../../../intern/guardedalloc +) + +IF(NOT WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(NOT WITH_PYTHON) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_object "${SRC}" "${INC}") diff --git a/source/blender/editors/object/object_add.c b/source/blender/editors/object/object_add.c index 7620d503f49..5fa643200f4 100644 --- a/source/blender/editors/object/object_add.c +++ b/source/blender/editors/object/object_add.c @@ -30,7 +30,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" #include "DNA_group_types.h" #include "DNA_lamp_types.h" @@ -38,12 +37,8 @@ #include "DNA_mesh_types.h" #include "DNA_meta_types.h" #include "DNA_object_fluidsim.h" -#include "DNA_object_types.h" #include "DNA_object_force.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "DNA_vfont_types.h" #include "BLI_math.h" @@ -83,7 +78,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" #include "ED_mball.h" @@ -92,6 +86,7 @@ #include "ED_render.h" #include "ED_screen.h" #include "ED_transform.h" +#include "ED_view3d.h" #include "UI_interface.h" #include "UI_resources.h" @@ -104,20 +99,16 @@ void ED_object_location_from_view(bContext *C, float *loc) { View3D *v3d= CTX_wm_view3d(C); Scene *scene= CTX_data_scene(C); + float *cursor; - if (v3d) { - if (v3d->localvd) - copy_v3_v3(loc, v3d->cursor); - else - copy_v3_v3(loc, scene->cursor); - } else { - copy_v3_v3(loc, scene->cursor); - } + cursor = give_cursor(scene, v3d); + + copy_v3_v3(loc, cursor); } void ED_object_rotation_from_view(bContext *C, float *rot) { - RegionView3D *rv3d = CTX_wm_region_view3d(C); + RegionView3D *rv3d= ED_view3d_context_rv3d(C); if(rv3d) { rv3d->viewquat[0]= -rv3d->viewquat[0]; @@ -146,9 +137,8 @@ void ED_object_base_init_transform(bContext *C, Base *base, float *loc, float *r /* uses context to figure out transform for primitive */ /* returns standard diameter */ -float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float primmat[][4]) +float ED_object_new_primitive_matrix(bContext *C, Object *obedit, float *loc, float *rot, float primmat[][4]) { - Object *obedit= CTX_data_edit_object(C); View3D *v3d =CTX_wm_view3d(C); float mat[3][3], rmat[3][3], cmat[3][3], imat[3][3]; @@ -164,8 +154,8 @@ float ED_object_new_primitive_matrix(bContext *C, float *loc, float *rot, float copy_m4_m3(primmat, imat); /* center */ - VECCOPY(primmat[3], loc); - VECSUB(primmat[3], primmat[3], obedit->obmat[3]); + copy_v3_v3(primmat[3], loc); + sub_v3_v3v3(primmat[3], primmat[3], obedit->obmat[3]); invert_m3_m3(imat, mat); mul_m3_v3(imat, primmat[3]); @@ -185,13 +175,15 @@ void ED_object_add_generic_props(wmOperatorType *ot, int do_editmode) PropertyRNA *prop; RNA_def_boolean(ot->srna, "view_align", 0, "Align to View", "Align the new object to the view."); - if(do_editmode) - RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object."); + if(do_editmode) { + prop= RNA_def_boolean(ot->srna, "enter_editmode", 0, "Enter Editmode", "Enter editmode when adding this object."); + RNA_def_property_flag(prop, PROP_HIDDEN); + } RNA_def_float_vector(ot->srna, "location", 3, NULL, -FLT_MAX, FLT_MAX, "Location", "Location for the newly added object.", -FLT_MAX, FLT_MAX); RNA_def_float_rotation(ot->srna, "rotation", 3, NULL, -FLT_MAX, FLT_MAX, "Rotation", "Rotation for the newly added object", -FLT_MAX, FLT_MAX); - prop = RNA_def_boolean_layer_member(ot->srna, "layer", 32, NULL, "Layer", ""); + prop = RNA_def_boolean_layer_member(ot->srna, "layer", 20, NULL, "Layer", ""); RNA_def_property_flag(prop, PROP_HIDDEN); } @@ -201,47 +193,28 @@ static void object_add_generic_invoke_options(bContext *C, wmOperator *op) if (!RNA_property_is_set(op->ptr, "enter_editmode")) RNA_boolean_set(op->ptr, "enter_editmode", U.flag & USER_ADD_EDITMODE); - if (!RNA_property_is_set(op->ptr, "location")) { + if(!RNA_property_is_set(op->ptr, "location")) { float loc[3]; ED_object_location_from_view(C, loc); RNA_float_set_array(op->ptr, "location", loc); } - - if (!RNA_property_is_set(op->ptr, "rotation")) { - int view_align; - float rot[3] = {0.f, 0.f, 0.f}; - - /* view align property is just used to set rotation property */ - if (!RNA_property_is_set(op->ptr, "view_align")) - view_align = U.flag & USER_ADD_VIEWALIGNED; - else - view_align = RNA_boolean_get(op->ptr, "view_align"); - - if (view_align) - ED_object_rotation_from_view(C, rot); - - RNA_float_set_array(op->ptr, "rotation", rot); - } - - if (!RNA_property_is_set(op->ptr, "layer")) { + + if(!RNA_property_is_set(op->ptr, "layer")) { View3D *v3d = CTX_wm_view3d(C); Scene *scene = CTX_data_scene(C); - int a, values[32], layer; + int a, values[20], layer; - if (v3d) { - if (v3d->localvd) { - layer = v3d->layact + v3d->lay; - for(a=0; a<32; a++) - values[a]= (layer & (1<<a)); - } else { - layer = v3d->layact; - for(a=0; a<32; a++) - values[a]= (layer & (1<<a)); - } - } else { - layer = scene->lay; - for(a=0; a<32; a++) + if(v3d) { + layer = (v3d->scenelock && !v3d->localvd)? scene->layact: v3d->layact; + + for(a=0; a<20; a++) + values[a]= (layer & (1<<a)); + } + else { + layer = scene->layact; + + for(a=0; a<20; a++) values[a]= (layer & (1<<a)); } @@ -255,24 +228,57 @@ int ED_object_add_generic_invoke(bContext *C, wmOperator *op, wmEvent *event) return op->type->exec(C, op); } -void ED_object_add_generic_get_opts(wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) +int ED_object_add_generic_get_opts(bContext *C, wmOperator *op, float *loc, float *rot, int *enter_editmode, unsigned int *layer) { - int a, layer_values[32]; + View3D *v3d = CTX_wm_view3d(C); + int a, layer_values[20]; + int view_align; *enter_editmode = FALSE; if(RNA_struct_find_property(op->ptr, "enter_editmode") && RNA_boolean_get(op->ptr, "enter_editmode")) { *enter_editmode = TRUE; } + + if(RNA_property_is_set(op->ptr, "layer")) { + RNA_boolean_get_array(op->ptr, "layer", layer_values); + + for(a=0; a<20; a++) { + if(layer_values[a]) + *layer |= (1 << a); + else + *layer &= ~(1 << a); + } + } + else { + /* not set, use the scenes layers */ + Scene *scene = CTX_data_scene(C); + *layer = scene->layact; + } + + /* in local view we additionally add local view layers, + not part of operator properties */ + if(v3d && v3d->localvd) + *layer |= v3d->lay; + + if (RNA_property_is_set(op->ptr, "view_align")) + view_align = RNA_boolean_get(op->ptr, "view_align"); + else + view_align = U.flag & USER_ADD_VIEWALIGNED; + + if (view_align) + ED_object_rotation_from_view(C, rot); + else + RNA_float_get_array(op->ptr, "rotation", rot); + RNA_float_get_array(op->ptr, "location", loc); - RNA_float_get_array(op->ptr, "rotation", rot); - RNA_boolean_get_array(op->ptr, "layer", layer_values); - - for(a=0; a<32; a++) - if(layer_values[a]) - *layer |= (1 << a); - else - *layer &= ~(1 << a); + + if(*layer == 0) { + BKE_report(op->reports, RPT_ERROR, "Property 'layer' has no values set"); + return 0; + } + + return 1; } /* for object add primitive operators */ @@ -310,7 +316,9 @@ static int object_add_exec(bContext *C, wmOperator *op) unsigned int layer; float loc[3], rot[3]; - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; + ED_object_add_type(C, RNA_enum_get(op->ptr, "type"), loc, rot, enter_editmode, layer); return OPERATOR_FINISHED; @@ -369,7 +377,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) float mat[4][4]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return NULL; if(type==PFIELD_GUIDE) { ob= ED_object_add_type(C, OB_CURVE, loc, rot, FALSE, layer); @@ -377,7 +387,7 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) ((Curve*)ob->data)->flag |= CU_PATH|CU_3D; ED_object_enter_editmode(C, 0); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, ob, loc, rot, mat); BLI_addtail(curve_get_editcurve(ob), add_nurbs_primitive(C, mat, CU_NURBS|CU_PRIM_PATH, 1)); if(!enter_editmode) @@ -403,8 +413,9 @@ static Object *effector_add_type(bContext *C, wmOperator *op, int type) /* for object add operator */ static int effector_add_exec(bContext *C, wmOperator *op) { - effector_add_type(C, op, RNA_int_get(op->ptr, "type")); - + if(effector_add_type(C, op, RNA_int_get(op->ptr, "type")) == NULL) + return OPERATOR_CANCELLED; + return OPERATOR_FINISHED; } @@ -444,7 +455,9 @@ static int object_camera_add_exec(bContext *C, wmOperator *op) RNA_boolean_set(op->ptr, "view_align", 1); object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_CAMERA, loc, rot, FALSE, layer); @@ -479,160 +492,6 @@ void OBJECT_OT_camera_add(wmOperatorType *ot) /* ***************** add primitives *************** */ -static EnumPropertyItem prop_curve_types[] = { - {CU_BEZIER|CU_PRIM_CURVE, "BEZIER_CURVE", ICON_CURVE_BEZCURVE, "Bezier Curve", ""}, - {CU_BEZIER|CU_PRIM_CIRCLE, "BEZIER_CIRCLE", ICON_CURVE_BEZCIRCLE, "Bezier Circle", ""}, - {CU_NURBS|CU_PRIM_CURVE, "NURBS_CURVE", ICON_CURVE_NCURVE, "NURBS Curve", ""}, - {CU_NURBS|CU_PRIM_CIRCLE, "NURBS_CIRCLE", ICON_CURVE_NCIRCLE, "NURBS Circle", ""}, - {CU_NURBS|CU_PRIM_PATH, "PATH", ICON_CURVE_PATH, "Path", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int object_add_curve_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb; - Nurb *nu; - int newob= 0, type= RNA_enum_get(op->ptr, "type"); - int enter_editmode; - unsigned int layer; - float loc[3], rot[3]; - float mat[4][4]; - - object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - - if(obedit==NULL || obedit->type!=OB_CURVE) { - obedit= ED_object_add_type(C, OB_CURVE, loc, rot, TRUE, layer); - newob = 1; - - if(type & CU_PRIM_PATH) - ((Curve*)obedit->data)->flag |= CU_PATH|CU_3D; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - ED_object_new_primitive_matrix(C, loc, rot, mat); - - nu= add_nurbs_primitive(C, mat, type, newob); - editnurb= curve_get_editcurve(obedit); - BLI_addtail(editnurb, nu); - - /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA); - } - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - - return OPERATOR_FINISHED; -} - -static int object_add_curve_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - Object *obedit= CTX_data_edit_object(C); - uiPopupMenu *pup; - uiLayout *layout; - - object_add_generic_invoke_options(C, op); - - pup= uiPupMenuBegin(C, op->type->name, 0); - layout= uiPupMenuLayout(pup); - if(!obedit || obedit->type == OB_CURVE) - uiItemsEnumO(layout, op->type->idname, "type"); - else - uiItemsEnumO(layout, "OBJECT_OT_surface_add", "type"); - uiPupMenuEnd(C, pup); - - return OPERATOR_CANCELLED; -} - -void OBJECT_OT_curve_add(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Add Curve"; - ot->description = "Add a curve object to the scene"; - ot->idname= "OBJECT_OT_curve_add"; - - /* api callbacks */ - ot->invoke= object_add_curve_invoke; - ot->exec= object_add_curve_exec; - - ot->poll= ED_operator_scene_editable; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - RNA_def_enum(ot->srna, "type", prop_curve_types, 0, "Primitive", ""); - - ED_object_add_generic_props(ot, TRUE); -} - -static EnumPropertyItem prop_surface_types[]= { - {CU_PRIM_CURVE|CU_NURBS, "NURBS_CURVE", ICON_SURFACE_NCURVE, "NURBS Curve", ""}, - {CU_PRIM_CIRCLE|CU_NURBS, "NURBS_CIRCLE", ICON_SURFACE_NCIRCLE, "NURBS Circle", ""}, - {CU_PRIM_PATCH|CU_NURBS, "NURBS_SURFACE", ICON_SURFACE_NSURFACE, "NURBS Surface", ""}, - {CU_PRIM_TUBE|CU_NURBS, "NURBS_TUBE", ICON_SURFACE_NTUBE, "NURBS Tube", ""}, - {CU_PRIM_SPHERE|CU_NURBS, "NURBS_SPHERE", ICON_SURFACE_NSPHERE, "NURBS Sphere", ""}, - {CU_PRIM_DONUT|CU_NURBS, "NURBS_DONUT", ICON_SURFACE_NDONUT, "NURBS Donut", ""}, - {0, NULL, 0, NULL, NULL} -}; - -static int object_add_surface_exec(bContext *C, wmOperator *op) -{ - Object *obedit= CTX_data_edit_object(C); - ListBase *editnurb; - Nurb *nu; - int newob= 0; - int enter_editmode; - unsigned int layer; - float loc[3], rot[3]; - float mat[4][4]; - - object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); - - if(obedit==NULL || obedit->type!=OB_SURF) { - obedit= ED_object_add_type(C, OB_SURF, loc, rot, TRUE, layer); - newob = 1; - } - else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - - ED_object_new_primitive_matrix(C, loc, rot, mat); - - nu= add_nurbs_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); - editnurb= curve_get_editcurve(obedit); - BLI_addtail(editnurb, nu); - - /* userdef */ - if (newob && !enter_editmode) { - ED_object_exit_editmode(C, EM_FREEDATA); - } - - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, obedit); - - return OPERATOR_FINISHED; -} - -void OBJECT_OT_surface_add(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Add Surface"; - ot->description = "Add a surface object to the scene"; - ot->idname= "OBJECT_OT_surface_add"; - - /* api callbacks */ - ot->invoke= WM_menu_invoke; - ot->exec= object_add_surface_exec; - - ot->poll= ED_operator_scene_editable; - - /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - - ot->prop= RNA_def_enum(ot->srna, "type", prop_surface_types, 0, "Primitive", ""); - ED_object_add_generic_props(ot, TRUE); -} - static EnumPropertyItem prop_metaball_types[]= { {MB_BALL, "MBALL_BALL", ICON_META_BALL, "Meta Ball", ""}, {MB_TUBE, "MBALL_TUBE", ICON_META_TUBE, "Meta Tube", ""}, @@ -654,7 +513,9 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) float mat[4][4]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit==NULL || obedit->type!=OB_MBALL) { obedit= ED_object_add_type(C, OB_MBALL, loc, rot, TRUE, layer); @@ -662,7 +523,7 @@ static int object_metaball_add_exec(bContext *C, wmOperator *op) } else DAG_id_flush_update(&obedit->id, OB_RECALC_DATA); - ED_object_new_primitive_matrix(C, loc, rot, mat); + ED_object_new_primitive_matrix(C, obedit, loc, rot, mat); elem= (MetaElem*)add_metaball_primitive(C, mat, RNA_enum_get(op->ptr, "type"), newob); mball= (MetaBall*)obedit->data; @@ -724,7 +585,8 @@ static int object_add_text_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(obedit && obedit->type==OB_FONT) return OPERATOR_CANCELLED; @@ -764,7 +626,8 @@ static int object_armature_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); // XXX these props don't get set right when only exec() is called - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if ((obedit==NULL) || (obedit->type != OB_ARMATURE)) { obedit= ED_object_add_type(C, OB_ARMATURE, loc, rot, TRUE, layer); @@ -810,6 +673,19 @@ void OBJECT_OT_armature_add(wmOperatorType *ot) ED_object_add_generic_props(ot, TRUE); } +static char *get_lamp_defname(int type) +{ + switch (type) { + case LA_LOCAL: return "Point"; + case LA_SUN: return "Sun"; + case LA_SPOT: return "Spot"; + case LA_HEMI: return "Hemi"; + case LA_AREA: return "Area"; + default: + return "Lamp"; + } +} + static int object_lamp_add_exec(bContext *C, wmOperator *op) { Object *ob; @@ -819,12 +695,16 @@ static int object_lamp_add_exec(bContext *C, wmOperator *op) float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; ob= ED_object_add_type(C, OB_LAMP, loc, rot, FALSE, layer); if(ob && ob->data) ((Lamp*)ob->data)->type= type; + rename_id((ID *)ob, get_lamp_defname(type)); + rename_id((ID *)ob->data, get_lamp_defname(type)); + return OPERATOR_FINISHED; } @@ -859,22 +739,22 @@ void OBJECT_OT_lamp_add(wmOperatorType *ot) static int group_instance_add_exec(bContext *C, wmOperator *op) { - Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "type")); + Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); int enter_editmode; unsigned int layer; float loc[3], rot[3]; object_add_generic_invoke_options(C, op); - ED_object_add_generic_get_opts(op, loc, rot, &enter_editmode, &layer); + if(!ED_object_add_generic_get_opts(C, op, loc, rot, &enter_editmode, &layer)) + return OPERATOR_CANCELLED; if(group) { Object *ob= ED_object_add_type(C, OB_EMPTY, loc, rot, FALSE, layer); rename_id(&ob->id, group->id.name+2); ob->dup_group= group; ob->transflag |= OB_DUPLIGROUP; - id_us_plus(&group->id); - + id_lib_extern(&group->id); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); @@ -904,7 +784,7 @@ void OBJECT_OT_group_instance_add(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); RNA_def_enum_funcs(prop, RNA_group_itemf); ot->prop= prop; ED_object_add_generic_props(ot, FALSE); @@ -933,14 +813,13 @@ static int object_delete_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_bases) { if(base->object->type==OB_LAMP) islamp= 1; - /* remove from current scene only */ ED_base_object_free_and_unlink(scene, base); } CTX_DATA_END; if(islamp) reshadeall_displist(scene); /* only frees displist */ - + DAG_scene_sort(scene); DAG_ids_flush_update(0); @@ -968,7 +847,7 @@ void OBJECT_OT_delete(wmOperatorType *ot) /**************************** Copy Utilities ******************************/ static void copy_object__forwardModifierLinks(void *userData, Object *ob, - ID **idpoin) + ID **idpoin) { /* this is copied from ID_NEW; it might be better to have a macro */ if(*idpoin && (*idpoin)->newid) *idpoin = (*idpoin)->newid; @@ -979,10 +858,6 @@ static void copy_object_set_idnew(bContext *C, int dupflag) { Material *ma, *mao; ID *id; -#if 0 // XXX old animation system - Ipo *ipo; - bActionStrip *strip; -#endif // XXX old animation system int a; /* XXX check object pointers */ @@ -996,17 +871,8 @@ static void copy_object_set_idnew(bContext *C, int dupflag) } modifiers_foreachIDLink(ob, copy_object__forwardModifierLinks, NULL); ID_NEW(ob->parent); - ID_NEW(ob->track); ID_NEW(ob->proxy); ID_NEW(ob->proxy_group); - -#if 0 // XXX old animation system - for(strip= ob->nlastrips.first; strip; strip= strip->next) { - bActionModifier *amod; - for(amod= strip->modifiers.first; amod; amod= amod->next) - ID_NEW(amod->ob); - } -#endif // XXX old animation system } CTX_DATA_END; @@ -1118,7 +984,7 @@ static void make_object_duplilist_real(bContext *C, Scene *scene, Base *base) ob->lay= base->lay; copy_m4_m4(ob->obmat, dob->mat); - ED_object_apply_obmat(ob); + object_apply_mat4(ob, ob->obmat); } copy_object_set_idnew(C, 0); @@ -1142,6 +1008,7 @@ static int object_duplicates_make_real_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_ids_flush_update(0); WM_event_add_notifier(C, NC_SCENE, scene); + WM_main_add_notifier(NC_OBJECT|ND_DRAW, NULL); return OPERATOR_FINISHED; } @@ -1167,7 +1034,7 @@ void OBJECT_OT_duplicates_make_real(wmOperatorType *ot) static EnumPropertyItem convert_target_items[]= { {OB_CURVE, "CURVE", ICON_OUTLINER_OB_CURVE, "Curve from Mesh/Text", ""}, - {OB_MESH, "MESH", ICON_OUTLINER_OB_MESH, "Mesh from Curve/Meta/Surf/Mesh", ""}, + {OB_MESH, "MESH", ICON_OUTLINER_OB_MESH, "Mesh from Curve/Meta/Surf/Text", ""}, {0, NULL, 0, NULL, NULL}}; static void curvetomesh(Scene *scene, Object *ob) @@ -1191,11 +1058,36 @@ static int convert_poll(bContext *C) return (!scene->id.lib && obact && scene->obedit != obact && (obact->flag & SELECT) && !(obact->id.lib)); } +/* Helper for convert_exec */ +static Base *duplibase_for_convert(Scene *scene, Base *base, Object *ob) +{ + Object *obn; + Base *basen; + + if (ob == NULL) { + ob= base->object; + } + + obn= copy_object(ob); + obn->recalc |= OB_RECALC_ALL; + + basen= MEM_mallocN(sizeof(Base), "duplibase"); + *basen= *base; + BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ + basen->object= obn; + basen->flag |= SELECT; + obn->flag |= SELECT; + base->flag &= ~SELECT; + ob->flag &= ~SELECT; + + return basen; +} + static int convert_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Base *basen=NULL, *basact=NULL, *basedel=NULL; - Object *ob, *ob1, *obact= CTX_data_active_object(C); + Object *ob, *ob1, *newob, *obact= CTX_data_active_object(C); DerivedMesh *dm; Curve *cu; Nurb *nu; @@ -1203,8 +1095,8 @@ static int convert_exec(bContext *C, wmOperator *op) Mesh *me; int target= RNA_enum_get(op->ptr, "target"); int keep_original= RNA_boolean_get(op->ptr, "keep_original"); - int a; - + int a, mballConverted= 0; + /* don't forget multiple users! */ /* reset flags */ @@ -1216,67 +1108,87 @@ static int convert_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Base*, base, selected_editable_bases) { ob= base->object; - - if(ob->flag & OB_DONE) - continue; + + if(ob->flag & OB_DONE) { + if (ob->type != target) { + base->flag &= ~SELECT; + ob->flag &= ~SELECT; + } + } else if (ob->type==OB_MESH && target == OB_CURVE) { ob->flag |= OB_DONE; - ob1= copy_object(ob); - ob1->recalc |= OB_RECALC; + if (keep_original) { + basen= duplibase_for_convert(scene, base, NULL); + newob= basen->object; - basen= MEM_mallocN(sizeof(Base), "duplibase"); - *basen= *base; - BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ - basen->object= ob1; - basen->flag |= SELECT; - base->flag &= ~SELECT; - ob->flag &= ~SELECT; + /* decrement original mesh's usage count */ + me= newob->data; + me->id.us--; - mesh_to_curve(scene, ob1); + /* make a new copy of the mesh */ + newob->data= copy_mesh(me); + } else { + newob = ob; + } - if(ob1->type==OB_CURVE) - object_free_modifiers(ob1); /* after derivedmesh calls! */ + mesh_to_curve(scene, newob); + + if(newob->type==OB_CURVE) + object_free_modifiers(newob); /* after derivedmesh calls! */ } else if(ob->type==OB_MESH && ob->modifiers.first) { /* converting a mesh with no modifiers causes a segfault */ ob->flag |= OB_DONE; - basedel = base; - ob1= copy_object(ob); - ob1->recalc |= OB_RECALC; + if (keep_original) { + basen= duplibase_for_convert(scene, base, NULL); + newob= basen->object; - basen= MEM_mallocN(sizeof(Base), "duplibase"); - *basen= *base; - BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ - basen->object= ob1; - basen->flag |= SELECT; - base->flag &= ~SELECT; - ob->flag &= ~SELECT; - - /* decrement original mesh's usage count */ - me= ob1->data; - me->id.us--; + /* decrement original mesh's usage count */ + me= newob->data; + me->id.us--; - /* make a new copy of the mesh */ - ob1->data= copy_mesh(me); + /* make a new copy of the mesh */ + newob->data= copy_mesh(me); + } else { + newob = ob; + ob->recalc |= OB_RECALC_ALL; + } /* make new mesh data from the original copy */ /* note: get the mesh from the original, not from the copy in some * cases this doesnt give correct results (when MDEF is used for eg) */ - dm= mesh_get_derived_final(scene, ob, CD_MASK_MESH); + dm= mesh_get_derived_final(scene, newob, CD_MASK_MESH); /* dm= mesh_create_derived_no_deform(ob1, NULL); this was called original (instead of get_derived). man o man why! (ton) */ - DM_to_mesh(dm, ob1->data); + DM_to_mesh(dm, newob->data); dm->release(dm); - object_free_modifiers(ob1); /* after derivedmesh calls! */ + object_free_modifiers(newob); /* after derivedmesh calls! */ } else if(ob->type==OB_FONT) { ob->flag |= OB_DONE; - ob->type= OB_CURVE; - cu= ob->data; + if (keep_original) { + basen= duplibase_for_convert(scene, base, NULL); + newob= basen->object; + + /* decrement original curve's usage count */ + ((Curve *)newob->data)->id.us--; + + /* make a new copy of the curve */ + newob->data= copy_curve(ob->data); + } else { + newob= ob; + } + + cu= newob->data; + + if (!cu->disp.first) + makeDispListCurveTypes(scene, newob, 0); + + newob->type= OB_CURVE; if(cu->vfont) { cu->vfont->id.us--; @@ -1293,13 +1205,16 @@ static int convert_exec(bContext *C, wmOperator *op) if(cu->vfontbi) { cu->vfontbi->id.us--; cu->vfontbi= 0; - } - /* other users */ - if(cu->id.us>1) { - for(ob1= G.main->object.first; ob1; ob1=ob1->id.next) { - if(ob1->data==cu) { - ob1->type= OB_CURVE; - ob1->recalc |= OB_RECALC; + } + + if (!keep_original) { + /* other users */ + if(cu->id.us>1) { + for(ob1= G.main->object.first; ob1; ob1=ob1->id.next) { + if(ob1->data==ob->data) { + ob1->type= OB_CURVE; + ob1->recalc |= OB_RECALC_ALL; + } } } } @@ -1308,46 +1223,76 @@ static int convert_exec(bContext *C, wmOperator *op) nu->charidx= 0; if(target == OB_MESH) - curvetomesh(scene, ob); + curvetomesh(scene, newob); } else if(ELEM(ob->type, OB_CURVE, OB_SURF)) { ob->flag |= OB_DONE; - if(target == OB_MESH) - curvetomesh(scene, ob); + if(target == OB_MESH) { + if (keep_original) { + basen= duplibase_for_convert(scene, base, NULL); + newob= basen->object; + + /* decrement original curve's usage count */ + ((Curve *)newob->data)->id.us--; + + /* make a new copy of the curve */ + newob->data= copy_curve(ob->data); + } else { + newob= ob; + } + + curvetomesh(scene, newob); + } } else if(ob->type==OB_MBALL) { - ob= find_basis_mball(scene, ob); - - if(ob->disp.first && !(ob->flag & OB_DONE)) { + Object *baseob; + + if (target != OB_MESH) { ob->flag |= OB_DONE; - basedel = base; + continue; + } - ob1= copy_object(ob); - ob1->recalc |= OB_RECALC; + base->flag &= ~SELECT; + ob->flag &= ~SELECT; - basen= MEM_mallocN(sizeof(Base), "duplibase"); - *basen= *base; - BLI_addhead(&scene->base, basen); /* addhead: otherwise eternal loop */ - basen->object= ob1; - basen->flag |= SELECT; - basedel->flag &= ~SELECT; - ob->flag &= ~SELECT; - - mb= ob1->data; + baseob= find_basis_mball(scene, ob); + + if (ob != baseob) { + /* if motherball is converting it would be marked as done later */ + ob->flag |= OB_DONE; + } + + if (!baseob->disp.first) { + makeDispListMBall(scene, baseob); + } + + if(!(baseob->flag & OB_DONE)) { + baseob->flag |= OB_DONE; + + basen= duplibase_for_convert(scene, base, baseob); + newob= basen->object; + + mb= newob->data; mb->id.us--; - - ob1->data= add_mesh("Mesh"); - ob1->type= OB_MESH; - - me= ob1->data; + + newob->data= add_mesh("Mesh"); + newob->type= OB_MESH; + + me= newob->data; me->totcol= mb->totcol; - if(ob1->totcol) { + if(newob->totcol) { me->mat= MEM_dupallocN(mb->mat); - for(a=0; a<ob1->totcol; a++) id_us_plus((ID *)me->mat[a]); + for(a=0; a<newob->totcol; a++) id_us_plus((ID *)me->mat[a]); } - - mball_to_mesh(&ob->disp, ob1->data); + + mball_to_mesh(&baseob->disp, newob->data); + + if (obact->type == OB_MBALL) { + basact= basen; + } + + mballConverted= 1; } else continue; @@ -1358,8 +1303,6 @@ static int convert_exec(bContext *C, wmOperator *op) /* If the original object is active then make this object active */ if(basen) { if(ob == obact) { - ED_base_object_activate(C, basen); - /* store new active base to update BASACT */ basact= basen; } @@ -1367,6 +1310,10 @@ static int convert_exec(bContext *C, wmOperator *op) basen= NULL; } + if (!keep_original) { + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + } + /* delete original if needed */ if(basedel) { if(!keep_original) @@ -1376,24 +1323,39 @@ static int convert_exec(bContext *C, wmOperator *op) } } CTX_DATA_END; - - /* delete object should renew depsgraph */ - if(!keep_original) + + if(!keep_original) { + if (mballConverted) { + Base *base= scene->base.first, *tmpbase; + while (base) { + ob= base->object; + tmpbase= base; + base= base->next; + + if (ob->type == OB_MBALL) { + ED_base_object_free_and_unlink(scene, tmpbase); + } + } + } + + /* delete object should renew depsgraph */ DAG_scene_sort(scene); + } // XXX ED_object_enter_editmode(C, 0); // XXX exit_editmode(C, EM_FREEDATA|EM_WAITCURSOR); /* freedata, but no undo */ if (basact) { /* active base was changed */ + ED_base_object_activate(C, basact); BASACT= basact; + } else if (BASACT->object->flag & OB_DONE) { + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER|ND_DATA, BASACT->object); } DAG_scene_sort(scene); WM_event_add_notifier(C, NC_SCENE|NC_OBJECT|ND_DRAW, scene); /* is NC_SCENE needed ? */ - - return OPERATOR_FINISHED; } @@ -1442,7 +1404,7 @@ static Base *object_add_duplicate_internal(Scene *scene, Base *base, int dupflag } else { obn= copy_object(ob); - obn->recalc |= OB_RECALC; + obn->recalc |= OB_RECALC_ALL; basen= MEM_mallocN(sizeof(Base), "duplibase"); *basen= *base; @@ -1637,13 +1599,17 @@ Base *ED_object_add_duplicate(Scene *scene, Base *base, int dupflag) clear_id_newpoins(); clear_sca_new_poins(); /* sensor/contr/act */ - + basen= object_add_duplicate_internal(scene, base, dupflag); + if (basen == NULL) { + return NULL; + } + ob= basen->object; - + DAG_scene_sort(scene); ED_render_id_flush_update(G.main, ob->data); - + return basen; } @@ -1664,6 +1630,10 @@ static int duplicate_exec(bContext *C, wmOperator *op) the list is made in advance */ ED_base_object_select(base, BA_DESELECT); + if (basen == NULL) { + continue; + } + /* new object becomes active */ if(BASACT==base) ED_base_object_activate(C, basen); @@ -1684,6 +1654,8 @@ static int duplicate_exec(bContext *C, wmOperator *op) void OBJECT_OT_duplicate(wmOperatorType *ot) { + PropertyRNA *prop; + /* identifiers */ ot->name= "Duplicate"; ot->description = "Duplicate selected objects"; @@ -1698,7 +1670,8 @@ void OBJECT_OT_duplicate(wmOperatorType *ot) /* to give to transform */ RNA_def_boolean(ot->srna, "linked", 0, "Linked", "Duplicate object but not object data, linking to the original data."); - RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); + prop= RNA_def_int(ot->srna, "mode", TFM_TRANSLATION, 0, INT_MAX, "Mode", "", 0, INT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN); } /* **************** add named object, for dragdrop ************* */ @@ -1726,36 +1699,42 @@ static int add_named_exec(bContext *C, wmOperator *op) int linked= RNA_boolean_get(op->ptr, "linked"); int dupflag= (linked)? 0: U.dupflag; char name[32]; - + /* find object, create fake base */ RNA_string_get(op->ptr, "name", name); ob= (Object *)find_id("OB", name); if(ob==NULL) return OPERATOR_CANCELLED; - + base= MEM_callocN(sizeof(Base), "duplibase"); base->object= ob; base->flag= ob->flag; - + /* prepare dupli */ clear_id_newpoins(); clear_sca_new_poins(); /* sensor/contr/act */ - + basen= object_add_duplicate_internal(scene, base, dupflag); + + if (basen == NULL) { + MEM_freeN(base); + return OPERATOR_CANCELLED; + } + basen->lay= basen->object->lay= scene->lay; - + ED_object_location_from_view(C, basen->object->loc); ED_base_object_activate(C, basen); - + copy_object_set_idnew(C, dupflag); - + DAG_scene_sort(scene); DAG_ids_flush_update(0); - + MEM_freeN(base); - + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); - + return OPERATOR_FINISHED; } diff --git a/source/blender/editors/object/object_bake.c b/source/blender/editors/object/object_bake.c index a4f419cf996..9f9d41147b6 100644 --- a/source/blender/editors/object/object_bake.c +++ b/source/blender/editors/object/object_bake.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -35,7 +35,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_image_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" @@ -103,7 +102,8 @@ typedef struct BakeRender { short *stop; short *do_update; - + float *progress; + ListBase threads; /* backup */ @@ -141,7 +141,7 @@ static void init_bake_internal(BakeRender *bkr, bContext *C) bkr->sa= biggest_image_area(CTX_wm_screen(C)); /* can be NULL */ bkr->scene= scene; bkr->actob= (scene->r.bake_flag & R_BAKE_TO_ACTIVE) ? OBACT : NULL; - bkr->re= RE_NewRender("_Bake View_", RE_SLOT_DEFAULT); + bkr->re= RE_NewRender("_Bake View_"); if(scene->r.bake_mode==RE_BAKE_AO) { /* If raytracing or AO is disabled, switch it on temporarily for baking. */ @@ -186,27 +186,28 @@ static void *do_bake_render(void *bake_v) { BakeRender *bkr= bake_v; - bkr->tot= RE_bake_shade_all_selected(bkr->re, bkr->scene->r.bake_mode, bkr->actob, NULL); + bkr->tot= RE_bake_shade_all_selected(bkr->re, bkr->scene->r.bake_mode, bkr->actob, NULL, bkr->progress); bkr->ready= 1; return NULL; } -static void bake_startjob(void *bkv, short *stop, short *do_update) +static void bake_startjob(void *bkv, short *stop, short *do_update, float *progress) { BakeRender *bkr= bkv; Scene *scene= bkr->scene; bkr->stop= stop; bkr->do_update= do_update; + bkr->progress= progress; RE_test_break_cb(bkr->re, NULL, thread_break); G.afbreek= 0; /* blender_test_break uses this global */ - RE_Database_Baking(bkr->re, scene, scene->r.bake_mode, bkr->actob); + RE_Database_Baking(bkr->re, scene, scene->lay, scene->r.bake_mode, bkr->actob); /* baking itself is threaded, cannot use test_break in threads. we also update optional imagewindow */ - bkr->tot= RE_bake_shade_all_selected(bkr->re, scene->r.bake_mode, bkr->actob, bkr->do_update); + bkr->tot= RE_bake_shade_all_selected(bkr->re, scene->r.bake_mode, bkr->actob, bkr->do_update, bkr->progress); } static void bake_update(void *bkv) @@ -261,10 +262,10 @@ static int objects_bake_render_invoke(bContext *C, wmOperator *op, wmEvent *_eve bkr->reports= op->reports; /* setup job */ - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY); + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Texture Bake", WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY|WM_JOB_PROGRESS); WM_jobs_customdata(steve, bkr, bake_freejob); WM_jobs_timer(steve, 0.2, NC_IMAGE, 0); /* TODO - only draw bake image, can we enforce this */ - WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update); + WM_jobs_callbacks(steve, bake_startjob, NULL, bake_update, NULL); G.afbreek= 0; @@ -301,7 +302,7 @@ static int bake_image_exec(bContext *C, wmOperator *op) RE_test_break_cb(bkr.re, NULL, thread_break); G.afbreek= 0; /* blender_test_break uses this global */ - RE_Database_Baking(bkr.re, scene, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE)? OBACT: NULL); + RE_Database_Baking(bkr.re, scene, scene->lay, scene->r.bake_mode, (scene->r.bake_flag & R_BAKE_TO_ACTIVE)? OBACT: NULL); /* baking itself is threaded, cannot use test_break in threads */ BLI_init_threads(&threads, do_bake_render, 1); diff --git a/source/blender/editors/object/object_constraint.c b/source/blender/editors/object/object_constraint.c index 2b880f17e90..8d48b76fb51 100644 --- a/source/blender/editors/object/object_constraint.c +++ b/source/blender/editors/object/object_constraint.c @@ -36,15 +36,10 @@ #include "BLI_math.h" #include "BLI_dynstr.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" #include "DNA_constraint_types.h" #include "DNA_curve_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "DNA_text_types.h" -#include "DNA_view3d_types.h" #include "BKE_action.h" #include "BKE_armature.h" @@ -68,7 +63,6 @@ #include "RNA_access.h" #include "RNA_define.h" #include "RNA_enum_types.h" -#include "RNA_types.h" #include "ED_object.h" #include "ED_screen.h" @@ -139,6 +133,7 @@ bConstraint *get_active_constraint (Object *ob) { return constraints_get_active(get_active_constraints(ob)); } + /* -------------- Constraint Management (Add New, Remove, Rename) -------------------- */ /* ------------- PyConstraints ------------------ */ @@ -204,9 +199,9 @@ char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) /* this callback gets called when the 'refresh' button of a pyconstraint gets pressed */ void update_pyconstraint_cb (void *arg1, void *arg2) { +#ifndef DISABLE_PYTHON Object *owner= (Object *)arg1; bConstraint *con= (bConstraint *)arg2; -#ifndef DISABLE_PYTHON if (owner && con) BPY_pyconstraint_update(owner, con); #endif @@ -328,6 +323,23 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) /* targets have already been checked for this */ continue; } + else if (curcon->type == CONSTRAINT_TYPE_PIVOT) { + bPivotConstraint *data = curcon->data; + + /* target doesn't have to exist, but if it is non-null, it must exist! */ + if (data->tar && exist_object(data->tar)==0) { + data->tar = NULL; + curcon->flag |= CONSTRAINT_DISABLE; + } + else if (data->tar == owner) { + if (!get_named_bone(get_armature(owner), data->subtarget)) { + curcon->flag |= CONSTRAINT_DISABLE; + } + } + + /* targets have already been checked for this */ + continue; + } else if (curcon->type == CONSTRAINT_TYPE_ACTION) { bActionConstraint *data = curcon->data; @@ -424,40 +436,139 @@ static void test_constraints (Object *owner, bPoseChannel *pchan) void object_test_constraints (Object *owner) { - if(owner->constraints.first) + if (owner->constraints.first) test_constraints(owner, NULL); - + if (owner->type==OB_ARMATURE && owner->pose) { bPoseChannel *pchan; - - for (pchan= owner->pose->chanbase.first; pchan; pchan= pchan->next) - if(pchan->constraints.first) + + for (pchan= owner->pose->chanbase.first; pchan; pchan= pchan->next) { + if (pchan->constraints.first) test_constraints(owner, pchan); + } } } -/* ********************** CONSTRAINT-SPECIFIC STUFF ********************* */ -/* ---------- Distance-Dependent Constraints ---------- */ -/* StretchTo, Limit Distance */ +/************************ generic functions for operators using constraint names and data context *********************/ + +#define EDIT_CONSTRAINT_OWNER_OBJECT 0 +#define EDIT_CONSTRAINT_OWNER_BONE 1 + +static EnumPropertyItem constraint_owner_items[] = { + {EDIT_CONSTRAINT_OWNER_OBJECT, "OBJECT", 0, "Object", "Edit a constraint on the active object"}, + {EDIT_CONSTRAINT_OWNER_BONE, "BONE", 0, "Bone", "Edit a constraint on the active bone"}, + {0, NULL, 0, NULL, NULL}}; -static int stretchto_poll(bContext *C) + +static int edit_constraint_poll_generic(bContext *C, StructRNA *rna_type) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_StretchToConstraint); - return (ptr.id.data && ptr.data); + PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", rna_type); + Object *ob= (ptr.id.data)?ptr.id.data:ED_object_active_context(C); + + if (!ob || ob->id.lib) return 0; + if (ptr.data && ((ID*)ptr.id.data)->lib) return 0; + + return 1; +} + +static int edit_constraint_poll(bContext *C) +{ + return edit_constraint_poll_generic(C, &RNA_Constraint); } +static void edit_constraint_properties(wmOperatorType *ot) +{ + RNA_def_string(ot->srna, "constraint", "", 32, "Constraint", "Name of the constraint to edit"); + RNA_def_enum(ot->srna, "owner", constraint_owner_items, 0, "Owner", "The owner of this constraint"); +} + +static int edit_constraint_invoke_properties(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); + Object *ob= (ptr.id.data)?ptr.id.data:ED_object_active_context(C); + bConstraint *con; + ListBase *list; + + if (RNA_property_is_set(op->ptr, "constraint") && RNA_property_is_set(op->ptr, "owner")) + return 1; + + if (ptr.data) { + con = ptr.data; + RNA_string_set(op->ptr, "constraint", con->name); + + list = get_constraint_lb(ob, con, NULL); + + if (&ob->constraints == list) + RNA_enum_set(op->ptr, "owner", EDIT_CONSTRAINT_OWNER_OBJECT); + else + RNA_enum_set(op->ptr, "owner", EDIT_CONSTRAINT_OWNER_BONE); + + return 1; + } + + return 0; +} + +static bConstraint *edit_constraint_property_get(bContext *C, wmOperator *op, Object *ob, int type) +{ + char constraint_name[32]; + int owner = RNA_enum_get(op->ptr, "owner"); + bConstraint *con; + ListBase *list=NULL; + + RNA_string_get(op->ptr, "constraint", constraint_name); + + if (owner == EDIT_CONSTRAINT_OWNER_OBJECT) { + list = &ob->constraints; + } + else if (owner == EDIT_CONSTRAINT_OWNER_BONE) { + bPoseChannel *pchan= get_active_posechannel(ob); + if (pchan) + list = &pchan->constraints; + else + return NULL; + } + + con = constraints_findByName(list, constraint_name); + + if (con && (type != 0) && (con->type != type)) + con = NULL; + + return con; +} + +/* ********************** CONSTRAINT-SPECIFIC STUFF ********************* */ + +/* ---------- Distance-Dependent Constraints ---------- */ +/* StretchTo, Limit Distance */ + static int stretchto_reset_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_StretchToConstraint); + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, CONSTRAINT_TYPE_STRETCHTO); + bStretchToConstraint *data= (con) ? (bStretchToConstraint *)con->data : NULL; + + /* despite 3 layers of checks, we may still not be able to find a constraint */ + if (data == NULL) + return OPERATOR_CANCELLED; /* just set original length to 0.0, which will cause a reset on next recalc */ - RNA_float_set(&ptr, "original_length", 0.0f); + data->orglength = 0.0f; + ED_object_constraint_update(ob); WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } +static int stretchto_reset_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_constraint_invoke_properties(C, op)) + return stretchto_reset_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void CONSTRAINT_OT_stretchto_reset (wmOperatorType *ot) { /* identifiers */ @@ -466,28 +577,39 @@ void CONSTRAINT_OT_stretchto_reset (wmOperatorType *ot) ot->description= "Reset original length of bone for Stretch To Constraint"; ot->exec= stretchto_reset_exec; - ot->poll= stretchto_poll; + ot->invoke= stretchto_reset_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } static int limitdistance_reset_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_LimitDistanceConstraint); + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, CONSTRAINT_TYPE_DISTLIMIT); + bDistLimitConstraint *data= (con) ? (bDistLimitConstraint *)con->data : NULL; - /* just set distance to 0.0, which will cause a reset on next recalc */ - RNA_float_set(&ptr, "distance", 0.0f); + /* despite 3 layers of checks, we may still not be able to find a constraint */ + if (data == NULL) + return OPERATOR_CANCELLED; + + /* just set original length to 0.0, which will cause a reset on next recalc */ + data->dist = 0.0f; + ED_object_constraint_update(ob); WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } -static int limitdistance_poll(bContext *C) +static int limitdistance_reset_invoke(bContext *C, wmOperator *op, wmEvent *event) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_LimitDistanceConstraint); - return (ptr.id.data && ptr.data); + if (edit_constraint_invoke_properties(C, op)) + return limitdistance_reset_exec(C, op); + else + return OPERATOR_CANCELLED; } void CONSTRAINT_OT_limitdistance_reset (wmOperatorType *ot) @@ -498,30 +620,29 @@ void CONSTRAINT_OT_limitdistance_reset (wmOperatorType *ot) ot->description= "Reset limiting distance for Limit Distance Constraint"; ot->exec= limitdistance_reset_exec; - ot->poll= limitdistance_poll; + ot->invoke= limitdistance_reset_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } /* ------------- Child-Of Constraint ------------------ */ -static int childof_poll(bContext *C) -{ - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_ChildOfConstraint); - return (ptr.id.data && ptr.data); -} - /* ChildOf Constraint - set inverse callback */ static int childof_set_inverse_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_ChildOfConstraint); Scene *scene= CTX_data_scene(C); - Object *ob= ptr.id.data; - bConstraint *con= ptr.data; - bChildOfConstraint *data= (bChildOfConstraint *)con->data; + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, CONSTRAINT_TYPE_CHILDOF); + bChildOfConstraint *data= (con) ? (bChildOfConstraint *)con->data : NULL; bPoseChannel *pchan= NULL; - + + /* despite 3 layers of checks, we may still not be able to find a constraint */ + if (data == NULL) + return OPERATOR_CANCELLED; + /* try to find a pose channel */ // TODO: get from context instead? if (ob && ob->pose) @@ -570,6 +691,14 @@ static int childof_set_inverse_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int childof_set_inverse_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_constraint_invoke_properties(C, op)) + return childof_set_inverse_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void CONSTRAINT_OT_childof_set_inverse (wmOperatorType *ot) { /* identifiers */ @@ -578,19 +707,20 @@ void CONSTRAINT_OT_childof_set_inverse (wmOperatorType *ot) ot->description= "Set inverse correction for ChildOf constraint"; ot->exec= childof_set_inverse_exec; - ot->poll= childof_poll; + ot->invoke= childof_set_inverse_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } /* ChildOf Constraint - clear inverse callback */ static int childof_clear_inverse_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_ChildOfConstraint); - Object *ob= ptr.id.data; - bConstraint *con= ptr.data; - bChildOfConstraint *data= (bChildOfConstraint *)con->data; + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, CONSTRAINT_TYPE_CHILDOF); + bChildOfConstraint *data= (con) ? (bChildOfConstraint *)con->data : NULL; /* simply clear the matrix */ unit_m4(data->invmat); @@ -600,6 +730,14 @@ static int childof_clear_inverse_exec (bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int childof_clear_inverse_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_constraint_invoke_properties(C, op)) + return childof_clear_inverse_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void CONSTRAINT_OT_childof_clear_inverse (wmOperatorType *ot) { /* identifiers */ @@ -608,10 +746,12 @@ void CONSTRAINT_OT_childof_clear_inverse (wmOperatorType *ot) ot->description= "Clear inverse correction for ChildOf constraint"; ot->exec= childof_clear_inverse_exec; - ot->poll= childof_poll; + ot->invoke= childof_clear_inverse_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } /***************************** BUTTONS ****************************/ @@ -644,7 +784,7 @@ void ED_object_constraint_dependency_update(Scene *scene, Object *ob) ED_object_constraint_update(ob); if(ob->pose) ob->pose->flag |= POSE_RECALC; // checks & sorts pose channels - DAG_scene_sort(scene); + DAG_scene_sort(scene); } static int constraint_poll(bContext *C) @@ -681,7 +821,7 @@ void CONSTRAINT_OT_delete (wmOperatorType *ot) /* identifiers */ ot->name= "Delete Constraint"; ot->idname= "CONSTRAINT_OT_delete"; - ot->description= "Remove constraitn from constraint stack"; + ot->description= "Remove constraint from constraint stack"; /* callbacks */ ot->exec= constraint_delete_exec; @@ -693,11 +833,10 @@ void CONSTRAINT_OT_delete (wmOperatorType *ot) static int constraint_move_down_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); - Object *ob= ptr.id.data; - bConstraint *con= ptr.data; + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, 0); - if (con->next) { + if (con && con->next) { ListBase *conlist= get_constraint_lb(ob, con, NULL); bConstraint *nextCon= con->next; @@ -713,29 +852,39 @@ static int constraint_move_down_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } +static int constraint_move_down_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_constraint_invoke_properties(C, op)) + return constraint_move_down_exec(C, op); + else + return OPERATOR_CANCELLED; +} + + void CONSTRAINT_OT_move_down (wmOperatorType *ot) { /* identifiers */ ot->name= "Move Constraint Down"; ot->idname= "CONSTRAINT_OT_move_down"; - ot->description= "Move constraint down constraint stack"; + ot->description= "Move constraint down in constraint stack"; /* callbacks */ ot->exec= constraint_move_down_exec; - ot->poll= constraint_poll; + ot->invoke= constraint_move_down_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } static int constraint_move_up_exec (bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "constraint", &RNA_Constraint); - Object *ob= ptr.id.data; - bConstraint *con= ptr.data; + Object *ob = ED_object_active_context(C); + bConstraint *con = edit_constraint_property_get(C, op, ob, 0); - if (con->prev) { + if (con && con->prev) { ListBase *conlist= get_constraint_lb(ob, con, NULL); bConstraint *prevCon= con->prev; @@ -751,19 +900,29 @@ static int constraint_move_up_exec (bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } +static int constraint_move_up_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_constraint_invoke_properties(C, op)) + return constraint_move_up_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void CONSTRAINT_OT_move_up (wmOperatorType *ot) { /* identifiers */ ot->name= "Move Constraint Up"; ot->idname= "CONSTRAINT_OT_move_up"; - ot->description= "Move constraint up constraint stack"; + ot->description= "Move constraint up in constraint stack"; /* callbacks */ ot->exec= constraint_move_up_exec; - ot->poll= constraint_poll; + ot->invoke= constraint_move_up_invoke; + ot->poll= edit_constraint_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_constraint_properties(ot); } /***************************** OPERATORS ****************************/ @@ -808,19 +967,21 @@ void POSE_OT_constraints_clear(wmOperatorType *ot) static int object_constraints_clear_exec(bContext *C, wmOperator *op) { - Object *ob= CTX_data_active_object(C); Scene *scene= CTX_data_scene(C); /* do freeing */ - // TODO: we should free constraints for all selected objects instead (to be more consistent with bones) - free_constraints(&ob->constraints); + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + free_constraints(&ob->constraints); + DAG_id_flush_update(&ob->id, OB_RECALC_OB); + } + CTX_DATA_END; /* force depsgraph to get recalculated since relationships removed */ DAG_scene_sort(scene); /* sort order of objects */ /* do updates */ - DAG_id_flush_update(&ob->id, OB_RECALC_OB); - WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_CONSTRAINT, NULL); return OPERATOR_FINISHED; } @@ -837,12 +998,90 @@ void OBJECT_OT_constraints_clear(wmOperatorType *ot) ot->poll= ED_operator_object_active_editable; } +/************************ copy all constraints operators *********************/ + +static int pose_constraint_copy_exec(bContext *C, wmOperator *op) +{ + bPoseChannel *pchan = CTX_data_active_pose_bone(C); + Scene *scene = CTX_data_scene(C); + + /* don't do anything if bone doesn't exist or doesn't have any constraints */ + if (ELEM(NULL, pchan, pchan->constraints.first)) { + BKE_report(op->reports, RPT_ERROR, "No active bone with constraints for copying"); + return OPERATOR_CANCELLED; + } + + /* copy all constraints from active posebone to all selected posebones */ + CTX_DATA_BEGIN(C, bPoseChannel*, chan, selected_pose_bones) + { + /* if we're not handling the object we're copying from, copy all constraints over */ + if (pchan != chan) + copy_constraints(&chan->constraints, &pchan->constraints, TRUE); + } + CTX_DATA_END; + + /* force depsgraph to get recalculated since new relationships added */ + DAG_scene_sort(scene); /* sort order of objects/bones */ + + return OPERATOR_FINISHED; +} + +void POSE_OT_constraints_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Constraints to Selected"; + ot->idname= "POSE_OT_constraints_copy"; + ot->description = "Copy constraints to other selected bones."; + + /* api callbacks */ + ot->exec= pose_constraint_copy_exec; + ot->poll= ED_operator_posemode; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int object_constraint_copy_exec(bContext *C, wmOperator *op) +{ + Object *obact = ED_object_active_context(C); + Scene *scene = CTX_data_scene(C); + + /* copy all constraints from active object to all selected objects */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) + { + /* if we're not handling the object we're copying from, copy all constraints over */ + if (obact != ob) + copy_constraints(&ob->constraints, &obact->constraints, TRUE); + } + CTX_DATA_END; + + /* force depsgraph to get recalculated since new relationships added */ + DAG_scene_sort(scene); /* sort order of objects */ + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_constraints_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Constraints to Selected"; + ot->idname= "OBJECT_OT_constraints_copy"; + ot->description = "Copy constraints to other selected objects."; + + /* api callbacks */ + ot->exec= object_constraint_copy_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /************************ add constraint operators *********************/ /* get the Object and/or PoseChannel to use as target */ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_ob, bPoseChannel **tar_pchan, short add) { - Object *obact= CTX_data_active_object(C); + Object *obact= ED_object_active_context(C); bPoseChannel *pchanact= get_active_posechannel(obact); short only_curve= 0, only_mesh= 0, only_ob= 0; short found= 0; @@ -864,6 +1103,7 @@ static short get_new_constraint_target(bContext *C, int con_type, Object **tar_o case CONSTRAINT_TYPE_LOCLIMIT: case CONSTRAINT_TYPE_ROTLIMIT: case CONSTRAINT_TYPE_SIZELIMIT: + case CONSTRAINT_TYPE_SAMEVOL: return 0; /* restricted target-type constraints -------------- */ @@ -1006,7 +1246,7 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase } /* create a new constraint of the type requried, and add it to the active/given constraints list */ - if(pchan) + if (pchan) con = add_pose_constraint(ob, pchan, NULL, type); else con = add_ob_constraint(ob, NULL, type); @@ -1046,9 +1286,9 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase case CONSTRAINT_TYPE_PYTHON: // FIXME: this code is not really valid anymore { +#ifndef DISABLE_PYTHON char *menustr; int scriptint= 0; -#ifndef DISABLE_PYTHON /* popup a list of usable scripts */ menustr = buildmenu_pyconstraints(NULL, &scriptint); // XXX scriptint = pupmenu(menustr); @@ -1096,17 +1336,10 @@ static int constraint_add_exec(bContext *C, wmOperator *op, Object *ob, ListBase /* dummy operator callback */ static int object_constraint_add_exec(bContext *C, wmOperator *op) { - ScrArea *sa= CTX_wm_area(C); - Object *ob; + Object *ob=ED_object_active_context(C); int type= RNA_enum_get(op->ptr, "type"); short with_targets= 0; - /* get active object from context */ - if (sa->spacetype == SPACE_BUTS) - ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; - else - ob= CTX_data_active_object(C); - if (!ob) { BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to."); return OPERATOR_CANCELLED; @@ -1124,17 +1357,10 @@ static int object_constraint_add_exec(bContext *C, wmOperator *op) /* dummy operator callback */ static int pose_constraint_add_exec(bContext *C, wmOperator *op) { - ScrArea *sa= CTX_wm_area(C); - Object *ob; + Object *ob= ED_object_active_context(C); int type= RNA_enum_get(op->ptr, "type"); short with_targets= 0; - /* get active object from context */ - if (sa->spacetype == SPACE_BUTS) - ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; - else - ob= CTX_data_active_object(C); - if (!ob) { BKE_report(op->reports, RPT_ERROR, "No active object to add constraint to."); return OPERATOR_CANCELLED; diff --git a/source/blender/editors/object/object_edit.c b/source/blender/editors/object/object_edit.c index 2e72f51bee9..fcd3a73c84d 100644 --- a/source/blender/editors/object/object_edit.c +++ b/source/blender/editors/object/object_edit.c @@ -30,41 +30,20 @@ #include <time.h> #include <float.h> #include <ctype.h> +#include <stddef.h> //for offsetof #include "MEM_guardedalloc.h" #include "IMB_imbuf_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_constraint_types.h" #include "DNA_curve_types.h" -#include "DNA_effect_types.h" #include "DNA_group_types.h" -#include "DNA_image_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_meta_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_object_fluidsim.h" -#include "DNA_object_force.h" -#include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_particle_types.h" #include "DNA_property_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "DNA_vfont_types.h" -#include "DNA_world_types.h" -#include "DNA_modifier_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -75,12 +54,10 @@ #include "BKE_action.h" #include "BKE_anim.h" #include "BKE_armature.h" -#include "BKE_booleanops.h" #include "BKE_constraint.h" #include "BKE_context.h" #include "BKE_customdata.h" #include "BKE_blender.h" -#include "BKE_booleanops.h" #include "BKE_cloth.h" #include "BKE_curve.h" #include "BKE_displist.h" @@ -114,36 +91,29 @@ #include "BKE_modifier.h" #include "BKE_tessmesh.h" -#include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" -#include "ED_particle.h" #include "ED_mesh.h" #include "ED_mball.h" #include "ED_object.h" #include "ED_screen.h" -#include "ED_transform.h" -#include "ED_types.h" #include "ED_util.h" -#include "ED_view3d.h" -#include "UI_interface.h" #include "RNA_access.h" #include "RNA_define.h" #include "RNA_enum_types.h" /* for menu/popup icons etc etc*/ -#include "UI_interface.h" -#include "UI_resources.h" +#include "UI_interface.h" #include "WM_api.h" #include "WM_types.h" #include "object_intern.h" // own include /* ************* XXX **************** */ -static void error() {} +static void error(const char *dummy) {} static void waitcursor(int val) {} static int pupmenu(const char *msg) {return 0;} @@ -151,34 +121,20 @@ static int pupmenu(const char *msg) {return 0;} static bContext *C; static void error_libdata() {} -/* ********************************** */ -/* --------------------------------- */ - -void ED_object_apply_obmat(Object *ob) +/* find the correct active object per context + * note: context can be NULL when called from a enum with PROP_ENUM_NO_CONTEXT */ +Object *ED_object_active_context(bContext *C) { - float mat[3][3], imat[3][3], tmat[3][3]; - - /* from obmat to loc rot size */ - - if(ob==NULL) return; - copy_m3_m4(mat, ob->obmat); - - VECCOPY(ob->loc, ob->obmat[3]); - - mat3_to_eul( ob->rot,mat); - eul_to_mat3( tmat,ob->rot); - - invert_m3_m3(imat, tmat); - - mul_m3_m3m3(tmat, imat, mat); - - ob->size[0]= tmat[0][0]; - ob->size[1]= tmat[1][1]; - ob->size[2]= tmat[2][2]; - + Object *ob= NULL; + if(C) { + ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + if (!ob) ob= CTX_data_active_object(C); + } + return ob; } + /* ********* clear/set restrict view *********/ static int object_restrictview_clear_exec(bContext *C, wmOperator *op) { @@ -276,6 +232,79 @@ void OBJECT_OT_restrictview_set(wmOperatorType *ot) } +/* 99% same as above except no need for scene refreshing (TODO, update render preview) */ +static int object_restrictrender_clear_exec(bContext *C, wmOperator *op) +{ + short changed= 0; + + /* XXX need a context loop to handle such cases */ + CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + if(ob->restrictflag & OB_RESTRICT_RENDER) { + ob->restrictflag &= ~OB_RESTRICT_RENDER; + changed= 1; + } + } + CTX_DATA_END; + + if(changed) + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_restrictrender_clear(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Clear Restrict Render"; + ot->description = "Reveal the render object by setting the restrictrender flag"; + ot->idname= "OBJECT_OT_restrictrender_clear"; + + /* api callbacks */ + ot->exec= object_restrictrender_clear_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int object_restrictrender_set_exec(bContext *C, wmOperator *op) +{ + int unselected= RNA_boolean_get(op->ptr, "unselected"); + + CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + if(!unselected) { + if (base->flag & SELECT){ + base->object->restrictflag |= OB_RESTRICT_RENDER; + } + } + else { + if (!(base->flag & SELECT)){ + base->object->restrictflag |= OB_RESTRICT_RENDER; + } + } + } + CTX_DATA_END; + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_OUTLINER, NULL); + return OPERATOR_FINISHED; +} + +void OBJECT_OT_restrictrender_set(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Set Restrict Render"; + ot->description = "Hide the render object by setting the restrictrender flag"; + ot->idname= "OBJECT_OT_restrictrender_set"; + + /* api callbacks */ + ot->exec= object_restrictrender_set_exec; + ot->poll= ED_operator_view3d_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_boolean(ot->srna, "unselected", 0, "Unselected", "Hide unselected rather than selected objects."); +} /* ******************* toggle editmode operator ***************** */ @@ -311,8 +340,10 @@ void ED_object_exit_editmode(bContext *C, int flag) me->edit_btmesh= NULL; } - if(obedit->restore_mode & OB_MODE_WEIGHT_PAINT) - mesh_octree_table(obedit, NULL, NULL, 'e'); + if(obedit->restore_mode & OB_MODE_WEIGHT_PAINT) { + mesh_octree_table(NULL, NULL, NULL, 'e'); + mesh_mirrtopo_table(NULL, 'e'); + } } else if (obedit->type==OB_ARMATURE) { ED_armature_from_edit(obedit); @@ -338,8 +369,19 @@ void ED_object_exit_editmode(bContext *C, int flag) /* freedata only 0 now on file saves and render */ if(freedata) { + ListBase pidlist; + PTCacheID *pid; + /* for example; displist make is different in editmode */ scene->obedit= NULL; // XXX for context + + /* flag object caches as outdated */ + BKE_ptcache_ids_from_object(&pidlist, obedit, NULL, 0); + for(pid=pidlist.first; pid; pid=pid->next) { + if(pid->type != PTCACHE_TYPE_PARTICLES) /* particles don't need reset on geometry change */ + pid->cache->flag |= PTCACHE_OUTDATED; + } + BLI_freelistN(&pidlist); BKE_ptcache_object_reset(scene, obedit, PTCACHE_RESET_DEPSGRAPH); @@ -354,7 +396,6 @@ void ED_object_exit_editmode(bContext *C, int flag) WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, scene); obedit->mode &= ~OB_MODE_EDIT; - ED_object_toggle_modes(C, obedit->restore_mode); } } @@ -397,8 +438,7 @@ void ED_object_enter_editmode(bContext *C, int flag) ob->restore_mode = ob->mode; ED_object_toggle_modes(C, ob->mode); - - ob->mode |= OB_MODE_EDIT; + ob->mode= OB_MODE_EDIT; if(ob->type==OB_MESH) { Mesh *me= ob->data; @@ -430,14 +470,14 @@ void ED_object_enter_editmode(bContext *C, int flag) scene->obedit= ob; ED_armature_to_edit(ob); /* to ensure all goes in restposition and without striding */ - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); // XXX: should this be OB_RECALC_DATA? WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_ARMATURE, scene); } else if(ob->type==OB_FONT) { scene->obedit= ob; // XXX for context ok= 1; - make_editText(ob); + make_editText(ob); WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_EDITMODE_TEXT, scene); } @@ -495,9 +535,9 @@ static int editmode_toggle_poll(bContext *C) return 0; return ob && (ob->type == OB_MESH || ob->type == OB_ARMATURE || - ob->type == OB_FONT || ob->type == OB_MBALL || - ob->type == OB_LATTICE || ob->type == OB_SURF || - ob->type == OB_CURVE); + ob->type == OB_FONT || ob->type == OB_MBALL || + ob->type == OB_LATTICE || ob->type == OB_SURF || + ob->type == OB_CURVE); } void OBJECT_OT_editmode_toggle(wmOperatorType *ot) @@ -1062,6 +1102,7 @@ void flip_subdivison(Scene *scene, View3D *v3d, int level) static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) { +//XXX no longer used - to be removed - replaced by game_properties_copy_exec bProperty *prop; Base *base; int nr, tot=0; @@ -1120,6 +1161,7 @@ static void copymenu_properties(Scene *scene, View3D *v3d, Object *ob) static void copymenu_logicbricks(Scene *scene, View3D *v3d, Object *ob) { +//XXX no longer used - to be removed - replaced by logicbricks_copy_exec Base *base; for(base= FIRSTBASE; base; base= base->next) { @@ -1368,7 +1410,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) base->object->dup_group= ob->dup_group; if(ob->dup_group) - id_us_plus((ID *)ob->dup_group); + id_lib_extern(&ob->dup_group->id); } else if(event==7) { /* mass */ base->object->mass= ob->mass; @@ -1487,7 +1529,7 @@ void copy_attr(Scene *scene, View3D *v3d, short event) } else if(event==22) { /* Copy the constraint channels over */ - copy_constraints(&base->object->constraints, &ob->constraints); + copy_constraints(&base->object->constraints, &ob->constraints, TRUE); do_scene_sort= 1; } @@ -1678,6 +1720,7 @@ void ED_objects_clear_paths(bContext *C, Scene *scene) if (ob->mpath) { animviz_free_motionpath(ob->mpath); ob->mpath= NULL; + ob->avs.path_bakeflag &= ~MOTIONPATH_BAKE_HAS_PATHS; } } CTX_DATA_END; @@ -1751,6 +1794,11 @@ static int shade_smooth_exec(bContext *C, wmOperator *op) return (done)? OPERATOR_FINISHED: OPERATOR_CANCELLED; } +static int shade_poll(bContext *C) +{ + return (ED_operator_object_active_editable(C) && !ED_operator_editmesh(C)); +} + void OBJECT_OT_shade_flat(wmOperatorType *ot) { /* identifiers */ @@ -1758,7 +1806,7 @@ void OBJECT_OT_shade_flat(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_flat"; /* api callbacks */ - ot->poll= ED_operator_object_active_editable; + ot->poll= shade_poll; ot->exec= shade_smooth_exec; /* flags */ @@ -1772,7 +1820,7 @@ void OBJECT_OT_shade_smooth(wmOperatorType *ot) ot->idname= "OBJECT_OT_shade_smooth"; /* api callbacks */ - ot->poll= ED_operator_object_active_editable; + ot->poll= shade_poll; ot->exec= shade_smooth_exec; /* flags */ @@ -1950,12 +1998,12 @@ static EnumPropertyItem *object_mode_set_itemsf(bContext *C, PointerRNA *ptr, in ob = CTX_data_active_object(C); while(ob && input->identifier) { if((input->value == OB_MODE_EDIT && ((ob->type == OB_MESH) || (ob->type == OB_ARMATURE) || - (ob->type == OB_CURVE) || (ob->type == OB_SURF) || - (ob->type == OB_FONT) || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) || + (ob->type == OB_CURVE) || (ob->type == OB_SURF) || + (ob->type == OB_FONT) || (ob->type == OB_MBALL) || (ob->type == OB_LATTICE))) || (input->value == OB_MODE_POSE && (ob->type == OB_ARMATURE)) || (input->value == OB_MODE_PARTICLE_EDIT && ob->particlesystem.first) || ((input->value == OB_MODE_SCULPT || input->value == OB_MODE_VERTEX_PAINT || - input->value == OB_MODE_WEIGHT_PAINT || input->value == OB_MODE_TEXTURE_PAINT) && (ob->type == OB_MESH)) || + input->value == OB_MODE_WEIGHT_PAINT || input->value == OB_MODE_TEXTURE_PAINT) && (ob->type == OB_MESH)) || (input->value == OB_MODE_OBJECT)) RNA_enum_item_add(&item, &totitem, input); ++input; @@ -2030,7 +2078,7 @@ static int object_mode_set_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_active_object(C); ObjectMode mode = RNA_enum_get(op->ptr, "mode"); - ObjectMode restore_mode = ob->mode; + ObjectMode restore_mode = (ob) ? ob->mode : OB_MODE_OBJECT; int toggle = RNA_boolean_get(op->ptr, "toggle"); if(!ob || !object_mode_set_compat(C, op, ob)) @@ -2097,6 +2145,8 @@ void ED_object_toggle_modes(bContext *C, int mode) WM_operator_name_call(C, "PARTICLE_OT_particle_edit_toggle", WM_OP_EXEC_REGION_WIN, NULL); if(mode & OB_MODE_POSE) WM_operator_name_call(C, "OBJECT_OT_posemode_toggle", WM_OP_EXEC_REGION_WIN, NULL); + if(mode & OB_MODE_EDIT) + WM_operator_name_call(C, "OBJECT_OT_editmode_toggle", WM_OP_EXEC_REGION_WIN, NULL); } /************************ Game Properties ***********************/ @@ -2113,6 +2163,7 @@ static int game_property_new(bContext *C, wmOperator *op) BLI_addtail(&ob->prop, prop); unique_property(NULL, prop, 0); // make_unique_prop_names(prop->name); + WM_event_add_notifier(C, NC_LOGIC, NULL); return OPERATOR_FINISHED; } @@ -2135,23 +2186,23 @@ static int game_property_remove(bContext *C, wmOperator *op) { Object *ob= CTX_data_active_object(C); bProperty *prop; - int index; + int index= RNA_int_get(op->ptr, "index"); if(!ob) return OPERATOR_CANCELLED; - index = RNA_int_get(op->ptr, "index"); + prop= BLI_findlink(&ob->prop, index); - prop= BLI_findlink(&ob->prop, index); - - if(prop) { + if(prop) { BLI_remlink(&ob->prop, prop); free_property(prop); + + WM_event_add_notifier(C, NC_LOGIC, NULL); return OPERATOR_FINISHED; - } - else { - return OPERATOR_CANCELLED; - } + } + else { + return OPERATOR_CANCELLED; + } } void OBJECT_OT_game_property_remove(wmOperatorType *ot) @@ -2169,3 +2220,181 @@ void OBJECT_OT_game_property_remove(wmOperatorType *ot) RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "Property index to remove ", 0, INT_MAX); } + +#define COPY_PROPERTIES_REPLACE 1 +#define COPY_PROPERTIES_MERGE 2 +#define COPY_PROPERTIES_COPY 3 + +static EnumPropertyItem game_properties_copy_operations[] ={ + {COPY_PROPERTIES_REPLACE, "REPLACE", 0, "Replace Properties", ""}, + {COPY_PROPERTIES_MERGE, "MERGE", 0, "Merge Properties", ""}, + {COPY_PROPERTIES_COPY, "COPY", 0, "Copy a Property", ""}, + {0, NULL, 0, NULL, NULL}}; + +static EnumPropertyItem gameprops_items[]= { + {0, NULL, 0, NULL, NULL}}; + +static EnumPropertyItem *gameprops_itemf(bContext *C, PointerRNA *ptr, int *free) +{ + Object *ob= ED_object_active_context(C); + EnumPropertyItem tmp = {0, "", 0, "", ""}; + EnumPropertyItem *item= NULL; + bProperty *prop; + int a, totitem= 0; + + if(!ob) + return gameprops_items; + + for(a=1, prop= ob->prop.first; prop; prop=prop->next, a++) { + tmp.value= a; + tmp.identifier= prop->name; + tmp.name= prop->name; + RNA_enum_item_add(&item, &totitem, &tmp); + } + + RNA_enum_item_end(&item, &totitem); + *free= 1; + + return item; +} + +static int game_property_copy_exec(bContext *C, wmOperator *op) +{ + Object *ob=ED_object_active_context(C); + bProperty *prop; + int type = RNA_enum_get(op->ptr, "operation"); + int propid= RNA_enum_get(op->ptr, "property"); + + if(propid > 0) { /* copy */ + prop = BLI_findlink(&ob->prop, propid-1); + + if(prop) { + CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + if (ob != ob_iter) { + if (ob->data != ob_iter->data) + set_ob_property(ob_iter, prop); + } + } CTX_DATA_END; + } + } + else if (ELEM(type, COPY_PROPERTIES_REPLACE, COPY_PROPERTIES_MERGE)) { + CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + if (ob != ob_iter) { + if (ob->data != ob_iter->data){ + if (type == 2) {/* merge */ + for(prop = ob->prop.first; prop; prop= prop->next ) { + set_ob_property(ob_iter, prop); + } + } else /* replace */ + copy_properties( &ob_iter->prop, &ob->prop ); + } + } + } + CTX_DATA_END; + } + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_game_property_copy(wmOperatorType *ot) +{ + PropertyRNA *prop; + /* identifiers */ + ot->name= "Copy Game Property"; + ot->idname= "OBJECT_OT_game_property_copy"; + + /* api callbacks */ + ot->exec= game_property_copy_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_enum(ot->srna, "operation", game_properties_copy_operations, 3, "Operation", ""); + prop=RNA_def_enum(ot->srna, "property", gameprops_items, 0, "Property", "Properties to copy"); + RNA_def_enum_funcs(prop, gameprops_itemf); + ot->prop=prop; +} + +static int game_property_clear_exec(bContext *C, wmOperator *op) +{ + CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + free_properties(&ob_iter->prop); + } + CTX_DATA_END; + + WM_event_add_notifier(C, NC_LOGIC, NULL); + return OPERATOR_FINISHED; +} +void OBJECT_OT_game_property_clear(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Clear Game Property"; + ot->idname= "OBJECT_OT_game_property_clear"; + + /* api callbacks */ + ot->exec= game_property_clear_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/************************ Copy Logic Bricks ***********************/ + +static int logicbricks_copy_exec(bContext *C, wmOperator *op) +{ + Object *ob=ED_object_active_context(C); + + CTX_DATA_BEGIN(C, Object*, ob_iter, selected_editable_objects) { + if(ob != ob_iter) { + if (ob->data != ob_iter->data){ + /* first: free all logic */ + free_sensors(&ob_iter->sensors); + unlink_controllers(&ob_iter->controllers); + free_controllers(&ob_iter->controllers); + unlink_actuators(&ob_iter->actuators); + free_actuators(&ob_iter->actuators); + + /* now copy it, this also works without logicbricks! */ + clear_sca_new_poins_ob(ob); + copy_sensors(&ob_iter->sensors, &ob->sensors); + copy_controllers(&ob_iter->controllers, &ob->controllers); + copy_actuators(&ob_iter->actuators, &ob->actuators); + set_sca_new_poins_ob(ob_iter); + + /* some menu settings */ + ob_iter->scavisflag= ob->scavisflag; + ob_iter->scaflag= ob->scaflag; + + /* set the initial state */ + ob_iter->state= ob->state; + ob_iter->init_state= ob->init_state; + } + if(ob_iter->totcol==ob->totcol) { + ob_iter->actcol= ob->actcol; + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob_iter); + } + } + } + CTX_DATA_END; + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_logic_bricks_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Logic Bricks to Selected"; + ot->description = "Copy logic bricks to other selected objects."; + ot->idname= "OBJECT_OT_logic_bricks_copy"; + + /* api callbacks */ + ot->exec= logicbricks_copy_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/object/object_group.c b/source/blender/editors/object/object_group.c index 73ca6e02132..ba609bd9bb3 100644 --- a/source/blender/editors/object/object_group.c +++ b/source/blender/editors/object/object_group.c @@ -52,6 +52,7 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "object_intern.h" @@ -224,84 +225,71 @@ void GROUP_OT_create(wmOperatorType *ot) static int group_add_exec(bContext *C, wmOperator *op) { - Main *bmain= CTX_data_main(C); Scene *scene= CTX_data_scene(C); Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; - Base *base; Group *group; - int value= RNA_enum_get(op->ptr, "group"); - if(!ob) + if(ob == NULL) return OPERATOR_CANCELLED; - - base= object_in_scene(ob, scene); - if(!base) - return OPERATOR_CANCELLED; - - if(value == -1) - group= add_group( "Group" ); - else - group= BLI_findlink(&bmain->group, value); - if(group) { - add_to_group(group, ob, scene, NULL); /* base will be used if found */ - } + group= add_group("Group"); + add_to_group(group, ob, scene, NULL); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - + return OPERATOR_FINISHED; } -static EnumPropertyItem group_items[]= { - {-1, "ADD_NEW", 0, "Add New Group", ""}, - {0, NULL, 0, NULL, NULL}}; - -static EnumPropertyItem *group_itemf(bContext *C, PointerRNA *ptr, int *free) -{ - Main *bmain= CTX_data_main(C); - Group *group; - EnumPropertyItem tmp = {0, "", 0, "", ""}; - EnumPropertyItem *item= NULL; - int a, totitem= 0; +void OBJECT_OT_group_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add to Group"; + ot->idname= "OBJECT_OT_group_add"; + ot->description = "Add an object to a new group"; - RNA_enum_items_add_value(&item, &totitem, group_items, -1); + /* api callbacks */ + ot->exec= group_add_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} - if (bmain) { - if(bmain->group.first) - RNA_enum_item_add_separator(&item, &totitem); +static int group_link_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + Group *group= BLI_findlink(&CTX_data_main(C)->group, RNA_enum_get(op->ptr, "group")); - for(a=0, group=bmain->group.first; group; group=group->id.next, a++) { - tmp.value= a; - tmp.identifier= group->id.name+2; - tmp.name= group->id.name+2; - RNA_enum_item_add(&item, &totitem, &tmp); - } - } + if(ELEM(NULL, ob, group)) + return OPERATOR_CANCELLED; + + add_to_group(group, ob, scene, NULL); - RNA_enum_item_end(&item, &totitem); - *free= 1; + WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); - return item; + return OPERATOR_FINISHED; } -void OBJECT_OT_group_add(wmOperatorType *ot) +void OBJECT_OT_group_link(wmOperatorType *ot) { PropertyRNA *prop; /* identifiers */ - ot->name= "Add to Group"; - ot->idname= "OBJECT_OT_group_add"; - ot->description = "Add an object to an existing group, or create new"; + ot->name= "Link to Group"; + ot->idname= "OBJECT_OT_group_link"; + ot->description = "Add an object to an existing group"; /* api callbacks */ - ot->exec= group_add_exec; + ot->exec= group_link_exec; + ot->invoke= WM_enum_search_invoke; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "group", group_items, -1, "Group", "Group to add object to."); - RNA_def_enum_funcs(prop, group_itemf); + prop= RNA_def_enum(ot->srna, "group", DummyRNA_NULL_items, 0, "Group", ""); + RNA_def_enum_funcs(prop, RNA_group_local_itemf); + ot->prop= prop; } static int group_remove_exec(bContext *C, wmOperator *op) diff --git a/source/blender/editors/object/object_hook.c b/source/blender/editors/object/object_hook.c index 2f2b0987e05..8b171bae34d 100644 --- a/source/blender/editors/object/object_hook.c +++ b/source/blender/editors/object/object_hook.c @@ -35,16 +35,11 @@ #include "BLI_listbase.h" #include "BLI_string.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_action.h" #include "BKE_context.h" @@ -60,17 +55,15 @@ #include "RNA_define.h" #include "RNA_access.h" +#include "RNA_enum_types.h" #include "ED_curve.h" #include "ED_mesh.h" -#include "ED_object.h" -#include "ED_view3d.h" #include "ED_screen.h" #include "WM_types.h" #include "WM_api.h" -#include "UI_interface.h" #include "UI_resources.h" #include "object_intern.h" @@ -94,7 +87,7 @@ static int return_editmesh_indexar(BMEditMesh *em, int *tot, int **indexar, floa BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { if(BM_TestHFlag(eve, BM_SELECT)) { *index= nr; index++; - add_v3_v3v3(cent, cent, eve->co); + add_v3_v3(cent, eve->co); } nr++; } @@ -123,7 +116,7 @@ static int return_editmesh_vgroup(Object *obedit, BMEditMesh *em, char *name, fl for(i=0; i<dvert->totweight; i++){ if(dvert->dw[i].def_nr == (obedit->actdef-1)) { totvert++; - add_v3_v3v3(cent, cent, eve->co); + add_v3_v3(cent, eve->co); } } } @@ -190,7 +183,7 @@ static int return_editlattice_indexar(Lattice *editlatt, int *tot, int **indexar if(bp->f1 & SELECT) { if(bp->hide==0) { *index= nr; index++; - add_v3_v3v3(cent, cent, bp->vec); + add_v3_v3(cent, bp->vec); } } bp++; @@ -263,17 +256,17 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo while(a--) { if(bezt->f1 & SELECT) { *index= nr; index++; - add_v3_v3v3(cent, cent, bezt->vec[0]); + add_v3_v3(cent, bezt->vec[0]); } nr++; if(bezt->f2 & SELECT) { *index= nr; index++; - add_v3_v3v3(cent, cent, bezt->vec[1]); + add_v3_v3(cent, bezt->vec[1]); } nr++; if(bezt->f3 & SELECT) { *index= nr; index++; - add_v3_v3v3(cent, cent, bezt->vec[2]); + add_v3_v3(cent, bezt->vec[2]); } nr++; bezt++; @@ -285,7 +278,7 @@ static int return_editcurve_indexar(Object *obedit, int *tot, int **indexar, flo while(a--) { if(bp->f1 & SELECT) { *index= nr; index++; - add_v3_v3v3(cent, cent, bp->vec); + add_v3_v3(cent, bp->vec); } nr++; bp++; @@ -540,9 +533,6 @@ void OBJECT_OT_hook_add_newobj(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -static EnumPropertyItem hook_mod_items[]= { -{0, NULL, 0, NULL, NULL}}; - static int object_hook_remove_exec(bContext *C, wmOperator *op) { int num= RNA_enum_get(op->ptr, "modifier"); @@ -577,7 +567,7 @@ static EnumPropertyItem *hook_mod_itemf(bContext *C, PointerRNA *ptr, int *free) int a, totitem= 0; if(!ob) - return hook_mod_items; + return DummyRNA_NULL_items; for(a=0, md=ob->modifiers.first; md; md= md->next, a++) { if (md->type==eModifierType_Hook) { @@ -613,7 +603,7 @@ void OBJECT_OT_hook_remove(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove."); + prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove."); RNA_def_enum_funcs(prop, hook_mod_itemf); ot->prop= prop; } @@ -669,7 +659,7 @@ void OBJECT_OT_hook_reset(wmOperatorType *ot) /* identifiers */ ot->name= "Reset Hook"; - ot->description= "Recalculate and and clear offset transformation"; + ot->description= "Recalculate and clear offset transformation"; ot->idname= "OBJECT_OT_hook_reset"; /* callbacks */ @@ -680,7 +670,7 @@ void OBJECT_OT_hook_reset(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to."); + prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to."); RNA_def_enum_funcs(prop, hook_mod_itemf); } @@ -736,7 +726,7 @@ void OBJECT_OT_hook_recenter(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to."); + prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to."); RNA_def_enum_funcs(prop, hook_mod_itemf); } @@ -799,7 +789,7 @@ void OBJECT_OT_hook_assign(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to."); + prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to."); RNA_def_enum_funcs(prop, hook_mod_itemf); } @@ -848,7 +838,7 @@ void OBJECT_OT_hook_select(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove."); + prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove."); RNA_def_enum_funcs(prop, hook_mod_itemf); } diff --git a/source/blender/editors/object/object_intern.h b/source/blender/editors/object/object_intern.h index 5331de02560..8bd0da3b43f 100644 --- a/source/blender/editors/object/object_intern.h +++ b/source/blender/editors/object/object_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -77,12 +77,20 @@ void OBJECT_OT_editmode_toggle(struct wmOperatorType *ot); void OBJECT_OT_posemode_toggle(struct wmOperatorType *ot); void OBJECT_OT_restrictview_set(struct wmOperatorType *ot); void OBJECT_OT_restrictview_clear(struct wmOperatorType *ot); +void OBJECT_OT_restrictrender_set(struct wmOperatorType *ot); +void OBJECT_OT_restrictrender_clear(struct wmOperatorType *ot); void OBJECT_OT_proxy_make(struct wmOperatorType *ot); void OBJECT_OT_shade_smooth(struct wmOperatorType *ot); void OBJECT_OT_shade_flat(struct wmOperatorType *ot); void OBJECT_OT_paths_calculate(struct wmOperatorType *ot); void OBJECT_OT_paths_clear(struct wmOperatorType *ot); +void OBJECT_OT_game_property_new(struct wmOperatorType *ot); +void OBJECT_OT_game_property_remove(struct wmOperatorType *ot); +void OBJECT_OT_game_property_copy(struct wmOperatorType *ot); +void OBJECT_OT_game_property_clear(struct wmOperatorType *ot); +void OBJECT_OT_logic_bricks_copy(struct wmOperatorType *ot); + /* object_select.c */ void OBJECT_OT_select_all(struct wmOperatorType *ot); void OBJECT_OT_select_inverse(struct wmOperatorType *ot); @@ -93,12 +101,11 @@ void OBJECT_OT_select_linked(struct wmOperatorType *ot); void OBJECT_OT_select_grouped(struct wmOperatorType *ot); void OBJECT_OT_select_mirror(struct wmOperatorType *ot); void OBJECT_OT_select_name(struct wmOperatorType *ot); +void OBJECT_OT_select_same_group(struct wmOperatorType *ot); /* object_add.c */ void OBJECT_OT_add(struct wmOperatorType *ot); void OBJECT_OT_add_named(struct wmOperatorType *ot); -void OBJECT_OT_curve_add(struct wmOperatorType *ot); -void OBJECT_OT_surface_add(struct wmOperatorType *ot); void OBJECT_OT_metaball_add(struct wmOperatorType *ot); void OBJECT_OT_text_add(struct wmOperatorType *ot); void OBJECT_OT_armature_add(struct wmOperatorType *ot); @@ -149,8 +156,8 @@ void OBJECT_OT_modifier_copy(struct wmOperatorType *ot); void OBJECT_OT_multires_subdivide(struct wmOperatorType *ot); void OBJECT_OT_multires_reshape(struct wmOperatorType *ot); void OBJECT_OT_multires_higher_levels_delete(struct wmOperatorType *ot); -void OBJECT_OT_multires_save_external(struct wmOperatorType *ot); -void OBJECT_OT_multires_pack_external(struct wmOperatorType *ot); +void OBJECT_OT_multires_external_save(struct wmOperatorType *ot); +void OBJECT_OT_multires_external_pack(struct wmOperatorType *ot); void OBJECT_OT_meshdeform_bind(struct wmOperatorType *ot); void OBJECT_OT_explode_refresh(struct wmOperatorType *ot); @@ -160,6 +167,9 @@ void OBJECT_OT_constraint_add_with_targets(struct wmOperatorType *ot); void POSE_OT_constraint_add(struct wmOperatorType *ot); void POSE_OT_constraint_add_with_targets(struct wmOperatorType *ot); +void OBJECT_OT_constraints_copy(struct wmOperatorType *ot); +void POSE_OT_constraints_copy(struct wmOperatorType *ot); + void OBJECT_OT_constraints_clear(struct wmOperatorType *ot); void POSE_OT_constraints_clear(struct wmOperatorType *ot); @@ -195,9 +205,7 @@ void OBJECT_OT_vertex_group_clean(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_mirror(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_set_active(struct wmOperatorType *ot); void OBJECT_OT_vertex_group_sort(struct wmOperatorType *ot); - -void OBJECT_OT_game_property_new(struct wmOperatorType *ot); -void OBJECT_OT_game_property_remove(struct wmOperatorType *ot); +void OBJECT_OT_vertex_group_move(struct wmOperatorType *ot); /* object_shapekey.c */ void OBJECT_OT_shape_key_add(struct wmOperatorType *ot); @@ -208,6 +216,7 @@ void OBJECT_OT_shape_key_move(struct wmOperatorType *ot); /* object_group.c */ void OBJECT_OT_group_add(struct wmOperatorType *ot); +void OBJECT_OT_group_link(struct wmOperatorType *ot); void OBJECT_OT_group_remove(struct wmOperatorType *ot); /* object_bake.c */ diff --git a/source/blender/editors/object/object_lattice.c b/source/blender/editors/object/object_lattice.c index 404335ca1ca..afd4f7a88a7 100644 --- a/source/blender/editors/object/object_lattice.c +++ b/source/blender/editors/object/object_lattice.c @@ -47,7 +47,6 @@ #include "BKE_mesh.h" #include "BKE_utildefines.h" -#include "ED_object.h" #include "ED_screen.h" #include "ED_view3d.h" #include "ED_util.h" @@ -228,7 +227,7 @@ void LATTICE_OT_select_all(wmOperatorType *ot) { /* identifiers */ ot->name= "Select or Deselect All"; - ot->description= "Change selection of all UVW control points"; + ot->description= "Change selection of all UVW control points"; ot->idname= "LATTICE_OT_select_all"; /* api callbacks */ @@ -276,7 +275,7 @@ void LATTICE_OT_make_regular(wmOperatorType *ot) { /* identifiers */ ot->name= "Make Regular"; - ot->description= "Set UVW control points a uniform distance apart"; + ot->description= "Set UVW control points a uniform distance apart"; ot->idname= "LATTICE_OT_make_regular"; /* api callbacks */ @@ -389,8 +388,8 @@ static int validate_undoLatt(void *data, void *edata) Lattice *editlatt= (Lattice *)edata; return (ult->pntsu == editlatt->pntsu && - ult->pntsv == editlatt->pntsv && - ult->pntsw == editlatt->pntsw); + ult->pntsv == editlatt->pntsv && + ult->pntsw == editlatt->pntsw); } static void *get_editlatt(bContext *C) diff --git a/source/blender/editors/object/object_modifier.c b/source/blender/editors/object/object_modifier.c index 36475eaeaa1..8792803bf0c 100644 --- a/source/blender/editors/object/object_modifier.c +++ b/source/blender/editors/object/object_modifier.c @@ -31,13 +31,10 @@ #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" #include "DNA_key_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_types.h" #include "DNA_object_force.h" #include "DNA_scene_types.h" @@ -178,13 +175,13 @@ int ED_object_modifier_remove(ReportList *reports, Scene *scene, Object *ob, Mod if(ob->pd) ob->pd->deflect= 0; - DAG_scene_sort(scene); + DAG_scene_sort(scene); } else if(md->type == eModifierType_Surface) { if(ob->pd && ob->pd->shape == PFIELD_SHAPE_SURFACE) ob->pd->shape = PFIELD_SHAPE_PLANE; - DAG_scene_sort(scene); + DAG_scene_sort(scene); } else if(md->type == eModifierType_Smoke) { ob->dt = OB_TEXTURE; @@ -403,50 +400,65 @@ static int modifier_apply_shape(ReportList *reports, Scene *scene, Object *ob, M static int modifier_apply_obdata(ReportList *reports, Scene *scene, Object *ob, ModifierData *md) { + ModifierTypeInfo *mti= modifierType_getInfo(md->type); + + if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md, 0))) { + BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); + return 0; + } + if (ob->type==OB_MESH) { DerivedMesh *dm; Mesh *me = ob->data; + MultiresModifierData *mmd= find_multires_modifier_before(scene, md); + if( me->key) { BKE_report(reports, RPT_ERROR, "Modifier cannot be applied to Mesh with Shape Keys"); return 0; } - + mesh_pmv_off(ob, me); - + /* Multires: ensure that recent sculpting is applied */ if(md->type == eModifierType_Multires) multires_force_update(ob); - - dm = mesh_create_derived_for_modifier(scene, ob, md); - if (!dm) { - BKE_report(reports, RPT_ERROR, "Modifier is disabled or returned error, skipping apply"); - return 0; + + if (mmd && mmd->totlvl && mti->type==eModifierTypeType_OnlyDeform) { + if(!multiresModifier_reshapeFromDeformMod (scene, mmd, ob, md)) { + BKE_report(reports, RPT_ERROR, "Multires modifier returned error, skipping apply"); + return 0; + } + } else { + dm = mesh_create_derived_for_modifier(scene, ob, md); + if (!dm) { + BKE_report(reports, RPT_ERROR, "Modifier returned error, skipping apply"); + return 0; + } + + DM_to_mesh(dm, me); + + dm->release(dm); } - - DM_to_mesh(dm, me); - - dm->release(dm); } else if (ELEM(ob->type, OB_CURVE, OB_SURF)) { - ModifierTypeInfo *mti = modifierType_getInfo(md->type); - Curve *cu = ob->data; + Curve *cu; int numVerts; float (*vertexCos)[3]; - - - BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tesselated/bevel vertices"); - - if (!(md->mode&eModifierMode_Realtime) || (mti->isDisabled && mti->isDisabled(md, 0))) { - BKE_report(reports, RPT_ERROR, "Modifier is disabled, skipping apply"); + + if (mti->type==eModifierTypeType_Constructive) { + BKE_report(reports, RPT_ERROR, "Cannot apply constructive modifiers on curve"); return 0; } - + + cu = ob->data; + BKE_report(reports, RPT_INFO, "Applied modifier only changed CV points, not tesselated/bevel vertices"); + vertexCos = curve_getVertexCos(cu, &cu->nurb, &numVerts); mti->deformVerts(md, ob, NULL, vertexCos, numVerts, 0, 0); curve_applyVertexCos(cu, &cu->nurb, vertexCos); MEM_freeN(vertexCos); - + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } else { @@ -495,20 +507,12 @@ int ED_object_modifier_copy(ReportList *reports, Object *ob, ModifierData *md) return 1; } -/***************************** OPERATORS ****************************/ - -static int modifier_poll(bContext *C) -{ - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - return (ptr.data != NULL && !((ID*)ptr.id.data)->lib); -} - /************************ add modifier operator *********************/ static int modifier_add_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - Object *ob = CTX_data_active_object(C); + Object *ob = ED_object_active_context(C); int type= RNA_enum_get(op->ptr, "type"); if(!ED_object_modifier_add(op->reports, scene, ob, NULL, type)) @@ -521,7 +525,7 @@ static int modifier_add_exec(bContext *C, wmOperator *op) static EnumPropertyItem *modifier_add_itemf(bContext *C, PointerRNA *ptr, int *free) { - Object *ob= CTX_data_active_object(C); + Object *ob= ED_object_active_context(C); EnumPropertyItem *item= NULL, *md_item; ModifierTypeInfo *mti; int totitem= 0, a; @@ -575,16 +579,69 @@ void OBJECT_OT_modifier_add(wmOperatorType *ot) ot->prop= prop; } +/************************ generic functions for operators using mod names and data context *********************/ + +static int edit_modifier_poll_generic(bContext *C, StructRNA *rna_type) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", rna_type); + Object *ob= (ptr.id.data)?ptr.id.data:ED_object_active_context(C); + + if (!ob || ob->id.lib) return 0; + if (ptr.data && ((ID*)ptr.id.data)->lib) return 0; + + return 1; +} + +static int edit_modifier_poll(bContext *C) +{ + return edit_modifier_poll_generic(C, &RNA_Modifier); +} + +static void edit_modifier_properties(wmOperatorType *ot) +{ + RNA_def_string(ot->srna, "modifier", "", 32, "Modifier", "Name of the modifier to edit"); +} + +static int edit_modifier_invoke_properties(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); + ModifierData *md; + + if (RNA_property_is_set(op->ptr, "modifier")) + return 1; + + if (ptr.data) { + md = ptr.data; + RNA_string_set(op->ptr, "modifier", md->name); + return 1; + } + + return 0; +} + +static ModifierData *edit_modifier_property_get(bContext *C, wmOperator *op, Object *ob, int type) +{ + char modifier_name[32]; + ModifierData *md; + RNA_string_get(op->ptr, "modifier", modifier_name); + + md = modifiers_findByName(ob, modifier_name); + + if (md && type != 0 && md->type != type) + md = NULL; + + return md; +} + /************************ remove modifier operator *********************/ static int modifier_remove_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; - - if(!ED_object_modifier_remove(op->reports, scene, ob, md)) + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); + + if(!ob || !md || !ED_object_modifier_remove(op->reports, scene, ob, md)) return OPERATOR_CANCELLED; WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); @@ -592,28 +649,37 @@ static int modifier_remove_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_remove_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_modifier_remove(wmOperatorType *ot) { ot->name= "Remove Modifier"; ot->description= "Remove a modifier from the active object"; ot->idname= "OBJECT_OT_modifier_remove"; + ot->invoke= modifier_remove_invoke; ot->exec= modifier_remove_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /************************ move up modifier operator *********************/ static int modifier_move_up_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); - if(!ED_object_modifier_move_up(op->reports, ob, md)) + if(!ob || !md || !ED_object_modifier_move_up(op->reports, ob, md)) return OPERATOR_CANCELLED; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -622,26 +688,35 @@ static int modifier_move_up_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_move_up_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_move_up_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_modifier_move_up(wmOperatorType *ot) { ot->name= "Move Up Modifier"; ot->description= "Move modifier up in the stack"; ot->idname= "OBJECT_OT_modifier_move_up"; + ot->invoke= modifier_move_up_invoke; ot->exec= modifier_move_up_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /************************ move down modifier operator *********************/ static int modifier_move_down_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); if(!ob || !md || !ED_object_modifier_move_down(op->reports, ob, md)) return OPERATOR_CANCELLED; @@ -652,17 +727,27 @@ static int modifier_move_down_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_move_down_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_move_down_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_modifier_move_down(wmOperatorType *ot) { ot->name= "Move Down Modifier"; ot->description= "Move modifier down in the stack"; ot->idname= "OBJECT_OT_modifier_move_down"; + ot->invoke= modifier_move_down_invoke; ot->exec= modifier_move_down_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /************************ apply modifier operator *********************/ @@ -670,13 +755,13 @@ void OBJECT_OT_modifier_move_down(wmOperatorType *ot) static int modifier_apply_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); int apply_as= RNA_enum_get(op->ptr, "apply_as"); - - if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md, apply_as)) + + if(!ob || !md || !ED_object_modifier_apply(op->reports, scene, ob, md, apply_as)) { return OPERATOR_CANCELLED; + } DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); @@ -684,6 +769,14 @@ static int modifier_apply_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_apply_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_apply_exec(C, op); + else + return OPERATOR_CANCELLED; +} + static EnumPropertyItem modifier_apply_as_items[] = { {MODIFIER_APPLY_DATA, "DATA", 0, "Object Data", "Apply modifier to the object's data"}, {MODIFIER_APPLY_SHAPE, "SHAPE", 0, "New Shape", "Apply deform-only modifier to a new shape on this object"}, @@ -695,14 +788,15 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) ot->description= "Apply modifier and remove from the stack"; ot->idname= "OBJECT_OT_modifier_apply"; - //ot->invoke= WM_menu_invoke; + ot->invoke= modifier_apply_invoke; ot->exec= modifier_apply_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; RNA_def_enum(ot->srna, "apply_as", modifier_apply_as_items, MODIFIER_APPLY_DATA, "Apply as", "How to apply the modifier to the geometry"); + edit_modifier_properties(ot); } /************************ convert modifier operator *********************/ @@ -710,10 +804,9 @@ void OBJECT_OT_modifier_apply(wmOperatorType *ot) static int modifier_convert_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; - + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); + if(!ob || !md || !ED_object_modifier_convert(op->reports, scene, ob, md)) return OPERATOR_CANCELLED; @@ -723,26 +816,35 @@ static int modifier_convert_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_convert_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_convert_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_modifier_convert(wmOperatorType *ot) { ot->name= "Convert Modifier"; ot->description= "Convert particles to a mesh object"; ot->idname= "OBJECT_OT_modifier_convert"; + ot->invoke= modifier_convert_invoke; ot->exec= modifier_convert_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /************************ copy modifier operator *********************/ static int modifier_copy_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_Modifier); - Object *ob= ptr.id.data; - ModifierData *md= ptr.data; + Object *ob = ED_object_active_context(C); + ModifierData *md = edit_modifier_property_get(C, op, ob, 0); if(!ob || !md || !ED_object_modifier_copy(op->reports, ob, md)) return OPERATOR_CANCELLED; @@ -753,62 +855,83 @@ static int modifier_copy_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int modifier_copy_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return modifier_copy_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_modifier_copy(wmOperatorType *ot) { ot->name= "Copy Modifier"; ot->description= "Duplicate modifier at the same position in the stack"; ot->idname= "OBJECT_OT_modifier_copy"; + ot->invoke= modifier_copy_invoke; ot->exec= modifier_copy_exec; - ot->poll= modifier_poll; + ot->poll= edit_modifier_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /************* multires delete higher levels operator ****************/ static int multires_poll(bContext *C) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - ID *id= ptr.id.data; - return (ptr.data && id && !id->lib); + return edit_modifier_poll_generic(C, &RNA_MultiresModifier); } static int multires_higher_levels_delete_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data; - MultiresModifierData *mmd= ptr.data; - - if(mmd) { - multiresModifier_del_levels(mmd, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); - } + Object *ob = ED_object_active_context(C); + MultiresModifierData *mmd = (MultiresModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_Multires); + + if (!mmd) + return OPERATOR_CANCELLED; + + multiresModifier_del_levels(mmd, ob, 1); + + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); return OPERATOR_FINISHED; } +static int multires_higher_levels_delete_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return multires_higher_levels_delete_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_multires_higher_levels_delete(wmOperatorType *ot) { ot->name= "Delete Higher Levels"; ot->idname= "OBJECT_OT_multires_higher_levels_delete"; ot->poll= multires_poll; + ot->invoke= multires_higher_levels_delete_invoke; ot->exec= multires_higher_levels_delete_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /****************** multires subdivide operator *********************/ static int multires_subdivide_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data; - MultiresModifierData *mmd= ptr.data; - + Object *ob = ED_object_active_context(C); + MultiresModifierData *mmd = (MultiresModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_Multires); + + if (!mmd) + return OPERATOR_CANCELLED; + multiresModifier_subdivide(mmd, ob, 0, mmd->simple); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -817,6 +940,14 @@ static int multires_subdivide_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int multires_subdivide_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return multires_subdivide_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_multires_subdivide(wmOperatorType *ot) { ot->name= "Multires Subdivide"; @@ -824,25 +955,25 @@ void OBJECT_OT_multires_subdivide(wmOperatorType *ot) ot->idname= "OBJECT_OT_multires_subdivide"; ot->poll= multires_poll; + ot->invoke= multires_subdivide_invoke; ot->exec= multires_subdivide_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /****************** multires reshape operator *********************/ static int multires_reshape_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data, *secondob= NULL; - MultiresModifierData *mmd= ptr.data; + Object *ob= ED_object_active_context(C), *secondob= NULL; + Scene *scene= CTX_data_scene(C); + MultiresModifierData *mmd = (MultiresModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_Multires); - if(ob->derivedFinal == NULL || ob->derivedFinal->type != DM_TYPE_CCGDM) { - BKE_report(op->reports, RPT_ERROR, "Active objects multires is disabled, can't reshape multires data."); + if (!mmd) return OPERATOR_CANCELLED; - } - + CTX_DATA_BEGIN(C, Object*, selob, selected_editable_objects) { if(selob->type == OB_MESH && selob != ob) { secondob= selob; @@ -855,18 +986,26 @@ static int multires_reshape_exec(bContext *C, wmOperator *op) BKE_report(op->reports, RPT_ERROR, "Second selected mesh object require to copy shape from."); return OPERATOR_CANCELLED; } - - if(!multiresModifier_reshape(mmd, ob, secondob)) { + + if(!multiresModifier_reshape(scene, mmd, ob, secondob)) { BKE_report(op->reports, RPT_ERROR, "Objects do not have the same number of vertices."); return OPERATOR_CANCELLED; } DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); - + return OPERATOR_FINISHED; } +static int multires_reshape_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return multires_reshape_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_multires_reshape(wmOperatorType *ot) { ot->name= "Multires Reshape"; @@ -874,27 +1013,33 @@ void OBJECT_OT_multires_reshape(wmOperatorType *ot) ot->idname= "OBJECT_OT_multires_reshape"; ot->poll= multires_poll; + ot->invoke= multires_reshape_invoke; ot->exec= multires_reshape_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /****************** multires save external operator *********************/ -static int multires_save_external_exec(bContext *C, wmOperator *op) +static int multires_external_save_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data; + Object *ob = ED_object_active_context(C); Mesh *me= (ob)? ob->data: op->customdata; char path[FILE_MAX]; + int relative= RNA_boolean_get(op->ptr, "relative_path"); + + if(!me) + return OPERATOR_CANCELLED; if(CustomData_external_test(&me->fdata, CD_MDISPS)) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", path); - if(G.save_over) - BLI_makestringcode(G.sce, path); /* make relative */ + RNA_string_get(op->ptr, "filepath", path); + + if(relative) + BLI_path_rel(path, G.sce); CustomData_external_add(&me->fdata, &me->id, CD_MDISPS, me->totface, path); CustomData_external_write(&me->fdata, &me->id, CD_MASK_MESH, me->totface, 0); @@ -902,51 +1047,63 @@ static int multires_save_external_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int multires_save_external_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int multires_external_save_invoke(bContext *C, wmOperator *op, wmEvent *event) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data; + Object *ob = ED_object_active_context(C); + MultiresModifierData *mmd; Mesh *me= ob->data; char path[FILE_MAX]; + if (!edit_modifier_invoke_properties(C, op)) + return OPERATOR_CANCELLED; + + mmd = (MultiresModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_Multires); + + if (!mmd) + return OPERATOR_CANCELLED; + if(CustomData_external_test(&me->fdata, CD_MDISPS)) return OPERATOR_CANCELLED; - if(RNA_property_is_set(op->ptr, "path")) - return multires_save_external_exec(C, op); + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + if(RNA_property_is_set(op->ptr, "filepath")) + return multires_external_save_exec(C, op); op->customdata= me; BLI_snprintf(path, sizeof(path), "//%s.btx", me->id.name+2); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; } -void OBJECT_OT_multires_save_external(wmOperatorType *ot) +void OBJECT_OT_multires_external_save(wmOperatorType *ot) { ot->name= "Multires Save External"; ot->description= "Save displacements to an external file"; - ot->idname= "OBJECT_OT_multires_save_external"; + ot->idname= "OBJECT_OT_multires_external_save"; + // XXX modifier no longer in context after file browser .. ot->poll= multires_poll; + ot->exec= multires_external_save_exec; + ot->invoke= multires_external_save_invoke; ot->poll= multires_poll; - ot->exec= multires_save_external_exec; - ot->invoke= multires_save_external_invoke; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|BTXFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); + edit_modifier_properties(ot); } /****************** multires pack operator *********************/ -static int multires_pack_external_exec(bContext *C, wmOperator *op) +static int multires_external_pack_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MultiresModifier); - Object *ob= ptr.id.data; + Object *ob = ED_object_active_context(C); Mesh *me= ob->data; if(!CustomData_external_test(&me->fdata, CD_MDISPS)) @@ -958,14 +1115,14 @@ static int multires_pack_external_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void OBJECT_OT_multires_pack_external(wmOperatorType *ot) +void OBJECT_OT_multires_external_pack(wmOperatorType *ot) { ot->name= "Multires Pack External"; ot->description= "Pack displacements from an external file"; - ot->idname= "OBJECT_OT_multires_pack_external"; + ot->idname= "OBJECT_OT_multires_external_pack"; ot->poll= multires_poll; - ot->exec= multires_pack_external_exec; + ot->exec= multires_external_pack_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -975,32 +1132,35 @@ void OBJECT_OT_multires_pack_external(wmOperatorType *ot) static int meshdeform_poll(bContext *C) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_MeshDeformModifier); - ID *id= ptr.id.data; - return (ptr.data && id && !id->lib); + return edit_modifier_poll_generic(C, &RNA_MeshDeformModifier); } static int meshdeform_bind_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get(C, "modifier"); - Object *ob= ptr.id.data; - MeshDeformModifierData *mmd= ptr.data; + Object *ob = ED_object_active_context(C); + MeshDeformModifierData *mmd = (MeshDeformModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_MeshDeform); + + if (!mmd) + return OPERATOR_CANCELLED; - if(mmd->bindcos) { + if(mmd->bindcagecos) { if(mmd->bindweights) MEM_freeN(mmd->bindweights); - if(mmd->bindcos) MEM_freeN(mmd->bindcos); + if(mmd->bindcagecos) MEM_freeN(mmd->bindcagecos); if(mmd->dyngrid) MEM_freeN(mmd->dyngrid); if(mmd->dyninfluences) MEM_freeN(mmd->dyninfluences); if(mmd->dynverts) MEM_freeN(mmd->dynverts); mmd->bindweights= NULL; - mmd->bindcos= NULL; + mmd->bindcagecos= NULL; mmd->dyngrid= NULL; mmd->dyninfluences= NULL; mmd->dynverts= NULL; mmd->totvert= 0; mmd->totcagevert= 0; mmd->totinfluence= 0; + + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_OBJECT|ND_MODIFIER, ob); } else { DerivedMesh *dm; @@ -1031,6 +1191,14 @@ static int meshdeform_bind_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int meshdeform_bind_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return meshdeform_bind_exec(C, op); + else + return OPERATOR_CANCELLED; +} + void OBJECT_OT_meshdeform_bind(wmOperatorType *ot) { /* identifiers */ @@ -1040,26 +1208,28 @@ void OBJECT_OT_meshdeform_bind(wmOperatorType *ot) /* api callbacks */ ot->poll= meshdeform_poll; + ot->invoke= meshdeform_bind_invoke; ot->exec= meshdeform_bind_exec; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } /****************** explode refresh operator *********************/ -static int explode_refresh_poll(bContext *C) +static int explode_poll(bContext *C) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_ExplodeModifier); - ID *id= ptr.id.data; - return (ptr.data && id && !id->lib); + return edit_modifier_poll_generic(C, &RNA_ExplodeModifier); } static int explode_refresh_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "modifier", &RNA_ExplodeModifier); - Object *ob= ptr.id.data; - ExplodeModifierData *emd= ptr.data; + Object *ob = ED_object_active_context(C); + ExplodeModifierData *emd = (ExplodeModifierData *)edit_modifier_property_get(C, op, ob, eModifierType_Explode); + + if (!emd) + return OPERATOR_CANCELLED; emd->flag |= eExplodeFlag_CalcFaces; @@ -1069,16 +1239,27 @@ static int explode_refresh_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int explode_refresh_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_modifier_invoke_properties(C, op)) + return explode_refresh_exec(C, op); + else + return OPERATOR_CANCELLED; +} + + void OBJECT_OT_explode_refresh(wmOperatorType *ot) { ot->name= "Explode Refresh"; ot->description= "Refresh data in the Explode modifier"; ot->idname= "OBJECT_OT_explode_refresh"; + ot->poll= explode_poll; + ot->invoke= explode_refresh_invoke; ot->exec= explode_refresh_exec; - ot->poll= explode_refresh_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_modifier_properties(ot); } diff --git a/source/blender/editors/object/object_ops.c b/source/blender/editors/object/object_ops.c index ab50bd4c37c..ba706a0d4b9 100644 --- a/source/blender/editors/object/object_ops.c +++ b/source/blender/editors/object/object_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -33,11 +33,6 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -79,6 +74,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_proxy_make); WM_operatortype_append(OBJECT_OT_restrictview_clear); WM_operatortype_append(OBJECT_OT_restrictview_set); + WM_operatortype_append(OBJECT_OT_restrictrender_clear); + WM_operatortype_append(OBJECT_OT_restrictrender_set); WM_operatortype_append(OBJECT_OT_shade_smooth); WM_operatortype_append(OBJECT_OT_shade_flat); WM_operatortype_append(OBJECT_OT_paths_calculate); @@ -101,6 +98,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_select_inverse); WM_operatortype_append(OBJECT_OT_select_random); WM_operatortype_append(OBJECT_OT_select_all); + WM_operatortype_append(OBJECT_OT_select_same_group); WM_operatortype_append(OBJECT_OT_select_by_type); WM_operatortype_append(OBJECT_OT_select_by_layer); WM_operatortype_append(OBJECT_OT_select_linked); @@ -114,9 +112,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(GROUP_OT_objects_remove_active); WM_operatortype_append(OBJECT_OT_delete); - WM_operatortype_append(OBJECT_OT_curve_add); WM_operatortype_append(OBJECT_OT_text_add); - WM_operatortype_append(OBJECT_OT_surface_add); WM_operatortype_append(OBJECT_OT_armature_add); WM_operatortype_append(OBJECT_OT_lamp_add); WM_operatortype_append(OBJECT_OT_camera_add); @@ -141,8 +137,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_multires_subdivide); WM_operatortype_append(OBJECT_OT_multires_reshape); WM_operatortype_append(OBJECT_OT_multires_higher_levels_delete); - WM_operatortype_append(OBJECT_OT_multires_save_external); - WM_operatortype_append(OBJECT_OT_multires_pack_external); + WM_operatortype_append(OBJECT_OT_multires_external_save); + WM_operatortype_append(OBJECT_OT_multires_external_pack); WM_operatortype_append(OBJECT_OT_meshdeform_bind); WM_operatortype_append(OBJECT_OT_explode_refresh); @@ -150,6 +146,8 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_constraint_add_with_targets); WM_operatortype_append(POSE_OT_constraint_add); WM_operatortype_append(POSE_OT_constraint_add_with_targets); + WM_operatortype_append(OBJECT_OT_constraints_copy); + WM_operatortype_append(POSE_OT_constraints_copy); WM_operatortype_append(OBJECT_OT_constraints_clear); WM_operatortype_append(POSE_OT_constraints_clear); WM_operatortype_append(POSE_OT_ik_add); @@ -180,9 +178,13 @@ void ED_operatortypes_object(void) WM_operatortype_append(OBJECT_OT_vertex_group_mirror); WM_operatortype_append(OBJECT_OT_vertex_group_set_active); WM_operatortype_append(OBJECT_OT_vertex_group_sort); + WM_operatortype_append(OBJECT_OT_vertex_group_move); WM_operatortype_append(OBJECT_OT_game_property_new); WM_operatortype_append(OBJECT_OT_game_property_remove); + WM_operatortype_append(OBJECT_OT_game_property_copy); + WM_operatortype_append(OBJECT_OT_game_property_clear); + WM_operatortype_append(OBJECT_OT_logic_bricks_copy); WM_operatortype_append(OBJECT_OT_shape_key_add); WM_operatortype_append(OBJECT_OT_shape_key_remove); @@ -194,6 +196,7 @@ void ED_operatortypes_object(void) WM_operatortype_append(LATTICE_OT_make_regular); WM_operatortype_append(OBJECT_OT_group_add); + WM_operatortype_append(OBJECT_OT_group_link); WM_operatortype_append(OBJECT_OT_group_remove); WM_operatortype_append(OBJECT_OT_hook_add_selobj); @@ -279,7 +282,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) keymap->poll= object_mode_poll; /* object mode supports PET now */ - ED_object_generic_keymap(keyconf, keymap, TRUE); + ED_object_generic_keymap(keyconf, keymap, 1); WM_keymap_add_item(keymap, "VIEW3D_OT_game_start", PKEY, KM_PRESS, 0, 0); @@ -319,10 +322,16 @@ void ED_keymap_object(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictview_set", HKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "unselected", 1); + /* same as above but for rendering */ + WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_clear", HKEY, KM_PRESS, KM_ALT|KM_CTRL, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_CTRL, 0); +// RNA_boolean_set(WM_keymap_add_item(keymap, "OBJECT_OT_restrictrender_set", HKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0)->ptr, "unselected", 1); // conflicts, removing + WM_keymap_add_item(keymap, "OBJECT_OT_move_to_layer", MKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "OBJECT_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "OBJECT_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_menu(keymap, "INFO_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "OBJECT_OT_duplicates_make_real", AKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); @@ -342,6 +351,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) // XXX this should probably be in screen instead... here for testing purposes in the meantime... - Aligorith WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_insert_menu", IKEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "ANIM_OT_keyframe_delete_v3d", IKEY, KM_PRESS, KM_ALT, 0); + WM_keymap_verify_item(keymap, "ANIM_OT_keying_set_active_set", IKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0); WM_keymap_verify_item(keymap, "GROUP_OT_create", GKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_verify_item(keymap, "GROUP_OT_objects_remove", GKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); @@ -366,7 +376,7 @@ void ED_keymap_object(wmKeyConfig *keyconf) /* menus */ WM_keymap_add_menu(keymap, "VIEW3D_MT_hook", HKEY, KM_PRESS, KM_CTRL, 0); - ED_object_generic_keymap(keyconf, keymap, TRUE); + ED_object_generic_keymap(keyconf, keymap, 1); } void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keymap, int do_pet) @@ -374,20 +384,23 @@ void ED_object_generic_keymap(struct wmKeyConfig *keyconf, struct wmKeyMap *keym wmKeyMapItem *kmi; /* used by mesh, curve & lattice only */ - if(do_pet) { + if(do_pet > 0) { /* context ops */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_enum", OKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing_falloff"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing_falloff"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing"); RNA_string_set(kmi->ptr, "value_1", "DISABLED"); RNA_string_set(kmi->ptr, "value_2", "ENABLED"); - kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.proportional_editing"); - RNA_string_set(kmi->ptr, "value_1", "DISABLED"); - RNA_string_set(kmi->ptr, "value_2", "CONNECTED"); + /* for modes/object types that allow 'conencted' mode, add the Alt O key */ + if (do_pet > 1) { + kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", OKEY, KM_PRESS, KM_ALT, 0); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.proportional_editing"); + RNA_string_set(kmi->ptr, "value_1", "DISABLED"); + RNA_string_set(kmi->ptr, "value_2", "CONNECTED"); + } } } diff --git a/source/blender/editors/object/object_relations.c b/source/blender/editors/object/object_relations.c index 3233954748a..cc9df09dc38 100644 --- a/source/blender/editors/object/object_relations.c +++ b/source/blender/editors/object/object_relations.c @@ -32,20 +32,14 @@ #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" #include "DNA_constraint_types.h" -#include "DNA_curve_types.h" #include "DNA_group_types.h" #include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" #include "DNA_meta_types.h" -#include "DNA_object_types.h" #include "DNA_particle_types.h" #include "DNA_scene_types.h" -#include "DNA_view3d_types.h" #include "DNA_world_types.h" #include "BLI_math.h" @@ -87,7 +81,6 @@ #include "RNA_define.h" #include "RNA_enum_types.h" -#include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" #include "ED_object.h" @@ -197,7 +190,7 @@ static int vertex_parent_set_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(ob != obedit) { - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; par= obedit->parent; while(par) { @@ -283,7 +276,7 @@ static int make_proxy_invoke (bContext *C, wmOperator *op, wmEvent *evt) PointerRNA props_ptr; /* create operator menu item with relevant properties filled in */ - props_ptr= uiItemFullO(layout, op->type->name, 0, op->idname, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); + props_ptr= uiItemFullO(layout, op->idname, op->type->name, 0, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); /* present the menu and be done... */ uiPupMenuEnd(C, pup); @@ -343,7 +336,7 @@ static int make_proxy_exec (bContext *C, wmOperator *op) /* depsgraph flushes are needed for the new data */ DAG_scene_sort(scene); - DAG_id_flush_update(&newob->id, OB_RECALC); + DAG_id_flush_update(&newob->id, OB_RECALC_ALL); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, newob); } else { @@ -409,7 +402,7 @@ void OBJECT_OT_proxy_make (wmOperatorType *ot) static EnumPropertyItem prop_clear_parent_types[] = { {0, "CLEAR", 0, "Clear Parent", ""}, - {1, "CLEAR_KEEP_TRANSFORM", 0, "Clear and Keep Transformation (Clear Track)", ""}, + {1, "CLEAR_KEEP_TRANSFORM", 0, "Clear and Keep Transformation", ""}, {2, "CLEAR_INVERSE", 0, "Clear Parent Inverse", ""}, {0, NULL, 0, NULL, NULL} }; @@ -426,13 +419,12 @@ static int parent_clear_exec(bContext *C, wmOperator *op) } else if(type == 1) { ob->parent= NULL; - ob->track= NULL; - ED_object_apply_obmat(ob); + object_apply_mat4(ob, ob->obmat); } else if(type == 2) unit_m4(ob->parentinv); - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; } CTX_DATA_END; @@ -569,7 +561,7 @@ static int parent_set_exec(bContext *C, wmOperator *op) Object workob; /* apply transformation of previous parenting */ - ED_object_apply_obmat(ob); + object_apply_mat4(ob, ob->obmat); /* set the parent (except for follow-path constraint option) */ if(partype != PAR_PATH_CONST) @@ -676,23 +668,23 @@ static int parent_set_invoke(bContext *C, wmOperator *op, wmEvent *event) uiLayout *layout= uiPupMenuLayout(pup); uiLayoutSetOperatorContext(layout, WM_OP_EXEC_DEFAULT); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_OBJECT); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_OBJECT); /* ob becomes parent, make the associated menus */ if(ob->type==OB_ARMATURE) { - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_NAME); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_ENVELOPE); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_ARMATURE_AUTO); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_BONE); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_NAME); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_ENVELOPE); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_ARMATURE_AUTO); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_BONE); } else if(ob->type==OB_CURVE) { - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_CURVE); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_FOLLOW); - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_PATH_CONST); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_CURVE); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_FOLLOW); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_PATH_CONST); } else if(ob->type == OB_LATTICE) { - uiItemEnumO(layout, NULL, 0, "OBJECT_OT_parent_set", "type", PAR_LATTICE); + uiItemEnumO(layout, "OBJECT_OT_parent_set", NULL, 0, "type", PAR_LATTICE); } uiPupMenuEnd(C, pup); @@ -874,7 +866,7 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) /* remove track-object for old track */ ob->track= NULL; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* also remove all tracking constraints */ for (con= ob->constraints.last; con; con= pcon) { @@ -884,7 +876,7 @@ static int object_track_clear_exec(bContext *C, wmOperator *op) } if(type == 1) - ED_object_apply_obmat(ob); + object_apply_mat4(ob, ob->obmat); } CTX_DATA_END; @@ -920,7 +912,6 @@ static EnumPropertyItem prop_make_track_types[] = { {1, "DAMPTRACK", 0, "Damped Track Constraint", ""}, {2, "TRACKTO", 0, "Track To Constraint", ""}, {3, "LOCKTRACK", 0, "Lock Track Constraint", ""}, - {4, "OLDTRACK", 0, "Old Track", ""}, {0, NULL, 0, NULL, NULL} }; @@ -941,7 +932,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) @@ -960,7 +951,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { @@ -981,7 +972,7 @@ static int track_set_exec(bContext *C, wmOperator *op) data = con->data; data->tar = obact; - ob->recalc |= OB_RECALC; + ob->recalc |= OB_RECALC_ALL; /* Lamp and Camera track differently by default */ if (ob->type == OB_LAMP || ob->type == OB_CAMERA) { @@ -992,15 +983,6 @@ static int track_set_exec(bContext *C, wmOperator *op) } CTX_DATA_END; } - else { - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { - if(ob!=obact) { - ob->track= obact; - ob->recalc |= OB_RECALC; - } - } - CTX_DATA_END; - } DAG_scene_sort(scene); DAG_ids_flush_update(0); @@ -1161,7 +1143,7 @@ void link_to_scene(unsigned short nr) static int make_links_scene_exec(bContext *C, wmOperator *op) { - Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); + Scene *scene_to= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene")); if(scene_to==NULL) { BKE_report(op->reports, RPT_ERROR, "Scene not found"); @@ -1203,6 +1185,30 @@ enum { MAKE_LINKS_MODIFIERS }; +/* Return 1 if make link data is allow, zero otherwise */ +static int allow_make_links_data(int ev, Object *ob, Object *obt) +{ + switch(ev) { + case MAKE_LINKS_OBDATA: + if (ob->type == obt->type && ob->type != OB_EMPTY) + return 1; + break; + case MAKE_LINKS_MATERIALS: + if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_FONT, OB_SURF, OB_MBALL) && + ELEM5(obt->type, OB_MESH, OB_CURVE, OB_FONT, OB_SURF, OB_MBALL)) + return 1; + break; + case MAKE_LINKS_ANIMDATA: + case MAKE_LINKS_DUPLIGROUP: + return 1; + case MAKE_LINKS_MODIFIERS: + if (ob->type != OB_EMPTY && obt->type != OB_EMPTY) + return 1; + break; + } + return 0; +} + static int make_links_data_exec(bContext *C, wmOperator *op) { int event = RNA_int_get(op->ptr, "type"); @@ -1214,43 +1220,44 @@ static int make_links_data_exec(bContext *C, wmOperator *op) CTX_DATA_BEGIN(C, Object*, obt, selected_editable_objects) { if(ob != obt) { - switch(event) { - case MAKE_LINKS_OBDATA: /* obdata */ - id= obt->data; - id->us--; + if (allow_make_links_data(event, ob, obt)) { + switch(event) { + case MAKE_LINKS_OBDATA: /* obdata */ + id= obt->data; + id->us--; - id= ob->data; - id_us_plus(id); - obt->data= id; + id= ob->data; + id_us_plus(id); + obt->data= id; - /* if amount of material indices changed: */ - test_object_materials(obt->data); + /* if amount of material indices changed: */ + test_object_materials(obt->data); - obt->recalc |= OB_RECALC_DATA; - break; - case MAKE_LINKS_MATERIALS: - /* new approach, using functions from kernel */ - for(a=0; a<ob->totcol; a++) { - Material *ma= give_current_material(ob, a+1); - assign_material(obt, ma, a+1); /* also works with ma==NULL */ - } - break; - case MAKE_LINKS_ANIMDATA: - BKE_copy_animdata_id((ID *)obt, (ID *)ob); - BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); - break; - case MAKE_LINKS_DUPLIGROUP: - if(ob->dup_group) ob->dup_group->id.us--; + obt->recalc |= OB_RECALC_DATA; + break; + case MAKE_LINKS_MATERIALS: + /* new approach, using functions from kernel */ + for(a=0; a<ob->totcol; a++) { + Material *ma= give_current_material(ob, a+1); + assign_material(obt, ma, a+1); /* also works with ma==NULL */ + } + break; + case MAKE_LINKS_ANIMDATA: + BKE_copy_animdata_id((ID *)obt, (ID *)ob); + BKE_copy_animdata_id((ID *)obt->data, (ID *)ob->data); + break; + case MAKE_LINKS_DUPLIGROUP: obt->dup_group= ob->dup_group; if(obt->dup_group) { - id_us_plus((ID *)obt->dup_group); + id_lib_extern(&obt->dup_group->id); obt->transflag |= OB_DUPLIGROUP; } - break; - case MAKE_LINKS_MODIFIERS: - object_link_modifiers(obt, ob); - obt->recalc |= OB_RECALC; - break; + break; + case MAKE_LINKS_MODIFIERS: + object_link_modifiers(obt, ob); + obt->recalc |= OB_RECALC_ALL; + break; + } } } } @@ -1279,8 +1286,9 @@ void OBJECT_OT_make_links_scene(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); - RNA_def_enum_funcs(prop, RNA_scene_itemf); + prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", ""); + RNA_def_enum_funcs(prop, RNA_scene_local_itemf); + ot->prop= prop; } void OBJECT_OT_make_links_data(wmOperatorType *ot) @@ -1357,7 +1365,6 @@ void single_object_users(Scene *scene, View3D *v3d, int flag) modifiers_foreachObjectLink(base->object, single_object_users__forwardModifierLinks, NULL); ID_NEW(ob->parent); - ID_NEW(ob->track); } } @@ -1678,13 +1685,13 @@ static void single_mat_users_expand(void) /* used for copying scenes */ void ED_object_single_users(Scene *scene, int full) { - single_object_users(scene, NULL, 0); + single_object_users(scene, NULL, 0); - if(full) { - single_obdata_users(scene, 0); - single_mat_users_expand(); - single_tex_users_expand(); - } + if(full) { + single_obdata_users(scene, 0); + single_mat_users_expand(); + single_tex_users_expand(); + } clear_id_newpoins(); } @@ -1726,22 +1733,21 @@ static int make_local_exec(bContext *C, wmOperator *op) clear_id_newpoins(); - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { if(ob->id.lib) id_make_local(&ob->id, 0); } CTX_DATA_END; /* maybe object pointers */ - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { if(ob->id.lib==NULL) { ID_NEW(ob->parent); - ID_NEW(ob->track); } } CTX_DATA_END; - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { id= ob->data; if(id && mode>1) { @@ -1759,7 +1765,7 @@ static int make_local_exec(bContext *C, wmOperator *op) CTX_DATA_END; if(mode>1) { - CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { + CTX_DATA_BEGIN(C, Object*, ob, selected_objects) { if(ob->type==OB_LAMP) { la= ob->data; @@ -1824,7 +1830,7 @@ static int make_single_user_exec(bContext *C, wmOperator *op) int flag= RNA_enum_get(op->ptr, "type"); /* 0==ALL, SELECTED==selected objecs */ if(RNA_boolean_get(op->ptr, "object")) - single_object_users(scene, v3d, flag); + single_object_users(scene, v3d, flag); if(RNA_boolean_get(op->ptr, "obdata")) single_obdata_users(scene, flag); diff --git a/source/blender/editors/object/object_select.c b/source/blender/editors/object/object_select.c index b3c104dcb56..8e3d613e02e 100644 --- a/source/blender/editors/object/object_select.c +++ b/source/blender/editors/object/object_select.c @@ -35,10 +35,8 @@ #include "DNA_group_types.h" #include "DNA_material_types.h" #include "DNA_modifier_types.h" -#include "DNA_object_types.h" #include "DNA_property_types.h" #include "DNA_scene_types.h" -#include "DNA_texture_types.h" #include "BLI_math.h" #include "BLI_listbase.h" @@ -47,7 +45,6 @@ #include "BKE_context.h" #include "BKE_depsgraph.h" -#include "BKE_global.h" #include "BKE_group.h" #include "BKE_main.h" #include "BKE_material.h" @@ -60,9 +57,10 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_object.h" #include "ED_screen.h" +#include "UI_interface.h" + #include "RNA_access.h" #include "RNA_define.h" #include "RNA_enum_types.h" @@ -164,11 +162,13 @@ void OBJECT_OT_select_by_type(wmOperatorType *ot) static EnumPropertyItem prop_select_linked_types[] = { //{1, "IPO", 0, "Object IPO", ""}, // XXX depreceated animation system stuff... - {2, "OBDATA", 0, "Ob Data", ""}, + {2, "OBDATA", 0, "Object Data", ""}, {3, "MATERIAL", 0, "Material", ""}, {4, "TEXTURE", 0, "Texture", ""}, {5, "DUPGROUP", 0, "Dupligroup", ""}, {6, "PARTICLE", 0, "Particle System", ""}, + {7, "LIBRARY", 0, "Library", ""}, + {8, "LIBRARY_OBDATA", 0, "Library (Object Data)", ""}, {0, NULL, 0, NULL, NULL} }; @@ -201,7 +201,7 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) } ob= OBACT; - if(ob==0){ + if(ob==NULL){ BKE_report(op->reports, RPT_ERROR, "No Active Object"); return OPERATOR_CANCELLED; } @@ -230,7 +230,14 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) else if(nr==6) { if(ob->particlesystem.first==NULL) return OPERATOR_CANCELLED; } - else return OPERATOR_CANCELLED; + else if(nr==7) { + /* do nothing */ + } + else if(nr==8) { + if(ob->data==NULL) return OPERATOR_CANCELLED; + } + else + return OPERATOR_CANCELLED; CTX_DATA_BEGIN(C, Base*, base, visible_bases) { if(nr==1) { @@ -289,6 +296,18 @@ static int object_select_linked_exec(bContext *C, wmOperator *op) } } } + else if(nr==7) { + if(ob->id.lib == base->object->id.lib) { + base->flag |= SELECT; + changed= 1; + } + } + else if(nr==8) { + if(base->object->data && ((ID *)ob->data)->lib == ((ID *)base->object->data)->lib) { + base->flag |= SELECT; + changed= 1; + } + } base->object->flag= base->flag; } CTX_DATA_END; @@ -385,14 +404,11 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in { short changed = 0; Group *group, *ob_groups[GROUP_MENU_MAX]; - //char str[10 + (24*GROUP_MENU_MAX)]; - //char *p = str; - int group_count=0; //, menu, i; - - for ( group=G.main->group.first; - group && group_count < GROUP_MENU_MAX; - group=group->id.next - ) { + int group_count=0, i; + uiPopupMenu *pup; + uiLayout *layout; + + for (group=CTX_data_main(C)->group.first; group && group_count < GROUP_MENU_MAX; group=group->id.next) { if (object_in_group (ob, group)) { ob_groups[group_count] = group; group_count++; @@ -401,7 +417,6 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in if (!group_count) return 0; - else if (group_count == 1) { group = ob_groups[0]; CTX_DATA_BEGIN(C, Base*, base, visible_bases) { @@ -413,27 +428,18 @@ static short select_grouped_group(bContext *C, Object *ob) /* Select objects in CTX_DATA_END; return changed; } -#if 0 // XXX hows this work in 2.5? + /* build the menu. */ - p += sprintf(str, "Groups%%t"); + pup= uiPupMenuBegin(C, "Select Group", 0); + layout= uiPupMenuLayout(pup); + for (i=0; i<group_count; i++) { group = ob_groups[i]; - p += sprintf (p, "|%s%%x%i", group->id.name+2, i); + uiItemStringO(layout, group->id.name+2, 0, "OBJECT_OT_select_same_group", "group", group->id.name); } - menu = pupmenu (str); - if (menu == -1) - return 0; - - group = ob_groups[menu]; - for (base= FIRSTBASE; base; base= base->next) { - if (!(base->flag & SELECT) && object_in_group(base->object, group)) { - ED_base_object_select(base, BA_SELECT); - changed = 1; - } - } -#endif - return changed; + uiPupMenuEnd(C, pup); + return changed; // The operator already handle this! } static short select_grouped_object_hooks(bContext *C, Object *ob) @@ -768,6 +774,55 @@ void OBJECT_OT_select_all(wmOperatorType *ot) WM_operator_properties_select_all(ot); } +/**************************** Select In The Same Group ****************************/ + +static int object_select_same_group_exec(bContext *C, wmOperator *op) +{ + Group *group; + char group_name[32]; + + /* passthrough if no objects are visible */ + if (CTX_DATA_COUNT(C, visible_bases) == 0) return OPERATOR_PASS_THROUGH; + + RNA_string_get(op->ptr, "group", group_name); + + for (group=CTX_data_main(C)->group.first; group; group=group->id.next) { + if (!strcmp(group->id.name, group_name)) + break; + } + + if (!group) + return OPERATOR_PASS_THROUGH; + + CTX_DATA_BEGIN(C, Base*, base, visible_bases) { + if (!(base->flag & SELECT) && object_in_group(base->object, group)) + ED_base_object_select(base, BA_SELECT); + } + CTX_DATA_END; + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, CTX_data_scene(C)); + + return OPERATOR_FINISHED; +} + +void OBJECT_OT_select_same_group(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "select same group"; + ot->description = "Select object in the same group"; + ot->idname= "OBJECT_OT_select_same_group"; + + /* api callbacks */ + ot->exec= object_select_same_group_exec; + ot->poll= ED_operator_scene_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_string(ot->srna, "group", "", 32, "Group", "Name of the group to select."); +} + /**************************** Select Mirror ****************************/ /* finds the best possible flipped name. For renaming; check for unique names afterwards */ @@ -944,7 +999,9 @@ static int object_select_name_exec(bContext *C, wmOperator *op) } CTX_DATA_BEGIN(C, Base*, base, selectable_bases) { + /* this is a bit dodjy, there should only be ONE object with this name, but library objects can mess this up */ if(strcmp(name, base->object->id.name+2)==0) { + ED_base_object_activate(C, base); ED_base_object_select(base, BA_SELECT); changed= 1; } diff --git a/source/blender/editors/object/object_shapekey.c b/source/blender/editors/object/object_shapekey.c index 3cf29cd3eaf..6735d07b591 100644 --- a/source/blender/editors/object/object_shapekey.c +++ b/source/blender/editors/object/object_shapekey.c @@ -39,19 +39,12 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" -#include "DNA_ipo_types.h" #include "DNA_key_types.h" #include "DNA_lattice_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view2d_types.h" #include "BKE_action.h" #include "BKE_anim.h" @@ -69,7 +62,6 @@ #include "BLO_sys_types.h" // for intptr_t support -#include "ED_object.h" #include "ED_mesh.h" #include "RNA_access.h" diff --git a/source/blender/editors/object/object_transform.c b/source/blender/editors/object/object_transform.c index 0faca76e881..50764aeb192 100644 --- a/source/blender/editors/object/object_transform.c +++ b/source/blender/editors/object/object_transform.c @@ -29,16 +29,11 @@ #include <string.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_curve_types.h" #include "DNA_key_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_view3d_types.h" #include "BLI_math.h" #include "BLI_editVert.h" @@ -61,12 +56,10 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_anim_api.h" #include "ED_armature.h" #include "ED_curve.h" #include "ED_keyframing.h" #include "ED_mesh.h" -#include "ED_object.h" #include "ED_screen.h" #include "ED_view3d.h" @@ -76,32 +69,35 @@ static int object_location_clear_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - + Scene *scene = CTX_data_scene(C); KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); /* clear location of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { - if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { - if((ob->protectflag & OB_LOCK_LOCX)==0) + if (!(ob->mode & OB_MODE_WEIGHT_PAINT)) { + /* clear location if not locked */ + if ((ob->protectflag & OB_LOCK_LOCX)==0) ob->loc[0]= ob->dloc[0]= 0.0f; - if((ob->protectflag & OB_LOCK_LOCY)==0) + if ((ob->protectflag & OB_LOCK_LOCY)==0) ob->loc[1]= ob->dloc[1]= 0.0f; - if((ob->protectflag & OB_LOCK_LOCZ)==0) + if ((ob->protectflag & OB_LOCK_LOCZ)==0) ob->loc[2]= ob->dloc[2]= 0.0f; - /* do auto-keyframing as appropriate */ + /* auto keyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this object, then use the relative KeyingSets to keyframe it */ - cks.id= &ob->id; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + ListBase dsources = {NULL, NULL}; + + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, NULL, NULL); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); } } + ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; @@ -132,17 +128,12 @@ void OBJECT_OT_location_clear(wmOperatorType *ot) static int object_rotation_clear_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); /* clear rotation of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { + /* clear rotations that aren't locked */ if (ob->protectflag & (OB_LOCK_ROTX|OB_LOCK_ROTY|OB_LOCK_ROTZ|OB_LOCK_ROTW)) { if (ob->protectflag & OB_LOCK_ROT4D) { /* perform clamping on a component by component basis */ @@ -218,7 +209,7 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op) VECCOPY(ob->rot, eul); } } - } + } // Duplicated in source/blender/editors/armature/editarmature.c else { if (ob->rotmode == ROT_MODE_QUAT) { ob->quat[1]=ob->quat[2]=ob->quat[3]= 0.0f; @@ -234,13 +225,21 @@ static int object_rotation_clear_exec(bContext *C, wmOperator *op) } } - /* do auto-keyframing as appropriate */ + /* auto keyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this object, then use the relative KeyingSets to keyframe it */ - cks.id= &ob->id; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + ListBase dsources = {NULL, NULL}; + + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, NULL, NULL); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); } } + ob->recalc |= OB_RECALC_OB; } CTX_DATA_END; @@ -271,35 +270,37 @@ void OBJECT_OT_rotation_clear(wmOperatorType *ot) static int object_scale_clear_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scaling"); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); /* clear scales of selected objects if not in weight-paint mode */ CTX_DATA_BEGIN(C, Object*, ob, selected_editable_objects) { if(!(ob->mode & OB_MODE_WEIGHT_PAINT)) { - if((ob->protectflag & OB_LOCK_SCALEX)==0) { + /* clear scale factors which are not locked */ + if ((ob->protectflag & OB_LOCK_SCALEX)==0) { ob->dsize[0]= 0.0f; ob->size[0]= 1.0f; } - if((ob->protectflag & OB_LOCK_SCALEY)==0) { + if ((ob->protectflag & OB_LOCK_SCALEY)==0) { ob->dsize[1]= 0.0f; ob->size[1]= 1.0f; } - if((ob->protectflag & OB_LOCK_SCALEZ)==0) { + if ((ob->protectflag & OB_LOCK_SCALEZ)==0) { ob->dsize[2]= 0.0f; ob->size[2]= 1.0f; } - /* do auto-keyframing as appropriate */ + /* auto keyframing */ if (autokeyframe_cfra_can_key(scene, &ob->id)) { - /* init cks for this object, then use the relative KeyingSets to keyframe it */ - cks.id= &ob->id; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + ListBase dsources = {NULL, NULL}; + + /* now insert the keyframe(s) using the Keying Set + * 1) add datasource override for the PoseChannel + * 2) insert keyframes + * 3) free the extra info + */ + ANIM_relative_keyingset_add_source(&dsources, &ob->id, NULL, NULL); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); + BLI_freelistN(&dsources); } } ob->recalc |= OB_RECALC_OB; @@ -385,7 +386,7 @@ static void ignore_parent_tx(Main *bmain, Scene *scene, Object *ob ) /* a change was made, adjust the children to compensate */ for(ob_child=bmain->object.first; ob_child; ob_child=ob_child->id.next) { if(ob_child->parent == ob) { - ED_object_apply_obmat(ob_child); + object_apply_mat4(ob_child, ob_child->obmat); what_does_parent(scene, ob_child, &workob); invert_m4_m4(ob_child->parentinv, workob.obmat); } @@ -432,6 +433,10 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo BKE_report(reports, RPT_ERROR, "Can't apply to a multi user curve, doing nothing."); return OPERATOR_CANCELLED; } + if(!(cu->flag & CU_3D) && (apply_rot || apply_loc)) { + BKE_report(reports, RPT_ERROR, "Neither rotation nor location could be applied to a 2d curve, doing nothing."); + return OPERATOR_CANCELLED; + } if(cu->key) { BKE_report(reports, RPT_ERROR, "Can't apply to a curve with vertex keys, doing nothing."); return OPERATOR_CANCELLED; @@ -498,7 +503,7 @@ static int apply_objects_internal(bContext *C, ReportList *reports, int apply_lo cu= ob->data; scale = mat3_to_scale(rsmat); - + for(nu=cu->nurb.first; nu; nu=nu->next) { if(nu->type == CU_BEZIER) { a= nu->pntsu; @@ -759,7 +764,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) } BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { - sub_v3_v3v3(eve->co, eve->co, cent); + sub_v3_v3(eve->co, cent); } EDBM_RecalcNormals(em); @@ -804,7 +809,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) mvert= me->mvert; for(a=0; a<me->totvert; a++, mvert++) { - sub_v3_v3v3(mvert->co, mvert->co, cent); + sub_v3_v3(mvert->co, cent); } if (me->key) { @@ -813,7 +818,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) float *fp= kb->data; for (a=0; a<kb->totelem; a++, fp+=3) { - sub_v3_v3v3(fp, fp, cent); + sub_v3_v3(fp, cent); } } } @@ -855,7 +860,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) if(tme && (tme->flag & ME_ISDONE)==0) { mvert= tme->mvert; for(a=0; a<tme->totvert; a++, mvert++) { - sub_v3_v3v3(mvert->co, mvert->co, cent); + sub_v3_v3(mvert->co, cent); } if (tme->key) { @@ -864,7 +869,7 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) float *fp= kb->data; for (a=0; a<kb->totelem; a++, fp+=3) { - sub_v3_v3v3(fp, fp, cent); + sub_v3_v3(fp, cent); } } } @@ -924,15 +929,15 @@ static int object_origin_set_exec(bContext *C, wmOperator *op) if(nu->type == CU_BEZIER) { a= nu->pntsu; while (a--) { - sub_v3_v3v3(nu->bezt[a].vec[0], nu->bezt[a].vec[0], cent); - sub_v3_v3v3(nu->bezt[a].vec[1], nu->bezt[a].vec[1], cent); - sub_v3_v3v3(nu->bezt[a].vec[2], nu->bezt[a].vec[2], cent); + sub_v3_v3(nu->bezt[a].vec[0], cent); + sub_v3_v3(nu->bezt[a].vec[1], cent); + sub_v3_v3(nu->bezt[a].vec[2], cent); } } else { a= nu->pntsu*nu->pntsv; while (a--) - sub_v3_v3v3(nu->bp[a].vec, nu->bp[a].vec, cent); + sub_v3_v3(nu->bp[a].vec, cent); } nu= nu->next; } diff --git a/source/blender/editors/object/object_vgroup.c b/source/blender/editors/object/object_vgroup.c index 1b20042b25e..ea118602c6c 100644 --- a/source/blender/editors/object/object_vgroup.c +++ b/source/blender/editors/object/object_vgroup.c @@ -36,14 +36,13 @@ #include "DNA_cloth_types.h" #include "DNA_curve_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" +#include "DNA_mesh_types.h" #include "DNA_modifier_types.h" #include "DNA_object_types.h" #include "DNA_object_force.h" #include "DNA_scene_types.h" #include "DNA_particle_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BLI_cellalloc.h" @@ -69,9 +68,7 @@ #include "WM_types.h" #include "ED_mesh.h" -#include "ED_view3d.h" -#include "UI_interface.h" #include "UI_resources.h" #include "object_intern.h" @@ -98,7 +95,7 @@ bDeformGroup *ED_vgroup_add_name(Object *ob, char *name) defgroup = MEM_callocN(sizeof(bDeformGroup), "add deformGroup"); - BLI_strncpy(defgroup->name, name, 32); + BLI_strncpy(defgroup->name, name, sizeof(defgroup->name)); BLI_addtail(&ob->defbase, defgroup); defgroup_unique_name(defgroup, ob); @@ -127,6 +124,78 @@ void ED_vgroup_data_create(ID *id) } } +int ED_vgroup_give_parray(ID *id, MDeformVert ***dvert_arr, int *dvert_tot) +{ + if(id) { + switch(GS(id->name)) { + case ID_ME: + { + Mesh *me = (Mesh *)id; + + if(me->edit_btmesh) { + BMEditMesh *em = me->edit_btmesh; + BMIter iter; + BMVert *eve; + int i; + + if (!CustomData_has_layer(&em->bm->vdata, CD_MDEFORMVERT)) { + *dvert_tot = 0; + *dvert_arr = NULL; + return 0; + } + + i = em->bm->totvert; + + *dvert_arr= MEM_mallocN(sizeof(void*)*i, "vgroup parray from me"); + *dvert_tot = i; + + i = 0; + BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { + (*dvert_arr)[i] = CustomData_em_get(&em->bm->vdata, eve->head.data, CD_MDEFORMVERT); + i++; + } + + return 1; + } + else if(me->dvert) { + int i; + + *dvert_tot= me->totvert; + *dvert_arr= MEM_mallocN(sizeof(void*)*me->totvert, "vgroup parray from me"); + + for (i=0; i<me->totvert; i++) { + (*dvert_arr)[i] = me->dvert + i; + } + + return 1; + } + else + return 0; + } + case ID_LT: + { + int i=0; + + Lattice *lt= (Lattice *)id; + lt= (lt->editlatt)? lt->editlatt: lt; + + *dvert_tot= lt->pntsu*lt->pntsv*lt->pntsw; + *dvert_arr= MEM_mallocN(sizeof(void*)*(*dvert_tot), "vgroup parray from me"); + + for (i=0; i<*dvert_tot; i++) { + (*dvert_arr)[i] = lt->dvert + i; + } + + return 1; + } + } + } + + *dvert_arr= NULL; + *dvert_tot= 0; + return 0; +} + /* returns true if the id type supports weights */ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot) { @@ -158,20 +227,22 @@ int ED_vgroup_give_array(ID *id, MDeformVert **dvert_arr, int *dvert_tot) /* matching index only */ int ED_vgroup_copy_array(Object *ob, Object *ob_from) { - MDeformVert *dvert_array_from, *dvf; - MDeformVert *dvert_array, *dv; - + MDeformVert **dvert_array_from, **dvf; + MDeformVert **dvert_array, **dv; int dvert_tot_from; int dvert_tot; int i; int totdef_from= BLI_countlist(&ob_from->defbase); int totdef= BLI_countlist(&ob->defbase); - ED_vgroup_give_array(ob_from->data, &dvert_array_from, &dvert_tot_from); - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob_from->data, &dvert_array_from, &dvert_tot_from); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); - if(ob==ob_from || dvert_tot==0 || (dvert_tot != dvert_tot_from) || dvert_array_from==NULL || dvert_array==NULL) + if(ob==ob_from || dvert_tot==0 || (dvert_tot != dvert_tot_from) || dvert_array_from==NULL || dvert_array==NULL) { + if (dvert_array) MEM_freeN(dvert_array); + if (dvert_array_from) MEM_freeN(dvert_array_from); return 0; + } /* do the copy */ BLI_freelistN(&ob->defbase); @@ -192,15 +263,18 @@ int ED_vgroup_copy_array(Object *ob, Object *ob_from) dv= dvert_array; for(i=0; i<dvert_tot; i++, dvf++, dv++) { - if(dv->dw) - MEM_freeN(dv->dw); + if((*dv)->dw) + MEM_freeN((*dv)->dw); - *dv= *dvf; + *(*dv)= *(*dvf); - if(dv->dw) - dv->dw= MEM_dupallocN(dv->dw); + if((*dv)->dw) + (*dv)->dw= MEM_dupallocN((*dv)->dw); } + MEM_freeN(dvert_array); + MEM_freeN(dvert_array_from); + return 1; } @@ -289,7 +363,11 @@ void ED_vgroup_nr_vert_add(Object *ob, int def_nr, int vertnum, float weight, in if(dv==NULL) return; - dv+= vertnum; + /* check that vertnum is valid before trying to get the relevant dvert */ + if ((vertnum < 0) || (vertnum >= tot)) + return; + else + dv += vertnum; /* Lets first check to see if this vert is * already in the weight group -- if so @@ -536,7 +614,7 @@ static void vgroup_duplicate(Object *ob) bDeformGroup *dg, *cdg; char name[32], s[32]; MDeformWeight *org, *cpy; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, idg, icdg, dvert_tot=0; dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); @@ -569,13 +647,13 @@ static void vgroup_duplicate(Object *ob) ob->actdef = BLI_countlist(&ob->defbase); icdg = (ob->actdef-1); - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); if(!dvert_array) return; for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; org = defvert_find_index(dvert, idg); if(org) { float weight = org->weight; @@ -584,16 +662,18 @@ static void vgroup_duplicate(Object *ob) cpy->weight = weight; } } + + MEM_freeN(dvert_array); } static void vgroup_normalize(Object *ob) { bDeformGroup *dg; MDeformWeight *dw; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, def_nr, dvert_tot=0; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); @@ -603,7 +683,7 @@ static void vgroup_normalize(Object *ob) def_nr= ob->actdef-1; for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; dw = defvert_find_index(dvert, def_nr); if(dw) { weight_max = MAX2(dw->weight, weight_max); @@ -612,7 +692,7 @@ static void vgroup_normalize(Object *ob) if(weight_max > 0.0f) { for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; dw = defvert_find_index(dvert, def_nr); if(dw) { dw->weight /= weight_max; @@ -623,16 +703,18 @@ static void vgroup_normalize(Object *ob) } } } + + if (dvert_array) MEM_freeN(dvert_array); } static void vgroup_levels(Object *ob, float offset, float gain) { bDeformGroup *dg; MDeformWeight *dw; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, def_nr, dvert_tot=0; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); @@ -640,7 +722,7 @@ static void vgroup_levels(Object *ob, float offset, float gain) def_nr= ob->actdef-1; for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; dw = defvert_find_index(dvert, def_nr); if(dw) { dw->weight = gain * (dw->weight + offset); @@ -649,17 +731,19 @@ static void vgroup_levels(Object *ob, float offset, float gain) } } } + + if (dvert_array) MEM_freeN(dvert_array); } /* TODO - select between groups */ static void vgroup_normalize_all(Object *ob, int lock_active) { MDeformWeight *dw, *dw_act; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, dvert_tot=0; float tot_weight; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); if(dvert_array) { if(lock_active) { @@ -671,7 +755,7 @@ static void vgroup_normalize_all(Object *ob, int lock_active) tot_weight= 0.0f; dw_act= NULL; - dvert = dvert_array+i; + dvert = dvert_array[i]; j= dvert->totweight; while(j--) { @@ -709,7 +793,7 @@ static void vgroup_normalize_all(Object *ob, int lock_active) for(i = 0; i < dvert_tot; i++) { int j; tot_weight= 0.0f; - dvert = dvert_array+i; + dvert = dvert_array[i]; j= dvert->totweight; while(j--) { @@ -730,6 +814,8 @@ static void vgroup_normalize_all(Object *ob, int lock_active) } } } + + if (dvert_array) MEM_freeN(dvert_array); } @@ -737,10 +823,10 @@ static void vgroup_invert(Object *ob, int auto_assign, int auto_remove) { bDeformGroup *dg; MDeformWeight *dw; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, def_nr, dvert_tot=0; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); @@ -749,7 +835,7 @@ static void vgroup_invert(Object *ob, int auto_assign, int auto_remove) for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; if(auto_assign) { dw= defvert_verify_index(dvert, def_nr); @@ -767,6 +853,8 @@ static void vgroup_invert(Object *ob, int auto_assign, int auto_remove) } } } + + if (dvert_array) MEM_freeN(dvert_array); } static void vgroup_blend(Object *ob) @@ -858,10 +946,10 @@ static void vgroup_clean(Object *ob, float eul, int keep_single) { bDeformGroup *dg; MDeformWeight *dw; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, def_nr, dvert_tot=0; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); /* only the active group */ dg = BLI_findlink(&ob->defbase, (ob->actdef-1)); @@ -869,7 +957,7 @@ static void vgroup_clean(Object *ob, float eul, int keep_single) def_nr= ob->actdef-1; for(i = 0; i < dvert_tot; i++) { - dvert = dvert_array+i; + dvert = dvert_array[i]; dw= defvert_find_index(dvert, def_nr); @@ -880,21 +968,23 @@ static void vgroup_clean(Object *ob, float eul, int keep_single) } } } + + if (dvert_array) MEM_freeN(dvert_array); } static void vgroup_clean_all(Object *ob, float eul, int keep_single) { MDeformWeight *dw; - MDeformVert *dvert, *dvert_array=NULL; + MDeformVert *dvert, **dvert_array=NULL; int i, dvert_tot=0; - ED_vgroup_give_array(ob->data, &dvert_array, &dvert_tot); + ED_vgroup_give_parray(ob->data, &dvert_array, &dvert_tot); if(dvert_array) { for(i = 0; i < dvert_tot; i++) { int j; - dvert = dvert_array+i; + dvert = dvert_array[i]; j= dvert->totweight; while(j--) { @@ -910,6 +1000,8 @@ static void vgroup_clean_all(Object *ob, float eul, int keep_single) } } } + + if (dvert_array) MEM_freeN(dvert_array); } void ED_vgroup_mirror(Object *ob, int mirror_weights, int flip_vgroups) @@ -1287,7 +1379,7 @@ static void vgroup_assign_verts(Object *ob, float weight) done=1; break; } - } + } /* If not: Add the group and set its weight */ if(!done){ newdw = BLI_cellalloc_calloc(sizeof(MDeformWeight)*(dvert->totweight+1), "deformWeight"); @@ -1459,7 +1551,11 @@ static int vertex_group_remove_from_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_edit_object(C); - vgroup_remove_verts(ob, 0); + if(RNA_boolean_get(op->ptr, "all")) + vgroup_remove_verts(ob, 0); + else + vgroup_active_remove_verts(ob, 0); + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); @@ -1917,41 +2013,38 @@ void OBJECT_OT_vertex_group_set_active(wmOperatorType *ot) ot->prop= prop; } -static int vgroup_sort(void *def_a_ptr, void *def_b_ptr) +/*creates the name_array parameter for vgroup_do_remap, call this before fiddling + with the order of vgroups then call vgroup_do_remap after*/ +static char *vgroup_init_remap(Object *ob) { - bDeformGroup *def_a= (bDeformGroup *)def_a_ptr; - bDeformGroup *def_b= (bDeformGroup *)def_b_ptr; + bDeformGroup *def; + int def_tot = BLI_countlist(&ob->defbase); + char *name_array= MEM_mallocN(MAX_VGROUP_NAME * sizeof(char) * def_tot, "sort vgroups"); + char *name; - return strcmp(def_a->name, def_b->name); + name= name_array; + for(def = ob->defbase.first; def; def=def->next) { + BLI_strncpy(name, def->name, MAX_VGROUP_NAME); + name += MAX_VGROUP_NAME; + } + + return name_array; } -#define DEF_GROUP_SIZE (sizeof(((bDeformGroup *)NULL)->name)) -static int vertex_group_sort_exec(bContext *C, wmOperator *op) +static int vgroup_do_remap(Object *ob, char *name_array, wmOperator *op) { - Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + MDeformVert *dvert= NULL; bDeformGroup *def; int def_tot = BLI_countlist(&ob->defbase); - char *name; - char *name_array= MEM_mallocN(DEF_GROUP_SIZE * sizeof(char) * def_tot, "sort vgroups"); - int *sort_map_update= MEM_mallocN(DEF_GROUP_SIZE * sizeof(int) * def_tot + 1, "sort vgroups"); /* needs a dummy index at the start*/ + int *sort_map_update= MEM_mallocN(MAX_VGROUP_NAME * sizeof(int) * def_tot + 1, "sort vgroups"); /* needs a dummy index at the start*/ int *sort_map= sort_map_update + 1; + char *name; int i; - MDeformVert *dvert= NULL; - int dvert_tot; - - name= name_array; - for(def = ob->defbase.first; def; def=def->next){ - BLI_strncpy(name, def->name, DEF_GROUP_SIZE); - name += DEF_GROUP_SIZE; - } - - BLI_sortlist(&ob->defbase, vgroup_sort); - name= name_array; for(def= ob->defbase.first, i=0; def; def=def->next, i++){ sort_map[i]= BLI_findstringindex(&ob->defbase, name, offsetof(bDeformGroup, name)); - name += DEF_GROUP_SIZE; + name += MAX_VGROUP_NAME; } if(ob->mode == OB_MODE_EDIT) { @@ -1973,7 +2066,11 @@ static int vertex_group_sort_exec(bContext *C, wmOperator *op) } } else { + int dvert_tot=0; + ED_vgroup_give_array(ob->data, &dvert, &dvert_tot); + + /*create as necassary*/ while(dvert && dvert_tot--) { if(dvert->totweight) defvert_remap(dvert, sort_map); @@ -1986,21 +2083,45 @@ static int vertex_group_sort_exec(bContext *C, wmOperator *op) sort_map[i]++; sort_map_update[0]= 0; - vgroup_remap_update_users(ob, sort_map_update); ob->actdef= sort_map_update[ob->actdef]; - MEM_freeN(name_array); - MEM_freeN(sort_map_update); + return OPERATOR_FINISHED; +} - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); +static int vgroup_sort(void *def_a_ptr, void *def_b_ptr) +{ + bDeformGroup *def_a= (bDeformGroup *)def_a_ptr; + bDeformGroup *def_b= (bDeformGroup *)def_b_ptr; - return OPERATOR_FINISHED; + return strcmp(def_a->name, def_b->name); } -#undef DEF_GROUP_SIZE +static int vertex_group_sort_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + char *name_array; + int ret; + + /*init remapping*/ + name_array = vgroup_init_remap(ob); + + /*sort vgroup names*/ + BLI_sortlist(&ob->defbase, vgroup_sort); + + /*remap vgroup data to map to correct names*/ + ret = vgroup_do_remap(ob, name_array, op); + + if (ret != OPERATOR_CANCELLED) { + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); + } + + if (name_array) MEM_freeN(name_array); + + return ret; +} void OBJECT_OT_vertex_group_sort(wmOperatorType *ot) { @@ -2015,3 +2136,63 @@ void OBJECT_OT_vertex_group_sort(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + +static int vgroup_move_exec(bContext *C, wmOperator *op) +{ + Object *ob= CTX_data_pointer_get_type(C, "object", &RNA_Object).data; + bDeformGroup *def; + char *name_array; + int dir= RNA_enum_get(op->ptr, "direction"), ret; + + def = BLI_findlink(&ob->defbase, ob->actdef - 1); + if (!def) { + return OPERATOR_CANCELLED; + } + + name_array = vgroup_init_remap(ob); + + if (dir == 1) { /*up*/ + void *prev = def->prev; + + BLI_remlink(&ob->defbase, def); + BLI_insertlinkbefore(&ob->defbase, prev, def); + } else { /*down*/ + void *next = def->next; + + BLI_remlink(&ob->defbase, def); + BLI_insertlinkafter(&ob->defbase, next, def); + } + + ret = vgroup_do_remap(ob, name_array, op); + + if (name_array) MEM_freeN(name_array); + + if (ret != OPERATOR_CANCELLED) { + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob); + } + + return ret; +} + +void OBJECT_OT_vertex_group_move(wmOperatorType *ot) +{ + static EnumPropertyItem vgroup_slot_move[] = { + {1, "UP", 0, "Up", ""}, + {-1, "DOWN", 0, "Down", ""}, + {0, NULL, 0, NULL, NULL} + }; + + /* identifiers */ + ot->name= "Move Vertex Group"; + ot->idname= "OBJECT_OT_vertex_group_move"; + + /* api callbacks */ + ot->poll= vertex_group_poll; + ot->exec= vgroup_move_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_enum(ot->srna, "direction", vgroup_slot_move, 0, "Direction", "Direction to move, UP or DOWN"); +} diff --git a/source/blender/editors/physics/CMakeLists.txt b/source/blender/editors/physics/CMakeLists.txt new file mode 100644 index 00000000000..ebe3f913508 --- /dev/null +++ b/source/blender/editors/physics/CMakeLists.txt @@ -0,0 +1,47 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/elbeem/extern + ../../../../intern/guardedalloc +) + +IF(NOT WITH_ELBEEM) + ADD_DEFINITIONS(-DDISABLE_ELBEEM) +ENDIF(NOT WITH_ELBEEM) + +IF(WITH_OPENMP) + ADD_DEFINITIONS(-DPARALLEL=1) +ENDIF(WITH_OPENMP) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_physics "${SRC}" "${INC}") diff --git a/source/blender/editors/physics/particle_boids.c b/source/blender/editors/physics/particle_boids.c index e738aa34d07..37de0d8f873 100644 --- a/source/blender/editors/physics/particle_boids.c +++ b/source/blender/editors/physics/particle_boids.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,9 +29,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_boid_types.h" #include "DNA_particle_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" #include "BKE_boids.h" diff --git a/source/blender/editors/physics/particle_edit.c b/source/blender/editors/physics/particle_edit.c index 71c18b35365..da0034ac2f9 100644 --- a/source/blender/editors/physics/particle_edit.c +++ b/source/blender/editors/physics/particle_edit.c @@ -36,15 +36,9 @@ #include "DNA_scene_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_force.h" -#include "DNA_object_types.h" -#include "DNA_vec_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_DerivedMesh.h" #include "BKE_depsgraph.h" @@ -66,7 +60,6 @@ #include "BLI_kdtree.h" #include "BLI_rand.h" -#include "PIL_time.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -75,7 +68,6 @@ #include "ED_particle.h" #include "ED_view3d.h" -#include "UI_interface.h" #include "UI_resources.h" #include "WM_api.h" @@ -132,7 +124,7 @@ int PE_hair_poll(bContext *C) return (edit && edit->psys); } -int PE_poll_3dview(bContext *C) +int PE_poll_view3d(bContext *C) { return PE_poll(C) && CTX_wm_area(C)->spacetype == SPACE_VIEW3D && CTX_wm_region(C)->regiontype == RGN_TYPE_WINDOW; @@ -168,7 +160,7 @@ void PE_free_ptcache_edit(PTCacheEdit *edit) edit->emitter_field= 0; } - psys_free_path_cache(NULL, edit); + psys_free_path_cache(edit->psys, edit); MEM_freeN(edit); } @@ -211,7 +203,7 @@ static PTCacheEdit *pe_get_current(Scene *scene, Object *ob, int create) pset->scene = scene; pset->object = ob; - BKE_ptcache_ids_from_object(&pidlist, ob); + BKE_ptcache_ids_from_object(&pidlist, ob, NULL, 0); /* in the case of only one editable thing, set pset->edittype accordingly */ if(pidlist.first && pidlist.first == pidlist.last) { @@ -831,9 +823,12 @@ static void PE_apply_mirror(Object *ob, ParticleSystem *psys) edit= psys->edit; psmd= psys_get_modifier(ob, psys); - if(!edit->mirror_cache || !psmd->dm) + if(!psmd->dm) return; + if(!edit->mirror_cache) + PE_update_mirror_cache(ob, psys); + /* we delay settings the PARS_EDIT_RECALC for mirrored particles * to avoid doing mirror twice */ LOOP_POINTS { @@ -902,13 +897,13 @@ static void pe_deflect_emitter(Scene *scene, Object *ob, PTCacheEdit *edit) if(dot<dist_1st) { normalize_v3(dvec); mul_v3_fl(dvec,dist_1st-dot); - add_v3_v3v3(key->co,key->co,dvec); + add_v3_v3(key->co, dvec); } } else { normalize_v3(dvec); mul_v3_fl(dvec,dist_1st-dot); - add_v3_v3v3(key->co,key->co,dvec); + add_v3_v3(key->co, dvec); } if(k==1) dist_1st*=1.3333f; @@ -994,7 +989,7 @@ static void pe_iterate_lengths(Scene *scene, PTCacheEdit *edit) } if(k) { - add_v3_v3v3((key-1)->co,(key-1)->co,dv1); + add_v3_v3((key-1)->co, dv1); } VECADD(dv1,dv0,dv2); @@ -1326,7 +1321,7 @@ static int select_all_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1376,7 +1371,7 @@ int PE_mouse_particles(bContext *C, short *mval, int extend) for_mouse_hit_keys(&data, toggle_key_select, 1); /* nearest only */ PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1385,11 +1380,14 @@ int PE_mouse_particles(bContext *C, short *mval, int extend) static void select_root(PEData *data, int point_index) { + if (data->edit->points[point_index].flag & PEP_HIDE) + return; + data->edit->points[point_index].keys->flag |= PEK_SELECT; data->edit->points[point_index].flag |= PEP_EDIT_RECALC; /* redraw selection only */ } -static int select_first_exec(bContext *C, wmOperator *op) +static int select_roots_exec(bContext *C, wmOperator *op) { PEData data; @@ -1397,19 +1395,19 @@ static int select_first_exec(bContext *C, wmOperator *op) foreach_point(&data, select_root); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } -void PARTICLE_OT_select_first(wmOperatorType *ot) +void PARTICLE_OT_select_roots(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select First"; - ot->idname= "PARTICLE_OT_select_first"; + ot->name= "Select Roots"; + ot->idname= "PARTICLE_OT_select_roots"; /* api callbacks */ - ot->exec= select_first_exec; + ot->exec= select_roots_exec; ot->poll= PE_poll; /* flags */ @@ -1421,11 +1419,15 @@ void PARTICLE_OT_select_first(wmOperatorType *ot) static void select_tip(PEData *data, int point_index) { PTCacheEditPoint *point = data->edit->points + point_index; + + if (point->flag & PEP_HIDE) + return; + point->keys[point->totkey - 1].flag |= PEK_SELECT; point->flag |= PEP_EDIT_RECALC; /* redraw selection only */ } -static int select_last_exec(bContext *C, wmOperator *op) +static int select_tips_exec(bContext *C, wmOperator *op) { PEData data; @@ -1433,19 +1435,19 @@ static int select_last_exec(bContext *C, wmOperator *op) foreach_point(&data, select_tip); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } -void PARTICLE_OT_select_last(wmOperatorType *ot) +void PARTICLE_OT_select_tips(wmOperatorType *ot) { /* identifiers */ - ot->name= "Select Last"; - ot->idname= "PARTICLE_OT_select_last"; + ot->name= "Select Tips"; + ot->idname= "PARTICLE_OT_select_tips"; /* api callbacks */ - ot->exec= select_last_exec; + ot->exec= select_tips_exec; ot->poll= PE_poll; /* flags */ @@ -1473,7 +1475,7 @@ static int select_linked_exec(bContext *C, wmOperator *op) for_mouse_hit_keys(&data, select_keys, 1); /* nearest only */ PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1499,7 +1501,7 @@ void PARTICLE_OT_select_linked(wmOperatorType *ot) /* api callbacks */ ot->exec= select_linked_exec; ot->invoke= select_linked_invoke; - ot->poll= PE_poll_3dview; + ot->poll= PE_poll_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1539,7 +1541,7 @@ int PE_border_select(bContext *C, rcti *rect, int select, int extend) for_mouse_hit_keys(&data, select_key, 0); PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1564,7 +1566,7 @@ int PE_circle_select(bContext *C, int selecting, short *mval, float rad) for_mouse_hit_keys(&data, select_key, 0); PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1630,7 +1632,7 @@ int PE_lasso_select(bContext *C, short mcords[][2], short moves, short select) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1664,7 +1666,7 @@ static int hide_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1706,7 +1708,7 @@ static int reveal_exec(bContext *C, wmOperator *op) } PE_update_selection(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, ob); return OPERATOR_FINISHED; } @@ -1764,7 +1766,7 @@ static int select_less_exec(bContext *C, wmOperator *op) foreach_point(&data, select_less_keys); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1825,7 +1827,7 @@ static int select_more_exec(bContext *C, wmOperator *op) foreach_point(&data, select_more_keys); PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1862,7 +1864,7 @@ static int select_inverse_exec(bContext *C, wmOperator *op) } PE_update_selection(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_SELECTED, data.ob); return OPERATOR_FINISHED; } @@ -1953,7 +1955,7 @@ static int rekey_exec(bContext *C, wmOperator *op) recalc_lengths(data.edit); PE_update_object(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2258,7 +2260,7 @@ static int subdivide_exec(bContext *C, wmOperator *op) recalc_lengths(data.edit); PE_update_object(data.scene, data.ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2346,7 +2348,7 @@ static int remove_doubles_exec(bContext *C, wmOperator *op) BKE_reportf(op->reports, RPT_INFO, "Remove %d double particles.", totremoved); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); return OPERATOR_FINISHED; } @@ -2381,21 +2383,22 @@ static int weight_set_exec(bContext *C, wmOperator *op) HairKey *hkey; float weight; ParticleBrushData *brush= &pset->brush[pset->brushtype]; - edit= psys->edit; + float factor= RNA_float_get(op->ptr, "factor"); - weight= (float)(brush->strength / 100.0f); + weight= brush->strength; + edit= psys->edit; LOOP_SELECTED_POINTS { ParticleData *pa= psys->particles + p; LOOP_SELECTED_KEYS { hkey= pa->hair + k; - hkey->weight= weight; + hkey->weight= interpf(weight, hkey->weight, factor); } } DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); return OPERATOR_FINISHED; } @@ -2412,6 +2415,8 @@ void PARTICLE_OT_weight_set(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + RNA_def_float(ot->srna, "factor", 1, 0, 1, "Factor", "", 0, 1); } /************************ cursor drawing *******************************/ @@ -2451,7 +2456,7 @@ static void toggle_particle_cursor(bContext *C, int enable) pset->paintcursor = NULL; } else if(enable) - pset->paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), PE_poll_3dview, brush_drawcursor, NULL); + pset->paintcursor= WM_paint_cursor_activate(CTX_wm_manager(C), PE_poll_view3d, brush_drawcursor, NULL); } /********************* radial control operator *********************/ @@ -2507,6 +2512,8 @@ static int brush_radial_control_exec(bContext *C, wmOperator *op) else if(mode == WM_RADIALCONTROL_STRENGTH) brush->strength= new_value; + WM_event_add_notifier(C, NC_WINDOW, NULL); + return OPERATOR_FINISHED; } @@ -2568,7 +2575,7 @@ static int delete_exec(bContext *C, wmOperator *op) } DAG_id_flush_update(&data.ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, data.ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, data.ob); return OPERATOR_FINISHED; } @@ -2727,7 +2734,7 @@ static int mirror_exec(bContext *C, wmOperator *op) PE_mirror_x(scene, ob, 0); update_world_cos(ob, edit); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); return OPERATOR_FINISHED; @@ -2941,7 +2948,7 @@ static void brush_puff(PEData *data, int point_index) VECCOPY(co, key->co); mul_m4_v3(mat, co); length += len_v3v3(lastco, co); - if((key->flag & PEK_SELECT) && !(key->flag & PEK_HIDE)) { + if((data->select==0 || (key->flag & PEK_SELECT)) && !(key->flag & PEK_HIDE)) { VECADDFAC(kco, rootco, nor, length); /* blend between the current and straight position */ @@ -3356,7 +3363,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) data.mval= mval; data.rad= (float)brush->size; - data.combfac= (float)(brush->strength - 50) / 50.0f; + data.combfac= (brush->strength - 0.5f) * 2.0f; if(data.combfac < 0.0f) data.combfac= 1.0f - 9.0f * data.combfac; else @@ -3378,7 +3385,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) PE_set_view3d_data(C, &data); data.mval= mval; data.rad= (float)brush->size; - data.cutfac= (float)(brush->strength / 100.0f); + data.cutfac= brush->strength; if(selected) foreach_selected_point(&data, brush_cut); @@ -3402,7 +3409,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) data.mval= mval; data.rad= (float)brush->size; - data.growfac= (float)brush->strength / 5000.0f; + data.growfac= brush->strength / 50.0f; if(brush->invert ^ flip) data.growfac= 1.0f - data.growfac; @@ -3424,8 +3431,9 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) data.dm= psmd->dm; data.mval= mval; data.rad= (float)brush->size; + data.select= selected; - data.pufffac= (float)(brush->strength - 50) / 50.0f; + data.pufffac= (brush->strength - 0.5f) * 2.0f; if(data.pufffac < 0.0f) data.pufffac= 1.0f - 9.0f * data.pufffac; else @@ -3446,7 +3454,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) PE_set_view3d_data(C, &data); data.mval= mval; - added= brush_add(&data, brush->strength); + added= brush_add(&data, brush->count); if(pset->flag & PE_KEEP_LENGTHS) recalc_lengths(edit); @@ -3466,7 +3474,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) data.vec[0]= data.vec[1]= data.vec[2]= 0.0f; data.tot= 0; - data.smoothfac= (float)(brush->strength / 100.0f); + data.smoothfac= brush->strength; invert_m4_m4(ob->imat, ob->obmat); @@ -3489,7 +3497,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) data.mval= mval; data.rad= (float)brush->size; - data.weightfac = (float)(brush->strength / 100.0f); /* note that this will never be zero */ + data.weightfac = brush->strength; /* note that this will never be zero */ foreach_mouse_hit_key(&data, brush_weight, selected); } @@ -3511,7 +3519,7 @@ static void brush_edit_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) else PE_update_object(scene, ob, 1); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_SELECT, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); bedit->lastmouse[0]= mouse[0]; bedit->lastmouse[1]= mouse[1]; @@ -3608,7 +3616,7 @@ void PARTICLE_OT_brush_edit(wmOperatorType *ot) ot->invoke= brush_edit_invoke; ot->modal= brush_edit_modal; ot->cancel= brush_edit_cancel; - ot->poll= PE_poll_3dview; + ot->poll= PE_poll_view3d; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; @@ -3665,6 +3673,8 @@ static void make_PTCacheUndo(PTCacheEdit *edit, PTCacheUndo *undo) for(; pm; pm=pm->next) { for(i=0; i<BPHYS_TOT_DATA; i++) pm->data[i] = MEM_dupallocN(pm->data[i]); + + pm->index_array = MEM_dupallocN(pm->index_array); } } @@ -3739,6 +3749,8 @@ static void get_PTCacheUndo(PTCacheEdit *edit, PTCacheUndo *undo) for(i=0; i<BPHYS_TOT_DATA; i++) pm->data[i] = MEM_dupallocN(pm->data[i]); + pm->index_array = MEM_dupallocN(pm->index_array); + BKE_ptcache_mem_init_pointers(pm); LOOP_POINTS { @@ -4003,12 +4015,20 @@ static void PE_create_particle_edit(Scene *scene, Object *ob, PointCache *cache, LOOP_POINTS { if(psys) { - pa = psys->particles + p; - if((pm->next && pm->next->frame < pa->time) - || (pm->prev && pm->prev->frame >= pa->dietime)) { - BKE_ptcache_mem_incr_pointers(pm); + if(pm->index_array) { + if(pm->index_array[p]) + BKE_ptcache_mem_seek_pointers(p, pm); + else continue; - } + } + else { + pa = psys->particles + p; + if((pm->next && pm->next->frame < pa->time) + || (pm->prev && pm->prev->frame >= pa->dietime)) { + BKE_ptcache_mem_incr_pointers(pm); + continue; + } + } } if(!point->totkey) { @@ -4118,7 +4138,7 @@ static int clear_edited_exec(bContext *C, wmOperator *op) psys->flag &= ~PSYS_EDITED; psys_reset(psys, PSYS_RESET_DEPSGRAPH); - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); } } diff --git a/source/blender/editors/physics/particle_object.c b/source/blender/editors/physics/particle_object.c index f590339b91d..bb30d30fd0e 100644 --- a/source/blender/editors/physics/particle_object.c +++ b/source/blender/editors/physics/particle_object.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,10 +32,7 @@ #include "DNA_meshdata_types.h" #include "DNA_modifier_types.h" -#include "DNA_object_types.h" -#include "DNA_particle_types.h" #include "DNA_scene_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_listbase.h" @@ -72,7 +69,9 @@ static int particle_system_add_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; object_add_particle_system(scene, ob, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -110,7 +109,8 @@ static int particle_system_remove_exec(bContext *C, wmOperator *op) if(scene->basact && scene->basact->object==ob) WM_event_add_notifier(C, NC_SCENE|ND_MODE|NS_MODE_OBJECT, NULL); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -169,7 +169,7 @@ static int new_particle_settings_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -217,7 +217,7 @@ static int new_particle_target_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -265,7 +265,7 @@ static int remove_particle_target_exec(bContext *C, wmOperator *op) DAG_scene_sort(scene); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -303,7 +303,7 @@ static int target_move_up_exec(bContext *C, wmOperator *op) BLI_insertlink(&psys->targets, pt->prev->prev, pt); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); break; } } @@ -341,7 +341,7 @@ static int target_move_down_exec(bContext *C, wmOperator *op) BLI_insertlink(&psys->targets, pt->next, pt); DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); break; } } @@ -379,7 +379,7 @@ static int dupliob_move_up_exec(bContext *C, wmOperator *op) BLI_remlink(&part->dupliweights, dw); BLI_insertlink(&part->dupliweights, dw->prev->prev, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -418,7 +418,7 @@ static int copy_particle_dupliob_exec(bContext *C, wmOperator *op) dw->flag |= PART_DUPLIW_CURRENT; BLI_addhead(&part->dupliweights, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -464,7 +464,7 @@ static int remove_particle_dupliob_exec(bContext *C, wmOperator *op) if(dw) dw->flag |= PART_DUPLIW_CURRENT; - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); return OPERATOR_FINISHED; } @@ -501,7 +501,7 @@ static int dupliob_move_down_exec(bContext *C, wmOperator *op) BLI_remlink(&part->dupliweights, dw); BLI_insertlink(&part->dupliweights, dw->next, dw); - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, NULL); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, NULL); break; } } @@ -526,6 +526,7 @@ void PARTICLE_OT_dupliob_move_down(wmOperatorType *ot) static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys) { ParticleSystemModifierData *psmd = psys_get_modifier(ob,psys); + ParticleEditSettings *pset= PE_settings(scene); ParticleData *pa; PTCacheEdit *edit; PTCacheEditPoint *point; @@ -565,6 +566,9 @@ static void disconnect_hair(Scene *scene, Object *ob, ParticleSystem *psys) psys->flag |= PSYS_GLOBAL_HAIR; + if(ELEM(pset->brushtype, PE_BRUSH_ADD, PE_BRUSH_PUFF)) + pset->brushtype = PE_BRUSH_NONE; + PE_update_object(scene, ob, 0); } @@ -589,7 +593,7 @@ static int disconnect_hair_exec(bContext *C, wmOperator *op) disconnect_hair(scene, ob, psys); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } @@ -728,7 +732,7 @@ static int connect_hair_exec(bContext *C, wmOperator *op) connect_hair(scene, ob, psys); } - WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/physics/physics_fluid.c b/source/blender/editors/physics/physics_fluid.c index 65701f89c4e..23f604d8c12 100644 --- a/source/blender/editors/physics/physics_fluid.c +++ b/source/blender/editors/physics/physics_fluid.c @@ -45,25 +45,17 @@ #include "MEM_guardedalloc.h" /* types */ -#include "DNA_curve_types.h" +#include "DNA_anim_types.h" +#include "DNA_action_types.h" #include "DNA_object_types.h" #include "DNA_object_fluidsim.h" -#include "DNA_key_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_lattice_types.h" -#include "DNA_scene_types.h" -#include "DNA_camera_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_ipo_types.h" -#include "DNA_key_types.h" #include "BLI_blenlib.h" #include "BLI_threads.h" #include "BLI_math.h" +#include "BKE_animsys.h" +#include "BKE_armature.h" #include "BKE_blender.h" #include "BKE_context.h" #include "BKE_customdata.h" @@ -80,17 +72,15 @@ #include "BKE_report.h" #include "BKE_scene.h" #include "BKE_softbody.h" +#include "BKE_unit.h" -#include "PIL_time.h" #include "LBM_fluidsim.h" #include "BIF_gl.h" -#include "ED_fluidsim.h" #include "ED_screen.h" -#include "WM_api.h" #include "WM_types.h" #include "physics_intern.h" // own include @@ -98,85 +88,110 @@ /* enable/disable overall compilation */ #ifndef DISABLE_ELBEEM -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) -/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */ -#include <pthread.h> -extern pthread_key_t gomp_tls_key; -static void *thread_tls_data; -#endif +#include "WM_api.h" +#include "DNA_scene_types.h" +#include "DNA_ipo_types.h" +#include "DNA_mesh_types.h" -/* XXX */ -/* from header info.c */ -static int start_progress_bar(void) {return 0;}; -static void end_progress_bar(wmWindow *win) {WM_cursor_restore(win);}; -static void waitcursor(int val) {}; -static int progress_bar(wmWindow *win, float done, char *busy_info) { WM_timecursor(win,done*100); return 0;} -static int pupmenu() {return 0;} -/* XXX */ - - -double fluidsimViscosityPreset[6] = { - -1.0, /* unused */ - -1.0, /* manual */ - 1.0e-6, /* water */ - 5.0e-5, /* some (thick) oil */ - 2.0e-3, /* ca. honey */ - -1.0 /* end */ -}; - -char* fluidsimViscosityPresetString[6] = { - "UNUSED", /* unused */ - "UNUSED", /* manual */ - " = 1.0 * 10^-6", /* water */ - " = 5.0 * 10^-5", /* some (thick) oil */ - " = 2.0 * 10^-3", /* ca. honey */ - "INVALID" /* end */ -}; +#include "PIL_time.h" + + +static float get_fluid_viscosity(FluidsimSettings *settings) +{ + switch (settings->viscosityMode) { + case 0: /* unused */ + return -1.0; + case 2: /* water */ + return 1.0e-6; + case 3: /* some (thick) oil */ + return 5.0e-5; + case 4: /* ca. honey */ + return 2.0e-3; + case 1: /* manual */ + default: + return (1.0/pow(10.0, settings->viscosityExponent)) * settings->viscosityValue; + } +} + +static void get_fluid_gravity(float *gravity, Scene *scene, FluidsimSettings *fss) +{ + if (scene->physics_settings.flag & PHYS_GLOBAL_GRAVITY) { + copy_v3_v3(gravity, scene->physics_settings.gravity); + } else { + copy_v3_v3(gravity, &fss->gravx); + } +} + +static float get_fluid_size_m(Scene *scene, Object *domainob, FluidsimSettings *fss) +{ + if (!scene->unit.system) { + return fss->realsize; + } else { + float dim[3]; + float longest_axis; + + object_get_dimensions(domainob, dim); + longest_axis = MAX3(dim[0], dim[1], dim[2]); + + return longest_axis * scene->unit.scale_length; + } +} + +static int fluid_is_animated_mesh(FluidsimSettings *fss) +{ + return ((fss->type == OB_FLUIDSIM_CONTROL) || fss->domainNovecgen); +} /* ********************** fluid sim settings struct functions ********************** */ +#if 0 /* helper function */ void fluidsimGetGeometryObjFilename(Object *ob, char *dst) { //, char *srcname) { //snprintf(dst,FILE_MAXFILE, "%s_cfgdata_%s.bobj.gz", srcname, ob->id.name); snprintf(dst,FILE_MAXFILE, "fluidcfgdata_%s.bobj.gz", ob->id.name); } +#endif - - -/* ******************************************************************************** */ /* ********************** fluid sim channel helper functions ********************** */ -/* ******************************************************************************** */ + +typedef struct FluidAnimChannels { + int length; + + double aniFrameTime; + + float *timeAtFrame; + float *DomainTime; + float *DomainGravity; + float *DomainViscosity; +} FluidAnimChannels; + +typedef struct FluidObject { + struct FluidObject *next, *prev; + + struct Object *object; + + float *Translation; + float *Rotation; + float *Scale; + float *Active; + + float *InitialVelocity; + + float *AttractforceStrength; + float *AttractforceRadius; + float *VelocityforceStrength; + float *VelocityforceRadius; + + float *VertexCache; + int numVerts, numTris; +} FluidObject; // no. of entries for the two channel sizes #define CHANNEL_FLOAT 1 #define CHANNEL_VEC 3 -#define FS_FREE_ONECHANNEL(c,str) { \ - if(c){ MEM_freeN(c); c=NULL; } \ -} // end ONE CHANN, debug: fprintf(stderr,"freeing " str " \n"); - -#define FS_FREE_CHANNELS { \ - FS_FREE_ONECHANNEL(timeAtIndex,"timeAtIndex");\ - FS_FREE_ONECHANNEL(timeAtFrame,"timeAtFrame");\ - FS_FREE_ONECHANNEL(channelDomainTime,"channelDomainTime"); \ - FS_FREE_ONECHANNEL(channelDomainGravity,"channelDomainGravity");\ - FS_FREE_ONECHANNEL(channelDomainViscosity,"channelDomainViscosity");\ - for(i=0;i<256;i++) { \ - FS_FREE_ONECHANNEL(channelObjMove[i][0],"channelObjMove0"); \ - FS_FREE_ONECHANNEL(channelObjMove[i][1],"channelObjMove1"); \ - FS_FREE_ONECHANNEL(channelObjMove[i][2],"channelObjMove2"); \ - FS_FREE_ONECHANNEL(channelObjInivel[i],"channelObjInivel"); \ - FS_FREE_ONECHANNEL(channelObjActive[i],"channelObjActive"); \ - FS_FREE_ONECHANNEL(channelAttractforceStrength[i],"channelAttractforceStrength"); \ - FS_FREE_ONECHANNEL(channelAttractforceRadius[i],"channelAttractforceRadius"); \ - FS_FREE_ONECHANNEL(channelVelocityforceStrength[i],"channelVelocityforceStrength"); \ - FS_FREE_ONECHANNEL(channelVelocityforceRadius[i],"channelVelocityforceRadius"); \ - } \ -} // end FS FREE CHANNELS - - // simplify channels before printing // for API this is done anyway upon init #if 0 @@ -207,341 +222,653 @@ static void fluidsimPrintChannel(FILE *file, float *channel, int paramsize, char } #endif -static void fluidsimInitChannel(Scene *scene, float **setchannel, int size, float *time, - int *icuIds, float *defaults, Ipo* ipo, int entries) + +/* Note: fluid anim channel data layout + * ------------------------------------ + * CHANNEL_FLOAT: + * frame 1 |frame 2 + * [dataF][time][dataF][time] + * + * CHANNEL_VEC: + * frame 1 |frame 2 + * [dataX][dataY][dataZ][time][dataX][dataY][dataZ][time] + * + */ + +static void init_time(FluidsimSettings *domainSettings, FluidAnimChannels *channels) { + int i; + + channels->timeAtFrame = MEM_callocN( (channels->length+1)*sizeof(float), "timeAtFrame channel"); + + channels->timeAtFrame[0] = channels->timeAtFrame[1] = domainSettings->animStart; // start at index 1 + + for(i=2; i<=channels->length; i++) { + channels->timeAtFrame[i] = channels->timeAtFrame[i-1] + channels->aniFrameTime; + } +} + +/* if this is slow, can replace with faster, less readable code */ +static void set_channel(float *channel, float time, float *value, int i, int size) +{ + if (size == CHANNEL_FLOAT) { + channel[(i * 2) + 0] = value[0]; + channel[(i * 2) + 1] = time; + } + else if (size == CHANNEL_VEC) { + channel[(i * 4) + 0] = value[0]; + channel[(i * 4) + 1] = value[1]; + channel[(i * 4) + 2] = value[2]; + channel[(i * 4) + 3] = time; + } +} - int i, j; - char *cstr = NULL; - float *channel = NULL; +static void set_vertex_channel(float *channel, float time, struct Scene *scene, struct FluidObject *fobj, int i) +{ + Object *ob = fobj->object; + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); + float *verts; + int *tris=NULL, numVerts=0, numTris=0; + int modifierIndex = modifiers_indexInObject(ob, (ModifierData *)fluidmd); + int framesize = (3*fobj->numVerts) + 1; + int j; + + if (channel == NULL) + return; - cstr = "fluidsiminit_channelfloat"; - if(entries>1) cstr = "fluidsiminit_channelvec"; - channel = MEM_callocN( size* (entries+1)* sizeof(float), cstr ); + initElbeemMesh(scene, ob, &numVerts, &verts, &numTris, &tris, 1, modifierIndex); - /* defaults for now */ - for(j=0; j<entries; j++) { - for(i=1; i<=size; i++) { - channel[(i-1)*(entries+1) + j] = defaults[j]; - } + /* don't allow mesh to change number of verts in anim sequence */ + if (numVerts != fobj->numVerts) { + MEM_freeN(channel); + channel = NULL; + return; } - for(i=1; i<=size; i++) { - channel[(i-1)*(entries+1) + entries] = time[i]; + /* fill frame of channel with vertex locations */ + for(j=0; j < (3*numVerts); j++) { + channel[i*framesize + j] = verts[j]; } + channel[i*framesize + framesize-1] = time; + + MEM_freeN(verts); + MEM_freeN(tris); +} - *setchannel = channel; +static void free_domain_channels(FluidAnimChannels *channels) +{ + if (!channels->timeAtFrame) + return; + MEM_freeN(channels->timeAtFrame); + channels->timeAtFrame = NULL; + MEM_freeN(channels->DomainGravity); + channels->DomainGravity = NULL; + MEM_freeN(channels->DomainViscosity); + channels->DomainViscosity = NULL; +} -#if 0 - /* goes away completely */ - int i,j; - IpoCurve* icus[3]; - char *cstr = NULL; - float *channel = NULL; - float aniFrlen = scene->r.framelen; - int current_frame = scene->r.cfra; - if((entries<1) || (entries>3)) { - printf("fluidsimInitChannel::Error - invalid no. of entries: %d\n",entries); - entries = 1; +static void free_all_fluidobject_channels(ListBase *fobjects) +{ + FluidObject *fobj; + + for (fobj=fobjects->first; fobj; fobj=fobj->next) { + if (fobj->Translation) { + MEM_freeN(fobj->Translation); + fobj->Translation = NULL; + MEM_freeN(fobj->Rotation); + fobj->Rotation = NULL; + MEM_freeN(fobj->Scale); + fobj->Scale = NULL; + MEM_freeN(fobj->Active); + fobj->Active = NULL; + MEM_freeN(fobj->InitialVelocity); + fobj->InitialVelocity = NULL; + } + + if (fobj->AttractforceStrength) { + MEM_freeN(fobj->AttractforceStrength); + fobj->AttractforceStrength = NULL; + MEM_freeN(fobj->AttractforceRadius); + fobj->AttractforceRadius = NULL; + MEM_freeN(fobj->VelocityforceStrength); + fobj->VelocityforceStrength = NULL; + MEM_freeN(fobj->VelocityforceRadius); + fobj->VelocityforceRadius = NULL; + } + + if (fobj->VertexCache) { + MEM_freeN(fobj->VertexCache); + fobj->VertexCache = NULL; + } } +} - cstr = "fluidsiminit_channelfloat"; - if(entries>1) cstr = "fluidsiminit_channelvec"; - channel = MEM_callocN( size* (entries+1)* sizeof(float), cstr ); +static void fluid_init_all_channels(bContext *C, Object *fsDomain, FluidsimSettings *domainSettings, FluidAnimChannels *channels, ListBase *fobjects) +{ + Scene *scene = CTX_data_scene(C); + Base *base; + int i; + int length = channels->length; + float eval_time; - if(ipo) { - for(j=0; j<entries; j++) icus[j] = find_ipocurve(ipo, icuIds[j] ); - } else { - for(j=0; j<entries; j++) icus[j] = NULL; - } + /* XXX: first init time channel - temporary for now */ + /* init time values (should be done after evaluating animated time curve) */ + init_time(domainSettings, channels); - for(j=0; j<entries; j++) { - if(icus[j]) { - for(i=1; i<=size; i++) { - /* Bugfix to make python drivers working - // which uses Blender.get("curframe") - */ - scene->r.cfra = floor(aniFrlen*((float)i)); + /* allocate domain animation channels */ + channels->DomainGravity = MEM_callocN( length * (CHANNEL_VEC+1) * sizeof(float), "channel DomainGravity"); + channels->DomainViscosity = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "channel DomainViscosity"); + //channels->DomainTime = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "channel DomainTime"); + + /* allocate fluid objects */ + for (base=scene->base.first; base; base= base->next) { + Object *ob = base->object; + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); + + if (fluidmd) { + FluidObject *fobj = MEM_callocN(sizeof(FluidObject), "Fluid Object"); + fobj->object = ob; + + if (ELEM(fluidmd->fss->type, OB_FLUIDSIM_DOMAIN, OB_FLUIDSIM_PARTICLE)) { + BLI_addtail(fobjects, fobj); + continue; + } + + fobj->Translation = MEM_callocN( length * (CHANNEL_VEC+1) * sizeof(float), "fluidobject Translation"); + fobj->Rotation = MEM_callocN( length * (CHANNEL_VEC+1) * sizeof(float), "fluidobject Rotation"); + fobj->Scale = MEM_callocN( length * (CHANNEL_VEC+1) * sizeof(float), "fluidobject Scale"); + fobj->Active = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "fluidobject Active"); + fobj->InitialVelocity = MEM_callocN( length * (CHANNEL_VEC+1) * sizeof(float), "fluidobject InitialVelocity"); + + if (fluidmd->fss->type == OB_FLUIDSIM_CONTROL) { + fobj->AttractforceStrength = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "fluidobject AttractforceStrength"); + fobj->AttractforceRadius = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "fluidobject AttractforceRadius"); + fobj->VelocityforceStrength = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "fluidobject VelocityforceStrength"); + fobj->VelocityforceRadius = MEM_callocN( length * (CHANNEL_FLOAT+1) * sizeof(float), "fluidobject VelocityforceRadius"); + } + + if (fluid_is_animated_mesh(fluidmd->fss)) { + float *verts=NULL; + int *tris=NULL, modifierIndex = modifiers_indexInObject(ob, (ModifierData *)fluidmd); + + initElbeemMesh(scene, ob, &fobj->numVerts, &verts, &fobj->numTris, &tris, 0, modifierIndex); + fobj->VertexCache = MEM_callocN( length *((fobj->numVerts*CHANNEL_VEC)+1) * sizeof(float), "fluidobject VertexCache"); - // XXX calc_icu(icus[j], aniFrlen*((float)i) ); - channel[(i-1)*(entries+1) + j] = icus[j]->curval; + MEM_freeN(verts); + MEM_freeN(tris); } - } else { - for(i=1; i<=size; i++) { channel[(i-1)*(entries+1) + j] = defaults[j]; } + + BLI_addtail(fobjects, fobj); } - //printf("fluidsimInitChannel entry:%d , ",j); for(i=1; i<=size; i++) { printf(" val%d:%f ",i, channel[(i-1)*(entries+1) + j] ); } printf(" \n"); // DEBUG } - // set time values - for(i=1; i<=size; i++) { - channel[(i-1)*(entries+1) + entries] = time[i]; + + /* now we loop over the frames and fill the allocated channels with data */ + for (i=0; i<channels->length; i++) { + FluidObject *fobj; + float viscosity, gravity[3]; + float timeAtFrame; + + eval_time = domainSettings->bakeStart + i; + timeAtFrame = channels->timeAtFrame[i+1]; + + /* XXX: This can't be used due to an anim sys optimisation that ignores recalc object animation, + * leaving it for the depgraph (this ignores object animation such as modifier properties though... :/ ) + * --> BKE_animsys_evaluate_all_animation(G.main, eval_time); + * This doesn't work with drivers: + * --> BKE_animsys_evaluate_animdata(&fsDomain->id, fsDomain->adt, eval_time, ADT_RECALC_ALL); + */ + + /* Modifying the global scene isn't nice, but we can do it in + * this part of the process before a threaded job is created */ + scene->r.cfra = (int)eval_time; + ED_update_for_newframe(C, 1); + + /* now scene data should be current according to animation system, so we fill the channels */ + + /* Domain properties - gravity/viscosity/time */ + get_fluid_gravity(gravity, scene, domainSettings); + set_channel(channels->DomainGravity, timeAtFrame, gravity, i, CHANNEL_VEC); + viscosity = get_fluid_viscosity(domainSettings); + set_channel(channels->DomainViscosity, timeAtFrame, &viscosity, i, CHANNEL_FLOAT); + // XXX : set_channel(channels->DomainTime, timeAtFrame, &time, i, CHANNEL_VEC); + + /* object movement */ + for (fobj=fobjects->first; fobj; fobj=fobj->next) { + Object *ob = fobj->object; + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); + float active= (float)(fluidmd->fss->flag & OB_FLUIDSIM_ACTIVE); + float rot_d[3], rot_360[3] = {360.f, 360.f, 360.f}; + + if (ELEM(fluidmd->fss->type, OB_FLUIDSIM_DOMAIN, OB_FLUIDSIM_PARTICLE)) + continue; + + /* init euler rotation values and convert to elbeem format */ + BKE_rotMode_change_values(ob->quat, ob->rot, ob->rotAxis, &ob->rotAngle, ob->rotmode, ROT_MODE_EUL); + mul_v3_v3fl(rot_d, ob->rot, 180.f/M_PI); + sub_v3_v3v3(rot_d, rot_360, rot_d); + + set_channel(fobj->Translation, timeAtFrame, ob->loc, i, CHANNEL_VEC); + set_channel(fobj->Rotation, timeAtFrame, rot_d, i, CHANNEL_VEC); + set_channel(fobj->Scale, timeAtFrame, ob->size, i, CHANNEL_VEC); + set_channel(fobj->Active, timeAtFrame, &active, i, CHANNEL_FLOAT); + set_channel(fobj->InitialVelocity, timeAtFrame, &fluidmd->fss->iniVelx, i, CHANNEL_VEC); + + if (fluidmd->fss->type == OB_FLUIDSIM_CONTROL) { + set_channel(fobj->AttractforceStrength, timeAtFrame, &fluidmd->fss->attractforceStrength, i, CHANNEL_FLOAT); + set_channel(fobj->AttractforceRadius, timeAtFrame, &fluidmd->fss->attractforceRadius, i, CHANNEL_FLOAT); + set_channel(fobj->VelocityforceStrength, timeAtFrame, &fluidmd->fss->velocityforceStrength, i, CHANNEL_FLOAT); + set_channel(fobj->VelocityforceRadius, timeAtFrame, &fluidmd->fss->velocityforceRadius, i, CHANNEL_FLOAT); + } + + if (fluid_is_animated_mesh(fluidmd->fss)) { + set_vertex_channel(fobj->VertexCache, timeAtFrame, scene, fobj, i); + } + } } - scene->r.cfra = current_frame; - *setchannel = channel; -#endif } -static void fluidsimInitMeshChannel(bContext *C, float **setchannel, int size, Object *obm, int vertices, - float *time, int modifierIndex) +static void export_fluid_objects(ListBase *fobjects, Scene *scene, int length) { - Scene *scene= CTX_data_scene(C); - float *channel = NULL; - int mallsize = size* (3*vertices+1); - int frame,i; - int numVerts=0, numTris=0; - int setsize = 3*vertices+1; - - channel = MEM_callocN( mallsize* sizeof(float), "fluidsim_meshchannel" ); - - //fprintf(stderr,"\n\nfluidsimInitMeshChannel size%d verts%d mallsize%d \n\n\n",size,vertices,mallsize); - for(frame=1; frame<=size; frame++) { + FluidObject *fobj; + + for (fobj=fobjects->first; fobj; fobj=fobj->next) { + Object *ob = fobj->object; + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); + int modifierIndex = modifiers_indexInObject(ob, (ModifierData *)fluidmd); + float *verts=NULL; int *tris=NULL; - scene->r.cfra = frame; - ED_update_for_newframe(C, 1); + int numVerts=0, numTris=0; + int deform = fluid_is_animated_mesh(fluidmd->fss); + + elbeemMesh fsmesh; + + if (ELEM(fluidmd->fss->type, OB_FLUIDSIM_DOMAIN, OB_FLUIDSIM_PARTICLE)) + continue; + + elbeemResetMesh( &fsmesh ); + + fsmesh.type = fluidmd->fss->type; + fsmesh.name = ob->id.name; + + initElbeemMesh(scene, ob, &numVerts, &verts, &numTris, &tris, 0, modifierIndex); + + fsmesh.numVertices = numVerts; + fsmesh.numTriangles = numTris; + fsmesh.vertices = verts; + fsmesh.triangles = tris; + + fsmesh.channelSizeTranslation = + fsmesh.channelSizeRotation = + fsmesh.channelSizeScale = + fsmesh.channelSizeInitialVel = + fsmesh.channelSizeActive = length; + + fsmesh.channelTranslation = fobj->Translation; + fsmesh.channelRotation = fobj->Rotation; + fsmesh.channelScale = fobj->Scale; + fsmesh.channelActive = fobj->Active; + + if( ELEM(fsmesh.type, OB_FLUIDSIM_FLUID, OB_FLUIDSIM_INFLOW)) { + fsmesh.channelInitialVel = fobj->InitialVelocity; + fsmesh.localInivelCoords = ((fluidmd->fss->typeFlags & OB_FSINFLOW_LOCALCOORD)?1:0); + } + + if(fluidmd->fss->typeFlags & OB_FSBND_NOSLIP) + fsmesh.obstacleType = FLUIDSIM_OBSTACLE_NOSLIP; + else if(fluidmd->fss->typeFlags & OB_FSBND_PARTSLIP) + fsmesh.obstacleType = FLUIDSIM_OBSTACLE_PARTSLIP; + else if(fluidmd->fss->typeFlags & OB_FSBND_FREESLIP) + fsmesh.obstacleType = FLUIDSIM_OBSTACLE_FREESLIP; + + fsmesh.obstaclePartslip = fluidmd->fss->partSlipValue; + fsmesh.volumeInitType = fluidmd->fss->volumeInitType; + fsmesh.obstacleImpactFactor = fluidmd->fss->surfaceSmoothing; // misused value + + if (fsmesh.type == OB_FLUIDSIM_CONTROL) { + fsmesh.cpsTimeStart = fluidmd->fss->cpsTimeStart; + fsmesh.cpsTimeEnd = fluidmd->fss->cpsTimeEnd; + fsmesh.cpsQuality = fluidmd->fss->cpsQuality; + fsmesh.obstacleType = (fluidmd->fss->flag & OB_FLUIDSIM_REVERSE); + + fsmesh.channelSizeAttractforceRadius = + fsmesh.channelSizeVelocityforceStrength = + fsmesh.channelSizeVelocityforceRadius = + fsmesh.channelSizeAttractforceStrength = length; + + fsmesh.channelAttractforceStrength = fobj->AttractforceStrength; + fsmesh.channelAttractforceRadius = fobj->AttractforceRadius; + fsmesh.channelVelocityforceStrength = fobj->VelocityforceStrength; + fsmesh.channelVelocityforceRadius = fobj->VelocityforceRadius; + } + else { + fsmesh.channelAttractforceStrength = + fsmesh.channelAttractforceRadius = + fsmesh.channelVelocityforceStrength = + fsmesh.channelVelocityforceRadius = NULL; + } + + /* animated meshes */ + if(deform) { + fsmesh.channelSizeVertices = length; + fsmesh.channelVertices = fobj->VertexCache; + + // remove channels + fsmesh.channelTranslation = + fsmesh.channelRotation = + fsmesh.channelScale = NULL; + } + + elbeemAddMesh(&fsmesh); + + if(verts) MEM_freeN(verts); + if(tris) MEM_freeN(tris); + if(fsmesh.channelVertices) MEM_freeN(fsmesh.channelVertices); + } +} + +static int fluid_validate_scene(ReportList *reports, Scene *scene, Object *fsDomain) +{ + Base *base; + Object *newdomain = NULL; + int channelObjCount = 0; + int fluidInputCount = 0; + + for(base=scene->base.first; base; base= base->next) + { + Object *ob = base->object; + FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); - initElbeemMesh(scene, obm, &numVerts, &verts, &numTris, &tris, 1, modifierIndex); - //fprintf(stderr,"\nfluidsimInitMeshChannel frame%d verts%d/%d \n\n",frame,vertices,numVerts); - for(i=0; i<3*vertices;i++) { - channel[(frame-1)*setsize + i] = verts[i]; - //fprintf(stdout," frame%d vert%d=%f \n",frame,i,verts[i]); - //if(i%3==2) fprintf(stdout,"\n"); + /* only find objects with fluid modifiers */ + if (!fluidmdtmp || ob->type != OB_MESH) continue; + + if(fluidmdtmp->fss->type == OB_FLUIDSIM_DOMAIN) { + /* if no initial domain object given, find another potential domain */ + if (!fsDomain) { + newdomain = ob; + } + /* if there's more than one domain, cancel */ + else if (fsDomain && ob != fsDomain) { + BKE_report(reports, RPT_ERROR, "There should be only one domain object."); + return 0; + } } - channel[(frame-1)*setsize + setsize-1] = time[frame]; + + /* count number of objects needed for animation channels */ + if ( !ELEM(fluidmdtmp->fss->type, OB_FLUIDSIM_DOMAIN, OB_FLUIDSIM_PARTICLE) ) + channelObjCount++; + + /* count number of fluid input objects */ + if (ELEM(fluidmdtmp->fss->type, OB_FLUIDSIM_FLUID, OB_FLUIDSIM_INFLOW)) + fluidInputCount++; + } - MEM_freeN(verts); - MEM_freeN(tris); + if (newdomain) + fsDomain = newdomain; + + if (!fsDomain) { + BKE_report(reports, RPT_ERROR, "No domain object found."); + return 0; + } + + if (channelObjCount>=255) { + BKE_report(reports, RPT_ERROR, "Cannot bake with more then 256 objects."); + return 0; } - *setchannel = channel; + + if (fluidInputCount == 0) { + BKE_report(reports, RPT_ERROR, "No fluid input objects in the scene."); + return 0; + } + + return 1; } +#define FLUID_SUFFIX_CONFIG "fluidsim.cfg" +#define FLUID_SUFFIX_SURFACE "fluidsurface" + +static int fluid_init_filepaths(Object *fsDomain, char *targetDir, char *targetFile, char *debugStrBuffer) +{ + FluidsimModifierData *fluidmd = (FluidsimModifierData *)modifiers_findByType(fsDomain, eModifierType_Fluidsim); + FluidsimSettings *domainSettings= fluidmd->fss; + FILE *fileCfg; + int dirExist = 0; + char newSurfdataPath[FILE_MAXDIR+FILE_MAXFILE]; // modified output settings + char *suffixConfig = FLUID_SUFFIX_CONFIG; + int outStringsChanged = 0; + + // prepare names... + strncpy(targetDir, domainSettings->surfdataPath, FILE_MAXDIR); + strncpy(newSurfdataPath, domainSettings->surfdataPath, FILE_MAXDIR); + BLI_path_abs(targetDir, G.sce); // fixed #frame-no + + strcpy(targetFile, targetDir); + strcat(targetFile, suffixConfig); + strcat(targetFile,".tmp"); // dont overwrite/delete original file + // make sure all directories exist + // as the bobjs use the same dir, this only needs to be checked + // for the cfg output + BLI_make_existing_file(targetFile); + + // check selected directory + // simply try to open cfg file for writing to test validity of settings + fileCfg = fopen(targetFile, "w"); + if(fileCfg) { + dirExist = 1; fclose(fileCfg); + // remove cfg dummy from directory test + BLI_delete(targetFile, 0,0); + } + + if((strlen(targetDir)<1) || (!dirExist)) { + char blendDir[FILE_MAXDIR+FILE_MAXFILE]; + char blendFile[FILE_MAXDIR+FILE_MAXFILE]; + + // invalid dir, reset to current/previous + strcpy(blendDir, G.sce); + BLI_splitdirstring(blendDir, blendFile); + if(strlen(blendFile)>6){ + int len = strlen(blendFile); + if( (blendFile[len-6]=='.')&& (blendFile[len-5]=='b')&& (blendFile[len-4]=='l')&& + (blendFile[len-3]=='e')&& (blendFile[len-2]=='n')&& (blendFile[len-1]=='d') ){ + blendFile[len-6] = '\0'; + } + } + // todo... strip .blend ? + snprintf(newSurfdataPath,FILE_MAXFILE+FILE_MAXDIR,"//fluidsimdata/%s_%s_", blendFile, fsDomain->id.name); + + snprintf(debugStrBuffer,256,"fluidsimBake::error - warning resetting output dir to '%s'\n", newSurfdataPath); + elbeemDebugOut(debugStrBuffer); + outStringsChanged=1; + } + + // check if modified output dir is ok +#if 0 + if(outStringsChanged) { + char dispmsg[FILE_MAXDIR+FILE_MAXFILE+256]; + int selection=0; + strcpy(dispmsg,"Output settings set to: '"); + strcat(dispmsg, newSurfdataPath); + strcat(dispmsg, "'%t|Continue with changed settings%x1|Discard and abort%x0"); + + // ask user if thats what he/she wants... + selection = pupmenu(dispmsg); + if(selection<1) return 0; // 0 from menu, or -1 aborted + strcpy(targetDir, newSurfdataPath); + strncpy(domainSettings->surfdataPath, newSurfdataPath, FILE_MAXDIR); + BLI_path_abs(targetDir, G.sce); // fixed #frame-no + } +#endif + return outStringsChanged; +} + /* ******************************************************************************** */ -/* ********************** simulation thread ************************* */ +/* ********************** write fluidsim config to file ************************* */ /* ******************************************************************************** */ -static volatile int globalBakeState = 0; // 0 everything ok, -1 abort simulation, -2 sim error, 1 sim done -static volatile int globalBakeFrame = 0; -static volatile int g_break= 0; +typedef struct FluidBakeJob { + /* from wmJob */ + void *owner; + short *stop, *do_update; + float *progress; + int current_frame; + elbeemSimulationSettings *settings; +} FluidBakeJob; -// run simulation in seperate thread -static void *fluidsimSimulateThread(void *unused) { // *ptr) { - //char* fnameCfgPath = (char*)(ptr); - int ret=0; +static void fluidbake_free(void *customdata) +{ + FluidBakeJob *fb= customdata; + MEM_freeN(fb); +} + +/* called by fluidbake, only to check job 'stop' value */ +static int fluidbake_breakjob(void *customdata) +{ + //FluidBakeJob *fb= (FluidBakeJob *)customdata; + //return *(fb->stop); -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - pthread_setspecific (gomp_tls_key, thread_tls_data); -#endif + /* this is not nice yet, need to make the jobs list template better + * for identifying/acting upon various different jobs */ + /* but for now we'll reuse the render break... */ + return (G.afbreek); +} - ret = elbeemSimulate(); - BLI_lock_thread(LOCK_CUSTOM1); - if(globalBakeState==0) { - if(ret==0) { - // if no error, set to normal exit - globalBakeState = 1; - } else { - // simulation failed, display error - globalBakeState = -2; - } - } - BLI_unlock_thread(LOCK_CUSTOM1); - return NULL; +/* called by fluidbake, wmJob sends notifier */ +static void fluidbake_updatejob(void *customdata, float progress) +{ + FluidBakeJob *fb= customdata; + + *(fb->do_update)= 1; + *(fb->progress)= progress; } +static void fluidbake_startjob(void *customdata, short *stop, short *do_update, float *progress) +{ + FluidBakeJob *fb= customdata; + + fb->stop= stop; + fb->do_update = do_update; + fb->progress = progress; + + G.afbreek= 0; /* XXX shared with render - replace with job 'stop' switch */ + + elbeemSimulate(); + *do_update= 1; + *stop = 0; +} -int runSimulationCallback(void *data, int status, int frame) { - //elbeemSimulationSettings *settings = (elbeemSimulationSettings*)data; - //printf("elbeem blender cb s%d, f%d, domainid:%d \n", status,frame, settings->domainId ); // DEBUG - int state = 0; - if(status==FLUIDSIM_CBSTATUS_NEWFRAME) { - BLI_lock_thread(LOCK_CUSTOM1); - globalBakeFrame = frame-1; - BLI_unlock_thread(LOCK_CUSTOM1); +static void fluidbake_endjob(void *customdata) +{ + FluidBakeJob *fb= customdata; + + if (fb->settings) { + MEM_freeN(fb->settings); + fb->settings = NULL; } +} + +int runSimulationCallback(void *data, int status, int frame) { + FluidBakeJob *fb = (FluidBakeJob *)data; + elbeemSimulationSettings *settings = fb->settings; - //if((frameCounter==3) && (!frameStop)) { frameStop=1; return 1; } - - BLI_lock_thread(LOCK_CUSTOM1); - state = globalBakeState; - BLI_unlock_thread(LOCK_CUSTOM1); + if (status == FLUIDSIM_CBSTATUS_NEWFRAME) { + fluidbake_updatejob(fb, frame / (float)settings->noOfFrames); + //printf("elbeem blender cb s%d, f%d, domainid:%d noOfFrames: %d \n", status,frame, settings->domainId, settings->noOfFrames ); // DEBUG + } - if(state!=0) { + if (fluidbake_breakjob(fb)) { return FLUIDSIM_CBRET_ABORT; } return FLUIDSIM_CBRET_CONTINUE; } +static void fluidbake_free_data(FluidAnimChannels *channels, ListBase *fobjects, elbeemSimulationSettings *fsset, FluidBakeJob *fb) +{ + free_domain_channels(channels); + MEM_freeN(channels); + channels = NULL; + + free_all_fluidobject_channels(fobjects); + BLI_freelistN(fobjects); + MEM_freeN(fobjects); + fobjects = NULL; + + if (fsset) { + MEM_freeN(fsset); + fsset = NULL; + } + + if (fb) { + MEM_freeN(fb); + fb = NULL; + } +} -/* ******************************************************************************** */ -/* ********************** write fluidsim config to file ************************* */ -/* ******************************************************************************** */ - -int fluidsimBake(bContext *C, ReportList *reports, Object *ob) +int fluidsimBake(bContext *C, ReportList *reports, Object *fsDomain) { Scene *scene= CTX_data_scene(C); - FILE *fileCfg; int i; - Object *fsDomain = NULL; FluidsimSettings *domainSettings; - Object *obit = NULL; /* object iterator */ - Base *base; - int origFrame = scene->r.cfra; + char debugStrBuffer[256]; - int dirExist = 0; + int gridlevels = 0; - int simAborted = 0; // was the simulation aborted by user? - int doExportOnly = 0; - char *exportEnvStr = "BLENDER_ELBEEMEXPORTONLY"; const char *strEnvName = "BLENDER_ELBEEMDEBUG"; // from blendercall.cpp - //char *channelNames[3] = { "translation","rotation","scale" }; + char *suffixConfig = FLUID_SUFFIX_CONFIG; + char *suffixSurface = FLUID_SUFFIX_SURFACE; - char *suffixConfig = "fluidsim.cfg"; - char *suffixSurface = "fluidsurface"; - char newSurfdataPath[FILE_MAXDIR+FILE_MAXFILE]; // modified output settings char targetDir[FILE_MAXDIR+FILE_MAXFILE]; // store & modify output settings char targetFile[FILE_MAXDIR+FILE_MAXFILE]; // temp. store filename from targetDir for access int outStringsChanged = 0; // modified? copy back before baking - int haveSomeFluid = 0; // check if any fluid objects are set - // config vars, inited before either export or run... - double calcViscosity = 0.0; - int noFrames; - double aniFrameTime; - float aniFrlen; - int channelObjCount; - float *bbStart = NULL; - float *bbSize = NULL; float domainMat[4][4]; float invDomMat[4][4]; - // channel data - int allchannelSize; // fixed by no. of frames - int startFrame = 1; // dont use scene->r.sfra here, always start with frame 1 - // easy frame -> sim time calc - float *timeAtFrame=NULL, *timeAtIndex=NULL; - // domain - float *channelDomainTime = NULL; - float *channelDomainViscosity = NULL; - float *channelDomainGravity = NULL; - // objects (currently max. 256 objs) - float *channelObjMove[256][3]; // object movments , 0=trans, 1=rot, 2=scale - float *channelObjInivel[256]; // initial velocities - float *channelObjActive[256]; // obj active channel - - /* fluid control channels */ - float *channelAttractforceStrength[256]; - float *channelAttractforceRadius[256]; - float *channelVelocityforceStrength[256]; - float *channelVelocityforceRadius[256]; + + int noFrames; + int origFrame = scene->r.cfra; + + FluidAnimChannels *channels = MEM_callocN(sizeof(FluidAnimChannels), "fluid domain animation channels"); + ListBase *fobjects = MEM_callocN(sizeof(ListBase), "fluid objects"); FluidsimModifierData *fluidmd = NULL; Mesh *mesh = NULL; + wmJob *steve; + FluidBakeJob *fb; + elbeemSimulationSettings *fsset= MEM_callocN(sizeof(elbeemSimulationSettings), "Fluid sim settings"); + + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Fluid Simulation", WM_JOB_PROGRESS); + fb= MEM_callocN(sizeof(FluidBakeJob), "fluid bake job"); + if(getenv(strEnvName)) { int dlevel = atoi(getenv(strEnvName)); elbeemSetDebugLevel(dlevel); snprintf(debugStrBuffer,256,"fluidsimBake::msg: Debug messages activated due to envvar '%s'\n",strEnvName); elbeemDebugOut(debugStrBuffer); } - if(getenv(exportEnvStr)) { - doExportOnly = atoi(getenv(exportEnvStr)); - snprintf(debugStrBuffer,256,"fluidsimBake::msg: Exporting mode set to '%d' due to envvar '%s'\n",doExportOnly, exportEnvStr); - elbeemDebugOut(debugStrBuffer); - } - - // make sure it corresponds to startFrame setting - // old: noFrames = scene->r.efra - scene->r.sfra +1; + + /* make sure it corresponds to startFrame setting (old: noFrames = scene->r.efra - scene->r.sfra +1) */; noFrames = scene->r.efra - 0; if(noFrames<=0) { BKE_report(reports, RPT_ERROR, "No frames to export - check your animation range settings."); + fluidbake_free_data(channels, fobjects, fsset, fb); return 0; } - - /* no object pointer, find in selected ones.. */ - if(!ob) { - for(base=scene->base.first; base; base= base->next) { - if ((base)->flag & SELECT) - { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - - if(fluidmdtmp && (base->object->type==OB_MESH)) - { - if(fluidmdtmp->fss->type == OB_FLUIDSIM_DOMAIN) - { - ob = base->object; - break; - } - } - } - } - // no domains found? - if(!ob) return 0; - } - channelObjCount = 0; - for(base=scene->base.first; base; base= base->next) - { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - obit = base->object; - if( fluidmdtmp && - (obit->type==OB_MESH) && - (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN) && // if has to match 3 places! // CHECKMATCH - (fluidmdtmp->fss->type != OB_FLUIDSIM_PARTICLE) ) - { - channelObjCount++; - } - } - - if (channelObjCount>=255) { - BKE_report(reports, RPT_ERROR, "Cannot bake with more then 256 objects."); - return 0; - } - - /* check if there's another domain... */ - for(base=scene->base.first; base; base= base->next) - { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - obit = base->object; - if( fluidmdtmp &&(obit->type==OB_MESH)) - { - if(fluidmdtmp->fss->type == OB_FLUIDSIM_DOMAIN) - { - if(obit != ob) - { - BKE_report(reports, RPT_ERROR, "There should be only one domain object."); - return 0; - } - } - } - } - - // check if theres any fluid - // abort baking if not... - for(base=scene->base.first; base; base= base->next) - { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - obit = base->object; - if( fluidmdtmp && - (obit->type==OB_MESH) && - ((fluidmdtmp->fss->type == OB_FLUIDSIM_FLUID) || - (fluidmdtmp->fss->type == OB_FLUIDSIM_INFLOW) )) - { - haveSomeFluid = 1; - break; - } - } - if(!haveSomeFluid) { - BKE_report(reports, RPT_ERROR, "No fluid objects in scene."); + /* check scene for sane object/modifier settings */ + if (!fluid_validate_scene(reports, scene, fsDomain)) { + fluidbake_free_data(channels, fobjects, fsset, fb); return 0; } /* these both have to be valid, otherwise we wouldnt be here */ - /* dont use ob here after...*/ - fsDomain = ob; - fluidmd = (FluidsimModifierData *)modifiers_findByType(ob, eModifierType_Fluidsim); + fluidmd = (FluidsimModifierData *)modifiers_findByType(fsDomain, eModifierType_Fluidsim); domainSettings = fluidmd->fss; - ob = NULL; mesh = fsDomain->data; + domainSettings->bakeStart = 1; + domainSettings->bakeEnd = scene->r.efra; + // calculate bounding box fluid_get_bb(mesh->mvert, mesh->totvert, fsDomain->obmat, domainSettings->bbStart, domainSettings->bbSize); @@ -572,107 +899,26 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob) } snprintf(debugStrBuffer,256,"fluidsimBake::msg: Baking %s, refine: %d\n", fsDomain->id.name , gridlevels ); elbeemDebugOut(debugStrBuffer); - - // prepare names... - strncpy(targetDir, domainSettings->surfdataPath, FILE_MAXDIR); - strncpy(newSurfdataPath, domainSettings->surfdataPath, FILE_MAXDIR); - BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no - - strcpy(targetFile, targetDir); - strcat(targetFile, suffixConfig); - if(!doExportOnly) { strcat(targetFile,".tmp"); } // dont overwrite/delete original file - // make sure all directories exist - // as the bobjs use the same dir, this only needs to be checked - // for the cfg output - BLI_make_existing_file(targetFile); - - // check selected directory - // simply try to open cfg file for writing to test validity of settings - fileCfg = fopen(targetFile, "w"); - if(fileCfg) { - dirExist = 1; fclose(fileCfg); - // remove cfg dummy from directory test - if(!doExportOnly) { BLI_delete(targetFile, 0,0); } - } - - if((strlen(targetDir)<1) || (!dirExist)) { - char blendDir[FILE_MAXDIR+FILE_MAXFILE], blendFile[FILE_MAXDIR+FILE_MAXFILE]; - // invalid dir, reset to current/previous - strcpy(blendDir, G.sce); - BLI_splitdirstring(blendDir, blendFile); - if(strlen(blendFile)>6){ - int len = strlen(blendFile); - if( (blendFile[len-6]=='.')&& (blendFile[len-5]=='b')&& (blendFile[len-4]=='l')&& - (blendFile[len-3]=='e')&& (blendFile[len-2]=='n')&& (blendFile[len-1]=='d') ){ - blendFile[len-6] = '\0'; - } - } - // todo... strip .blend ? - snprintf(newSurfdataPath,FILE_MAXFILE+FILE_MAXDIR,"//fluidsimdata/%s_%s_", blendFile, fsDomain->id.name); - - snprintf(debugStrBuffer,256,"fluidsimBake::error - warning resetting output dir to '%s'\n", newSurfdataPath); - elbeemDebugOut(debugStrBuffer); - outStringsChanged=1; - } - - // check if modified output dir is ok - if(outStringsChanged) { - char dispmsg[FILE_MAXDIR+FILE_MAXFILE+256]; - int selection=0; - strcpy(dispmsg,"Output settings set to: '"); - strcat(dispmsg, newSurfdataPath); - strcat(dispmsg, "'%t|Continue with changed settings%x1|Discard and abort%x0"); - - // ask user if thats what he/she wants... - selection = pupmenu(dispmsg); - if(selection<1) return 0; // 0 from menu, or -1 aborted - strcpy(targetDir, newSurfdataPath); - strncpy(domainSettings->surfdataPath, newSurfdataPath, FILE_MAXDIR); - BLI_convertstringcode(targetDir, G.sce); // fixed #frame-no - } - // -------------------------------------------------------------------------------------------- - // dump data for start frame - // CHECK more reasonable to number frames according to blender? - // dump data for frame 0 - scene->r.cfra = startFrame; - ED_update_for_newframe(C, 1); - // init common export vars for both file export and run - for(i=0; i<256; i++) { - channelObjMove[i][0] = channelObjMove[i][1] = channelObjMove[i][2] = NULL; - channelObjInivel[i] = NULL; - channelObjActive[i] = NULL; - channelAttractforceStrength[i] = NULL; - channelAttractforceRadius[i] = NULL; - channelVelocityforceStrength[i] = NULL; - channelVelocityforceRadius[i] = NULL; - } - allchannelSize = scene->r.efra; // always use till last frame - aniFrameTime = (domainSettings->animEnd - domainSettings->animStart)/(double)noFrames; - // blender specific - scale according to map old/new settings in anim panel: - aniFrlen = scene->r.framelen; - if(domainSettings->viscosityMode==1) { - /* manual mode, visc=value/(10^-vexp) */ - calcViscosity = (1.0/pow(10.0,domainSettings->viscosityExponent)) * domainSettings->viscosityValue; - } else { - calcViscosity = fluidsimViscosityPreset[ domainSettings->viscosityMode ]; - } - - bbStart = domainSettings->bbStart; - bbSize = domainSettings->bbSize; + + /* ******** prepare output file paths ******** */ + outStringsChanged = fluid_init_filepaths(fsDomain, targetDir, targetFile, debugStrBuffer); + channels->length = scene->r.efra; + channels->aniFrameTime = (domainSettings->animEnd - domainSettings->animStart)/(double)noFrames; + + /* ******** initialise and allocate animation channels ******** */ + fluid_init_all_channels(C, fsDomain, domainSettings, channels, fobjects); - // always init + /* reset to original current frame */ + scene->r.cfra = origFrame; + ED_update_for_newframe(C, 1); + + + /* ---- XXX: No Time animation curve for now, leaving this code here for reference + { int timeIcu[1] = { FLUIDSIM_TIME }; float timeDef[1] = { 1. }; - int gravIcu[3] = { FLUIDSIM_GRAV_X, FLUIDSIM_GRAV_Y, FLUIDSIM_GRAV_Z }; - float gravDef[3]; - int viscIcu[1] = { FLUIDSIM_VISC }; - float viscDef[1] = { 1. }; - - gravDef[0] = domainSettings->gravx; - gravDef[1] = domainSettings->gravy; - gravDef[2] = domainSettings->gravz; // time channel is a bit special, init by hand... timeAtIndex = MEM_callocN( (allchannelSize+1)*1*sizeof(float), "fluidsiminit_timeatindex"); @@ -680,7 +926,7 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob) timeAtIndex[i] = (float)(i-startFrame); } fluidsimInitChannel(scene, &channelDomainTime, allchannelSize, timeAtIndex, timeIcu,timeDef, domainSettings->ipo, CHANNEL_FLOAT ); // NDEB - // time channel is a multiplicator for aniFrameTime + // time channel is a multiplicator for if(channelDomainTime) { for(i=0; i<allchannelSize; i++) { channelDomainTime[i*2+0] = aniFrameTime * channelDomainTime[i*2+0]; @@ -693,474 +939,112 @@ int fluidsimBake(bContext *C, ReportList *reports, Object *ob) for(i=2; i<=allchannelSize; i++) { timeAtFrame[i] = timeAtFrame[i-1]+channelDomainTime[(i-1)*2+0]; } - } else { + fsset->} else { for(i=2; i<=allchannelSize; i++) { timeAtFrame[i] = timeAtFrame[i-1]+aniFrameTime; } } - fluidsimInitChannel(scene, &channelDomainViscosity, allchannelSize, timeAtFrame, viscIcu,viscDef, domainSettings->ipo, CHANNEL_FLOAT ); // NDEB - if(channelDomainViscosity) { - for(i=0; i<allchannelSize; i++) { channelDomainViscosity[i*2+0] = calcViscosity * channelDomainViscosity[i*2+0]; } - } - fluidsimInitChannel(scene, &channelDomainGravity, allchannelSize, timeAtFrame, gravIcu,gravDef, domainSettings->ipo, CHANNEL_VEC ); } // domain channel init - - // init obj movement channels - channelObjCount=0; - for(base=scene->base.first; base; base= base->next) - { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - obit = base->object; + */ - if( fluidmdtmp && - (obit->type==OB_MESH) && - (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN) && // if has to match 3 places! // CHECKMATCH - (fluidmdtmp->fss->type != OB_FLUIDSIM_PARTICLE) ) { - - // cant use fluidsimInitChannel for obj channels right now, due - // to the special DXXX channels, and the rotation specialities - IpoCurve *icuex[3][3]; - //IpoCurve *par_icuex[3][3]; -#if 0 - int icuIds[3][3] = { - {OB_LOC_X, OB_LOC_Y, OB_LOC_Z}, - {OB_ROT_X, OB_ROT_Y, OB_ROT_Z}, - {OB_SIZE_X, OB_SIZE_Y, OB_SIZE_Z} - }; - int icudIds[3][3] = { - {OB_DLOC_X, OB_DLOC_Y, OB_DLOC_Z}, - {OB_DROT_X, OB_DROT_Y, OB_DROT_Z}, - {OB_DSIZE_X, OB_DSIZE_Y, OB_DSIZE_Z} - }; -#endif - // relative ipos - IpoCurve *icudex[3][3]; - //IpoCurve *par_icudex[3][3]; - int j,k; - float vals[3] = {0.0,0.0,0.0}; - int o = channelObjCount; - int inivelIcu[3] = { FLUIDSIM_VEL_X, FLUIDSIM_VEL_Y, FLUIDSIM_VEL_Z }; - float inivelDefs[3]; - int activeIcu[1] = { FLUIDSIM_ACTIVE }; - float activeDefs[1] = { 1 }; // default to on - - inivelDefs[0] = fluidmdtmp->fss->iniVelx; - inivelDefs[1] = fluidmdtmp->fss->iniVely; - inivelDefs[2] = fluidmdtmp->fss->iniVelz; - - // check & init loc,rot,size - for(j=0; j<3; j++) { - for(k=0; k<3; k++) { - // XXX prevent invalid memory access until this works - icuex[j][k]= NULL; - icudex[j][k]= NULL; - - // XXX icuex[j][k] = find_ipocurve(obit->ipo, icuIds[j][k] ); - // XXX icudex[j][k] = find_ipocurve(obit->ipo, icudIds[j][k] ); - // XXX lines below were already disabled! - //if(obit->parent) { - //par_icuex[j][k] = find_ipocurve(obit->parent->ipo, icuIds[j][k] ); - //par_icudex[j][k] = find_ipocurve(obit->parent->ipo, icudIds[j][k] ); - //} - } - } - - for(j=0; j<3; j++) { - channelObjMove[o][j] = MEM_callocN( allchannelSize*4*sizeof(float), "fluidsiminit_objmovchannel"); - for(i=1; i<=allchannelSize; i++) { - - for(k=0; k<3; k++) { - if(icuex[j][k]) { - // IPO exists, use it ... - // XXX calc_icu(icuex[j][k], aniFrlen*((float)i) ); - vals[k] = icuex[j][k]->curval; - if(obit->parent) { - // add parent transform, multiply scaling, add trafo&rot - //calc_icu(par_icuex[j][k], aniFrlen*((float)i) ); - //if(j==2) { vals[k] *= par_icuex[j][k]->curval; } - //else { vals[k] += par_icuex[j][k]->curval; } - } - } else { - // use defaults from static values - float setval=0.0; - if(j==0) { - setval = obit->loc[k]; - if(obit->parent){ setval += obit->parent->loc[k]; } - } else if(j==1) { - setval = ( 180.0*obit->rot[k] )/( 10.0*M_PI ); - if(obit->parent){ setval = ( 180.0*(obit->rot[k]+obit->parent->rot[k]) )/( 10.0*M_PI ); } - } else { - setval = obit->size[k]; - if(obit->parent){ setval *= obit->parent->size[k]; } - } - vals[k] = setval; - } - if(icudex[j][k]) { - // XXX calc_icu(icudex[j][k], aniFrlen*((float)i) ); - //vals[k] += icudex[j][k]->curval; - // add transform, multiply scaling, add trafo&rot - if(j==2) { vals[k] *= icudex[j][k]->curval; } - else { vals[k] += icudex[j][k]->curval; } - if(obit->parent) { - // add parent transform, multiply scaling, add trafo&rot - //calc_icu(par_icuex[j][k], aniFrlen*((float)i) ); - //if(j==2) { vals[k] *= par_icudex[j][k]->curval; } - //else { vals[k] += par_icudex[j][k]->curval; } - } - } - } // k - - for(k=0; k<3; k++) { - float set = vals[k]; - if(j==1) { // rot is downscaled by 10 for ipo !? - set = 360.0 - (10.0*set); - } - channelObjMove[o][j][(i-1)*4 + k] = set; - } // k - channelObjMove[o][j][(i-1)*4 + 3] = timeAtFrame[i]; - } - } - - { - int attrFSIcu[1] = { FLUIDSIM_ATTR_FORCE_STR }; - int attrFRIcu[1] = { FLUIDSIM_ATTR_FORCE_RADIUS }; - int velFSIcu[1] = { FLUIDSIM_VEL_FORCE_STR }; - int velFRIcu[1] = { FLUIDSIM_VEL_FORCE_RADIUS }; - - float attrFSDefs[1]; - float attrFRDefs[1]; - float velFSDefs[1]; - float velFRDefs[1]; - - attrFSDefs[0] = fluidmdtmp->fss->attractforceStrength; - attrFRDefs[0] = fluidmdtmp->fss->attractforceRadius; - velFSDefs[0] = fluidmdtmp->fss->velocityforceStrength; - velFRDefs[0] = fluidmdtmp->fss->velocityforceRadius; - - fluidsimInitChannel(scene, &channelAttractforceStrength[o], allchannelSize, timeAtFrame, attrFSIcu,attrFSDefs, fluidmdtmp->fss->ipo, CHANNEL_FLOAT ); - fluidsimInitChannel(scene, &channelAttractforceRadius[o], allchannelSize, timeAtFrame, attrFRIcu,attrFRDefs, fluidmdtmp->fss->ipo, CHANNEL_FLOAT ); - fluidsimInitChannel(scene, &channelVelocityforceStrength[o], allchannelSize, timeAtFrame, velFSIcu,velFSDefs, fluidmdtmp->fss->ipo, CHANNEL_FLOAT ); - fluidsimInitChannel(scene, &channelVelocityforceRadius[o], allchannelSize, timeAtFrame, velFRIcu,velFRDefs, fluidmdtmp->fss->ipo, CHANNEL_FLOAT ); - } - - fluidsimInitChannel(scene, &channelObjInivel[o], allchannelSize, timeAtFrame, inivelIcu,inivelDefs, fluidmdtmp->fss->ipo, CHANNEL_VEC ); - fluidsimInitChannel(scene, &channelObjActive[o], allchannelSize, timeAtFrame, activeIcu,activeDefs, fluidmdtmp->fss->ipo, CHANNEL_FLOAT ); - - - channelObjCount++; - - } - } - - // init trafo matrix + /* ******** init domain object's matrix ******** */ copy_m4_m4(domainMat, fsDomain->obmat); if(!invert_m4_m4(invDomMat, domainMat)) { snprintf(debugStrBuffer,256,"fluidsimBake::error - Invalid obj matrix?\n"); elbeemDebugOut(debugStrBuffer); BKE_report(reports, RPT_ERROR, "Invalid object matrix."); - // FIXME add fatal msg - FS_FREE_CHANNELS; + + fluidbake_free_data(channels, fobjects, fsset, fb); return 0; } - // -------------------------------------------------------------------------------------------- - // start writing / exporting + /* ******** start writing / exporting ******** */ strcpy(targetFile, targetDir); strcat(targetFile, suffixConfig); - if(!doExportOnly) { strcat(targetFile,".tmp"); } // dont overwrite/delete original file + strcat(targetFile,".tmp"); // dont overwrite/delete original file + // make sure these directories exist as well if(outStringsChanged) { BLI_make_existing_file(targetFile); } - if(!doExportOnly) { - ListBase threads; + /* ******** export domain to elbeem ******** */ + elbeemResetSettings(fsset); + fsset->version = 1; - // perform simulation with El'Beem api and threads - elbeemSimulationSettings fsset; - elbeemResetSettings(&fsset); - fsset.version = 1; + // setup global settings + copy_v3_v3(fsset->geoStart, domainSettings->bbStart); + copy_v3_v3(fsset->geoSize, domainSettings->bbSize); + + // simulate with 50^3 + fsset->resolutionxyz = (int)domainSettings->resolutionxyz; + fsset->previewresxyz = (int)domainSettings->previewresxyz; - // setup global settings - for(i=0 ; i<3; i++) fsset.geoStart[i] = bbStart[i]; - for(i=0 ; i<3; i++) fsset.geoSize[i] = bbSize[i]; - - // simulate with 50^3 - fsset.resolutionxyz = (int)domainSettings->resolutionxyz; - fsset.previewresxyz = (int)domainSettings->previewresxyz; - // 10cm water domain - fsset.realsize = domainSettings->realsize; - fsset.viscosity = calcViscosity; - // earth gravity - fsset.gravity[0] = domainSettings->gravx; - fsset.gravity[1] = domainSettings->gravy; - fsset.gravity[2] = domainSettings->gravz; - // simulate 5 frames, each 0.03 seconds, output to ./apitest_XXX.bobj.gz - fsset.animStart = domainSettings->animStart; - fsset.aniFrameTime = aniFrameTime; - fsset.noOfFrames = noFrames; // is otherwise subtracted in parser - strcpy(targetFile, targetDir); - strcat(targetFile, suffixSurface); - // defaults for compressibility and adaptive grids - fsset.gstar = domainSettings->gstar; - fsset.maxRefine = domainSettings->maxRefine; // check <-> gridlevels - fsset.generateParticles = domainSettings->generateParticles; - fsset.numTracerParticles = domainSettings->generateTracers; - fsset.surfaceSmoothing = domainSettings->surfaceSmoothing; - fsset.surfaceSubdivs = domainSettings->surfaceSubdivs; - fsset.farFieldSize = domainSettings->farFieldSize; - strcpy( fsset.outputPath, targetFile); - - // domain channels - fsset.channelSizeFrameTime = - fsset.channelSizeViscosity = - fsset.channelSizeGravity = allchannelSize; - fsset.channelFrameTime = channelDomainTime; - fsset.channelViscosity = channelDomainViscosity; - fsset.channelGravity = channelDomainGravity; - - fsset.runsimCallback = &runSimulationCallback; - fsset.runsimUserData = &fsset; - - if( (domainSettings->typeFlags&OB_FSBND_NOSLIP)) fsset.domainobsType = FLUIDSIM_OBSTACLE_NOSLIP; - else if((domainSettings->typeFlags&OB_FSBND_PARTSLIP)) fsset.domainobsType = FLUIDSIM_OBSTACLE_PARTSLIP; - else if((domainSettings->typeFlags&OB_FSBND_FREESLIP)) fsset.domainobsType = FLUIDSIM_OBSTACLE_FREESLIP; - fsset.domainobsPartslip = domainSettings->partSlipValue; - fsset.generateVertexVectors = (domainSettings->domainNovecgen==0); - - // init blender trafo matrix - // fprintf(stderr,"elbeemInit - mpTrafo:\n"); - { int j; - for(i=0; i<4; i++) { - for(j=0; j<4; j++) { - fsset.surfaceTrafo[i*4+j] = invDomMat[j][i]; - // fprintf(stderr,"elbeemInit - mpTrafo %d %d = %f (%d) \n", i,j, fsset.surfaceTrafo[i*4+j] , (i*4+j) ); - } - } } + fsset->realsize = get_fluid_size_m(scene, fsDomain, domainSettings); + fsset->viscosity = get_fluid_viscosity(domainSettings); + get_fluid_gravity(fsset->gravity, scene, domainSettings); - // init solver with settings - elbeemInit(); - elbeemAddDomain(&fsset); - - // init objects - channelObjCount = 0; - for(base=scene->base.first; base; base= base->next) { - FluidsimModifierData *fluidmdtmp = (FluidsimModifierData *)modifiers_findByType(base->object, eModifierType_Fluidsim); - obit = base->object; - //{ snprintf(debugStrBuffer,256,"DEBUG object name=%s, type=%d ...\n", obit->id.name, obit->type); elbeemDebugOut(debugStrBuffer); } // DEBUG - if( fluidmdtmp && // if has to match 3 places! // CHECKMATCH - (obit->type==OB_MESH) && - (fluidmdtmp->fss->type != OB_FLUIDSIM_DOMAIN) && - (fluidmdtmp->fss->type != OB_FLUIDSIM_PARTICLE)) - { - float *verts=NULL; - int *tris=NULL; - int numVerts=0, numTris=0; - int o = channelObjCount; - int deform = (fluidmdtmp->fss->domainNovecgen); // misused value - // todo - use blenderInitElbeemMesh - int modifierIndex = modifiers_indexInObject(obit, (ModifierData *)fluidmdtmp); - - elbeemMesh fsmesh; - elbeemResetMesh( &fsmesh ); - fsmesh.type = fluidmdtmp->fss->type; - // get name of object for debugging solver - fsmesh.name = obit->id.name; - - initElbeemMesh(scene, obit, &numVerts, &verts, &numTris, &tris, 0, modifierIndex); - fsmesh.numVertices = numVerts; - fsmesh.numTriangles = numTris; - fsmesh.vertices = verts; - fsmesh.triangles = tris; - - fsmesh.channelSizeTranslation = - fsmesh.channelSizeRotation = - fsmesh.channelSizeScale = - fsmesh.channelSizeInitialVel = - fsmesh.channelSizeActive = allchannelSize; - - fsmesh.channelTranslation = channelObjMove[o][0]; - fsmesh.channelRotation = channelObjMove[o][1]; - fsmesh.channelScale = channelObjMove[o][2]; - fsmesh.channelActive = channelObjActive[o]; - if( (fsmesh.type == OB_FLUIDSIM_FLUID) || - (fsmesh.type == OB_FLUIDSIM_INFLOW)) { - fsmesh.channelInitialVel = channelObjInivel[o]; - fsmesh.localInivelCoords = ((fluidmdtmp->fss->typeFlags&OB_FSINFLOW_LOCALCOORD)?1:0); - } - - if( (fluidmdtmp->fss->typeFlags&OB_FSBND_NOSLIP)) fsmesh.obstacleType = FLUIDSIM_OBSTACLE_NOSLIP; - else if((fluidmdtmp->fss->typeFlags&OB_FSBND_PARTSLIP)) fsmesh.obstacleType = FLUIDSIM_OBSTACLE_PARTSLIP; - else if((fluidmdtmp->fss->typeFlags&OB_FSBND_FREESLIP)) fsmesh.obstacleType = FLUIDSIM_OBSTACLE_FREESLIP; - fsmesh.obstaclePartslip = fluidmdtmp->fss->partSlipValue; - fsmesh.volumeInitType = fluidmdtmp->fss->volumeInitType; - fsmesh.obstacleImpactFactor = fluidmdtmp->fss->surfaceSmoothing; // misused value - - if(fsmesh.type == OB_FLUIDSIM_CONTROL) - { - // control fluids will get exported as whole - deform = 1; - - fsmesh.cpsTimeStart = fluidmdtmp->fss->cpsTimeStart; - fsmesh.cpsTimeEnd = fluidmdtmp->fss->cpsTimeEnd; - fsmesh.cpsQuality = fluidmdtmp->fss->cpsQuality; - fsmesh.obstacleType = (fluidmdtmp->fss->flag & OB_FLUIDSIM_REVERSE); - - fsmesh.channelSizeAttractforceRadius = - fsmesh.channelSizeVelocityforceStrength = - fsmesh.channelSizeVelocityforceRadius = - fsmesh.channelSizeAttractforceStrength = allchannelSize; - - fsmesh.channelAttractforceStrength = channelAttractforceStrength[o]; - fsmesh.channelAttractforceRadius = channelAttractforceRadius[o]; - fsmesh.channelVelocityforceStrength = channelVelocityforceStrength[o]; - fsmesh.channelVelocityforceRadius = channelVelocityforceRadius[o]; - } - else - { - // set channels to 0 - fsmesh.channelAttractforceStrength = - fsmesh.channelAttractforceRadius = - fsmesh.channelVelocityforceStrength = - fsmesh.channelVelocityforceRadius = NULL; - } - - // animated meshes - if(deform) { - fsmesh.channelSizeVertices = allchannelSize; - fluidsimInitMeshChannel(C, &fsmesh.channelVertices, allchannelSize, obit, numVerts, timeAtFrame, modifierIndex); - scene->r.cfra = startFrame; - ED_update_for_newframe(C, 1); - // remove channels - fsmesh.channelTranslation = - fsmesh.channelRotation = - fsmesh.channelScale = NULL; - } - - elbeemAddMesh(&fsmesh); - - if(verts) MEM_freeN(verts); - if(tris) MEM_freeN(tris); - if(fsmesh.channelVertices) MEM_freeN(fsmesh.channelVertices); - channelObjCount++; - } // valid mesh - } // objects - //domainSettings->type = OB_FLUIDSIM_DOMAIN; // enable for bake display again - - // set to neutral, -1 means user abort, -2 means init error - globalBakeState = 0; - globalBakeFrame = 0; - -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - thread_tls_data = pthread_getspecific(gomp_tls_key); -#endif - BLI_init_threads(&threads, fluidsimSimulateThread, 1); - BLI_insert_thread(&threads, targetFile); - - { - int done = 0; - float noFramesf = (float)noFrames; - float percentdone = 0.0, oldpercentdone = -1.0; - int lastRedraw = -1; - - g_break= 0; - G.afbreek= 0; /* blender_test_break uses this global */ - - start_progress_bar(); + // simulate 5 frames, each 0.03 seconds, output to ./apitest_XXX.bobj.gz + fsset->animStart = domainSettings->animStart; + fsset->aniFrameTime = channels->aniFrameTime; + fsset->noOfFrames = noFrames; // is otherwise subtracted in parser - while(done==0) { - char busy_mess[80]; - - waitcursor(1); - - // lukep we add progress bar as an interim mesure - percentdone = globalBakeFrame / noFramesf; - if (percentdone != oldpercentdone) { - sprintf(busy_mess, "baking fluids %d / %d |||", globalBakeFrame, (int) noFramesf); - percentdone = percentdone < 0.0 ? 0.0:percentdone; - progress_bar(CTX_wm_window(C), percentdone, busy_mess ); - oldpercentdone = percentdone; - } - - //XXX no more need for longer delay to prevent frequent redrawing - PIL_sleep_ms(200); - - BLI_lock_thread(LOCK_CUSTOM1); - if(globalBakeState != 0) done = 1; // 1=ok, <0=error/abort - BLI_unlock_thread(LOCK_CUSTOM1); - - if (!G.background) { - g_break= blender_test_break(); - - if(g_break) - { - // abort... - BLI_lock_thread(LOCK_CUSTOM1); - - if(domainSettings) - domainSettings->lastgoodframe = startFrame+globalBakeFrame; - - done = -1; - globalBakeFrame = 0; - globalBakeState = -1; - simAborted = 1; - BLI_unlock_thread(LOCK_CUSTOM1); - break; - } - } - - // redraw the 3D for showing progress once in a while... - if(lastRedraw!=globalBakeFrame) { -#if 0 - ScrArea *sa; - scene->r.cfra = startFrame+globalBakeFrame; - lastRedraw = globalBakeFrame; - ED_update_for_newframe(C, 1); - sa= G.curscreen->areabase.first; - while(sa) { - if(sa->spacetype == SPACE_VIEW3D) { scrarea_do_windraw(sa); } - sa= sa->next; - } - screen_swapbuffers(); -#endif - } // redraw - } - end_progress_bar(CTX_wm_window(C)); + strcpy(targetFile, targetDir); + strcat(targetFile, suffixSurface); + // defaults for compressibility and adaptive grids + fsset->gstar = domainSettings->gstar; + fsset->maxRefine = domainSettings->maxRefine; // check <-> gridlevels + fsset->generateParticles = domainSettings->generateParticles; + fsset->numTracerParticles = domainSettings->generateTracers; + fsset->surfaceSmoothing = domainSettings->surfaceSmoothing; + fsset->surfaceSubdivs = domainSettings->surfaceSubdivs; + fsset->farFieldSize = domainSettings->farFieldSize; + strcpy( fsset->outputPath, targetFile); + + // domain channels + fsset->channelSizeFrameTime = + fsset->channelSizeViscosity = + fsset->channelSizeGravity = channels->length; + fsset->channelFrameTime = channels->DomainTime; + fsset->channelViscosity = channels->DomainViscosity; + fsset->channelGravity = channels->DomainGravity; + + fsset->runsimCallback = &runSimulationCallback; + fsset->runsimUserData = fb; + + if (domainSettings->typeFlags & OB_FSBND_NOSLIP) fsset->domainobsType = FLUIDSIM_OBSTACLE_NOSLIP; + else if (domainSettings->typeFlags&OB_FSBND_PARTSLIP) fsset->domainobsType = FLUIDSIM_OBSTACLE_PARTSLIP; + else if (domainSettings->typeFlags&OB_FSBND_FREESLIP) fsset->domainobsType = FLUIDSIM_OBSTACLE_FREESLIP; + fsset->domainobsPartslip = domainSettings->partSlipValue; + fsset->generateVertexVectors = (domainSettings->domainNovecgen==0); + + // init blender domain transform matrix + { int j; + for(i=0; i<4; i++) { + for(j=0; j<4; j++) { + fsset->surfaceTrafo[i*4+j] = invDomMat[j][i]; } - BLI_end_threads(&threads); - } // El'Beem API init, thread creation - // -------------------------------------------------------------------------------------------- - else - { // write config file to be run with command line simulator - BKE_report(reports, RPT_WARNING, "Config file export not supported."); - } // config file export done! + } } - // -------------------------------------------------------------------------------------------- - FS_FREE_CHANNELS; - - // go back to "current" blender time - waitcursor(0); + /* ******** init solver with settings ******** */ + elbeemInit(); + elbeemAddDomain(fsset); - if(globalBakeState >= 0) - { - if(domainSettings) - domainSettings->lastgoodframe = startFrame+globalBakeFrame; - } + /* ******** export all fluid objects to elbeem ******** */ + export_fluid_objects(fobjects, scene, channels->length); - scene->r.cfra = origFrame; - ED_update_for_newframe(C, 1); + /* custom data for fluid bake job */ + fb->settings = fsset; + + /* setup job */ + WM_jobs_customdata(steve, fb, fluidbake_free); + WM_jobs_timer(steve, 0.1, NC_SCENE|ND_FRAME, NC_SCENE|ND_FRAME); + WM_jobs_callbacks(steve, fluidbake_startjob, NULL, NULL, fluidbake_endjob); + + WM_jobs_start(CTX_wm_manager(C), steve); - if(!simAborted) { - char elbeemerr[256]; + /* ******** free stored animation data ******** */ + fluidbake_free_data(channels, fobjects, NULL, NULL); - // check if some error occurred - if(globalBakeState==-2) { - elbeemGetErrorString(elbeemerr); - BKE_reportf(reports, RPT_ERROR, "Failed to initialize [Msg: %s]", elbeemerr); - return 0; - } // init error - } - // elbeemFree(); return 1; } @@ -1206,7 +1090,6 @@ static int fluid_bake_exec(bContext *C, wmOperator *op) { Object *ob= CTX_data_active_object(C); - // XXX TODO redraw, escape, non-blocking, .. if(!fluidsimBake(C, op->reports, ob)) return OPERATOR_CANCELLED; diff --git a/source/blender/editors/physics/physics_intern.h b/source/blender/editors/physics/physics_intern.h index aa3a2e22e31..b3d11810c43 100644 --- a/source/blender/editors/physics/physics_intern.h +++ b/source/blender/editors/physics/physics_intern.h @@ -37,8 +37,8 @@ struct wmOperatorType; /* particle_edit.c */ void PARTICLE_OT_select_all(struct wmOperatorType *ot); -void PARTICLE_OT_select_first(struct wmOperatorType *ot); -void PARTICLE_OT_select_last(struct wmOperatorType *ot); +void PARTICLE_OT_select_roots(struct wmOperatorType *ot); +void PARTICLE_OT_select_tips(struct wmOperatorType *ot); void PARTICLE_OT_select_linked(struct wmOperatorType *ot); void PARTICLE_OT_select_less(struct wmOperatorType *ot); void PARTICLE_OT_select_more(struct wmOperatorType *ot); diff --git a/source/blender/editors/physics/physics_ops.c b/source/blender/editors/physics/physics_ops.c index 55568c89e75..28839693e2c 100644 --- a/source/blender/editors/physics/physics_ops.c +++ b/source/blender/editors/physics/physics_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -27,7 +27,6 @@ #include <stdlib.h> -#include "DNA_windowmanager_types.h" #include "RNA_access.h" @@ -44,8 +43,8 @@ static void operatortypes_particle(void) { WM_operatortype_append(PARTICLE_OT_select_all); - WM_operatortype_append(PARTICLE_OT_select_first); - WM_operatortype_append(PARTICLE_OT_select_last); + WM_operatortype_append(PARTICLE_OT_select_roots); + WM_operatortype_append(PARTICLE_OT_select_tips); WM_operatortype_append(PARTICLE_OT_select_linked); WM_operatortype_append(PARTICLE_OT_select_less); WM_operatortype_append(PARTICLE_OT_select_more); @@ -101,6 +100,7 @@ static void keymap_particle(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "PARTICLE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "PARTICLE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_reveal", HKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "PARTICLE_OT_hide", HKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/physics/physics_pointcache.c b/source/blender/editors/physics/physics_pointcache.c index 1359af5377f..8e53e3c6f50 100644 --- a/source/blender/editors/physics/physics_pointcache.c +++ b/source/blender/editors/physics/physics_pointcache.c @@ -32,9 +32,8 @@ #include "MEM_guardedalloc.h" #include "DNA_scene_types.h" -#include "DNA_object_force.h" -#include "DNA_modifier_types.h" +#include "BKE_anim.h" #include "BKE_context.h" #include "BKE_particle.h" #include "BKE_report.h" @@ -46,12 +45,8 @@ #include "BLI_blenlib.h" -#include "ED_screen.h" -#include "ED_physics.h" #include "ED_particle.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "WM_api.h" #include "WM_types.h" @@ -76,7 +71,7 @@ static int ptcache_bake_all_poll(bContext *C) static int ptcache_poll(bContext *C) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); return (ptr.data && ptr.id.data); } @@ -94,7 +89,7 @@ void bake_console_progress_end(void *arg) static int ptcache_bake_all_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); - wmWindow *win = CTX_wm_window(C); + wmWindow *win = G.background ? NULL : CTX_wm_window(C); PTCacheBaker baker; @@ -120,6 +115,7 @@ static int ptcache_bake_all_exec(bContext *C, wmOperator *op) BKE_ptcache_make_cache(&baker); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, NULL); return OPERATOR_FINISHED; } @@ -131,13 +127,15 @@ static int ptcache_free_bake_all_exec(bContext *C, wmOperator *op) ListBase pidlist; for(base=scene->base.first; base; base= base->next) { - BKE_ptcache_ids_from_object(&pidlist, base->object); + BKE_ptcache_ids_from_object(&pidlist, base->object, scene, MAX_DUPLI_RECUR); for(pid=pidlist.first; pid; pid=pid->next) { pid->cache->flag &= ~PTCACHE_BAKED; } BLI_freelistN(&pidlist); + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, base->object); } WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); @@ -176,15 +174,15 @@ void PTCACHE_OT_free_bake_all(wmOperatorType *ot) static int ptcache_bake_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); - wmWindow *win = CTX_wm_window(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + wmWindow *win = G.background ? NULL : CTX_wm_window(C); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); Object *ob= ptr.id.data; PointCache *cache= ptr.data; PTCacheBaker baker; PTCacheID *pid; ListBase pidlist; - BKE_ptcache_ids_from_object(&pidlist, ob); + BKE_ptcache_ids_from_object(&pidlist, ob, scene, MAX_DUPLI_RECUR); for(pid=pidlist.first; pid; pid=pid->next) { if(pid->cache == cache) @@ -216,13 +214,15 @@ static int ptcache_bake_exec(bContext *C, wmOperator *op) BLI_freelistN(&pidlist); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } static int ptcache_free_bake_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); PointCache *cache= ptr.data; + Object *ob= ptr.id.data; if(cache->edit) { if(!cache->edit->edited || 1) {// XXX okee("Lose changes done in particle mode?")) { @@ -233,15 +233,20 @@ static int ptcache_free_bake_exec(bContext *C, wmOperator *op) } else cache->flag &= ~PTCACHE_BAKED; + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } static int ptcache_bake_from_cache_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); PointCache *cache= ptr.data; + Object *ob= ptr.id.data; cache->flag |= PTCACHE_BAKED; + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } @@ -290,13 +295,13 @@ void PTCACHE_OT_bake_from_cache(wmOperatorType *ot) static int ptcache_add_new_exec(bContext *C, wmOperator *op) { Scene *scene = CTX_data_scene(C); - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); Object *ob= ptr.id.data; PointCache *cache= ptr.data; PTCacheID *pid; ListBase pidlist; - BKE_ptcache_ids_from_object(&pidlist, ob); + BKE_ptcache_ids_from_object(&pidlist, ob, scene, MAX_DUPLI_RECUR); for(pid=pidlist.first; pid; pid=pid->next) { if(pid->cache == cache) { @@ -308,18 +313,20 @@ static int ptcache_add_new_exec(bContext *C, wmOperator *op) BLI_freelistN(&pidlist); WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } static int ptcache_remove_exec(bContext *C, wmOperator *op) { - PointerRNA ptr= CTX_data_pointer_get_type(C, "PointCache", &RNA_PointCache); + PointerRNA ptr= CTX_data_pointer_get_type(C, "point_cache", &RNA_PointCache); + Scene *scene= CTX_data_scene(C); Object *ob= ptr.id.data; PointCache *cache= ptr.data; PTCacheID *pid; ListBase pidlist; - BKE_ptcache_ids_from_object(&pidlist, ob); + BKE_ptcache_ids_from_object(&pidlist, ob, scene, MAX_DUPLI_RECUR); for(pid=pidlist.first; pid; pid=pid->next) { if(pid->cache == cache) { @@ -335,6 +342,8 @@ static int ptcache_remove_exec(bContext *C, wmOperator *op) } BLI_freelistN(&pidlist); + + WM_event_add_notifier(C, NC_OBJECT|ND_POINTCACHE, ob); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/render/CMakeLists.txt b/source/blender/editors/render/CMakeLists.txt new file mode 100644 index 00000000000..550c812c320 --- /dev/null +++ b/source/blender/editors/render/CMakeLists.txt @@ -0,0 +1,55 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenfont + ../../blenkernel + ../../blenlib + ../../blenloader + ../../gpu + ../../imbuf + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../../../extern/glew/include + ../../makesdna + ../../makesrna + ../../python + ../../render/extern/include + ../../windowmanager +) + +IF(WITH_QUICKTIME) + SET(INC ${INC} ../../quicktime ${QUICKTIME_INC}) + ADD_DEFINITIONS(-DWITH_QUICKTIME) +ENDIF(WITH_QUICKTIME) + +IF(WITH_OPENMP) + ADD_DEFINITIONS(-DPARALLEL=1) +ENDIF(WITH_OPENMP) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_render "${SRC}" "${INC}") diff --git a/source/blender/editors/render/render_intern.h b/source/blender/editors/render/render_intern.h index 99b68c2bb74..a0441155629 100644 --- a/source/blender/editors/render/render_intern.h +++ b/source/blender/editors/render/render_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,6 +30,8 @@ #define RENDER_INTERN_H struct wmOperatorType; +struct RenderResult; +struct Scene; /* render_shading.c */ void OBJECT_OT_material_slot_add(struct wmOperatorType *ot); @@ -49,8 +51,25 @@ void MATERIAL_OT_paste(struct wmOperatorType *ot); void SCENE_OT_render_layer_add(struct wmOperatorType *ot); void SCENE_OT_render_layer_remove(struct wmOperatorType *ot); + +void TEXTURE_OT_slot_copy(struct wmOperatorType *ot); +void TEXTURE_OT_slot_paste(struct wmOperatorType *ot); void TEXTURE_OT_slot_move(struct wmOperatorType *ot); +void TEXTURE_OT_envmap_save(struct wmOperatorType *ot); +void TEXTURE_OT_envmap_clear(struct wmOperatorType *ot); +void TEXTURE_OT_envmap_clear_all(struct wmOperatorType *ot); + +/* render_internal.c */ +void RENDER_OT_view_show(struct wmOperatorType *ot); +void RENDER_OT_render(struct wmOperatorType *ot); +void RENDER_OT_view_cancel(struct wmOperatorType *ot); + +/*render_opengl.c uses these */ +void image_buffer_rect_update(struct Scene *scene, struct RenderResult *rr, struct ImBuf *ibuf, volatile struct rcti *renrect); +void screen_set_image_output(struct bContext *C, int mx, int my); +/* render_opengl.c */ +void RENDER_OT_opengl(struct wmOperatorType *ot); #endif /* RENDER_INTERN_H */ diff --git a/source/blender/editors/render/render_internal.c b/source/blender/editors/render/render_internal.c new file mode 100644 index 00000000000..7110c3aa7a7 --- /dev/null +++ b/source/blender/editors/render/render_internal.c @@ -0,0 +1,833 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2008 Blender Foundation. + * All rights reserved. + * + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include <math.h> +#include <string.h> +#include <stddef.h> + +#include "MEM_guardedalloc.h" + +#include "BLI_blenlib.h" +#include "BLI_math.h" +#include "BLI_threads.h" +#include "BLI_rand.h" + +#include "DNA_scene_types.h" + +#include "BKE_blender.h" +#include "BKE_colortools.h" +#include "BKE_context.h" +#include "BKE_global.h" +#include "BKE_image.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_multires.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_screen.h" +#include "BKE_utildefines.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "ED_screen.h" +#include "ED_object.h" + +#include "RE_pipeline.h" +#include "IMB_imbuf.h" +#include "IMB_imbuf_types.h" + +#include "RNA_access.h" +#include "RNA_define.h" + +#include "wm_window.h" + +#include "render_intern.h" + +static ScrArea *biggest_area(bContext *C); +static ScrArea *biggest_non_image_area(bContext *C); +static ScrArea *find_area_showing_r_result(bContext *C); +static ScrArea *find_area_image_empty(bContext *C); + +/* called inside thread! */ +void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volatile rcti *renrect) +{ + float x1, y1, *rectf= NULL; + int ymin, ymax, xmin, xmax; + int rymin, rxmin; + char *rectc; + + /* if renrect argument, we only refresh scanlines */ + if(renrect) { + /* if ymax==recty, rendering of layer is ready, we should not draw, other things happen... */ + if(rr->renlay==NULL || renrect->ymax>=rr->recty) + return; + + /* xmin here is first subrect x coord, xmax defines subrect width */ + xmin = renrect->xmin + rr->crop; + xmax = renrect->xmax - xmin + rr->crop; + if (xmax<2) return; + + ymin= renrect->ymin + rr->crop; + ymax= renrect->ymax - ymin + rr->crop; + if(ymax<2) + return; + renrect->ymin= renrect->ymax; + + } + else { + xmin = ymin = rr->crop; + xmax = rr->rectx - 2*rr->crop; + ymax = rr->recty - 2*rr->crop; + } + + /* xmin ymin is in tile coords. transform to ibuf */ + rxmin= rr->tilerect.xmin + xmin; + if(rxmin >= ibuf->x) return; + rymin= rr->tilerect.ymin + ymin; + if(rymin >= ibuf->y) return; + + if(rxmin + xmax > ibuf->x) + xmax= ibuf->x - rxmin; + if(rymin + ymax > ibuf->y) + ymax= ibuf->y - rymin; + + if(xmax < 1 || ymax < 1) return; + + /* find current float rect for display, first case is after composit... still weak */ + if(rr->rectf) + rectf= rr->rectf; + else { + if(rr->rect32) + return; + else { + if(rr->renlay==NULL || rr->renlay->rectf==NULL) return; + rectf= rr->renlay->rectf; + } + } + if(rectf==NULL) return; + + if(ibuf->rect==NULL) + imb_addrectImBuf(ibuf); + + rectf+= 4*(rr->rectx*ymin + xmin); + rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin); + + /* XXX make nice consistent functions for this */ + if (scene && (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)) { + for(y1= 0; y1<ymax; y1++) { + float *rf= rectf; + float srgb[3]; + char *rc= rectc; + const float dither = ibuf->dither / 255.0; + + /* XXX temp. because crop offset */ + if( rectc >= (char *)(ibuf->rect)) { + for(x1= 0; x1<xmax; x1++, rf += 4, rc+=4) { + const float d = (BLI_frand()-0.5)*dither; + srgb[0]= d + linearrgb_to_srgb(rf[0]); + srgb[1]= d + linearrgb_to_srgb(rf[1]); + srgb[2]= d + linearrgb_to_srgb(rf[2]); + + rc[0]= FTOCHAR(srgb[0]); + rc[1]= FTOCHAR(srgb[1]); + rc[2]= FTOCHAR(srgb[2]); + rc[3]= FTOCHAR(rf[3]); + } + } + rectf += 4*rr->rectx; + rectc += 4*ibuf->x; + } + } else { + for(y1= 0; y1<ymax; y1++) { + float *rf= rectf; + char *rc= rectc; + float rgb[3]; + const float dither = ibuf->dither / 255.0; + + /* XXX temp. because crop offset */ + if( rectc >= (char *)(ibuf->rect)) { + for(x1= 0; x1<xmax; x1++, rf += 4, rc+=4) { + const float d = (BLI_frand()-0.5)*dither; + + rgb[0] = d + rf[0]; + rgb[1] = d + rf[1]; + rgb[2] = d + rf[2]; + + rc[0]= FTOCHAR(rgb[0]); + rc[1]= FTOCHAR(rgb[1]); + rc[2]= FTOCHAR(rgb[2]); + rc[3]= FTOCHAR(rf[3]); + } + } + rectf += 4*rr->rectx; + rectc += 4*ibuf->x; + } + } +} + +/* new window uses x,y to set position */ +void screen_set_image_output(bContext *C, int mx, int my) +{ + wmWindow *win= CTX_wm_window(C); + Scene *scene= CTX_data_scene(C); + ScrArea *sa= NULL; + SpaceImage *sima; + int area_was_image=0; + + if(scene->r.displaymode==R_OUTPUT_WINDOW) { + rcti rect; + int sizex, sizey; + + sizex= 10 + (scene->r.xsch*scene->r.size)/100; + sizey= 40 + (scene->r.ysch*scene->r.size)/100; + + /* arbitrary... miniature image window views don't make much sense */ + if(sizex < 320) sizex= 320; + if(sizey < 256) sizey= 256; + + /* XXX some magic to calculate postition */ + rect.xmin= mx + win->posx - sizex/2; + rect.ymin= my + win->posy - sizey/2; + rect.xmax= rect.xmin + sizex; + rect.ymax= rect.ymin + sizey; + + /* changes context! */ + WM_window_open_temp(C, &rect, WM_WINDOW_RENDER); + + sa= CTX_wm_area(C); + } + else if(scene->r.displaymode==R_OUTPUT_SCREEN) { + if (CTX_wm_area(C) && CTX_wm_area(C)->spacetype == SPACE_IMAGE) + area_was_image = 1; + + /* this function returns with changed context */ + ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_IMAGE); + sa= CTX_wm_area(C); + } + + if(!sa) { + sa= find_area_showing_r_result(C); + if(sa==NULL) + sa= find_area_image_empty(C); + + if(sa==NULL) { + /* find largest open non-image area */ + sa= biggest_non_image_area(C); + if(sa) { + ED_area_newspace(C, sa, SPACE_IMAGE); + sima= sa->spacedata.first; + + /* makes ESC go back to prev space */ + sima->flag |= SI_PREVSPACE; + } + else { + /* use any area of decent size */ + sa= biggest_area(C); + if(sa->spacetype!=SPACE_IMAGE) { + // XXX newspace(sa, SPACE_IMAGE); + sima= sa->spacedata.first; + + /* makes ESC go back to prev space */ + sima->flag |= SI_PREVSPACE; + } + } + } + } + sima= sa->spacedata.first; + + /* get the correct image, and scale it */ + sima->image= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); + + + /* if we're rendering to full screen, set appropriate hints on image editor + * so it can restore properly on pressing esc */ + if(sa->full) { + sima->flag |= SI_FULLWINDOW; + + /* Tell the image editor to revert to previous space in space list on close + * _only_ if it wasn't already an image editor when the render was invoked */ + if (area_was_image == 0) + sima->flag |= SI_PREVSPACE; + else { + /* Leave it alone so the image editor will just go back from + * full screen to the original tiled setup */ + ; + } + + } + +} + + +/* ****************************** render invoking ***************** */ + +/* set callbacks, exported to sequence render too. + Only call in foreground (UI) renders. */ + +/* returns biggest area that is not uv/image editor. Note that it uses buttons */ +/* window as the last possible alternative. */ +static ScrArea *biggest_non_image_area(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa, *big= NULL; + int size, maxsize= 0, bwmaxsize= 0; + short foundwin= 0; + + for(sa= sc->areabase.first; sa; sa= sa->next) { + if(sa->winx > 30 && sa->winy > 30) { + size= sa->winx*sa->winy; + if(sa->spacetype == SPACE_BUTS) { + if(foundwin == 0 && size > bwmaxsize) { + bwmaxsize= size; + big= sa; + } + } + else if(sa->spacetype != SPACE_IMAGE && size > maxsize) { + maxsize= size; + big= sa; + foundwin= 1; + } + } + } + + return big; +} + +static ScrArea *biggest_area(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa, *big= NULL; + int size, maxsize= 0; + + for(sa= sc->areabase.first; sa; sa= sa->next) { + size= sa->winx*sa->winy; + if(size > maxsize) { + maxsize= size; + big= sa; + } + } + return big; +} + + +static ScrArea *find_area_showing_r_result(bContext *C) +{ + wmWindowManager *wm= CTX_wm_manager(C); + wmWindow *win; + ScrArea *sa = NULL; + SpaceImage *sima; + + /* find an imagewindow showing render result */ + for(win=wm->windows.first; win; win=win->next) { + for(sa=win->screen->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_IMAGE) { + sima= sa->spacedata.first; + if(sima->image && sima->image->type==IMA_TYPE_R_RESULT) + break; + } + } + } + + return sa; +} + +static ScrArea *find_area_image_empty(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa; + SpaceImage *sima; + + /* find an imagewindow showing render result */ + for(sa=sc->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_IMAGE) { + sima= sa->spacedata.first; + if(!sima->image) + break; + } + } + return sa; +} + +#if 0 // XXX not used +static ScrArea *find_empty_image_area(bContext *C) +{ + bScreen *sc= CTX_wm_screen(C); + ScrArea *sa; + SpaceImage *sima; + + /* find an imagewindow showing render result */ + for(sa=sc->areabase.first; sa; sa= sa->next) { + if(sa->spacetype==SPACE_IMAGE) { + sima= sa->spacedata.first; + if(!sima->image) + break; + } + } + return sa; +} +#endif // XXX not used + +static void render_error_reports(void *reports, char *str) +{ + BKE_report(reports, RPT_ERROR, str); +} + +/* executes blocking render */ +static int screen_render_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Render *re= RE_NewRender(scene->id.name); + Image *ima; + View3D *v3d= CTX_wm_view3d(C); + int lay= (v3d)? v3d->lay: scene->lay; + + if(re==NULL) { + re= RE_NewRender(scene->id.name); + } + + G.afbreek= 0; + RE_test_break_cb(re, NULL, (int (*)(void *)) blender_test_break); + RE_error_cb(re, op->reports, render_error_reports); + + ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); + BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE); + BKE_image_backup_render(scene, ima); + + if(RNA_boolean_get(op->ptr, "animation")) + RE_BlenderAnim(re, scene, lay, scene->r.sfra, scene->r.efra, scene->r.frame_step, op->reports); + else + RE_BlenderFrame(re, scene, NULL, lay, scene->r.cfra); + + // no redraw needed, we leave state as we entered it + ED_update_for_newframe(C, 1); + + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); + + return OPERATOR_FINISHED; +} + +typedef struct RenderJob { + Scene *scene; + Render *re; + wmWindow *win; + SceneRenderLayer *srl; + int lay; + int anim; + Image *image; + ImageUser iuser; + short *stop; + short *do_update; + float *progress; + ReportList *reports; +} RenderJob; + +static void render_freejob(void *rjv) +{ + RenderJob *rj= rjv; + + MEM_freeN(rj); +} + +/* str is IMA_MAX_RENDER_TEXT in size */ +static void make_renderinfo_string(RenderStats *rs, Scene *scene, char *str) +{ + char info_time_str[32]; // used to be extern to header_info.c + uintptr_t mem_in_use, mmap_in_use, peak_memory; + float megs_used_memory, mmap_used_memory, megs_peak_memory; + char *spos= str; + + mem_in_use= MEM_get_memory_in_use(); + mmap_in_use= MEM_get_mapped_memory_in_use(); + peak_memory = MEM_get_peak_memory(); + + megs_used_memory= (mem_in_use-mmap_in_use)/(1024.0*1024.0); + mmap_used_memory= (mmap_in_use)/(1024.0*1024.0); + megs_peak_memory = (peak_memory)/(1024.0*1024.0); + + if(scene->lay & 0xFF000000) + spos+= sprintf(spos, "Localview | "); + else if(scene->r.scemode & R_SINGLE_LAYER) + spos+= sprintf(spos, "Single Layer | "); + + if(rs->statstr) { + spos+= sprintf(spos, "%s ", rs->statstr); + } + else { + spos+= sprintf(spos, "Fra:%d Ve:%d Fa:%d ", (scene->r.cfra), rs->totvert, rs->totface); + if(rs->tothalo) spos+= sprintf(spos, "Ha:%d ", rs->tothalo); + if(rs->totstrand) spos+= sprintf(spos, "St:%d ", rs->totstrand); + spos+= sprintf(spos, "La:%d Mem:%.2fM (%.2fM, peak %.2fM) ", rs->totlamp, megs_used_memory, mmap_used_memory, megs_peak_memory); + + if(rs->curfield) + spos+= sprintf(spos, "Field %d ", rs->curfield); + if(rs->curblur) + spos+= sprintf(spos, "Blur %d ", rs->curblur); + } + + BLI_timestr(rs->lastframetime, info_time_str); + spos+= sprintf(spos, "Time:%s ", info_time_str); + + if(rs->infostr && rs->infostr[0]) + spos+= sprintf(spos, "| %s ", rs->infostr); + + /* very weak... but 512 characters is quite safe */ + if(spos >= str+IMA_MAX_RENDER_TEXT) + if (G.f & G_DEBUG) + printf("WARNING! renderwin text beyond limit \n"); + +} + +static void image_renderinfo_cb(void *rjv, RenderStats *rs) +{ + RenderJob *rj= rjv; + RenderResult *rr; + + rr= RE_AcquireResultRead(rj->re); + + if(rr) { + /* malloc OK here, stats_draw is not in tile threads */ + if(rr->text==NULL) + rr->text= MEM_callocN(IMA_MAX_RENDER_TEXT, "rendertext"); + + make_renderinfo_string(rs, rj->scene, rr->text); + } + + RE_ReleaseResult(rj->re); + + /* make jobs timer to send notifier */ + *(rj->do_update)= 1; + +} + +static void render_progress_update(void *rjv, float progress) +{ + RenderJob *rj= rjv; + + if (rj->progress) + *rj->progress = progress; +} + +static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) +{ + RenderJob *rj= rjv; + Image *ima= rj->image; + ImBuf *ibuf; + void *lock; + + /* only update if we are displaying the slot being rendered */ + if(ima->render_slot != ima->last_render_slot) + return; + + ibuf= BKE_image_acquire_ibuf(ima, &rj->iuser, &lock); + if(ibuf) { + image_buffer_rect_update(rj->scene, rr, ibuf, renrect); + + /* make jobs timer to send notifier */ + *(rj->do_update)= 1; + } + BKE_image_release_ibuf(ima, lock); +} + +static void render_startjob(void *rjv, short *stop, short *do_update, float *progress) +{ + RenderJob *rj= rjv; +// Main *mainp= BKE_undo_get_main(&rj->scene); + + rj->stop= stop; + rj->do_update= do_update; + rj->progress= progress; + + if(rj->anim) + RE_BlenderAnim(rj->re, rj->scene, rj->lay, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step, rj->reports); + else + RE_BlenderFrame(rj->re, rj->scene, rj->srl, rj->lay, rj->scene->r.cfra); + +// if(mainp) +// free_main(mainp); +} + +static void render_endjob(void *rjv) +{ + /* XXX render stability hack */ + G.rendering = 0; + WM_main_add_notifier(NC_WINDOW, NULL); +} + +/* called by render, check job 'stop' value or the global */ +static int render_breakjob(void *rjv) +{ + RenderJob *rj= rjv; + + if(G.afbreek) + return 1; + if(rj->stop && *(rj->stop)) + return 1; + return 0; +} + +/* catch esc */ +static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event) +{ + /* no running blender, remove handler and pass through */ + if(0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) { + return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; + } + + /* running render */ + switch (event->type) { + case ESCKEY: + return OPERATOR_RUNNING_MODAL; + break; + } + return OPERATOR_PASS_THROUGH; +} + +/* using context, starts job */ +static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + /* new render clears all callbacks */ + Scene *scene= CTX_data_scene(C); + SceneRenderLayer *srl=NULL; + bScreen *screen= CTX_wm_screen(C); + View3D *v3d= CTX_wm_view3d(C); + Render *re; + wmJob *steve; + RenderJob *rj; + Image *ima; + + /* only one render job at a time */ + if(WM_jobs_test(CTX_wm_manager(C), scene)) + return OPERATOR_CANCELLED; + + /* stop all running jobs, currently previews frustrate Render */ + WM_jobs_stop_all(CTX_wm_manager(C)); + + /* cancel animation playback */ + if (screen->animtimer) + ED_screen_animation_play(C, 0, 0); + + /* handle UI stuff */ + WM_cursor_wait(1); + + /* flush multires changes (for sculpt) */ + multires_force_render_update(CTX_data_active_object(C)); + + /* get editmode results */ + ED_object_exit_editmode(C, 0); /* 0 = does not exit editmode */ + + // store spare + // get view3d layer, local layer, make this nice api call to render + // store spare + + /* ensure at least 1 area shows result */ + screen_set_image_output(C, event->x, event->y); + + /* single layer re-render */ + if(RNA_property_is_set(op->ptr, "layer")) { + SceneRenderLayer *rl; + Scene *scn; + char scene_name[19], rl_name[RE_MAXNAME]; + + RNA_string_get(op->ptr, "layer", rl_name); + RNA_string_get(op->ptr, "scene", scene_name); + + scn = (Scene *)BLI_findstring(&CTX_data_main(C)->scene, scene_name, offsetof(ID, name) + 2); + rl = (SceneRenderLayer *)BLI_findstring(&scene->r.layers, rl_name, offsetof(SceneRenderLayer, name)); + + if (scn && rl) { + scene = scn; + srl = rl; + } + } + + /* job custom data */ + rj= MEM_callocN(sizeof(RenderJob), "render job"); + rj->scene= scene; + rj->win= CTX_wm_window(C); + rj->srl = srl; + rj->lay = (v3d)? v3d->lay: scene->lay; + rj->anim= RNA_boolean_get(op->ptr, "animation"); + rj->iuser.scene= scene; + rj->iuser.ok= 1; + rj->reports= op->reports; + + /* setup job */ + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, "Render", WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY|WM_JOB_PROGRESS); + WM_jobs_customdata(steve, rj, render_freejob); + WM_jobs_timer(steve, 0.2, NC_SCENE|ND_RENDER_RESULT, 0); + WM_jobs_callbacks(steve, render_startjob, NULL, NULL, render_endjob); + + /* get a render result image, and make sure it is empty */ + ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); + BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE); + BKE_image_backup_render(rj->scene, ima); + rj->image= ima; + + /* setup new render */ + re= RE_NewRender(scene->id.name); + RE_test_break_cb(re, rj, render_breakjob); + RE_display_draw_cb(re, rj, image_rect_update); + RE_stats_draw_cb(re, rj, image_renderinfo_cb); + RE_progress_cb(re, rj, render_progress_update); + + rj->re= re; + G.afbreek= 0; + + RE_error_cb(re, op->reports, render_error_reports); + + WM_jobs_start(CTX_wm_manager(C), steve); + + WM_cursor_wait(0); + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); + + /* we set G.rendering here already instead of only in the job, this ensure + main loop or other scene updates are disabled in time, since they may + have started before the job thread */ + G.rendering = 1; + + /* add modal handler for ESC */ + WM_event_add_modal_handler(C, op); + + return OPERATOR_RUNNING_MODAL; +} + + +/* contextual render, using current scene, view3d? */ +void RENDER_OT_render(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Render"; + ot->description= "Render active scene"; + ot->idname= "RENDER_OT_render"; + + /* api callbacks */ + ot->invoke= screen_render_invoke; + ot->modal= screen_render_modal; + ot->exec= screen_render_exec; + + ot->poll= ED_operator_screenactive; + + RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); + RNA_def_string(ot->srna, "layer", "", RE_MAXNAME, "Render Layer", "Single render layer to re-render"); + RNA_def_string(ot->srna, "scene", "", 19, "Scene", "Re-render single layer in this scene"); +} + +/* ****************************** opengl render *************************** */ + + +/* *********************** cancel render viewer *************** */ + +static int render_view_cancel_exec(bContext *C, wmOperator *unused) +{ + wmWindow *win= CTX_wm_window(C); + ScrArea *sa= CTX_wm_area(C); + SpaceImage *sima= sa->spacedata.first; + + /* test if we have a temp screen in front */ + if(CTX_wm_window(C)->screen->full==SCREENTEMP) { + wm_window_lower(CTX_wm_window(C)); + return OPERATOR_FINISHED; + } + /* determine if render already shows */ + else if(sima->flag & SI_PREVSPACE) { + sima->flag &= ~SI_PREVSPACE; + + if(sima->flag & SI_FULLWINDOW) { + sima->flag &= ~SI_FULLWINDOW; + ED_screen_full_prevspace(C, sa); + } + else + ED_area_prevspace(C, sa); + + return OPERATOR_FINISHED; + } + else if(sima->flag & SI_FULLWINDOW) { + sima->flag &= ~SI_FULLWINDOW; + ED_screen_full_toggle(C, win, sa); + return OPERATOR_FINISHED; + } + + return OPERATOR_PASS_THROUGH; +} + +void RENDER_OT_view_cancel(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Cancel Render View"; + ot->description= "Cancel show render view"; + ot->idname= "RENDER_OT_view_cancel"; + + /* api callbacks */ + ot->exec= render_view_cancel_exec; + ot->poll= ED_operator_image_active; +} + +/* *********************** show render viewer *************** */ + +static int render_view_show_invoke(bContext *C, wmOperator *unused, wmEvent *event) +{ + ScrArea *sa= find_area_showing_r_result(C); + + /* test if we have a temp screen in front */ + if(CTX_wm_window(C)->screen->full==SCREENTEMP) { + wm_window_lower(CTX_wm_window(C)); + } + /* determine if render already shows */ + else if(sa) { + SpaceImage *sima= sa->spacedata.first; + + if(sima->flag & SI_PREVSPACE) { + sima->flag &= ~SI_PREVSPACE; + + if(sima->flag & SI_FULLWINDOW) { + sima->flag &= ~SI_FULLWINDOW; + ED_screen_full_prevspace(C, sa); + } + else if(sima->next) { + ED_area_newspace(C, sa, sima->next->spacetype); + ED_area_tag_redraw(sa); + } + } + } + else { + screen_set_image_output(C, event->x, event->y); + } + + return OPERATOR_FINISHED; +} + +void RENDER_OT_view_show(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Show/Hide Render View"; + ot->description= "Toggle show render view"; + ot->idname= "RENDER_OT_view_show"; + + /* api callbacks */ + ot->invoke= render_view_show_invoke; + ot->poll= ED_operator_screenactive; +} diff --git a/source/blender/editors/render/render_opengl.c b/source/blender/editors/render/render_opengl.c new file mode 100644 index 00000000000..5881d50c309 --- /dev/null +++ b/source/blender/editors/render/render_opengl.c @@ -0,0 +1,501 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2008 Blender Foundation. + * All rights reserved. + * + * + * ***** END GPL LICENSE BLOCK ***** + */ + +#include <math.h> +#include <string.h> +#include <stddef.h> + +#include <GL/glew.h> + +#include "MEM_guardedalloc.h" + +#include "BLI_math.h" +#include "BLI_blenlib.h" +#include "BLI_editVert.h" +#include "BLI_dlrbTree.h" + +#include "DNA_scene_types.h" +#include "DNA_object_types.h" + +#include "BKE_blender.h" +#include "BKE_object.h" +#include "BKE_context.h" +#include "BKE_global.h" +#include "BKE_image.h" +#include "BKE_library.h" +#include "BKE_main.h" +#include "BKE_mesh.h" +#include "BKE_multires.h" +#include "BKE_report.h" +#include "BKE_scene.h" +#include "BKE_screen.h" +#include "BKE_utildefines.h" +#include "BKE_writeavi.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "ED_screen.h" +#include "ED_view3d.h" +#include "ED_image.h" + +#include "RE_pipeline.h" +#include "IMB_imbuf_types.h" +#include "IMB_imbuf.h" + +#include "RNA_access.h" +#include "RNA_define.h" + + +#include "GPU_extensions.h" + +#include "wm_window.h" + +#include "render_intern.h" + +typedef struct OGLRender { + Render *re; + Scene *scene; + + View3D *v3d; + RegionView3D *rv3d; + ARegion *ar; + + Image *ima; + ImageUser iuser; + + GPUOffScreen *ofs; + int sizex, sizey; + + ReportList *reports; + bMovieHandle *mh; + int cfrao, nfra; + + wmTimer *timer; /* use to check if running modal or not (invoke'd or exec'd)*/ +} OGLRender; + +/* added because v3d is not always valid */ +static unsigned int screen_opengl_layers(OGLRender *oglrender) +{ + if(oglrender->v3d) { + return oglrender->scene->lay | oglrender->v3d->lay; + } + else { + return oglrender->scene->lay; + } +} + +static void screen_opengl_render_apply(OGLRender *oglrender) +{ + Scene *scene= oglrender->scene; + ARegion *ar= oglrender->ar; + View3D *v3d= oglrender->v3d; + RegionView3D *rv3d= oglrender->rv3d; + RenderResult *rr; + ImBuf *ibuf; + void *lock; + float winmat[4][4]; + int sizex= oglrender->sizex; + int sizey= oglrender->sizey; + int view_context = (v3d != NULL); + + rr= RE_AcquireResultRead(oglrender->re); + + if(view_context) { + GPU_offscreen_bind(oglrender->ofs); /* bind */ + + /* render 3d view */ + if(rv3d->persp==RV3D_CAMOB && v3d->camera) { + RE_GetCameraWindow(oglrender->re, v3d->camera, scene->r.cfra, winmat); + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat); + } + else { + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, NULL); + } + + glReadPixels(0, 0, sizex, sizey, GL_RGBA, GL_FLOAT, rr->rectf); + + GPU_offscreen_unbind(oglrender->ofs); /* unbind */ + } + else { + ImBuf *ibuf_view= ED_view3d_draw_offscreen_imbuf_simple(scene, oglrender->sizex, oglrender->sizey, OB_SOLID); + IMB_float_from_rect(ibuf_view); + + memcpy(rr->rectf, ibuf_view->rect_float, sizeof(float) * 4 * oglrender->sizex * oglrender->sizey); + + IMB_freeImBuf(ibuf_view); + } + + /* rr->rectf is now filled with image data */ + + if((scene->r.stamp & R_STAMP_ALL) && (scene->r.stamp & R_STAMP_DRAW)) + BKE_stamp_buf(scene, NULL, rr->rectf, rr->rectx, rr->recty, 4); + + RE_ReleaseResult(oglrender->re); + + /* update byte from float buffer */ + ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); + if(ibuf) image_buffer_rect_update(NULL, rr, ibuf, NULL); + BKE_image_release_ibuf(oglrender->ima, lock); +} + +static int screen_opengl_render_init(bContext *C, wmOperator *op) +{ + /* new render clears all callbacks */ + Scene *scene= CTX_data_scene(C); + RenderResult *rr; + GPUOffScreen *ofs; + OGLRender *oglrender; + int sizex, sizey; + int view_context= RNA_boolean_get(op->ptr, "view_context"); + + /* ensure we have a 3d view */ + + if(!ED_view3d_context_activate(C)) { + RNA_boolean_set(op->ptr, "view_context", 0); + view_context = 0; + } + + /* only one render job at a time */ + if(WM_jobs_test(CTX_wm_manager(C), scene)) + return 0; + + if(!view_context && scene->camera==NULL) { + BKE_report(op->reports, RPT_ERROR, "Scene has no camera."); + return 0; + } + + /* stop all running jobs, currently previews frustrate Render */ + WM_jobs_stop_all(CTX_wm_manager(C)); + + /* handle UI stuff */ + WM_cursor_wait(1); + + /* create offscreen buffer */ + sizex= (scene->r.size*scene->r.xsch)/100; + sizey= (scene->r.size*scene->r.ysch)/100; + + ofs= GPU_offscreen_create(sizex, sizey); + + if(!ofs) { + BKE_report(op->reports, RPT_ERROR, "Failed to create OpenGL offscreen buffer."); + return 0; + } + + /* allocate opengl render */ + oglrender= MEM_callocN(sizeof(OGLRender), "OGLRender"); + op->customdata= oglrender; + + oglrender->ofs= ofs; + oglrender->sizex= sizex; + oglrender->sizey= sizey; + oglrender->scene= scene; + + if(view_context) { + oglrender->v3d= CTX_wm_view3d(C); + oglrender->ar= CTX_wm_region(C); + oglrender->rv3d= CTX_wm_region_view3d(C); + } + + /* create image and image user */ + oglrender->ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); + BKE_image_signal(oglrender->ima, NULL, IMA_SIGNAL_FREE); + + oglrender->iuser.scene= scene; + oglrender->iuser.ok= 1; + + /* create render and render result */ + oglrender->re= RE_NewRender(scene->id.name); + RE_InitState(oglrender->re, NULL, &scene->r, NULL, sizex, sizey, NULL); + + rr= RE_AcquireResultWrite(oglrender->re); + if(rr->rectf==NULL) + rr->rectf= MEM_callocN(sizeof(float)*4*sizex*sizey, "screen_opengl_render_init rect"); + RE_ReleaseResult(oglrender->re); + + return 1; +} + +static void screen_opengl_render_end(bContext *C, OGLRender *oglrender) +{ + Scene *scene= oglrender->scene; + + if(oglrender->mh) { + if(BKE_imtype_is_movie(scene->r.imtype)) + oglrender->mh->end_movie(); + } + + if(oglrender->timer) { /* exec will not have a timer */ + scene->r.cfra= oglrender->cfrao; + scene_update_for_newframe(scene, screen_opengl_layers(oglrender)); + + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), oglrender->timer); + } + + WM_cursor_wait(0); + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + GPU_offscreen_free(oglrender->ofs); + + MEM_freeN(oglrender); +} + +static int screen_opengl_render_cancel(bContext *C, wmOperator *op) +{ + screen_opengl_render_end(C, op->customdata); + + return OPERATOR_CANCELLED; +} + +/* share between invoke and exec */ +static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op) +{ + /* initialize animation */ + OGLRender *oglrender; + Scene *scene; + + oglrender= op->customdata; + scene= oglrender->scene; + + oglrender->reports= op->reports; + oglrender->mh= BKE_get_movie_handle(scene->r.imtype); + if(BKE_imtype_is_movie(scene->r.imtype)) { + if(!oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey, oglrender->reports)) { + screen_opengl_render_end(C, oglrender); + return 0; + } + } + + oglrender->cfrao= scene->r.cfra; + oglrender->nfra= SFRA; + scene->r.cfra= SFRA; + + return 1; +} +static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) +{ + OGLRender *oglrender= op->customdata; + Scene *scene= oglrender->scene; + ImBuf *ibuf; + void *lock; + char name[FILE_MAXDIR+FILE_MAXFILE]; + int ok= 0; + int view_context = (oglrender->v3d != NULL); + + /* update animated image textures for gpu, etc, + * call before scene_update_for_newframe so modifiers with textuers dont lag 1 frame */ + ED_image_update_frame(C); + + /* go to next frame */ + while(CFRA<oglrender->nfra) { + unsigned int lay= screen_opengl_layers(oglrender); + + if(lay & 0xFF000000) + lay &= 0xFF000000; + + scene_update_for_newframe(scene, lay); + CFRA++; + } + + scene_update_for_newframe(scene, screen_opengl_layers(oglrender)); + + if(view_context) { + if(oglrender->rv3d->persp==RV3D_CAMOB && oglrender->v3d->camera && oglrender->v3d->scenelock) { + /* since scene_update_for_newframe() is used rather + * then ED_update_for_newframe() the camera needs to be set */ + if(scene_camera_switch_update(scene)) + oglrender->v3d->camera= scene->camera; + } + } + else { + scene_camera_switch_update(scene); + } + + /* render into offscreen buffer */ + screen_opengl_render_apply(oglrender); + + /* save to disk */ + ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); + + if(ibuf) { + if(BKE_imtype_is_movie(scene->r.imtype)) { + ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports); + if(ok) { + printf("Append frame %d", scene->r.cfra); + BKE_reportf(op->reports, RPT_INFO, "Appended frame: %d", scene->r.cfra); + } + } + else { + BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION); + ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); + + if(ok==0) { + printf("Write error: cannot save %s\n", name); + BKE_reportf(op->reports, RPT_ERROR, "Write error: cannot save %s", name); + } + else { + printf("Saved: %s", name); + BKE_reportf(op->reports, RPT_INFO, "Saved file: %s", name); + } + } + } + + BKE_image_release_ibuf(oglrender->ima, lock); + + /* movie stats prints have no line break */ + printf("\n"); + + /* go to next frame */ + oglrender->nfra += scene->r.frame_step; + scene->r.cfra++; + + /* stop at the end or on error */ + if(scene->r.cfra > EFRA || !ok) { + screen_opengl_render_end(C, op->customdata); + return 0; + } + + return 1; +} + + +static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event) +{ + OGLRender *oglrender= op->customdata; + + int ret; + + switch(event->type) { + case ESCKEY: + /* cancel */ + screen_opengl_render_end(C, op->customdata); + return OPERATOR_FINISHED; + case TIMER: + /* render frame? */ + if(oglrender->timer == event->customdata) + break; + default: + /* nothing to do */ + return OPERATOR_RUNNING_MODAL; + } + + /* run first because screen_opengl_render_anim_step can free oglrender */ + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); + + ret= screen_opengl_render_anim_step(C, op); + + /* stop at the end or on error */ + if(ret == 0) { + return OPERATOR_FINISHED; + } + + return OPERATOR_RUNNING_MODAL; +} + +static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + int anim= RNA_boolean_get(op->ptr, "animation"); + + if(!screen_opengl_render_init(C, op)) + return OPERATOR_CANCELLED; + + if(!anim) { + /* render image */ + screen_opengl_render_apply(op->customdata); + screen_opengl_render_end(C, op->customdata); + screen_set_image_output(C, event->x, event->y); + + return OPERATOR_FINISHED; + } + else { + OGLRender *oglrender= op->customdata; + + if(!screen_opengl_render_anim_initialize(C, op)) + return OPERATOR_CANCELLED; + + screen_set_image_output(C, event->x, event->y); + + WM_event_add_modal_handler(C, op); + oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f); + + return OPERATOR_RUNNING_MODAL; + } +} + +/* executes blocking render */ +static int screen_opengl_render_exec(bContext *C, wmOperator *op) +{ + int anim= RNA_boolean_get(op->ptr, "animation"); + + if(!screen_opengl_render_init(C, op)) + return OPERATOR_CANCELLED; + + if(!anim) { /* same as invoke */ + /* render image */ + screen_opengl_render_apply(op->customdata); + screen_opengl_render_end(C, op->customdata); + + return OPERATOR_FINISHED; + } + else { + int ret= 1; + + if(!screen_opengl_render_anim_initialize(C, op)) + return OPERATOR_CANCELLED; + + while(ret) { + ret= screen_opengl_render_anim_step(C, op); + } + } + + // no redraw needed, we leave state as we entered it +// ED_update_for_newframe(C, 1); + WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, CTX_data_scene(C)); + + return OPERATOR_FINISHED; +} + +void RENDER_OT_opengl(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "OpenGL Render"; + ot->description= "OpenGL render active viewport"; + ot->idname= "RENDER_OT_opengl"; + + /* api callbacks */ + ot->invoke= screen_opengl_render_invoke; + ot->exec= screen_opengl_render_exec; /* blocking */ + ot->modal= screen_opengl_render_modal; + ot->cancel= screen_opengl_render_cancel; + + ot->poll= ED_operator_screenactive; + + RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); + RNA_def_boolean(ot->srna, "view_context", 1, "View Context", "Use the current 3D view for rendering, else use scene settings."); +} + +/* function for getting an opengl buffer from a View3D, used by sequencer */ +// extern void *sequencer_view3d_cb; diff --git a/source/blender/editors/render/render_ops.c b/source/blender/editors/render/render_ops.c index 62fb48c34ff..b1cb1d9c2f1 100644 --- a/source/blender/editors/render/render_ops.c +++ b/source/blender/editors/render/render_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -27,10 +27,8 @@ #include <stdlib.h> -#include "DNA_windowmanager_types.h" #include "WM_api.h" -#include "WM_types.h" #include "render_intern.h" // own include @@ -63,6 +61,19 @@ void ED_operatortypes_render(void) WM_operatortype_append(SCENE_OT_render_data_set_quicktime_codec); #endif + WM_operatortype_append(TEXTURE_OT_slot_copy); + WM_operatortype_append(TEXTURE_OT_slot_paste); WM_operatortype_append(TEXTURE_OT_slot_move); + WM_operatortype_append(TEXTURE_OT_envmap_save); + WM_operatortype_append(TEXTURE_OT_envmap_clear); + WM_operatortype_append(TEXTURE_OT_envmap_clear_all); + + /* render_internal.c */ + WM_operatortype_append(RENDER_OT_view_show); + WM_operatortype_append(RENDER_OT_render); + WM_operatortype_append(RENDER_OT_view_cancel); + + /* render_opengl.c */ + WM_operatortype_append(RENDER_OT_opengl); } diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c index aca13fbd66d..ae2462b95f8 100644 --- a/source/blender/editors/render/render_preview.c +++ b/source/blender/editors/render/render_preview.c @@ -46,12 +46,9 @@ #include "BLI_blenlib.h" #include "BLI_threads.h" -#include "DNA_texture_types.h" #include "DNA_world_types.h" #include "DNA_camera_types.h" -#include "DNA_image_types.h" #include "DNA_material_types.h" -#include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_lamp_types.h" #include "DNA_space_types.h" @@ -83,7 +80,6 @@ #include "RE_pipeline.h" -#include "GPU_material.h" #include "WM_api.h" #include "WM_types.h" @@ -100,13 +96,6 @@ #define PR_XMAX 200 #define PR_YMAX 195 -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) -/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */ -#include <pthread.h> -extern pthread_key_t gomp_tls_key; -static void *thread_tls_data; -#endif - /* XXX */ static int qtest() {return 0;} /* XXX */ @@ -310,6 +299,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre sce->r.alphamode= R_ADDSKY; sce->r.cfra= scene->r.cfra; + strcpy(sce->r.engine, scene->r.engine); if(id_type==ID_MA) { Material *mat= (Material *)id; @@ -356,7 +346,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre } - if(sp->pr_method==PR_ICON_RENDER) { + if(sp && sp->pr_method==PR_ICON_RENDER) { if (mat->material_type == MA_TYPE_HALO) { sce->lay= 1<<MA_FLAT; } @@ -416,7 +406,7 @@ static Scene *preview_prepare_scene(Scene *scene, ID *id, int id_type, ShaderPre } } - if(tex && tex->nodetree && sp->pr_method==PR_NODE_RENDER) + if(tex && tex->nodetree && sp && sp->pr_method==PR_NODE_RENDER) ntreeInitPreview(tex->nodetree, sp->sizex, sp->sizey); } else if(id_type==ID_LA) { @@ -481,7 +471,7 @@ static int ed_preview_draw_rect(ScrArea *sa, Scene *sce, ID *id, int split, int } } - re= RE_GetRender(name, RE_SLOT_DEFAULT); + re= RE_GetRender(name); RE_AcquireResultImage(re, &rres); if(rres.rectf) { @@ -709,7 +699,7 @@ void BIF_view3d_previewrender(Scene *scene, ScrArea *sa) ri->status= 0; sprintf(name, "View3dPreview %p", sa); - re= ri->re= RE_NewRender(name, RE_SLOT_DEFAULT); + re= ri->re= RE_NewRender(name); //RE_display_draw_cb(re, view3d_previewrender_progress); //RE_stats_draw_cb(re, view3d_previewrender_stats); //RE_test_break_cb(re, qtest); @@ -759,11 +749,10 @@ void BIF_view3d_previewrender(Scene *scene, ScrArea *sa) /* allow localview render for objects with lights in normal layers */ if(v3d->lay & 0xFF000000) - scene->lay |= v3d->lay; - else scene->lay= v3d->lay; + lay |= v3d->lay; + else lay= v3d->lay; - RE_Database_FromScene(re, scene, 0); // 0= dont use camera view - scene->lay= lay; + RE_Database_FromScene(re, scene, lay, 0); // 0= dont use camera view rstats= RE_GetStats(re); if(rstats->convertdone) @@ -792,7 +781,7 @@ void BIF_view3d_previewrender(Scene *scene, ScrArea *sa) /* OK, can we enter render code? */ if(ri->status==(PR_DISPRECT|PR_DBASE|PR_PROJECTED|PR_ROTATED)) { //printf("curtile %d tottile %d\n", ri->curtile, ri->tottile); - RE_TileProcessor(ri->re, ri->curtile, 0); + RE_TileProcessor(ri->re); //, ri->curtile, 0); if(ri->rect==NULL) ri->rect= MEM_mallocN(sizeof(int)*ri->pr_rectx*ri->pr_recty, "preview view3d rect"); @@ -897,11 +886,11 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs if(!split || first) sprintf(name, "Preview %p", sp->owner); else sprintf(name, "SecondPreview %p", sp->owner); - re= RE_GetRender(name, RE_SLOT_DEFAULT); + re= RE_GetRender(name); /* full refreshed render from first tile */ if(re==NULL) - re= RE_NewRender(name, RE_SLOT_DEFAULT); + re= RE_NewRender(name); /* sce->r gets copied in RE_InitState! */ sce->r.scemode &= ~(R_MATNODE_PREVIEW|R_TEXNODE_PREVIEW); @@ -909,6 +898,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs if(sp->pr_method==PR_ICON_RENDER) { sce->r.scemode |= R_NO_IMAGE_LOAD; + sce->r.mode |= R_OSA; } else if(sp->pr_method==PR_NODE_RENDER) { if(idtype == ID_MA) sce->r.scemode |= R_MATNODE_PREVIEW; @@ -927,10 +917,12 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs else sizex= sp->sizex; /* allocates or re-uses render result */ - RE_InitState(re, NULL, &sce->r, NULL, sizex, sp->sizey, NULL); + sce->r.xsch= sizex; + sce->r.ysch= sp->sizey; + sce->r.size= 100; /* callbacs are cleared on GetRender() */ - if(sp->pr_method==PR_BUTS_RENDER) { + if(ELEM(sp->pr_method, PR_BUTS_RENDER, PR_NODE_RENDER)) { RE_display_draw_cb(re, sp, shader_preview_draw); RE_test_break_cb(re, sp, shader_preview_break); } @@ -940,10 +932,7 @@ static void shader_preview_render(ShaderPreview *sp, ID *id, int split, int firs ((Camera *)sce->camera->data)->lens *= (float)sp->sizey/(float)sizex; /* entire cycle for render engine */ - RE_SetCamera(re, sce->camera); - RE_Database_FromScene(re, sce, 1); - RE_TileProcessor(re, 0, 1); // actual render engine - RE_Database_Free(re); + RE_PreviewRender(re, sce); ((Camera *)sce->camera->data)->lens= oldlens; @@ -1101,15 +1090,10 @@ static void icon_preview_startjob(void *customdata, short *stop, short *do_updat /* use same function for icon & shader, so the job manager does not run two of them at the same time. */ -static void common_preview_startjob(void *customdata, short *stop, short *do_update) +static void common_preview_startjob(void *customdata, short *stop, short *do_update, float *progress) { ShaderPreview *sp= customdata; -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - pthread_setspecific (gomp_tls_key, thread_tls_data); -#endif - if(sp->pr_method == PR_ICON_RENDER) icon_preview_startjob(customdata, stop, do_update); else @@ -1123,7 +1107,7 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r wmJob *steve; ShaderPreview *sp; - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner, WM_JOB_EXCL_RENDER); + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner, "Icon Preview", WM_JOB_EXCL_RENDER); sp= MEM_callocN(sizeof(ShaderPreview), "shader preview"); /* customdata for preview thread */ @@ -1138,13 +1122,8 @@ void ED_preview_icon_job(const bContext *C, void *owner, ID *id, unsigned int *r /* setup job */ WM_jobs_customdata(steve, sp, shader_preview_free); WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL); - WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL); + WM_jobs_callbacks(steve, common_preview_startjob, NULL, NULL, NULL); -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - thread_tls_data = pthread_getspecific(gomp_tls_key); -#endif - WM_jobs_start(CTX_wm_manager(C), steve); } @@ -1153,7 +1132,7 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M wmJob *steve; ShaderPreview *sp; - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner, WM_JOB_EXCL_RENDER); + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), owner, "Shader Preview", WM_JOB_EXCL_RENDER); sp= MEM_callocN(sizeof(ShaderPreview), "shader preview"); /* customdata for preview thread */ @@ -1169,14 +1148,15 @@ void ED_preview_shader_job(const bContext *C, void *owner, ID *id, ID *parent, M /* setup job */ WM_jobs_customdata(steve, sp, shader_preview_free); WM_jobs_timer(steve, 0.1, NC_MATERIAL, NC_MATERIAL); - WM_jobs_callbacks(steve, common_preview_startjob, NULL, shader_preview_updatejob); - -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - thread_tls_data = pthread_getspecific(gomp_tls_key); -#endif + WM_jobs_callbacks(steve, common_preview_startjob, NULL, shader_preview_updatejob, NULL); WM_jobs_start(CTX_wm_manager(C), steve); } +void ED_preview_kill_jobs(const struct bContext *C) +{ + wmWindowManager *wm= CTX_wm_manager(C); + if(wm) + WM_jobs_kill(wm, NULL, common_preview_startjob); +} diff --git a/source/blender/editors/render/render_shading.c b/source/blender/editors/render/render_shading.c index 54c9df38add..f96e82a30f4 100644 --- a/source/blender/editors/render/render_shading.c +++ b/source/blender/editors/render/render_shading.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,27 +32,34 @@ #include "DNA_curve_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" -#include "DNA_meshdata_types.h" #include "DNA_node_types.h" #include "DNA_object_types.h" -#include "DNA_texture_types.h" #include "DNA_scene_types.h" +#include "DNA_space_types.h" #include "DNA_world_types.h" +#include "BKE_animsys.h" #include "BKE_context.h" #include "BKE_depsgraph.h" #include "BKE_font.h" +#include "BKE_global.h" #include "BKE_icons.h" +#include "BKE_image.h" #include "BKE_library.h" #include "BKE_main.h" #include "BKE_material.h" #include "BKE_node.h" +#include "BKE_report.h" #include "BKE_scene.h" #include "BKE_texture.h" #include "BKE_utildefines.h" #include "BKE_world.h" #include "BKE_tessmesh.h" +#include "IMB_imbuf.h" +#include "IMB_imbuf_types.h" + +#include "BLI_blenlib.h" #include "BLI_math.h" #include "BLI_editVert.h" #include "BLI_listbase.h" @@ -60,20 +67,16 @@ #include "GPU_material.h" #include "RNA_access.h" -#include "RNA_enum_types.h" #include "WM_api.h" #include "WM_types.h" #include "ED_curve.h" #include "ED_mesh.h" -#include "ED_render.h" -#include "RNA_access.h" #include "RNA_define.h" #include "UI_interface.h" -#include "UI_resources.h" #include "render_intern.h" // own include @@ -194,6 +197,19 @@ static void world_changed(Main *bmain, World *wo) GPU_material_free(ma); } +static void image_changed(Main *bmain, Image *ima) +{ + Tex *tex; + + /* icons */ + BKE_icon_changed(BKE_icon_getid(&ima->id)); + + /* textures */ + for(tex=bmain->tex.first; tex; tex=tex->id.next) + if(tex->ima == ima) + texture_changed(bmain, tex); +} + void ED_render_id_flush_update(Main *bmain, ID *id) { if(!id) @@ -212,6 +228,9 @@ void ED_render_id_flush_update(Main *bmain, ID *id) case ID_LA: lamp_changed(bmain, (Lamp*)id); break; + case ID_IM: + image_changed(bmain, (Image*)id); + break; default: break; } @@ -305,7 +324,7 @@ static int material_slot_assign_exec(bContext *C, wmOperator *op) } else if(ob->type == OB_FONT) { EditFont *ef= ((Curve*)ob->data)->editfont; - int i, selstart, selend; + int i, selstart, selend; if(ef && BKE_font_getselection(ob, &selstart, &selend)) { for(i=selstart; i<=selend; i++) @@ -314,8 +333,8 @@ static int material_slot_assign_exec(bContext *C, wmOperator *op) } } - DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + WM_event_add_notifier(C, NC_GEOM|ND_DATA, ob->data); return OPERATOR_FINISHED; } @@ -395,7 +414,7 @@ static int material_slot_de_select(bContext *C, int select) } } - WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); + WM_event_add_notifier(C, NC_GEOM|ND_SELECT, ob->data); return OPERATOR_FINISHED; } @@ -693,6 +712,7 @@ void SCENE_OT_render_layer_remove(wmOperatorType *ot) static int texture_slot_move(bContext *C, wmOperator *op) { ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data; + Material *ma = (Material *)id; if(id) { MTex **mtex_ar, *mtexswap; @@ -706,6 +726,10 @@ static int texture_slot_move(bContext *C, wmOperator *op) mtexswap = mtex_ar[act]; mtex_ar[act] = mtex_ar[act-1]; mtex_ar[act-1] = mtexswap; + + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, act-1, -1, 0); + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, act, act-1, 0); + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, -1, act, 0); if(GS(id->name)==ID_MA) { Material *ma= (Material *)id; @@ -715,7 +739,7 @@ static int texture_slot_move(bContext *C, wmOperator *op) ma->septex &= ~(1<<(act-1)); ma->septex |= mtexuse >> 1; } - + set_active_mtex(id, act-1); } } @@ -724,6 +748,10 @@ static int texture_slot_move(bContext *C, wmOperator *op) mtexswap = mtex_ar[act]; mtex_ar[act] = mtex_ar[act+1]; mtex_ar[act+1] = mtexswap; + + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, act+1, -1, 0); + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, act, act+1, 0); + BKE_animdata_fix_paths_rename(id, ma->adt, "texture_slots", NULL, NULL, -1, act, 0); if(GS(id->name)==ID_MA) { Material *ma= (Material *)id; @@ -733,7 +761,7 @@ static int texture_slot_move(bContext *C, wmOperator *op) ma->septex &= ~(1<<(act+1)); ma->septex |= mtexuse << 1; } - + set_active_mtex(id, act+1); } } @@ -768,6 +796,201 @@ void TEXTURE_OT_slot_move(wmOperatorType *ot) +/********************** environment map operators *********************/ + +static int save_envmap(wmOperator *op, Scene *scene, EnvMap *env, char *str, int imtype) +{ + ImBuf *ibuf=NULL; + int dx; + int retval; + + if(env->cube[1]==NULL) { + BKE_report(op->reports, RPT_ERROR, "There is no generated environment map available to save"); + return OPERATOR_CANCELLED; + } + + dx= env->cube[1]->x; + + if (env->type == ENV_CUBE) { + ibuf = IMB_allocImBuf(3*dx, 2*dx, 24, IB_rectfloat, 0); + + IMB_rectcpy(ibuf, env->cube[0], 0, 0, 0, 0, dx, dx); + IMB_rectcpy(ibuf, env->cube[1], dx, 0, 0, 0, dx, dx); + IMB_rectcpy(ibuf, env->cube[2], 2*dx, 0, 0, 0, dx, dx); + IMB_rectcpy(ibuf, env->cube[3], 0, dx, 0, 0, dx, dx); + IMB_rectcpy(ibuf, env->cube[4], dx, dx, 0, 0, dx, dx); + IMB_rectcpy(ibuf, env->cube[5], 2*dx, dx, 0, 0, dx, dx); + } + else if (env->type == ENV_PLANE) { + ibuf = IMB_allocImBuf(dx, dx, 24, IB_rectfloat, 0); + IMB_rectcpy(ibuf, env->cube[1], 0, 0, 0, 0, dx, dx); + } + + if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) + ibuf->profile = IB_PROFILE_LINEAR_RGB; + + if (BKE_write_ibuf(scene, ibuf, str, imtype, scene->r.subimtype, scene->r.quality)) { + retval = OPERATOR_FINISHED; + } + else { + BKE_reportf(op->reports, RPT_ERROR, "Error saving environment map to %s.", str); + retval = OPERATOR_CANCELLED; + } + + IMB_freeImBuf(ibuf); + ibuf = NULL; + + return retval; +} + +static int envmap_save_exec(bContext *C, wmOperator *op) +{ + Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; + Scene *scene = CTX_data_scene(C); + //int imtype = RNA_enum_get(op->ptr, "file_type"); + int imtype = scene->r.imtype; + char path[FILE_MAX]; + + RNA_string_get(op->ptr, "filepath", path); + + if(scene->r.scemode & R_EXTENSION) { + BKE_add_image_extension(path, imtype); + } + + WM_cursor_wait(1); + + save_envmap(op, scene, tex->env, path, imtype); + + WM_cursor_wait(0); + + WM_event_add_notifier(C, NC_TEXTURE, tex); + + return OPERATOR_FINISHED; +} + +static int envmap_save_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + //Scene *scene= CTX_data_scene(C); + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + if(RNA_property_is_set(op->ptr, "filepath")) + return envmap_save_exec(C, op); + + //RNA_enum_set(op->ptr, "file_type", scene->r.imtype); + + RNA_string_set(op->ptr, "filepath", G.sce); + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; +} + +static int envmap_save_poll(bContext *C) +{ + Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; + + if (!tex) + return 0; + if (!tex->env || !tex->env->ok) + return 0; + if (tex->env->cube[1]==NULL) + return 0; + + return 1; +} + +void TEXTURE_OT_envmap_save(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Save Environment Map"; + ot->idname= "TEXTURE_OT_envmap_save"; + ot->description="Save the current generated Environment map to an image file"; + + /* api callbacks */ + ot->exec= envmap_save_exec; + ot->invoke= envmap_save_invoke; + ot->poll= envmap_save_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + //RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); +} + +static int envmap_clear_exec(bContext *C, wmOperator *op) +{ + Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; + + BKE_free_envmapdata(tex->env); + + WM_event_add_notifier(C, NC_TEXTURE|NA_EDITED, tex); + + return OPERATOR_FINISHED; +} + +static int envmap_clear_poll(bContext *C) +{ + Tex *tex= CTX_data_pointer_get_type(C, "texture", &RNA_Texture).data; + + if (!tex) + return 0; + if (!tex->env || !tex->env->ok) + return 0; + if (tex->env->cube[1]==NULL) + return 0; + + return 1; +} + +void TEXTURE_OT_envmap_clear(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Clear Environment Map"; + ot->idname= "TEXTURE_OT_envmap_clear"; + ot->description="Discard the environment map and free it from memory"; + + /* api callbacks */ + ot->exec= envmap_clear_exec; + ot->poll= envmap_clear_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int envmap_clear_all_exec(bContext *C, wmOperator *op) +{ + Main *bmain = CTX_data_main(C); + Tex *tex; + + for (tex=bmain->tex.first; tex; tex=tex->id.next) + if (tex->env) + BKE_free_envmapdata(tex->env); + + WM_event_add_notifier(C, NC_TEXTURE|NA_EDITED, tex); + + return OPERATOR_FINISHED; +} + +void TEXTURE_OT_envmap_clear_all(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Clear All Environment Maps"; + ot->idname= "TEXTURE_OT_envmap_clear_all"; + ot->description="Discard all environment maps in the .blend file and free them from memory"; + + /* api callbacks */ + ot->exec= envmap_clear_all_exec; + ot->poll= envmap_clear_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/********************** material operators *********************/ + /* material copy/paste */ static int copy_material_exec(bContext *C, wmOperator *op) { @@ -816,7 +1039,7 @@ void MATERIAL_OT_paste(wmOperatorType *ot) /* identifiers */ ot->name= "Paste Material"; ot->idname= "MATERIAL_OT_paste"; - ot->description="Copy the material settings and nodes"; + ot->description="Paste the material settings and nodes"; /* api callbacks */ ot->exec= paste_material_exec; @@ -824,3 +1047,155 @@ void MATERIAL_OT_paste(wmOperatorType *ot) /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } + + +static short mtexcopied=0; /* must be reset on file load */ +static MTex mtexcopybuf; + +void ED_render_clear_mtex_copybuf(void) +{ /* use for file reload */ + mtexcopied= 0; +} + +void copy_mtex_copybuf(ID *id) +{ + MTex **mtex= NULL; + + switch(GS(id->name)) { + case ID_MA: + mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]); + break; + case ID_LA: + mtex= &(((Lamp *)id)->mtex[(int)((Lamp *)id)->texact]); + // la->mtex[(int)la->texact] // TODO + break; + case ID_WO: + mtex= &(((World *)id)->mtex[(int)((World *)id)->texact]); + // mtex= wrld->mtex[(int)wrld->texact]; // TODO + break; + } + + if(mtex && *mtex) { + memcpy(&mtexcopybuf, *mtex, sizeof(MTex)); + mtexcopied= 1; + } + else { + mtexcopied= 0; + } +} + +void paste_mtex_copybuf(ID *id) +{ + MTex **mtex= NULL; + + if(mtexcopied == 0 || mtexcopybuf.tex==NULL) + return; + + switch(GS(id->name)) { + case ID_MA: + mtex= &(((Material *)id)->mtex[(int)((Material *)id)->texact]); + break; + case ID_LA: + mtex= &(((Lamp *)id)->mtex[(int)((Lamp *)id)->texact]); + // la->mtex[(int)la->texact] // TODO + break; + case ID_WO: + mtex= &(((World *)id)->mtex[(int)((World *)id)->texact]); + // mtex= wrld->mtex[(int)wrld->texact]; // TODO + break; + } + + if(mtex) { + if(*mtex==NULL) { + *mtex= MEM_mallocN(sizeof(MTex), "mtex copy"); + } + else if((*mtex)->tex) { + (*mtex)->tex->id.us--; + } + + memcpy(*mtex, &mtexcopybuf, sizeof(MTex)); + + id_us_plus((ID *)mtexcopybuf.tex); + } +} + + +static int copy_mtex_exec(bContext *C, wmOperator *op) +{ + ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data; + + if(id==NULL) { + /* copying empty slot */ + ED_render_clear_mtex_copybuf(); + return OPERATOR_CANCELLED; + } + + copy_mtex_copybuf(id); + + WM_event_add_notifier(C, NC_TEXTURE, NULL); + + return OPERATOR_FINISHED; +} + +static int copy_mtex_poll(bContext *C) +{ + ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data; + + return (id != NULL); +} + +void TEXTURE_OT_slot_copy(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy Texture Slot Settings"; + ot->idname= "TEXTURE_OT_slot_copy"; + ot->description="Copy the material texture settings and nodes"; + + /* api callbacks */ + ot->exec= copy_mtex_exec; + ot->poll= copy_mtex_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int paste_mtex_exec(bContext *C, wmOperator *op) +{ + ID *id= CTX_data_pointer_get_type(C, "texture_slot", &RNA_TextureSlot).id.data; + + if(id==NULL) { + Material *ma= CTX_data_pointer_get_type(C, "material", &RNA_Material).data; + Lamp *la= CTX_data_pointer_get_type(C, "lamp", &RNA_Lamp).data; + World *wo= CTX_data_pointer_get_type(C, "world", &RNA_World).data; + + if (ma) + id = &ma->id; + else if (la) + id = &la->id; + else if (wo) + id = &wo->id; + + if (id==NULL) + return OPERATOR_CANCELLED; + } + + paste_mtex_copybuf(id); + + WM_event_add_notifier(C, NC_TEXTURE|ND_SHADING_DRAW, NULL); + + return OPERATOR_FINISHED; +} + +void TEXTURE_OT_slot_paste(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Paste Texture Slot Settings"; + ot->idname= "TEXTURE_OT_slot_paste"; + ot->description="Copy the texture settings and nodes"; + + /* api callbacks */ + ot->exec= paste_mtex_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/screen/CMakeLists.txt b/source/blender/editors/screen/CMakeLists.txt index 5708ab6684d..f9b5ceba0e4 100644 --- a/source/blender/editors/screen/CMakeLists.txt +++ b/source/blender/editors/screen/CMakeLists.txt @@ -1,13 +1,10 @@ # $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ -# ***** BEGIN GPL/BL DUAL LICENSE BLOCK ***** +# ***** BEGIN GPL LICENSE BLOCK ***** # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 -# of the License, or (at your option) any later version. The Blender -# Foundation also sells licenses for use in proprietary software under -# the Blender License. See http://www.blender.org/BL/ for information -# about this. +# of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,61 +15,27 @@ # along with this program; if not, write to the Free Software Foundation, # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # -# The Original Code is Copyright (C) 2006, Blender Foundation -# All rights reserved. -# -# The Original Code is: all of this file. -# # Contributor(s): Jacques Beaurain. # -# ***** END GPL/BL DUAL LICENSE BLOCK ***** - -FILE(GLOB SRC */*.c) - -SET(INC ../../windowmanager - ../../editors/include - ../../../../intern/guardedalloc ../../../../intern/memutil - ../../blenlib ../../makesdna ../../makesrna ../../blenkernel - ../../include ../../imbuf - ../../render/extern/include ../../../../intern/bsp/extern - ../../../intern/decimation/extern ../../blenloader - ../../../kernel/gen_system ../../readstreamglue - ../../../../intern/elbeem/extern - ../../../../intern/ghost ../../../../intern/opennl/extern - ../../nodes +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenfont + ../../blenkernel + ../../blenlib + ../../bmesh + ../../imbuf + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager ) -IF(WITH_INTERNATIONAL) - ADD_DEFINITIONS(-DINTERNATIONAL) -ENDIF(WITH_INTERNATIONAL) - -IF(WITH_OPENEXR) - ADD_DEFINITIONS(-DWITH_OPENEXR) -ENDIF(WITH_OPENEXR) - -IF(WITH_QUICKTIME) - SET(INC ${INC} ../../quicktime ${QUICKTIME_INC}) - ADD_DEFINITIONS(-DWITH_QUICKTIME) -ENDIF(WITH_QUICKTIME) - -IF(WITH_FFMPEG) - SET(INC ${INC} ${FFMPEG_INC}) - ADD_DEFINITIONS(-DWITH_FFMPEG) -ENDIF(WITH_FFMPEG) - -IF(WITH_PYTHON) - SET(INC ${INC} ../../python ${PYTHON_INC}) -ELSE(WITH_PYTHON) - ADD_DEFINITIONS(-DDISABLE_PYTHON) -ENDIF(WITH_PYTHON) - IF(WIN32) SET(INC ${INC} ${PTHREADS_INC}) ENDIF(WIN32) -IF(WITH_BUILDINFO) - ADD_DEFINITIONS(-DNAN_BUILDINFO) -ENDIF(WITH_BUILDINFO) - -BLENDERLIB_NOLIST(bf_editors "${SRC}" "${INC}") - +BLENDERLIB(bf_editor_screen "${SRC}" "${INC}") diff --git a/source/blender/editors/screen/SConscript b/source/blender/editors/screen/SConscript index 1b5a33e12be..5ce15cf5472 100644 --- a/source/blender/editors/screen/SConscript +++ b/source/blender/editors/screen/SConscript @@ -4,17 +4,12 @@ Import ('env') sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../blenfont ../../makesdna ../../imbuf' -incs += ' ../../blenloader ../../windowmanager ../../python ../../makesrna ../../gpu' +incs += ' ../../blenloader ../../windowmanager ../../makesrna ../../gpu' incs += ' ../../render/extern/include ../../bmesh' incs += ' #/intern/guardedalloc #/extern/glew/include' defs = '' -if not env['WITH_BF_PYTHON']: - defs += 'DISABLE_PYTHON' -if env['WITH_BF_OPENEXR']: - defs += ' WITH_OPENEXR' - if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' @@ -22,8 +17,4 @@ if env['OURPLATFORM'] == 'linux2': if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): incs += ' ' + env['BF_PTHREADS_INC'] -if env['OURPLATFORM'] == 'darwin': - if env['WITH_BF_OPENMP']: - defs += ' PARALLEL=1' - env.BlenderLib ( 'bf_editors_screen', sources, Split(incs), Split(defs), libtype=['core'], priority=[105] ) diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 9069b4b6244..fa7064b817d 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,7 +31,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_screen_types.h" #include "DNA_userdef_types.h" #include "BLI_blenlib.h" @@ -50,6 +49,7 @@ #include "ED_screen.h" #include "ED_screen_types.h" #include "ED_types.h" +#include "ED_fileselect.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -59,10 +59,6 @@ #include "UI_resources.h" #include "UI_view2d.h" -#ifndef DISABLE_PYTHON -#include "BPY_extern.h" -#endif - #include "screen_intern.h" /* general area and region code */ @@ -125,12 +121,12 @@ void ED_region_do_listen(ARegion *ar, wmNotifier *note) case NC_SCREEN: if(note->action==NA_EDITED) ED_region_tag_redraw(ar); - /* pass on */ + break; #endif - default: - if(ar->type && ar->type->listener) - ar->type->listener(ar, note); } + + if(ar->type && ar->type->listener) + ar->type->listener(ar, note); } /* only exported for WM */ @@ -181,14 +177,18 @@ static void area_draw_azone(short x1, short y1, short x2, short y2) float dx= 0.3f*(xmax-xmin); float dy= 0.3f*(ymax-ymin); - glColor4ub(255, 255, 255, 80); + glColor4ub(255, 255, 255, 180); fdrawline(xmin, ymax, xmax, ymin); + glColor4ub(255, 255, 255, 130); fdrawline(xmin, ymax-dy, xmax-dx, ymin); + glColor4ub(255, 255, 255, 80); fdrawline(xmin, ymax-2*dy, xmax-2*dx, ymin); - glColor4ub(0, 0, 0, 150); + glColor4ub(0, 0, 0, 210); fdrawline(xmin, ymax+1, xmax+1, ymin); + glColor4ub(0, 0, 0, 180); fdrawline(xmin, ymax-dy+1, xmax-dx+1, ymin); + glColor4ub(0, 0, 0, 150); fdrawline(xmin, ymax-2*dy+1, xmax-2*dx+1, ymin); } @@ -340,9 +340,7 @@ void ED_region_do_draw(bContext *C, ARegion *ar) /* optional header info instead? */ if(ar->headerstr) { - float col[3]; - UI_GetThemeColor3fv(TH_HEADER, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_HEADER); glClear(GL_COLOR_BUFFER_BIT); UI_ThemeColor(TH_TEXT); @@ -373,17 +371,23 @@ void ED_region_tag_redraw(ARegion *ar) { if(ar) { /* zero region means full region redraw */ - ar->do_draw= 1; + ar->do_draw= RGN_DRAW; memset(&ar->drawrct, 0, sizeof(ar->drawrct)); } } +void ED_region_tag_redraw_overlay(ARegion *ar) +{ + if(ar) + ar->do_draw_overlay= RGN_DRAW; +} + void ED_region_tag_redraw_partial(ARegion *ar, rcti *rct) { if(ar) { if(!ar->do_draw) { /* no redraw set yet, set partial region */ - ar->do_draw= 1; + ar->do_draw= RGN_DRAW_PARTIAL; ar->drawrct= *rct; } else if(ar->drawrct.xmin != ar->drawrct.xmax) { @@ -908,7 +912,7 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa) if(ar->swinid) { /* default region handlers */ ed_default_handlers(wm, &ar->handlers, ar->type->keymapflag); - + /* own handlers */ if(ar->type->init) ar->type->init(wm, ar); } @@ -956,6 +960,7 @@ void area_copy_data(ScrArea *sa1, ScrArea *sa2, int swap_space) { SpaceType *st; ARegion *ar; + int spacetype= sa1->spacetype; sa1->headertype= sa2->headertype; sa1->spacetype= sa2->spacetype; @@ -983,7 +988,7 @@ void area_copy_data(ScrArea *sa1, ScrArea *sa2, int swap_space) } else { if(swap_space<2) { - st= BKE_spacetype_from_id(sa1->spacetype); + st= BKE_spacetype_from_id(spacetype); for(ar= sa1->regionbase.first; ar; ar= ar->next) BKE_area_region_free(st, ar); BLI_freelistN(&sa1->regionbase); @@ -1006,10 +1011,6 @@ void ED_area_swapspace(bContext *C, ScrArea *sa1, ScrArea *sa2) ED_area_exit(C, sa1); ED_area_exit(C, sa2); - tmp->spacetype= sa1->spacetype; - tmp->butspacetype= sa1->butspacetype; - BKE_spacedata_copyfirst(&tmp->spacedata, &sa1->spacedata); - area_copy_data(tmp, sa1, 2); area_copy_data(sa1, sa2, 0); area_copy_data(sa2, tmp, 0); @@ -1098,6 +1099,13 @@ void ED_area_prevspace(bContext *C, ScrArea *sa) { SpaceLink *sl = (sa) ? sa->spacedata.first : CTX_wm_space_data(C); + /* Special handling of filebrowser to stop background thread for + thumbnail creation - don't want to waste cpu resources if not showing + the filebrowser */ + if (sl->spacetype == SPACE_FILE) { + ED_fileselect_exit(C, (SpaceFile*)sl); + } + if(sl->next) { /* workaround for case of double prevspace, render window with a file browser on top of it */ @@ -1221,7 +1229,6 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex Panel *panel; View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; int xco, yco, x, y, miny=0, w, em, header, triangle, open, newcontext= 0; if(contextnr >= 0) @@ -1327,14 +1334,9 @@ void ED_region_panels(const bContext *C, ARegion *ar, int vertical, char *contex } /* clear */ - if (ar->type->regionid == RGN_TYPE_PREVIEW) - UI_GetThemeColor3fv(TH_PREVIEW_BACK, col); - else - UI_GetThemeColor3fv(TH_BACK, col); - - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor((ar->type->regionid == RGN_TYPE_PREVIEW)?TH_PREVIEW_BACK:TH_BACK); glClear(GL_COLOR_BUFFER_BIT); - + /* before setting the view */ if(vertical) { /* only allow scrolling in vertical direction */ @@ -1411,16 +1413,10 @@ void ED_region_header(const bContext *C, ARegion *ar) uiLayout *layout; HeaderType *ht; Header header = {0}; - float col[3]; int maxco, xco, yco; - /* clear */ - if(ED_screen_area_active(C)) - UI_GetThemeColor3fv(TH_HEADER, col); - else - UI_GetThemeColor3fv(TH_HEADERDESEL, col); - - glClearColor(col[0], col[1], col[2], 0.0); + /* clear */ + UI_ThemeClearColor((ED_screen_area_active(C))?TH_HEADER:TH_HEADERDESEL); glClear(GL_COLOR_BUFFER_BIT); /* set view2d view matrix for scrolling (without scrollers) */ diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index 2b55fc2ca6d..06da91c3e37 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -32,7 +32,6 @@ #include "MEM_guardedalloc.h" #include "DNA_vec_types.h" -#include "DNA_listBase.h" #include "BKE_utildefines.h" #include "BKE_colortools.h" @@ -428,10 +427,9 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, int ltexid= glaGetOneInteger(GL_TEXTURE_2D); int lrowlength= glaGetOneInteger(GL_UNPACK_ROW_LENGTH); int subpart_x, subpart_y, tex_w, tex_h; + int seamless, offset_x, offset_y, nsubparts_x, nsubparts_y; int texid= get_cached_work_texture(&tex_w, &tex_h); - int nsubparts_x= (img_w+(tex_w-1))/tex_w; - int nsubparts_y= (img_h+(tex_h-1))/tex_h; - + /* Specify the color outside this function, and tex will modulate it. * This is useful for changing alpha without using glPixelTransferf() */ @@ -448,31 +446,67 @@ void glaDrawPixelsTexScaled(float x, float y, int img_w, int img_h, int format, glPixelZoom(1.f, 1.f); #endif + /* setup seamless 2=on, 0=off */ + seamless= ((tex_w<img_w || tex_h<img_h) && tex_w>2 && tex_h>2)? 2: 0; + + offset_x= tex_w - seamless; + offset_y= tex_h - seamless; + + nsubparts_x= (img_w + (offset_x - 1))/(offset_x); + nsubparts_y= (img_h + (offset_y - 1))/(offset_y); + for (subpart_y=0; subpart_y<nsubparts_y; subpart_y++) { for (subpart_x=0; subpart_x<nsubparts_x; subpart_x++) { - int subpart_w= (subpart_x==nsubparts_x-1)?(img_w-subpart_x*tex_w):tex_w; - int subpart_h= (subpart_y==nsubparts_y-1)?(img_h-subpart_y*tex_h):tex_h; - float rast_x= x+subpart_x*tex_w*xzoom; - float rast_y= y+subpart_y*tex_h*yzoom; + int remainder_x= img_w-subpart_x*offset_x; + int remainder_y= img_h-subpart_y*offset_y; + int subpart_w= (remainder_x<tex_w)? remainder_x: tex_w; + int subpart_h= (remainder_y<tex_h)? remainder_y: tex_h; + int offset_left= (seamless && subpart_x!=0)? 1: 0; + int offset_bot= (seamless && subpart_y!=0)? 1: 0; + int offset_right= (seamless && remainder_x>tex_w)? 1: 0; + int offset_top= (seamless && remainder_y>tex_h)? 1: 0; + float rast_x= x+subpart_x*offset_x*xzoom; + float rast_y= y+subpart_y*offset_y*yzoom; - if(format==GL_FLOAT) - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, GL_RGBA, GL_FLOAT, &f_rect[(subpart_y*tex_w)*img_w*4 + (subpart_x*tex_w)*4]); - else - glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, GL_RGBA, GL_UNSIGNED_BYTE, &uc_rect[(subpart_y*tex_w)*img_w*4 + (subpart_x*tex_w)*4]); - + /* check if we already got these because we always get 2 more when doing seamless*/ + if(subpart_w<=seamless || subpart_h<=seamless) + continue; + + if(format==GL_FLOAT) { + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, GL_RGBA, GL_FLOAT, &f_rect[subpart_y*offset_y*img_w*4 + subpart_x*offset_x*4]); + + /* add an extra border of pixels so linear looks ok at edges of full image. */ + if(subpart_w<tex_w) + glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, 0, 1, subpart_h, GL_RGBA, GL_FLOAT, &f_rect[subpart_y*offset_y*img_w*4 + (subpart_x*offset_x+subpart_w-1)*4]); + if(subpart_h<tex_h) + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, subpart_h, subpart_w, 1, GL_RGBA, GL_FLOAT, &f_rect[(subpart_y*offset_y+subpart_h-1)*img_w*4 + subpart_x*offset_x*4]); + if(subpart_w<tex_w && subpart_h<tex_h) + glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, subpart_h, 1, 1, GL_RGBA, GL_FLOAT, &f_rect[(subpart_y*offset_y+subpart_h-1)*img_w*4 + (subpart_x*offset_x+subpart_w-1)*4]); + } + else { + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, GL_RGBA, GL_UNSIGNED_BYTE, &uc_rect[subpart_y*offset_y*img_w*4 + subpart_x*offset_x*4]); + + if(subpart_w<tex_w) + glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, 0, 1, subpart_h, GL_RGBA, GL_UNSIGNED_BYTE, &uc_rect[subpart_y*offset_y*img_w*4 + (subpart_x*offset_x+subpart_w-1)*4]); + if(subpart_h<tex_h) + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, subpart_h, subpart_w, 1, GL_RGBA, GL_UNSIGNED_BYTE, &uc_rect[(subpart_y*offset_y+subpart_h-1)*img_w*4 + subpart_x*offset_x*4]); + if(subpart_w<tex_w && subpart_h<tex_h) + glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, subpart_h, 1, 1, GL_RGBA, GL_UNSIGNED_BYTE, &uc_rect[(subpart_y*offset_y+subpart_h-1)*img_w*4 + (subpart_x*offset_x+subpart_w-1)*4]); + } + glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); - glTexCoord2f(0, 0); - glVertex2f(rast_x, rast_y); + glTexCoord2f((float)(0 + offset_left)/tex_w, (float)(0 + offset_bot)/tex_h); + glVertex2f(rast_x + (float)offset_left*xzoom, rast_y + (float)offset_bot*xzoom); - glTexCoord2f((float) (subpart_w-1)/tex_w, 0); - glVertex2f(rast_x+subpart_w*xzoom*scaleX, rast_y); + glTexCoord2f((float)(subpart_w - offset_right)/tex_w, (float)(0 + offset_bot)/tex_h); + glVertex2f(rast_x + (float)(subpart_w - offset_right)*xzoom*scaleX, rast_y + (float)offset_bot*xzoom); - glTexCoord2f((float) (subpart_w-1)/tex_w, (float) (subpart_h-1)/tex_h); - glVertex2f(rast_x+subpart_w*xzoom*scaleX, rast_y+subpart_h*yzoom*scaleY); + glTexCoord2f((float)(subpart_w - offset_right)/tex_w, (float)(subpart_h - offset_top)/tex_h); + glVertex2f(rast_x + (float)(subpart_w - offset_right)*xzoom*scaleX, rast_y + (float)(subpart_h - offset_top)*yzoom*scaleY); - glTexCoord2f(0, (float) (subpart_h-1)/tex_h); - glVertex2f(rast_x, rast_y+subpart_h*yzoom*scaleY); + glTexCoord2f((float)(0 + offset_left)/tex_w, (float)(subpart_h - offset_top)/tex_h); + glVertex2f(rast_x + (float)offset_left*xzoom, rast_y + (float)(subpart_h - offset_top)*yzoom*scaleY); glEnd(); glDisable(GL_TEXTURE_2D); } @@ -506,7 +540,7 @@ void glaDrawPixelsSafe_to32(float fx, float fy, int img_w, int img_h, int row_w, floatbuf_to_srgb_byte(rectf, rect32, 0, img_w, 0, img_h, img_w); } else { floatbuf_to_byte(rectf, rect32, 0, img_w, 0, img_h, img_w); - } + } glaDrawPixelsSafe(fx, fy, img_w, img_h, img_w, GL_RGBA, GL_UNSIGNED_BYTE, rect32); diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index 6d61c8c5819..1c570d98744 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,7 +29,7 @@ #include "DNA_object_types.h" #include "DNA_armature_types.h" -#include "DNA_action_types.h" +#include "DNA_sequence_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -37,6 +37,7 @@ #include "BKE_utildefines.h" #include "BKE_global.h" #include "BKE_action.h" +#include "BKE_sequencer.h" #include "RNA_access.h" @@ -61,13 +62,15 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult if(CTX_data_dir(member)) { static const char *dir[] = { - "scene", "selected_objects", "selected_bases", + "scene", "visible_objects", "visible_bases", "selected_objects", "selected_bases", "selected_editable_objects", "selected_editable_bases", "visible_bones", "editable_bones", "selected_bones", "selected_editable_bones", "visible_pose_bones", "selected_pose_bones", "active_bone", "active_pose_bone", "active_base", "active_object", "object", "edit_object", "sculpt_object", "vertex_paint_object", "weight_paint_object", - "texture_paint_object", "particle_edit_object", NULL}; + "texture_paint_object", "particle_edit_object", + "sequences", "selected_sequences", "selected_editable_sequences", /* sequencer */ + NULL}; CTX_data_dir_set(result, dir); return 1; @@ -76,6 +79,20 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_id_pointer_set(result, &scene->id); return 1; } + else if(CTX_data_equals(member, "visible_objects") || CTX_data_equals(member, "visible_bases")) { + int visible_objects= CTX_data_equals(member, "visible_objects"); + + for(base=scene->base.first; base; base=base->next) { + if(((base->object->restrictflag & OB_RESTRICT_VIEW) == 0) && (base->lay & scene->lay)) { + if(visible_objects) + CTX_data_id_list_add(result, &base->object->id); + else + CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base); + } + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } else if(CTX_data_equals(member, "selected_objects") || CTX_data_equals(member, "selected_bases")) { int selected_objects= CTX_data_equals(member, "selected_objects"); @@ -87,7 +104,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_list_add(result, &scene->id, &RNA_ObjectBase, base); } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "selected_editable_objects") || CTX_data_equals(member, "selected_editable_bases")) { @@ -105,7 +122,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "visible_bones") || CTX_data_equals(member, "editable_bones")) { @@ -146,7 +163,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } } @@ -188,7 +205,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } } @@ -203,7 +220,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_list_add(result, &obact->id, &RNA_PoseBone, pchan); } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } } @@ -219,7 +236,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult CTX_data_list_add(result, &obact->id, &RNA_PoseBone, pchan); } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } } @@ -304,6 +321,43 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult return 1; } + else if(CTX_data_equals(member, "sequences")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } + else if(CTX_data_equals(member, "selected_sequences")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + if (seq->flag & SELECT) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } + else if(CTX_data_equals(member, "selected_editable_sequences")) { + Editing *ed= seq_give_editing(scene, FALSE); + if(ed) { + Sequence *seq; + for (seq= ed->seqbasep->first; seq; seq= seq->next) { + if (seq->flag & SELECT && !(seq->flag & SEQ_LOCK)) { + CTX_data_list_add(result, &scene->id, &RNA_Sequence, seq); + } + } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); + return 1; + } + } else { return 0; /* not found */ } diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index d19d017a637..a3f97a7c5ce 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -28,10 +28,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_vec_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_texture_types.h" #include "DNA_userdef_types.h" #include "BLI_blenlib.h" @@ -52,6 +49,7 @@ #include "WM_types.h" #include "ED_image.h" +#include "ED_view3d.h" #include "ED_screen.h" #include "ED_screen_types.h" @@ -1234,11 +1232,17 @@ void ED_screen_set_subwinactive(wmWindow *win, wmEvent *event) int ED_screen_area_active(const bContext *C) { + wmWindow *win= CTX_wm_window(C); bScreen *sc= CTX_wm_screen(C); ScrArea *sa= CTX_wm_area(C); - if(sc && sa) { + if(win && sc && sa) { + AZone *az= is_in_area_actionzone(sa, win->eventstate->x, win->eventstate->y); ARegion *ar; + + if (az && az->type == AZONE_REGION) + return 1; + for(ar= sa->regionbase.first; ar; ar= ar->next) if(ar->swinid == sc->subwinactive) return 1; @@ -1390,6 +1394,9 @@ void ED_screen_set_scene(bContext *C, Scene *scene) while(sl) { if(sl->spacetype==SPACE_VIEW3D) { View3D *v3d= (View3D*) sl; + + BKE_screen_view3d_sync(v3d, scene); + if (!v3d->camera || !object_in_scene(v3d->camera, scene)) { v3d->camera= scene_find_camera(sc->scene); // XXX if (sc==curscreen) handle_view3d_lock(); @@ -1441,8 +1448,76 @@ void ED_screen_delete_scene(bContext *C, Scene *scene) unlink_scene(bmain, scene, newscene); } +int ED_screen_full_newspace(bContext *C, ScrArea *sa, int type) +{ + wmWindow *win= CTX_wm_window(C); + bScreen *screen= CTX_wm_screen(C); + ScrArea *newsa= NULL; + + if(!sa || sa->full==0) { + newsa= ED_screen_full_toggle(C, win, sa); + } + + if(!newsa) { + if (sa->full) { + /* if this has been called from the temporary info header generated in + * temp fullscreen layouts, find the correct fullscreen area to change + * to create a new space inside */ + for (newsa = screen->areabase.first; newsa; newsa=newsa->next) { + if (!(sa->flag & AREA_TEMP_INFO)) + break; + } + } else + newsa= sa; + } + + ED_area_newspace(C, newsa, type); + + return 1; +} + +void ED_screen_full_prevspace(bContext *C, ScrArea *sa) +{ + wmWindow *win= CTX_wm_window(C); + + ED_area_prevspace(C, sa); + + if(sa->full) + ED_screen_full_toggle(C, win, sa); +} + +/* restore a screen / area back to default operation, after temp fullscreen modes */ +void ED_screen_full_restore(bContext *C, ScrArea *sa) +{ + wmWindow *win= CTX_wm_window(C); + SpaceLink *sl = sa->spacedata.first; + + /* if fullscreen area has a secondary space (such as a file browser or fullscreen render + * overlaid on top of a existing setup) then return to the previous space */ + + if (sl->next) { + /* specific checks for space types */ + if (sl->spacetype == SPACE_IMAGE) { + SpaceImage *sima= sa->spacedata.first; + if (sima->flag & SI_PREVSPACE) + sima->flag &= ~SI_PREVSPACE; + if (sima->flag & SI_FULLWINDOW) { + sima->flag &= ~SI_FULLWINDOW; + ED_screen_full_prevspace(C, sa); + } + } else if (sl->spacetype == SPACE_FILE) { + ED_screen_full_prevspace(C, sa); + } else + ED_screen_full_toggle(C, win, sa); + } + /* otherwise just tile the area again */ + else { + ED_screen_full_toggle(C, win, sa); + } +} + /* this function toggles: if area is full then the parent will be restored */ -ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) +ScrArea *ED_screen_full_toggle(bContext *C, wmWindow *win, ScrArea *sa) { bScreen *sc, *oldscreen; ARegion *ar; @@ -1454,45 +1529,45 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) for(ar=sa->regionbase.first; ar; ar=ar->next) uiFreeBlocks(C, &ar->uiblocks); } - + if(sa && sa->full) { short fulltype; - + sc= sa->full; /* the old screen to restore */ oldscreen= win->screen; /* the one disappearing */ - + fulltype = sc->full; - + /* refuse to go out of SCREENAUTOPLAY as long as G_FLAGS_AUTOPLAY is set */ - + if (fulltype != SCREENAUTOPLAY || (G.flags & G_FILE_AUTOPLAY) == 0) { ScrArea *old; - + sc->full= 0; - + /* find old area */ - for(old= sc->areabase.first; old; old= old->next) + for(old= sc->areabase.first; old; old= old->next) if(old->full) break; if(old==NULL) { if (G.f & G_DEBUG) - printf("something wrong in areafullscreen\n"); + printf("something wrong in areafullscreen\n"); return NULL; } - // old feature described below (ton) - // in autoplay screens the headers are disabled by + // old feature described below (ton) + // in autoplay screens the headers are disabled by // default. So use the old headertype instead - + area_copy_data(old, sa, 1); /* 1 = swap spacelist */ if (sa->flag & AREA_TEMP_INFO) sa->flag &= ~AREA_TEMP_INFO; old->full= NULL; - + /* animtimer back */ sc->animtimer= oldscreen->animtimer; oldscreen->animtimer= NULL; - + ED_screen_set(C, sc); - + free_screen(oldscreen); free_libblock(&CTX_data_main(C)->screen, oldscreen); } @@ -1500,7 +1575,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) else { ScrArea *newa; char newname[20]; - + oldscreen= win->screen; /* nothing wrong with having only 1 area, as far as I can see... @@ -1508,20 +1583,20 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) if(oldscreen->areabase.first==oldscreen->areabase.last) return NULL; */ - + oldscreen->full = SCREENFULL; BLI_snprintf(newname, sizeof(newname), "%s-%s", oldscreen->id.name+2, "temp"); sc= ED_screen_add(win, oldscreen->scene, newname); sc->full = SCREENFULL; // XXX - + /* timer */ sc->animtimer= oldscreen->animtimer; oldscreen->animtimer= NULL; - + /* returns the top small area */ newa= area_split(win, sc, (ScrArea *)sc->areabase.first, 'h', 0.99f); ED_area_newspace(C, newa, SPACE_INFO); - + /* use random area when we have no active one, e.g. when the mouse is outside of the window and we open a file browser */ if(!sa) @@ -1535,7 +1610,7 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) sa->full= oldscreen; newa->full= oldscreen; newa->next->full= oldscreen; // XXX - + ED_screen_set(C, sc); } @@ -1547,74 +1622,6 @@ ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa) return sc->areabase.first; } -int ED_screen_full_newspace(bContext *C, ScrArea *sa, int type) -{ - wmWindow *win= CTX_wm_window(C); - bScreen *screen= CTX_wm_screen(C); - ScrArea *newsa= NULL; - - if(!sa || sa->full==0) { - newsa= ed_screen_fullarea(C, win, sa); - } - - if(!newsa) { - if (sa->full) { - /* if this has been called from the temporary info header generated in - * temp fullscreen layouts, find the correct fullscreen area to change - * to create a new space inside */ - for (newsa = screen->areabase.first; newsa; newsa=newsa->next) { - if (!(sa->flag & AREA_TEMP_INFO)) - break; - } - } else - newsa= sa; - } - - ED_area_newspace(C, newsa, type); - - return 1; -} - -void ED_screen_full_prevspace(bContext *C, ScrArea *sa) -{ - wmWindow *win= CTX_wm_window(C); - - ED_area_prevspace(C, sa); - - if(sa->full) - ed_screen_fullarea(C, win, sa); -} - -/* restore a screen / area back to default operation, after temp fullscreen modes */ -void ED_screen_full_restore(bContext *C, ScrArea *sa) -{ - wmWindow *win= CTX_wm_window(C); - SpaceLink *sl = sa->spacedata.first; - - /* if fullscreen area has a secondary space (such as as file browser or fullscreen render - * overlaid on top of a existing setup) then return to the previous space */ - - if (sl->next) { - /* specific checks for space types */ - if (sl->spacetype == SPACE_IMAGE) { - SpaceImage *sima= sa->spacedata.first; - if (sima->flag & SI_PREVSPACE) - sima->flag &= ~SI_PREVSPACE; - if (sima->flag & SI_FULLWINDOW) { - sima->flag &= ~SI_FULLWINDOW; - ED_screen_full_prevspace(C, sa); - } - } else if (sl->spacetype == SPACE_FILE) { - ED_screen_full_prevspace(C, sa); - } else - ed_screen_fullarea(C, win, sa); - } - /* otherwise just tile the area again */ - else { - ed_screen_fullarea(C, win, sa); - } -} - /* update frame rate info for viewport drawing */ void ED_refresh_viewport_fps(bContext *C) { @@ -1644,7 +1651,7 @@ void ED_refresh_viewport_fps(bContext *C) /* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ -void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) +void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable) { bScreen *screen= CTX_wm_screen(C); wmWindowManager *wm= CTX_wm_manager(C); @@ -1662,6 +1669,7 @@ void ED_screen_animation_timer(bContext *C, int redraws, int sync, int enable) sad->ar= CTX_wm_region(C); sad->sfra = scene->r.cfra; sad->redraws= redraws; + sad->refresh= refresh; sad->flag |= (enable < 0)? ANIMPLAY_FLAG_REVERSE: 0; sad->flag |= (sync == 0)? ANIMPLAY_FLAG_NO_SYNC: (sync == 1)? ANIMPLAY_FLAG_SYNC: 0; screen->animtimer->customdata= sad; @@ -1695,13 +1703,14 @@ static ARegion *time_top_left_3dwindow(bScreen *screen) return aret; } -void ED_screen_animation_timer_update(bScreen *screen, int redraws) +void ED_screen_animation_timer_update(bScreen *screen, int redraws, int refresh) { if(screen && screen->animtimer) { wmTimer *wt= screen->animtimer; ScreenAnimData *sad= wt->customdata; sad->redraws= redraws; + sad->refresh= refresh; sad->ar= NULL; if(redraws & TIME_REGION) sad->ar= time_top_left_3dwindow(screen); @@ -1715,36 +1724,23 @@ void ED_update_for_newframe(const bContext *C, int mute) Scene *scene= CTX_data_scene(C); #ifdef DURIAN_CAMERA_SWITCH - void *camera= scene_find_camera_switch(scene); + void *camera= scene_camera_switch_find(scene); if(camera && scene->camera != camera) { - - if(camera && scene->camera && (camera != scene->camera)) { - bScreen *sc; - /* are there cameras in the views that are not in the scene? */ - for(sc= CTX_data_main(C)->screen.first; sc; sc= sc->id.next) { - ScrArea *sa= sc->areabase.first; - while(sa) { - SpaceLink *sl= sa->spacedata.first; - while(sl) { - if(sl->spacetype==SPACE_VIEW3D) { - View3D *v3d= (View3D*) sl; - if (v3d->scenelock) { - v3d->camera= camera; - } - } - sl= sl->next; - } - sa= sa->next; - } - } - } - + bScreen *sc; scene->camera= camera; + /* are there cameras in the views that are not in the scene? */ + for(sc= CTX_data_main(C)->screen.first; sc; sc= sc->id.next) { + BKE_screen_view3d_scene_sync(sc); + } } #endif //extern void audiostream_scrub(unsigned int frame); /* seqaudio.c */ + /* update animated image textures for gpu, etc, + * call before scene_update_for_newframe so modifiers with textuers dont lag 1 frame */ + ED_image_update_frame(C); + /* this function applies the changes too */ /* XXX future: do all windows */ scene_update_for_newframe(scene, BKE_screen_visible_layers(screen, scene)); /* BKE_scene.h */ @@ -1762,9 +1758,6 @@ void ED_update_for_newframe(const bContext *C, int mute) if(scene->use_nodes && scene->nodetree) ntreeCompositTagAnimated(scene->nodetree); - /* update animated image textures for gpu, etc */ - ED_image_update_frame(C); - /* update animated texture nodes */ { Tex *tex; diff --git a/source/blender/editors/screen/screen_intern.h b/source/blender/editors/screen/screen_intern.h index 147b4bd5780..5c104521a60 100644 --- a/source/blender/editors/screen/screen_intern.h +++ b/source/blender/editors/screen/screen_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -51,8 +51,6 @@ ScrEdge *screen_find_active_scredge(bScreen *sc, int mx, int my); AZone *is_in_area_actionzone(ScrArea *sa, int x, int y); -ScrArea *ed_screen_fullarea(bContext *C, wmWindow *win, ScrArea *sa); - /* screen_context.c */ void ed_screen_context(const bContext *C, const char *member, bContextDataResult *result); diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 7b5d7944e80..b70cb03869d 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -26,9 +26,6 @@ #include <math.h> #include <string.h> -#include <stddef.h> - -#include <GL/glew.h> #include "MEM_guardedalloc.h" @@ -38,21 +35,17 @@ #include "BLI_dlrbTree.h" #include "DNA_armature_types.h" -#include "DNA_image_types.h" #include "DNA_lattice_types.h" #include "DNA_object_types.h" -#include "DNA_mesh_types.h" #include "DNA_curve_types.h" #include "DNA_scene_types.h" #include "DNA_meta_types.h" -#include "DNA_view3d_types.h" #include "BKE_blender.h" #include "BKE_colortools.h" #include "BKE_context.h" #include "BKE_customdata.h" #include "BKE_global.h" -#include "BKE_image.h" #include "BKE_idprop.h" #include "BKE_library.h" #include "BKE_main.h" @@ -64,30 +57,20 @@ #include "BKE_utildefines.h" #include "BKE_tessmesh.h" #include "BKE_sound.h" -#include "BKE_writeavi.h" #include "WM_api.h" #include "WM_types.h" #include "ED_util.h" #include "ED_screen.h" -#include "ED_mesh.h" #include "ED_object.h" #include "ED_screen_types.h" #include "ED_keyframes_draw.h" -#include "ED_view3d.h" - -#include "RE_pipeline.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" #include "RNA_access.h" #include "RNA_define.h" #include "UI_interface.h" -#include "UI_resources.h" - -#include "GPU_extensions.h" #include "wm_window.h" @@ -98,12 +81,6 @@ #define KM_MODAL_STEP10 3 #define KM_MODAL_STEP10_OFF 4 -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) -/* ************** libgomp (Apple gcc 4.2.1) TLS bug workaround *************** */ -#include <pthread.h> -extern pthread_key_t gomp_tls_key; -static void *thread_tls_data; -#endif /* ************** Exported Poll tests ********************** */ int ED_operator_regionactive(bContext *C) @@ -223,12 +200,12 @@ int ED_operator_logic_active(bContext *C) int ED_operator_object_active(bContext *C) { - return NULL != CTX_data_active_object(C); + return NULL != ED_object_active_context(C); } int ED_operator_object_active_editable(bContext *C) { - Object *ob=CTX_data_active_object(C); + Object *ob = ED_object_active_context(C); return ((ob != NULL) && !(ob->id.lib)); } @@ -589,6 +566,7 @@ static int area_swap_init(bContext *C, wmOperator *op, wmEvent *event) static void area_swap_exit(bContext *C, wmOperator *op) { + WM_cursor_restore(CTX_wm_window(C)); if(op->customdata) MEM_freeN(op->customdata); op->customdata= NULL; @@ -629,15 +607,16 @@ static int area_swap_modal(bContext *C, wmOperator *op, wmEvent *event) return area_swap_cancel(C, op); } - ED_area_swapspace(C, sad->sa1, sad->sa2); - - area_swap_exit(C, op); - + #ifdef WM_FAST_DRAW ED_area_tag_redraw(sad->sa1); ED_area_tag_redraw(sad->sa2); #endif + ED_area_swapspace(C, sad->sa1, sad->sa2); + + area_swap_exit(C, op); + WM_event_add_notifier(C, NC_SCREEN|NA_EDITED, NULL); return OPERATOR_FINISHED; @@ -1340,6 +1319,9 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge) * prevents dragging regions into other opposite regions */ for (ar=sa->regionbase.first; ar; ar=ar->next) { + if (ar == scalear) + continue; + if (scalear->alignment == RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_BOTTOM) dist -= ar->winy; else if (scalear->alignment == RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_TOP) @@ -1348,8 +1330,15 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, char edge) dist -= ar->winx; else if (scalear->alignment == RGN_ALIGN_RIGHT && ar->alignment == RGN_ALIGN_LEFT) dist -= ar->winx; + + /* case of regions in regions, like operator properties panel */ + /* these can sit on top of other regions such as headers, so account for this */ + else if (edge == 'b' && scalear->alignment & RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_TOP && ar->regiontype == RGN_TYPE_HEADER) + dist -= ar->winy; + else if (edge == 't' && scalear->alignment & RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_BOTTOM && ar->regiontype == RGN_TYPE_HEADER) + dist -= ar->winy; } - + return dist; } @@ -1508,6 +1497,7 @@ static int frame_offset_exec(bContext *C, wmOperator *op) delta = RNA_int_get(op->ptr, "delta"); CTX_data_scene(C)->r.cfra += delta; + CTX_data_scene(C)->r.subframe = 0.f; sound_seek_scene(C); @@ -1575,6 +1565,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) ActKeyColumn *ak; float cfra= (scene)? (float)(CFRA) : 0.0f; short next= RNA_boolean_get(op->ptr, "next"); + short done = 0; /* sanity checks */ if (scene == NULL) @@ -1593,15 +1584,27 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) BLI_dlrbTree_linkedlist_sync(&keys); /* find matching keyframe in the right direction */ - if (next) - ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra); - else - ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra); + do { + if (next) + ak= (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra); + else + ak= (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra); + + if (ak) { + if (CFRA != (int)ak->cfra) { + /* this changes the frame, so set the frame and we're done */ + CFRA= (int)ak->cfra; + done = 1; + } + else { + /* make this the new starting point for the search */ + cfra = ak->cfra; + } + } + } while ((ak != NULL) && (done == 0)); - /* set the new frame (if keyframe found) */ - if (ak) - CFRA= (int)ak->cfra; - else + /* any success? */ + if (done == 0) BKE_report(op->reports, RPT_INFO, "No more keyframes to jump to in this direction"); /* free temp stuff */ @@ -1690,7 +1693,7 @@ static void SCREEN_OT_screen_set(wmOperatorType *ot) /* function to be called outside UI context, or for redo */ static int screen_full_area_exec(bContext *C, wmOperator *op) { - ed_screen_fullarea(C, CTX_wm_window(C), CTX_wm_area(C)); + ED_screen_full_toggle(C, CTX_wm_window(C), CTX_wm_area(C)); return OPERATOR_FINISHED; } @@ -2163,18 +2166,22 @@ static int region_quadview_exec(bContext *C, wmOperator *op) rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_FRONT; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_TOP; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->viewlock= RV3D_LOCKED; rv3d->view= RV3D_VIEW_RIGHT; rv3d->persp= RV3D_ORTHO; + if (rv3d->localvd) { rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } ar= ar->next; rv3d= ar->regiondata; rv3d->view= RV3D_VIEW_CAMERA; rv3d->persp= RV3D_CAMOB; + if (rv3d->localvd) {rv3d->localvd->view = rv3d->view; rv3d->localvd->persp = rv3d->persp; } } #ifdef WM_FAST_DRAW @@ -2346,6 +2353,18 @@ void SCREEN_OT_header_toolbox(wmOperatorType *ot) /* ****************** anim player, with timer ***************** */ +static int match_area_with_refresh(int spacetype, int refresh) +{ + switch (spacetype) { + case SPACE_TIME: + if (refresh & SPACE_TIME) + return 1; + break; + } + + return 0; +} + static int match_region_with_redraws(int spacetype, int regiontype, int redraws) { if(regiontype==RGN_TYPE_WINDOW) { @@ -2407,23 +2426,22 @@ static int match_region_with_redraws(int spacetype, int regiontype, int redraws) static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) { bScreen *screen= CTX_wm_screen(C); - - if(screen->animtimer==event->customdata) { + + if(screen->animtimer && screen->animtimer==event->customdata) { Scene *scene= CTX_data_scene(C); wmTimer *wt= screen->animtimer; ScreenAnimData *sad= wt->customdata; ScrArea *sa; int sync; - + float time; + /* sync, don't sync, or follow scene setting */ if(sad->flag & ANIMPLAY_FLAG_SYNC) sync= 1; else if(sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync= 0; else sync= (scene->flag & SCE_FRAME_DROP); - if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE)) - { - scene->r.cfra = floor(sound_sync_scene(scene) * FPS); - } + if((scene->audio.flag & AUDIO_SYNC) && !(sad->flag & ANIMPLAY_FLAG_REVERSE) && finite(time = sound_sync_scene(scene))) + scene->r.cfra = round(time * FPS); else { if(sync) { @@ -2493,6 +2511,9 @@ static int screen_animation_step(bContext *C, wmOperator *op, wmEvent *event) if(match_region_with_redraws(sa->spacetype, ar->regiontype, sad->redraws)) ED_region_tag_redraw(ar); } + + if (match_area_with_refresh(sa->spacetype, sad->refresh)) + ED_area_tag_refresh(sa); } /* update frame rate info too @@ -2536,11 +2557,12 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) if(screen->animtimer) { /* stop playback now */ - ED_screen_animation_timer(C, 0, 0, 0); + ED_screen_animation_timer(C, 0, 0, 0, 0); sound_stop_scene(scene); } else { ScrArea *sa= CTX_wm_area(C); + int refresh= SPACE_TIME; if(mode == 1) // XXX only play audio forwards!? sound_play_scene(scene); @@ -2549,10 +2571,10 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) if ((sa) && (sa->spacetype == SPACE_TIME)) { SpaceTime *stime= (SpaceTime *)sa->spacedata.first; - ED_screen_animation_timer(C, stime->redraws, sync, mode); + ED_screen_animation_timer(C, stime->redraws, refresh, sync, mode); /* update region if TIME_REGION was set, to leftmost 3d window */ - ED_screen_animation_timer_update(screen, stime->redraws); + ED_screen_animation_timer_update(screen, stime->redraws, refresh); } else { int redraws = TIME_REGION|TIME_ALL_3D_WIN; @@ -2562,7 +2584,7 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) redraws |= TIME_SEQ; } - ED_screen_animation_timer(C, redraws, sync, mode); + ED_screen_animation_timer(C, redraws, refresh, sync, mode); if(screen->animtimer) { wmTimer *wt= screen->animtimer; @@ -2576,7 +2598,7 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) return OPERATOR_FINISHED; } -static int screen_animation_play_invoke(bContext *C, wmOperator *op, wmEvent *event) +static int screen_animation_play_exec(bContext *C, wmOperator *op) { int mode= (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1; int sync= -1; @@ -2595,7 +2617,7 @@ static void SCREEN_OT_animation_play(wmOperatorType *ot) ot->idname= "SCREEN_OT_animation_play"; /* api callbacks */ - ot->invoke= screen_animation_play_invoke; + ot->exec= screen_animation_play_exec; ot->poll= ED_operator_screenactive; @@ -2603,7 +2625,7 @@ static void SCREEN_OT_animation_play(wmOperatorType *ot) RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain framerate"); } -static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event) +static int screen_animation_cancel_exec(bContext *C, wmOperator *op) { bScreen *screen= CTX_wm_screen(C); @@ -2618,9 +2640,9 @@ static int screen_animation_cancel(bContext *C, wmOperator *op, wmEvent *event) WM_event_add_notifier(C, NC_SCENE|ND_FRAME, scene); /* call the other "toggling" operator to clean up now */ - return screen_animation_play_invoke(C, op, event); + ED_screen_animation_play(C, 0, 0); } - + return OPERATOR_PASS_THROUGH; } @@ -2632,7 +2654,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) ot->idname= "SCREEN_OT_animation_cancel"; /* api callbacks */ - ot->invoke= screen_animation_cancel; + ot->exec= screen_animation_cancel_exec; ot->poll= ED_operator_screenactive; } @@ -2695,1081 +2717,6 @@ static void SCREEN_OT_border_select(wmOperatorType *ot) } #endif -/* ****************************** render invoking ***************** */ - -/* set callbacks, exported to sequence render too. - Only call in foreground (UI) renders. */ - -/* returns biggest area that is not uv/image editor. Note that it uses buttons */ -/* window as the last possible alternative. */ -static ScrArea *biggest_non_image_area(bContext *C) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa, *big= NULL; - int size, maxsize= 0, bwmaxsize= 0; - short foundwin= 0; - - for(sa= sc->areabase.first; sa; sa= sa->next) { - if(sa->winx > 30 && sa->winy > 30) { - size= sa->winx*sa->winy; - if(sa->spacetype == SPACE_BUTS) { - if(foundwin == 0 && size > bwmaxsize) { - bwmaxsize= size; - big= sa; - } - } - else if(sa->spacetype != SPACE_IMAGE && size > maxsize) { - maxsize= size; - big= sa; - foundwin= 1; - } - } - } - - return big; -} - -static ScrArea *biggest_area(bContext *C) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa, *big= NULL; - int size, maxsize= 0; - - for(sa= sc->areabase.first; sa; sa= sa->next) { - size= sa->winx*sa->winy; - if(size > maxsize) { - maxsize= size; - big= sa; - } - } - return big; -} - - -static ScrArea *find_area_showing_r_result(bContext *C) -{ - wmWindowManager *wm= CTX_wm_manager(C); - wmWindow *win; - ScrArea *sa = NULL; - SpaceImage *sima; - - /* find an imagewindow showing render result */ - for(win=wm->windows.first; win; win=win->next) { - for(sa=win->screen->areabase.first; sa; sa= sa->next) { - if(sa->spacetype==SPACE_IMAGE) { - sima= sa->spacedata.first; - if(sima->image && sima->image->type==IMA_TYPE_R_RESULT) - break; - } - } - } - - return sa; -} - -static ScrArea *find_area_image_empty(bContext *C) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa; - SpaceImage *sima; - - /* find an imagewindow showing render result */ - for(sa=sc->areabase.first; sa; sa= sa->next) { - if(sa->spacetype==SPACE_IMAGE) { - sima= sa->spacedata.first; - if(!sima->image) - break; - } - } - return sa; -} - -#if 0 // XXX not used -static ScrArea *find_empty_image_area(bContext *C) -{ - bScreen *sc= CTX_wm_screen(C); - ScrArea *sa; - SpaceImage *sima; - - /* find an imagewindow showing render result */ - for(sa=sc->areabase.first; sa; sa= sa->next) { - if(sa->spacetype==SPACE_IMAGE) { - sima= sa->spacedata.first; - if(!sima->image) - break; - } - } - return sa; -} -#endif // XXX not used - -/* new window uses x,y to set position */ -static void screen_set_image_output(bContext *C, int mx, int my) -{ - wmWindow *win= CTX_wm_window(C); - Scene *scene= CTX_data_scene(C); - ScrArea *sa= NULL; - SpaceImage *sima; - int area_was_image=0; - - if(scene->r.displaymode==R_OUTPUT_WINDOW) { - rcti rect; - int sizex, sizey; - - sizex= 10 + (scene->r.xsch*scene->r.size)/100; - sizey= 40 + (scene->r.ysch*scene->r.size)/100; - - /* arbitrary... miniature image window views don't make much sense */ - if(sizex < 320) sizex= 320; - if(sizey < 256) sizey= 256; - - /* XXX some magic to calculate postition */ - rect.xmin= mx + win->posx - sizex/2; - rect.ymin= my + win->posy - sizey/2; - rect.xmax= rect.xmin + sizex; - rect.ymax= rect.ymin + sizey; - - /* changes context! */ - WM_window_open_temp(C, &rect, WM_WINDOW_RENDER); - - sa= CTX_wm_area(C); - } - else if(scene->r.displaymode==R_OUTPUT_SCREEN) { - if (CTX_wm_area(C)->spacetype == SPACE_IMAGE) - area_was_image = 1; - - /* this function returns with changed context */ - ED_screen_full_newspace(C, CTX_wm_area(C), SPACE_IMAGE); - sa= CTX_wm_area(C); - } - - if(!sa) { - sa= find_area_showing_r_result(C); - if(sa==NULL) - sa= find_area_image_empty(C); - - if(sa==NULL) { - /* find largest open non-image area */ - sa= biggest_non_image_area(C); - if(sa) { - ED_area_newspace(C, sa, SPACE_IMAGE); - sima= sa->spacedata.first; - - /* makes ESC go back to prev space */ - sima->flag |= SI_PREVSPACE; - } - else { - /* use any area of decent size */ - sa= biggest_area(C); - if(sa->spacetype!=SPACE_IMAGE) { - // XXX newspace(sa, SPACE_IMAGE); - sima= sa->spacedata.first; - - /* makes ESC go back to prev space */ - sima->flag |= SI_PREVSPACE; - } - } - } - } - sima= sa->spacedata.first; - - /* get the correct image, and scale it */ - sima->image= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); - - - /* if we're rendering to full screen, set appropriate hints on image editor - * so it can restore properly on pressing esc */ - if(sa->full) { - sima->flag |= SI_FULLWINDOW; - - /* Tell the image editor to revert to previous space in space list on close - * _only_ if it wasn't already an image editor when the render was invoked */ - if (area_was_image == 0) - sima->flag |= SI_PREVSPACE; - else { - /* Leave it alone so the image editor will just go back from - * full screen to the original tiled setup */ - ; - } - - } - -} - -/* executes blocking render */ -static int screen_render_exec(bContext *C, wmOperator *op) -{ - Scene *scene= CTX_data_scene(C); - Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW); - - if(re==NULL) { - re= RE_NewRender(scene->id.name, RE_SLOT_VIEW); - } - RE_test_break_cb(re, NULL, (int (*)(void *)) blender_test_break); - - if(RNA_boolean_get(op->ptr, "animation")) - RE_BlenderAnim(re, scene, scene->r.sfra, scene->r.efra, scene->r.frame_step, op->reports); - else - RE_BlenderFrame(re, scene, NULL, scene->r.cfra); - - // no redraw needed, we leave state as we entered it - ED_update_for_newframe(C, 1); - - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); - - return OPERATOR_FINISHED; -} - -typedef struct RenderJob { - Scene *scene; - Render *re; - wmWindow *win; - SceneRenderLayer *srl; - int anim; - Image *image; - ImageUser iuser; - short *stop; - short *do_update; - ReportList *reports; -} RenderJob; - -static void render_freejob(void *rjv) -{ - RenderJob *rj= rjv; - - MEM_freeN(rj); -} - -/* str is IMA_RW_MAXTEXT in size */ -static void make_renderinfo_string(RenderStats *rs, Scene *scene, char *str) -{ - char info_time_str[32]; // used to be extern to header_info.c - uintptr_t mem_in_use, mmap_in_use; - float megs_used_memory, mmap_used_memory; - char *spos= str; - - mem_in_use= MEM_get_memory_in_use(); - mmap_in_use= MEM_get_mapped_memory_in_use(); - - megs_used_memory= (mem_in_use-mmap_in_use)/(1024.0*1024.0); - mmap_used_memory= (mmap_in_use)/(1024.0*1024.0); - - if(scene->lay & 0xFF000000) - spos+= sprintf(spos, "Localview | "); - else if(scene->r.scemode & R_SINGLE_LAYER) - spos+= sprintf(spos, "Single Layer | "); - - if(rs->statstr) { - spos+= sprintf(spos, "%s ", rs->statstr); - } - else { - spos+= sprintf(spos, "Fra:%d Ve:%d Fa:%d ", (scene->r.cfra), rs->totvert, rs->totface); - if(rs->tothalo) spos+= sprintf(spos, "Ha:%d ", rs->tothalo); - if(rs->totstrand) spos+= sprintf(spos, "St:%d ", rs->totstrand); - spos+= sprintf(spos, "La:%d Mem:%.2fM (%.2fM) ", rs->totlamp, megs_used_memory, mmap_used_memory); - - if(rs->curfield) - spos+= sprintf(spos, "Field %d ", rs->curfield); - if(rs->curblur) - spos+= sprintf(spos, "Blur %d ", rs->curblur); - } - - BLI_timestr(rs->lastframetime, info_time_str); - spos+= sprintf(spos, "Time:%s ", info_time_str); - - if(rs->infostr && rs->infostr[0]) - spos+= sprintf(spos, "| %s ", rs->infostr); - - /* very weak... but 512 characters is quite safe */ - if(spos >= str+IMA_RW_MAXTEXT) - if (G.f & G_DEBUG) - printf("WARNING! renderwin text beyond limit \n"); - -} - -static void image_renderinfo_cb(void *rjv, RenderStats *rs) -{ - RenderJob *rj= rjv; - - /* malloc OK here, stats_draw is not in tile threads */ - if(rj->image->render_text==NULL) - rj->image->render_text= MEM_callocN(IMA_RW_MAXTEXT, "rendertext"); - - make_renderinfo_string(rs, rj->scene, rj->image->render_text); - - /* make jobs timer to send notifier */ - *(rj->do_update)= 1; - -} - -/* called inside thread! */ -static void image_buffer_rect_update(Scene *scene, RenderResult *rr, ImBuf *ibuf, volatile rcti *renrect) -{ - float x1, y1, *rectf= NULL; - int ymin, ymax, xmin, xmax; - int rymin, rxmin; - char *rectc; - - /* if renrect argument, we only refresh scanlines */ - if(renrect) { - /* if ymax==recty, rendering of layer is ready, we should not draw, other things happen... */ - if(rr->renlay==NULL || renrect->ymax>=rr->recty) - return; - - /* xmin here is first subrect x coord, xmax defines subrect width */ - xmin = renrect->xmin + rr->crop; - xmax = renrect->xmax - xmin - rr->crop; - if (xmax<2) return; - - ymin= renrect->ymin + rr->crop; - ymax= renrect->ymax - ymin - rr->crop; - if(ymax<2) - return; - renrect->ymin= renrect->ymax; - - } - else { - xmin = ymin = rr->crop; - xmax = rr->rectx - 2*rr->crop; - ymax = rr->recty - 2*rr->crop; - } - - /* xmin ymin is in tile coords. transform to ibuf */ - rxmin= rr->tilerect.xmin + xmin; - if(rxmin >= ibuf->x) return; - rymin= rr->tilerect.ymin + ymin; - if(rymin >= ibuf->y) return; - - if(rxmin + xmax > ibuf->x) - xmax= ibuf->x - rxmin; - if(rymin + ymax > ibuf->y) - ymax= ibuf->y - rymin; - - if(xmax < 1 || ymax < 1) return; - - /* find current float rect for display, first case is after composit... still weak */ - if(rr->rectf) - rectf= rr->rectf; - else { - if(rr->rect32) - return; - else { - if(rr->renlay==NULL || rr->renlay->rectf==NULL) return; - rectf= rr->renlay->rectf; - } - } - if(rectf==NULL) return; - - if(ibuf->rect==NULL) - imb_addrectImBuf(ibuf); - - rectf+= 4*(rr->rectx*ymin + xmin); - rectc= (char *)(ibuf->rect + ibuf->x*rymin + rxmin); - - /* XXX make nice consistent functions for this */ - if (scene && (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT)) { - for(y1= 0; y1<ymax; y1++) { - float *rf= rectf; - float srgb[3]; - char *rc= rectc; - - /* XXX temp. because crop offset */ - if( rectc >= (char *)(ibuf->rect)) { - for(x1= 0; x1<xmax; x1++, rf += 4, rc+=4) { - srgb[0]= linearrgb_to_srgb(rf[0]); - srgb[1]= linearrgb_to_srgb(rf[1]); - srgb[2]= linearrgb_to_srgb(rf[2]); - - rc[0]= FTOCHAR(srgb[0]); - rc[1]= FTOCHAR(srgb[1]); - rc[2]= FTOCHAR(srgb[2]); - rc[3]= FTOCHAR(rf[3]); - } - } - rectf += 4*rr->rectx; - rectc += 4*ibuf->x; - } - } else { - for(y1= 0; y1<ymax; y1++) { - float *rf= rectf; - char *rc= rectc; - - /* XXX temp. because crop offset */ - if( rectc >= (char *)(ibuf->rect)) { - for(x1= 0; x1<xmax; x1++, rf += 4, rc+=4) { - rc[0]= FTOCHAR(rf[0]); - rc[1]= FTOCHAR(rf[1]); - rc[2]= FTOCHAR(rf[2]); - rc[3]= FTOCHAR(rf[3]); - } - } - rectf += 4*rr->rectx; - rectc += 4*ibuf->x; - } - } - -} - -static void image_rect_update(void *rjv, RenderResult *rr, volatile rcti *renrect) -{ - RenderJob *rj= rjv; - ImBuf *ibuf; - void *lock; - - ibuf= BKE_image_acquire_ibuf(rj->image, &rj->iuser, &lock); - if(ibuf) { - image_buffer_rect_update(rj->scene, rr, ibuf, renrect); - - /* make jobs timer to send notifier */ - *(rj->do_update)= 1; - } - BKE_image_release_ibuf(rj->image, lock); -} - -static void render_startjob(void *rjv, short *stop, short *do_update) -{ - RenderJob *rj= rjv; -// Main *mainp= BKE_undo_get_main(&rj->scene); - - rj->stop= stop; - rj->do_update= do_update; - -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - pthread_setspecific (gomp_tls_key, thread_tls_data); -#endif - - if(rj->anim) - RE_BlenderAnim(rj->re, rj->scene, rj->scene->r.sfra, rj->scene->r.efra, rj->scene->r.frame_step, rj->reports); - else - RE_BlenderFrame(rj->re, rj->scene, rj->srl, rj->scene->r.cfra); - -// if(mainp) -// free_main(mainp); -} - -/* called by render, check job 'stop' value or the global */ -static int render_breakjob(void *rjv) -{ - RenderJob *rj= rjv; - - if(G.afbreek) - return 1; - if(rj->stop && *(rj->stop)) - return 1; - return 0; -} - -/* catch esc */ -static int screen_render_modal(bContext *C, wmOperator *op, wmEvent *event) -{ - /* no running blender, remove handler and pass through */ - if(0==WM_jobs_test(CTX_wm_manager(C), CTX_data_scene(C))) - return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; - - /* running render */ - switch (event->type) { - case ESCKEY: - return OPERATOR_RUNNING_MODAL; - break; - } - return OPERATOR_PASS_THROUGH; -} - -/* using context, starts job */ -static int screen_render_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - /* new render clears all callbacks */ - Scene *scene= CTX_data_scene(C); - SceneRenderLayer *srl=NULL; - Render *re; - wmJob *steve; - RenderJob *rj; - Image *ima; - - /* only one render job at a time */ - if(WM_jobs_test(CTX_wm_manager(C), scene)) - return OPERATOR_CANCELLED; - - /* stop all running jobs, currently previews frustrate Render */ - WM_jobs_stop_all(CTX_wm_manager(C)); - - /* handle UI stuff */ - WM_cursor_wait(1); - - /* flush multires changes (for sculpt) */ - multires_force_render_update(CTX_data_active_object(C)); - - /* get editmode results */ - ED_object_exit_editmode(C, EM_FREEDATA|EM_DO_UNDO); /* 0 = does not exit editmode */ - - // store spare - // get view3d layer, local layer, make this nice api call to render - // store spare - - /* ensure at least 1 area shows result */ - screen_set_image_output(C, event->x, event->y); - - /* single layer re-render */ - if(RNA_property_is_set(op->ptr, "layer")) { - SceneRenderLayer *rl; - Scene *scn; - char scene_name[19], rl_name[RE_MAXNAME]; - - RNA_string_get(op->ptr, "layer", rl_name); - RNA_string_get(op->ptr, "scene", scene_name); - - scn = (Scene *)BLI_findstring(&CTX_data_main(C)->scene, scene_name, offsetof(ID, name) + 2); - rl = (SceneRenderLayer *)BLI_findstring(&scene->r.layers, rl_name, offsetof(SceneRenderLayer, name)); - - if (scn && rl) { - scene = scn; - srl = rl; - } - } - - /* job custom data */ - rj= MEM_callocN(sizeof(RenderJob), "render job"); - rj->scene= scene; - rj->win= CTX_wm_window(C); - rj->srl = srl; - rj->anim= RNA_boolean_get(op->ptr, "animation"); - rj->iuser.scene= scene; - rj->iuser.ok= 1; - rj->reports= op->reports; - - /* setup job */ - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), scene, WM_JOB_EXCL_RENDER|WM_JOB_PRIORITY); - WM_jobs_customdata(steve, rj, render_freejob); - WM_jobs_timer(steve, 0.2, NC_SCENE|ND_RENDER_RESULT, 0); - WM_jobs_callbacks(steve, render_startjob, NULL, NULL); - -#if defined(__APPLE__) && (PARALLEL == 1) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 2) - // Workaround for Apple gcc 4.2.1 omp vs background thread bug - thread_tls_data = pthread_getspecific(gomp_tls_key); -#endif - - /* get a render result image, and make sure it is empty */ - ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); - BKE_image_signal(ima, NULL, IMA_SIGNAL_FREE); - rj->image= ima; - - /* setup new render */ - re= RE_NewRender(scene->id.name, RE_SLOT_VIEW); - RE_test_break_cb(re, rj, render_breakjob); - RE_display_draw_cb(re, rj, image_rect_update); - RE_stats_draw_cb(re, rj, image_renderinfo_cb); - - rj->re= re; - G.afbreek= 0; - - // BKE_report in render! - // RE_error_cb(re, error_cb); - - WM_jobs_start(CTX_wm_manager(C), steve); - - WM_cursor_wait(0); - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, scene); - - /* add modal handler for ESC */ - WM_event_add_modal_handler(C, op); - - return OPERATOR_RUNNING_MODAL; -} - - -/* contextual render, using current scene, view3d? */ -static void SCREEN_OT_render(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Render"; - ot->description= "Render active scene"; - ot->idname= "SCREEN_OT_render"; - - /* api callbacks */ - ot->invoke= screen_render_invoke; - ot->modal= screen_render_modal; - ot->exec= screen_render_exec; - - ot->poll= ED_operator_screenactive; - - RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); - RNA_def_string(ot->srna, "layer", "", RE_MAXNAME, "Render Layer", "Single render layer to re-render"); - RNA_def_string(ot->srna, "scene", "", 19, "Scene", "Re-render single layer in this scene"); -} - -/* ****************************** opengl render *************************** */ - -typedef struct OGLRender { - Render *re; - Scene *scene; - - View3D *v3d; - RegionView3D *rv3d; - ARegion *ar; - - Image *ima; - ImageUser iuser; - - GPUOffScreen *ofs; - int sizex, sizey; - - ReportList *reports; - bMovieHandle *mh; - int cfrao, nfra; - - wmTimer *timer; /* use to check if running modal or not (invoke'd or exec'd)*/ -} OGLRender; - -static void screen_opengl_render_apply(OGLRender *oglrender) -{ - Scene *scene= oglrender->scene; - ARegion *ar= oglrender->ar; - View3D *v3d= oglrender->v3d; - RegionView3D *rv3d= oglrender->rv3d; - RenderResult *rr; - ImBuf *ibuf; - void *lock; - float winmat[4][4]; - int sizex= oglrender->sizex; - int sizey= oglrender->sizey; - - /* bind */ - GPU_offscreen_bind(oglrender->ofs); - - /* render 3d view */ - if(rv3d->persp==RV3D_CAMOB && v3d->camera) { - RE_GetCameraWindow(oglrender->re, v3d->camera, scene->r.cfra, winmat); - ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat); - } - else - ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, NULL); - - /* read in pixels & stamp */ - rr= RE_AcquireResultRead(oglrender->re); - glReadPixels(0, 0, sizex, sizey, GL_RGBA, GL_FLOAT, rr->rectf); - if((scene->r.stamp & R_STAMP_ALL) && (scene->r.stamp & R_STAMP_DRAW)) - BKE_stamp_buf(scene, NULL, rr->rectf, rr->rectx, rr->recty, 4); - RE_ReleaseResult(oglrender->re); - - /* update byte from float buffer */ - ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); - if(ibuf) image_buffer_rect_update(NULL, rr, ibuf, NULL); - BKE_image_release_ibuf(oglrender->ima, lock); - - /* unbind */ - GPU_offscreen_unbind(oglrender->ofs); -} - -static int screen_opengl_render_init(bContext *C, wmOperator *op) -{ - /* new render clears all callbacks */ - Scene *scene= CTX_data_scene(C); - RenderResult *rr; - GPUOffScreen *ofs; - OGLRender *oglrender; - int sizex, sizey; - - /* ensure we have a 3d view */ - if(!ED_view3d_context_activate(C)) - return 0; - - /* only one render job at a time */ - if(WM_jobs_test(CTX_wm_manager(C), scene)) - return 0; - - /* stop all running jobs, currently previews frustrate Render */ - WM_jobs_stop_all(CTX_wm_manager(C)); - - /* handle UI stuff */ - WM_cursor_wait(1); - - /* create offscreen buffer */ - sizex= (scene->r.size*scene->r.xsch)/100; - sizey= (scene->r.size*scene->r.ysch)/100; - - view3d_operator_needs_opengl(C); - ofs= GPU_offscreen_create(sizex, sizey); - - if(!ofs) { - BKE_report(op->reports, RPT_ERROR, "Failed to create OpenGL offscreen buffer."); - return 0; - } - - /* allocate opengl render */ - oglrender= MEM_callocN(sizeof(OGLRender), "OGLRender"); - op->customdata= oglrender; - - oglrender->ofs= ofs; - oglrender->sizex= sizex; - oglrender->sizey= sizey; - oglrender->scene= scene; - - oglrender->v3d= CTX_wm_view3d(C); - oglrender->ar= CTX_wm_region(C); - oglrender->rv3d= CTX_wm_region_view3d(C); - - /* create image and image user */ - oglrender->ima= BKE_image_verify_viewer(IMA_TYPE_R_RESULT, "Render Result"); - BKE_image_signal(oglrender->ima, NULL, IMA_SIGNAL_FREE); - - oglrender->iuser.scene= scene; - oglrender->iuser.ok= 1; - - /* create render and render result */ - oglrender->re= RE_NewRender(scene->id.name, RE_SLOT_VIEW); - RE_InitState(oglrender->re, NULL, &scene->r, NULL, sizex, sizey, NULL); - - rr= RE_AcquireResultWrite(oglrender->re); - if(rr->rectf==NULL) - rr->rectf= MEM_mallocN(sizeof(float)*4*sizex*sizey, "32 bits rects"); - RE_ReleaseResult(oglrender->re); - - return 1; -} - -static void screen_opengl_render_end(bContext *C, OGLRender *oglrender) -{ - Scene *scene= oglrender->scene; - - if(oglrender->mh) { - if(BKE_imtype_is_movie(scene->r.imtype)) - oglrender->mh->end_movie(); - } - - if(oglrender->timer) { /* exec will not have a timer */ - scene->r.cfra= oglrender->cfrao; - scene_update_for_newframe(scene, scene->lay); - - WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), oglrender->timer); - } - - WM_cursor_wait(0); - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); - - GPU_offscreen_free(oglrender->ofs); - - MEM_freeN(oglrender); -} - -static int screen_opengl_render_cancel(bContext *C, wmOperator *op) -{ - screen_opengl_render_end(C, op->customdata); - - return OPERATOR_CANCELLED; -} - -/* share between invoke and exec */ -static int screen_opengl_render_anim_initialize(bContext *C, wmOperator *op) -{ - /* initialize animation */ - OGLRender *oglrender; - Scene *scene; - - oglrender= op->customdata; - scene= oglrender->scene; - - oglrender->reports= op->reports; - oglrender->mh= BKE_get_movie_handle(scene->r.imtype); - if(BKE_imtype_is_movie(scene->r.imtype)) { - if(!oglrender->mh->start_movie(scene, &scene->r, oglrender->sizex, oglrender->sizey, oglrender->reports)) { - screen_opengl_render_end(C, oglrender); - return 0; - } - } - - oglrender->cfrao= scene->r.cfra; - oglrender->nfra= SFRA; - scene->r.cfra= SFRA; - - return 1; -} -static int screen_opengl_render_anim_step(bContext *C, wmOperator *op) -{ - OGLRender *oglrender= op->customdata; - Scene *scene= oglrender->scene; - ImBuf *ibuf; - void *lock; - char name[FILE_MAXDIR+FILE_MAXFILE]; - unsigned int lay; - int ok= 0; - - /* go to next frame */ - while(CFRA<oglrender->nfra) { - if(scene->lay & 0xFF000000) - lay= scene->lay & 0xFF000000; - else - lay= scene->lay; - - scene_update_for_newframe(scene, lay); - CFRA++; - } - - scene_update_for_newframe(scene, scene->lay); - - if(oglrender->rv3d->persp==RV3D_CAMOB && oglrender->v3d->camera && oglrender->v3d->scenelock) { - /* since scene_update_for_newframe() is used rather - * then ED_update_for_newframe() the camera needs to be set */ - Object *camera= scene_find_camera_switch(scene); - - if(camera) - oglrender->v3d->camera= scene->camera= camera; - } - - /* render into offscreen buffer */ - screen_opengl_render_apply(oglrender); - - /* save to disk */ - ibuf= BKE_image_acquire_ibuf(oglrender->ima, &oglrender->iuser, &lock); - - if(ibuf) { - if(BKE_imtype_is_movie(scene->r.imtype)) { - ok= oglrender->mh->append_movie(&scene->r, CFRA, (int*)ibuf->rect, oglrender->sizex, oglrender->sizey, oglrender->reports); - if(ok) { - printf("Append frame %d", scene->r.cfra); - BKE_reportf(op->reports, RPT_INFO, "Appended frame: %d", scene->r.cfra); - } - } - else { - BKE_makepicstring(name, scene->r.pic, scene->r.cfra, scene->r.imtype, scene->r.scemode & R_EXTENSION); - ok= BKE_write_ibuf(scene, ibuf, name, scene->r.imtype, scene->r.subimtype, scene->r.quality); - - if(ok==0) { - printf("Write error: cannot save %s\n", name); - BKE_reportf(op->reports, RPT_ERROR, "Write error: cannot save %s", name); - } - else { - printf("Saved: %s", name); - BKE_reportf(op->reports, RPT_INFO, "Saved file: %s", name); - } - } - } - - BKE_image_release_ibuf(oglrender->ima, lock); - - /* movie stats prints have no line break */ - printf("\n"); - - /* go to next frame */ - oglrender->nfra += scene->r.frame_step; - scene->r.cfra++; - - /* stop at the end or on error */ - if(scene->r.cfra > EFRA || !ok) { - screen_opengl_render_end(C, op->customdata); - return 0; - } - - return 1; -} - - -static int screen_opengl_render_modal(bContext *C, wmOperator *op, wmEvent *event) -{ - OGLRender *oglrender= op->customdata; - - int ret; - - switch(event->type) { - case ESCKEY: - /* cancel */ - screen_opengl_render_end(C, op->customdata); - return OPERATOR_FINISHED; - case TIMER: - /* render frame? */ - if(oglrender->timer == event->customdata) - break; - default: - /* nothing to do */ - return OPERATOR_RUNNING_MODAL; - } - - ret= screen_opengl_render_anim_step(C, op); - - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, oglrender->scene); - - /* stop at the end or on error */ - if(ret == 0) { - return OPERATOR_FINISHED; - } - - return OPERATOR_RUNNING_MODAL; -} - -static int screen_opengl_render_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - int anim= RNA_boolean_get(op->ptr, "animation"); - - if(!screen_opengl_render_init(C, op)) - return OPERATOR_CANCELLED; - - if(!anim) { - /* render image */ - screen_opengl_render_apply(op->customdata); - screen_opengl_render_end(C, op->customdata); - screen_set_image_output(C, event->x, event->y); - - return OPERATOR_FINISHED; - } - else { - OGLRender *oglrender= op->customdata; - - if(!screen_opengl_render_anim_initialize(C, op)) - return OPERATOR_CANCELLED; - - screen_set_image_output(C, event->x, event->y); - - WM_event_add_modal_handler(C, op); - oglrender->timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER, 0.01f); - - return OPERATOR_RUNNING_MODAL; - } -} - -/* executes blocking render */ -static int screen_opengl_render_exec(bContext *C, wmOperator *op) -{ - int anim= RNA_boolean_get(op->ptr, "animation"); - - if(!screen_opengl_render_init(C, op)) - return OPERATOR_CANCELLED; - - if(!anim) { /* same as invoke */ - /* render image */ - screen_opengl_render_apply(op->customdata); - screen_opengl_render_end(C, op->customdata); - - return OPERATOR_FINISHED; - } - else { - int ret= 1; - - if(!screen_opengl_render_anim_initialize(C, op)) - return OPERATOR_CANCELLED; - - while(ret) { - ret= screen_opengl_render_anim_step(C, op); - } - } - - // no redraw needed, we leave state as we entered it -// ED_update_for_newframe(C, 1); - WM_event_add_notifier(C, NC_SCENE|ND_RENDER_RESULT, CTX_data_scene(C)); - - return OPERATOR_FINISHED; -} - -static void SCREEN_OT_opengl_render(wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "OpenGL Render"; - ot->description= "OpenGL render active viewport"; - ot->idname= "SCREEN_OT_opengl_render"; - - /* api callbacks */ - ot->invoke= screen_opengl_render_invoke; - ot->exec= screen_opengl_render_exec; /* blocking */ - ot->modal= screen_opengl_render_modal; - ot->cancel= screen_opengl_render_cancel; - - ot->poll= ED_operator_screenactive; - - RNA_def_boolean(ot->srna, "animation", 0, "Animation", ""); -} - -/* *********************** cancel render viewer *************** */ - -static int render_view_cancel_exec(bContext *C, wmOperator *unused) -{ - wmWindow *win= CTX_wm_window(C); - ScrArea *sa= CTX_wm_area(C); - SpaceImage *sima= sa->spacedata.first; - - /* test if we have a temp screen in front */ - if(CTX_wm_window(C)->screen->full==SCREENTEMP) { - wm_window_lower(CTX_wm_window(C)); - return OPERATOR_FINISHED; - } - /* determine if render already shows */ - else if(sima->flag & SI_PREVSPACE) { - sima->flag &= ~SI_PREVSPACE; - - if(sima->flag & SI_FULLWINDOW) { - sima->flag &= ~SI_FULLWINDOW; - ED_screen_full_prevspace(C, sa); - } - else - ED_area_prevspace(C, sa); - - return OPERATOR_FINISHED; - } - else if(sima->flag & SI_FULLWINDOW) { - sima->flag &= ~SI_FULLWINDOW; - ed_screen_fullarea(C, win, sa); - return OPERATOR_FINISHED; - } - - return OPERATOR_PASS_THROUGH; -} - -static void SCREEN_OT_render_view_cancel(struct wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Cancel Render View"; - ot->description= "Cancel show render view"; - ot->idname= "SCREEN_OT_render_view_cancel"; - - /* api callbacks */ - ot->exec= render_view_cancel_exec; - ot->poll= ED_operator_image_active; -} - -/* *********************** show render viewer *************** */ - -static int render_view_show_invoke(bContext *C, wmOperator *unused, wmEvent *event) -{ - ScrArea *sa= find_area_showing_r_result(C); - - /* test if we have a temp screen in front */ - if(CTX_wm_window(C)->screen->full==SCREENTEMP) { - wm_window_lower(CTX_wm_window(C)); - } - /* determine if render already shows */ - else if(sa) { - SpaceImage *sima= sa->spacedata.first; - - if(sima->flag & SI_PREVSPACE) { - sima->flag &= ~SI_PREVSPACE; - - if(sima->flag & SI_FULLWINDOW) { - sima->flag &= ~SI_FULLWINDOW; - ED_screen_full_prevspace(C, sa); - } - else if(sima->next) { - ED_area_newspace(C, sa, sima->next->spacetype); - ED_area_tag_redraw(sa); - } - } - } - else { - screen_set_image_output(C, event->x, event->y); - } - - return OPERATOR_FINISHED; -} - -static void SCREEN_OT_render_view_show(struct wmOperatorType *ot) -{ - /* identifiers */ - ot->name= "Show/Hide Render View"; - ot->description= "Toggle show render view"; - ot->idname= "SCREEN_OT_render_view_show"; - - /* api callbacks */ - ot->invoke= render_view_show_invoke; - ot->poll= ED_operator_screenactive; -} - /* *********************** generic fullscreen 'back' button *************** */ @@ -4004,12 +2951,6 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_animation_play); WM_operatortype_append(SCREEN_OT_animation_cancel); - /* render */ - WM_operatortype_append(SCREEN_OT_render); - WM_operatortype_append(SCREEN_OT_render_view_cancel); - WM_operatortype_append(SCREEN_OT_render_view_show); - WM_operatortype_append(SCREEN_OT_opengl_render); - /* new/delete */ WM_operatortype_append(SCREEN_OT_new); WM_operatortype_append(SCREEN_OT_delete); @@ -4057,7 +2998,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1); - RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "modifier", 2); + RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "modifier", 2); /* screen tools */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0); @@ -4094,7 +3035,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SCREEN_OT_repeat_last", RKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0); - WM_keymap_verify_item(keymap, "WM_OT_reload_scripts", F8KEY, KM_PRESS, 0, 0); + WM_keymap_verify_item(keymap, "SCRIPT_OT_reload", F8KEY, KM_PRESS, 0, 0); /* files */ WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0); @@ -4111,11 +3052,11 @@ void ED_keymap_screen(wmKeyConfig *keyconf) /* render */ - WM_keymap_add_item(keymap, "SCREEN_OT_render", F12KEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_render", F12KEY, KM_PRESS, KM_CTRL, 0)->ptr, "animation", 1); - WM_keymap_add_item(keymap, "SCREEN_OT_render_view_cancel", ESCKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_render_view_show", F11KEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCREEN_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, KM_CTRL, 0)->ptr, "animation", 1); + WM_keymap_add_item(keymap, "RENDER_OT_view_cancel", ESCKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "RENDER_OT_view_show", F11KEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "RENDER_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0); /* user prefs */ #ifdef __APPLE__ @@ -4136,7 +3077,8 @@ void ED_keymap_screen(wmKeyConfig *keyconf) RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELDOWNMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELUPMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); - WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", 1); + RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", 0); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", 1); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", 0); diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index d34a562f894..d5cd8285515 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -57,8 +57,6 @@ #include "PIL_time.h" -#include "ED_fileselect.h" -#include "ED_screen.h" #include "ED_screen_types.h" #include "screen_intern.h" @@ -77,10 +75,10 @@ static int screenshot_exec(bContext *C, wmOperator *op) ImBuf *ibuf; char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); strcpy(G.ima, path); - BLI_convertstringcode(path, G.sce); + BLI_path_abs(path, G.sce); /* BKE_add_image_extension() checks for if extension was already set */ if(scene->r.scemode & R_EXTENSION) @@ -90,8 +88,6 @@ static int screenshot_exec(bContext *C, wmOperator *op) ibuf= IMB_allocImBuf(scd->dumpsx, scd->dumpsy, 24, 0, 0); ibuf->rect= scd->dumprect; - if(scene->r.planes == 8) IMB_cspace(ibuf, rgb_to_bw); - BKE_write_ibuf(scene, ibuf, path, scene->r.imtype, scene->r.subimtype, scene->r.quality); IMB_freeImBuf(ibuf); @@ -126,7 +122,7 @@ static unsigned int *screenshot(bContext *C, int *dumpsx, int *dumpsy, int fscre if (*dumpsx && *dumpsy) { - dumprect= MEM_mallocN(sizeof(int) * dumpsx[0] * dumpsy[0], "dumprect"); + dumprect= MEM_mallocN(sizeof(int) * (*dumpsx) * (*dumpsy), "dumprect"); glReadBuffer(GL_FRONT); glReadPixels(x, y, *dumpsx, *dumpsy, GL_RGBA, GL_UNSIGNED_BYTE, dumprect); glFinish(); @@ -151,10 +147,10 @@ static int screenshot_invoke(bContext *C, wmOperator *op, wmEvent *event) scd->dumprect= dumprect; op->customdata= scd; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return screenshot_exec(C, op); - RNA_string_set(op->ptr, "path", G.ima); + RNA_string_set(op->ptr, "filepath", G.ima); WM_event_add_fileselect(C, op); @@ -175,7 +171,7 @@ void SCREEN_OT_screenshot(wmOperatorType *ot) ot->flag= 0; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } @@ -219,7 +215,7 @@ static void screenshot_updatejob(void *sjv) /* only this runs inside thread */ -static void screenshot_startjob(void *sjv, short *stop, short *do_update) +static void screenshot_startjob(void *sjv, short *stop, short *do_update, float *progress) { ScreenshotJob *sj= sjv; RenderData rd= sj->scene->r; @@ -275,7 +271,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) BKE_reportf(&sj->reports, RPT_INFO, "Saved file: %s", name); } - /* imbuf knows which rects are not part of ibuf */ + /* imbuf knows which rects are not part of ibuf */ IMB_freeImBuf(ibuf); } @@ -300,7 +296,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update) static int screencast_exec(bContext *C, wmOperator *op) { bScreen *screen= CTX_wm_screen(C); - wmJob *steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), screen, 0); + wmJob *steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), screen, "Screencast", 0); ScreenshotJob *sj= MEM_callocN(sizeof(ScreenshotJob), "screenshot job"); /* setup sj */ @@ -325,7 +321,7 @@ static int screencast_exec(bContext *C, wmOperator *op) /* setup job */ WM_jobs_customdata(steve, sj, screenshot_freejob); WM_jobs_timer(steve, 0.1, 0, NC_SCREEN|ND_SCREENCAST); - WM_jobs_callbacks(steve, screenshot_startjob, NULL, screenshot_updatejob); + WM_jobs_callbacks(steve, screenshot_startjob, NULL, screenshot_updatejob, NULL); WM_jobs_start(CTX_wm_manager(C), steve); @@ -345,7 +341,7 @@ void SCREEN_OT_screencast(wmOperatorType *ot) ot->flag= 0; - RNA_def_property(ot->srna, "path", PROP_STRING, PROP_FILEPATH); + RNA_def_property(ot->srna, "filepath", PROP_STRING, PROP_FILEPATH); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", ""); } diff --git a/source/blender/editors/sculpt_paint/CMakeLists.txt b/source/blender/editors/sculpt_paint/CMakeLists.txt new file mode 100644 index 00000000000..f0493d8e2d8 --- /dev/null +++ b/source/blender/editors/sculpt_paint/CMakeLists.txt @@ -0,0 +1,41 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../imbuf + ../../gpu + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager + ../../render/extern/include +) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_sculpt_paint "${SRC}" "${INC}") diff --git a/source/blender/editors/sculpt_paint/SConscript b/source/blender/editors/sculpt_paint/SConscript index 1c7c3686386..b9cc294d44d 100644 --- a/source/blender/editors/sculpt_paint/SConscript +++ b/source/blender/editors/sculpt_paint/SConscript @@ -3,6 +3,8 @@ Import ('env') sources = env.Glob('*.c') +defs = [] + incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' incs += ' ../../render/extern/include' @@ -12,7 +14,11 @@ if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' +if env['OURPLATFORM'] == 'linuxcross': + if env['WITH_BF_OPENMP']: + incs += ' ' + env['BF_OPENMP_INC'] + if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): - incs += ' ' + env['BF_PTHREADS_INC'] + incs += ' ' + env['BF_PTHREADS_INC'] -env.BlenderLib ( 'bf_editors_sculpt_paint', sources, Split(incs), [], libtype=['core'], priority=[40] ) +env.BlenderLib ( 'bf_editors_sculpt_paint', sources, Split(incs), defines=defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c index c258e162336..12326843734 100644 --- a/source/blender/editors/sculpt_paint/paint_image.c +++ b/source/blender/editors/sculpt_paint/paint_image.c @@ -16,7 +16,6 @@ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * - * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * @@ -51,20 +50,14 @@ #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" -#include "DNA_brush_types.h" -#include "DNA_image_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BKE_context.h" +#include "BKE_idprop.h" +#include "BKE_object.h" #include "BKE_brush.h" #include "BKE_global.h" #include "BKE_image.h" @@ -76,15 +69,14 @@ #include "BKE_DerivedMesh.h" #include "BKE_report.h" #include "BKE_depsgraph.h" +#include "BKE_library.h" #include "BIF_gl.h" #include "BIF_glutil.h" -#include "UI_interface.h" #include "UI_view2d.h" #include "ED_image.h" -#include "ED_object.h" #include "ED_screen.h" #include "ED_sculpt.h" #include "ED_view3d.h" @@ -94,6 +86,7 @@ #include "RNA_access.h" #include "RNA_define.h" +#include "RNA_enum_types.h" #include "GPU_draw.h" @@ -184,6 +177,14 @@ typedef struct ImagePaintRegion { #define PROJ_FACE_NOSEAM3 1<<6 #define PROJ_FACE_NOSEAM4 1<<7 +#define PROJ_SRC_VIEW 1 +#define PROJ_SRC_IMAGE_CAM 2 +#define PROJ_SRC_IMAGE_VIEW 3 + +#define PROJ_VIEW_DATA_ID "view_data" +#define PROJ_VIEW_DATA_SIZE (4*4 + 4*4 + 3) /* viewmat + winmat + clipsta + clipend + is_ortho */ + + /* a slightly scaled down face is used to get fake 3D location for edge pixels in the seams * as this number approaches 1.0f the likelihood increases of float precision errors where * it is occluded by an adjacent face */ @@ -218,6 +219,7 @@ typedef struct ProjPaintState { RegionView3D *rv3d; ARegion *ar; Scene *scene; + int source; /* PROJ_SRC_**** */ Brush *brush; short tool, blend; @@ -259,6 +261,7 @@ typedef struct ProjPaintState { float screenMax[2]; float screen_width; /* Calculated from screenMin & screenMax */ float screen_height; + int winx, winy; /* from the carea or from the projection render */ /* options for projection painting */ int do_layer_clone; @@ -286,6 +289,11 @@ typedef struct ProjPaintState { float viewPos[3]; /* View location in object relative 3D space, so can compare to verts */ float clipsta, clipend; + /* reproject vars */ + Image *reproject_image; + ImBuf *reproject_ibuf; + + /* threads */ int thread_tot; int bucketMin[2]; @@ -404,7 +412,7 @@ static void image_undo_restore(bContext *C, ListBase *lb) UndoImageTile *tile; tmpibuf= IMB_allocImBuf(IMAPAINT_TILE_SIZE, IMAPAINT_TILE_SIZE, 32, - IB_rectfloat|IB_rect, 0); + IB_rectfloat|IB_rect, 0); for(tile=lb->first; tile; tile=tile->next) { /* find image based on name, pointer becomes invalid with global undo */ @@ -480,14 +488,14 @@ static void barycentric_weights_v2_persp(float v1[4], float v2[4], float v3[4], wtot = w[0]+w[1]+w[2]; if (wtot != 0.0f) { - wtot_inv = 1.0f/wtot; + wtot_inv = 1.0f/wtot; - w[0] = w[0]*wtot_inv; - w[1] = w[1]*wtot_inv; - w[2] = w[2]*wtot_inv; + w[0] = w[0]*wtot_inv; + w[1] = w[1]*wtot_inv; + w[2] = w[2]*wtot_inv; } else /* dummy values for zero area face */ - w[0] = w[1] = w[2] = 1.0f/3.0f; + w[0] = w[1] = w[2] = 1.0f/3.0f; } static float VecZDepthOrtho(float pt[2], float v1[3], float v2[3], float v3[3], float w[3]) @@ -633,8 +641,8 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float } } else { - xi = (uv[0]*ibuf->x) + 0.5f; - yi = (uv[1]*ibuf->y) + 0.5f; + xi = (int)((uv[0]*ibuf->x) + 0.5f); + yi = (int)((uv[1]*ibuf->y) + 0.5f); //if (xi<0 || xi>=ibuf->x || yi<0 || yi>=ibuf->y) return 0; @@ -673,7 +681,7 @@ static int project_paint_PickColor(const ProjPaintState *ps, float pt[2], float * 0 : no occlusion * -1 : no occlusion but 2D intersection is true (avoid testing the other half of a quad) * 1 : occluded - 2 : occluded with w[3] weights set (need to know in some cases) */ + 2 : occluded with w[3] weights set (need to know in some cases) */ static int project_paint_occlude_ptv(float pt[3], float v1[3], float v2[3], float v3[3], float w[3], int is_ortho) { @@ -742,6 +750,7 @@ static int project_bucket_point_occluded(const ProjPaintState *ps, LinkNode *buc int face_index; int isect_ret; float w[3]; /* not needed when clipping */ + const short do_clip= ps->rv3d ? ps->rv3d->rflag & RV3D_CLIPPING : 0; /* we could return 0 for 1 face buckets, as long as this function assumes * that the point its testing is only every originated from an existing face */ @@ -751,14 +760,14 @@ static int project_bucket_point_occluded(const ProjPaintState *ps, LinkNode *buc if (orig_face != face_index) { mf = ps->dm_mface + face_index; - if(ps->rv3d->rflag & RV3D_CLIPPING) + if(do_clip) isect_ret = project_paint_occlude_ptv_clip(ps, mf, pixelScreenCo, ps->screenCoords[mf->v1], ps->screenCoords[mf->v2], ps->screenCoords[mf->v3], 0); else isect_ret = project_paint_occlude_ptv(pixelScreenCo, ps->screenCoords[mf->v1], ps->screenCoords[mf->v2], ps->screenCoords[mf->v3], w, ps->is_ortho); /* Note, if isect_ret==-1 then we dont want to test the other side of the quad */ if (isect_ret==0 && mf->v4) { - if(ps->rv3d->rflag & RV3D_CLIPPING) + if(do_clip) isect_ret = project_paint_occlude_ptv_clip(ps, mf, pixelScreenCo, ps->screenCoords[mf->v1], ps->screenCoords[mf->v3], ps->screenCoords[mf->v4], 1); else isect_ret = project_paint_occlude_ptv(pixelScreenCo, ps->screenCoords[mf->v1], ps->screenCoords[mf->v3], ps->screenCoords[mf->v4], w, ps->is_ortho); @@ -1044,15 +1053,15 @@ static void uv_image_outset(float (*orig_uv)[2], float (*outset_uv)[2], const fl * This is incorrect. Its already given radians but without it wont work. * need to look into a fix - campbell */ if (is_quad) { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1) * (M_PI/180.0f)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); - a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4) * (M_PI/180.0f)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir4, dir1) * ((float)M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * ((float)M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * ((float)M_PI/180.0f)); + a4 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir4) * ((float)M_PI/180.0f)); } else { - a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1) * (M_PI/180.0f)); - a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * (M_PI/180.0f)); - a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * (M_PI/180.0f)); + a1 = shell_angle_to_dist(angle_normalized_v2v2(dir3, dir1) * ((float)M_PI/180.0f)); + a2 = shell_angle_to_dist(angle_normalized_v2v2(dir1, dir2) * ((float)M_PI/180.0f)); + a3 = shell_angle_to_dist(angle_normalized_v2v2(dir2, dir3) * ((float)M_PI/180.0f)); } if (is_quad) { @@ -1188,7 +1197,7 @@ static void screen_px_from_persp( w[2] *= wtot_inv; } else { - w[0] = w[1] = w[2] = 1.0/3.0; /* dummy values for zero area face */ + w[0] = w[1] = w[2] = 1.0f/3.0f; /* dummy values for zero area face */ } /* done re-weighting */ @@ -1633,10 +1642,10 @@ static void scale_quad(float insetCos[4][3], float *origCos[4], const float inse mul_v3_fl(insetCos[2], inset); mul_v3_fl(insetCos[3], inset); - add_v3_v3v3(insetCos[0], insetCos[0], cent); - add_v3_v3v3(insetCos[1], insetCos[1], cent); - add_v3_v3v3(insetCos[2], insetCos[2], cent); - add_v3_v3v3(insetCos[3], insetCos[3], cent); + add_v3_v3(insetCos[0], cent); + add_v3_v3(insetCos[1], cent); + add_v3_v3(insetCos[2], cent); + add_v3_v3(insetCos[3], cent); } @@ -1655,9 +1664,9 @@ static void scale_tri(float insetCos[4][3], float *origCos[4], const float inset mul_v3_fl(insetCos[1], inset); mul_v3_fl(insetCos[2], inset); - add_v3_v3v3(insetCos[0], insetCos[0], cent); - add_v3_v3v3(insetCos[1], insetCos[1], cent); - add_v3_v3v3(insetCos[2], insetCos[2], cent); + add_v3_v3(insetCos[0], cent); + add_v3_v3(insetCos[1], cent); + add_v3_v3(insetCos[2], cent); } @@ -2199,6 +2208,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i int uv_clip_tot; const short is_ortho = ps->is_ortho; const short do_backfacecull = ps->do_backfacecull; + const short do_clip= ps->rv3d ? ps->rv3d->rflag & RV3D_CLIPPING : 0; vCo[0] = ps->dm_mvert[mf->v1].co; vCo[1] = ps->dm_mvert[mf->v2].co; @@ -2298,7 +2308,7 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i else screen_px_from_persp(uv, v1coSS, v2coSS, v3coSS, uv1co, uv2co, uv3co, pixelScreenCo, w); /* a pitty we need to get the worldspace pixel location here */ - if(ps->rv3d->rflag & RV3D_CLIPPING) { + if(do_clip) { interp_v3_v3v3v3(wco, ps->dm_mvert[ (*(&mf->v1 + i1)) ].co, ps->dm_mvert[ (*(&mf->v1 + i2)) ].co, ps->dm_mvert[ (*(&mf->v1 + i3)) ].co, w); if(view3d_test_clipping(ps->rv3d, wco, 1)) { continue; /* Watch out that no code below this needs to run */ @@ -2479,8 +2489,8 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i if (!is_ortho) { pixelScreenCo[3] = 1.0f; mul_m4_v4((float(*)[4])ps->projectMat, pixelScreenCo); /* cast because of const */ - pixelScreenCo[0] = (float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*pixelScreenCo[0]/pixelScreenCo[3]; - pixelScreenCo[1] = (float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*pixelScreenCo[1]/pixelScreenCo[3]; + pixelScreenCo[0] = (float)(ps->winx/2.0f)+(ps->winx/2.0f)*pixelScreenCo[0]/pixelScreenCo[3]; + pixelScreenCo[1] = (float)(ps->winy/2.0f)+(ps->winy/2.0f)*pixelScreenCo[1]/pixelScreenCo[3]; pixelScreenCo[2] = pixelScreenCo[2]/pixelScreenCo[3]; /* Use the depth for bucket point occlusion */ } @@ -2503,17 +2513,17 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i w[0]=w[1]=w[2]= 0.0; if (side) { w[fidx1?fidx1-1:0] = fac; - w[fidx2?fidx2-1:0] = 1.0-fac; + w[fidx2?fidx2-1:0] = 1.0f-fac; } else { w[fidx1] = fac; - w[fidx2] = 1.0-fac; + w[fidx2] = 1.0f-fac; } #endif } /* a pitty we need to get the worldspace pixel location here */ - if(ps->rv3d->rflag & RV3D_CLIPPING) { + if(do_clip) { if (side) interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v3].co, ps->dm_mvert[mf->v4].co, w); else interp_v3_v3v3v3(wco, ps->dm_mvert[mf->v1].co, ps->dm_mvert[mf->v2].co, ps->dm_mvert[mf->v3].co, w); @@ -2561,11 +2571,12 @@ static void project_paint_face_init(const ProjPaintState *ps, const int thread_i static void project_paint_bucket_bounds(const ProjPaintState *ps, const float min[2], const float max[2], int bucketMin[2], int bucketMax[2]) { /* divide by bucketWidth & bucketHeight so the bounds are offset in bucket grid units */ - bucketMin[0] = (int)(((float)(min[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 0.5f; /* these offsets of 0.5 and 1.5 seem odd but they are correct */ - bucketMin[1] = (int)(((float)(min[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 0.5f; + /* XXX: the offset of 0.5 is always truncated to zero and the offset of 1.5f is always truncated to 1, is this really correct?? - jwilkins */ + bucketMin[0] = (int)((int)(((float)(min[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 0.5f); /* these offsets of 0.5 and 1.5 seem odd but they are correct */ + bucketMin[1] = (int)((int)(((float)(min[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 0.5f); - bucketMax[0] = (int)(((float)(max[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 1.5f; - bucketMax[1] = (int)(((float)(max[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 1.5f; + bucketMax[0] = (int)((int)(((float)(max[0] - ps->screenMin[0]) / ps->screen_width) * ps->buckets_x) + 1.5f); + bucketMax[1] = (int)((int)(((float)(max[1] - ps->screenMin[1]) / ps->screen_height) * ps->buckets_y) + 1.5f); /* incase the rect is outside the mesh 2d bounds */ CLAMP(bucketMin[0], 0, ps->buckets_x); @@ -2758,6 +2769,19 @@ static void project_paint_delayed_face_init(ProjPaintState *ps, const MFace *mf, #endif } +static int project_paint_view_clip(View3D *v3d, RegionView3D *rv3d, float *clipsta, float *clipend) +{ + int orth= get_view3d_cliprange(v3d, rv3d, clipsta, clipend); + + if (orth) { /* only needed for ortho */ + float fac = 2.0f / ((*clipend) - (*clipsta)); + *clipsta *= fac; + *clipend *= fac; + } + + return orth; +} + /* run once per stroke before projection painting */ static void project_paint_begin(ProjPaintState *ps) { @@ -2766,8 +2790,9 @@ static void project_paint_begin(ProjPaintState *ps) float no[3]; - float (*projScreenCo)[4]; /* Note, we could have 4D vectors are only needed for */ + float *projScreenCo; /* Note, we could have 4D vectors are only needed for */ float projMargin; + /* Image Vars - keep track of images we have used */ LinkNode *image_LinkList = NULL; LinkNode *node; @@ -2781,22 +2806,29 @@ static void project_paint_begin(ProjPaintState *ps) int a, i; /* generic looping vars */ int image_index = -1, face_index; + MVert *mv; MemArena *arena; /* at the moment this is just ps->arena_mt[0], but use this to show were not multithreading */ /* ---- end defines ---- */ - ED_view3d_local_clipping(ps->rv3d, ps->ob->obmat); /* faster clipping lookups */ + if(ps->source==PROJ_SRC_VIEW) + ED_view3d_local_clipping(ps->rv3d, ps->ob->obmat); /* faster clipping lookups */ /* paint onto the derived mesh */ /* Workaround for subsurf selection, try the display mesh first */ - if(ps->ob->derivedFinal && CustomData_has_layer( &ps->ob->derivedFinal->faceData, CD_MTFACE)) { + if (ps->source==PROJ_SRC_IMAGE_CAM) { + /* using render mesh, assume only camera was rendered from */ + ps->dm = mesh_create_derived_render(ps->scene, ps->ob, ps->v3d->customdata_mask | CD_MASK_MTFACE); + ps->dm_release= TRUE; + } + else if(ps->ob->derivedFinal && CustomData_has_layer( &ps->ob->derivedFinal->faceData, CD_MTFACE)) { ps->dm = ps->ob->derivedFinal; ps->dm_release= FALSE; } else { - ps->dm = mesh_get_derived_final(ps->scene, ps->ob, ps->v3d->customdata_mask); + ps->dm = mesh_get_derived_final(ps->scene, ps->ob, ps->v3d->customdata_mask | CD_MASK_MTFACE); ps->dm_release= TRUE; } @@ -2830,6 +2862,7 @@ static void project_paint_begin(ProjPaintState *ps) if (ps->dm_mtface_clone==NULL || ps->dm_mtface_clone==ps->dm_mtface) { ps->do_layer_clone = 0; ps->dm_mtface_clone= NULL; + printf("ACK!\n"); } } @@ -2861,83 +2894,126 @@ static void project_paint_begin(ProjPaintState *ps) ps->viewDir[1] = 0.0f; ps->viewDir[2] = 1.0f; - view3d_get_object_project_mat(ps->rv3d, ps->ob, ps->projectMat); - - /* viewDir - object relative */ - invert_m4_m4(ps->ob->imat, ps->ob->obmat); - copy_m3_m4(mat, ps->rv3d->viewinv); - mul_m3_v3(mat, ps->viewDir); - copy_m3_m4(mat, ps->ob->imat); - mul_m3_v3(mat, ps->viewDir); - normalize_v3(ps->viewDir); - - /* viewPos - object relative */ - VECCOPY(ps->viewPos, ps->rv3d->viewinv[3]); - copy_m3_m4(mat, ps->ob->imat); - mul_m3_v3(mat, ps->viewPos); - add_v3_v3v3(ps->viewPos, ps->viewPos, ps->ob->imat[3]); - - { /* only use these for running 'get_view3d_viewplane' */ - rctf viewplane; - - ps->is_ortho = get_view3d_viewplane(ps->v3d, ps->rv3d, ps->ar->winx, ps->ar->winy, &viewplane, &ps->clipsta, &ps->clipend, NULL); - - //printf("%f %f\n", ps->clipsta, ps->clipend); - if (ps->is_ortho) { /* only needed for ortho */ - float fac = 2.0f / (ps->clipend - ps->clipsta); - ps->clipsta *= fac; - ps->clipend *= fac; + { + float viewmat[4][4]; + float viewinv[4][4]; + + invert_m4_m4(ps->ob->imat, ps->ob->obmat); + + if(ps->source==PROJ_SRC_VIEW) { + /* normal drawing */ + ps->winx= ps->ar->winx; + ps->winy= ps->ar->winy; + + copy_m4_m4(viewmat, ps->rv3d->viewmat); + copy_m4_m4(viewinv, ps->rv3d->viewinv); + + view3d_get_object_project_mat(ps->rv3d, ps->ob, ps->projectMat); + + ps->is_ortho= project_paint_view_clip(ps->v3d, ps->rv3d, &ps->clipsta, &ps->clipend); } else { - /* TODO - can we even adjust for clip start/end? */ + /* reprojection */ + float winmat[4][4]; + float vmat[4][4]; + + ps->winx= ps->reproject_ibuf->x; + ps->winy= ps->reproject_ibuf->y; + + if (ps->source==PROJ_SRC_IMAGE_VIEW) { + /* image stores camera data, tricky */ + IDProperty *idgroup= IDP_GetProperties(&ps->reproject_image->id, 0); + IDProperty *view_data= IDP_GetPropertyFromGroup(idgroup, PROJ_VIEW_DATA_ID); + + float *array= (float *)IDP_Array(view_data); + + /* use image array, written when creating image */ + memcpy(winmat, array, sizeof(winmat)); array += sizeof(winmat)/sizeof(float); + memcpy(viewmat, array, sizeof(viewmat)); array += sizeof(viewmat)/sizeof(float); + ps->clipsta= array[0]; + ps->clipend= array[1]; + ps->is_ortho= array[2] ? 1:0; + + invert_m4_m4(viewinv, viewmat); + } + else if (ps->source==PROJ_SRC_IMAGE_CAM) { + Object *camera= ps->scene->camera; + + /* dont actually use these */ + float _viewdx, _viewdy, _ycor, _lens=0.0f; + rctf _viewplane; + + /* viewmat & viewinv */ + copy_m4_m4(viewinv, ps->scene->camera->obmat); + normalize_m4(viewinv); + invert_m4_m4(viewmat, viewinv); + + /* camera winmat */ + object_camera_matrix(&ps->scene->r, camera, ps->winx, ps->winy, 0, + winmat, &_viewplane, &ps->clipsta, &ps->clipend, + &_lens, &_ycor, &_viewdx, &_viewdy); + + ps->is_ortho= (ps->scene->r.mode & R_ORTHO) ? 1 : 0; + } + + /* same as view3d_get_object_project_mat */ + mul_m4_m4m4(vmat, ps->ob->obmat, viewmat); + mul_m4_m4m4(ps->projectMat, vmat, winmat); } + + + /* viewDir - object relative */ + invert_m4_m4(ps->ob->imat, ps->ob->obmat); + copy_m3_m4(mat, viewinv); + mul_m3_v3(mat, ps->viewDir); + copy_m3_m4(mat, ps->ob->imat); + mul_m3_v3(mat, ps->viewDir); + normalize_v3(ps->viewDir); + /* viewPos - object relative */ + VECCOPY(ps->viewPos, viewinv[3]); + copy_m3_m4(mat, ps->ob->imat); + mul_m3_v3(mat, ps->viewPos); + add_v3_v3(ps->viewPos, ps->ob->imat[3]); } - ps->is_airbrush = (ps->brush->flag & BRUSH_AIRBRUSH) ? 1 : 0; - - ps->is_texbrush = (ps->brush->mtex.tex) ? 1 : 0; - - /* calculate vert screen coords * run this early so we can calculate the x/y resolution of our bucket rect */ INIT_MINMAX2(ps->screenMin, ps->screenMax); ps->screenCoords = MEM_mallocN(sizeof(float) * ps->dm_totvert * 4, "ProjectPaint ScreenVerts"); - projScreenCo = ps->screenCoords; + projScreenCo= *ps->screenCoords; if (ps->is_ortho) { - for(a=0; a < ps->dm_totvert; a++, projScreenCo++) { - VECCOPY((*projScreenCo), ps->dm_mvert[a].co); - mul_m4_v3(ps->projectMat, (*projScreenCo)); + for(a=0, mv=ps->dm_mvert; a < ps->dm_totvert; a++, mv++, projScreenCo+=4) { + mul_v3_m4v3(projScreenCo, ps->projectMat, mv->co); /* screen space, not clamped */ - (*projScreenCo)[0] = (float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*(*projScreenCo)[0]; - (*projScreenCo)[1] = (float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*(*projScreenCo)[1]; - DO_MINMAX2((*projScreenCo), ps->screenMin, ps->screenMax); + projScreenCo[0] = (float)(ps->winx/2.0f)+(ps->winx/2.0f)*projScreenCo[0]; + projScreenCo[1] = (float)(ps->winy/2.0f)+(ps->winy/2.0f)*projScreenCo[1]; + DO_MINMAX2(projScreenCo, ps->screenMin, ps->screenMax); } } else { - for(a=0; a < ps->dm_totvert; a++, projScreenCo++) { - VECCOPY((*projScreenCo), ps->dm_mvert[a].co); - (*projScreenCo)[3] = 1.0f; + for(a=0, mv=ps->dm_mvert; a < ps->dm_totvert; a++, mv++, projScreenCo+=4) { + copy_v3_v3(projScreenCo, mv->co); + projScreenCo[3] = 1.0f; - mul_m4_v4(ps->projectMat, (*projScreenCo)); + mul_m4_v4(ps->projectMat, projScreenCo); - - if ((*projScreenCo)[3] > ps->clipsta) { + if (projScreenCo[3] > ps->clipsta) { /* screen space, not clamped */ - (*projScreenCo)[0] = (float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*(*projScreenCo)[0]/(*projScreenCo)[3]; - (*projScreenCo)[1] = (float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*(*projScreenCo)[1]/(*projScreenCo)[3]; - (*projScreenCo)[2] = (*projScreenCo)[2]/(*projScreenCo)[3]; /* Use the depth for bucket point occlusion */ - DO_MINMAX2((*projScreenCo), ps->screenMin, ps->screenMax); + projScreenCo[0] = (float)(ps->winx/2.0f)+(ps->winx/2.0f)*projScreenCo[0]/projScreenCo[3]; + projScreenCo[1] = (float)(ps->winy/2.0f)+(ps->winy/2.0f)*projScreenCo[1]/projScreenCo[3]; + projScreenCo[2] = projScreenCo[2]/projScreenCo[3]; /* Use the depth for bucket point occlusion */ + DO_MINMAX2(projScreenCo, ps->screenMin, ps->screenMax); } else { /* TODO - deal with cases where 1 side of a face goes behind the view ? * * After some research this is actually very tricky, only option is to * clip the derived mesh before painting, which is a Pain */ - (*projScreenCo)[0] = FLT_MAX; + projScreenCo[0] = FLT_MAX; } } } @@ -2952,14 +3028,23 @@ static void project_paint_begin(ProjPaintState *ps) ps->screenMax[1] += projMargin; ps->screenMin[1] -= projMargin; + if(ps->source==PROJ_SRC_VIEW) { #ifdef PROJ_DEBUG_WINCLIP - CLAMP(ps->screenMin[0], -ps->brush->size, ps->ar->winx + ps->brush->size); - CLAMP(ps->screenMax[0], -ps->brush->size, ps->ar->winx + ps->brush->size); + CLAMP(ps->screenMin[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); + CLAMP(ps->screenMax[0], (float)(-ps->brush->size), (float)(ps->winx + ps->brush->size)); - CLAMP(ps->screenMin[1], -ps->brush->size, ps->ar->winy + ps->brush->size); - CLAMP(ps->screenMax[1], -ps->brush->size, ps->ar->winy + ps->brush->size); + CLAMP(ps->screenMin[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); + CLAMP(ps->screenMax[1], (float)(-ps->brush->size), (float)(ps->winy + ps->brush->size)); #endif - + } + else { /* reprojection, use bounds */ + ps->screenMin[0]= 0; + ps->screenMax[0]= (float)(ps->winx); + + ps->screenMin[1]= 0; + ps->screenMax[1]= (float)(ps->winy); + } + /* only for convenience */ ps->screen_width = ps->screenMax[0] - ps->screenMin[0]; ps->screen_height = ps->screenMax[1] - ps->screenMin[1]; @@ -2999,21 +3084,18 @@ static void project_paint_begin(ProjPaintState *ps) ps->thread_tot = BLI_system_thread_count(); } for (a=0; a<ps->thread_tot; a++) { - ps->arena_mt[a] = BLI_memarena_new(1<<16); + ps->arena_mt[a] = BLI_memarena_new(1<<16, "project paint arena"); } arena = ps->arena_mt[0]; if (ps->do_backfacecull && ps->do_mask_normal) { - MVert *v = ps->dm_mvert; float viewDirPersp[3]; ps->vertFlags = MEM_callocN(sizeof(char) * ps->dm_totvert, "paint-vertFlags"); - for(a=0; a < ps->dm_totvert; a++, v++) { - no[0] = (float)(v->no[0] / 32767.0f); - no[1] = (float)(v->no[1] / 32767.0f); - no[2] = (float)(v->no[2] / 32767.0f); + for(a=0, mv=ps->dm_mvert; a < ps->dm_totvert; a++, mv++) { + normal_short_to_float_v3(no, mv->no); if (ps->is_ortho) { if (angle_normalized_v3v3(ps->viewDir, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */ @@ -3021,7 +3103,7 @@ static void project_paint_begin(ProjPaintState *ps) } } else { - sub_v3_v3v3(viewDirPersp, ps->viewPos, v->co); + sub_v3_v3v3(viewDirPersp, ps->viewPos, mv->co); normalize_v3(viewDirPersp); if (angle_normalized_v3v3(viewDirPersp, no) >= ps->normal_angle) { /* 1 vert of this face is towards us */ ps->vertFlags[a] |= PROJ_VERT_CULL; @@ -3041,7 +3123,7 @@ static void project_paint_begin(ProjPaintState *ps) BLI_linklist_prepend_arena(&ps->vertFaces[mf->v2], SET_INT_IN_POINTER(face_index), arena); BLI_linklist_prepend_arena(&ps->vertFaces[mf->v3], SET_INT_IN_POINTER(face_index), arena); if (mf->v4) { - BLI_linklist_prepend_arena(&ps->vertFaces[ mf->v4 ], SET_INT_IN_POINTER(face_index), arena); + BLI_linklist_prepend_arena(&ps->vertFaces[mf->v4], SET_INT_IN_POINTER(face_index), arena); } } #endif @@ -3160,14 +3242,13 @@ static void project_paint_begin_clone(ProjPaintState *ps, int mouse[2]) /* setup clone offset */ if (ps->tool == PAINT_TOOL_CLONE) { float projCo[4]; - float *curs= give_cursor(ps->scene, ps->v3d); - VECCOPY(projCo, curs); + copy_v3_v3(projCo, give_cursor(ps->scene, ps->v3d)); mul_m4_v3(ps->ob->imat, projCo); projCo[3] = 1.0f; mul_m4_v4(ps->projectMat, projCo); - ps->cloneOffset[0] = mouse[0] - ((float)(ps->ar->winx/2.0f)+(ps->ar->winx/2.0f)*projCo[0]/projCo[3]); - ps->cloneOffset[1] = mouse[1] - ((float)(ps->ar->winy/2.0f)+(ps->ar->winy/2.0f)*projCo[1]/projCo[3]); + ps->cloneOffset[0] = mouse[0] - ((float)(ps->winx/2.0f)+(ps->winx/2.0f)*projCo[0]/projCo[3]); + ps->cloneOffset[1] = mouse[1] - ((float)(ps->winy/2.0f)+(ps->winy/2.0f)*projCo[1]/projCo[3]); } } @@ -3365,31 +3446,44 @@ static int project_image_refresh_tagged(ProjPaintState *ps) /* run this per painting onto each mouse location */ static int project_bucket_iter_init(ProjPaintState *ps, const float mval_f[2]) { - float min_brush[2], max_brush[2]; - float size_half = ((float)ps->brush->size) * 0.5f; - - /* so we dont have a bucket bounds that is way too small to paint into */ - // if (size_half < 1.0f) size_half = 1.0f; // this dosnt work yet :/ - - min_brush[0] = mval_f[0] - size_half; - min_brush[1] = mval_f[1] - size_half; - - max_brush[0] = mval_f[0] + size_half; - max_brush[1] = mval_f[1] + size_half; - - /* offset to make this a valid bucket index */ - project_paint_bucket_bounds(ps, min_brush, max_brush, ps->bucketMin, ps->bucketMax); - - /* mouse outside the model areas? */ - if (ps->bucketMin[0]==ps->bucketMax[0] || ps->bucketMin[1]==ps->bucketMax[1]) { - return 0; + if(ps->source==PROJ_SRC_VIEW) { + float min_brush[2], max_brush[2]; + float size_half = ((float)ps->brush->size) * 0.5f; + + /* so we dont have a bucket bounds that is way too small to paint into */ + // if (size_half < 1.0f) size_half = 1.0f; // this dosnt work yet :/ + + min_brush[0] = mval_f[0] - size_half; + min_brush[1] = mval_f[1] - size_half; + + max_brush[0] = mval_f[0] + size_half; + max_brush[1] = mval_f[1] + size_half; + + /* offset to make this a valid bucket index */ + project_paint_bucket_bounds(ps, min_brush, max_brush, ps->bucketMin, ps->bucketMax); + + /* mouse outside the model areas? */ + if (ps->bucketMin[0]==ps->bucketMax[0] || ps->bucketMin[1]==ps->bucketMax[1]) { + return 0; + } + + ps->context_bucket_x = ps->bucketMin[0]; + ps->context_bucket_y = ps->bucketMin[1]; + } + else { /* reproject: PROJ_SRC_* */ + ps->bucketMin[0]= 0; + ps->bucketMin[1]= 0; + + ps->bucketMax[0]= ps->buckets_x; + ps->bucketMax[1]= ps->buckets_y; + + ps->context_bucket_x = 0; + ps->context_bucket_y = 0; } - - ps->context_bucket_x = ps->bucketMin[0]; - ps->context_bucket_y = ps->bucketMin[1]; return 1; } + static int project_bucket_iter_next(ProjPaintState *ps, int *bucket_index, rctf *bucket_bounds, const float mval[2]) { if (ps->thread_tot > 1) @@ -3403,7 +3497,9 @@ static int project_bucket_iter_next(ProjPaintState *ps, int *bucket_index, rctf /* use bucket_bounds for project_bucket_isect_circle and project_bucket_init*/ project_bucket_bounds(ps, ps->context_bucket_x, ps->context_bucket_y, bucket_bounds); - if (project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, ps->brush->size * ps->brush->size, bucket_bounds)) { + if ( (ps->source != PROJ_SRC_VIEW) || + project_bucket_isect_circle(ps->context_bucket_x, ps->context_bucket_y, mval, (float)(ps->brush->size * ps->brush->size), bucket_bounds) + ) { *bucket_index = ps->context_bucket_x + (ps->context_bucket_y * ps->buckets_x); ps->context_bucket_x++; @@ -3450,13 +3546,27 @@ static void blend_color_mix(unsigned char *cp, const unsigned char *cp1, const u static void blend_color_mix_float(float *cp, const float *cp1, const float *cp2, const float fac) { - const float mfac= 1.0-fac; + const float mfac= 1.0f-fac; cp[0]= mfac*cp1[0] + fac*cp2[0]; cp[1]= mfac*cp1[1] + fac*cp2[1]; cp[2]= mfac*cp1[2] + fac*cp2[2]; cp[3]= mfac*cp1[3] + fac*cp2[3]; } +static void blend_color_mix_accum(unsigned char *cp, const unsigned char *cp1, const unsigned char *cp2, const int fac) +{ + /* this and other blending modes previously used >>8 instead of /255. both + are not equivalent (>>8 is /256), and the former results in rounding + errors that can turn colors black fast after repeated blending */ + const int mfac= 255-fac; + const int alpha= cp1[3] + ((fac * cp2[3]) / 255); + + cp[0]= (mfac*cp1[0]+fac*cp2[0])/255; + cp[1]= (mfac*cp1[1]+fac*cp2[1])/255; + cp[2]= (mfac*cp1[2]+fac*cp2[2])/255; + cp[3]= alpha > 255 ? 255 : alpha; +} + static void do_projectpaint_clone(ProjPaintState *ps, ProjPixel *projPixel, float *rgba, float alpha, float mask) { if (ps->is_airbrush==0 && mask < 1.0f) { @@ -3588,6 +3698,7 @@ static void *do_projectpaint_thread(void *ph_v) float mask = 1.0f; /* airbrush wont use mask */ unsigned short mask_short; float size_half = ((float)ps->brush->size) * 0.5f; + short lock_alpha= ELEM(ps->brush->blend, IMB_BLEND_ERASE_ALPHA, IMB_BLEND_ADD_ALPHA) ? 0 : ps->brush->flag & BRUSH_LOCK_ALPHA; LinkNode *smearPixels = NULL; LinkNode *smearPixels_f = NULL; @@ -3598,11 +3709,11 @@ static void *do_projectpaint_thread(void *ph_v) pos_ofs[0] = pos[0] - lastpos[0]; pos_ofs[1] = pos[1] - lastpos[1]; - smearArena = BLI_memarena_new(1<<16); + smearArena = BLI_memarena_new(1<<16, "paint smear arena"); } /* avoid a square root with every dist comparison */ - brush_size_sqared = ps->brush->size * ps->brush->size; + brush_size_sqared = (float)(ps->brush->size * ps->brush->size); /* printf("brush bounds %d %d %d %d\n", bucketMin[0], bucketMin[1], bucketMax[0], bucketMax[1]); */ @@ -3614,91 +3725,117 @@ static void *do_projectpaint_thread(void *ph_v) project_bucket_init(ps, thread_index, bucket_index, &bucket_bounds); } - for (node = ps->bucketRect[bucket_index]; node; node = node->next) { - - projPixel = (ProjPixel *)node->link; + if(ps->source != PROJ_SRC_VIEW) { + + /* Re-Projection, simple, no brushes! */ - /*dist = len_v2v2(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */ - dist_nosqrt = Vec2Lenf_nosqrt(projPixel->projCoSS, pos); + for (node = ps->bucketRect[bucket_index]; node; node = node->next) { + projPixel = (ProjPixel *)node->link; + + bicubic_interpolation_color(ps->reproject_ibuf, projPixel->newColor.ch, NULL, projPixel->projCoSS[0], projPixel->projCoSS[1]); + if(projPixel->newColor.ch[3]) { + mask = ((float)projPixel->mask)/65535.0f; + blend_color_mix_accum(projPixel->pixel.ch_pt, projPixel->origColor.ch, projPixel->newColor.ch, (mask*projPixel->newColor.ch[3])); + + } + } + } + else { + /* Normal brush painting */ - /*if (dist < s->brush->size) {*/ /* correct but uses a sqrtf */ - if (dist_nosqrt < brush_size_sqared && (dist=sqrtf(dist_nosqrt)) < size_half) { - falloff = brush_curve_strength_clamp(ps->brush, dist, size_half); - if (falloff > 0.0f) { - if (ps->is_texbrush) { - brush_sample_tex(ps->brush, projPixel->projCoSS, rgba); - alpha = rgba[3]; - } else { - alpha = 1.0f; - } - - if (ps->is_airbrush) { - /* for an aurbrush there is no real mask, so just multiply the alpha by it */ - alpha *= falloff * ps->brush->alpha; - mask = ((float)projPixel->mask)/65535.0f; - } - else { - /* This brush dosnt accumulate so add some curve to the brushes falloff */ - falloff = 1.0f - falloff; - falloff = 1.0f - (falloff * falloff); + for (node = ps->bucketRect[bucket_index]; node; node = node->next) { + + projPixel = (ProjPixel *)node->link; + + /*dist = len_v2v2(projPixel->projCoSS, pos);*/ /* correct but uses a sqrtf */ + dist_nosqrt = Vec2Lenf_nosqrt(projPixel->projCoSS, pos); + + /*if (dist < s->brush->size) {*/ /* correct but uses a sqrtf */ + if (dist_nosqrt < brush_size_sqared && (dist=sqrtf(dist_nosqrt)) < size_half) { + falloff = brush_curve_strength_clamp(ps->brush, dist, size_half); + + if (falloff > 0.0f) { + if (ps->is_texbrush) { + brush_sample_tex(ps->brush, projPixel->projCoSS, rgba); + alpha = rgba[3]; + } else { + alpha = 1.0f; + } - mask_short = projPixel->mask * (ps->brush->alpha * falloff); - if (mask_short > projPixel->mask_max) { - mask = ((float)mask_short)/65535.0f; - projPixel->mask_max = mask_short; + if (ps->is_airbrush) { + /* for an aurbrush there is no real mask, so just multiply the alpha by it */ + alpha *= falloff * ps->brush->alpha; + mask = ((float)projPixel->mask)/65535.0f; } else { - /*mask = ((float)projPixel->mask_max)/65535.0f;*/ + /* This brush dosnt accumulate so add some curve to the brushes falloff */ + falloff = 1.0f - falloff; + falloff = 1.0f - (falloff * falloff); - /* Go onto the next pixel */ - continue; + mask_short = (unsigned short)(projPixel->mask * (ps->brush->alpha * falloff)); + if (mask_short > projPixel->mask_max) { + mask = ((float)mask_short)/65535.0f; + projPixel->mask_max = mask_short; + } + else { + /*mask = ((float)projPixel->mask_max)/65535.0f;*/ + + /* Go onto the next pixel */ + continue; + } } - } - - if (alpha > 0.0f) { - if (last_index != projPixel->image_index) { - last_index = projPixel->image_index; - last_projIma = projImages + last_index; + if (alpha > 0.0f) { + + if (last_index != projPixel->image_index) { + last_index = projPixel->image_index; + last_projIma = projImages + last_index; + + last_projIma->touch = 1; + is_floatbuf = last_projIma->ibuf->rect_float ? 1 : 0; + } + + last_partial_redraw_cell = last_projIma->partRedrawRect + projPixel->bb_cell_index; + last_partial_redraw_cell->x1 = MIN2(last_partial_redraw_cell->x1, projPixel->x_px); + last_partial_redraw_cell->y1 = MIN2(last_partial_redraw_cell->y1, projPixel->y_px); + + last_partial_redraw_cell->x2 = MAX2(last_partial_redraw_cell->x2, projPixel->x_px+1); + last_partial_redraw_cell->y2 = MAX2(last_partial_redraw_cell->y2, projPixel->y_px+1); + - last_projIma->touch = 1; - is_floatbuf = last_projIma->ibuf->rect_float ? 1 : 0; - } - - last_partial_redraw_cell = last_projIma->partRedrawRect + projPixel->bb_cell_index; - last_partial_redraw_cell->x1 = MIN2(last_partial_redraw_cell->x1, projPixel->x_px); - last_partial_redraw_cell->y1 = MIN2(last_partial_redraw_cell->y1, projPixel->y_px); - - last_partial_redraw_cell->x2 = MAX2(last_partial_redraw_cell->x2, projPixel->x_px+1); - last_partial_redraw_cell->y2 = MAX2(last_partial_redraw_cell->y2, projPixel->y_px+1); - - - switch(tool) { - case PAINT_TOOL_CLONE: - if (is_floatbuf) { - if (((ProjPixelClone *)projPixel)->clonepx.f[3]) { - do_projectpaint_clone_f(ps, projPixel, rgba, alpha, mask); + switch(tool) { + case PAINT_TOOL_CLONE: + if (is_floatbuf) { + if (((ProjPixelClone *)projPixel)->clonepx.f[3]) { + do_projectpaint_clone_f(ps, projPixel, rgba, alpha, mask); + } } - } - else { - if (((ProjPixelClone*)projPixel)->clonepx.ch[3]) { - do_projectpaint_clone(ps, projPixel, rgba, alpha, mask); + else { + if (((ProjPixelClone*)projPixel)->clonepx.ch[3]) { + do_projectpaint_clone(ps, projPixel, rgba, alpha, mask); + } } + break; + case PAINT_TOOL_SMEAR: + sub_v2_v2v2(co, projPixel->projCoSS, pos_ofs); + + if (is_floatbuf) do_projectpaint_smear_f(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels_f, co); + else do_projectpaint_smear(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels, co); + break; + default: + if (is_floatbuf) do_projectpaint_draw_f(ps, projPixel, rgba, alpha, mask); + else do_projectpaint_draw(ps, projPixel, rgba, alpha, mask); + break; } - break; - case PAINT_TOOL_SMEAR: - sub_v2_v2v2(co, projPixel->projCoSS, pos_ofs); - - if (is_floatbuf) do_projectpaint_smear_f(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels_f, co); - else do_projectpaint_smear(ps, projPixel, rgba, alpha, mask, smearArena, &smearPixels, co); - break; - default: - if (is_floatbuf) do_projectpaint_draw_f(ps, projPixel, rgba, alpha, mask); - else do_projectpaint_draw(ps, projPixel, rgba, alpha, mask); - break; } + + if(lock_alpha) { + if (is_floatbuf) projPixel->pixel.f_pt[3]= projPixel->origColor.f[3]; + else projPixel->pixel.ch_pt[3]= projPixel->origColor.ch[3]; + } + + /* done painting */ } - /* done painting */ } } } @@ -3747,8 +3884,8 @@ static int project_paint_op(void *state, ImBuf *ibufb, float *lastpos, float *po //memset(&handles[a], 0, sizeof(BakeShade)); handles[a].ps = ps; - VECCOPY2D(handles[a].mval, pos); - VECCOPY2D(handles[a].prevmval, lastpos); + copy_v2_v2(handles[a].mval, pos); + copy_v2_v2(handles[a].prevmval, lastpos); /* thread spesific */ handles[a].thread_index = a; @@ -3796,8 +3933,8 @@ static int project_paint_sub_stroke(ProjPaintState *ps, BrushPainter *painter, i /* Use mouse coords as floats for projection painting */ float pos[2]; - pos[0] = mval_i[0]; - pos[1] = mval_i[1]; + pos[0] = (float)(mval_i[0]); + pos[1] = (float)(mval_i[1]); // we may want to use this later // brush_painter_require_imbuf(painter, ((ibuf->rect_float)? 1: 0), 0, 0); @@ -3921,7 +4058,8 @@ static int imapaint_ibuf_add_if(ImBuf *ibuf, unsigned int x, unsigned int y, flo { float inrgb[3]; - if ((x >= ibuf->x) || (y >= ibuf->y)) { + // XXX: signed unsigned mismatch + if ((x >= (unsigned int)(ibuf->x)) || (y >= (unsigned int)(ibuf->y))) { if (torus) imapaint_ibuf_get_set_rgb(ibuf, x, y, 1, 0, inrgb); else return 0; } @@ -4427,21 +4565,74 @@ static void paint_redraw(bContext *C, ImagePaintState *s, int final) } } +/* initialize project paint settings from context */ +static void project_state_init(bContext *C, Object *ob, ProjPaintState *ps) +{ + Scene *scene= CTX_data_scene(C); + ToolSettings *settings= scene->toolsettings; + Brush *brush= paint_brush(&settings->imapaint.paint); + + /* brush */ + ps->brush = brush; + ps->tool = brush->imagepaint_tool; + ps->blend = brush->blend; + + ps->is_airbrush = (brush->flag & BRUSH_AIRBRUSH) ? 1 : 0; + ps->is_texbrush = (brush->mtex.tex) ? 1 : 0; + + + /* these can be NULL */ + ps->v3d= CTX_wm_view3d(C); + ps->rv3d= CTX_wm_region_view3d(C); + ps->ar= CTX_wm_region(C); + + ps->scene= scene; + ps->ob= ob; /* allow override of active object */ + + /* setup projection painting data */ + ps->do_backfacecull = (settings->imapaint.flag & IMAGEPAINT_PROJECT_BACKFACE) ? 0 : 1; + ps->do_occlude = (settings->imapaint.flag & IMAGEPAINT_PROJECT_XRAY) ? 0 : 1; + ps->do_mask_normal = (settings->imapaint.flag & IMAGEPAINT_PROJECT_FLAT) ? 0 : 1; + + if (ps->tool == PAINT_TOOL_CLONE) + ps->do_layer_clone = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_CLONE); + + ps->do_layer_stencil = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL) ? 1 : 0; + ps->do_layer_stencil_inv = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL_INV) ? 1 : 0; + + +#ifndef PROJ_DEBUG_NOSEAMBLEED + ps->seam_bleed_px = settings->imapaint.seam_bleed; /* pixel num to bleed */ +#endif + + if(ps->do_mask_normal) { + ps->normal_angle_inner = settings->imapaint.normal_angle; + ps->normal_angle = (ps->normal_angle_inner + 90.0f) * 0.5f; + } + else { + ps->normal_angle_inner= ps->normal_angle= settings->imapaint.normal_angle; + } + + ps->normal_angle_inner *= (float)(M_PI_2 / 90); + ps->normal_angle *= (float)(M_PI_2 / 90); + ps->normal_angle_range = ps->normal_angle - ps->normal_angle_inner; + + if(ps->normal_angle_range <= 0.0f) + ps->do_mask_normal = 0; /* no need to do blending */ +} + static int texture_paint_init(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); ToolSettings *settings= scene->toolsettings; - PaintOperation *pop; - Brush *brush; + Brush *brush= paint_brush(&settings->imapaint.paint); + PaintOperation *pop= MEM_callocN(sizeof(PaintOperation), "PaintOperation"); /* caller frees */ - pop= MEM_callocN(sizeof(PaintOperation), "PaintOperation"); pop->first= 1; op->customdata= pop; /* initialize from context */ if(CTX_wm_region_view3d(C)) { - pop->ps.v3d= CTX_wm_view3d(C); - pop->ps.rv3d= CTX_wm_region_view3d(C); pop->mode= PAINT_MODE_3D; if(!(settings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)) @@ -4455,34 +4646,19 @@ static int texture_paint_init(bContext *C, wmOperator *op) } pop->s.scene= scene; - pop->ps.scene= scene; pop->s.screen= CTX_wm_screen(C); - pop->ps.ar= CTX_wm_region(C); - - /* intialize brush */ - brush= paint_brush(&settings->imapaint.paint); - if(!brush) - return 0; pop->s.brush = brush; pop->s.tool = brush->imagepaint_tool; if(pop->mode == PAINT_MODE_3D && (pop->s.tool == PAINT_TOOL_CLONE)) pop->s.tool = PAINT_TOOL_DRAW; - pop->s.blend = pop->s.brush->blend; - - if(pop->mode == PAINT_MODE_3D_PROJECT) { - pop->ps.brush = pop->s.brush; - pop->ps.tool = pop->s.tool; - pop->ps.blend = pop->s.blend; - - pop->brush_size_orig = pop->ps.brush->size; /* not nice hack because 1 size brushes always fail with projection paint */ - } + pop->s.blend = brush->blend; + pop->brush_size_orig= brush->size; if(pop->mode != PAINT_MODE_2D) { Mesh *me; - pop->ps.ob = pop->s.ob = OBACT; - if (!pop->s.ob || !(pop->s.ob->lay & pop->ps.v3d->lay)) return 0; + pop->s.ob = OBACT; pop->s.me = get_mesh(pop->s.ob); if (!pop->s.me) return 0; @@ -4513,40 +4689,23 @@ static int texture_paint_init(bContext *C, wmOperator *op) return 0; } } - + /* note, if we have no UVs on the derived mesh, then we must return here */ if(pop->mode == PAINT_MODE_3D_PROJECT) { - /* setup projection painting data */ - pop->ps.do_backfacecull = (settings->imapaint.flag & IMAGEPAINT_PROJECT_BACKFACE) ? 0 : 1; - pop->ps.do_occlude = (settings->imapaint.flag & IMAGEPAINT_PROJECT_XRAY) ? 0 : 1; - pop->ps.do_mask_normal = (settings->imapaint.flag & IMAGEPAINT_PROJECT_FLAT) ? 0 : 1;; - - if (pop->ps.tool == PAINT_TOOL_CLONE) - pop->ps.do_layer_clone = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_CLONE); - - pop->ps.do_layer_stencil = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL) ? 1 : 0; - pop->ps.do_layer_stencil_inv = (settings->imapaint.flag & IMAGEPAINT_PROJECT_LAYER_STENCIL_INV) ? 1 : 0; - - -#ifndef PROJ_DEBUG_NOSEAMBLEED - pop->ps.seam_bleed_px = settings->imapaint.seam_bleed; /* pixel num to bleed */ -#endif - if(pop->ps.do_mask_normal) { - pop->ps.normal_angle_inner = settings->imapaint.normal_angle; - pop->ps.normal_angle = (pop->ps.normal_angle_inner + 90.0f) * 0.5f; - } - else { - pop->ps.normal_angle_inner= pop->ps.normal_angle= settings->imapaint.normal_angle; - } + /* initialize all data from the context */ + project_state_init(C, OBACT, &pop->ps); - pop->ps.normal_angle_inner *= M_PI_2 / 90; - pop->ps.normal_angle *= M_PI_2 / 90; - pop->ps.normal_angle_range = pop->ps.normal_angle - pop->ps.normal_angle_inner; - - if(pop->ps.normal_angle_range <= 0.0f) - pop->ps.do_mask_normal = 0; /* no need to do blending */ + pop->ps.source= PROJ_SRC_VIEW; + if (pop->ps.ob==NULL || !(pop->ps.ob->lay & pop->ps.v3d->lay)) + return 0; + + /* Dont allow brush size below 2 */ + if (brush->size <= 1) + brush->size = 2; + + /* allocate and initialize spacial data structures */ project_paint_begin(&pop->ps); if(pop->ps.dm==NULL) @@ -4571,8 +4730,8 @@ static void paint_apply(bContext *C, wmOperator *op, PointerRNA *itemptr) int mouse[2], redraw; RNA_float_get_array(itemptr, "mouse", mousef); - mouse[0] = mousef[0]; - mouse[1] = mousef[1]; + mouse[0] = (int)(mousef[0]); + mouse[1] = (int)(mousef[1]); time= RNA_float_get(itemptr, "time"); pressure= RNA_float_get(itemptr, "pressure"); @@ -4692,8 +4851,8 @@ static void paint_apply_event(bContext *C, wmOperator *op, wmEvent *event) /* fill in stroke */ RNA_collection_add(op->ptr, "stroke", &itemptr); - mousef[0] = mouse[0]; - mousef[1] = mouse[1]; + mousef[0] = (float)(mouse[0]); + mousef[1] = (float)(mouse[1]); RNA_float_set_array(&itemptr, "mouse", mousef); RNA_float_set(&itemptr, "time", (float)(time - pop->starttime)); RNA_float_set(&itemptr, "pressure", pressure); @@ -4735,6 +4894,7 @@ static int paint_modal(bContext *C, wmOperator *op, wmEvent *event) paint_exit(C, op); return OPERATOR_FINISHED; case MOUSEMOVE: + case INBETWEEN_MOUSEMOVE: paint_apply_event(C, op, event); break; case TIMER: @@ -4809,7 +4969,7 @@ static void brush_drawcursor(bContext *C, int x, int y, void *customdata) glColor4ub(255, 255, 255, 128); glEnable( GL_LINE_SMOOTH ); glEnable(GL_BLEND); - glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size*0.5f, 40); + glutil_draw_lined_arc(0, (float)(M_PI*2.0), brush->size*0.5f, 40); glDisable(GL_BLEND); glDisable( GL_LINE_SMOOTH ); @@ -4836,7 +4996,7 @@ static int paint_radial_control_invoke(bContext *C, wmOperator *op, wmEvent *eve ToolSettings *ts = CTX_data_scene(C)->toolsettings; get_imapaint_zoom(C, &zoom, &zoom); toggle_paint_cursor(C, !ts->imapaint.paintcursor); - brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5 * zoom); + brush_radial_control_invoke(op, paint_brush(&ts->imapaint.paint), 0.5f * zoom); return WM_radial_control_invoke(C, op, event); } @@ -4845,7 +5005,7 @@ static int paint_radial_control_modal(bContext *C, wmOperator *op, wmEvent *even ToolSettings *ts = CTX_data_scene(C)->toolsettings; int ret = WM_radial_control_modal(C, op, event); if(ret != OPERATOR_RUNNING_MODAL) - toggle_paint_cursor(C, !ts->imapaint.paintcursor); + toggle_paint_cursor(C, !ts->imapaint.paintcursor); return ret; } @@ -4856,7 +5016,7 @@ static int paint_radial_control_exec(bContext *C, wmOperator *op) int ret; char str[256]; get_imapaint_zoom(C, &zoom, &zoom); - ret = brush_radial_control_exec(op, brush, 2.0 / zoom); + ret = brush_radial_control_exec(op, brush, 2.0f / zoom); WM_radial_control_string(op, str, 256); WM_event_add_notifier(C, NC_BRUSH|NA_EDITED, brush); @@ -4893,9 +5053,7 @@ static void grab_clone_apply(bContext *C, wmOperator *op) float delta[2]; RNA_float_get_array(op->ptr, "delta", delta); - brush->clone.offset[0] += delta[0]; - brush->clone.offset[1] += delta[1]; - + add_v2_v2(brush->clone.offset, delta); ED_region_tag_redraw(CTX_wm_region(C)); } @@ -4912,8 +5070,7 @@ static int grab_clone_invoke(bContext *C, wmOperator *op, wmEvent *event) GrabClone *cmv; cmv= MEM_callocN(sizeof(GrabClone), "GrabClone"); - cmv->startoffset[0]= brush->clone.offset[0]; - cmv->startoffset[1]= brush->clone.offset[1]; + copy_v2_v2(cmv->startoffset, brush->clone.offset); cmv->startx= event->x; cmv->starty= event->y; op->customdata= cmv; @@ -4946,8 +5103,7 @@ static int grab_clone_modal(bContext *C, wmOperator *op, wmEvent *event) delta[1]= fy - startfy; RNA_float_set_array(op->ptr, "delta", delta); - brush->clone.offset[0]= cmv->startoffset[0]; - brush->clone.offset[1]= cmv->startoffset[1]; + copy_v2_v2(brush->clone.offset, cmv->startoffset); grab_clone_apply(C, op); break; @@ -5219,3 +5375,194 @@ int facemask_paint_poll(bContext *C) return paint_facesel_test(CTX_data_active_object(C)); } +/* use project paint to re-apply an image */ +static int texture_paint_camera_project_exec(bContext *C, wmOperator *op) +{ + Image *image= BLI_findlink(&CTX_data_main(C)->image, RNA_enum_get(op->ptr, "image")); + Scene *scene= CTX_data_scene(C); + ProjPaintState ps; + int orig_brush_size; + IDProperty *idgroup; + IDProperty *view_data= NULL; + + memset(&ps, 0, sizeof(ps)); + + project_state_init(C, OBACT, &ps); + + if(ps.ob==NULL || ps.ob->type != OB_MESH) { + BKE_report(op->reports, RPT_ERROR, "No active mesh object."); + return OPERATOR_CANCELLED; + } + + if(image==NULL) { + BKE_report(op->reports, RPT_ERROR, "Image could not be found."); + return OPERATOR_CANCELLED; + } + + ps.reproject_image= image; + ps.reproject_ibuf= BKE_image_get_ibuf(image, NULL); + + if(ps.reproject_ibuf==NULL || ps.reproject_ibuf->rect==NULL) { + BKE_report(op->reports, RPT_ERROR, "Image data could not be found."); + return OPERATOR_CANCELLED; + } + + idgroup= IDP_GetProperties(&image->id, 0); + + if(idgroup) { + view_data= IDP_GetPropertyFromGroup(idgroup, PROJ_VIEW_DATA_ID); + + /* type check to make sure its ok */ + if(view_data->len != PROJ_VIEW_DATA_SIZE || view_data->type != IDP_ARRAY || view_data->subtype != IDP_FLOAT) { + BKE_report(op->reports, RPT_ERROR, "Image project data invalid."); + return OPERATOR_CANCELLED; + } + } + + if(view_data) { + /* image has stored view projection info */ + ps.source= PROJ_SRC_IMAGE_VIEW; + } + else { + ps.source= PROJ_SRC_IMAGE_CAM; + + if(scene->camera==NULL) { + BKE_report(op->reports, RPT_ERROR, "No active camera set."); + return OPERATOR_CANCELLED; + } + } + + /* override */ + ps.is_texbrush= 0; + ps.is_airbrush= 1; + orig_brush_size= ps.brush->size; + ps.brush->size= 32; /* cover the whole image */ + + ps.tool= PAINT_TOOL_DRAW; /* so pixels are initialized with minimal info */ + + scene->toolsettings->imapaint.flag |= IMAGEPAINT_DRAWING; + + undo_paint_push_begin(UNDO_PAINT_IMAGE, "Image Paint", + image_undo_restore, image_undo_free); + + /* allocate and initialize spacial data structures */ + project_paint_begin(&ps); + + if(ps.dm==NULL) { + ps.brush->size= orig_brush_size; + return OPERATOR_CANCELLED; + } + else { + float pos[2]= {0.0, 0.0}; + float lastpos[2]= {0.0, 0.0}; + int a; + + for (a=0; a < ps.image_tot; a++) + partial_redraw_array_init(ps.projImages[a].partRedrawRect); + + project_paint_op(&ps, NULL, lastpos, pos); + + project_image_refresh_tagged(&ps); + + for (a=0; a < ps.image_tot; a++) { + GPU_free_image(ps.projImages[a].ima); + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ps.projImages[a].ima); + } + } + + project_paint_end(&ps); + + scene->toolsettings->imapaint.flag &= ~IMAGEPAINT_DRAWING; + ps.brush->size= orig_brush_size; + + return OPERATOR_FINISHED; +} + +void PAINT_OT_project_image(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Project Image"; + ot->idname= "PAINT_OT_project_image"; + ot->description= "Project an edited render from the active camera back onto the object"; + + /* api callbacks */ + ot->invoke= WM_enum_search_invoke; + ot->exec= texture_paint_camera_project_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + prop= RNA_def_enum(ot->srna, "image", DummyRNA_NULL_items, 0, "Image", ""); + RNA_def_enum_funcs(prop, RNA_image_itemf); + ot->prop= prop; +} + +static int texture_paint_image_from_view_exec(bContext *C, wmOperator *op) +{ + Image *image; + ImBuf *ibuf; + char filename[FILE_MAX]; + + Scene *scene= CTX_data_scene(C); + ToolSettings *settings= scene->toolsettings; + int w= settings->imapaint.screen_grab_size[0]; + int h= settings->imapaint.screen_grab_size[1]; + int maxsize; + + RNA_string_get(op->ptr, "filepath", filename); + + glGetIntegerv(GL_MAX_TEXTURE_SIZE, &maxsize); + + if(w > maxsize) w= maxsize; + if(h > maxsize) h= maxsize; + + ibuf= ED_view3d_draw_offscreen_imbuf(CTX_data_scene(C), CTX_wm_view3d(C), CTX_wm_region(C), w, h); + image= BKE_add_image_imbuf(ibuf); + + if(image) { + /* now for the trickyness. store the view projection here! + * reprojection will reuse this */ + View3D *v3d= CTX_wm_view3d(C); + RegionView3D *rv3d= CTX_wm_region_view3d(C); + + IDPropertyTemplate val; + IDProperty *idgroup= IDP_GetProperties(&image->id, 1); + IDProperty *view_data; + int orth; + float *array; + + val.array.len = PROJ_VIEW_DATA_SIZE; + val.array.type = IDP_FLOAT; + view_data = IDP_New(IDP_ARRAY, val, PROJ_VIEW_DATA_ID); + + array= (float *)IDP_Array(view_data); + memcpy(array, rv3d->winmat, sizeof(rv3d->winmat)); array += sizeof(rv3d->winmat)/sizeof(float); + memcpy(array, rv3d->viewmat, sizeof(rv3d->viewmat)); array += sizeof(rv3d->viewmat)/sizeof(float); + orth= project_paint_view_clip(v3d, rv3d, &array[0], &array[1]); + array[2]= orth ? 1.0f : 0.0f; /* using float for a bool is dodgy but since its an extra member in the array... easier then adding a single bool prop */ + + IDP_AddToGroup(idgroup, view_data); + + rename_id(&image->id, "image_view"); + } + + return OPERATOR_FINISHED; +} + +void PAINT_OT_image_from_view(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Image from View"; + ot->idname= "PAINT_OT_image_from_view"; + ot->description= "Make an image from the current 3D view for re-projection"; + + /* api callbacks */ + ot->exec= texture_paint_image_from_view_exec; + + /* flags */ + ot->flag= OPTYPE_REGISTER; + + RNA_def_string_file_name(ot->srna, "filepath", "", FILE_MAX, "File Path", "Name of the file"); +} diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h index b9b604480ec..0ae7c7fac19 100644 --- a/source/blender/editors/sculpt_paint/paint_intern.h +++ b/source/blender/editors/sculpt_paint/paint_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -50,8 +50,8 @@ typedef void (*StrokeUpdateStep)(struct bContext *C, struct PaintStroke *stroke, typedef void (*StrokeDone)(struct bContext *C, struct PaintStroke *stroke); struct PaintStroke *paint_stroke_new(struct bContext *C, - StrokeGetLocation get_location, StrokeTestStart test_start, - StrokeUpdateStep update_step, StrokeDone done); + StrokeGetLocation get_location, StrokeTestStart test_start, + StrokeUpdateStep update_step, StrokeDone done); void paint_stroke_free(struct PaintStroke *stroke); int paint_stroke_modal(struct bContext *C, struct wmOperator *op, struct wmEvent *event); @@ -93,6 +93,9 @@ void PAINT_OT_sample_color(struct wmOperatorType *ot); void PAINT_OT_clone_cursor_set(struct wmOperatorType *ot); void PAINT_OT_texture_paint_toggle(struct wmOperatorType *ot); void PAINT_OT_texture_paint_radial_control(struct wmOperatorType *ot); +void PAINT_OT_project_image(struct wmOperatorType *ot); +void PAINT_OT_image_from_view(struct wmOperatorType *ot); + /* paint_utils.c */ int imapaint_pick_face(struct ViewContext *vc, struct Mesh *me, int *mval, unsigned int *index); @@ -107,6 +110,13 @@ void PAINT_OT_face_select_all(struct wmOperatorType *ot); int facemask_paint_poll(struct bContext *C); +/* stroke operator */ +typedef enum wmBrushStrokeMode { + WM_BRUSHSTROKE_NORMAL, + WM_BRUSHSTROKE_INVERT, + WM_BRUSHSTROKE_SMOOTH, +} wmBrushStrokeMode; + /* paint_undo.c */ typedef void (*UndoRestoreCb)(struct bContext *C, struct ListBase *lb); typedef void (*UndoFreeCb)(struct ListBase *lb); diff --git a/source/blender/editors/sculpt_paint/paint_ops.c b/source/blender/editors/sculpt_paint/paint_ops.c index b43a78eb226..5d52b0a3272 100644 --- a/source/blender/editors/sculpt_paint/paint_ops.c +++ b/source/blender/editors/sculpt_paint/paint_ops.c @@ -19,7 +19,6 @@ * ***** END GPL LICENSE BLOCK ***** */ -#include "DNA_brush_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" @@ -27,7 +26,6 @@ #include "BKE_context.h" #include "BKE_paint.h" -#include "ED_sculpt.h" #include "ED_screen.h" #include "UI_resources.h" @@ -36,48 +34,78 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_enum_types.h" #include "paint_intern.h" #include "sculpt_intern.h" #include <string.h> +//#include <stdio.h> /* Brush operators */ static int brush_add_exec(bContext *C, wmOperator *op) { /*int type = RNA_enum_get(op->ptr, "type");*/ - Brush *br = NULL; + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *br = paint_brush(paint); - br = add_brush("Brush"); + if (br) + br = copy_brush(br); + else + br = add_brush("Brush"); - if(br) - paint_brush_set(paint_get_active(CTX_data_scene(C)), br); + paint_brush_set(paint_get_active(CTX_data_scene(C)), br); return OPERATOR_FINISHED; } -static EnumPropertyItem brush_type_items[] = { - {OB_MODE_SCULPT, "SCULPT", ICON_SCULPTMODE_HLT, "Sculpt", ""}, - {OB_MODE_VERTEX_PAINT, "VERTEX_PAINT", ICON_VPAINT_HLT, "Vertex Paint", ""}, - {OB_MODE_WEIGHT_PAINT, "WEIGHT_PAINT", ICON_WPAINT_HLT, "Weight Paint", ""}, - {OB_MODE_TEXTURE_PAINT, "TEXTURE_PAINT", ICON_TPAINT_HLT, "Texture Paint", ""}, - {0, NULL, 0, NULL, NULL}}; - void BRUSH_OT_add(wmOperatorType *ot) { /* identifiers */ ot->name= "Add Brush"; - ot->description= "Add brush by mode type"; + ot->description= "Add brush by mode type"; ot->idname= "BRUSH_OT_add"; /* api callbacks */ ot->exec= brush_add_exec; /* flags */ - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; +} + + +static int brush_scale_size_exec(bContext *C, wmOperator *op) +{ + /*int type = RNA_enum_get(op->ptr, "type");*/ + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *br = paint_brush(paint); + float factor = RNA_float_get(op->ptr, "scalar"); + + if (br) { + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) { + U.sculpt_paint_unified_size *= factor; + } + else { + br->size *= factor; + } + } + + return OPERATOR_FINISHED; +} + +void BRUSH_OT_scale_size(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Scale Sculpt/Paint Brush Size"; + ot->description= "Change brush size by a scalar"; + ot->idname= "BRUSH_OT_scale_size"; + + /* api callbacks */ + ot->exec= brush_scale_size_exec; + + /* flags */ + ot->flag= OPTYPE_UNDO; - RNA_def_enum(ot->srna, "type", brush_type_items, OB_MODE_VERTEX_PAINT, "Type", "Which paint mode to create the brush for."); + RNA_def_float(ot->srna, "scalar", 1, 0, 2, "Scalar", "Factor to scale brush size by", 0, 2); } static int vertex_color_set_exec(bContext *C, wmOperator *op) @@ -111,8 +139,10 @@ void ED_operatortypes_paint(void) { /* brush */ WM_operatortype_append(BRUSH_OT_add); + WM_operatortype_append(BRUSH_OT_scale_size); WM_operatortype_append(BRUSH_OT_curve_preset); + /* image */ WM_operatortype_append(PAINT_OT_texture_paint_toggle); WM_operatortype_append(PAINT_OT_texture_paint_radial_control); @@ -121,6 +151,9 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_sample_color); WM_operatortype_append(PAINT_OT_grab_clone); WM_operatortype_append(PAINT_OT_clone_cursor_set); + WM_operatortype_append(PAINT_OT_project_image); + WM_operatortype_append(PAINT_OT_image_from_view); + /* weight */ WM_operatortype_append(PAINT_OT_weight_paint_toggle); @@ -141,56 +174,53 @@ void ED_operatortypes_paint(void) WM_operatortype_append(PAINT_OT_face_select_all); } + static void ed_keymap_paint_brush_switch(wmKeyMap *keymap, const char *path) { wmKeyMapItem *kmi; kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ONEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 0); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", TWOKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 1); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", THREEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 2); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FOURKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 3); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", FIVEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 4); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SIXKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 5); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", SEVENKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 6); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", EIGHTKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 7); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", NINEKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 8); kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", ZEROKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); + RNA_string_set(kmi->ptr, "data_path", path); RNA_int_set(kmi->ptr, "value", 9); } static void ed_keymap_paint_brush_size(wmKeyMap *keymap, const char *path) { wmKeyMapItem *kmi; - - kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", LEFTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); - RNA_int_set(kmi->ptr, "value", -20); - RNA_boolean_set(kmi->ptr, "relative", 1); - - kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", RIGHTBRACKETKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", path); - RNA_int_set(kmi->ptr, "value", 20); - RNA_boolean_set(kmi->ptr, "relative", 1); -} + + kmi= WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", LEFTBRACKETKEY, KM_PRESS, 0, 0); + RNA_float_set(kmi->ptr, "scalar", 0.9); + + kmi= WM_keymap_add_item(keymap, "BRUSH_OT_scale_size", RIGHTBRACKETKEY, KM_PRESS, 0, 0); + RNA_float_set(kmi->ptr, "scalar", 10.0/9.0); // 1.1111.... +} void ED_keymap_paint(wmKeyConfig *keyconf) { @@ -202,12 +232,15 @@ void ED_keymap_paint(wmKeyConfig *keyconf) keymap= WM_keymap_find(keyconf, "Sculpt", 0, 0); keymap->poll= sculpt_poll; - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, 0, 0)->ptr, "mode", WM_RADIALCONTROL_SIZE); RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_RADIALCONTROL_STRENGTH); - RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_RADIALCONTROL_ANGLE); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_radial_control", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_RADIALCONTROL_ANGLE); - WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "mode", WM_BRUSHSTROKE_NORMAL); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "mode", WM_BRUSHSTROKE_INVERT); + RNA_enum_set(WM_keymap_add_item(keymap, "SCULPT_OT_brush_stroke", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "mode", WM_BRUSHSTROKE_SMOOTH); + + //stroke_mode_modal_keymap(keyconf); for(i=0; i<=5; i++) RNA_int_set(WM_keymap_add_item(keymap, "OBJECT_OT_subdivision_set", ZEROKEY+i, KM_PRESS, KM_CTRL, 0)->ptr, "level", i); @@ -223,44 +256,44 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_switch(keymap, "tool_settings.sculpt.active_brush_index"); ed_keymap_paint_brush_size(keymap, "tool_settings.sculpt.brush.size"); - + + /* */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_anchor"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_anchor"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_smooth_stroke"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_smooth_stroke"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", RKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_rake"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_rake"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", AKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.brush.use_airbrush"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.brush.use_airbrush"); /* brush switching */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", DKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Draw"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", SKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Smooth"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Pinch"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", GKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Grab"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", LKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Layer"); - + kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", TKEY, KM_PRESS, KM_SHIFT, 0); // was just T in 2.4x - RNA_string_set(kmi->ptr, "path", "tool_settings.sculpt.active_brush_name"); + RNA_string_set(kmi->ptr, "data_path", "tool_settings.sculpt.active_brush_name"); RNA_string_set(kmi->ptr, "value", "Flatten"); - /* Vertex Paint mode */ keymap= WM_keymap_find(keyconf, "Vertex Paint", 0, 0); @@ -278,7 +311,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.vertex_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "vertex_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "vertex_paint_object.data.use_paint_mask"); /* Weight Paint mode */ keymap= WM_keymap_find(keyconf, "Weight Paint", 0, 0); @@ -296,7 +329,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.weight_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "weight_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "weight_paint_object.data.use_paint_mask"); WM_keymap_verify_item(keymap, "PAINT_OT_weight_from_bones", WKEY, KM_PRESS, 0, 0); @@ -316,7 +349,7 @@ void ED_keymap_paint(wmKeyConfig *keyconf) ed_keymap_paint_brush_size(keymap, "tool_settings.image_paint.brush.size"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", MKEY, KM_PRESS, 0, 0); /* mask toggle */ - RNA_string_set(kmi->ptr, "path", "texture_paint_object.data.use_paint_mask"); + RNA_string_set(kmi->ptr, "data_path", "texture_paint_object.data.use_paint_mask"); /* face-mask mode */ keymap= WM_keymap_find(keyconf, "Face Mask", 0, 0); diff --git a/source/blender/editors/sculpt_paint/paint_stroke.c b/source/blender/editors/sculpt_paint/paint_stroke.c index 2adda475866..7b8d7c4b7ef 100644 --- a/source/blender/editors/sculpt_paint/paint_stroke.c +++ b/source/blender/editors/sculpt_paint/paint_stroke.c @@ -20,7 +20,7 @@ * * The Original Code is: all of this file. * - * Contributor(s): none yet. + * Contributor(s): Jason Wilkins, Tom Musgrove. * * ***** END GPL LICENSE BLOCK ***** * @@ -28,22 +28,20 @@ #include "MEM_guardedalloc.h" -#include "DNA_brush_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "RNA_access.h" #include "BKE_context.h" #include "BKE_paint.h" +#include "BKE_brush.h" #include "WM_api.h" #include "WM_types.h" #include "BLI_math.h" -#include "PIL_time.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -52,6 +50,9 @@ #include "ED_view3d.h" #include "paint_intern.h" +#include "sculpt_intern.h" // XXX, for expedience in getting this working, refactor later (or this just shows that this needs unification) + +#include "BKE_image.h" #include <float.h> #include <math.h> @@ -99,54 +100,748 @@ static void paint_draw_smooth_stroke(bContext *C, int x, int y, void *customdata glDisable(GL_LINE_SMOOTH); } -static void paint_draw_cursor(bContext *C, int x, int y, void *customdata) +#if 0 + +// grid texture for testing + +#define GRID_WIDTH 8 +#define GRID_LENGTH 8 + +#define W (0xFFFFFFFF) +#define G (0x00888888) +#define E (0xE1E1E1E1) +#define C (0xC3C3C3C3) +#define O (0xB4B4B4B4) +#define Q (0xA9A9A9A9) + +static unsigned grid_texture0[256] = +{ + W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,G,G,G,G,G,G,G,G,G,G,G,G,G,G,W, + W,W,W,W,W,W,W,W,W,W,W,W,W,W,W,W, +}; + +static unsigned grid_texture1[64] = { - Paint *paint = paint_get_active(CTX_data_scene(C)); - Brush *brush = paint_brush(paint); + C,C,C,C,C,C,C,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,G,G,G,G,G,G,C, + C,C,C,C,C,C,C,C, +}; + +static unsigned grid_texture2[16] = +{ + O,O,O,O, + O,G,G,O, + O,G,G,O, + O,O,O,O, +}; - if(!(paint->flags & PAINT_SHOW_BRUSH)) - return; +static unsigned grid_texture3[4] = +{ + Q,Q, + Q,Q, +}; - glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col); - glEnable(GL_LINE_SMOOTH); - glEnable(GL_BLEND); +static unsigned grid_texture4[1] = +{ + Q, +}; - glTranslatef((float)x, (float)y, 0.0f); - glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40); - glTranslatef((float)-x, (float)-y, 0.0f); +#undef W +#undef G +#undef E +#undef C +#undef O +#undef Q - glDisable(GL_BLEND); - glDisable(GL_LINE_SMOOTH); +static void load_grid() +{ + static GLuint overlay_texture; + + if (!overlay_texture) { + //GLfloat largest_supported_anisotropy; + + glGenTextures(1, &overlay_texture); + glBindTexture(GL_TEXTURE_2D, overlay_texture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture0); + glTexImage2D(GL_TEXTURE_2D, 1, GL_RGB, 8, 8, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture1); + glTexImage2D(GL_TEXTURE_2D, 2, GL_RGB, 4, 4, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture2); + glTexImage2D(GL_TEXTURE_2D, 3, GL_RGB, 2, 2, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture3); + glTexImage2D(GL_TEXTURE_2D, 4, GL_RGB, 1, 1, 0, GL_RGBA, GL_UNSIGNED_BYTE, grid_texture4); + glEnable(GL_TEXTURE_2D); + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR); + + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + //glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + //glGetFloatv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &largest_supported_anisotropy); + //glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy); + } +} + +#endif + +extern float get_tex_pixel(Brush* br, float u, float v); + +typedef struct Snapshot { + float size[3]; + float ofs[3]; + float rot; + int brush_size; + int winx; + int winy; + int brush_map_mode; + int curve_changed_timestamp; +} Snapshot; + +static int same_snap(Snapshot* snap, Brush* brush, ViewContext* vc) +{ + MTex* mtex = &brush->mtex; + + return + (mtex->tex && + mtex->ofs[0] == snap->ofs[0] && + mtex->ofs[1] == snap->ofs[1] && + mtex->ofs[2] == snap->ofs[2] && + mtex->size[0] == snap->size[0] && + mtex->size[1] == snap->size[1] && + mtex->size[2] == snap->size[2] && + mtex->rot == snap->rot) && + ((mtex->brush_map_mode == MTEX_MAP_MODE_FIXED && sculpt_get_brush_size(brush) <= snap->brush_size) || (sculpt_get_brush_size(brush) == snap->brush_size)) && // make brush smaller shouldn't cause a resample + mtex->brush_map_mode == snap->brush_map_mode && + vc->ar->winx == snap->winx && + vc->ar->winy == snap->winy; +} + +static void make_snap(Snapshot* snap, Brush* brush, ViewContext* vc) +{ + if (brush->mtex.tex) { + snap->brush_map_mode = brush->mtex.brush_map_mode; + copy_v3_v3(snap->ofs, brush->mtex.ofs); + copy_v3_v3(snap->size, brush->mtex.size); + snap->rot = brush->mtex.rot; + } + else { + snap->brush_map_mode = -1; + snap->ofs[0]= snap->ofs[1]= snap->ofs[2]= -1; + snap->size[0]= snap->size[1]= snap->size[2]= -1; + snap->rot = -1; + } + + snap->brush_size = sculpt_get_brush_size(brush); + snap->winx = vc->ar->winx; + snap->winy = vc->ar->winy; +} + +int load_tex(Sculpt *sd, Brush* br, ViewContext* vc) +{ + static GLuint overlay_texture = 0; + static int init = 0; + static int tex_changed_timestamp = -1; + static int curve_changed_timestamp = -1; + static Snapshot snap; + static int old_size = -1; + + GLubyte* buffer = 0; + + int size; + int j; + int refresh; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED && !br->mtex.tex) return 0; + + refresh = + !overlay_texture || + (br->mtex.tex && + (!br->mtex.tex->preview || + br->mtex.tex->preview->changed_timestamp[0] != tex_changed_timestamp)) || + !br->curve || + br->curve->changed_timestamp != curve_changed_timestamp || + !same_snap(&snap, br, vc); + + if (refresh) { + if (br->mtex.tex && br->mtex.tex->preview) + tex_changed_timestamp = br->mtex.tex->preview->changed_timestamp[0]; + + if (br->curve) + curve_changed_timestamp = br->curve->changed_timestamp; + + make_snap(&snap, br, vc); + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + int s = sculpt_get_brush_size(br); + int r = 1; + + for (s >>= 1; s > 0; s >>= 1) + r++; + + size = (1<<r); + + if (size < 256) + size = 256; + + if (size < old_size) + size = old_size; + } + else + size = 512; + + if (old_size != size) { + if (overlay_texture) { + glDeleteTextures(1, &overlay_texture); + overlay_texture = 0; + } + + init = 0; + + old_size = size; + } + + buffer = MEM_mallocN(sizeof(GLubyte)*size*size, "load_tex"); + + #pragma omp parallel for schedule(static) if (sd->flags & SCULPT_USE_OPENMP) + for (j= 0; j < size; j++) { + int i; + float y; + float len; + + for (i= 0; i < size; i++) { + + // largely duplicated from tex_strength + + const float rotation = -br->mtex.rot; + float diameter = sculpt_get_brush_size(br); + int index = j*size + i; + float x; + float avg; + + x = (float)i/size; + y = (float)j/size; + + x -= 0.5f; + y -= 0.5f; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED) { + x *= vc->ar->winx / diameter; + y *= vc->ar->winy / diameter; + } + else { + x *= 2; + y *= 2; + } + + len = sqrtf(x*x + y*y); + + if ((br->mtex.brush_map_mode == MTEX_MAP_MODE_TILED) || len <= 1) { + /* it is probably worth optimizing for those cases where + the texture is not rotated by skipping the calls to + atan2, sqrtf, sin, and cos. */ + if (br->mtex.tex && (rotation > 0.001 || rotation < -0.001)) { + const float angle = atan2(y, x) + rotation; + + x = len * cos(angle); + y = len * sin(angle); + } + + x *= br->mtex.size[0]; + y *= br->mtex.size[1]; + + x += br->mtex.ofs[0]; + y += br->mtex.ofs[1]; + + avg = br->mtex.tex ? get_tex_pixel(br, x, y) : 1; + + avg += br->texture_sample_bias; + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) + avg *= brush_curve_strength(br, len, 1); /* Falloff curve */ + + buffer[index] = (GLubyte)(255*avg); + } + else { + buffer[index] = 0; + } + } + } + + if (!overlay_texture) + glGenTextures(1, &overlay_texture); + } + else { + size= old_size; + } + + glBindTexture(GL_TEXTURE_2D, overlay_texture); + + if (refresh) { + if (!init) { + glTexImage2D(GL_TEXTURE_2D, 0, GL_ALPHA, size, size, 0, GL_ALPHA, GL_UNSIGNED_BYTE, buffer); + init = 1; + } + else { + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, size, size, GL_ALPHA, GL_UNSIGNED_BYTE, buffer); + } + + if (buffer) + MEM_freeN(buffer); + } + + glEnable(GL_TEXTURE_2D); + + glTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + if (br->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + } + + return 1; +} + +/* Convert a point in model coordinates to 2D screen coordinates. */ +// XXX duplicated from sculpt.c, deal with this later. +static void projectf(bglMats *mats, const float v[3], float p[2]) +{ + double ux, uy, uz; + + gluProject(v[0],v[1],v[2], mats->modelview, mats->projection, + (GLint *)mats->viewport, &ux, &uy, &uz); + p[0]= ux; + p[1]= uy; +} + +static int project_brush_radius(RegionView3D* rv3d, float radius, float location[3], bglMats* mats) +{ + float view[3], nonortho[3], ortho[3], offset[3], p1[2], p2[2]; + + viewvector(rv3d, location, view); + + // create a vector that is not orthogonal to view + + if (fabsf(view[0]) < 0.1) { + nonortho[0] = view[0] + 1; + nonortho[1] = view[1]; + nonortho[2] = view[2]; + } + else if (fabsf(view[1]) < 0.1) { + nonortho[0] = view[0]; + nonortho[1] = view[1] + 1; + nonortho[2] = view[2]; + } + else { + nonortho[0] = view[0]; + nonortho[1] = view[1]; + nonortho[2] = view[2] + 1; + } + + // get a vector in the plane of the view + cross_v3_v3v3(ortho, nonortho, view); + normalize_v3(ortho); + + // make a point on the surface of the brush tagent to the view + mul_v3_fl(ortho, radius); + add_v3_v3v3(offset, location, ortho); + + // project the center of the brush, and the tagent point to the view onto the screen + projectf(mats, location, p1); + projectf(mats, offset, p2); + + // the distance between these points is the size of the projected brush in pixels + return len_v2v2(p1, p2); +} + +int sculpt_get_brush_geometry(bContext* C, int x, int y, int* pixel_radius, float location[3], float modelview[16], float projection[16], int viewport[4]) +{ + struct PaintStroke *stroke; + float window[2]; + int hit; + + stroke = paint_stroke_new(C, NULL, NULL, NULL, NULL); + + window[0] = x + stroke->vc.ar->winrct.xmin; + window[1] = y + stroke->vc.ar->winrct.ymin; + + memcpy(modelview, stroke->vc.rv3d->viewmat, sizeof(float[16])); + memcpy(projection, stroke->vc.rv3d->winmat, sizeof(float[16])); + memcpy(viewport, stroke->mats.viewport, sizeof(int[4])); + + if (stroke->vc.obact->sculpt && stroke->vc.obact->sculpt->pbvh && sculpt_stroke_get_location(C, stroke, location, window)) { + *pixel_radius = project_brush_radius(stroke->vc.rv3d, sculpt_get_brush_unprojected_radius(stroke->brush), location, &stroke->mats); + + if (*pixel_radius == 0) + *pixel_radius = sculpt_get_brush_size(stroke->brush); + + mul_m4_v3(stroke->vc.obact->sculpt->ob->obmat, location); + + hit = 1; + } + else { + Sculpt* sd = CTX_data_tool_settings(C)->sculpt; + Brush* brush = paint_brush(&sd->paint); + + *pixel_radius = sculpt_get_brush_size(brush); + hit = 0; + } + + paint_stroke_free(stroke); + + return hit; +} + +// XXX duplicated from sculpt.c +float unproject_brush_radius(Object *ob, ViewContext *vc, float center[3], float offset) +{ + float delta[3], scale, loc[3]; + + mul_v3_m4v3(loc, ob->obmat, center); + + initgrabz(vc->rv3d, loc[0], loc[1], loc[2]); + window_to_3d_delta(vc->ar, delta, offset, 0); + + scale= fabsf(mat4_to_scale(ob->obmat)); + scale= (scale == 0.0f)? 1.0f: scale; + + return len_v3(delta)/scale; +} + +// XXX paint cursor now does a lot of the same work that is needed during a sculpt stroke +// problem: all this stuff was not intended to be used at this point, so things feel a +// bit hacked. I've put lots of stuff in Brush that probably better goes in Paint +// Functions should be refactored so that they can be used between sculpt.c and +// paint_stroke.c clearly and optimally and the lines of communication between the +// two modules should be more clearly defined. +static void paint_draw_cursor(bContext *C, int x, int y, void *unused) +{ + ViewContext vc; + + (void)unused; + + view3d_set_viewcontext(C, &vc); + + if (vc.obact->sculpt) { + Paint *paint = paint_get_active(CTX_data_scene(C)); + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + Brush *brush = paint_brush(paint); + + int pixel_radius, viewport[4]; + float location[3], modelview[16], projection[16]; + + int hit; + + int flip; + int sign; + + float* col; + float alpha; + + float visual_strength = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + + const float min_alpha = 0.20f; + const float max_alpha = 0.80f; + + { + const float u = 0.5f; + const float v = 1 - u; + const float r = 20; + + const float dx = sd->last_x - x; + const float dy = sd->last_y - y; + + if (dx*dx + dy*dy >= r*r) { + sd->last_angle = atan2(dx, dy); + + sd->last_x = u*sd->last_x + v*x; + sd->last_y = u*sd->last_y + v*y; + } + } + + if(!sculpt_get_lock_brush_size(brush) && !(paint->flags & PAINT_SHOW_BRUSH)) + return; + + hit = sculpt_get_brush_geometry(C, x, y, &pixel_radius, location, modelview, projection, viewport); + + if (sculpt_get_lock_brush_size(brush)) + sculpt_set_brush_size(brush, pixel_radius); + + // XXX: no way currently to know state of pen flip or invert key modifier without starting a stroke + flip = 1; + + sign = flip * ((brush->flag & BRUSH_DIR_IN)? -1 : 1); + + if (sign < 0 && ELEM4(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_PINCH)) + col = brush->sub_col; + else + col = brush->add_col; + + alpha = (paint->flags & PAINT_SHOW_BRUSH_ON_SURFACE) ? min_alpha + (visual_strength*(max_alpha-min_alpha)) : 0.50f; + + if (ELEM(brush->mtex.brush_map_mode, MTEX_MAP_MODE_FIXED, MTEX_MAP_MODE_TILED) && brush->flag & BRUSH_TEXTURE_OVERLAY) { + glPushAttrib( + GL_COLOR_BUFFER_BIT| + GL_CURRENT_BIT| + GL_DEPTH_BUFFER_BIT| + GL_ENABLE_BIT| + GL_LINE_BIT| + GL_POLYGON_BIT| + GL_STENCIL_BUFFER_BIT| + GL_TRANSFORM_BIT| + GL_VIEWPORT_BIT| + GL_TEXTURE_BIT); + + if (load_tex(sd, brush, &vc)) { + glEnable(GL_BLEND); + + glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + glDepthMask(GL_FALSE); + glDepthFunc(GL_ALWAYS); + + glMatrixMode(GL_TEXTURE); + glPushMatrix(); + glLoadIdentity(); + + if (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + glTranslatef(0.5f, 0.5f, 0); + + if (brush->flag & BRUSH_RAKE) { + glRotatef(sd->last_angle*(float)(180.0/M_PI), 0, 0, 1); + } + else { + glRotatef(sd->special_rotation*(float)(180.0/M_PI), 0, 0, 1); + } + + glTranslatef(-0.5f, -0.5f, 0); + + if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) { + glTranslatef(0.5f, 0.5f, 0); + glScalef(1.0f/sd->pressure_value, 1.0f/sd->pressure_value, 1); + glTranslatef(-0.5f, -0.5f, 0); + } + } + + glColor4f( + U.sculpt_paint_overlay_col[0], + U.sculpt_paint_overlay_col[1], + U.sculpt_paint_overlay_col[2], + brush->texture_overlay_alpha / 100.0f); + + glBegin(GL_QUADS); + if (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) { + if (sd->draw_anchored) { + glTexCoord2f(0, 0); + glVertex2f(sd->anchored_initial_mouse[0]-sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]-sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(1, 0); + glVertex2f(sd->anchored_initial_mouse[0]+sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]-sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(1, 1); + glVertex2f(sd->anchored_initial_mouse[0]+sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]+sd->anchored_size - vc.ar->winrct.ymin); + + glTexCoord2f(0, 1); + glVertex2f(sd->anchored_initial_mouse[0]-sd->anchored_size - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1]+sd->anchored_size - vc.ar->winrct.ymin); + } + else { + glTexCoord2f(0, 0); + glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + + glTexCoord2f(1, 0); + glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y-sculpt_get_brush_size(brush)); + + glTexCoord2f(1, 1); + glVertex2f((float)x+sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + + glTexCoord2f(0, 1); + glVertex2f((float)x-sculpt_get_brush_size(brush), (float)y+sculpt_get_brush_size(brush)); + } + } + else { + glTexCoord2f(0, 0); + glVertex2f(0, 0); + + glTexCoord2f(1, 0); + glVertex2f(viewport[2], 0); + + glTexCoord2f(1, 1); + glVertex2f(viewport[2], viewport[3]); + + glTexCoord2f(0, 1); + glVertex2f(0, viewport[3]); + } + glEnd(); + + glPopMatrix(); + } + + glPopAttrib(); + } + + if (hit) { + float unprojected_radius; + + // XXX duplicated from brush_strength & paint_stroke_add_step, refactor later + //wmEvent* event = CTX_wm_window(C)->eventstate; + + if (sd->draw_pressure && (brush->flag & BRUSH_ALPHA_PRESSURE)) + visual_strength *= sd->pressure_value; + + // don't show effect of strength past the soft limit + if (visual_strength > 1) visual_strength = 1; + + if (sd->draw_anchored) { + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, sd->anchored_size); + } + else { + if (brush->flag & BRUSH_ANCHORED) + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, 8); + else + unprojected_radius = unproject_brush_radius(CTX_data_active_object(C), &vc, location, sculpt_get_brush_size(brush)); + } + + if (sd->draw_pressure && (brush->flag & BRUSH_SIZE_PRESSURE)) + unprojected_radius *= sd->pressure_value; + + if (!sculpt_get_lock_brush_size(brush)) + sculpt_set_brush_unprojected_radius(brush, unprojected_radius); + + if(!(paint->flags & PAINT_SHOW_BRUSH)) + return; + + } + + glPushAttrib( + GL_COLOR_BUFFER_BIT| + GL_CURRENT_BIT| + GL_DEPTH_BUFFER_BIT| + GL_ENABLE_BIT| + GL_LINE_BIT| + GL_POLYGON_BIT| + GL_STENCIL_BUFFER_BIT| + GL_TRANSFORM_BIT| + GL_VIEWPORT_BIT| + GL_TEXTURE_BIT); + + glColor4f(col[0], col[1], col[2], alpha); + + glEnable(GL_BLEND); + + glEnable(GL_LINE_SMOOTH); + + if (sd->draw_anchored) { + glTranslatef(sd->anchored_initial_mouse[0] - vc.ar->winrct.xmin, sd->anchored_initial_mouse[1] - vc.ar->winrct.ymin, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, sd->anchored_size, 40); + glTranslatef(-sd->anchored_initial_mouse[0] + vc.ar->winrct.xmin, -sd->anchored_initial_mouse[1] + vc.ar->winrct.xmin, 0.0f); + } + else { + glTranslatef((float)x, (float)y, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, sculpt_get_brush_size(brush), 40); + glTranslatef(-(float)x, -(float)y, 0.0f); + } + + glPopAttrib(); + } + else { + Paint *paint = paint_get_active(CTX_data_scene(C)); + Brush *brush = paint_brush(paint); + + if(!(paint->flags & PAINT_SHOW_BRUSH)) + return; + + glColor4ubv(paint_get_active(CTX_data_scene(C))->paint_cursor_col); + glEnable(GL_LINE_SMOOTH); + glEnable(GL_BLEND); + + glTranslatef((float)x, (float)y, 0.0f); + glutil_draw_lined_arc(0.0, M_PI*2.0, brush->size, 40); // XXX: for now use the brushes size instead of potentially using the unified size because the feature has been enabled for sculpt + glTranslatef((float)-x, (float)-y, 0.0f); + + glDisable(GL_BLEND); + glDisable(GL_LINE_SMOOTH); + } } /* Put the location of the next stroke dot into the stroke RNA and apply it to the mesh */ -static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse[2]) +static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *event, float mouse_in[2]) { + Paint *paint = paint_get_active(CTX_data_scene(C)); // XXX + Brush *brush = paint_brush(paint); // XXX + + float mouse[2]; + PointerRNA itemptr; - float pressure = 1; - float center[3] = {0, 0, 0}; - int flip= event->shift?1:0; + + float location[3]; + + float pressure; + int pen_flip; + + ViewContext vc; // XXX + PaintStroke *stroke = op->customdata; - /* XXX: can remove the if statement once all modes have this */ - if(stroke->get_location) - stroke->get_location(C, stroke, center, mouse); + view3d_set_viewcontext(C, &vc); // XXX /* Tablet */ if(event->custom == EVT_DATA_TABLET) { wmTabletData *wmtab= event->customdata; - if(wmtab->Active != EVT_TABLET_NONE) - pressure= wmtab->Pressure; - if(wmtab->Active == EVT_TABLET_ERASER) - flip = 1; + + pressure = (wmtab->Active != EVT_TABLET_NONE) ? wmtab->Pressure : 1; + pen_flip = (wmtab->Active == EVT_TABLET_ERASER); + } + else { + pressure = 1; + pen_flip = 0; } - + + // XXX: temporary check for sculpt mode until things are more unified + if (vc.obact->sculpt) { + float delta[3]; + + brush_jitter_pos(brush, mouse_in, mouse); + + // XXX: meh, this is round about because brush_jitter_pos isn't written in the best way to be reused here + if (brush->flag & BRUSH_JITTER_PRESSURE) { + sub_v3_v3v3(delta, mouse, mouse_in); + mul_v3_fl(delta, pressure); + add_v3_v3v3(mouse, mouse_in, delta); + } + } + else + copy_v3_v3(mouse, mouse_in); + + /* XXX: can remove the if statement once all modes have this */ + if(stroke->get_location) + stroke->get_location(C, stroke, location, mouse); + else + zero_v3(location); + /* Add to stroke */ RNA_collection_add(op->ptr, "stroke", &itemptr); - RNA_float_set_array(&itemptr, "location", center); - RNA_float_set_array(&itemptr, "mouse", mouse); - RNA_boolean_set(&itemptr, "flip", flip); - RNA_float_set(&itemptr, "pressure", pressure); + + RNA_float_set_array(&itemptr, "location", location); + RNA_float_set_array(&itemptr, "mouse", mouse); + RNA_boolean_set (&itemptr, "pen_flip", pen_flip); + RNA_float_set (&itemptr, "pressure", pressure); stroke->last_mouse_position[0] = mouse[0]; stroke->last_mouse_position[1] = mouse[1]; @@ -157,10 +852,14 @@ static void paint_brush_stroke_add_step(bContext *C, wmOperator *op, wmEvent *ev /* Returns zero if no sculpt changes should be made, non-zero otherwise */ static int paint_smooth_stroke(PaintStroke *stroke, float output[2], wmEvent *event) { - output[0] = event->x; + output[0] = event->x; output[1] = event->y; - if(stroke->brush->flag & BRUSH_SMOOTH_STROKE && stroke->brush->sculpt_tool != SCULPT_TOOL_GRAB) { + if ((stroke->brush->flag & BRUSH_SMOOTH_STROKE) && + !ELEM4(stroke->brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_SNAKE_HOOK) && + !(stroke->brush->flag & BRUSH_ANCHORED) && + !(stroke->brush->flag & BRUSH_RESTORE_MESH)) + { float u = stroke->brush->smooth_stroke_factor, v = 1.0 - u; float dx = stroke->last_mouse_position[0] - event->x, dy = stroke->last_mouse_position[1] - event->y; @@ -179,7 +878,9 @@ static int paint_smooth_stroke(PaintStroke *stroke, float output[2], wmEvent *ev /* Returns zero if the stroke dots should not be spaced, non-zero otherwise */ static int paint_space_stroke_enabled(Brush *br) { - return (br->flag & BRUSH_SPACE) && !(br->flag & BRUSH_ANCHORED) && (br->sculpt_tool != SCULPT_TOOL_GRAB); + return (br->flag & BRUSH_SPACE) && + !(br->flag & BRUSH_ANCHORED) && + !ELEM4(br->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_SNAKE_HOOK); } /* For brushes with stroke spacing enabled, moves mouse in steps @@ -190,23 +891,34 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const int cnt = 0; if(paint_space_stroke_enabled(stroke->brush)) { - float mouse[2] = {stroke->last_mouse_position[0], stroke->last_mouse_position[1]}; - float vec[2] = {final_mouse[0] - mouse[0], final_mouse[1] - mouse[1]}; + float mouse[2]; + float vec[2]; float length, scale; - int steps = 0, i; - /* Normalize the vector between the last stroke dot and the goal */ - length = sqrt(vec[0]*vec[0] + vec[1]*vec[1]); + copy_v2_v2(mouse, stroke->last_mouse_position); + sub_v2_v2v2(vec, final_mouse, mouse); + + length = len_v2(vec); if(length > FLT_EPSILON) { - scale = stroke->brush->spacing / length; - vec[0] *= scale; - vec[1] *= scale; + int steps; + int i; + float pressure = 1; + + // XXX duplicate code + if(event->custom == EVT_DATA_TABLET) { + wmTabletData *wmtab= event->customdata; + if(wmtab->Active != EVT_TABLET_NONE) + pressure = stroke->brush->flag & BRUSH_SIZE_PRESSURE ? wmtab->Pressure : 1; + } + + scale = (sculpt_get_brush_size(stroke->brush)*pressure*stroke->brush->spacing/50.0f) / length; + mul_v2_fl(vec, scale); + + steps = (int)(1.0f / scale); - steps = (int)(length / stroke->brush->spacing); for(i = 0; i < steps; ++i, ++cnt) { - mouse[0] += vec[0]; - mouse[1] += vec[1]; + add_v2_v2(mouse, vec); paint_brush_stroke_add_step(C, op, event, mouse); } } @@ -218,10 +930,10 @@ static int paint_space_stroke(bContext *C, wmOperator *op, wmEvent *event, const /**** Public API ****/ PaintStroke *paint_stroke_new(bContext *C, - StrokeGetLocation get_location, - StrokeTestStart test_start, - StrokeUpdateStep update_step, - StrokeDone done) + StrokeGetLocation get_location, + StrokeTestStart test_start, + StrokeUpdateStep update_step, + StrokeDone done) { PaintStroke *stroke = MEM_callocN(sizeof(PaintStroke), "PaintStroke"); @@ -278,21 +990,33 @@ int paint_stroke_modal(bContext *C, wmOperator *op, wmEvent *event) MEM_freeN(stroke); return OPERATOR_FINISHED; } - else if(first || event->type == MOUSEMOVE || (event->type == TIMER && (event->customdata == stroke->timer))) { + else if(first || ELEM(event->type, MOUSEMOVE, INBETWEEN_MOUSEMOVE) || (event->type == TIMER && (event->customdata == stroke->timer))) { if(stroke->stroke_started) { if(paint_smooth_stroke(stroke, mouse, event)) { if(paint_space_stroke_enabled(stroke->brush)) { - if(!paint_space_stroke(C, op, event, mouse)) - ;//ED_region_tag_redraw(ar); + if(!paint_space_stroke(C, op, event, mouse)) { + //ED_region_tag_redraw(ar); + } } - else + else { paint_brush_stroke_add_step(C, op, event, mouse); + } } else ;//ED_region_tag_redraw(ar); } } + /* we want the stroke to have the first daub at the start location instead of waiting till we have moved the space distance */ + if(first && + stroke->stroke_started && + paint_space_stroke_enabled(stroke->brush) && + !(stroke->brush->flag & BRUSH_ANCHORED) && + !(stroke->brush->flag & BRUSH_SMOOTH_STROKE)) + { + paint_brush_stroke_add_step(C, op, event, mouse); + } + return OPERATOR_RUNNING_MODAL; } diff --git a/source/blender/editors/sculpt_paint/paint_utils.c b/source/blender/editors/sculpt_paint/paint_utils.c index 43ab1a9a89e..9baa8e6f95e 100644 --- a/source/blender/editors/sculpt_paint/paint_utils.c +++ b/source/blender/editors/sculpt_paint/paint_utils.c @@ -7,8 +7,6 @@ #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_view3d_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -218,16 +216,20 @@ void BRUSH_OT_curve_preset(wmOperatorType *ot) {CURVE_PRESET_SHARP, "SHARP", 0, "Sharp", ""}, {CURVE_PRESET_SMOOTH, "SMOOTH", 0, "Smooth", ""}, {CURVE_PRESET_MAX, "MAX", 0, "Max", ""}, + {CURVE_PRESET_MID9, "MID9", 0, "Mid9", ""}, + {CURVE_PRESET_LINE, "LINE", 0, "Line", ""}, + {CURVE_PRESET_ROUND, "ROUND", 0, "Round", ""}, + {CURVE_PRESET_ROOT, "ROOT", 0, "Root", ""}, {0, NULL, 0, NULL, NULL}}; ot->name= "Preset"; - ot->description= "Set brush shape"; + ot->description= "Set brush shape"; ot->idname= "BRUSH_OT_curve_preset"; ot->exec= brush_curve_preset_exec; ot->poll= brush_curve_preset_poll; - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= OPTYPE_UNDO; RNA_def_enum(ot->srna, "shape", prop_shape_items, CURVE_PRESET_SMOOTH, "Mode", ""); } @@ -244,7 +246,7 @@ static int paint_select_linked_exec(bContext *C, wmOperator *op) void PAINT_OT_face_select_linked(wmOperatorType *ot) { ot->name= "Select Linked"; - ot->description= "Select linked faces"; + ot->description= "Select linked faces"; ot->idname= "PAINT_OT_face_select_linked"; ot->exec= paint_select_linked_exec; @@ -264,7 +266,7 @@ static int paint_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEvent void PAINT_OT_face_select_linked_pick(wmOperatorType *ot) { ot->name= "Select Linked Pick"; - ot->description= "Select linked faces"; + ot->description= "Select linked faces"; ot->idname= "PAINT_OT_face_select_linked_pick"; ot->invoke= paint_select_linked_pick_invoke; @@ -287,7 +289,7 @@ static int face_select_all_exec(bContext *C, wmOperator *op) void PAINT_OT_face_select_all(wmOperatorType *ot) { ot->name= "Face Selection"; - ot->description= "Change selection for all faces"; + ot->description= "Change selection for all faces"; ot->idname= "PAINT_OT_face_select_all"; ot->exec= face_select_all_exec; diff --git a/source/blender/editors/sculpt_paint/paint_vertex.c b/source/blender/editors/sculpt_paint/paint_vertex.c index 80455d651b0..fde2d95cf29 100644 --- a/source/blender/editors/sculpt_paint/paint_vertex.c +++ b/source/blender/editors/sculpt_paint/paint_vertex.c @@ -47,22 +47,9 @@ #include "BLI_cellalloc.h" #include "BLI_ghash.h" -#include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_brush_types.h" -#include "DNA_cloth_types.h" #include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" #include "DNA_particle_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -92,9 +79,7 @@ #include "ED_armature.h" #include "ED_mesh.h" -#include "ED_object.h" #include "ED_screen.h" -#include "ED_util.h" #include "ED_view3d.h" #include "paint_intern.h" @@ -955,6 +940,7 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) Mesh *me= get_mesh(ob); int index, i; short mval[2] = {0, 0}, sco[2]; + int vgroup= ob->actdef-1; if (!me) return; @@ -1015,7 +1001,6 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) } else { DerivedMesh *dm; - MDeformWeight *dw; MLoop *ml; float w, co[3], fmin = 10000000.0f; int loopi = mpoly->loopstart; @@ -1036,21 +1021,17 @@ void sample_wpaint(Scene *scene, ARegion *ar, View3D *v3d, int mode) fac= MIN4(w1, w2, w3, w4); if(w1==fac) { - dw= defvert_find_index(me->dvert+mface->v1, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v1, vgroup); } else if(w2==fac) { - dw= defvert_find_index(me->dvert+mface->v2, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v2, vgroup); } else if(w3==fac) { - dw= defvert_find_index(me->dvert+mface->v3, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v3, vgroup); } else if(w4==fac) { if(mface->v4) { - dw= defvert_find_index(me->dvert+mface->v4, ob->actdef-1); - if(dw) ts->vgroup_weight= dw->weight; else ts->vgroup_weight= 0.0f; + ts->vgroup_weight= defvert_find_weight(me->dvert+mface->v4, vgroup); >>>>>>> .merge-right.r23146 } } @@ -1185,7 +1166,8 @@ static int set_wpaint(bContext *C, wmOperator *op) /* toggle */ } } else { - mesh_octree_table(ob, NULL, NULL, 'e'); + mesh_octree_table(NULL, NULL, NULL, 'e'); + mesh_mirrtopo_table(NULL, 'e'); } WM_event_add_notifier(C, NC_SCENE|ND_MODE, scene); @@ -1196,8 +1178,6 @@ static int set_wpaint(bContext *C, wmOperator *op) /* toggle */ /* for switching to/from mode */ static int paint_poll_test(bContext *C) { - if(ED_operator_view3d_active(C)==0) - return 0; if(CTX_data_edit_object(C)) return 0; if(CTX_data_active_object(C)==NULL) @@ -1335,7 +1315,7 @@ static char *wpaint_make_validmap(Mesh *me, Object *ob) bPose *pose; bPoseChannel *chan; ArmatureModifierData *amd; - GHash *gh = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp); + GHash *gh = BLI_ghash_new(BLI_ghashutil_strhash, BLI_ghashutil_strcmp, "wpaint_make_validmap gh"); int i = 0, step1=1; /*add all names to a hash table*/ @@ -1814,7 +1794,7 @@ Operator->invoke() Operator->modal() - for every mousemove, apply vertex paint - exit on mouse release, free customdata - (return OPERATOR_FINISHED also removes handler and operator) + (return OPERATOR_FINISHED also removes handler and operator) For future: - implement a stroke event (or mousemove with past positons) @@ -1847,7 +1827,7 @@ static void vpaint_build_poly_facemap(struct VPaintData *vd, Mesh *me, int *origIndex; int i; - vd->arena = BLI_memarena_new(1<<13); + vd->arena = BLI_memarena_new(1<<13, "vpaint tmp"); BLI_memarena_use_calloc(vd->arena); vd->polyfacemap = BLI_memarena_alloc(vd->arena, sizeof(ListBase)*me->totpoly); diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index addbc6d2387..0dddcb578a1 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -22,7 +22,7 @@ * * The Original Code is: all of this file. * - * Contributor(s): none yet. + * Contributor(s): Jason Wilkins, Tom Musgrove. * * ***** END GPL LICENSE BLOCK ***** * @@ -38,21 +38,14 @@ #include "BLI_ghash.h" #include "BLI_pbvh.h" #include "BLI_threads.h" +#include "BLI_editVert.h" +#include "BLI_rand.h" -#include "DNA_armature_types.h" -#include "DNA_brush_types.h" -#include "DNA_image_types.h" #include "DNA_key_types.h" #include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_modifier_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_texture_types.h" -#include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" -#include "DNA_color_types.h" #include "BKE_brush.h" #include "BKE_cdderivedmesh.h" @@ -79,32 +72,90 @@ #include "WM_api.h" #include "WM_types.h" -#include "ED_object.h" #include "ED_screen.h" #include "ED_sculpt.h" -#include "ED_space_api.h" -#include "ED_util.h" #include "ED_view3d.h" +#include "ED_mesh.h" #include "paint_intern.h" #include "sculpt_intern.h" #include "RNA_access.h" #include "RNA_define.h" -#include "IMB_imbuf_types.h" #include "RE_render_ext.h" -#include "RE_shader_ext.h" /*for multitex_ext*/ +#include "RE_shader_ext.h" -#include "GPU_draw.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include <math.h> #include <stdlib.h> #include <string.h> -/* Number of vertices to average in order to determine the flatten distance */ -#define FLATTEN_SAMPLE_SIZE 10 +#ifdef _OPENMP +#include <omp.h> +#endif + +/* ==== FORWARD DEFINITIONS ===== + * + */ + +void ED_sculpt_force_update(bContext *C) +{ + Object *ob= CTX_data_active_object(C); + + if(ob && (ob->mode & OB_MODE_SCULPT)) + multires_force_update(ob); +} + +/* Sculpt mode handles multires differently from regular meshes, but only if + it's the last modifier on the stack and it is not on the first level */ +struct MultiresModifierData *sculpt_multires_active(Scene *scene, Object *ob) +{ + ModifierData *md, *nmd; + + for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { + if(md->type == eModifierType_Multires) { + MultiresModifierData *mmd= (MultiresModifierData*)md; + + /* Check if any of the modifiers after multires are active + * if not it can use the multires struct */ + for(nmd= md->next; nmd; nmd= nmd->next) + if(modifier_isEnabled(scene, nmd, eModifierMode_Realtime)) + break; + + if(!nmd && mmd->sculptlvl > 0) + return mmd; + } + } + + return NULL; +} + +/* Checks whether full update mode (slower) needs to be used to work with modifiers */ +int sculpt_modifiers_active(Scene *scene, Object *ob) +{ + ModifierData *md; + MultiresModifierData *mmd= sculpt_multires_active(scene, ob); + + /* check if there are any modifiers after what we are sculpting, + for a multires modifier with a deform modifier in front, we + do no need to recalculate the modifier stack. note that this + needs to be in sync with ccgDM_use_grid_pbvh! */ + if(mmd) + md= mmd->modifier.next; + else + md= modifiers_getVirtualModifierList(ob); + + /* exception for shape keys because we can edit those */ + for(; md; md= md->next) { + if(modifier_isEnabled(scene, md, eModifierMode_Realtime)) + if(md->type != eModifierType_ShapeKey) + return 1; + } + + return 0; +} /* ===== STRUCTS ===== * @@ -131,9 +182,13 @@ typedef struct StrokeCache { /* Variants */ float radius; + float radius_squared; + //float traced_location[3]; float true_location[3]; float location[3]; - float flip; + + float pen_flip; + float invert; float pressure; float mouse[2]; float bstrength; @@ -152,15 +207,30 @@ typedef struct StrokeCache { Brush *brush; float (*face_norms)[3]; /* Copy of the mesh faces' normals */ - float rotation; /* Texture rotation (radians) for anchored and rake modes */ + float special_rotation; /* Texture rotation (radians) for anchored and rake modes */ int pixel_radius, previous_pixel_radius; - float grab_active_location[8][3]; float grab_delta[3], grab_delta_symmetry[3]; float old_grab_location[3], orig_grab_location[3]; - int symmetry; /* Symmetry index between 0 and 7 */ - float view_normal[3], view_normal_symmetry[3]; - int last_rake[2]; /* Last location of updating rake rotation */ + + int symmetry; /* Symmetry index between 0 and 7 bit combo 0 is Brush only; + 1 is X mirror; 2 is Y mirror; 3 is XY; 4 is Z; 5 is XZ; 6 is YZ; 7 is XYZ */ + int mirror_symmetry_pass; /* the symmetry pass we are currently on between 0 and 7*/ + float true_view_normal[3]; + float view_normal[3]; + float last_area_normal[3]; + float last_center[3]; + int radial_symmetry_pass; + float symm_rot_mat[4][4]; + float symm_rot_mat_inv[4][4]; + float last_rake[2]; /* Last location of updating rake rotation */ int original; + + float vertex_rotation; + + char saved_active_brush_name[24]; + int alt_smooth; + + float plane_trim_squared; } StrokeCache; /* ===== OPENGL ===== @@ -193,9 +263,10 @@ static void projectf(bglMats *mats, const float v[3], float p[2]) /* Get a screen-space rectangle of the modified area */ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, - Object *ob, rcti *rect) + Object *ob, rcti *rect) { StrokeCache *cache = ob->sculpt->cache; + PBVH *pbvh= ob->sculpt->pbvh; float bb_min[3], bb_max[3], pmat[4][4]; int i, j, k; @@ -210,7 +281,10 @@ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, view3d_get_object_project_mat(rv3d, ob, pmat); - BLI_pbvh_redraw_BB(ob->sculpt->tree, bb_min, bb_max); + if(!pbvh) + return 0; + + BLI_pbvh_redraw_BB(pbvh, bb_min, bb_max); rect->xmin = rect->ymin = INT_MAX; rect->xmax = rect->ymax = INT_MIN; @@ -238,13 +312,15 @@ int sculpt_get_redraw_rect(ARegion *ar, RegionView3D *rv3d, } void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, - RegionView3D *rv3d, Object *ob) + RegionView3D *rv3d, Object *ob) { - BoundBox *bb = MEM_callocN(sizeof(BoundBox), "sculpt boundbox"); + PBVH *pbvh= ob->sculpt->pbvh; + BoundBox bb; bglMats mats; StrokeCache *cache = ob->sculpt->cache; rcti rect; - int i; + + memset(&bb, 0, sizeof(BoundBox)); view3d_get_transformation(ar, rv3d, ob, &mats); sculpt_get_redraw_rect(ar, rv3d,ob, &rect); @@ -264,15 +340,12 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, rect.ymax -= 2; #endif - view3d_calculate_clipping(bb, planes, &mats, &rect); - - for(i = 0; i < 16; ++i) - ((float*)planes)[i] = -((float*)planes)[i]; - - MEM_freeN(bb); + view3d_calculate_clipping(&bb, planes, &mats, &rect); + mul_m4_fl(planes, -1.0f); /* clear redraw flag from nodes */ - BLI_pbvh_update(ob->sculpt->tree, PBVH_UpdateRedraw, NULL); + if(pbvh) + BLI_pbvh_update(pbvh, PBVH_UpdateRedraw, NULL); /*clear prect*/ cache->prect.xmin = FLT_MAX; @@ -282,316 +355,345 @@ void sculpt_get_redraw_planes(float planes[4][4], ARegion *ar, } -/************************** Undo *************************/ - -typedef struct SculptUndoNode { - struct SculptUndoNode *next, *prev; +/************************ Brush Testing *******************/ - char idname[MAX_ID_NAME]; /* name instead of pointer*/ - void *node; /* only during push, not valid afterwards! */ +typedef struct SculptBrushTest { + float radius_squared; + float location[3]; + float dist; +} SculptBrushTest; - float (*co)[3]; - short (*no)[3]; - int totvert; +static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test) +{ + test->radius_squared= ss->cache->radius_squared; + copy_v3_v3(test->location, ss->cache->location); +} - /* non-multires */ - int maxvert; /* to verify if totvert it still the same */ - int *index; /* to restore into right location */ +static int sculpt_brush_test(SculptBrushTest *test, float co[3]) +{ + float distsq = len_squared_v3v3(co, test->location); - /* multires */ - int maxgrid; /* same for grid */ - int gridsize; /* same for grid */ - int totgrid; /* to restore into right location */ - int *grids; /* to restore into right location */ -} SculptUndoNode; + if(distsq <= test->radius_squared) { + test->dist = sqrt(distsq); + return 1; + } + else { + return 0; + } +} -static void update_cb(PBVHNode *node, void *data) +static int sculpt_brush_test_sq(SculptBrushTest *test, float co[3]) { - BLI_pbvh_node_mark_update(node); + float distsq = len_squared_v3v3(co, test->location); + + if(distsq <= test->radius_squared) { + test->dist = distsq; + return 1; + } + else { + return 0; + } } -static void sculpt_undo_restore(bContext *C, ListBase *lb) +static int sculpt_brush_test_fast(SculptBrushTest *test, float co[3]) { - Scene *scene = CTX_data_scene(C); - Object *ob = CTX_data_active_object(C); - DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); - SculptSession *ss = ob->sculpt; - SculptUndoNode *unode; - MVert *mvert; - MultiresModifierData *mmd; - int *index; - int i, j, update= 0; + return len_squared_v3v3(co, test->location) <= test->radius_squared; +} - sculpt_update_mesh_elements(scene, ob, 0); +static int sculpt_brush_test_cube(SculptBrushTest *test, float co[3], float local[4][4]) +{ + const static float side = 0.70710678118654752440084436210485; // sqrt(.5); - for(unode=lb->first; unode; unode=unode->next) { - if(!(strcmp(unode->idname, ob->id.name)==0)) - continue; + float local_co[3]; - if(unode->maxvert) { - /* regular mesh restore */ - if(ss->totvert != unode->maxvert) - continue; + mul_v3_m4v3(local_co, local, co); - index= unode->index; - mvert= ss->mvert; + local_co[0] = fabs(local_co[0]); + local_co[1] = fabs(local_co[1]); + local_co[2] = fabs(local_co[2]); - for(i=0; i<unode->totvert; i++) { - swap_v3_v3(mvert[index[i]].co, unode->co[i]); - mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; - } - } - else if(unode->maxgrid) { - /* multires restore */ - DMGridData **grids, *grid; - float (*co)[3]; - int gridsize; + if (local_co[0] <= side && local_co[1] <= side && local_co[2] <= side) { + test->dist = MAX3(local_co[0], local_co[1], local_co[2]) / side; - if(dm->getNumGrids(dm) != unode->maxgrid) - continue; - if(dm->getGridSize(dm) != unode->gridsize) - continue; + return 1; + } + else { + return 0; + } +} - grids= dm->getGridData(dm); - gridsize= dm->getGridSize(dm); +static float frontface(Brush *brush, float sculpt_normal[3], short no[3], float fno[3]) +{ + if (brush->flag & BRUSH_FRONTFACE) { + float dot; - co = unode->co; - for(j=0; j<unode->totgrid; j++) { - grid= grids[unode->grids[j]]; + if (no) { + float tmp[3]; - for(i=0; i<gridsize*gridsize; i++, co++) - swap_v3_v3(grid[i].co, co[0]); - } + normal_short_to_float_v3(tmp, no); + dot= dot_v3v3(tmp, sculpt_normal); + } + else { + dot= dot_v3v3(fno, sculpt_normal); } - update= 1; + return dot > 0 ? dot : 0; } - - if(update) { - if(ss->kb) sculpt_mesh_to_key(ss->ob, ss->kb); - if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); - - /* we update all nodes still, should be more clever, but also - needs to work correct when exiting/entering sculpt mode and - the nodes get recreated, though in that case it could do all */ - BLI_pbvh_search_callback(ss->tree, NULL, NULL, update_cb, NULL); - BLI_pbvh_update(ss->tree, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); - - if((mmd=sculpt_multires_active(ob))) - multires_mark_as_modified(ob); + else { + return 1; } } -static void sculpt_undo_free(ListBase *lb) +#if 0 + +static int sculpt_brush_test_cyl(SculptBrushTest *test, float co[3], float location[3], float an[3]) { - SculptUndoNode *unode; + if (sculpt_brush_test_fast(test, co)) { + float t1[3], t2[3], t3[3], dist; - for(unode=lb->first; unode; unode=unode->next) { - if(unode->co) - MEM_freeN(unode->co); - if(unode->no) - MEM_freeN(unode->no); - if(unode->index) - MEM_freeN(unode->index); - if(unode->grids) - MEM_freeN(unode->grids); - } -} + sub_v3_v3v3(t1, location, co); + sub_v3_v3v3(t2, x2, location); -static SculptUndoNode *sculpt_undo_get_node(SculptSession *ss, PBVHNode *node) -{ - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - SculptUndoNode *unode; + cross_v3_v3v3(t3, an, t1); - if(!lb) - return NULL; + dist = len_v3(t3)/len_v3(t2); - for(unode=lb->first; unode; unode=unode->next) - if(unode->node == node) - return unode; + test->dist = dist; - return NULL; + return 1; + } + + return 0; } -static SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) -{ - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - Object *ob= ss->ob; - SculptUndoNode *unode; - int totvert, allvert, totgrid, maxgrid, gridsize, *grids; +#endif - /* list is manipulated by multiple threads, so we lock */ - BLI_lock_thread(LOCK_CUSTOM1); +/* ===== Sculpting ===== + * + */ + - if((unode= sculpt_undo_get_node(ss, node))) { - BLI_unlock_thread(LOCK_CUSTOM1); - return unode; - } +static float overlapped_curve(Brush* br, float x) +{ + int i; + const int n = 100 / br->spacing; + const float h = br->spacing / 50.0f; + const float x0 = x-1; - unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); - strcpy(unode->idname, ob->id.name); - unode->node= node; + float sum; - BLI_pbvh_node_num_verts(ss->tree, node, &totvert, &allvert); - BLI_pbvh_node_get_grids(ss->tree, node, &grids, &totgrid, - &maxgrid, &gridsize, NULL, NULL); + sum = 0; + for (i= 0; i < n; i++) { + float xx; - unode->totvert= totvert; - /* we will use this while sculpting, is mapalloc slow to access then? */ - unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co"); - unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no"); - undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert); - BLI_addtail(lb, unode); + xx = fabs(x0 + i*h); - if(maxgrid) { - /* multires */ - unode->maxgrid= maxgrid; - unode->totgrid= totgrid; - unode->gridsize= gridsize; - unode->grids= MEM_mapallocN(sizeof(int)*totgrid, "SculptUndoNode.grids"); - } - else { - /* regular mesh */ - unode->maxvert= ss->totvert; - unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); + if (xx < 1.0f) + sum += brush_curve_strength(br, xx, 1); } - BLI_unlock_thread(LOCK_CUSTOM1); + return sum; +} - /* copy threaded, hopefully this is the performance critical part */ - { - PBVHVertexIter vd; +static float integrate_overlap(Brush* br) +{ + int i; + int m= 10; + float g = 1.0f/m; + float overlap; + float max; - BLI_pbvh_vertex_iter_begin(ss->tree, node, vd, PBVH_ITER_ALL) { - copy_v3_v3(unode->co[vd.i], vd.co); - if(vd.no) VECCOPY(unode->no[vd.i], vd.no) - else normal_float_to_short_v3(unode->no[vd.i], vd.fno); - if(vd.vert_indices) unode->index[vd.i]= vd.vert_indices[vd.i]; - } - BLI_pbvh_vertex_iter_end; + overlap= 0; + max= 0; + for(i= 0; i < m; i++) { + overlap = overlapped_curve(br, i*g); + + if (overlap > max) + max = overlap; } - if(unode->grids) - memcpy(unode->grids, grids, sizeof(int)*totgrid); - - return unode; + return max; } -static void sculpt_undo_push_begin(SculptSession *ss, char *name) +/* Uses symm to selectively flip any axis of a coordinate. */ +static void flip_coord(float out[3], float in[3], const char symm) { - undo_paint_push_begin(UNDO_PAINT_MESH, name, - sculpt_undo_restore, sculpt_undo_free); + if(symm & SCULPT_SYMM_X) + out[0]= -in[0]; + else + out[0]= in[0]; + if(symm & SCULPT_SYMM_Y) + out[1]= -in[1]; + else + out[1]= in[1]; + if(symm & SCULPT_SYMM_Z) + out[2]= -in[2]; + else + out[2]= in[2]; } -static void sculpt_undo_push_end(SculptSession *ss) +float calc_overlap(StrokeCache *cache, const char symm, const char axis, const float angle) { - ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); - SculptUndoNode *unode; + float mirror[3]; + float distsq; + float mat[4][4]; + + //flip_coord(mirror, cache->traced_location, symm); + flip_coord(mirror, cache->true_location, symm); - /* we don't need normals in the undo stack */ - for(unode=lb->first; unode; unode=unode->next) { - if(unode->no) { - MEM_freeN(unode->no); - unode->no= NULL; - } - } + unit_m4(mat); + rotate_m4(mat, axis, angle); - undo_paint_push_end(UNDO_PAINT_MESH); -} + mul_m4_v3(mat, mirror); -void ED_sculpt_force_update(bContext *C) -{ - Object *ob= CTX_data_active_object(C); + //distsq = len_squared_v3v3(mirror, cache->traced_location); + distsq = len_squared_v3v3(mirror, cache->true_location); - if(ob && (ob->mode & OB_MODE_SCULPT)) - multires_force_update(ob); + if (distsq <= 4*(cache->radius_squared)) + return (2*(cache->radius) - sqrt(distsq)) / (2*(cache->radius)); + else + return 0; } -/************************ Brush Testing *******************/ - -typedef struct SculptBrushTest { - float radius_squared; - float location[3]; +static float calc_radial_symmetry_feather(Sculpt *sd, StrokeCache *cache, const char symm, const char axis) +{ + int i; + float overlap; - float dist; -} SculptBrushTest; + overlap = 0; + for(i = 1; i < sd->radial_symm[axis-'X']; ++i) { + const float angle = 2*M_PI*i/sd->radial_symm[axis-'X']; + overlap += calc_overlap(cache, symm, axis, angle); + } -static void sculpt_brush_test_init(SculptSession *ss, SculptBrushTest *test) -{ - test->radius_squared= ss->cache->radius*ss->cache->radius; - copy_v3_v3(test->location, ss->cache->location); + return overlap; } -static int sculpt_brush_test(SculptBrushTest *test, float co[3]) +static float calc_symmetry_feather(Sculpt *sd, StrokeCache* cache) { - float distsq, delta[3]; + if (sd->flags & SCULPT_SYMMETRY_FEATHER) { + float overlap; + int symm = cache->symmetry; + int i; - sub_v3_v3v3(delta, co, test->location); - distsq = INPR(delta, delta); + overlap = 0; + for (i = 0; i <= symm; i++) { + if(i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5)))) { - if(distsq < test->radius_squared) { - test->dist = sqrt(distsq); + overlap += calc_overlap(cache, i, 0, 0); + + overlap += calc_radial_symmetry_feather(sd, cache, i, 'X'); + overlap += calc_radial_symmetry_feather(sd, cache, i, 'Y'); + overlap += calc_radial_symmetry_feather(sd, cache, i, 'Z'); + } + } + + return 1/overlap; + } + else { return 1; } - - return 0; } -/* ===== Sculpting ===== - * - */ - /* Return modified brush strength. Includes the direction of the brush, positive values pull vertices, negative values push. Uses tablet pressure and a special multiplier found experimentally to scale the strength factor. */ -static float brush_strength(Sculpt *sd, StrokeCache *cache) +static float brush_strength(Sculpt *sd, StrokeCache *cache, float feather) { Brush *brush = paint_brush(&sd->paint); - /* Primary strength input; square it to make lower values more sensitive */ - float alpha = brush->alpha * brush->alpha; - float dir= brush->flag & BRUSH_DIR_IN ? -1 : 1; - float pressure= 1; - float flip= cache->flip ? -1:1; + /* Primary strength input; square it to make lower values more sensitive */ + float alpha = sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush); + float dir = brush->flag & BRUSH_DIR_IN ? -1 : 1; + float pressure = brush->flag & BRUSH_ALPHA_PRESSURE ? cache->pressure : 1; + float pen_flip = cache->pen_flip ? -1 : 1; + float invert = cache->invert ? -1 : 1; + float accum = integrate_overlap(brush); + float overlap = (brush->flag & BRUSH_SPACE_ATTEN && brush->flag & BRUSH_SPACE && !(brush->flag & BRUSH_ANCHORED)) && (brush->spacing < 100) ? 1.0f/accum : 1; // spacing is integer percentage of radius, divide by 50 to get normalized diameter + float flip = dir * invert * pen_flip; - if(brush->flag & BRUSH_ALPHA_PRESSURE) - pressure *= cache->pressure; - switch(brush->sculpt_tool){ - case SCULPT_TOOL_DRAW: - case SCULPT_TOOL_INFLATE: - case SCULPT_TOOL_CLAY: - case SCULPT_TOOL_FLATTEN: - case SCULPT_TOOL_LAYER: - return alpha * dir * pressure * flip; /*XXX: not sure why? was multiplied by G.vd->grid */; - case SCULPT_TOOL_SMOOTH: - return alpha * 4 * pressure; - case SCULPT_TOOL_PINCH: - return alpha / 2 * dir * pressure * flip; - case SCULPT_TOOL_GRAB: - return 1; - default: - return 0; + case SCULPT_TOOL_CLAY: + case SCULPT_TOOL_CLAY_TUBES: + case SCULPT_TOOL_DRAW: + case SCULPT_TOOL_LAYER: + return alpha * flip * pressure * overlap * feather; + + case SCULPT_TOOL_CREASE: + case SCULPT_TOOL_BLOB: + return alpha * flip * pressure * overlap * feather; + + case SCULPT_TOOL_INFLATE: + if (flip > 0) { + return 0.250f * alpha * flip * pressure * overlap * feather; + } + else { + return 0.125f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_FILL: + case SCULPT_TOOL_SCRAPE: + case SCULPT_TOOL_FLATTEN: + if (flip > 0) { + overlap = (1+overlap) / 2; + return alpha * flip * pressure * overlap * feather; + } + else { + /* reduce strength for DEEPEN, PEAKS, and CONTRAST */ + return 0.5f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_SMOOTH: + return alpha * pressure * feather; + + case SCULPT_TOOL_PINCH: + if (flip > 0) { + return alpha * flip * pressure * overlap * feather; + } + else { + return 0.25f * alpha * flip * pressure * overlap * feather; + } + + case SCULPT_TOOL_NUDGE: + overlap = (1+overlap) / 2; + return alpha * pressure * overlap * feather; + + case SCULPT_TOOL_THUMB: + return alpha*pressure*feather; + + case SCULPT_TOOL_SNAKE_HOOK: + return feather; + + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_ROTATE: + return feather; + + default: + return 0; } } -/* Uses symm to selectively flip any axis of a coordinate. */ -static void flip_coord(float out[3], float in[3], const char symm) +float get_tex_pixel(Brush* br, float u, float v) { - if(symm & SCULPT_SYMM_X) - out[0]= -in[0]; - else - out[0]= in[0]; - if(symm & SCULPT_SYMM_Y) - out[1]= -in[1]; - else - out[1]= in[1]; - if(symm & SCULPT_SYMM_Z) - out[2]= -in[2]; - else - out[2]= in[2]; + TexResult texres; + float co[3]; + int hasrgb; + + co[0] = u; + co[1] = v; + co[2] = 0; + + memset(&texres, 0, sizeof(TexResult)); + hasrgb = multitex_ext(br->mtex.tex, co, NULL, NULL, 1, &texres); + + if (hasrgb & TEX_RGB) + texres.tin = (0.35*texres.tr + 0.45*texres.tg + 0.2*texres.tb)*texres.ta; + + return texres.tin; } +#if 0 + /* Get a pixel from the texcache at (px, py) */ static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) { @@ -602,7 +704,7 @@ static unsigned char get_texcache_pixel(const SculptSession *ss, int px, int py) static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float v) { - int x, y, x2, y2; + unsigned x, y, x2, y2; const int tc_max = ss->texcache_side - 1; float urat, vrat, uopp; @@ -629,76 +731,97 @@ static float get_texcache_pixel_bilinear(const SculptSession *ss, float u, float get_texcache_pixel(ss, x2, y2) * urat) * vrat) / 255.0; } +#endif + /* Return a multiplier for brush strength on a particular vertex. */ static float tex_strength(SculptSession *ss, Brush *br, float *point, const float len) { - MTex *tex = &br->mtex; + MTex *mtex = &br->mtex; float avg= 1; - if(!tex) { + if(!mtex->tex) { avg= 1; } - else if(tex->brush_map_mode == MTEX_MAP_MODE_3D) { + else if(mtex->brush_map_mode == MTEX_MAP_MODE_3D) { float jnk; /* Get strength by feeding the vertex location directly into a texture */ - externtex(tex, point, &avg, + externtex(mtex, point, &avg, &jnk, &jnk, &jnk, &jnk); } else if(ss->texcache) { - const float bsize= ss->cache->pixel_radius * 2; - const float rot= tex->rot + ss->cache->rotation; - int px, py; - float flip[3], point_2d[2]; - - /* If the active area is being applied for symmetry, flip it - across the symmetry axis in order to project it. This insures - that the brush texture will be oriented correctly. */ - copy_v3_v3(flip, point); - flip_coord(flip, flip, ss->cache->symmetry); - projectf(ss->cache->mats, flip, point_2d); - - /* For Tile and Drag modes, get the 2D screen coordinates of the - and scale them up or down to the texture size. */ - if(tex->brush_map_mode == MTEX_MAP_MODE_TILED) { - const int sx= (const int)tex->size[0]; - const int sy= (const int)tex->size[1]; - - float fx= point_2d[0]; - float fy= point_2d[1]; - - float angle= atan2(fy, fx) - rot; - float flen= sqrtf(fx*fx + fy*fy); - - if(rot<0.001 && rot>-0.001) { - px= point_2d[0]; - py= point_2d[1]; - } else { - px= flen * cos(angle) + 2000; - py= flen * sin(angle) + 2000; - } - if(sx != 1) - px %= sx-1; - if(sy != 1) - py %= sy-1; - avg= get_texcache_pixel_bilinear(ss, ss->texcache_side*px/sx, ss->texcache_side*py/sy); - } - else if(tex->brush_map_mode == MTEX_MAP_MODE_FIXED) { - float fx= (point_2d[0] - ss->cache->tex_mouse[0]) / bsize; - float fy= (point_2d[1] - ss->cache->tex_mouse[1]) / bsize; - - float angle= atan2(fy, fx) - rot; - float flen= sqrtf(fx*fx + fy*fy); - - fx = flen * cos(angle) + 0.5; - fy = flen * sin(angle) + 0.5; + float rotation = -mtex->rot; + float x, y, point_2d[3]; + float diameter; + + /* if the active area is being applied for symmetry, flip it + across the symmetry axis and rotate it back to the orignal + position in order to project it. This insures that the + brush texture will be oriented correctly. */ + + flip_coord(point_2d, point, ss->cache->mirror_symmetry_pass); + + if (ss->cache->radial_symmetry_pass) + mul_m4_v3(ss->cache->symm_rot_mat_inv, point_2d); + + projectf(ss->cache->mats, point_2d, point_2d); + + /* if fixed mode, keep coordinates relative to mouse */ + if(mtex->brush_map_mode == MTEX_MAP_MODE_FIXED) { + rotation += ss->cache->special_rotation; + + point_2d[0] -= ss->cache->tex_mouse[0]; + point_2d[1] -= ss->cache->tex_mouse[1]; + + diameter = ss->cache->pixel_radius; // use pressure adjusted size for fixed mode + + x = point_2d[0]; + y = point_2d[1]; + } + else /* else (mtex->brush_map_mode == MTEX_MAP_MODE_TILED), + leave the coordinates relative to the screen */ + { + diameter = sculpt_get_brush_size(br); // use unadjusted size for tiled mode + + x = point_2d[0] - ss->cache->vc->ar->winrct.xmin; + y = point_2d[1] - ss->cache->vc->ar->winrct.ymin; + } + + x /= ss->cache->vc->ar->winx; + y /= ss->cache->vc->ar->winy; - avg= get_texcache_pixel_bilinear(ss, fx * ss->texcache_side, fy * ss->texcache_side); + if (mtex->brush_map_mode == MTEX_MAP_MODE_TILED) { + x -= 0.5f; + y -= 0.5f; } + + x *= ss->cache->vc->ar->winx / diameter; + y *= ss->cache->vc->ar->winy / diameter; + + /* it is probably worth optimizing for those cases where + the texture is not rotated by skipping the calls to + atan2, sqrtf, sin, and cos. */ + if (rotation > 0.001 || rotation < -0.001) { + const float angle = atan2(y, x) + rotation; + const float flen = sqrtf(x*x + y*y); + + x = flen * cos(angle); + y = flen * sin(angle); + } + + x *= br->mtex.size[0]; + y *= br->mtex.size[1]; + + x += br->mtex.ofs[0]; + y += br->mtex.ofs[1]; + + avg = get_tex_pixel(br, x, y); } - avg*= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ + avg += br->texture_sample_bias; + + avg *= brush_curve_strength(br, len, ss->cache->radius); /* Falloff curve */ return avg; } @@ -722,7 +845,7 @@ static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) BLI_pbvh_node_get_original_BB(node, bb_min, bb_max); else BLI_pbvh_node_get_BB(node, bb_min, bb_max); - + for(i = 0; i < 3; ++i) { if(bb_min[i] > center[i]) nearest[i] = bb_min[i]; @@ -734,7 +857,7 @@ static int sculpt_search_sphere_cb(PBVHNode *node, void *data_v) sub_v3_v3v3(t, center, nearest); - return t[0] * t[0] + t[1] * t[1] + t[2] * t[2] < data->radius_squared; + return dot_v3v3(t, t) < data->radius_squared; } /* Handles clipping against a mirror modifier and SCULPT_LOCK axis flags */ @@ -750,64 +873,60 @@ static void sculpt_clip(Sculpt *sd, SculptSession *ss, float *co, const float va co[i]= 0.0f; else co[i]= val[i]; - } + } } static void add_norm_if(float view_vec[3], float out[3], float out_flip[3], float fno[3]) { if((dot_v3v3(view_vec, fno)) > 0) { - add_v3_v3v3(out, out, fno); + add_v3_v3(out, fno); } else { - add_v3_v3v3(out_flip, out_flip, fno); /* out_flip is used when out is {0,0,0} */ + add_v3_v3(out_flip, fno); /* out_flip is used when out is {0,0,0} */ } } -/* For draw/layer/flatten; finds average normal for all active vertices */ -static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3], PBVHNode **nodes, int totnode) +static void calc_area_normal(Sculpt *sd, SculptSession *ss, float an[3], PBVHNode **nodes, int totnode) { - PBVH *bvh= ss->tree; - StrokeCache *cache = ss->cache; - const int view = 0; /* XXX: should probably be a flag, not number: brush_type==SCULPT_TOOL_DRAW ? sculptmode_brush()->view : 0; */ - float out[3] = {0.0f, 0.0f, 0.0f}; - float out_flip[3] = {0.0f, 0.0f, 0.0f}; - float out_dir[3]; int n; - copy_v3_v3(out_dir, cache->view_normal_symmetry); + float out_flip[3] = {0.0f, 0.0f, 0.0f}; - /* threaded loop over nodes */ - #pragma omp parallel for private(n) schedule(static) + zero_v3(an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; SculptUndoNode *unode; - float fno[3]; - float nout[3] = {0.0f, 0.0f, 0.0f}; - float nout_flip[3] = {0.0f, 0.0f, 0.0f}; - - // XXX push instead of get for thread safety in draw - // brush .. lame, but also not harmful really - unode= sculpt_undo_push_node(ss, nodes[n]); + float private_an[3] = {0.0f, 0.0f, 0.0f}; + float private_out_flip[3] = {0.0f, 0.0f, 0.0f}; + + unode = sculpt_undo_push_node(ss, nodes[n]); sculpt_brush_test_init(ss, &test); if(ss->cache->original) { - BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, unode->co[vd.i])) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + float fno[3]; + normal_short_to_float_v3(fno, unode->no[vd.i]); - add_norm_if(out_dir, nout, nout_flip, fno); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); } } BLI_pbvh_vertex_iter_end; } else { - BLI_pbvh_vertex_iter_begin(bvh, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { if(vd.no) { + float fno[3]; + normal_short_to_float_v3(fno, vd.no); - add_norm_if(out_dir, nout, nout_flip, fno); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + } + else { + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, vd.fno); } - else - add_norm_if(out_dir, nout, nout_flip, vd.fno); } } BLI_pbvh_vertex_iter_end; @@ -815,76 +934,70 @@ static void calc_area_normal(Sculpt *sd, SculptSession *ss, float area_normal[3] #pragma omp critical { - /* we sum per node and add together later for threads */ - add_v3_v3v3(out, out, nout); - add_v3_v3v3(out_flip, out_flip, nout_flip); + add_v3_v3(an, private_an); + add_v3_v3(out_flip, private_out_flip); } } - if (out[0]==0.0 && out[1]==0.0 && out[2]==0.0) { - copy_v3_v3(out, out_flip); - } - - normalize_v3(out); + if (is_zero_v3(an)) + copy_v3_v3(an, out_flip); - out[0] = out_dir[0] * view + out[0] * (10-view); - out[1] = out_dir[1] * view + out[1] * (10-view); - out[2] = out_dir[2] * view + out[2] * (10-view); - - normalize_v3(out); - copy_v3_v3(area_normal, out); + normalize_v3(an); } -static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +/* This initializes the faces to be moved for this sculpt for draw/layer/flatten; then it + finds average normal for all active vertices - note that this is called once for each mirroring direction */ +static void calc_sculpt_normal(Sculpt *sd, SculptSession *ss, float an[3], PBVHNode **nodes, int totnode) { Brush *brush = paint_brush(&sd->paint); - float offset[3], area_normal[3]; - float bstrength= ss->cache->bstrength; - int n; - - /* area normal */ - calc_area_normal(sd, ss, area_normal, nodes, totnode); - - /* offset with as much as possible factored in already */ - offset[0]= area_normal[0]*ss->cache->radius*ss->cache->scale[0]*bstrength; - offset[1]= area_normal[1]*ss->cache->radius*ss->cache->scale[1]*bstrength; - offset[2]= area_normal[2]*ss->cache->radius*ss->cache->scale[2]*bstrength; - - /* threaded loop over nodes */ - #pragma omp parallel for private(n) schedule(static) - for(n=0; n<totnode; n++) { - PBVHVertexIter vd; - SculptBrushTest test; - int update = 0; - - sculpt_undo_push_node(ss, nodes[n]); - sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - /* offset vertex */ - float fade = tex_strength(ss, brush, vd.co, test.dist); - float val[3]= {vd.co[0] + offset[0]*fade, - vd.co[1] + offset[1]*fade, - vd.co[2] + offset[2]*fade}; - - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; - - update = 1; - } + if (ss->cache->mirror_symmetry_pass == 0 && + ss->cache->radial_symmetry_pass == 0 && + (ss->cache->first_time || !(brush->flag & BRUSH_ORIGINAL_NORMAL))) + { + switch (brush->sculpt_plane) { + case SCULPT_DISP_DIR_VIEW: + viewvector(ss->cache->vc->rv3d, ss->cache->vc->rv3d->twmat[3], an); + break; + + case SCULPT_DISP_DIR_X: + an[1] = 0.0; + an[2] = 0.0; + an[0] = 1.0; + break; + + case SCULPT_DISP_DIR_Y: + an[0] = 0.0; + an[2] = 0.0; + an[1] = 1.0; + break; + + case SCULPT_DISP_DIR_Z: + an[0] = 0.0; + an[1] = 0.0; + an[2] = 1.0; + break; + + case SCULPT_DISP_DIR_AREA: + calc_area_normal(sd, ss, an, nodes, totnode); + + default: + break; } - BLI_pbvh_vertex_iter_end; - - if (update) - BLI_pbvh_node_mark_update(nodes[n]); + + copy_v3_v3(ss->cache->last_area_normal, an); + } + else { + copy_v3_v3(an, ss->cache->last_area_normal); + flip_coord(an, an, ss->cache->mirror_symmetry_pass); + mul_m4_v3(ss->cache->symm_rot_mat, an); } } /* For the smooth brush, uses the neighboring vertices around vert to calculate a smoothed location for vert. Skips corner vertices (used by only one polygon.) */ -static void neighbor_average(SculptSession *ss, float avg[3], const int vert) +static void neighbor_average(SculptSession *ss, float avg[3], const unsigned vert) { int i, skip= -1, total=0; IndexNode *node= ss->fmap[vert].first; @@ -904,14 +1017,14 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) if(f->v4) { skip= (f->v1==vert?2: - f->v2==vert?3: - f->v3==vert?0: - f->v4==vert?1:-1); + f->v2==vert?3: + f->v3==vert?0: + f->v4==vert?1:-1); } for(i=0; i<(f->v4?4:3); ++i) { if(i != skip && (ncount!=2 || BLI_countlist(&ss->fmap[(&f->v1)[i]]) <= 2)) { - add_v3_v3v3(avg, avg, ss->mvert[(&f->v1)[i]].co); + add_v3_v3(avg, ss->mvert[(&f->v1)[i]].co); ++total; } } @@ -925,52 +1038,58 @@ static void neighbor_average(SculptSession *ss, float avg[3], const int vert) copy_v3_v3(avg, ss->mvert[vert].co); } -static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node) +static void do_mesh_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength) { Brush *brush = paint_brush(&sd->paint); - float bstrength= ss->cache->bstrength; PBVHVertexIter vd; SculptBrushTest test; + CLAMP(bstrength, 0.0f, 1.0f); + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, node, vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); float avg[3], val[3]; - CLAMP(fade, 0.0f, 1.0f); - neighbor_average(ss, avg, vd.vert_indices[vd.i]); - val[0] = vd.co[0]+(avg[0]-vd.co[0])*fade; - val[1] = vd.co[1]+(avg[1]-vd.co[1])*fade; - val[2] = vd.co[2]+(avg[2]-vd.co[2])*fade; - - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + sub_v3_v3v3(val, avg, vd.co); + mul_v3_fl(val, fade); + + add_v3_v3(val, vd.co); + + sculpt_clip(sd, ss, vd.co, val); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; } -static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node) +static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *node, float bstrength) { Brush *brush = paint_brush(&sd->paint); SculptBrushTest test; DMGridData **griddata, *data; DMGridAdjacency *gridadj, *adj; - float bstrength= ss->cache->bstrength; - float co[3], (*tmpgrid)[3]; + float (*tmpgrid)[3], (*tmprow)[3]; int v1, v2, v3, v4; int *grid_indices, totgrid, gridsize, i, x, y; - + sculpt_brush_test_init(ss, &test); - BLI_pbvh_node_get_grids(ss->tree, node, &grid_indices, &totgrid, + CLAMP(bstrength, 0.0f, 1.0f); + + BLI_pbvh_node_get_grids(ss->pbvh, node, &grid_indices, &totgrid, NULL, &gridsize, &griddata, &gridadj); #pragma omp critical - tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); + { + tmpgrid= MEM_mallocN(sizeof(float)*3*gridsize*gridsize, "tmpgrid"); + tmprow= MEM_mallocN(sizeof(float)*3*gridsize, "tmprow"); + } for(i = 0; i < totgrid; ++i) { data = griddata[grid_indices[i]]; @@ -978,75 +1097,106 @@ static void do_multires_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode *no memset(tmpgrid, 0, sizeof(float)*3*gridsize*gridsize); - /* average grid values */ - for(y = 0; y < gridsize-1; ++y) { - for(x = 0; x < gridsize-1; ++x) { + for (y= 0; y < gridsize-1; y++) { + float tmp[3]; + + v1 = y*gridsize; + add_v3_v3v3(tmprow[0], data[v1].co, data[v1+gridsize].co); + + for (x= 0; x < gridsize-1; x++) { v1 = x + y*gridsize; - v2 = (x + 1) + y*gridsize; - v3 = (x + 1) + (y + 1)*gridsize; - v4 = x + (y + 1)*gridsize; + v2 = v1 + 1; + v3 = v1 + gridsize; + v4 = v3 + 1; - cent_quad_v3(co, data[v1].co, data[v2].co, data[v3].co, data[v4].co); - mul_v3_fl(co, 0.25f); + add_v3_v3v3(tmprow[x+1], data[v2].co, data[v4].co); + add_v3_v3v3(tmp, tmprow[x+1], tmprow[x]); - add_v3_v3(tmpgrid[v1], co); - add_v3_v3(tmpgrid[v2], co); - add_v3_v3(tmpgrid[v3], co); - add_v3_v3(tmpgrid[v4], co); + add_v3_v3(tmpgrid[v1], tmp); + add_v3_v3(tmpgrid[v2], tmp); + add_v3_v3(tmpgrid[v3], tmp); + add_v3_v3(tmpgrid[v4], tmp); } } /* blend with existing coordinates */ for(y = 0; y < gridsize; ++y) { for(x = 0; x < gridsize; ++x) { - if(x == 0 && adj->index[0] == -1) continue; - if(x == gridsize - 1 && adj->index[2] == -1) continue; - if(y == 0 && adj->index[3] == -1) continue; - if(y == gridsize - 1 && adj->index[1] == -1) continue; + float *co; + float *fno; + int index; + + if(x == 0 && adj->index[0] == -1) + continue; - copy_v3_v3(co, data[x + y*gridsize].co); + if(x == gridsize - 1 && adj->index[2] == -1) + continue; + + if(y == 0 && adj->index[3] == -1) + continue; + + if(y == gridsize - 1 && adj->index[1] == -1) + continue; + + index = x + y*gridsize; + co= data[index].co; + fno= data[index].no; if(sculpt_brush_test(&test, co)) { - float fade = tex_strength(ss, brush, co, test.dist)*bstrength; - float avg[3], val[3]; + const float fade = bstrength*tex_strength(ss, brush, co, test.dist)*frontface(brush, ss->cache->view_normal, NULL, fno); + float *avg, val[3]; + float n; + + avg = tmpgrid[x + y*gridsize]; + + n = 1/16.0f; - copy_v3_v3(avg, tmpgrid[x + y*gridsize]); if(x == 0 || x == gridsize - 1) - mul_v3_fl(avg, 2.0f); + n *= 2; + if(y == 0 || y == gridsize - 1) - mul_v3_fl(avg, 2.0f); + n *= 2; + + mul_v3_fl(avg, n); - CLAMP(fade, 0.0f, 1.0f); + sub_v3_v3v3(val, avg, co); + mul_v3_fl(val, fade); - val[0] = co[0]+(avg[0]-co[0])*fade; - val[1] = co[1]+(avg[1]-co[1])*fade; - val[2] = co[2]+(avg[2]-co[2])*fade; - - sculpt_clip(sd, ss, data[x + y*gridsize].co, val); + add_v3_v3(val, co); + + sculpt_clip(sd, ss, co, val); } } } } #pragma omp critical - MEM_freeN(tmpgrid); + { + MEM_freeN(tmpgrid); + MEM_freeN(tmprow); + } } -static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +static void smooth(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float bstrength) { - int iteration, n; + const int max_iterations = 4; + const float fract = 1.0f/max_iterations; + int iteration, n, count; + float last; - for(iteration = 0; iteration < 2; ++iteration) { - #pragma omp parallel for private(n) schedule(static) - for(n=0; n<totnode; n++) { - sculpt_undo_push_node(ss, nodes[n]); + CLAMP(bstrength, 0, 1); - if(ss->multires) - do_multires_smooth_brush(sd, ss, nodes[n]); - else if(ss->fmap) - do_mesh_smooth_brush(sd, ss, nodes[n]); + count = (int)(bstrength*max_iterations); + last = max_iterations*(bstrength - count*fract); - BLI_pbvh_node_mark_update(nodes[n]); + for(iteration = 1; iteration <= count; ++iteration) { + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; n<totnode; n++) { + if(ss->multires) { + do_multires_smooth_brush(sd, ss, nodes[n], iteration != count ? 1.0f : last); + } + else if(ss->fmap) + do_mesh_smooth_brush(sd, ss, nodes[n], iteration != count ? 1.0f : last); } if(ss->multires) @@ -1054,69 +1204,378 @@ static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int } } -static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +static void do_smooth_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + smooth(sd, ss, nodes, totnode, ss->cache->bstrength); +} + +static void do_draw_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { Brush *brush = paint_brush(&sd->paint); + float offset[3], area_normal[3]; float bstrength= ss->cache->bstrength; int n; - #pragma omp parallel for private(n) schedule(static) + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); + + /* offset with as much as possible factored in already */ + mul_v3_v3fl(offset, area_normal, ss->cache->radius); + mul_v3_v3(offset, ss->cache->scale); + mul_v3_fl(offset, bstrength); + + /* threaded loop over nodes */ + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; - - sculpt_undo_push_node(ss, nodes[n]); + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test(&test, vd.co)) { + //if(sculpt_brush_test_cyl(&test, vd.co, ss->cache->location, area_normal)) { + /* offset vertex */ + float fade = tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], offset, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_crease_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float offset[3], area_normal[3]; + float bstrength= ss->cache->bstrength; + float flippedbstrength, crease_correction; + int n; + + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); + + /* offset with as much as possible factored in already */ + mul_v3_v3fl(offset, area_normal, ss->cache->radius); + mul_v3_v3(offset, ss->cache->scale); + mul_v3_fl(offset, bstrength); + + /* we divide out the squared alpha and multiply by the squared crease to give us the pinch strength */ + + if(sculpt_get_brush_alpha(brush) > 0.0f) + crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor/(sculpt_get_brush_alpha(brush)*sculpt_get_brush_alpha(brush)); + else + crease_correction = brush->crease_pinch_factor*brush->crease_pinch_factor; + + /* we always want crease to pinch or blob to relax even when draw is negative */ + flippedbstrength = (bstrength < 0) ? -crease_correction*bstrength : crease_correction*bstrength; + + if(brush->sculpt_tool == SCULPT_TOOL_BLOB) flippedbstrength *= -1.0f; + + /* threaded loop over nodes */ + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; n<totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; - float val[3]= {vd.co[0]+(test.location[0]-vd.co[0])*fade, - vd.co[1]+(test.location[1]-vd.co[1])*fade, - vd.co[2]+(test.location[2]-vd.co[2])*fade}; - - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + /* offset vertex */ + const float fade = tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); + float val1[3]; + float val2[3]; + + /* first we pinch */ + sub_v3_v3v3(val1, test.location, vd.co); + //mul_v3_v3(val1, ss->cache->scale); + mul_v3_fl(val1, fade*flippedbstrength); + + /* then we draw */ + mul_v3_v3fl(val2, offset, fade); + + add_v3_v3v3(proxy[vd.i], val1, val2); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; + } +} + +static void do_pinch_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + int n; + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; n<totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); + float val[3]; + + sub_v3_v3v3(val, test.location, vd.co); + mul_v3_v3fl(proxy[vd.i], val, fade); - BLI_pbvh_node_mark_update(nodes[n]); + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; } } static void do_grab_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - Brush *brush = paint_brush(&sd->paint); + Brush *brush= paint_brush(&sd->paint); float bstrength= ss->cache->bstrength; - float grab_delta[3]; + float grab_delta[3], an[3]; int n; - + float len; + + if (brush->normal_weight > 0) + calc_sculpt_normal(sd, ss, an, nodes, totnode); + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); - #pragma omp parallel for private(n) schedule(static) + len = len_v3(grab_delta); + + if (brush->normal_weight > 0) { + mul_v3_fl(an, len*brush->normal_weight); + mul_v3_fl(grab_delta, 1.0f - brush->normal_weight); + add_v3_v3(grab_delta, an); + } + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; + SculptUndoNode* unode; SculptBrushTest test; float (*origco)[3]; - - origco= sculpt_undo_push_node(ss, nodes[n])->co; + short (*origno)[3]; + float (*proxy)[3]; + + unode= sculpt_undo_push_node(ss, nodes[n]); + origco= unode->co; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, origco[vd.i])) { - float fade = tex_strength(ss, brush, origco[vd.i], test.dist)*bstrength; - float add[3]= {vd.co[0]+fade*grab_delta[0], - vd.co[1]+fade*grab_delta[1], - vd.co[2]+fade*grab_delta[2]}; + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); + + mul_v3_v3fl(proxy[vd.i], grab_delta, fade); - sculpt_clip(sd, ss, vd.co, add); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; + } +} + +static void do_nudge_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3]; + int n; + float an[3]; + float tmp[3], cono[3]; + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + cross_v3_v3v3(tmp, an, grab_delta); + cross_v3_v3v3(cono, tmp, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, an, vd.no, vd.fno); - BLI_pbvh_node_mark_update(nodes[n]); + mul_v3_v3fl(proxy[vd.i], cono, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_snake_hook_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3], an[3]; + int n; + float len; + + if (brush->normal_weight > 0) + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + len = len_v3(grab_delta); + + if (bstrength < 0) + negate_v3(grab_delta); + + if (brush->normal_weight > 0) { + mul_v3_fl(an, len*brush->normal_weight); + mul_v3_fl(grab_delta, 1.0f - brush->normal_weight); + add_v3_v3(grab_delta, an); + } + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, vd.co)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], grab_delta, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_thumb_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + float bstrength = ss->cache->bstrength; + float grab_delta[3]; + int n; + float an[3]; + float tmp[3], cono[3]; + + copy_v3_v3(grab_delta, ss->cache->grab_delta_symmetry); + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + cross_v3_v3v3(tmp, an, grab_delta); + cross_v3_v3v3(cono, tmp, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptUndoNode* unode; + SculptBrushTest test; + float (*origco)[3]; + short (*origno)[3]; + float (*proxy)[3]; + + unode= sculpt_undo_push_node(ss, nodes[n]); + origco= unode->co; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, origco[vd.i])) { + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); + + mul_v3_v3fl(proxy[vd.i], cono, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_rotate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush= paint_brush(&sd->paint); + float bstrength= ss->cache->bstrength; + float an[3]; + int n; + float m[3][3]; + static const int flip[8] = { 1, -1, -1, 1, -1, 1, 1, -1 }; + float angle = ss->cache->vertex_rotation * flip[ss->cache->mirror_symmetry_pass]; + + calc_sculpt_normal(sd, ss, an, nodes, totnode); + + axis_angle_to_mat3(m, an, angle); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; n<totnode; n++) { + PBVHVertexIter vd; + SculptUndoNode* unode; + SculptBrushTest test; + float (*origco)[3]; + short (*origno)[3]; + float (*proxy)[3]; + + unode= sculpt_undo_push_node(ss, nodes[n]); + origco= unode->co; + origno= unode->no; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test(&test, origco[vd.i])) { + const float fade = bstrength*tex_strength(ss, brush, origco[vd.i], test.dist)*frontface(brush, an, origno[vd.i], NULL); + + mul_v3_m3v3(proxy[vd.i], m, origco[vd.i]); + sub_v3_v3(proxy[vd.i], origco[vd.i]); + mul_v3_fl(proxy[vd.i], fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + BLI_pbvh_vertex_iter_end; } } @@ -1128,60 +1587,66 @@ static void do_layer_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int float lim= ss->cache->radius / 4; int n; - /* XXX not working yet for multires */ - if(ss->multires) - return; - - if(ss->cache->flip) + if(bstrength < 0) lim = -lim; - calc_area_normal(sd, ss, area_normal, nodes, totnode); + calc_sculpt_normal(sd, ss, area_normal, nodes, totnode); - offset[0]= ss->cache->scale[0]*area_normal[0]; - offset[1]= ss->cache->scale[1]*area_normal[1]; - offset[2]= ss->cache->scale[2]*area_normal[2]; + mul_v3_v3v3(offset, ss->cache->scale, area_normal); - #pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; - float (*origco)[3]; + SculptUndoNode *unode; + float (*origco)[3], *layer_disp; + //float (*proxy)[3]; // XXX layer brush needs conversion to proxy but its more complicated + + //proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; - origco= sculpt_undo_push_node(ss, nodes[n])->co; + unode= sculpt_undo_push_node(ss, nodes[n]); + origco=unode->co; + if(!unode->layer_disp) + { + #pragma omp critical + unode->layer_disp= MEM_callocN(sizeof(float)*unode->totvert, "layer disp"); + } + + layer_disp= unode->layer_disp; + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; - int index= vd.vert_indices[vd.i]; - float *disp= &ss->layer_disps[index]; + const float fade = bstrength*ss->cache->radius*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, area_normal, vd.no, vd.fno); + float *disp= &layer_disp[vd.i]; float val[3]; - + *disp+= fade; - + /* Don't let the displacement go past the limit */ if((lim < 0 && *disp < lim) || (lim > 0 && *disp > lim)) *disp = lim; - + + mul_v3_v3fl(val, offset, *disp); + if(ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { + int index= vd.vert_indices[vd.i]; + /* persistent base */ - val[0] = ss->layer_co[index][0] + (*disp)*offset[0]; - val[1] = ss->layer_co[index][1] + (*disp)*offset[1]; - val[2] = ss->layer_co[index][2] + (*disp)*offset[2]; + add_v3_v3(val, ss->layer_co[index]); } else { - val[0] = origco[vd.i][0] + (*disp)*offset[0]; - val[1] = origco[vd.i][1] + (*disp)*offset[1]; - val[2] = origco[vd.i][2] + (*disp)*offset[2]; + add_v3_v3(val, origco[vd.i]); } sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } @@ -1191,221 +1656,715 @@ static void do_inflate_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, in float bstrength= ss->cache->bstrength; int n; - #pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; - - sculpt_undo_push_node(ss, nodes[n]); + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { if(sculpt_brush_test(&test, vd.co)) { - float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; - float add[3]; + const float fade = bstrength*tex_strength(ss, brush, vd.co, test.dist)*frontface(brush, ss->cache->view_normal, vd.no, vd.fno); + float val[3]; - if(vd.fno) copy_v3_v3(add, vd.fno); - else normal_short_to_float_v3(add, vd.no); + if(vd.fno) copy_v3_v3(val, vd.fno); + else normal_short_to_float_v3(val, vd.no); - mul_v3_fl(add, fade * ss->cache->radius); - add[0]*= ss->cache->scale[0]; - add[1]*= ss->cache->scale[1]; - add[2]*= ss->cache->scale[2]; - add_v3_v3v3(add, add, vd.co); - - sculpt_clip(sd, ss, vd.co, add); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + mul_v3_fl(val, fade * ss->cache->radius); + mul_v3_v3v3(proxy[vd.i], val, ss->cache->scale); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } } BLI_pbvh_vertex_iter_end; - - BLI_pbvh_node_mark_update(nodes[n]); } } -static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float co[3]) +static void calc_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float fc[3]) { - float outer_dist[FLATTEN_SAMPLE_SIZE]; - float outer_co[FLATTEN_SAMPLE_SIZE][3]; - int i, n; - - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) { - zero_v3(outer_co[i]); - outer_dist[i]= -1.0f; + int n; + + float count = 0; + + zero_v3(fc); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n=0; n<totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + SculptUndoNode *unode; + float private_fc[3] = {0.0f, 0.0f, 0.0f}; + int private_count = 0; + + unode = sculpt_undo_push_node(ss, nodes[n]); + sculpt_brush_test_init(ss, &test); + + if(ss->cache->original) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; + } + else { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; + } + + #pragma omp critical + { + add_v3_v3(fc, private_fc); + count += private_count; + } } - - #pragma omp parallel for private(n) schedule(static) + + mul_v3_fl(fc, 1.0f / count); +} + +/* this calculates flatten center and area normal together, +amortizing the memory bandwidth and loop overhead to calculate both at the same time */ +static void calc_area_normal_and_flatten_center(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float an[3], float fc[3]) +{ + int n; + + // an + float out_flip[3] = {0.0f, 0.0f, 0.0f}; + + // fc + float count = 0; + + // an + zero_v3(an); + + // fc + zero_v3(fc); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; - int j; - - sculpt_undo_push_node(ss, nodes[n]); + SculptUndoNode *unode; + float private_an[3] = {0.0f, 0.0f, 0.0f}; + float private_out_flip[3] = {0.0f, 0.0f, 0.0f}; + float private_fc[3] = {0.0f, 0.0f, 0.0f}; + int private_count = 0; + + unode = sculpt_undo_push_node(ss, nodes[n]); sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - for(j = 0; j < FLATTEN_SAMPLE_SIZE; ++j) { - if(test.dist > outer_dist[j]) { - copy_v3_v3(outer_co[j], vd.co); - outer_dist[j] = test.dist; - break; + if(ss->cache->original) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, unode->co[vd.i])) { + // an + float fno[3]; + + normal_short_to_float_v3(fno, unode->no[vd.i]); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + + // fc + add_v3_v3(private_fc, vd.co); + private_count++; + } + } + BLI_pbvh_vertex_iter_end; + } + else { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if(sculpt_brush_test_fast(&test, vd.co)) { + // an + if(vd.no) { + float fno[3]; + + normal_short_to_float_v3(fno, vd.no); + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, fno); + } + else { + add_norm_if(ss->cache->view_normal, private_an, private_out_flip, vd.fno); } + + // fc + add_v3_v3(private_fc, vd.co); + private_count++; } } + BLI_pbvh_vertex_iter_end; } - BLI_pbvh_vertex_iter_end; - BLI_pbvh_node_mark_update(nodes[n]); + #pragma omp critical + { + // an + add_v3_v3(an, private_an); + add_v3_v3(out_flip, private_out_flip); + + // fc + add_v3_v3(fc, private_fc); + count += private_count; + } + } + + // an + if (is_zero_v3(an)) + copy_v3_v3(an, out_flip); + + normalize_v3(an); + + // fc + mul_v3_fl(fc, 1.0f / count); +} + +static void calc_sculpt_plane(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, float an[3], float fc[3]) +{ + Brush *brush = paint_brush(&sd->paint); + + if (ss->cache->mirror_symmetry_pass == 0 && + ss->cache->radial_symmetry_pass == 0 && + (ss->cache->first_time || !(brush->flag & BRUSH_ORIGINAL_NORMAL))) + { + switch (brush->sculpt_plane) { + case SCULPT_DISP_DIR_VIEW: + viewvector(ss->cache->vc->rv3d, ss->cache->vc->rv3d->twmat[3], an); + break; + + case SCULPT_DISP_DIR_X: + an[1] = 0.0; + an[2] = 0.0; + an[0] = 1.0; + break; + + case SCULPT_DISP_DIR_Y: + an[0] = 0.0; + an[2] = 0.0; + an[1] = 1.0; + break; + + case SCULPT_DISP_DIR_Z: + an[0] = 0.0; + an[1] = 0.0; + an[2] = 1.0; + break; + + case SCULPT_DISP_DIR_AREA: + calc_area_normal_and_flatten_center(sd, ss, nodes, totnode, an, fc); + + default: + break; + } + + // fc + /* flatten center has not been calculated yet if we are not using the area normal */ + if (brush->sculpt_plane != SCULPT_DISP_DIR_AREA) + calc_flatten_center(sd, ss, nodes, totnode, fc); + + // an + copy_v3_v3(ss->cache->last_area_normal, an); + + // fc + copy_v3_v3(ss->cache->last_center, fc); + } + else { + // an + copy_v3_v3(an, ss->cache->last_area_normal); + + // fc + copy_v3_v3(fc, ss->cache->last_center); + + // an + flip_coord(an, an, ss->cache->mirror_symmetry_pass); + + // fc + flip_coord(fc, fc, ss->cache->mirror_symmetry_pass); + + // an + mul_m4_v3(ss->cache->symm_rot_mat, an); + + // fc + mul_m4_v3(ss->cache->symm_rot_mat, fc); } - - co[0] = co[1] = co[2] = 0.0f; - for(i = 0; i < FLATTEN_SAMPLE_SIZE; ++i) - if(outer_dist[i] >= 0.0f) - add_v3_v3v3(co, co, outer_co[i]); - mul_v3_fl(co, 1.0f / FLATTEN_SAMPLE_SIZE); } /* Projects a point onto a plane along the plane's normal */ static void point_plane_project(float intr[3], float co[3], float plane_normal[3], float plane_center[3]) { - float p1[3], sub1[3], sub2[3]; + sub_v3_v3v3(intr, co, plane_center); + mul_v3_v3fl(intr, plane_normal, dot_v3v3(plane_normal, intr)); + sub_v3_v3v3(intr, co, intr); +} - /* Find the intersection between squash-plane and vertex (along the area normal) */ - sub_v3_v3v3(p1, co, plane_normal); - sub_v3_v3v3(sub1, plane_center, p1); - sub_v3_v3v3(sub2, co, p1); - sub_v3_v3v3(intr, co, p1); - mul_v3_fl(intr, dot_v3v3(plane_normal, sub1) / dot_v3v3(plane_normal, sub2)); - add_v3_v3v3(intr, intr, p1); +static int plane_trim(StrokeCache *cache, Brush *brush, float val[3]) +{ + return !(brush->flag & BRUSH_PLANE_TRIM) || (dot_v3v3(val, val) <= cache->radius_squared*cache->plane_trim_squared); } -static int plane_point_side(float co[3], float plane_normal[3], float plane_center[3], int flip) +static int plane_point_side_flip(float co[3], float plane_normal[3], float plane_center[3], int flip) { - float delta[3]; - float d; + float delta[3]; + float d; + + sub_v3_v3v3(delta, co, plane_center); + d = dot_v3v3(plane_normal, delta); + + if (flip) d = -d; - sub_v3_v3v3(delta, co, plane_center); - d = dot_v3v3(plane_normal, delta); + return d <= 0.0f; +} - if(flip) - d = -d; +static int plane_point_side(float co[3], float plane_normal[3], float plane_center[3]) +{ + float delta[3]; - return d <= 0.0f; + sub_v3_v3v3(delta, co, plane_center); + return dot_v3v3(plane_normal, delta) <= 0.0f; } -static void do_flatten_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode, int clay) +static float get_offset(Sculpt *sd, SculptSession *ss) +{ + Brush* brush = paint_brush(&sd->paint); + + float rv = brush->plane_offset; + + if (brush->flag & BRUSH_OFFSET_PRESSURE) { + rv *= ss->cache->pressure; + } + + return rv; +} + +static void do_flatten_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - /* area_normal and cntr define the plane towards which vertices are squashed */ Brush *brush = paint_brush(&sd->paint); - float bstrength= ss->cache->bstrength; - float area_normal[3]; - float cntr[3], cntr2[3] = {0}, bstr = 0; - int n, flip = 0; - calc_area_normal(sd, ss, area_normal, nodes, totnode); - calc_flatten_center(sd, ss, nodes, totnode, cntr); + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + + float an[3]; + float fc[3]; + + float offset = get_offset(sd, ss); + + float displace; + + int n; + + float temp[3]; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for(n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + BLI_pbvh_vertex_iter_end; + } +} + +static void do_clay_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); + + float bstrength = ss->cache->bstrength; + float radius = ss->cache->radius; + float offset = get_offset(sd, ss); + + float displace; + + float an[3]; // area normal + float fc[3]; // flatten center - if(clay) { - bstr= brush_strength(sd, ss->cache); - /* Limit clay application to here */ - cntr2[0]=cntr[0]+area_normal[0]*bstr*ss->cache->scale[0]; - cntr2[1]=cntr[1]+area_normal[1]*bstr*ss->cache->scale[1]; - cntr2[2]=cntr[2]+area_normal[2]*bstr*ss->cache->scale[2]; - flip = bstr < 0; + int n; + + float temp[3]; + //float p[3]; + + int flip; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + flip = bstrength < 0; + + if (flip) { + bstrength = -bstrength; + radius = -radius; } - #pragma omp parallel for private(n) schedule(static) - for(n=0; n<totnode; n++) { + displace = radius * (0.25f+offset); + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + //add_v3_v3v3(p, ss->cache->location, an); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { PBVHVertexIter vd; SculptBrushTest test; - - sculpt_undo_push_node(ss, nodes[n]); + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + sculpt_brush_test_init(ss, &test); - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { - if(sculpt_brush_test(&test, vd.co)) { - float intr[3], val[3]; - - if(!clay || plane_point_side(vd.co, area_normal, cntr2, flip)) { - const float fade = tex_strength(ss, brush, vd.co, test.dist)*bstrength; + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (plane_point_side_flip(vd.co, an, fc, flip)) { + //if (sculpt_brush_test_cyl(&test, vd.co, ss->cache->location, p)) { + float intr[3]; + float val[3]; - /* Find the intersection between squash-plane and vertex (along the area normal) */ - point_plane_project(intr, vd.co, area_normal, cntr); + point_plane_project(intr, vd.co, an, fc); sub_v3_v3v3(val, intr, vd.co); - if(clay) { - if(bstr > FLT_EPSILON) - mul_v3_fl(val, fade / bstr); - else - mul_v3_fl(val, fade); - /* Clay displacement */ - val[0]+=area_normal[0] * ss->cache->scale[0]*fade; - val[1]+=area_normal[1] * ss->cache->scale[1]*fade; - val[2]+=area_normal[2] * ss->cache->scale[2]*fade; + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } - else - mul_v3_fl(val, fabs(fade)); + } + } + } + BLI_pbvh_vertex_iter_end; + } +} - add_v3_v3v3(val, val, vd.co); +static void do_clay_tubes_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); - sculpt_clip(sd, ss, vd.co, val); - if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + float bstrength = ss->cache->bstrength; + float radius = ss->cache->radius; + float offset = get_offset(sd, ss); + + float displace; + + float sn[3]; // sculpt normal + float an[3]; // area normal + float fc[3]; // flatten center + + int n; + + float temp[3]; + float mat[4][4]; + float scale[4][4]; + float tmat[4][4]; + + int flip; + + calc_sculpt_plane(sd, ss, nodes, totnode, sn, fc); + + if (brush->sculpt_plane != SCULPT_DISP_DIR_AREA || (brush->flag & BRUSH_ORIGINAL_NORMAL)) + calc_area_normal(sd, ss, an, nodes, totnode); + else + copy_v3_v3(an, sn); + + if (ss->cache->first_time) + return; // delay the first daub because grab delta is not setup + + flip = bstrength < 0; + + if (flip) { + bstrength = -bstrength; + radius = -radius; + } + + displace = radius * (0.25f+offset); + + mul_v3_v3v3(temp, sn, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + cross_v3_v3v3(mat[0], an, ss->cache->grab_delta_symmetry); mat[0][3] = 0; + cross_v3_v3v3(mat[1], an, mat[0]); mat[1][3] = 0; + copy_v3_v3(mat[2], an); mat[2][3] = 0; + copy_v3_v3(mat[3], ss->cache->location); mat[3][3] = 1; + normalize_m4(mat); + scale_m4_fl(scale, ss->cache->radius); + mul_m4_m4m4(tmat, scale, mat); + invert_m4_m4(mat, tmat); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_cube(&test, vd.co, mat)) { + if (plane_point_side_flip(vd.co, sn, fc, flip)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, sn, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, ss->cache->radius*test.dist)*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } } } } BLI_pbvh_vertex_iter_end; + } +} + +static void do_fill_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) +{ + Brush *brush = paint_brush(&sd->paint); - BLI_pbvh_node_mark_update(nodes[n]); + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + + float an[3]; + float fc[3]; + float offset = get_offset(sd, ss); + + float displace; + + int n; + + float temp[3]; + + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (plane_point_side(vd.co, an, fc)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; } } -static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) +static void do_scrape_brush(Sculpt *sd, SculptSession *ss, PBVHNode **nodes, int totnode) { - SculptSearchSphereData data; Brush *brush = paint_brush(&sd->paint); - PBVHNode **nodes= NULL; - rctf mr; - float xrad, yrad; - int totnode; - xrad = cache->pixel_radius+5.0f; - yrad = cache->pixel_radius+5.0f; + float bstrength = ss->cache->bstrength; + const float radius = ss->cache->radius; + float an[3]; + float fc[3]; + float offset = get_offset(sd, ss); - mr.xmin = cache->mouse[0] - xrad - cache->vc->ar->winrct.xmin; - mr.xmax = cache->mouse[0] + xrad - cache->vc->ar->winrct.xmin; - mr.ymin = cache->mouse[1] - yrad - cache->vc->ar->winrct.ymin; - mr.ymax = cache->mouse[1] + yrad - cache->vc->ar->winrct.ymin; - - cache->prect.xmin = MIN2(cache->prect.xmin, mr.xmin); - cache->prect.xmax = MAX2(cache->prect.xmax, mr.xmax); - cache->prect.ymin = MIN2(cache->prect.ymin, mr.ymin); - cache->prect.ymax = MAX2(cache->prect.ymax, mr.ymax); + float displace; - data.ss = ss; - data.sd = sd; - data.radius_squared = ss->cache->radius * ss->cache->radius; + int n; - /* Build a list of all nodes that are potentially within the brush's - area of influence */ - if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - data.original= 1; - BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data, - &nodes, &totnode); + float temp[3]; - if(cache->first_time) - copy_v3_v3(ss->cache->grab_active_location[ss->cache->symmetry], ss->cache->location); - else - copy_v3_v3(ss->cache->location, ss->cache->grab_active_location[ss->cache->symmetry]); + calc_sculpt_plane(sd, ss, nodes, totnode, an, fc); + + displace = -radius*offset; + + mul_v3_v3v3(temp, an, ss->cache->scale); + mul_v3_fl(temp, displace); + add_v3_v3(fc, temp); + + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n = 0; n < totnode; n++) { + PBVHVertexIter vd; + SculptBrushTest test; + float (*proxy)[3]; + + proxy= BLI_pbvh_node_add_proxy(ss->pbvh, nodes[n])->co; + + sculpt_brush_test_init(ss, &test); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + if (sculpt_brush_test_sq(&test, vd.co)) { + if (!plane_point_side(vd.co, an, fc)) { + float intr[3]; + float val[3]; + + point_plane_project(intr, vd.co, an, fc); + + sub_v3_v3v3(val, intr, vd.co); + + if (plane_trim(ss->cache, brush, val)) { + const float fade = bstrength*tex_strength(ss, brush, vd.co, sqrt(test.dist))*frontface(brush, an, vd.no, vd.fno); + + mul_v3_v3fl(proxy[vd.i], val, fade); + + if(vd.mvert) + vd.mvert->flag |= ME_VERT_PBVH_UPDATE; + } + } + } + } + BLI_pbvh_vertex_iter_end; } - else { - BLI_pbvh_search_gather(ss->tree, sculpt_search_sphere_cb, &data, - &nodes, &totnode); +} + +void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]) +{ + Mesh *me= (Mesh*)ob->data; + float (*ofs)[3]= NULL; + int a, is_basis= 0; + KeyBlock *currkey; + + /* for relative keys editing of base should update other keys */ + if (me->key->type == KEY_RELATIVE) + for (currkey = me->key->block.first; currkey; currkey= currkey->next) + if(ob->shapenr-1 == currkey->relative) { + is_basis= 1; + break; + } + + if (is_basis) { + ofs= key_to_vertcos(ob, kb); + + /* calculate key coord offsets (from previous location) */ + for (a= 0; a < me->totvert; a++) { + VECSUB(ofs[a], vertCos[a], ofs[a]); + } + + /* apply offsets on other keys */ + currkey = me->key->block.first; + while (currkey) { + int apply_offset = ((currkey != kb) && (ob->shapenr-1 == currkey->relative)); + + if (apply_offset) + offset_to_key(ob, currkey, ofs); + + currkey= currkey->next; + } + + MEM_freeN(ofs); } + /* modifying of basis key should update mesh */ + if (kb == me->key->refkey) { + MVert *mvert= me->mvert; + + for (a= 0; a < me->totvert; a++, mvert++) + VECCOPY(mvert->co, vertCos[a]); + + mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); + } + + /* apply new coords on active key block */ + vertcos_to_key(ob, kb, vertCos); +} + +/* copy the modified vertices from bvh to the active key */ +static void sculpt_update_keyblock(SculptSession *ss) +{ + float (*vertCos)[3]= BLI_pbvh_get_vertCos(ss->pbvh); + + if (vertCos) { + sculpt_vertcos_to_key(ss->ob, ss->kb, vertCos); + MEM_freeN(vertCos); + } +} + +static void do_brush_action(Sculpt *sd, SculptSession *ss, Brush *brush) +{ + SculptSearchSphereData data; + PBVHNode **nodes = NULL; + int n, totnode; + + /* Build a list of all nodes that are potentially within the brush's area of influence */ + data.ss = ss; + data.sd = sd; + data.radius_squared = ss->cache->radius_squared; + data.original = ELEM4(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_ROTATE, SCULPT_TOOL_THUMB, SCULPT_TOOL_LAYER); + BLI_pbvh_search_gather(ss->pbvh, sculpt_search_sphere_cb, &data, &nodes, &totnode); + /* Only act if some verts are inside the brush area */ - if(totnode) { + if (totnode) { + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + sculpt_undo_push_node(ss, nodes[n]); + BLI_pbvh_node_mark_update(nodes[n]); + } + /* Apply one type of brush action */ switch(brush->sculpt_tool){ case SCULPT_TOOL_DRAW: @@ -1414,6 +2373,12 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) case SCULPT_TOOL_SMOOTH: do_smooth_brush(sd, ss, nodes, totnode); break; + case SCULPT_TOOL_CREASE: + do_crease_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_BLOB: + do_crease_brush(sd, ss, nodes, totnode); + break; case SCULPT_TOOL_PINCH: do_pinch_brush(sd, ss, nodes, totnode); break; @@ -1423,55 +2388,240 @@ static void do_brush_action(Sculpt *sd, SculptSession *ss, StrokeCache *cache) case SCULPT_TOOL_GRAB: do_grab_brush(sd, ss, nodes, totnode); break; + case SCULPT_TOOL_ROTATE: + do_rotate_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_SNAKE_HOOK: + do_snake_hook_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_NUDGE: + do_nudge_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_THUMB: + do_thumb_brush(sd, ss, nodes, totnode); + break; case SCULPT_TOOL_LAYER: do_layer_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_FLATTEN: - do_flatten_clay_brush(sd, ss, nodes, totnode, 0); + do_flatten_brush(sd, ss, nodes, totnode); break; case SCULPT_TOOL_CLAY: - do_flatten_clay_brush(sd, ss, nodes, totnode, 1); + do_clay_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_CLAY_TUBES: + do_clay_tubes_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_FILL: + do_fill_brush(sd, ss, nodes, totnode); + break; + case SCULPT_TOOL_SCRAPE: + do_scrape_brush(sd, ss, nodes, totnode); break; } - + + if (brush->sculpt_tool != SCULPT_TOOL_SMOOTH && brush->autosmooth_factor > 0) { + if (brush->flag & BRUSH_INVERSE_SMOOTH_PRESSURE) { + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor*(1-ss->cache->pressure)); + } + else { + smooth(sd, ss, nodes, totnode, brush->autosmooth_factor); + } + } + /* copy the modified vertices from mesh to the active key */ - if(ss->kb) mesh_to_key(ss->ob->data, ss->kb); - - if(nodes) - MEM_freeN(nodes); - } + if(ss->kb) + mesh_to_key(ss->ob->data, ss->kb); + + /* optimization: we could avoid copying new coords to keyblock at each */ + /* stroke step if there are no modifiers due to pbvh is used for displaying */ + /* so to increase speed we'll copy new coords to keyblock when stroke is done */ + if(ss->kb && ss->modifiers_active) sculpt_update_keyblock(ss); + + MEM_freeN(nodes); + } } +static void sculpt_combine_proxies(Sculpt *sd, SculptSession *ss) +{ + Brush *brush= paint_brush(&sd->paint); + PBVHNode** nodes; + int totnode; + int n; + + BLI_pbvh_gather_proxies(ss->pbvh, &nodes, &totnode); + + switch (brush->sculpt_tool) { + case SCULPT_TOOL_GRAB: + case SCULPT_TOOL_ROTATE: + case SCULPT_TOOL_THUMB: + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + PBVHVertexIter vd; + PBVHProxyNode* proxies; + int proxy_count; + float (*origco)[3]; + + origco= sculpt_undo_push_node(ss, nodes[n])->co; + + BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + float val[3]; + int p; + + copy_v3_v3(val, origco[vd.i]); + + for (p= 0; p < proxy_count; p++) + add_v3_v3(val, proxies[p].co[vd.i]); + + sculpt_clip(sd, ss, vd.co, val); + } + BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_free_proxies(nodes[n]); + } + + break; + + case SCULPT_TOOL_DRAW: + case SCULPT_TOOL_CLAY: + case SCULPT_TOOL_CLAY_TUBES: + case SCULPT_TOOL_CREASE: + case SCULPT_TOOL_BLOB: + case SCULPT_TOOL_FILL: + case SCULPT_TOOL_FLATTEN: + case SCULPT_TOOL_INFLATE: + case SCULPT_TOOL_NUDGE: + case SCULPT_TOOL_PINCH: + case SCULPT_TOOL_SCRAPE: + case SCULPT_TOOL_SNAKE_HOOK: + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) + for (n= 0; n < totnode; n++) { + PBVHVertexIter vd; + PBVHProxyNode* proxies; + int proxy_count; + + BLI_pbvh_node_get_proxies(nodes[n], &proxies, &proxy_count); + + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { + float val[3]; + int p; + + copy_v3_v3(val, vd.co); + + for (p= 0; p < proxy_count; p++) + add_v3_v3(val, proxies[p].co[vd.i]); + + sculpt_clip(sd, ss, vd.co, val); + } + BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_free_proxies(nodes[n]); + + } + + break; + + case SCULPT_TOOL_SMOOTH: + case SCULPT_TOOL_LAYER: + default: + break; + } + + if (nodes) + MEM_freeN(nodes); +} + +//static int max_overlap_count(Sculpt *sd) +//{ +// int count[3]; +// int i, j; +// +// for (i= 0; i < 3; i++) { +// count[i] = sd->radial_symm[i]; +// +// for (j= 0; j < 3; j++) { +// if (i != j && sd->flags & (SCULPT_SYMM_X<<i)) +// count[i] *= 2; +// } +// } +// +// return MAX3(count[0], count[1], count[2]); +//} + /* Flip all the editdata across the axis/axes specified by symm. Used to calculate multiple modifications to the mesh when symmetry is enabled. */ -static void calc_brushdata_symm(StrokeCache *cache, const char symm) +static void calc_brushdata_symm(Sculpt *sd, StrokeCache *cache, const char symm, const char axis, const float angle, const float feather) { flip_coord(cache->location, cache->true_location, symm); - flip_coord(cache->view_normal_symmetry, cache->view_normal, symm); flip_coord(cache->grab_delta_symmetry, cache->grab_delta, symm); - cache->symmetry= symm; + flip_coord(cache->view_normal, cache->true_view_normal, symm); + + // XXX This reduces the length of the grab delta if it approaches the line of symmetry + // XXX However, a different approach appears to be needed + //if (sd->flags & SCULPT_SYMMETRY_FEATHER) { + // float frac = 1.0f/max_overlap_count(sd); + // float reduce = (feather-frac)/(1-frac); + + // printf("feather: %f frac: %f reduce: %f\n", feather, frac, reduce); + + // if (frac < 1) + // mul_v3_fl(cache->grab_delta_symmetry, reduce); + //} + + unit_m4(cache->symm_rot_mat); + unit_m4(cache->symm_rot_mat_inv); + rotate_m4(cache->symm_rot_mat, axis, angle); + rotate_m4(cache->symm_rot_mat_inv, axis, -angle); + + mul_m4_v3(cache->symm_rot_mat, cache->location); + mul_m4_v3(cache->symm_rot_mat, cache->grab_delta_symmetry); +} + +static void do_radial_symmetry(Sculpt *sd, SculptSession *ss, Brush *brush, const char symm, const int axis, const float feather) +{ + int i; + + for(i = 1; i < sd->radial_symm[axis-'X']; ++i) { + const float angle = 2*M_PI*i/sd->radial_symm[axis-'X']; + ss->cache->radial_symmetry_pass= i; + calc_brushdata_symm(sd, ss->cache, symm, axis, angle, feather); + do_brush_action(sd, ss, brush); + } } static void do_symmetrical_brush_actions(Sculpt *sd, SculptSession *ss) { + Brush *brush = paint_brush(&sd->paint); StrokeCache *cache = ss->cache; const char symm = sd->flags & 7; int i; - copy_v3_v3(cache->location, cache->true_location); - copy_v3_v3(cache->grab_delta_symmetry, cache->grab_delta); - cache->symmetry = 0; - cache->bstrength = brush_strength(sd, cache); - do_brush_action(sd, ss, cache); + float feather = calc_symmetry_feather(sd, ss->cache); + + cache->bstrength= brush_strength(sd, cache, feather); - for(i = 1; i <= symm; ++i) { - if(symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5))) { - calc_brushdata_symm(cache, i); - do_brush_action(sd, ss, cache); + cache->symmetry= symm; + + /* symm is a bit combination of XYZ - 1 is mirror X; 2 is Y; 3 is XY; 4 is Z; 5 is XZ; 6 is YZ; 7 is XYZ */ + for(i = 0; i <= symm; ++i) { + if(i == 0 || (symm & i && (symm != 5 || i != 3) && (symm != 6 || (i != 3 && i != 5)))) { + cache->mirror_symmetry_pass= i; + cache->radial_symmetry_pass= 0; + + calc_brushdata_symm(sd, cache, i, 0, 0, feather); + do_brush_action(sd, ss, brush); + + do_radial_symmetry(sd, ss, brush, i, 'X', feather); + do_radial_symmetry(sd, ss, brush, i, 'Y', feather); + do_radial_symmetry(sd, ss, brush, i, 'Z', feather); } } - cache->first_time = 0; + sculpt_combine_proxies(sd, ss); + + cache->first_time= 0; } static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) @@ -1484,86 +2634,28 @@ static void sculpt_update_tex(Sculpt *sd, SculptSession *ss) } /* Need to allocate a bigger buffer for bigger brush size */ - ss->texcache_side = brush->size * 2; + ss->texcache_side = 2*sculpt_get_brush_size(brush); if(!ss->texcache || ss->texcache_side > ss->texcache_actual) { - ss->texcache = brush_gen_texture_cache(brush, brush->size); + ss->texcache = brush_gen_texture_cache(brush, sculpt_get_brush_size(brush)); ss->texcache_actual = ss->texcache_side; } } -/* Checks whether full update mode (slower) needs to be used to work with modifiers */ -static int sculpt_modifiers_active(Scene *scene, Object *ob) -{ - ModifierData *md; - - for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(modifier_isEnabled(scene, md, eModifierMode_Realtime)) - if(!ELEM(md->type, eModifierType_Multires, eModifierType_ShapeKey)) - return 1; - } - - return 0; -} - -/* Sculpt mode handles multires differently from regular meshes, but only if - it's the last modifier on the stack and it is not on the first level */ -struct MultiresModifierData *sculpt_multires_active(Object *ob) -{ - ModifierData *md, *nmd; - - for(md= modifiers_getVirtualModifierList(ob); md; md= md->next) { - if(md->type == eModifierType_Multires) { - MultiresModifierData *mmd= (MultiresModifierData*)md; - - /* Check if any of the modifiers after multires are active - * if not it can use the multires struct */ - for (nmd= md->next; nmd; nmd= nmd->next) - if(nmd->mode & eModifierMode_Realtime) - break; - - if(!nmd && mmd->sculptlvl > 0) - return mmd; - } - } - - return NULL; -} - -void sculpt_key_to_mesh(KeyBlock *kb, Object *ob) -{ - Mesh *me= ob->data; - - key_to_mesh(kb, me); - mesh_calc_normals(me->mvert, me->totvert, me->mface, me->totface, NULL); -} - -void sculpt_mesh_to_key(Object *ob, KeyBlock *kb) -{ - Mesh *me= ob->data; - - mesh_to_key(me, kb); -} - void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap) { - DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, CD_MASK_BAREMESH); SculptSession *ss = ob->sculpt; - + MultiresModifierData *mmd= sculpt_multires_active(scene, ob); + ss->ob= ob; - if((ob->shapeflag & OB_SHAPE_LOCK) && !sculpt_multires_active(ob)) { - ss->kb= ob_get_keyblock(ob); - ss->refkb= ob_get_reference_keyblock(ob); - } - else { - ss->kb= NULL; - ss->refkb= NULL; - } + ss->modifiers_active= sculpt_modifiers_active(scene, ob); - /* need to make PBVH with shape key coordinates */ - if(ss->kb) sculpt_key_to_mesh(ss->kb, ss->ob); + if((ob->shapeflag & OB_SHAPE_LOCK) && !mmd) ss->kb= ob_get_keyblock(ob); + else ss->kb= NULL; - if((ss->multires = sculpt_multires_active(ob))) { + if(mmd) { + ss->multires = mmd; ss->totvert = dm->getNumVerts(dm); ss->totface = dm->getNumTessFaces(dm); ss->mvert= NULL; @@ -1577,10 +2669,22 @@ void sculpt_update_mesh_elements(Scene *scene, Object *ob, int need_fmap) ss->mvert = me->mvert; ss->mface = me->mface; ss->face_normals = NULL; + ss->multires = NULL; } - ss->tree = dm->getPBVH(ob, dm); + ss->pbvh = dm->getPBVH(ob, dm); ss->fmap = (need_fmap && dm->getFaceMap)? dm->getFaceMap(ob, dm): NULL; + + /* if pbvh is deformed, key block is already applied to it */ + if (ss->kb && !BLI_pbvh_isDeformed(ss->pbvh)) { + float (*vertCos)[3]= key_to_vertcos(ob, ss->kb); + + if (vertCos) { + /* apply shape keys coordinates to PBVH */ + BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); + MEM_freeN(vertCos); + } + } } static int sculpt_mode_poll(bContext *C) @@ -1603,16 +2707,32 @@ static char *sculpt_tool_name(Sculpt *sd) return "Draw Brush"; break; case SCULPT_TOOL_SMOOTH: return "Smooth Brush"; break; + case SCULPT_TOOL_CREASE: + return "Crease Brush"; break; + case SCULPT_TOOL_BLOB: + return "Blob Brush"; break; case SCULPT_TOOL_PINCH: return "Pinch Brush"; break; case SCULPT_TOOL_INFLATE: return "Inflate Brush"; break; case SCULPT_TOOL_GRAB: return "Grab Brush"; break; + case SCULPT_TOOL_NUDGE: + return "Nudge Brush"; break; + case SCULPT_TOOL_THUMB: + return "Thumb Brush"; break; case SCULPT_TOOL_LAYER: return "Layer Brush"; break; case SCULPT_TOOL_FLATTEN: - return "Flatten Brush"; break; + return "Flatten Brush"; break; + case SCULPT_TOOL_CLAY: + return "Clay Brush"; break; + case SCULPT_TOOL_CLAY_TUBES: + return "Clay Tubes Brush"; break; + case SCULPT_TOOL_FILL: + return "Fill Brush"; break; + case SCULPT_TOOL_SCRAPE: + return "Scrape Brush"; break; default: return "Sculpting"; break; } @@ -1664,7 +2784,7 @@ static void SCULPT_OT_radial_control(wmOperatorType *ot) } /**** Operator for applying a stroke (various attributes including mouse path) - using the current brush. ****/ + using the current brush. ****/ static float unproject_brush_radius(Object *ob, ViewContext *vc, float center[3], float offset) { @@ -1690,13 +2810,60 @@ static void sculpt_cache_free(StrokeCache *cache) MEM_freeN(cache); } +int sculpt_get_brush_size(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_size : brush->size; +} + +void sculpt_set_brush_size(Brush *brush, int size) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) + U.sculpt_paint_unified_size = size; + else + brush->size = size; +} + +int sculpt_get_lock_brush_size(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? (U.sculpt_paint_settings & SCULPT_PAINT_UNIFIED_LOCK_BRUSH_SIZE) : (brush->flag & BRUSH_LOCK_SIZE); +} + +float sculpt_get_brush_unprojected_radius(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) ? U.sculpt_paint_unified_unprojected_radius : brush->unprojected_radius; +} + +void sculpt_set_brush_unprojected_radius(Brush *brush, float unprojected_radius) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_SIZE) + U.sculpt_paint_unified_unprojected_radius = unprojected_radius; + else + brush->unprojected_radius = unprojected_radius; +} + +float sculpt_get_brush_alpha(Brush *brush) +{ + return (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) ? U.sculpt_paint_unified_alpha : brush->alpha; +} + +void sculpt_set_brush_alpha(Brush *brush, float alpha) +{ + if (U.sculpt_paint_settings & SCULPT_PAINT_USE_UNIFIED_ALPHA) + U.sculpt_paint_unified_alpha = alpha; + else + brush->alpha = alpha; +} + /* Initialize the stroke cache invariants from operator properties */ -static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bContext *C, wmOperator *op) +static void sculpt_update_cache_invariants(bContext* C, Sculpt *sd, SculptSession *ss, wmOperator *op, wmEvent *event) { StrokeCache *cache = MEM_callocN(sizeof(StrokeCache), "stroke cache"); Brush *brush = paint_brush(&sd->paint); ViewContext *vc = paint_stroke_view_context(op->customdata); + Object *ob= CTX_data_active_object(C); + ModifierData *md; int i; + int mode; ss->cache = cache; @@ -1705,10 +2872,62 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte cache->prect.ymin = FLT_MAX; cache->prect.ymax = -FLT_MAX; - RNA_float_get_array(op->ptr, "scale", cache->scale); - cache->flag = RNA_int_get(op->ptr, "flag"); - RNA_float_get_array(op->ptr, "clip_tolerance", cache->clip_tolerance); - RNA_float_get_array(op->ptr, "initial_mouse", cache->initial_mouse); + /* Set scaling adjustment */ + ss->cache->scale[0] = 1.0f / ob->size[0]; + ss->cache->scale[1] = 1.0f / ob->size[1]; + ss->cache->scale[2] = 1.0f / ob->size[2]; + + ss->cache->plane_trim_squared = brush->plane_trim * brush->plane_trim; + + /* Initialize mirror modifier clipping */ + + ss->cache->flag = 0; + + for(md= ob->modifiers.first; md; md= md->next) { + if(md->type==eModifierType_Mirror && (md->mode & eModifierMode_Realtime)) { + const MirrorModifierData *mmd = (MirrorModifierData*) md; + + /* Mark each axis that needs clipping along with its tolerance */ + if(mmd->flag & MOD_MIR_CLIPPING) { + ss->cache->flag |= CLIP_X << mmd->axis; + if(mmd->tolerance > ss->cache->clip_tolerance[mmd->axis]) + ss->cache->clip_tolerance[mmd->axis] = mmd->tolerance; + } + } + } + + /* Initial mouse location */ + if (event) { + ss->cache->initial_mouse[0] = event->x; + ss->cache->initial_mouse[1] = event->y; + } + else { + ss->cache->initial_mouse[0] = 0; + ss->cache->initial_mouse[1] = 0; + } + + mode = RNA_int_get(op->ptr, "mode"); + cache->invert = mode == WM_BRUSHSTROKE_INVERT; + cache->alt_smooth = mode == WM_BRUSHSTROKE_SMOOTH; + + /* Alt-Smooth */ + if (ss->cache->alt_smooth) { + Paint *p= &sd->paint; + Brush *br; + int i; + + BLI_strncpy(cache->saved_active_brush_name, brush->id.name+2, sizeof(cache->saved_active_brush_name)); + + for(i = 0; i < p->brush_count; ++i) { + br = p->brushes[i]; + + if (strcmp(br->id.name+2, "Smooth")==0) { + paint_brush_set(p, br); + brush = br; + break; + } + } + } copy_v2_v2(cache->mouse, cache->initial_mouse); copy_v2_v2(cache->tex_mouse, cache->initial_mouse); @@ -1716,22 +2935,21 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte /* Truly temporary data that isn't stored in properties */ cache->vc = vc; + cache->brush = brush; cache->mats = MEM_callocN(sizeof(bglMats), "sculpt bglMats"); view3d_get_transformation(vc->ar, vc->rv3d, vc->obact, cache->mats); + viewvector(cache->vc->rv3d, cache->vc->rv3d->twmat[3], cache->true_view_normal); /* Initialize layer brush displacements and persistent coords */ - if(brush->sculpt_tool == SCULPT_TOOL_LAYER && !ss->multires) { - if(!ss->layer_disps || !(brush->flag & BRUSH_PERSISTENT)) { - if(ss->layer_disps) - MEM_freeN(ss->layer_disps); - ss->layer_disps = MEM_callocN(sizeof(float) * ss->totvert, "layer brush displacements"); - } - if(!ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { + if(brush->sculpt_tool == SCULPT_TOOL_LAYER) { + /* not supported yet for multires */ + if(!ss->multires && !ss->layer_co && (brush->flag & BRUSH_PERSISTENT)) { if(!ss->layer_co) ss->layer_co= MEM_mallocN(sizeof(float) * 3 * ss->totvert, - "sculpt mesh vertices copy"); + "sculpt mesh vertices copy"); + for(i = 0; i < ss->totvert; ++i) copy_v3_v3(ss->layer_co[i], ss->mvert[i].co); } @@ -1749,93 +2967,282 @@ static void sculpt_update_cache_invariants(Sculpt *sd, SculptSession *ss, bConte cache->original = 1; } - if(ELEM3(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE)) + if(ELEM7(brush->sculpt_tool, SCULPT_TOOL_DRAW, SCULPT_TOOL_CREASE, SCULPT_TOOL_BLOB, SCULPT_TOOL_LAYER, SCULPT_TOOL_INFLATE, SCULPT_TOOL_CLAY, SCULPT_TOOL_CLAY_TUBES)) if(!(brush->flag & BRUSH_ACCUMULATE)) cache->original = 1; - cache->rotation = 0; - cache->first_time = 1; + cache->special_rotation = (brush->flag & BRUSH_RAKE) ? sd->last_angle : 0; + //cache->last_rake[0] = sd->last_x; + //cache->last_rake[1] = sd->last_y; + + cache->first_time= 1; + + cache->vertex_rotation= 0; } /* Initialize the stroke cache variants from operator properties */ -static void sculpt_update_cache_variants(Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) +static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, SculptSession *ss, struct PaintStroke *stroke, PointerRNA *ptr) { StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - + int dx, dy; - if(!(brush->flag & BRUSH_ANCHORED) || cache->first_time) + //RNA_float_get_array(ptr, "location", cache->traced_location); + + if (cache->first_time || + !((brush->flag & BRUSH_ANCHORED)|| + (brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK)|| + (brush->sculpt_tool == SCULPT_TOOL_ROTATE)) + ) + { RNA_float_get_array(ptr, "location", cache->true_location); - cache->flip = RNA_boolean_get(ptr, "flip"); + } + + cache->pen_flip = RNA_boolean_get(ptr, "pen_flip"); RNA_float_get_array(ptr, "mouse", cache->mouse); + cache->pressure = RNA_float_get(ptr, "pressure"); - + /* Truly temporary data that isn't stored in properties */ + sd->draw_pressure= 1; + sd->pressure_value= cache->pressure; + cache->previous_pixel_radius = cache->pixel_radius; - cache->pixel_radius = brush->size; + cache->pixel_radius = sculpt_get_brush_size(brush); - if(cache->first_time) - cache->initial_radius = unproject_brush_radius(ss->ob, cache->vc, cache->true_location, brush->size); + if(cache->first_time) { + if (!sculpt_get_lock_brush_size(brush)) { + cache->initial_radius= unproject_brush_radius(ss->ob, cache->vc, cache->true_location, sculpt_get_brush_size(brush)); + sculpt_set_brush_unprojected_radius(brush, cache->initial_radius); + } + else { + cache->initial_radius= sculpt_get_brush_unprojected_radius(brush); + } - if(brush->flag & BRUSH_SIZE_PRESSURE && brush->sculpt_tool != SCULPT_TOOL_GRAB) { + if (ELEM(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK)) + cache->initial_radius *= 2.0f; + } + + if(brush->flag & BRUSH_SIZE_PRESSURE) { cache->pixel_radius *= cache->pressure; - cache->radius = cache->initial_radius * cache->pressure; + cache->radius= cache->initial_radius * cache->pressure; } else - cache->radius = cache->initial_radius; + cache->radius= cache->initial_radius; - if(!(brush->flag & BRUSH_ANCHORED)) + cache->radius_squared = cache->radius*cache->radius; + + if(!(brush->flag & BRUSH_ANCHORED || ELEM4(brush->sculpt_tool, SCULPT_TOOL_GRAB, SCULPT_TOOL_SNAKE_HOOK, SCULPT_TOOL_THUMB, SCULPT_TOOL_ROTATE))) { copy_v2_v2(cache->tex_mouse, cache->mouse); + if ( (brush->mtex.brush_map_mode == MTEX_MAP_MODE_FIXED) && + (brush->flag & BRUSH_RANDOM_ROTATION) && + !(brush->flag & BRUSH_RAKE)) + { + cache->special_rotation = 2*M_PI*BLI_frand(); + } + } + if(brush->flag & BRUSH_ANCHORED) { + int hit = 0; + dx = cache->mouse[0] - cache->initial_mouse[0]; dy = cache->mouse[1] - cache->initial_mouse[1]; - cache->pixel_radius = sqrt(dx*dx + dy*dy); - cache->radius = unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke), - cache->true_location, cache->pixel_radius); - cache->rotation = atan2(dy, dx); + + sd->anchored_size = cache->pixel_radius = sqrt(dx*dx + dy*dy); + + cache->special_rotation = atan2(dx, dy) + M_PI; + + if (brush->flag & BRUSH_EDGE_TO_EDGE) { + float d[3]; + float halfway[3]; + float out[3]; + + d[0] = dx; + d[1] = dy; + d[2] = 0; + + mul_v3_v3fl(halfway, d, 0.5f); + add_v3_v3(halfway, cache->initial_mouse); + + if (sculpt_stroke_get_location(C, stroke, out, halfway)) { + copy_v3_v3(sd->anchored_location, out); + copy_v3_v3(sd->anchored_initial_mouse, halfway); + copy_v2_v2(cache->tex_mouse, halfway); + copy_v3_v3(cache->true_location, sd->anchored_location); + sd->anchored_size /= 2.0f; + cache->pixel_radius /= 2.0f; + hit = 1; + } + } + + if (!hit) + copy_v2_v2(sd->anchored_initial_mouse, cache->initial_mouse); + + cache->radius= unproject_brush_radius(ss->ob, paint_stroke_view_context(stroke), cache->true_location, cache->pixel_radius); + cache->radius_squared = cache->radius*cache->radius; + + copy_v3_v3(sd->anchored_location, cache->true_location); + + sd->draw_anchored = 1; } else if(brush->flag & BRUSH_RAKE) { - int update; - - dx = cache->last_rake[0] - cache->mouse[0]; - dy = cache->last_rake[1] - cache->mouse[1]; + const float u = 0.5f; + const float v = 1 - u; + const float r = 20; - update = dx*dx + dy*dy > 100; + const float dx = cache->last_rake[0] - cache->mouse[0]; + const float dy = cache->last_rake[1] - cache->mouse[1]; - /* To prevent jitter, only update the angle if the mouse has moved over 10 pixels */ - if(update && !cache->first_time) - cache->rotation = M_PI_2 + atan2(dy, dx); + if (cache->first_time) { + copy_v3_v3(cache->last_rake, cache->mouse); + } + else if (dx*dx + dy*dy >= r*r) { + cache->special_rotation = atan2(dx, dy); - if(update || cache->first_time) { - cache->last_rake[0] = cache->mouse[0]; - cache->last_rake[1] = cache->mouse[1]; + cache->last_rake[0] = u*cache->last_rake[0] + v*cache->mouse[0]; + cache->last_rake[1] = u*cache->last_rake[1] + v*cache->mouse[1]; } } /* Find the grab delta */ if(brush->sculpt_tool == SCULPT_TOOL_GRAB) { - float grab_location[3]; + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if(!cache->first_time) { + float delta[3]; + sub_v3_v3v3(delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, delta); + add_v3_v3(cache->grab_delta, delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + + /* location stays the same for finding vertices in brush radius */ + copy_v3_v3(cache->true_location, cache->orig_grab_location); + + sd->draw_anchored = 1; + copy_v3_v3(sd->anchored_location, cache->true_location); + copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); + sd->anchored_size = cache->pixel_radius; + } + /* Find the nudge/clay tubes delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_NUDGE || brush->sculpt_tool == SCULPT_TOOL_CLAY_TUBES) { + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if (!cache->first_time) { + sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + } + /* Find the snake hook delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_SNAKE_HOOK) { + float grab_location[3], imat[4][4]; if(cache->first_time) copy_v3_v3(cache->orig_grab_location, cache->true_location); + else + add_v3_v3(cache->true_location, cache->grab_delta); - initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], cache->orig_grab_location[1], cache->orig_grab_location[2]); + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); - if(!cache->first_time) + /* compute delta to move verts by */ + if (!cache->first_time) { sub_v3_v3v3(cache->grab_delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, cache->grab_delta); + } + else { + zero_v3(cache->grab_delta); + } + + copy_v3_v3(cache->old_grab_location, grab_location); + } + /* Find the thumb delta */ + else if(brush->sculpt_tool == SCULPT_TOOL_THUMB) { + float grab_location[3], imat[4][4]; + + if(cache->first_time) + copy_v3_v3(cache->orig_grab_location, cache->true_location); + + /* compute 3d coordinate at same z from original location + mouse */ + initgrabz(cache->vc->rv3d, cache->orig_grab_location[0], + cache->orig_grab_location[1], cache->orig_grab_location[2]); + window_to_3d_delta(cache->vc->ar, grab_location, cache->mouse[0], cache->mouse[1]); + + /* compute delta to move verts by */ + if (!cache->first_time) { + float delta[3]; + sub_v3_v3v3(delta, grab_location, cache->old_grab_location); + invert_m4_m4(imat, ss->ob->obmat); + mul_mat3_m4_v3(imat, delta); + add_v3_v3(cache->grab_delta, delta); + } + else { + zero_v3(cache->grab_delta); + } + copy_v3_v3(cache->old_grab_location, grab_location); + + /* location stays the same for finding vertices in brush radius */ + copy_v3_v3(cache->true_location, cache->orig_grab_location); + + sd->draw_anchored = 1; + copy_v3_v3(sd->anchored_location, cache->orig_grab_location); + copy_v3_v3(sd->anchored_initial_mouse, cache->initial_mouse); + sd->anchored_size = cache->pixel_radius; } + else if(brush->sculpt_tool == SCULPT_TOOL_ROTATE) { + dx = cache->mouse[0] - cache->initial_mouse[0]; + dy = cache->mouse[1] - cache->initial_mouse[1]; + + cache->vertex_rotation = -atan2(dx, dy) / 4.0f; + + sd->draw_anchored = 1; + copy_v2_v2(sd->anchored_initial_mouse, cache->initial_mouse); + copy_v3_v3(sd->anchored_location, cache->true_location); + sd->anchored_size = cache->pixel_radius; + } + + sd->special_rotation = cache->special_rotation; } static void sculpt_stroke_modifiers_check(bContext *C, SculptSession *ss) { - Scene *scene= CTX_data_scene(C); - - if(sculpt_modifiers_active(scene, ss->ob)) { + if(ss->modifiers_active) { Sculpt *sd = CTX_data_tool_settings(C)->sculpt; Brush *brush = paint_brush(&sd->paint); @@ -1851,19 +3258,23 @@ typedef struct { int original; } SculptRaycastData; -void sculpt_raycast_cb(PBVHNode *node, void *data_v) +void sculpt_raycast_cb(PBVHNode *node, void *data_v, float* tmin) { - SculptRaycastData *srd = data_v; - float (*origco)[3]= NULL; + if (BLI_pbvh_node_get_tmin(node) < *tmin) { + SculptRaycastData *srd = data_v; + float (*origco)[3]= NULL; - if(srd->original && srd->ss->cache) { - /* intersect with coordinates from before we started stroke */ - SculptUndoNode *unode= sculpt_undo_get_node(srd->ss, node); - origco= (unode)? unode->co: NULL; - } + if(srd->original && srd->ss->cache) { + /* intersect with coordinates from before we started stroke */ + SculptUndoNode *unode= sculpt_undo_get_node(node); + origco= (unode)? unode->co: NULL; + } - srd->hit |= BLI_pbvh_node_raycast(srd->ss->tree, node, origco, - srd->ray_start, srd->ray_normal, &srd->dist); + if (BLI_pbvh_node_raycast(srd->ss->pbvh, node, origco, srd->ray_start, srd->ray_normal, &srd->dist)) { + srd->hit = 1; + *tmin = srd->dist; + } + } } /* Do a raycast in the tree to find the 3d brush location @@ -1877,20 +3288,22 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou StrokeCache *cache= ss->cache; float ray_start[3], ray_end[3], ray_normal[3], dist; float obimat[4][4]; - float mval[2] = {mouse[0] - vc->ar->winrct.xmin, - mouse[1] - vc->ar->winrct.ymin}; + float mval[2]; SculptRaycastData srd; + mval[0] = mouse[0] - vc->ar->winrct.xmin; + mval[1] = mouse[1] - vc->ar->winrct.ymin; + sculpt_stroke_modifiers_check(C, ss); viewline(vc->ar, vc->v3d, mval, ray_start, ray_end); - sub_v3_v3v3(ray_normal, ray_end, ray_start); - dist= normalize_v3(ray_normal); invert_m4_m4(obimat, ss->ob->obmat); mul_m4_v3(obimat, ray_start); - mul_mat3_m4_v3(obimat, ray_normal); - normalize_v3(ray_normal); + mul_m4_v3(obimat, ray_end); + + sub_v3_v3v3(ray_normal, ray_end, ray_start); + dist= normalize_v3(ray_normal); srd.ss = vc->obact->sculpt; srd.ray_start = ray_start; @@ -1898,53 +3311,16 @@ int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float ou srd.dist = dist; srd.hit = 0; srd.original = (cache)? cache->original: 0; - BLI_pbvh_raycast(ss->tree, sculpt_raycast_cb, &srd, - ray_start, ray_normal, srd.original); + BLI_pbvh_raycast(ss->pbvh, sculpt_raycast_cb, &srd, + ray_start, ray_normal, srd.original); copy_v3_v3(out, ray_normal); mul_v3_fl(out, srd.dist); - add_v3_v3v3(out, out, ray_start); + add_v3_v3(out, ray_start); return srd.hit; } -/* Initialize stroke operator properties */ -static void sculpt_brush_stroke_init_properties(bContext *C, wmOperator *op, wmEvent *event, SculptSession *ss) -{ - Object *ob= CTX_data_active_object(C); - ModifierData *md; - float scale[3], clip_tolerance[3] = {0,0,0}; - float mouse[2]; - int flag = 0; - - /* Set scaling adjustment */ - scale[0] = 1.0f / ob->size[0]; - scale[1] = 1.0f / ob->size[1]; - scale[2] = 1.0f / ob->size[2]; - RNA_float_set_array(op->ptr, "scale", scale); - - /* Initialize mirror modifier clipping */ - for(md= ob->modifiers.first; md; md= md->next) { - if(md->type==eModifierType_Mirror && (md->mode & eModifierMode_Realtime)) { - const MirrorModifierData *mmd = (MirrorModifierData*) md; - - /* Mark each axis that needs clipping along with its tolerance */ - if(mmd->flag & MOD_MIR_CLIPPING) { - flag |= CLIP_X << mmd->axis; - if(mmd->tolerance > clip_tolerance[mmd->axis]) - clip_tolerance[mmd->axis] = mmd->tolerance; - } - } - } - RNA_int_set(op->ptr, "flag", flag); - RNA_float_set_array(op->ptr, "clip_tolerance", clip_tolerance); - - /* Initial mouse location */ - mouse[0] = event->x; - mouse[1] = event->y; - RNA_float_set_array(op->ptr, "initial_mouse", mouse); -} - static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) { Scene *scene= CTX_data_scene(C); @@ -1972,31 +3348,39 @@ static int sculpt_brush_stroke_init(bContext *C, ReportList *reports) static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) { - StrokeCache *cache = ss->cache; Brush *brush = paint_brush(&sd->paint); - int i; /* Restore the mesh before continuing with anchored stroke */ - if(brush->flag & BRUSH_ANCHORED) { + if((brush->flag & BRUSH_ANCHORED) || + (brush->sculpt_tool == SCULPT_TOOL_GRAB && (brush->flag & BRUSH_SIZE_PRESSURE)) || + (brush->flag & BRUSH_RESTORE_MESH)) + { + StrokeCache *cache = ss->cache; + int i; + PBVHNode **nodes; int n, totnode; - BLI_pbvh_search_gather(ss->tree, NULL, NULL, &nodes, &totnode); + BLI_pbvh_search_gather(ss->pbvh, NULL, NULL, &nodes, &totnode); - #pragma omp parallel for private(n) schedule(static) + #pragma omp parallel for schedule(guided) if (sd->flags & SCULPT_USE_OPENMP) for(n=0; n<totnode; n++) { SculptUndoNode *unode; - unode= sculpt_undo_get_node(ss, nodes[n]); + unode= sculpt_undo_get_node(nodes[n]); if(unode) { PBVHVertexIter vd; - BLI_pbvh_vertex_iter_begin(ss->tree, nodes[n], vd, PBVH_ITER_UNIQUE) { + BLI_pbvh_vertex_iter_begin(ss->pbvh, nodes[n], vd, PBVH_ITER_UNIQUE) { copy_v3_v3(vd.co, unode->co[vd.i]); if(vd.no) VECCOPY(vd.no, unode->no[vd.i]) else normal_short_to_float_v3(vd.fno, unode->no[vd.i]); + + if(vd.mvert) vd.mvert->flag |= ME_VERT_PBVH_UPDATE; } BLI_pbvh_vertex_iter_end; + + BLI_pbvh_node_mark_update(nodes[n]); } } @@ -2006,47 +3390,46 @@ static void sculpt_restore_mesh(Sculpt *sd, SculptSession *ss) copy_v3_v3(fn, cache->face_norms[i]); } - if(brush->sculpt_tool == SCULPT_TOOL_LAYER && !ss->multires) - memset(ss->layer_disps, 0, sizeof(float) * ss->totvert); + if(nodes) + MEM_freeN(nodes); } } static void sculpt_flush_update(bContext *C) { - Scene *scene = CTX_data_scene(C); Object *ob = CTX_data_active_object(C); SculptSession *ss = ob->sculpt; ARegion *ar = CTX_wm_region(C); MultiresModifierData *mmd = ss->multires; - int redraw = 0; if(mmd) multires_mark_as_modified(ob); - if(sculpt_modifiers_active(scene, ob)) { + if(ss->modifiers_active) { DAG_id_flush_update(&ob->id, OB_RECALC_DATA); ED_region_tag_redraw(ar); } else { rcti r; int off = 0; -#if 0 /*debug code to expand the partial redraw rect by 400 every other frame*/ - static int c = 0; - c++; - if (c % 2 == 0) - off = 400; - else off = 0; -#endif - BLI_pbvh_update(ss->tree, PBVH_UpdateBB, NULL); - redraw = sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r); + BLI_pbvh_update(ss->pbvh, PBVH_UpdateBB, NULL); + + if (sculpt_get_redraw_rect(ar, CTX_wm_region_view3d(C), ob, &r)) { + //rcti tmp; - if(redraw) { r.xmin += ar->winrct.xmin + 1 + off; r.xmax += ar->winrct.xmin - 1 - off; r.ymin += ar->winrct.ymin + 1 + off; r.ymax += ar->winrct.ymin - 1 - off; - + + //tmp = r; + + //if (!BLI_rcti_is_empty(&ss->previous_r)) + // BLI_union_rcti(&r, &ss->previous_r); + + //ss->previous_r= tmp; + ss->partial_redraw = 1; ED_region_tag_redraw_partial(ar, &r); } @@ -2057,13 +3440,16 @@ static void sculpt_flush_update(bContext *C) or over the background (0) */ static int over_mesh(bContext *C, struct wmOperator *op, float x, float y) { - float mouse[2] = {x, y}, co[3]; - - return (int)sculpt_stroke_get_location(C, op->customdata, co, mouse); + float mouse[2], co[3]; + + mouse[0] = x; + mouse[1] = y; + + return sculpt_stroke_get_location(C, op->customdata, co, mouse); } static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, - wmEvent *event) + wmEvent *event) { /* Don't start the stroke until mouse goes over the mesh */ if(over_mesh(C, op, event->x, event->y)) { @@ -2073,11 +3459,22 @@ static int sculpt_stroke_test_start(bContext *C, struct wmOperator *op, ED_view3d_init_mats_rv3d(ob, CTX_wm_region_view3d(C)); - sculpt_brush_stroke_init_properties(C, op, event, ss); + sculpt_update_cache_invariants(C, sd, ss, op, event); - sculpt_update_cache_invariants(sd, ss, C, op); + sculpt_undo_push_begin(sculpt_tool_name(sd)); - sculpt_undo_push_begin(ss, sculpt_tool_name(sd)); +#ifdef _OPENMP + /* If using OpenMP then create a number of threads two times the + number of processor cores. + Justification: Empirically I've found that two threads per + processor gives higher throughput. */ + if (sd->flags & SCULPT_USE_OPENMP) { + int num_procs; + + num_procs = omp_get_num_procs(); + omp_set_num_threads(2*num_procs); + } +#endif return 1; } @@ -2091,7 +3488,7 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P SculptSession *ss = CTX_data_active_object(C)->sculpt; sculpt_stroke_modifiers_check(C, ss); - sculpt_update_cache_variants(sd, ss, stroke, itemptr); + sculpt_update_cache_variants(C, sd, ss, stroke, itemptr); sculpt_restore_mesh(sd, ss); do_symmetrical_brush_actions(sd, ss); @@ -2099,26 +3496,53 @@ static void sculpt_stroke_update_step(bContext *C, struct PaintStroke *stroke, P sculpt_flush_update(C); } -static void sculpt_stroke_done(bContext *C, struct PaintStroke *stroke) +static void sculpt_stroke_done(bContext *C, struct PaintStroke *unused) { Object *ob= CTX_data_active_object(C); SculptSession *ss = ob->sculpt; + Sculpt *sd = CTX_data_tool_settings(C)->sculpt; + + (void)unused; + + // reset values used to draw brush after completing the stroke + sd->draw_anchored= 0; + sd->draw_pressure= 0; + sd->special_rotation= 0; /* Finished */ if(ss->cache) { sculpt_stroke_modifiers_check(C, ss); + /* Alt-Smooth */ + if (ss->cache->alt_smooth) { + Paint *p= &sd->paint; + Brush *br; + int i; + + for(i = 0; i < p->brush_count; ++i) { + br = p->brushes[i]; + + if (strcmp(br->id.name+2, ss->cache->saved_active_brush_name)==0) { + paint_brush_set(p, br); + break; + } + } + } + sculpt_cache_free(ss->cache); ss->cache = NULL; - sculpt_undo_push_end(ss); + sculpt_undo_push_end(); - BLI_pbvh_update(ss->tree, PBVH_UpdateOriginalBB, NULL); + BLI_pbvh_update(ss->pbvh, PBVH_UpdateOriginalBB, NULL); - if(ss->refkb) sculpt_key_to_mesh(ss->refkb, ob); + /* optimization: if there is locked key and active modifiers present in */ + /* the stack, keyblock is updating at each step. otherwise we could update */ + /* keyblock only when stroke is finished */ + if(ss->kb && !ss->modifiers_active) sculpt_update_keyblock(ss); ss->partial_redraw = 0; - + /* try to avoid calling this, only for e.g. linked duplicates now */ if(((Mesh*)ob->data)->id.us > 1) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); @@ -2145,6 +3569,7 @@ static int sculpt_brush_stroke_invoke(bContext *C, wmOperator *op, wmEvent *even /* For tablet rotation */ ignore_background_click = RNA_boolean_get(op->ptr, "ignore_background_click"); + if(ignore_background_click && !over_mesh(C, op, event->x, event->y)) { paint_stroke_free(stroke); return OPERATOR_PASS_THROUGH; @@ -2169,7 +3594,7 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) op->customdata = paint_stroke_new(C, sculpt_stroke_get_location, sculpt_stroke_test_start, sculpt_stroke_update_step, sculpt_stroke_done); - sculpt_update_cache_invariants(sd, ss, C, op); + sculpt_update_cache_invariants(C, sd, ss, op, NULL); paint_stroke_exec(C, op); @@ -2181,7 +3606,12 @@ static int sculpt_brush_stroke_exec(bContext *C, wmOperator *op) static void SCULPT_OT_brush_stroke(wmOperatorType *ot) { - ot->flag |= OPTYPE_REGISTER; + static EnumPropertyItem stroke_mode_items[] = { + { WM_BRUSHSTROKE_NORMAL, "NORMAL", 0, "Normal", "Apply brush normally" }, + { WM_BRUSHSTROKE_INVERT, "INVERT", 0, "Invert", "Invert action of brush for duration of stroke" }, + { WM_BRUSHSTROKE_SMOOTH, "SMOOTH", 0, "Smooth", "Switch brush to smooth mode for duration of stroke" }, + { 0 } + }; /* identifiers */ ot->name= "Sculpt Mode"; @@ -2192,41 +3622,33 @@ static void SCULPT_OT_brush_stroke(wmOperatorType *ot) ot->modal= paint_stroke_modal; ot->exec= sculpt_brush_stroke_exec; ot->poll= sculpt_poll; - + /* flags (sculpt does own undo? (ton) */ - ot->flag= OPTYPE_REGISTER|OPTYPE_BLOCKING; + ot->flag= OPTYPE_BLOCKING; /* properties */ - RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, "Stroke", ""); - /* If the object has a scaling factor, brushes also need to be scaled - to work as expected. */ - RNA_def_float_vector(ot->srna, "scale", 3, NULL, 0.0f, FLT_MAX, "Scale", "", 0.0f, 1000.0f); + RNA_def_collection_runtime(ot->srna, "stroke", &RNA_OperatorStrokeElement, + "Stroke", ""); - RNA_def_int(ot->srna, "flag", 0, 0, INT_MAX, "flag", "", 0, INT_MAX); - - /* For mirror modifiers */ - RNA_def_float_vector(ot->srna, "clip_tolerance", 3, NULL, 0.0f, FLT_MAX, "clip_tolerance", "", 0.0f, 1000.0f); - - /* The initial 2D location of the mouse */ - RNA_def_float_vector(ot->srna, "initial_mouse", 2, NULL, INT_MIN, INT_MAX, "initial_mouse", "", INT_MIN, INT_MAX); + RNA_def_enum(ot->srna, "mode", stroke_mode_items, WM_BRUSHSTROKE_NORMAL, + "Sculpt Stroke Mode", + "Action taken when a sculpt stroke is made"); RNA_def_boolean(ot->srna, "ignore_background_click", 0, "Ignore Background Click", - "Clicks on the background don't start the stroke"); + "Clicks on the background do not start the stroke"); } /**** Reset the copy of the mesh that is being sculpted on (currently just for the layer brush) ****/ -static int sculpt_set_persistent_base(bContext *C, wmOperator *op) +static int sculpt_set_persistent_base(bContext *C, wmOperator *unused) { SculptSession *ss = CTX_data_active_object(C)->sculpt; - if(ss) { - if(ss->layer_disps) - MEM_freeN(ss->layer_disps); - ss->layer_disps = NULL; + (void)unused; + if(ss) { if(ss->layer_co) MEM_freeN(ss->layer_co); ss->layer_co = NULL; @@ -2245,7 +3667,7 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) ot->exec= sculpt_set_persistent_base; ot->poll= sculpt_mode_poll; - ot->flag= OPTYPE_REGISTER; + ot->flag= 0;//OPTYPE_REGISTER; } /**** Toggle operator for turning sculpt mode on or off ****/ @@ -2253,46 +3675,56 @@ static void SCULPT_OT_set_persistent_base(wmOperatorType *ot) static void sculpt_init_session(Scene *scene, Object *ob) { ob->sculpt = MEM_callocN(sizeof(SculptSession), "sculpt session"); + ob->sculpt->ob = ob; sculpt_update_mesh_elements(scene, ob, 0); - - if(ob->sculpt->refkb) - sculpt_key_to_mesh(ob->sculpt->refkb, ob); } -static int sculpt_toggle_mode(bContext *C, wmOperator *op) +static int sculpt_toggle_mode(bContext *C, wmOperator *unused) { Scene *scene = CTX_data_scene(C); ToolSettings *ts = CTX_data_tool_settings(C); Object *ob = CTX_data_active_object(C); - MultiresModifierData *mmd = sculpt_multires_active(ob); + MultiresModifierData *mmd= sculpt_multires_active(scene, ob); + int flush_recalc= 0; + + (void)unused; + + /* multires in sculpt mode could have different from object mode subdivision level */ + flush_recalc |= mmd && mmd->sculptlvl != mmd->lvl; + /* if object has got active modifiers, it's dm could be different in sculpt mode */ + //flush_recalc |= sculpt_modifiers_active(scene, ob); if(ob->mode & OB_MODE_SCULPT) { - if(sculpt_multires_active(ob)) + if(mmd) multires_force_update(ob); - if(mmd && mmd->sculptlvl != mmd->lvl) + if(flush_recalc) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* Leave sculptmode */ ob->mode &= ~OB_MODE_SCULPT; - free_sculptsession(&ob->sculpt); + free_sculptsession(ob); } else { /* Enter sculptmode */ ob->mode |= OB_MODE_SCULPT; - if(mmd && mmd->sculptlvl != mmd->lvl) + if(flush_recalc) DAG_id_flush_update(&ob->id, OB_RECALC_DATA); /* Create persistent sculpt mode data */ - if(!ts->sculpt) + if(!ts->sculpt) { ts->sculpt = MEM_callocN(sizeof(Sculpt), "sculpt mode data"); + /* Turn on X plane mirror symmetry by default */ + ts->sculpt->flags |= SCULPT_SYMM_X; + } + /* Create sculpt mode session data */ if(ob->sculpt) - free_sculptsession(&ob->sculpt); + free_sculptsession(ob); sculpt_init_session(scene, ob); @@ -2316,7 +3748,7 @@ static void SCULPT_OT_sculptmode_toggle(wmOperatorType *ot) ot->exec= sculpt_toggle_mode; ot->poll= ED_operator_object_active; - ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + ot->flag= 0; } void ED_operatortypes_sculpt() diff --git a/source/blender/editors/sculpt_paint/sculpt_intern.h b/source/blender/editors/sculpt_paint/sculpt_intern.h index d3553c008b2..a46823a0b28 100644 --- a/source/blender/editors/sculpt_paint/sculpt_intern.h +++ b/source/blender/editors/sculpt_paint/sculpt_intern.h @@ -32,6 +32,9 @@ #include "DNA_listBase.h" #include "DNA_vec_types.h" +#include "DNA_key_types.h" + +#include "BLI_pbvh.h" struct bContext; struct Brush; @@ -49,7 +52,7 @@ void sculptmode_draw_mesh(int); void sculpt_paint_brush(char clear); void sculpt_stroke_draw(struct SculptStroke *); void sculpt_radialcontrol_start(int mode); -struct MultiresModifierData *sculpt_multires_active(struct Object *ob); +struct MultiresModifierData *sculpt_multires_active(struct Scene *scene, struct Object *ob); struct Brush *sculptmode_brush(void); //void do_symmetrical_brush_actions(struct Sculpt *sd, struct wmOperator *wm, struct BrushAction *a, short *, short *); @@ -58,8 +61,6 @@ void sculpt(Sculpt *sd); int sculpt_poll(struct bContext *C); void sculpt_update_mesh_elements(struct Scene *scene, struct Object *ob, int need_fmap); -void sculpt_key_to_mesh(struct KeyBlock *kb, struct Object *ob); -void sculpt_mesh_to_key(struct Object *ob, struct KeyBlock *kb); /* Stroke */ struct SculptStroke *sculpt_stroke_new(const int max); @@ -67,8 +68,49 @@ void sculpt_stroke_free(struct SculptStroke *); void sculpt_stroke_add_point(struct SculptStroke *, const short x, const short y); void sculpt_stroke_apply(struct Sculpt *sd, struct SculptStroke *); void sculpt_stroke_apply_all(struct Sculpt *sd, struct SculptStroke *); +int sculpt_stroke_get_location(bContext *C, struct PaintStroke *stroke, float out[3], float mouse[2]); /* Partial Mesh Visibility */ void sculptmode_pmv(int mode); +/* Undo */ + +typedef struct SculptUndoNode { + struct SculptUndoNode *next, *prev; + + char idname[MAX_ID_NAME]; /* name instead of pointer*/ + void *node; /* only during push, not valid afterwards! */ + + float (*co)[3]; + short (*no)[3]; + int totvert; + + /* non-multires */ + int maxvert; /* to verify if totvert it still the same */ + int *index; /* to restore into right location */ + + /* multires */ + int maxgrid; /* same for grid */ + int gridsize; /* same for grid */ + int totgrid; /* to restore into right location */ + int *grids; /* to restore into right location */ + + /* layer brush */ + float *layer_disp; + + /* shape keys */ + char *shapeName[32]; /* keep size in sync with keyblock dna */ +} SculptUndoNode; + +SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node); +SculptUndoNode *sculpt_undo_get_node(PBVHNode *node); +void sculpt_undo_push_begin(char *name); +void sculpt_undo_push_end(void); + +struct MultiresModifierData *sculpt_multires_active(struct Scene *scene, struct Object *ob); +int sculpt_modifiers_active(Scene *scene, Object *ob); +void sculpt_vertcos_to_key(Object *ob, KeyBlock *kb, float (*vertCos)[3]); + +void brush_jitter_pos(Brush *brush, float *pos, float *jitterpos); + #endif diff --git a/source/blender/editors/sculpt_paint/sculpt_undo.c b/source/blender/editors/sculpt_paint/sculpt_undo.c new file mode 100644 index 00000000000..e4121c9c76a --- /dev/null +++ b/source/blender/editors/sculpt_paint/sculpt_undo.c @@ -0,0 +1,302 @@ +/* + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2006 by Nicholas Bishop + * All rights reserved. + * + * The Original Code is: all of this file. + * + * Contributor(s): none yet. + * + * ***** END GPL LICENSE BLOCK ***** + * + * Implements the Sculpt Mode tools + * + */ + +#include "BLI_math.h" +#include "BLI_ghash.h" +#include "BLI_threads.h" + +#include "DNA_meshdata_types.h" +#include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_mesh_types.h" +#include "DNA_key_types.h" + +#include "BKE_cdderivedmesh.h" +#include "BKE_context.h" +#include "BKE_depsgraph.h" +#include "BKE_modifier.h" +#include "BKE_multires.h" +#include "BKE_paint.h" +#include "BKE_mesh.h" +#include "BKE_key.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "ED_sculpt.h" +#include "paint_intern.h" +#include "sculpt_intern.h" + +/************************** Undo *************************/ + +static void update_cb(PBVHNode *node, void *unused) +{ + (void)unused; + BLI_pbvh_node_mark_update(node); +} + +static void sculpt_undo_restore(bContext *C, ListBase *lb) +{ + Scene *scene = CTX_data_scene(C); + Object *ob = CTX_data_active_object(C); + DerivedMesh *dm = mesh_get_derived_final(scene, ob, 0); + SculptSession *ss = ob->sculpt; + SculptUndoNode *unode; + MVert *mvert; + MultiresModifierData *mmd; + int *index; + int i, j, update= 0; + + sculpt_update_mesh_elements(scene, ob, 0); + + for(unode=lb->first; unode; unode=unode->next) { + if(!(strcmp(unode->idname, ob->id.name)==0)) + continue; + + if(unode->maxvert) { + char *shapeName= (char*)unode->shapeName; + + /* regular mesh restore */ + if(ss->totvert != unode->maxvert) + continue; + + if (ss->kb && strcmp(ss->kb->name, shapeName)) { + /* shape key has been changed before calling undo operator */ + + Key *key= ob_get_key(ob); + KeyBlock *kb= key_get_named_keyblock(key, shapeName); + + if (kb) { + ob->shapenr= BLI_findindex(&key->block, kb) + 1; + ob->shapeflag|= OB_SHAPE_LOCK; + + sculpt_update_mesh_elements(scene, ob, 0); + WM_event_add_notifier(C, NC_OBJECT|ND_DATA, ob); + } else { + /* key has been removed -- skip this undo node */ + continue; + } + } + + index= unode->index; + mvert= ss->mvert; + + if (ss->kb) { + float (*vertCos)[3]; + vertCos= key_to_vertcos(ob, ss->kb); + + for(i=0; i<unode->totvert; i++) + swap_v3_v3(vertCos[index[i]], unode->co[i]); + + /* propagate new coords to keyblock */ + sculpt_vertcos_to_key(ob, ss->kb, vertCos); + + /* pbvh uses it's own mvert array, so coords should be */ + /* propagated to pbvh here */ + BLI_pbvh_apply_vertCos(ss->pbvh, vertCos); + + MEM_freeN(vertCos); + } else { + for(i=0; i<unode->totvert; i++) { + swap_v3_v3(mvert[index[i]].co, unode->co[i]); + mvert[index[i]].flag |= ME_VERT_PBVH_UPDATE; + } + } + } + else if(unode->maxgrid && dm->getGridData) { + /* multires restore */ + DMGridData **grids, *grid; + float (*co)[3]; + int gridsize; + + if(dm->getNumGrids(dm) != unode->maxgrid) + continue; + if(dm->getGridSize(dm) != unode->gridsize) + continue; + + grids= dm->getGridData(dm); + gridsize= dm->getGridSize(dm); + + co = unode->co; + for(j=0; j<unode->totgrid; j++) { + grid= grids[unode->grids[j]]; + + for(i=0; i<gridsize*gridsize; i++, co++) + swap_v3_v3(grid[i].co, co[0]); + } + } + + update= 1; + } + + if(update) { + /* we update all nodes still, should be more clever, but also + needs to work correct when exiting/entering sculpt mode and + the nodes get recreated, though in that case it could do all */ + BLI_pbvh_search_callback(ss->pbvh, NULL, NULL, update_cb, NULL); + BLI_pbvh_update(ss->pbvh, PBVH_UpdateBB|PBVH_UpdateOriginalBB|PBVH_UpdateRedraw, NULL); + + if((mmd=sculpt_multires_active(scene, ob))) + multires_mark_as_modified(ob); + + if(ss->modifiers_active || ((Mesh*)ob->data)->id.us > 1) + DAG_id_flush_update(&ob->id, OB_RECALC_DATA); + } +} + +static void sculpt_undo_free(ListBase *lb) +{ + SculptUndoNode *unode; + + for(unode=lb->first; unode; unode=unode->next) { + if(unode->co) + MEM_freeN(unode->co); + if(unode->no) + MEM_freeN(unode->no); + if(unode->index) + MEM_freeN(unode->index); + if(unode->grids) + MEM_freeN(unode->grids); + if(unode->layer_disp) + MEM_freeN(unode->layer_disp); + } +} + +SculptUndoNode *sculpt_undo_get_node(PBVHNode *node) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + SculptUndoNode *unode; + + if(!lb) + return NULL; + + for(unode=lb->first; unode; unode=unode->next) + if(unode->node == node) + return unode; + + return NULL; +} + +SculptUndoNode *sculpt_undo_push_node(SculptSession *ss, PBVHNode *node) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + Object *ob= ss->ob; + SculptUndoNode *unode; + int totvert, allvert, totgrid, maxgrid, gridsize, *grids; + + /* list is manipulated by multiple threads, so we lock */ + BLI_lock_thread(LOCK_CUSTOM1); + + if((unode= sculpt_undo_get_node(node))) { + BLI_unlock_thread(LOCK_CUSTOM1); + return unode; + } + + unode= MEM_callocN(sizeof(SculptUndoNode), "SculptUndoNode"); + strcpy(unode->idname, ob->id.name); + unode->node= node; + + BLI_pbvh_node_num_verts(ss->pbvh, node, &totvert, &allvert); + BLI_pbvh_node_get_grids(ss->pbvh, node, &grids, &totgrid, + &maxgrid, &gridsize, NULL, NULL); + + unode->totvert= totvert; + /* we will use this while sculpting, is mapalloc slow to access then? */ + unode->co= MEM_mapallocN(sizeof(float)*3*allvert, "SculptUndoNode.co"); + unode->no= MEM_mapallocN(sizeof(short)*3*allvert, "SculptUndoNode.no"); + undo_paint_push_count_alloc(UNDO_PAINT_MESH, (sizeof(float)*3 + sizeof(short)*3 + sizeof(int))*allvert); + BLI_addtail(lb, unode); + + if(maxgrid) { + /* multires */ + unode->maxgrid= maxgrid; + unode->totgrid= totgrid; + unode->gridsize= gridsize; + unode->grids= MEM_mapallocN(sizeof(int)*totgrid, "SculptUndoNode.grids"); + } + else { + /* regular mesh */ + unode->maxvert= ss->totvert; + unode->index= MEM_mapallocN(sizeof(int)*allvert, "SculptUndoNode.index"); + } + + BLI_unlock_thread(LOCK_CUSTOM1); + + /* copy threaded, hopefully this is the performance critical part */ + { + PBVHVertexIter vd; + + BLI_pbvh_vertex_iter_begin(ss->pbvh, node, vd, PBVH_ITER_ALL) { + copy_v3_v3(unode->co[vd.i], vd.co); + if(vd.no) VECCOPY(unode->no[vd.i], vd.no) + else normal_float_to_short_v3(unode->no[vd.i], vd.fno); + if(vd.vert_indices) unode->index[vd.i]= vd.vert_indices[vd.i]; + } + BLI_pbvh_vertex_iter_end; + } + + if(unode->grids) + memcpy(unode->grids, grids, sizeof(int)*totgrid); + + /* store active shape key */ + if(ss->kb) BLI_strncpy((char*)unode->shapeName, ss->kb->name, sizeof(ss->kb->name)); + else unode->shapeName[0]= '\0'; + + return unode; +} + +void sculpt_undo_push_begin(char *name) +{ + undo_paint_push_begin(UNDO_PAINT_MESH, name, + sculpt_undo_restore, sculpt_undo_free); +} + +void sculpt_undo_push_end(void) +{ + ListBase *lb= undo_paint_push_get_list(UNDO_PAINT_MESH); + SculptUndoNode *unode; + + /* we don't need normals in the undo stack */ + for(unode=lb->first; unode; unode=unode->next) { + if(unode->no) { + MEM_freeN(unode->no); + unode->no= NULL; + } + + if(unode->layer_disp) { + MEM_freeN(unode->layer_disp); + unode->layer_disp= NULL; + } + } + + undo_paint_push_end(UNDO_PAINT_MESH); +} diff --git a/source/blender/editors/sound/CMakeLists.txt b/source/blender/editors/sound/CMakeLists.txt new file mode 100644 index 00000000000..02765726c6e --- /dev/null +++ b/source/blender/editors/sound/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../../../intern/audaspace/intern + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_sound "${SRC}" "${INC}") diff --git a/source/blender/editors/sound/SConscript b/source/blender/editors/sound/SConscript index 9d2cd2b7cf5..8010dd49c57 100644 --- a/source/blender/editors/sound/SConscript +++ b/source/blender/editors/sound/SConscript @@ -5,7 +5,7 @@ sources = env.Glob('*.c') incs = '../include ../../blenlib ../../blenkernel ../../makesdna ../../imbuf' incs += ' ../../windowmanager #/intern/guardedalloc' -incs += ' ../../makesrna ../../python' +incs += ' ../../makesrna' incs += ' #/intern/audaspace/intern' defs = [] diff --git a/source/blender/editors/sound/sound_ops.c b/source/blender/editors/sound/sound_ops.c index 39717273278..678295376ba 100644 --- a/source/blender/editors/sound/sound_ops.c +++ b/source/blender/editors/sound/sound_ops.c @@ -30,12 +30,13 @@ #include <stdlib.h> #include <stdio.h> +#include "MEM_guardedalloc.h" + #include "DNA_packedFile_types.h" #include "DNA_scene_types.h" #include "DNA_space_types.h" -#include "DNA_sound_types.h" #include "DNA_sequence_types.h" -#include "DNA_windowmanager_types.h" +#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -47,7 +48,6 @@ #include "BLI_blenlib.h" -#include "ED_sound.h" #include "RNA_access.h" #include "RNA_define.h" @@ -64,17 +64,30 @@ /******************** open sound operator ********************/ +static void open_init(bContext *C, wmOperator *op) +{ + PropertyPointerRNA *pprop; + + op->customdata= pprop= MEM_callocN(sizeof(PropertyPointerRNA), "OpenPropertyPointerRNA"); + uiIDContextProperty(C, &pprop->ptr, &pprop->prop); +} + static int open_exec(bContext *C, wmOperator *op) { char path[FILE_MAX]; bSound *sound; + PropertyPointerRNA *pprop; + PointerRNA idptr; AUD_SoundInfo info; - RNA_string_get(op->ptr, "path", path); - + RNA_string_get(op->ptr, "filepath", path); sound = sound_new_file(CTX_data_main(C), path); + if(!op->customdata) + open_init(C, op); + if (sound==NULL || sound->playback_handle == NULL) { + if(op->customdata) MEM_freeN(op->customdata); BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); return OPERATOR_CANCELLED; } @@ -83,6 +96,7 @@ static int open_exec(bContext *C, wmOperator *op) if (info.specs.channels == AUD_CHANNELS_INVALID) { sound_delete(C, sound); + if(op->customdata) MEM_freeN(op->customdata); BKE_report(op->reports, RPT_ERROR, "Unsupported audio format"); return OPERATOR_CANCELLED; } @@ -90,12 +104,34 @@ static int open_exec(bContext *C, wmOperator *op) if (RNA_boolean_get(op->ptr, "cache")) { sound_cache(sound, 0); } + + /* hook into UI */ + pprop= op->customdata; + + if(pprop->prop) { + /* when creating new ID blocks, use is already 1, but RNA + * pointer se also increases user, so this compensates it */ + sound->id.us--; + + RNA_id_pointer_create(&sound->id, &idptr); + RNA_property_pointer_set(&pprop->ptr, pprop->prop, idptr); + RNA_property_update(C, &pprop->ptr, pprop->prop); + } + if(op->customdata) MEM_freeN(op->customdata); return OPERATOR_FINISHED; } static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + if(RNA_property_is_set(op->ptr, "filepath")) + return open_exec(C, op); + + open_init(C, op); + return WM_operator_filesel(C, op, event); } @@ -114,7 +150,7 @@ void SOUND_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH | WM_FILESEL_RELPATH); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -182,23 +218,23 @@ static void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, pup= uiPupMenuBegin(C, "Unpack file", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, "Remove Pack", 0, opname, "method", PF_REMOVE); + uiItemEnumO(layout, opname, "Remove Pack", 0, "method", PF_REMOVE); if(strcmp(abs_name, local_name)) { switch(checkPackedFile(local_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); break; case PF_EQUAL: sprintf(line, "Use %s (identical)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); break; } } @@ -206,17 +242,17 @@ static void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, switch(checkPackedFile(abs_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", abs_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); break; case PF_EQUAL: sprintf(line, "Use %s (identical)", abs_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL); + uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); break; } diff --git a/source/blender/editors/space_action/CMakeLists.txt b/source/blender/editors/space_action/CMakeLists.txt new file mode 100644 index 00000000000..85275b2db23 --- /dev/null +++ b/source/blender/editors/space_action/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + + +BLENDERLIB(bf_editor_space_action "${SRC}" "${INC}") diff --git a/source/blender/editors/space_action/action_draw.c b/source/blender/editors/space_action/action_draw.c index 9c394f51d43..7ed07372e96 100644 --- a/source/blender/editors/space_action/action_draw.c +++ b/source/blender/editors/space_action/action_draw.c @@ -34,10 +34,6 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" @@ -45,26 +41,8 @@ /* Types --------------------------------------------------------------- */ -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_object_types.h" -#include "DNA_particle_types.h" #include "DNA_screen_types.h" -#include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_meta_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "BKE_action.h" #include "BKE_depsgraph.h" @@ -82,15 +60,11 @@ #include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_interface_icons.h" #include "UI_resources.h" #include "UI_view2d.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" #include "ED_keyframes_draw.h" -#include "ED_screen.h" -#include "ED_space_api.h" /* ************************************************************************* */ diff --git a/source/blender/editors/space_action/action_edit.c b/source/blender/editors/space_action/action_edit.c index ba8e49e3789..0e2a7f690c5 100644 --- a/source/blender/editors/space_action/action_edit.c +++ b/source/blender/editors/space_action/action_edit.c @@ -32,31 +32,14 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -77,10 +60,8 @@ #include "ED_anim_api.h" #include "ED_keyframing.h" -#include "ED_keyframes_draw.h" #include "ED_keyframes_edit.h" #include "ED_screen.h" -#include "ED_space_api.h" #include "ED_transform.h" #include "WM_api.h" @@ -118,7 +99,7 @@ static int act_new_exec(bContext *C, wmOperator *op) } /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -152,7 +133,7 @@ static void get_keyframe_extents (bAnimContext *ac, float *min, float *max) int filter; /* get data to filter, from Action or Dopesheet */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* set large values to try to override */ @@ -303,7 +284,7 @@ static short copy_action_keys (bAnimContext *ac) free_anim_copybuf(); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* copy keyframes */ @@ -322,7 +303,7 @@ static short paste_action_keys (bAnimContext *ac) int filter, ok=0; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* paste keyframes */ @@ -398,7 +379,7 @@ static int actkeys_paste_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -440,7 +421,7 @@ static void insert_action_keys(bAnimContext *ac, short mode) short flag = 0; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); if (mode == 2) filter |= ANIMFILTER_SEL; else if (mode == 3) filter |= ANIMFILTER_ACTGROUPED; @@ -493,7 +474,7 @@ static int actkeys_insertkey_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -527,9 +508,9 @@ static void duplicate_action_keys (bAnimContext *ac) /* filter data */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and delete selected keys */ @@ -561,7 +542,7 @@ static int actkeys_duplicate_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; // xxx - start transform } @@ -605,9 +586,9 @@ static void delete_action_keys (bAnimContext *ac) /* filter data */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and delete selected keys */ @@ -648,7 +629,7 @@ static int actkeys_delete_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -678,7 +659,7 @@ static void clean_action_keys (bAnimContext *ac, float thresh) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and clean curves */ @@ -712,7 +693,7 @@ static int actkeys_clean_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -746,7 +727,7 @@ static void sample_action_keys (bAnimContext *ac) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and add keys between selected keyframes on every frame */ @@ -776,7 +757,7 @@ static int actkeys_sample_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -816,7 +797,7 @@ static void setexpo_action_keys(bAnimContext *ac, short mode) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting mode per F-Curve */ @@ -884,17 +865,17 @@ static void setipo_action_keys(bAnimContext *ac, short mode) ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; - BeztEditFunc set_cb= ANIM_editkeyframes_ipo(mode); + KeyframeEditFunc set_cb= ANIM_editkeyframes_ipo(mode); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting BezTriple interpolation - * Note: we do not supply BeztEditData to the looper yet. Currently that's not necessary here... + * Note: we do not supply KeyframeEditData to the looper yet. Currently that's not necessary here... */ for (ale= anim_data.first; ale; ale= ale->next) - ANIM_fcurve_keys_bezier_loop(NULL, ale->key_data, NULL, set_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(NULL, ale->key_data, NULL, set_cb, calchandles_fcurve); /* cleanup */ BLI_freelistN(&anim_data); @@ -967,21 +948,21 @@ static void sethandles_action_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditFunc edit_cb= ANIM_editkeyframes_handles(mode); - BeztEditFunc sel_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); + KeyframeEditFunc edit_cb= ANIM_editkeyframes_handles(mode); + KeyframeEditFunc sel_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting flags for handles - * Note: we do not supply BeztEditData to the looper yet. Currently that's not necessary here... + * Note: we do not supply KeyframeEditData to the looper yet. Currently that's not necessary here... */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; /* any selected keyframes for editing? */ - if (ANIM_fcurve_keys_bezier_loop(NULL, fcu, NULL, sel_cb, NULL)) { + if (ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, sel_cb, NULL)) { /* for auto/auto-clamped, toggle the auto-handles flag on the F-Curve */ if (mode == HD_AUTO_ANIM) fcu->flag |= FCURVE_AUTO_HANDLES; @@ -989,7 +970,7 @@ static void sethandles_action_keys(bAnimContext *ac, short mode) fcu->flag &= ~FCURVE_AUTO_HANDLES; /* change type of selected handles */ - ANIM_fcurve_keys_bezier_loop(NULL, fcu, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, edit_cb, calchandles_fcurve); } } @@ -1052,17 +1033,17 @@ static void setkeytype_action_keys(bAnimContext *ac, short mode) ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; - BeztEditFunc set_cb= ANIM_editkeyframes_keytype(mode); + KeyframeEditFunc set_cb= ANIM_editkeyframes_keytype(mode); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting BezTriple interpolation - * Note: we do not supply BeztEditData to the looper yet. Currently that's not necessary here... + * Note: we do not supply KeyframeEditData to the looper yet. Currently that's not necessary here... */ for (ale= anim_data.first; ale; ale= ale->next) - ANIM_fcurve_keys_bezier_loop(NULL, ale->key_data, NULL, set_cb, NULL); + ANIM_fcurve_keyframes_loop(NULL, ale->key_data, NULL, set_cb, NULL); /* cleanup */ BLI_freelistN(&anim_data); @@ -1127,36 +1108,37 @@ static int actkeys_framejump_exec(bContext *C, wmOperator *op) ListBase anim_data= {NULL, NULL}; bAnimListElem *ale; int filter; - BeztEditData bed; + KeyframeEditData ked; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; /* init edit data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* loop over action data, averaging values */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(&ac, ale); if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_calc_average, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_calc_average, NULL); } BLI_freelistN(&anim_data); /* set the new current frame value, based on the average time */ - if (bed.i1) { + if (ked.i1) { Scene *scene= ac.scene; - CFRA= (int)floor((bed.f1 / bed.i1) + 0.5f); + CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f); + SUBFRA= 0.f; } /* set notifier that things have changed */ @@ -1198,24 +1180,24 @@ static void snap_action_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc edit_cb; + KeyframeEditData ked; + KeyframeEditFunc edit_cb; /* filter data */ if (ac->datatype == ANIMCONT_GPENCIL) filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* get beztriple editing callbacks */ edit_cb= ANIM_editkeyframes_snap(mode); - memset(&bed, 0, sizeof(BeztEditData)); - bed.scene= ac->scene; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.scene= ac->scene; if (mode == ACTKEYS_SNAP_NEAREST_MARKER) { - bed.list.first= (ac->markers) ? ac->markers->first : NULL; - bed.list.last= (ac->markers) ? ac->markers->last : NULL; + ked.list.first= (ac->markers) ? ac->markers->first : NULL; + ked.list.last= (ac->markers) ? ac->markers->last : NULL; } /* snap keyframes */ @@ -1224,13 +1206,13 @@ static void snap_action_keys(bAnimContext *ac, short mode) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } //else if (ale->type == ACTTYPE_GPLAYER) // snap_gplayer_frames(ale->data, mode); else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); } BLI_freelistN(&anim_data); @@ -1257,7 +1239,7 @@ static int actkeys_snap_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1298,14 +1280,14 @@ static void mirror_action_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc edit_cb; + KeyframeEditData ked; + KeyframeEditFunc edit_cb; /* get beztriple editing callbacks */ edit_cb= ANIM_editkeyframes_mirror(mode); - memset(&bed, 0, sizeof(BeztEditData)); - bed.scene= ac->scene; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.scene= ac->scene; /* for 'first selected marker' mode, need to find first selected marker first! */ // XXX should this be made into a helper func in the API? @@ -1323,16 +1305,16 @@ static void mirror_action_keys(bAnimContext *ac, short mode) /* store marker's time (if available) */ if (marker) - bed.f1= (float)marker->frame; + ked.f1= (float)marker->frame; else return; } /* filter data */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* mirror keyframes */ @@ -1341,13 +1323,13 @@ static void mirror_action_keys(bAnimContext *ac, short mode) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } //else if (ale->type == ACTTYPE_GPLAYER) // snap_gplayer_frames(ale->data, mode); else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); } BLI_freelistN(&anim_data); @@ -1374,7 +1356,7 @@ static int actkeys_mirror_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_action/action_intern.h b/source/blender/editors/space_action/action_intern.h index 3ad7d3e24ff..b02e95ac138 100644 --- a/source/blender/editors/space_action/action_intern.h +++ b/source/blender/editors/space_action/action_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -56,6 +56,7 @@ void action_header_buttons(const struct bContext *C, struct ARegion *ar); void ACTION_OT_select_all_toggle(struct wmOperatorType *ot); void ACTION_OT_select_border(struct wmOperatorType *ot); void ACTION_OT_select_column(struct wmOperatorType *ot); +void ACTION_OT_select_linked(struct wmOperatorType *ot); void ACTION_OT_select_more(struct wmOperatorType *ot); void ACTION_OT_select_less(struct wmOperatorType *ot); void ACTION_OT_clickselect(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_action/action_ops.c b/source/blender/editors/space_action/action_ops.c index 429c1cc63cd..fa9968b2524 100644 --- a/source/blender/editors/space_action/action_ops.c +++ b/source/blender/editors/space_action/action_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,28 +31,19 @@ #include "MEM_guardedalloc.h" -#include "DNA_listBase.h" -#include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BKE_context.h" #include "BKE_utildefines.h" -#include "UI_interface.h" -#include "UI_view2d.h" #include "ED_transform.h" #include "action_intern.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" @@ -67,6 +58,7 @@ void action_operatortypes(void) WM_operatortype_append(ACTION_OT_select_all_toggle); WM_operatortype_append(ACTION_OT_select_border); WM_operatortype_append(ACTION_OT_select_column); + WM_operatortype_append(ACTION_OT_select_linked); WM_operatortype_append(ACTION_OT_select_more); WM_operatortype_append(ACTION_OT_select_less); @@ -128,6 +120,9 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "ACTION_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ACTION_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); + /* select linekd */ + WM_keymap_add_item(keymap, "ACTION_OT_select_linked", LKEY, KM_PRESS, 0, 0); + /* action_edit.c */ /* snap - current frame to selected keys */ @@ -150,6 +145,7 @@ static void action_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "ACTION_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ACTION_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "ACTION_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "ACTION_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "ACTION_OT_keyframe_insert", IKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_action/action_select.c b/source/blender/editors/space_action/action_select.c index 98caf1a25cb..e852afa9a87 100644 --- a/source/blender/editors/space_action/action_select.c +++ b/source/blender/editors/space_action/action_select.c @@ -29,10 +29,6 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" @@ -40,22 +36,8 @@ #include "BLI_dlrbTree.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -73,12 +55,10 @@ #include "UI_view2d.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" #include "ED_keyframes_draw.h" #include "ED_keyframes_edit.h" #include "ED_markers.h" #include "ED_screen.h" -#include "ED_space_api.h" #include "WM_api.h" #include "WM_types.h" @@ -110,20 +90,20 @@ static void deselect_action_keys (bAnimContext *ac, short test, short sel) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc test_cb, sel_cb; + KeyframeEditData ked; + KeyframeEditFunc test_cb, sel_cb; /* determine type-based settings */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); /* filter data */ ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* init BezTriple looping data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); test_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); /* See if we should be selecting or deselecting */ @@ -136,7 +116,7 @@ static void deselect_action_keys (bAnimContext *ac, short test, short sel) //} } else { - if (ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, test_cb, NULL)) { + if (ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, test_cb, NULL)) { sel= SELECT_SUBTRACT; break; } @@ -152,7 +132,7 @@ static void deselect_action_keys (bAnimContext *ac, short test, short sel) //if (ale->type == ACTTYPE_GPLAYER) // set_gplayer_frame_selection(ale->data, sel); //else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, sel_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, sel_cb, NULL); } /* Cleanup */ @@ -176,7 +156,7 @@ static int actkeys_deselectall_exec(bContext *C, wmOperator *op) deselect_action_keys(&ac, 1, SELECT_ADD); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -221,8 +201,8 @@ static void borderselect_action (bAnimContext *ac, rcti rect, short mode, short bAnimListElem *ale; int filter, filterflag; - BeztEditData bed; - BeztEditFunc ok_cb, select_cb; + KeyframeEditData ked; + KeyframeEditFunc ok_cb, select_cb; View2D *v2d= &ac->ar->v2d; rctf rectf; float ymin=0, ymax=(float)(-ACHANNEL_HEIGHT_HALF); @@ -232,7 +212,7 @@ static void borderselect_action (bAnimContext *ac, rcti rect, short mode, short UI_view2d_region_to_view(v2d, rect.xmax, rect.ymax-2, &rectf.xmax, &rectf.ymax); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CHANNELS); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CHANNELS | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* get filtering flag for dopesheet data (if applicable) */ @@ -252,7 +232,7 @@ static void borderselect_action (bAnimContext *ac, rcti rect, short mode, short ok_cb= NULL; /* init editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* loop over data, doing border select */ for (ale= anim_data.first; ale; ale= ale->next) { @@ -265,12 +245,12 @@ static void borderselect_action (bAnimContext *ac, rcti rect, short mode, short if (ELEM(mode, ACTKEYS_BORDERSEL_FRAMERANGE, ACTKEYS_BORDERSEL_ALLKEYS)) { /* if channel is mapped in NLA, apply correction */ if (adt) { - bed.f1= BKE_nla_tweakedit_remap(adt, rectf.xmin, NLATIME_CONVERT_UNMAP); - bed.f2= BKE_nla_tweakedit_remap(adt, rectf.xmax, NLATIME_CONVERT_UNMAP); + ked.f1= BKE_nla_tweakedit_remap(adt, rectf.xmin, NLATIME_CONVERT_UNMAP); + ked.f2= BKE_nla_tweakedit_remap(adt, rectf.xmax, NLATIME_CONVERT_UNMAP); } else { - bed.f1= rectf.xmin; - bed.f2= rectf.xmax; + ked.f1= rectf.xmin; + ked.f2= rectf.xmax; } } @@ -282,7 +262,7 @@ static void borderselect_action (bAnimContext *ac, rcti rect, short mode, short //if (ale->type == ANIMTYPE_GPLAYER) // borderselect_gplayer_frames(ale->data, rectf.xmin, rectf.xmax, selectmode); //else - ANIM_animchannel_keys_bezier_loop(&bed, ale, ok_cb, select_cb, NULL, filterflag); + ANIM_animchannel_keyframes_loop(&ked, ale, ok_cb, select_cb, NULL, filterflag); } /* set minimum extent to be the maximum of the next channel */ @@ -337,7 +317,7 @@ static int actkeys_borderselect_exec(bContext *C, wmOperator *op) borderselect_action(&ac, rect, mode, selectmode); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -391,8 +371,8 @@ static void markers_selectkeys_between (bAnimContext *ac) bAnimListElem *ale; int filter; - BeztEditFunc ok_cb, select_cb; - BeztEditData bed; + KeyframeEditFunc ok_cb, select_cb; + KeyframeEditData ked; float min, max; /* get extreme markers */ @@ -404,12 +384,12 @@ static void markers_selectkeys_between (bAnimContext *ac) ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAMERANGE); select_cb= ANIM_editkeyframes_select(SELECT_ADD); - memset(&bed, 0, sizeof(BeztEditData)); - bed.f1= min; - bed.f2= max; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.f1= min; + ked.f2= max; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* select keys in-between */ @@ -418,11 +398,11 @@ static void markers_selectkeys_between (bAnimContext *ac) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else { - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } } @@ -440,11 +420,11 @@ static void columnselect_action_keys (bAnimContext *ac, short mode) Scene *scene= ac->scene; CfraElem *ce; - BeztEditFunc select_cb, ok_cb; - BeztEditData bed; + KeyframeEditFunc select_cb, ok_cb; + KeyframeEditData ked; /* initialise keyframe editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* build list of columns */ switch (mode) { @@ -461,7 +441,7 @@ static void columnselect_action_keys (bAnimContext *ac, short mode) ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_to_cfraelem, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_to_cfraelem, NULL); } BLI_freelistN(&anim_data); break; @@ -469,13 +449,13 @@ static void columnselect_action_keys (bAnimContext *ac, short mode) case ACTKEYS_COLUMNSEL_CFRA: /* current frame */ /* make a single CfraElem for storing this */ ce= MEM_callocN(sizeof(CfraElem), "cfraElem"); - BLI_addtail(&bed.list, ce); + BLI_addtail(&ked.list, ce); ce->cfra= (float)CFRA; break; case ACTKEYS_COLUMNSEL_MARKERS_COLUMN: /* list of selected markers */ - ED_markers_make_cfra_list(ac->markers, &bed.list, 1); + ED_markers_make_cfra_list(ac->markers, &ked.list, 1); break; default: /* invalid option */ @@ -498,18 +478,18 @@ static void columnselect_action_keys (bAnimContext *ac, short mode) for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(ac, ale); - /* loop over cfraelems (stored in the BeztEditData->list) + /* loop over cfraelems (stored in the KeyframeEditData->list) * - we need to do this here, as we can apply fewer NLA-mapping conversions */ - for (ce= bed.list.first; ce; ce= ce->next) { + for (ce= ked.list.first; ce; ce= ce->next) { /* set frame for validation callback to refer to */ if (adt) - bed.f1= BKE_nla_tweakedit_remap(adt, ce->cfra, NLATIME_CONVERT_UNMAP); + ked.f1= BKE_nla_tweakedit_remap(adt, ce->cfra, NLATIME_CONVERT_UNMAP); else - bed.f1= ce->cfra; + ked.f1= ce->cfra; /* select elements with frame number matching cfraelem */ - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); #if 0 // XXX reenable when Grease Pencil stuff is back if (ale->type == ANIMTYPE_GPLAYER) { @@ -527,7 +507,7 @@ static void columnselect_action_keys (bAnimContext *ac, short mode) } /* free elements */ - BLI_freelistN(&bed.list); + BLI_freelistN(&ked.list); BLI_freelistN(&anim_data); } @@ -551,7 +531,7 @@ static int actkeys_columnselect_exec(bContext *C, wmOperator *op) columnselect_action_keys(&ac, mode); /* set notifier that keyframe selection have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -574,6 +554,61 @@ void ACTION_OT_select_column (wmOperatorType *ot) ot->prop= RNA_def_enum(ot->srna, "mode", prop_column_select_types, 0, "Mode", ""); } +/* ******************** Select Linked Operator *********************** */ + +static int actkeys_select_linked_exec (bContext *C, wmOperator *op) +{ + bAnimContext ac; + + ListBase anim_data= {NULL, NULL}; + bAnimListElem *ale; + int filter; + + KeyframeEditFunc ok_cb = ANIM_editkeyframes_ok(BEZT_OK_SELECTED); + KeyframeEditFunc sel_cb = ANIM_editkeyframes_select(SELECT_ADD); + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* loop through all of the keys and select additional keyframes based on these */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + for (ale= anim_data.first; ale; ale= ale->next) { + FCurve *fcu= (FCurve *)ale->key_data; + + /* check if anything selected? */ + if (ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, ok_cb, NULL)) { + /* select every keyframe in this curve then */ + ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, sel_cb, NULL); + } + } + + /* Cleanup */ + BLI_freelistN(&anim_data); + + /* set notifier that keyframe selection has changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); + + return OPERATOR_FINISHED; +} + +void ACTION_OT_select_linked (wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Select Linked"; + ot->idname= "ACTION_OT_select_linked"; + ot->description = "Select keyframes occurring the same F-Curves as selected ones"; + + /* api callbacks */ + ot->exec= actkeys_select_linked_exec; + ot->poll= ED_operator_action_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER/*|OPTYPE_UNDO*/; +} + /* ******************** Select More/Less Operators *********************** */ /* Common code to perform selection */ @@ -583,16 +618,16 @@ static void select_moreless_action_keys (bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc build_cb; + KeyframeEditData ked; + KeyframeEditFunc build_cb; /* init selmap building data */ build_cb= ANIM_editkeyframes_buildselmap(mode); - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* loop through all of the keys and select additional keyframes based on these */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -603,15 +638,15 @@ static void select_moreless_action_keys (bAnimContext *ac, short mode) continue; /* build up map of whether F-Curve's keyframes should be selected or not */ - bed.data= MEM_callocN(fcu->totvert, "selmap actEdit more"); - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, build_cb, NULL); + ked.data= MEM_callocN(fcu->totvert, "selmap actEdit more"); + ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, build_cb, NULL); /* based on this map, adjust the selection status of the keyframes */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, bezt_selmap_flush, NULL); + ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, bezt_selmap_flush, NULL); /* free the selmap used here */ - MEM_freeN(bed.data); - bed.data= NULL; + MEM_freeN(ked.data); + ked.data= NULL; } /* Cleanup */ @@ -632,7 +667,7 @@ static int actkeys_select_more_exec (bContext *C, wmOperator *op) select_moreless_action_keys(&ac, SELMAP_MORE); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -666,7 +701,7 @@ static int actkeys_select_less_exec (bContext *C, wmOperator *op) select_moreless_action_keys(&ac, SELMAP_LESS); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -716,17 +751,17 @@ static void actkeys_mselect_single (bAnimContext *ac, bAnimListElem *ale, short bDopeSheet *ads= (ac->datatype == ANIMCONT_DOPESHEET) ? ac->data : NULL; int ds_filter = ((ads) ? (ads->filterflag) : (0)); - BeztEditData bed; - BeztEditFunc select_cb, ok_cb; + KeyframeEditData ked; + KeyframeEditFunc select_cb, ok_cb; /* get functions for selecting keyframes */ select_cb= ANIM_editkeyframes_select(select_mode); ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAME); - memset(&bed, 0, sizeof(BeztEditData)); - bed.f1= selx; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.f1= selx; /* select the nominated keyframe on the given frame */ - ANIM_animchannel_keys_bezier_loop(&bed, ale, ok_cb, select_cb, NULL, ds_filter); + ANIM_animchannel_keyframes_loop(&ked, ale, ok_cb, select_cb, NULL, ds_filter); } /* Option 2) Selects all the keyframes on either side of the current frame (depends on which side the mouse is on) */ @@ -736,8 +771,8 @@ static void actkeys_mselect_leftright (bAnimContext *ac, short leftright, short bAnimListElem *ale; int filter; - BeztEditFunc ok_cb, select_cb; - BeztEditData bed; + KeyframeEditFunc ok_cb, select_cb; + KeyframeEditData ked; Scene *scene= ac->scene; /* if select mode is replace, deselect all keyframes (and channels) first */ @@ -753,21 +788,21 @@ static void actkeys_mselect_leftright (bAnimContext *ac, short leftright, short ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAMERANGE); select_cb= ANIM_editkeyframes_select(select_mode); - memset(&bed, 0, sizeof(BeztEditFunc)); + memset(&ked, 0, sizeof(KeyframeEditFunc)); if (leftright == ACTKEYS_LRSEL_LEFT) { - bed.f1 = MINAFRAMEF; - bed.f2 = (float)(CFRA + FRAME_CLICK_THRESH); + ked.f1 = MINAFRAMEF; + ked.f2 = (float)(CFRA + FRAME_CLICK_THRESH); } else { - bed.f1 = (float)(CFRA - FRAME_CLICK_THRESH); - bed.f2 = MAXFRAMEF; + ked.f1 = (float)(CFRA - FRAME_CLICK_THRESH); + ked.f2 = MAXFRAMEF; } /* filter data */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* select keys on the side where most data occurs */ @@ -776,15 +811,35 @@ static void actkeys_mselect_leftright (bAnimContext *ac, short leftright, short if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } //else if (ale->type == ANIMTYPE_GPLAYER) // borderselect_gplayer_frames(ale->data, min, max, SELECT_ADD); else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } + /* Sync marker support */ + if((select_mode==SELECT_ADD) && (ac->spacetype==SPACE_ACTION) && ELEM(leftright, ACTKEYS_LRSEL_LEFT, ACTKEYS_LRSEL_RIGHT)) { + SpaceAction *saction= ac->sa->spacedata.first; + + if (saction && saction->flag & SACTION_MARKERS_MOVE) { + TimeMarker *marker; + + for (marker= scene->markers.first; marker; marker= marker->next) { + if( ((leftright == ACTKEYS_LRSEL_LEFT) && (marker->frame < CFRA)) || + ((leftright == ACTKEYS_LRSEL_RIGHT) && (marker->frame >= CFRA)) ) + { + marker->flag |= SELECT; + } + else { + marker->flag &= ~SELECT; + } + } + } + } + /* Cleanup */ BLI_freelistN(&anim_data); } @@ -796,11 +851,11 @@ static void actkeys_mselect_column(bAnimContext *ac, short select_mode, float se bAnimListElem *ale; int filter; - BeztEditFunc select_cb, ok_cb; - BeztEditData bed; + KeyframeEditFunc select_cb, ok_cb; + KeyframeEditData ked; /* initialise keyframe editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* set up BezTriple edit callbacks */ select_cb= ANIM_editkeyframes_select(select_mode); @@ -810,9 +865,9 @@ static void actkeys_mselect_column(bAnimContext *ac, short select_mode, float se * based on the keys found to be selected above */ if (ac->datatype == ANIMCONT_GPENCIL) - filter= (ANIMFILTER_VISIBLE); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NODUPLIS); else - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -820,12 +875,12 @@ static void actkeys_mselect_column(bAnimContext *ac, short select_mode, float se /* set frame for validation callback to refer to */ if (adt) - bed.f1= BKE_nla_tweakedit_remap(adt, selx, NLATIME_CONVERT_UNMAP); + ked.f1= BKE_nla_tweakedit_remap(adt, selx, NLATIME_CONVERT_UNMAP); else - bed.f1= selx; + ked.f1= selx; /* select elements with frame number matching cfra */ - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); #if 0 // XXX reenable when Grease Pencil stuff is back if (ale->type == ANIMTYPE_GPLAYER) { @@ -842,7 +897,7 @@ static void actkeys_mselect_column(bAnimContext *ac, short select_mode, float se } /* free elements */ - BLI_freelistN(&bed.list); + BLI_freelistN(&ked.list); BLI_freelistN(&anim_data); } @@ -943,10 +998,8 @@ static void mouse_action_keys (bAnimContext *ac, int mval[2], short select_mode, gpl_to_keylist(ads, gpl, &anim_keys, NULL); } - // the call below is not strictly necessary, since we have adjacency info anyway - //BLI_dlrbTree_linkedlist_sync(&anim_keys); - /* loop through keyframes, finding one that was within the range clicked on */ + // TODO: replace this with API calls instead of inlining for (ak= anim_keys.root; ak; ak= akn) { if (IN_RANGE(ak->cfra, rectf.xmin, rectf.xmax)) { /* set the frame to use, and apply inverse-correction for NLA-mapping @@ -1085,7 +1138,7 @@ static int actkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even } /* set notifier that keyframe selection (and channels too) have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|ND_ANIMCHAN|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_action/space_action.c b/source/blender/editors/space_action/space_action.c index 111e500c6f5..bad35d9d3e6 100644 --- a/source/blender/editors/space_action/space_action.c +++ b/source/blender/editors/space_action/space_action.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,12 +29,8 @@ #include <string.h> #include <stdio.h> -#include "DNA_listBase.h" #include "DNA_action_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -47,7 +43,6 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -55,12 +50,10 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" #include "ED_anim_api.h" -#include "ED_keyframes_draw.h" #include "ED_markers.h" #include "action_intern.h" // own include @@ -110,10 +103,10 @@ static SpaceLink *action_new(const bContext *C) ar->v2d.cur = ar->v2d.tot; ar->v2d.min[0]= 0.0f; - ar->v2d.min[1]= 0.0f; + ar->v2d.min[1]= 0.0f; ar->v2d.max[0]= MAXFRAMEF; - ar->v2d.max[1]= FLT_MAX; + ar->v2d.max[1]= FLT_MAX; ar->v2d.minzoom= 0.01f; ar->v2d.maxzoom= 50; @@ -172,12 +165,10 @@ static void action_main_area_draw(const bContext *C, ARegion *ar) View2D *v2d= &ar->v2d; View2DGrid *grid; View2DScrollers *scrollers; - float col[3]; short unit=0, flag=0; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); @@ -234,11 +225,9 @@ static void action_channel_area_draw(const bContext *C, ARegion *ar) bAnimContext ac; View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); @@ -363,7 +352,7 @@ static void action_listener(ScrArea *sa, wmNotifier *wmn) switch (wmn->category) { case NC_ANIMATION: /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */ - if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT)) + if (ELEM(wmn->data, ND_KEYFRAME, ND_ANIMCHAN) && (wmn->action == NA_SELECTED)) ED_area_tag_redraw(sa); else ED_area_tag_refresh(sa); diff --git a/source/blender/editors/space_api/CMakeLists.txt b/source/blender/editors/space_api/CMakeLists.txt new file mode 100644 index 00000000000..f186b4f1c8a --- /dev/null +++ b/source/blender/editors/space_api/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_api "${SRC}" "${INC}") diff --git a/source/blender/editors/space_api/SConscript b/source/blender/editors/space_api/SConscript index 44090e8fc12..d8be59941eb 100644 --- a/source/blender/editors/space_api/SConscript +++ b/source/blender/editors/space_api/SConscript @@ -9,7 +9,4 @@ incs += ' #/intern/guardedalloc #/extern/glew/include' defs = '' -if not env['WITH_BF_PYTHON']: - defs += 'DISABLE_PYTHON' - env.BlenderLib ( 'bf_editors_space_api', sources, Split(incs), Split(defs), libtype=['core'], priority=[30] ) diff --git a/source/blender/editors/space_api/space.c b/source/blender/editors/space_api/space.c index c61e5d93160..66cb88ebf70 100644 --- a/source/blender/editors/space_api/space.c +++ b/source/blender/editors/space_api/space.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -37,7 +37,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_screen.h" /* */ diff --git a/source/blender/editors/space_api/spacetypes.c b/source/blender/editors/space_api/spacetypes.c index d8d3d803634..b0f6d456dcc 100644 --- a/source/blender/editors/space_api/spacetypes.c +++ b/source/blender/editors/space_api/spacetypes.c @@ -1,5 +1,5 @@ /** - * $Id: spacetypes.c + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -28,7 +28,6 @@ #include "BLI_blenlib.h" #include "DNA_object_types.h" -#include "DNA_scene_types.h" #include "DNA_windowmanager_types.h" #include "BKE_context.h" @@ -59,6 +58,7 @@ #include "ED_sound.h" #include "ED_uvedit.h" #include "ED_mball.h" +#include "ED_logic.h" /* only call once on startup, storage is global in BKE kernel listbase */ void ED_spacetypes_init(void) @@ -104,6 +104,7 @@ void ED_spacetypes_init(void) ED_operatortypes_metaball(); ED_operatortypes_sound(); ED_operatortypes_render(); + ED_operatortypes_logic(); UI_view2d_operatortypes(); UI_buttons_operatortypes(); diff --git a/source/blender/editors/space_buttons/CMakeLists.txt b/source/blender/editors/space_buttons/CMakeLists.txt new file mode 100644 index 00000000000..bb50ac0cc86 --- /dev/null +++ b/source/blender/editors/space_buttons/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_buttons "${SRC}" "${INC}") diff --git a/source/blender/editors/space_buttons/SConscript b/source/blender/editors/space_buttons/SConscript index 71530d6f92d..b82f0db49a0 100644 --- a/source/blender/editors/space_buttons/SConscript +++ b/source/blender/editors/space_buttons/SConscript @@ -9,7 +9,4 @@ incs += ' ../../makesrna ../../render/extern/include ../../bmesh' defs = [] -if env['WITH_BF_GAMEENGINE']: - defs.append('GAMEBLENDER=1') - env.BlenderLib ( 'bf_editors_space_buttons', sources, Split(incs), defs, libtype=['core'], priority=[120] ) diff --git a/source/blender/editors/space_buttons/buttons_context.c b/source/blender/editors/space_buttons/buttons_context.c index 572176a256a..da6f9fa3f1e 100644 --- a/source/blender/editors/space_buttons/buttons_context.c +++ b/source/blender/editors/space_buttons/buttons_context.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,17 +31,10 @@ #include "MEM_guardedalloc.h" #include "DNA_armature_types.h" -#include "DNA_brush_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" -#include "DNA_modifier_types.h" #include "DNA_node_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_particle_types.h" -#include "DNA_texture_types.h" #include "DNA_world_types.h" #include "BLI_listbase.h" @@ -706,11 +699,20 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r Material *ma= ptr->data; /* if we have a node material, get slot from material in material node */ - if(ma && ma->use_nodes && ma->nodetree) + if(ma && ma->use_nodes && ma->nodetree) { + /* if there's an active texture node in the node tree, + * then that texture is in context directly, without a texture slot */ + if (give_current_material_texture_node(ma)) + return 0; + ma= give_node_material(ma); - - if(ma) + if (ma) + CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]); + else + return 0; + } else if(ma) { CTX_data_pointer_set(result, &ma->id, &RNA_MaterialTextureSlot, ma->mtex[(int)ma->texact]); + } } else if((ptr=get_pointer_type(path, &RNA_Lamp))) { Lamp *la= ptr->data; @@ -823,21 +825,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r static void pin_cb(bContext *C, void *arg1, void *arg2) { SpaceButs *sbuts= CTX_wm_space_buts(C); - ButsContextPath *path= sbuts->path; - PointerRNA *ptr; - int a; if(sbuts->flag & SB_PIN_CONTEXT) { - if(path->len) { - for(a=path->len-1; a>=0; a--) { - ptr= &path->ptr[a]; - - if(ptr->id.data) { - sbuts->pinid= ptr->id.data; - break; - } - } - } + sbuts->pinid= buttons_context_id_path(C); } else sbuts->pinid= NULL; @@ -908,3 +898,24 @@ void buttons_context_register(ARegionType *art) pt->flag= PNL_NO_HEADER; BLI_addtail(&art->paneltypes, pt); } + +ID *buttons_context_id_path(const bContext *C) +{ + SpaceButs *sbuts= CTX_wm_space_buts(C); + ButsContextPath *path= sbuts->path; + PointerRNA *ptr; + int a; + + if(path->len) { + for(a=path->len-1; a>=0; a--) { + ptr= &path->ptr[a]; + + if(ptr->id.data) { + return ptr->id.data; + break; + } + } + } + + return NULL; +} diff --git a/source/blender/editors/space_buttons/buttons_header.c b/source/blender/editors/space_buttons/buttons_header.c index 3e479c63f20..d8cbbb0cbae 100644 --- a/source/blender/editors/space_buttons/buttons_header.c +++ b/source/blender/editors/space_buttons/buttons_header.c @@ -29,11 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -45,10 +40,7 @@ #include "ED_screen.h" #include "ED_types.h" -#include "ED_util.h" -#include "WM_api.h" -#include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -138,7 +130,7 @@ void buttons_header_buttons(const bContext *C, ARegion *ar) uiBlockEndAlign(block); /* always as last */ - UI_view2d_totRect_set(&ar->v2d, xco+XIC+80, ar->v2d.tot.ymax-ar->v2d.tot.ymin); + UI_view2d_totRect_set(&ar->v2d, xco+(XIC/2), ar->v2d.tot.ymax-ar->v2d.tot.ymin); uiEndBlock(C, block); uiDrawBlock(C, block); diff --git a/source/blender/editors/space_buttons/buttons_intern.h b/source/blender/editors/space_buttons/buttons_intern.h index 28d52fd55cc..9478168f35a 100644 --- a/source/blender/editors/space_buttons/buttons_intern.h +++ b/source/blender/editors/space_buttons/buttons_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -35,6 +35,7 @@ struct bContextDataResult; struct SpaceButs; struct uiLayout; struct wmOperatorType; +struct ID; /* buts->scaflag */ #define BUTS_SENS_SEL 1 @@ -62,6 +63,7 @@ void buttons_context_compute(const struct bContext *C, struct SpaceButs *sbuts); int buttons_context(const struct bContext *C, const char *member, struct bContextDataResult *result); void buttons_context_draw(const struct bContext *C, struct uiLayout *layout); void buttons_context_register(struct ARegionType *art); +struct ID *buttons_context_id_path(const struct bContext *C); /* buttons_ops.c */ void BUTTONS_OT_file_browse(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_buttons/buttons_ops.c b/source/blender/editors/space_buttons/buttons_ops.c index 7b59f6aafa9..ebdc0d37b43 100644 --- a/source/blender/editors/space_buttons/buttons_ops.c +++ b/source/blender/editors/space_buttons/buttons_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,10 +30,12 @@ #include "MEM_guardedalloc.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" +#include "DNA_userdef_types.h" + +#include "BLI_fileops.h" #include "BKE_context.h" +#include "BKE_global.h" /* G.sce only */ #include "WM_api.h" #include "WM_types.h" @@ -41,10 +43,8 @@ #include "ED_screen.h" #include "RNA_access.h" -#include "RNA_define.h" #include "UI_interface.h" -#include "UI_resources.h" #include "buttons_intern.h" // own include @@ -92,10 +92,10 @@ static int file_browse_exec(bContext *C, wmOperator *op) FileBrowseOp *fbo= op->customdata; char *str; - if (RNA_property_is_set(op->ptr, "path")==0 || fbo==NULL) + if (RNA_property_is_set(op->ptr, "filepath")==0 || fbo==NULL) return OPERATOR_CANCELLED; - str= RNA_string_get_alloc(op->ptr, "path", 0, 0); + str= RNA_string_get_alloc(op->ptr, "filepath", 0, 0); RNA_property_string_set(&fbo->ptr, fbo->prop, str); RNA_property_update(C, &fbo->ptr, fbo->prop); MEM_freeN(str); @@ -123,26 +123,53 @@ static int file_browse_invoke(bContext *C, wmOperator *op, wmEvent *event) if(!prop) return OPERATOR_CANCELLED; - - fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp"); - fbo->ptr= ptr; - fbo->prop= prop; - op->customdata= fbo; str= RNA_property_string_get_alloc(&ptr, prop, 0, 0); - RNA_string_set(op->ptr, "path", str); - MEM_freeN(str); - WM_event_add_fileselect(C, op); - - return OPERATOR_RUNNING_MODAL; + /* useful yet irritating feature, Shift+Click to open the file + * Alt+Click to browse a folder in the OS's browser */ + if(event->shift || event->alt) { + PointerRNA props_ptr; + + if(event->alt) { + char *lslash= BLI_last_slash(str); + if(lslash) + *lslash= '\0'; + } + + + WM_operator_properties_create(&props_ptr, "WM_OT_path_open"); + RNA_string_set(&props_ptr, "filepath", str); + WM_operator_name_call(C, "WM_OT_path_open", WM_OP_EXEC_DEFAULT, &props_ptr); + WM_operator_properties_free(&props_ptr); + + MEM_freeN(str); + return OPERATOR_CANCELLED; + } + else { + fbo= MEM_callocN(sizeof(FileBrowseOp), "FileBrowseOp"); + fbo->ptr= ptr; + fbo->prop= prop; + op->customdata= fbo; + + RNA_string_set(op->ptr, "filepath", str); + MEM_freeN(str); + + if(RNA_struct_find_property(op->ptr, "relative_path")) + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + WM_event_add_fileselect(C, op); + + return OPERATOR_RUNNING_MODAL; + } } void BUTTONS_OT_file_browse(wmOperatorType *ot) { /* identifiers */ ot->name= "Accept"; - ot->description="Open a file browser"; + ot->description="Open a file browser, Hold Shift to open the file, Alt to browse containing directory"; ot->idname= "BUTTONS_OT_file_browse"; /* api callbacks */ @@ -151,6 +178,6 @@ void BUTTONS_OT_file_browse(wmOperatorType *ot) ot->cancel= file_browse_cancel; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } diff --git a/source/blender/editors/space_buttons/space_buttons.c b/source/blender/editors/space_buttons/space_buttons.c index b828a1e664c..e28fcf8c28a 100644 --- a/source/blender/editors/space_buttons/space_buttons.c +++ b/source/blender/editors/space_buttons/space_buttons.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,11 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -45,7 +40,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -53,7 +47,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -181,7 +174,7 @@ static void buttons_main_area_draw(const bContext *C, ARegion *ar) else if(sbuts->mainb == BCONTEXT_BONE_CONSTRAINT) ED_region_panels(C, ar, vertical, "bone_constraint", sbuts->mainb); - sbuts->re_align= 0; + sbuts->re_align= 0; sbuts->mainbo= sbuts->mainb; } @@ -215,15 +208,9 @@ static void buttons_header_area_draw(const bContext *C, ARegion *ar) ED_region_header(C, ar); #else - float col[3]; - + /* clear */ - if(ED_screen_area_active(C)) - UI_GetThemeColor3fv(TH_HEADER, col); - else - UI_GetThemeColor3fv(TH_HEADERDESEL, col); - - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(ED_screen_area_active(C)?TH_HEADER:TH_HEADERDESEL); glClear(GL_COLOR_BUFFER_BIT); /* set view2d view matrix for scrolling (without scrollers) */ @@ -265,6 +252,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) buttons_area_redraw(sa, BCONTEXT_TEXTURE); buttons_area_redraw(sa, BCONTEXT_WORLD); buttons_area_redraw(sa, BCONTEXT_DATA); + buttons_area_redraw(sa, BCONTEXT_PHYSICS); sbuts->preview= 1; break; case ND_OB_ACTIVE: @@ -274,6 +262,8 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) case ND_KEYINGSET: buttons_area_redraw(sa, BCONTEXT_SCENE); break; + case ND_RENDER_RESULT: + break; case ND_MODE: case ND_LAYER: default: @@ -297,15 +287,20 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); else buttons_area_redraw(sa, BCONTEXT_MODIFIER); + buttons_area_redraw(sa, BCONTEXT_PHYSICS); break; case ND_CONSTRAINT: buttons_area_redraw(sa, BCONTEXT_CONSTRAINT); buttons_area_redraw(sa, BCONTEXT_BONE_CONSTRAINT); break; - case ND_PARTICLE_DATA: - buttons_area_redraw(sa, BCONTEXT_PARTICLE); + case ND_PARTICLE: + if (wmn->action == NA_EDITED) + buttons_area_redraw(sa, BCONTEXT_PARTICLE); break; case ND_DRAW: + buttons_area_redraw(sa, BCONTEXT_OBJECT); + buttons_area_redraw(sa, BCONTEXT_DATA); + buttons_area_redraw(sa, BCONTEXT_PHYSICS); case ND_SHADING: case ND_SHADING_DRAW: /* currently works by redraws... if preview is set, it (re)starts job */ @@ -349,6 +344,7 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) sbuts->preview= 1; break; case NC_TEXTURE: + case NC_IMAGE: ED_area_tag_redraw(sa); sbuts->preview= 1; break; @@ -362,8 +358,9 @@ static void buttons_area_listener(ScrArea *sa, wmNotifier *wmn) break; case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: - ED_area_tag_redraw(sa); + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_area_tag_redraw(sa); break; } } diff --git a/source/blender/editors/space_console/CMakeLists.txt b/source/blender/editors/space_console/CMakeLists.txt new file mode 100644 index 00000000000..0cee45576b8 --- /dev/null +++ b/source/blender/editors/space_console/CMakeLists.txt @@ -0,0 +1,40 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenfont + ../../blenkernel + ../../blenlib + ../../blenloader + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +IF(NOT WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(NOT WITH_PYTHON) + +BLENDERLIB(bf_editor_space_console "${SRC}" "${INC}") diff --git a/source/blender/editors/space_console/Makefile b/source/blender/editors/space_console/Makefile index a7c9283985b..3f760b1ad67 100644 --- a/source/blender/editors/space_console/Makefile +++ b/source/blender/editors/space_console/Makefile @@ -43,6 +43,7 @@ CPPFLAGS += -I../../windowmanager CPPFLAGS += -I../../blenfont CPPFLAGS += -I../../blenkernel CPPFLAGS += -I../../blenlib +CPPFLAGS += -I../../blenloader CPPFLAGS += -I../../makesdna CPPFLAGS += -I../../makesrna CPPFLAGS += -I$(NAN_GUARDEDALLOC)/include diff --git a/source/blender/editors/space_console/SConscript b/source/blender/editors/space_console/SConscript index ecc10a1d0c3..d50902446ba 100644 --- a/source/blender/editors/space_console/SConscript +++ b/source/blender/editors/space_console/SConscript @@ -14,6 +14,7 @@ incs = [ '../../blenlib', '../../windowmanager', '../../blenfont', + '../../blenloader', ] if not env['WITH_BF_PYTHON']: diff --git a/source/blender/editors/space_console/console_draw.c b/source/blender/editors/space_console/console_draw.c index 708089f8f4c..2fab998b9b6 100644 --- a/source/blender/editors/space_console/console_draw.c +++ b/source/blender/editors/space_console/console_draw.c @@ -41,7 +41,6 @@ #include "DNA_space_types.h" #include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "BKE_global.h" #include "BKE_main.h" @@ -56,22 +55,20 @@ #include "ED_datafiles.h" #include "ED_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "console_intern.h" + +static int mono= -1; // XXX needs proper storage and change all the BLF_* here! + static void console_font_begin(SpaceConsole *sc) { - static int mono= -1; // XXX needs proper storage - if(mono == -1) mono= BLF_load_mem("monospace", (unsigned char*)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size); - BLF_set(mono); - BLF_aspect(1.0); - - BLF_size(sc->lheight-2, 72); + BLF_aspect(mono, 1.0); + BLF_size(mono, sc->lheight-2, 72); } static void console_line_color(unsigned char *fg, int type) @@ -226,8 +223,8 @@ static int console_draw_string(ConsoleDrawContext *cdc, char *str, int str_len, glColor3ub(fg[0], fg[1], fg[2]); /* last part needs no clipping */ - BLF_position(cdc->xy[0], cdc->xy[1], 0); - BLF_draw(line_stride); + BLF_position(mono, cdc->xy[0], cdc->xy[1], 0); + BLF_draw(mono, line_stride); if(cdc->sel[0] != cdc->sel[1]) { cdc->sel[0] += str_len - (cdc->console_width % str_len); @@ -244,8 +241,8 @@ static int console_draw_string(ConsoleDrawContext *cdc, char *str, int str_len, eol = line_stride[cdc->console_width]; line_stride[cdc->console_width]= '\0'; - BLF_position(cdc->xy[0], cdc->xy[1], 0); - BLF_draw(line_stride); + BLF_position(mono, cdc->xy[0], cdc->xy[1], 0); + BLF_draw(mono, line_stride); if(cdc->sel[0] != cdc->sel[1]) { console_draw_sel(cdc->sel, cdc->xy, cdc->console_width, cdc->cwidth, cdc->console_width, cdc->lheight); @@ -270,8 +267,8 @@ static int console_draw_string(ConsoleDrawContext *cdc, char *str, int str_len, glColor3ub(fg[0], fg[1], fg[2]); - BLF_position(cdc->xy[0], cdc->xy[1], 0); - BLF_draw(str); + BLF_position(mono, cdc->xy[0], cdc->xy[1], 0); + BLF_draw(mono, str); if(cdc->sel[0] != cdc->sel[1]) console_draw_sel(cdc->sel, cdc->xy, str_len, cdc->cwidth, cdc->console_width, cdc->lheight); @@ -303,7 +300,7 @@ static int console_text_main__internal(struct SpaceConsole *sc, struct ARegion * unsigned char fg[3]; console_font_begin(sc); - cwidth = BLF_fixed_width(); + cwidth = BLF_fixed_width(mono); console_width= (ar->winx - (CONSOLE_DRAW_SCROLL + CONSOLE_DRAW_MARGIN*2) )/cwidth; if (console_width < 8) console_width= 8; @@ -346,11 +343,11 @@ static int console_text_main__internal(struct SpaceConsole *sc, struct ARegion * /* command line */ if(prompt_len) { - BLF_position(xy[0], xy[1], 0); xy[0] += cwidth * prompt_len; - BLF_draw(sc->prompt); + BLF_position(mono, xy[0], xy[1], 0); xy[0] += cwidth * prompt_len; + BLF_draw(mono, sc->prompt); } - BLF_position(xy[0], xy[1], 0); - BLF_draw(cl->line); + BLF_position(mono, xy[0], xy[1], 0); + BLF_draw(mono, cl->line); /* cursor */ UI_GetThemeColor3ubv(TH_CONSOLE_CURSOR, (char *)fg); diff --git a/source/blender/editors/space_console/console_intern.h b/source/blender/editors/space_console/console_intern.h index 48159f2607c..c74d39f25e3 100644 --- a/source/blender/editors/space_console/console_intern.h +++ b/source/blender/editors/space_console/console_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/space_console/console_ops.c b/source/blender/editors/space_console/console_ops.c index 763436dd05f..089e769e0d9 100644 --- a/source/blender/editors/space_console/console_ops.c +++ b/source/blender/editors/space_console/console_ops.c @@ -34,15 +34,10 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BLI_dynstr.h" -#include "PIL_time.h" #include "BKE_utildefines.h" #include "BKE_context.h" @@ -57,9 +52,6 @@ #include "WM_types.h" #include "ED_screen.h" -#include "ED_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "RNA_access.h" #include "RNA_define.h" @@ -362,7 +354,7 @@ void CONSOLE_OT_move(wmOperatorType *ot) { /* identifiers */ ot->name= "Move Cursor"; - ot->description= "Move cursor position"; + ot->description= "Move cursor position"; ot->idname= "CONSOLE_OT_move"; /* api callbacks */ @@ -404,7 +396,7 @@ void CONSOLE_OT_insert(wmOperatorType *ot) { /* identifiers */ ot->name= "Insert"; - ot->description= "Insert text at cursor position"; + ot->description= "Insert text at cursor position"; ot->idname= "CONSOLE_OT_insert"; /* api callbacks */ @@ -469,7 +461,7 @@ void CONSOLE_OT_delete(wmOperatorType *ot) { /* identifiers */ ot->name= "Delete"; - ot->description= "Delete text by cursor position"; + ot->description= "Delete text by cursor position"; ot->idname= "CONSOLE_OT_delete"; /* api callbacks */ @@ -510,7 +502,7 @@ void CONSOLE_OT_clear(wmOperatorType *ot) { /* identifiers */ ot->name= "Clear"; - ot->description= "Clear text by type"; + ot->description= "Clear text by type"; ot->idname= "CONSOLE_OT_clear"; /* api callbacks */ @@ -569,7 +561,7 @@ void CONSOLE_OT_history_cycle(wmOperatorType *ot) { /* identifiers */ ot->name= "History Cycle"; - ot->description= "Cycle through history"; + ot->description= "Cycle through history"; ot->idname= "CONSOLE_OT_history_cycle"; /* api callbacks */ @@ -614,7 +606,7 @@ void CONSOLE_OT_history_append(wmOperatorType *ot) { /* identifiers */ ot->name= "History Append"; - ot->description= "Append history at cursor position"; + ot->description= "Append history at cursor position"; ot->idname= "CONSOLE_OT_history_append"; /* api callbacks */ @@ -659,7 +651,7 @@ void CONSOLE_OT_scrollback_append(wmOperatorType *ot) /* identifiers */ ot->name= "Scrollback Append"; - ot->description= "Append scrollback text by type"; + ot->description= "Append scrollback text by type"; ot->idname= "CONSOLE_OT_scrollback_append"; /* api callbacks */ @@ -756,7 +748,7 @@ void CONSOLE_OT_copy(wmOperatorType *ot) { /* identifiers */ ot->name= "Copy to Clipboard"; - ot->description= "Copy selected text to clipboard"; + ot->description= "Copy selected text to clipboard"; ot->idname= "CONSOLE_OT_copy"; /* api callbacks */ @@ -805,7 +797,7 @@ void CONSOLE_OT_paste(wmOperatorType *ot) { /* identifiers */ ot->name= "Paste from Clipboard"; - ot->description= "Paste text from clipboard"; + ot->description= "Paste text from clipboard"; ot->idname= "CONSOLE_OT_paste"; /* api callbacks */ diff --git a/source/blender/editors/space_console/console_report.c b/source/blender/editors/space_console/console_report.c index 76eec4d0932..50829e4365c 100644 --- a/source/blender/editors/space_console/console_report.c +++ b/source/blender/editors/space_console/console_report.c @@ -32,14 +32,9 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BLI_dynstr.h" -#include "PIL_time.h" #include "BKE_utildefines.h" #include "BKE_context.h" @@ -54,8 +49,6 @@ #include "ED_screen.h" #include "ED_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "RNA_access.h" #include "RNA_define.h" @@ -114,7 +107,7 @@ void CONSOLE_OT_report_replay(wmOperatorType *ot) { /* identifiers */ ot->name= "Replay Operators"; - ot->description= "Replay selected reports"; + ot->description= "Replay selected reports"; ot->idname= "CONSOLE_OT_report_replay"; /* api callbacks */ @@ -161,7 +154,7 @@ void CONSOLE_OT_select_pick(wmOperatorType *ot) { /* identifiers */ ot->name= "Select report"; - ot->description= "Select reports by index"; + ot->description= "Select reports by index"; ot->idname= "CONSOLE_OT_select_pick"; /* api callbacks */ @@ -215,7 +208,7 @@ void CONSOLE_OT_select_all_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "(De)Select All"; - ot->description= "(de)select all reports"; + ot->description= "(de)select all reports"; ot->idname= "CONSOLE_OT_select_all_toggle"; /* api callbacks */ @@ -308,7 +301,7 @@ void CONSOLE_OT_select_border(wmOperatorType *ot) { /* identifiers */ ot->name= "Border Select"; - ot->description= "Toggle border selection"; + ot->description= "Toggle border selection"; ot->idname= "CONSOLE_OT_select_border"; /* api callbacks */ @@ -358,7 +351,7 @@ void CONSOLE_OT_report_delete(wmOperatorType *ot) { /* identifiers */ ot->name= "Delete Reports"; - ot->description= "Delete selected reports"; + ot->description= "Delete selected reports"; ot->idname= "CONSOLE_OT_report_delete"; /* api callbacks */ @@ -403,7 +396,7 @@ void CONSOLE_OT_report_copy(wmOperatorType *ot) { /* identifiers */ ot->name= "Copy Reports to Clipboard"; - ot->description= "Copy selected reports to Clipboard"; + ot->description= "Copy selected reports to Clipboard"; ot->idname= "CONSOLE_OT_report_copy"; /* api callbacks */ diff --git a/source/blender/editors/space_console/space_console.c b/source/blender/editors/space_console/space_console.c index 177cc0e83d0..c04f8183bee 100644 --- a/source/blender/editors/space_console/space_console.c +++ b/source/blender/editors/space_console/space_console.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,12 +29,14 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" +#ifdef WIN32 +#include "BLI_winstuff.h" +#endif #include "MEM_guardedalloc.h" +#include "BLO_readfile.h" /* get the ID name for dnd*/ + #include "BLI_blenlib.h" #include "BLI_math.h" @@ -42,19 +44,16 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -148,28 +147,83 @@ static SpaceLink *console_duplicate(SpaceLink *sl) static void console_main_area_init(wmWindowManager *wm, ARegion *ar) { wmKeyMap *keymap; + ListBase *lb; UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); /* own keymap */ keymap= WM_keymap_find(wm->defaultconf, "Console", SPACE_CONSOLE, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + + /* add drop boxes */ + lb= WM_dropboxmap_find("Console", SPACE_CONSOLE, RGN_TYPE_WINDOW); + + WM_event_add_dropbox_handler(&ar->handlers, lb); } + +/* ************* dropboxes ************* */ + +static int id_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + SpaceConsole *sc= CTX_wm_space_console(C); + if(sc->type==CONSOLE_TYPE_PYTHON) + if(drag->type==WM_DRAG_ID) + return 1; + return 0; +} + +static void id_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + char text[64]; + ID *id= drag->poin; + + snprintf(text, sizeof(text), "bpy.data.%s['%s']", BLO_idcode_to_name_plural(GS(id->name)), id->name+2); + + /* copy drag path to properties */ + RNA_string_set(drop->ptr, "text", text); +} + +static int path_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + SpaceConsole *sc= CTX_wm_space_console(C); + if(sc->type==CONSOLE_TYPE_PYTHON) + if(drag->type==WM_DRAG_PATH) + return 1; + return 0; +} + +static void path_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + char pathname[FILE_MAXDIR+FILE_MAXFILE+2]; + snprintf(pathname, sizeof(pathname), "\"%s\"", drag->path); + RNA_string_set(drop->ptr, "text", pathname); +} + + +/* this region dropbox definition */ +static void console_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("Console", SPACE_CONSOLE, RGN_TYPE_WINDOW); + + WM_dropbox_add(lb, "CONSOLE_OT_insert", id_drop_poll, id_drop_copy); + WM_dropbox_add(lb, "CONSOLE_OT_insert", path_drop_poll, path_drop_copy); +} + +/* ************* end drop *********** */ + static void console_main_area_draw(const bContext *C, ARegion *ar) { /* draw entirely, view changes should be handled here */ SpaceConsole *sc= CTX_wm_space_console(C); View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; if((sc->type==CONSOLE_TYPE_PYTHON) && (sc->scrollback.first==NULL)) WM_operator_name_call((bContext *)C, "CONSOLE_OT_banner", WM_OP_EXEC_DEFAULT, NULL); /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 1.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); console_update_rect(C, ar); @@ -235,19 +289,19 @@ void console_keymap(struct wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", ENDKEY, KM_PRESS, 0, 0)->ptr, "type", LINE_END); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); RNA_enum_set(WM_keymap_add_item(keymap, "CONSOLE_OT_move", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "type", PREV_CHAR); @@ -295,6 +349,11 @@ void console_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "CONSOLE_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "CONSOLE_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); +#ifdef __APPLE__ + WM_keymap_add_item(keymap, "CONSOLE_OT_copy", CKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_add_item(keymap, "CONSOLE_OT_paste", VKEY, KM_PRESS, KM_OSKEY, 0); +#endif + WM_keymap_add_item(keymap, "CONSOLE_OT_select_set", LEFTMOUSE, KM_PRESS, 0, 0); RNA_string_set(WM_keymap_add_item(keymap, "CONSOLE_OT_insert", TABKEY, KM_PRESS, 0, 0)->ptr, "text", " "); /* fake tabs */ @@ -347,6 +406,7 @@ void ED_spacetype_console(void) st->duplicate= console_duplicate; st->operatortypes= console_operatortypes; st->keymap= console_keymap; + st->dropboxes= console_dropboxes; st->listener= console_main_area_listener; /* regions: main window */ diff --git a/source/blender/editors/space_file/CMakeLists.txt b/source/blender/editors/space_file/CMakeLists.txt new file mode 100644 index 00000000000..021e25953b0 --- /dev/null +++ b/source/blender/editors/space_file/CMakeLists.txt @@ -0,0 +1,59 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenfont + ../../blenkernel + ../../blenlib + ../../blenloader + ../../imbuf + ../include + ../../../../intern/audaspace/intern + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../render/extern/include + ../../windowmanager +) + +IF(WITH_OPENEXR) + ADD_DEFINITIONS(-DWITH_OPENEXR) +ENDIF(WITH_OPENEXR) + +IF(WITH_TIFF) + ADD_DEFINITIONS(-DWITH_TIFF) +ENDIF(WITH_TIFF) + +IF(WITH_OPENJPEG) + ADD_DEFINITIONS(-DWITH_OPENJPEG) +ENDIF(WITH_OPENJPEG) + +IF(WITH_DDS) + ADD_DEFINITIONS(-DWITH_DDS) +ENDIF(WITH_DDS) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_space_file "${SRC}" "${INC}") diff --git a/source/blender/editors/space_file/Makefile b/source/blender/editors/space_file/Makefile index 43b2f09ed2d..29548b51222 100644 --- a/source/blender/editors/space_file/Makefile +++ b/source/blender/editors/space_file/Makefile @@ -63,3 +63,7 @@ ifeq ($(WITH_OPENEXR), true) CPPFLAGS += -DWITH_OPENEXR endif +ifeq ($(WITH_TIFF), true) + CPPFLAGS += -DWITH_TIFF +endif + diff --git a/source/blender/editors/space_file/SConscript b/source/blender/editors/space_file/SConscript index b22a265dcbc..9de705e99d3 100644 --- a/source/blender/editors/space_file/SConscript +++ b/source/blender/editors/space_file/SConscript @@ -12,9 +12,13 @@ defs = [] if env['WITH_BF_OPENJPEG']: defs.append('WITH_OPENJPEG') + if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') +if env['WITH_BF_TIFF']: + defs.append('WITH_TIFF') + if env['OURPLATFORM'] == 'linux2': cflags='-pthread' incs += ' ../../../extern/binreloc/include' diff --git a/source/blender/editors/space_file/file_draw.c b/source/blender/editors/space_file/file_draw.c index cd0571d4219..03ab42b467d 100644 --- a/source/blender/editors/space_file/file_draw.c +++ b/source/blender/editors/space_file/file_draw.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -46,20 +46,11 @@ #include "BLF_api.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" - -#include "ED_datafiles.h" - #include "IMB_imbuf_types.h" -#include "IMB_imbuf.h" #include "MEM_guardedalloc.h" -#include "PIL_time.h" +#include "DNA_userdef_types.h" #include "RNA_access.h" @@ -71,7 +62,6 @@ #include "UI_resources.h" #include "UI_view2d.h" -#include "WM_api.h" #include "WM_types.h" #include "fsmenu.h" @@ -87,10 +77,6 @@ /* button events */ enum { - B_REDR = 0, - B_FS_EXEC, - B_FS_CANCEL, - B_FS_PARENT, B_FS_DIRNAME, B_FS_FILENAME } eFile_ButEvents; @@ -99,9 +85,6 @@ enum { static void do_file_buttons(bContext *C, void *arg, int event) { switch(event) { - case B_FS_PARENT: - file_parent_exec(C, NULL); /* file_ops.c */ - break; case B_FS_FILENAME: file_filename_exec(C, NULL); break; @@ -142,6 +125,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) int loadbutton; int fnumbuttons; int min_x = 10; + int chan_offs = 0; int available_w = max_x - min_x; int line1_w = available_w; int line2_w = available_w; @@ -160,8 +144,9 @@ void file_draw_buttons(const bContext *C, ARegion *ar) /* exception to make space for collapsed region icon */ for (artmp=CTX_wm_area(C)->regionbase.first; artmp; artmp=artmp->next) { if (artmp->regiontype == RGN_TYPE_CHANNELS && artmp->flag & RGN_FLAG_HIDDEN) { - min_x += 16; - available_w -= 16; + chan_offs = 16; + min_x += chan_offs; + available_w -= chan_offs; } } @@ -169,7 +154,7 @@ void file_draw_buttons(const bContext *C, ARegion *ar) loadbutton = UI_GetStringWidth(sfile->params->title) + btn_margin; if (loadbutton < btn_minw) { loadbutton = MAX2(btn_minw, - btn_margin + UI_GetStringWidth(params->title)); + btn_margin + UI_GetStringWidth(params->title)); } if (available_w <= loadbutton + separator + input_minw @@ -191,29 +176,30 @@ void file_draw_buttons(const bContext *C, ARegion *ar) /* Text input fields for directory and file. */ if (available_w > 0) { but = uiDefBut(block, TEX, B_FS_DIRNAME, "", - min_x, line1_y, line1_w, btn_h, - params->dir, 0.0, (float)FILE_MAX-1, 0, 0, - "File path."); + min_x, line1_y, line1_w-chan_offs, btn_h, + params->dir, 0.0, (float)FILE_MAX-1, 0, 0, + "File path."); uiButSetCompleteFunc(but, autocomplete_directory, NULL); - uiDefBut(block, TEX, B_FS_FILENAME, "", - min_x, line2_y, line2_w, btn_h, - params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0, - "File name."); + but = uiDefBut(block, TEX, B_FS_FILENAME, "", + min_x, line2_y, line2_w-chan_offs, btn_h, + params->file, 0.0, (float)FILE_MAXFILE-1, 0, 0, + "File name."); + uiButSetCompleteFunc(but, autocomplete_file, NULL); } /* Filename number increment / decrement buttons. */ if (fnumbuttons) { uiBlockBeginAlign(block); but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMOUT, - min_x + line2_w + separator, line2_y, - btn_fn_w, btn_h, - "Decrement the filename number"); + min_x + line2_w + separator - chan_offs, line2_y, + btn_fn_w, btn_h, + "Decrement the filename number"); RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", -1); but = uiDefIconButO(block, BUT, "FILE_OT_filenum", 0, ICON_ZOOMIN, - min_x + line2_w + separator + btn_fn_w, line2_y, - btn_fn_w, btn_h, - "Increment the filename number"); + min_x + line2_w + separator + btn_fn_w - chan_offs, line2_y, + btn_fn_w, btn_h, + "Increment the filename number"); RNA_int_set(uiButGetOperatorPtrRNA(but), "increment", 1); uiBlockEndAlign(block); } @@ -238,7 +224,7 @@ static void draw_tile(int sx, int sy, int width, int height, int colorid, int sh { UI_ThemeColorShade(colorid, shade); uiSetRoundBox(15); - uiRoundBox(sx, sy - height, sx + width, sy, 6); + uiRoundBox(sx, sy - height, sx + width, sy, 5); } #define FILE_SHORTEN_END 0 @@ -298,6 +284,9 @@ static int get_file_icon(struct direntry *file) if ( strcmp(file->relname, "..") == 0) { return ICON_FILE_PARENT; } + if(file->flags & BLENDERFILE) { + return ICON_FILE_BLEND; + } return ICON_FILE_FOLDER; } else if (file->flags & BLENDERFILE) @@ -316,6 +305,8 @@ static int get_file_icon(struct direntry *file) return ICON_FILE_FONT; else if (file->flags & BTXFILE) return ICON_FILE_BLANK; + else if (file->flags & COLLADAFILE) + return ICON_FILE_BLANK; else return ICON_FILE_BLANK; } @@ -338,11 +329,13 @@ static void file_draw_icon(uiBlock *block, char *path, int sx, int sy, int icon, static void file_draw_string(int sx, int sy, const char* string, float width, int height, int flag) { + uiStyle *style= U.uistyles.first; int soffs; char fname[FILE_MAXFILE]; float sw; float x,y; + BLI_strncpy(fname,string, FILE_MAXFILE); sw = shorten_string(fname, width, flag ); @@ -350,8 +343,9 @@ static void file_draw_string(int sx, int sy, const char* string, float width, in x = (float)(sx); y = (float)(sy-height); - BLF_position(x, y, 0); - BLF_draw(fname); + uiStyleFontSet(&style->widget); + BLF_position(style->widget.uifont_id, x, y, 0); + BLF_draw(style->widget.uifont_id, fname); } void file_calc_previews(const bContext *C, ARegion *ar) @@ -445,7 +439,7 @@ static void renamebutton_cb(bContext *C, void *arg1, char *oldname) if (!BLI_exists(newname)) { BLI_rename(orgname, newname); /* to make sure we show what is on disk */ - filelist_free(sfile->files); + ED_fileselect_clear(C, sfile); } else { BLI_strncpy(file->relname, oldname, strlen(oldname)+1); } @@ -515,11 +509,18 @@ void file_draw_list(const bContext *C, ARegion *ar) draw_dividers(layout, v2d); } - offset = ED_fileselect_layout_offset(layout, ar->v2d.cur.xmin, -ar->v2d.cur.ymax); + offset = ED_fileselect_layout_offset(layout, 0, ar->v2d.cur.xmin, -ar->v2d.cur.ymax); if (offset<0) offset=0; numfiles_layout = ED_fileselect_layout_numfiles(layout, ar); + /* adjust, so the next row is already drawn when scrolling */ + if (layout->flag & FILE_LAYOUT_HOR) { + numfiles_layout += layout->rows; + } else { + numfiles_layout += layout->columns; + } + for (i=offset; (i < numfiles) && (i<offset+numfiles_layout); ++i) { ED_fileselect_layout_tilepos(layout, i, &sx, &sy); @@ -546,20 +547,17 @@ void file_draw_list(const bContext *C, ARegion *ar) if (!(file->flags & EDITING)) { if (params->active_file == i) { - if (file->flags & ACTIVE) colorid= TH_HILITE; + if (file->flags & ACTIVEFILE) colorid= TH_HILITE; else colorid = TH_BACK; - draw_tile(sx, sy-3, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,20); - } else if (file->flags & ACTIVE) { + draw_tile(sx, sy-1, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,20); + } else if (file->flags & ACTIVEFILE) { colorid = TH_HILITE; - draw_tile(sx, sy-3, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,0); + draw_tile(sx, sy-1, layout->tile_w+4, sfile->layout->tile_h+layout->tile_border_y, colorid,0); } } uiSetRoundBox(0); if ( FILE_IMGDISPLAY == params->display ) { - if ( (file->flags & IMAGEFILE) /* || (file->flags & MOVIEFILE) */) { - filelist_loadimage(files, i); - } is_icon = 0; imb = filelist_getimage(files, i); if (!imb) { @@ -624,11 +622,6 @@ void file_draw_list(const bContext *C, ARegion *ar) } } - /* XXX this timer is never removed, cause smooth view operator - to get executed all the time after closing file browser */ - if (!sfile->loadimage_timer) - sfile->loadimage_timer= WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/30.0); /* max 30 frames/sec. */ - uiEndBlock(C, block); uiDrawBlock(C, block); diff --git a/source/blender/editors/space_file/file_intern.h b/source/blender/editors/space_file/file_intern.h index 1d239f1741e..c77379b39a0 100644 --- a/source/blender/editors/space_file/file_intern.h +++ b/source/blender/editors/space_file/file_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -58,7 +58,6 @@ void FILE_OT_select_bookmark(struct wmOperatorType *ot); void FILE_OT_bookmark_add(struct wmOperatorType *ot); void FILE_OT_delete_bookmark(struct wmOperatorType *ot); void FILE_OT_hidedot(struct wmOperatorType *ot); -void FILE_OT_loadimages(struct wmOperatorType *ot); void FILE_OT_execute(struct wmOperatorType *ot); void FILE_OT_cancel(struct wmOperatorType *ot); void FILE_OT_parent(struct wmOperatorType *ot); @@ -71,6 +70,7 @@ void FILE_OT_bookmark_toggle(struct wmOperatorType *ot); void FILE_OT_filenum(struct wmOperatorType *ot); void FILE_OT_delete(struct wmOperatorType *ot); void FILE_OT_rename(struct wmOperatorType *ot); +void FILE_OT_smoothscroll(struct wmOperatorType *ot); int file_exec(bContext *C, struct wmOperator *exec_op); int file_cancel_exec(bContext *C, struct wmOperator *unused); @@ -88,9 +88,10 @@ int file_hilight_set(struct SpaceFile *sfile, struct ARegion *ar, int mx, int my /* filesel.c */ float file_string_width(const char* str); float file_font_pointsize(); -void file_change_dir(struct SpaceFile *sfile, int checkdir); +void file_change_dir(bContext *C, int checkdir); int file_select_match(struct SpaceFile *sfile, const char *pattern); void autocomplete_directory(struct bContext *C, char *str, void *arg_v); +void autocomplete_file(struct bContext *C, char *str, void *arg_v); /* file_panels.c */ void file_panels_register(struct ARegionType *art); diff --git a/source/blender/editors/space_file/file_ops.c b/source/blender/editors/space_file/file_ops.c index 312118491be..55a44b36a52 100644 --- a/source/blender/editors/space_file/file_ops.c +++ b/source/blender/editors/space_file/file_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -36,10 +36,7 @@ #ifdef WIN32 #include "BLI_winstuff.h" #endif -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_fileselect.h" @@ -48,7 +45,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "UI_interface.h" #include "UI_view2d.h" #include "WM_api.h" @@ -63,13 +59,13 @@ #include <stdio.h> /* for events */ -#define NOTACTIVE 0 +#define NOTACTIVEFILE 0 #define ACTIVATE 1 #define INACTIVATE 2 /* ---------- FILE SELECTION ------------ */ -static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, int x, int y) +static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, int clamp_bounds, int x, int y) { float fx,fy; int active_file = -1; @@ -77,7 +73,7 @@ static int find_file_mouse(SpaceFile *sfile, struct ARegion* ar, int x, int y) UI_view2d_region_to_view(v2d, x, y, &fx, &fy); - active_file = ED_fileselect_layout_offset(sfile->layout, v2d->tot.xmin + fx, v2d->tot.ymax - fy); + active_file = ED_fileselect_layout_offset(sfile->layout, clamp_bounds, v2d->tot.xmin + fx, v2d->tot.ymax - fy); return active_file; } @@ -90,8 +86,8 @@ static void file_deselect_all(SpaceFile* sfile) for ( i=0; i < numfiles; ++i) { struct direntry* file = filelist_file(sfile->files, i); - if (file && (file->flags & ACTIVE)) { - file->flags &= ~ACTIVE; + if (file && (file->flags & ACTIVEFILE)) { + file->flags &= ~ACTIVEFILE; } } } @@ -125,8 +121,10 @@ static void clamp_to_filelist(int numfiles, int *first_file, int *last_file) } } -static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, short selecting, short toggle_one) +static FileSelect file_select(bContext* C, const rcti* rect, short selecting, short toggle_one, short fill) { + ARegion *ar= CTX_wm_region(C); + SpaceFile *sfile= CTX_wm_space_file(C); int first_file = -1; int last_file = -1; int act_file; @@ -136,28 +134,41 @@ static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, s // FileLayout *layout = ED_fileselect_get_layout(sfile, ar); int numfiles = filelist_numfiles(sfile->files); - - params->selstate = NOTACTIVE; - first_file = find_file_mouse(sfile, ar, rect->xmin, rect->ymax); - last_file = find_file_mouse(sfile, ar, rect->xmax, rect->ymin); + + params->selstate = NOTACTIVEFILE; + first_file = find_file_mouse(sfile, ar, 1, rect->xmin, rect->ymax); + last_file = find_file_mouse(sfile, ar, 1, rect->xmax, rect->ymin); clamp_to_filelist(numfiles, &first_file, &last_file); + if (fill && (last_file >= 0) && (last_file < numfiles) ) { + int f= last_file; + while (f >= 0) { + struct direntry* file = filelist_file(sfile->files, f); + if (file->flags & ACTIVEFILE) + break; + f--; + } + if (f >= 0) { + first_file = f+1; + } + } + /* select all valid files between first and last indicated */ if ( (first_file >= 0) && (first_file < numfiles) && (last_file >= 0) && (last_file < numfiles) ) { for (act_file = first_file; act_file <= last_file; act_file++) { struct direntry* file = filelist_file(sfile->files, act_file); if (toggle_one) { - if (file->flags & ACTIVE) { - file->flags &= ~ACTIVE; + if (file->flags & ACTIVEFILE) { + file->flags &= ~ACTIVEFILE; selecting=0; } else - file->flags |= ACTIVE; + file->flags |= ACTIVEFILE; } else if (selecting) - file->flags |= ACTIVE; + file->flags |= ACTIVEFILE; else - file->flags &= ~ACTIVE; + file->flags &= ~ACTIVEFILE; } } @@ -184,7 +195,7 @@ static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, s BLI_add_slash(params->dir); } - file_change_dir(sfile, 0); + file_change_dir(C, 0); retval = FILE_SELECT_DIR; } } @@ -204,10 +215,9 @@ static FileSelect file_select(SpaceFile* sfile, ARegion* ar, const rcti* rect, s static int file_border_select_exec(bContext *C, wmOperator *op) { ARegion *ar= CTX_wm_region(C); - SpaceFile *sfile= CTX_wm_space_file(C); short selecting; rcti rect; - + selecting= (RNA_int_get(op->ptr, "gesture_mode")==GESTURE_MODAL_SELECT); rect.xmin= RNA_int_get(op->ptr, "xmin"); rect.ymin= RNA_int_get(op->ptr, "ymin"); @@ -216,7 +226,7 @@ static int file_border_select_exec(bContext *C, wmOperator *op) BLI_isect_rcti(&(ar->v2d.mask), &rect, &rect); - if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, selecting, 0)) { + if (FILE_SELECT_DIR == file_select(C, &rect, selecting, 0, 0)) { WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } else { WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL); @@ -248,6 +258,7 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event) short val; rcti rect; int extend = RNA_boolean_get(op->ptr, "extend"); + int fill = RNA_boolean_get(op->ptr, "fill"); if(ar->regiontype != RGN_TYPE_WINDOW) return OPERATOR_CANCELLED; @@ -262,7 +273,7 @@ static int file_select_invoke(bContext *C, wmOperator *op, wmEvent *event) /* single select, deselect all selected first */ if (!extend) file_deselect_all(sfile); - if (FILE_SELECT_DIR == file_select(sfile, ar, &rect, 1, extend )) + if (FILE_SELECT_DIR == file_select(C, &rect, 1, extend, fill )) WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); else WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_PARAMS, NULL); @@ -286,6 +297,7 @@ void FILE_OT_select(wmOperatorType *ot) /* rna */ RNA_def_boolean(ot->srna, "extend", 0, "Extend", "Extend selection instead of deselecting everything first."); + RNA_def_boolean(ot->srna, "fill", 0, "Fill", "Select everything beginning with the last selection."); } static int file_select_all_exec(bContext *C, wmOperator *op) @@ -299,8 +311,8 @@ static int file_select_all_exec(bContext *C, wmOperator *op) /* if any file is selected, deselect all first */ for ( i=0; i < numfiles; ++i) { struct direntry* file = filelist_file(sfile->files, i); - if (file && (file->flags & ACTIVE)) { - file->flags &= ~ACTIVE; + if (file && (file->flags & ACTIVEFILE)) { + file->flags &= ~ACTIVEFILE; select = 0; ED_area_tag_redraw(sa); } @@ -310,7 +322,7 @@ static int file_select_all_exec(bContext *C, wmOperator *op) for ( i=0; i < numfiles; ++i) { struct direntry* file = filelist_file(sfile->files, i); if(file && !S_ISDIR(file->type)) { - file->flags |= ACTIVE; + file->flags |= ACTIVEFILE; ED_area_tag_redraw(sa); } } @@ -346,7 +358,7 @@ static int bookmark_select_exec(bContext *C, wmOperator *op) RNA_string_get(op->ptr, "dir", entry); BLI_strncpy(params->dir, entry, sizeof(params->dir)); BLI_cleanup_dir(G.sce, params->dir); - file_change_dir(sfile, 1); + file_change_dir(C, 1); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } @@ -379,7 +391,7 @@ static int bookmark_add_exec(bContext *C, wmOperator *op) char name[FILE_MAX]; fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, params->dir, 0, 1); - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); + BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); fsmenu_write_file(fsmenu, name); } @@ -411,7 +423,7 @@ static int bookmark_delete_exec(bContext *C, wmOperator *op) char name[FILE_MAX]; fsmenu_remove_entry(fsmenu, FS_CATEGORY_BOOKMARKS, index); - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); + BLI_make_file_string("/", name, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); fsmenu_write_file(fsmenu, name); ED_area_tag_redraw(sa); } @@ -434,35 +446,6 @@ void FILE_OT_delete_bookmark(wmOperatorType *ot) RNA_def_int(ot->srna, "index", -1, -1, 20000, "Index", "", -1, 20000); } - -static int loadimages_exec(bContext *C, wmOperator *op) -{ - ScrArea *sa= CTX_wm_area(C); - SpaceFile *sfile= CTX_wm_space_file(C); - if (sfile->files) { - filelist_loadimage_timer(sfile->files); - if (filelist_changed(sfile->files)) { - ED_area_tag_redraw(sa); - } - } - - return OPERATOR_FINISHED; -} - -void FILE_OT_loadimages(wmOperatorType *ot) -{ - - /* identifiers */ - ot->name= "Load Images"; - ot->description= "Load selected image(s)"; - ot->idname= "FILE_OT_loadimages"; - - /* api callbacks */ - ot->exec= loadimages_exec; - - ot->poll= ED_operator_file_active; -} - int file_hilight_set(SpaceFile *sfile, ARegion *ar, int mx, int my) { FileSelectParams* params; @@ -479,7 +462,7 @@ int file_hilight_set(SpaceFile *sfile, ARegion *ar, int mx, int my) my -= ar->winrct.ymin; if(BLI_in_rcti(&ar->v2d.mask, mx, my)) { - actfile = find_file_mouse(sfile, ar, mx , my); + actfile = find_file_mouse(sfile, ar, 0, mx , my); if((actfile >= 0) && (actfile < numfiles)) params->active_file=actfile; @@ -528,8 +511,7 @@ int file_cancel_exec(bContext *C, wmOperator *unused) sfile->op = NULL; if (sfile->files) { - filelist_freelib(sfile->files); - filelist_free(sfile->files); + ED_fileselect_clear(C, sfile); MEM_freeN(sfile->files); sfile->files= NULL; } @@ -563,7 +545,7 @@ void FILE_OT_cancel(struct wmOperatorType *ot) int file_exec(bContext *C, wmOperator *exec_op) { SpaceFile *sfile= CTX_wm_space_file(C); - char name[FILE_MAX]; + char filepath[FILE_MAX]; if(sfile->op) { wmOperator *op= sfile->op; @@ -576,7 +558,7 @@ int file_exec(bContext *C, wmOperator *exec_op) for (i=0; i<filelist_numfiles(sfile->files); i++) { file = filelist_file(sfile->files, i); - if(file->flags & ACTIVE) { + if(file->flags & ACTIVEFILE) { active=1; } } @@ -585,16 +567,23 @@ int file_exec(bContext *C, wmOperator *exec_op) } sfile->op = NULL; - RNA_string_set(op->ptr, "filename", sfile->params->file); - BLI_strncpy(name, sfile->params->dir, sizeof(name)); - RNA_string_set(op->ptr, "directory", name); - strcat(name, sfile->params->file); // XXX unsafe - if(RNA_struct_find_property(op->ptr, "relative_paths")) - if(RNA_boolean_get(op->ptr, "relative_paths")) - BLI_makestringcode(G.sce, name); + BLI_join_dirfile(filepath, sfile->params->dir, sfile->params->file); + if(RNA_struct_find_property(op->ptr, "relative_path")) { + if(RNA_boolean_get(op->ptr, "relative_path")) { + BLI_path_rel(filepath, G.sce); + } + } - RNA_string_set(op->ptr, "path", name); + if(RNA_struct_find_property(op->ptr, "filename")) { + RNA_string_set(op->ptr, "filename", sfile->params->file); + } + if(RNA_struct_find_property(op->ptr, "directory")) { + RNA_string_set(op->ptr, "directory", sfile->params->dir); + } + if(RNA_struct_find_property(op->ptr, "filepath")) { + RNA_string_set(op->ptr, "filepath", filepath); + } /* some ops have multiple files to select */ { @@ -604,7 +593,7 @@ int file_exec(bContext *C, wmOperator *exec_op) if(RNA_struct_find_property(op->ptr, "files")) { for (i=0; i<numfiles; i++) { file = filelist_file(sfile->files, i); - if(file->flags & ACTIVE) { + if(file->flags & ACTIVEFILE) { if ((file->type & S_IFDIR)==0) { RNA_collection_add(op->ptr, "files", &itemptr); RNA_string_set(&itemptr, "name", file->relname); @@ -616,7 +605,7 @@ int file_exec(bContext *C, wmOperator *exec_op) if(RNA_struct_find_property(op->ptr, "dirs")) { for (i=0; i<numfiles; i++) { file = filelist_file(sfile->files, i); - if(file->flags & ACTIVE) { + if(file->flags & ACTIVEFILE) { if ((file->type & S_IFDIR)) { RNA_collection_add(op->ptr, "dirs", &itemptr); RNA_string_set(&itemptr, "name", file->relname); @@ -630,12 +619,11 @@ int file_exec(bContext *C, wmOperator *exec_op) folderlist_free(sfile->folders_next); fsmenu_insert_entry(fsmenu_get(), FS_CATEGORY_RECENT, sfile->params->dir,0, 1); - BLI_make_file_string(G.sce, name, BLI_gethome(), ".Bfs"); - fsmenu_write_file(fsmenu_get(), name); + BLI_make_file_string(G.sce, filepath, BLI_get_folder_create(BLENDER_USER_CONFIG, NULL), BLENDER_BOOKMARK_FILE); + fsmenu_write_file(fsmenu_get(), filepath); WM_event_fileselect_event(C, op, EVT_FILESELECT_EXEC); - filelist_freelib(sfile->files); - filelist_free(sfile->files); + ED_fileselect_clear(C, sfile); MEM_freeN(sfile->files); sfile->files= NULL; } @@ -666,7 +654,7 @@ int file_parent_exec(bContext *C, wmOperator *unused) if (BLI_has_parent(sfile->params->dir)) { BLI_parent_dir(sfile->params->dir); BLI_cleanup_dir(G.sce, sfile->params->dir); - file_change_dir(sfile, 0); + file_change_dir(C, 0); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } } @@ -692,8 +680,8 @@ void FILE_OT_parent(struct wmOperatorType *ot) int file_refresh_exec(bContext *C, wmOperator *unused) { SpaceFile *sfile= CTX_wm_space_file(C); - - file_change_dir(sfile, 1); + + ED_fileselect_clear(C, sfile); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); @@ -725,7 +713,7 @@ int file_previous_exec(bContext *C, wmOperator *unused) folderlist_popdir(sfile->folders_prev, sfile->params->dir); folderlist_pushdir(sfile->folders_next, sfile->params->dir); - file_change_dir(sfile, 1); + file_change_dir(C, 1); } WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); @@ -747,8 +735,8 @@ void FILE_OT_next(struct wmOperatorType *ot) int file_next_exec(bContext *C, wmOperator *unused) { SpaceFile *sfile= CTX_wm_space_file(C); - if(sfile->params) { - if (!sfile->folders_next) + if(sfile->params) { + if (!sfile->folders_next) sfile->folders_next = folderlist_new(); folderlist_pushdir(sfile->folders_prev, sfile->params->dir); @@ -757,13 +745,123 @@ int file_next_exec(bContext *C, wmOperator *unused) // update folder_prev so we can check for it in folderlist_clear_next() folderlist_pushdir(sfile->folders_prev, sfile->params->dir); - file_change_dir(sfile, 1); + file_change_dir(C, 1); } WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); return OPERATOR_FINISHED; } + +/* only meant for timer usage */ +static int file_smoothscroll_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + ScrArea *sa = CTX_wm_area(C); + SpaceFile *sfile= CTX_wm_space_file(C); + ARegion *ar, *oldar= CTX_wm_region(C); + int numfiles, offset; + int edit_idx = 0; + int numfiles_layout; + int i; + + /* escape if not our timer */ + if(sfile->smoothscroll_timer==NULL || sfile->smoothscroll_timer!=event->customdata) + return OPERATOR_PASS_THROUGH; + + numfiles = filelist_numfiles(sfile->files); + + /* check if we are editing a name */ + for (i=0; i < numfiles; ++i) + { + struct direntry *file = filelist_file(sfile->files, i); + if (file->flags & EDITING) { + edit_idx=i; + break; + } + } + + /* if we are not editing, we are done */ + if (0==edit_idx) { + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), sfile->smoothscroll_timer); + sfile->smoothscroll_timer=NULL; + return OPERATOR_PASS_THROUGH; + } + + /* we need the correct area for scrolling */ + ar = BKE_area_find_region_type(sa, RGN_TYPE_WINDOW); + if (!ar || ar->regiontype != RGN_TYPE_WINDOW) { + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), sfile->smoothscroll_timer); + sfile->smoothscroll_timer=NULL; + return OPERATOR_PASS_THROUGH; + } + + offset = ED_fileselect_layout_offset(sfile->layout, 0, ar->v2d.cur.xmin, -ar->v2d.cur.ymax); + if (offset<0) offset=0; + + /* scroll offset is the first file in the row/column we are editing in */ + if (sfile->scroll_offset == 0) { + if (sfile->layout->flag & FILE_LAYOUT_HOR) { + sfile->scroll_offset = (edit_idx/sfile->layout->rows)*sfile->layout->rows; + if (sfile->scroll_offset <= offset) sfile->scroll_offset -= sfile->layout->rows; + } else { + sfile->scroll_offset = (edit_idx/sfile->layout->columns)*sfile->layout->columns; + if (sfile->scroll_offset <= offset) sfile->scroll_offset -= sfile->layout->columns; + } + } + + numfiles_layout = ED_fileselect_layout_numfiles(sfile->layout, ar); + + /* check if we have reached our final scroll position */ + if ( (sfile->scroll_offset >= offset) && (sfile->scroll_offset < offset + numfiles_layout) ) { + WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), sfile->smoothscroll_timer); + sfile->smoothscroll_timer=NULL; + return OPERATOR_FINISHED; + } + + /* temporarily set context to the main window region, + * so the scroll operators work */ + CTX_wm_region_set(C, ar); + + /* scroll one step in the desired direction */ + if (sfile->scroll_offset < offset) { + if (sfile->layout->flag & FILE_LAYOUT_HOR) { + WM_operator_name_call(C, "VIEW2D_OT_scroll_left", 0, NULL); + } else { + WM_operator_name_call(C, "VIEW2D_OT_scroll_up", 0, NULL); + } + + } else { + if (sfile->layout->flag & FILE_LAYOUT_HOR) { + WM_operator_name_call(C, "VIEW2D_OT_scroll_right", 0, NULL); + } else { + WM_operator_name_call(C, "VIEW2D_OT_scroll_down", 0, NULL); + } + } + + ED_region_tag_redraw(CTX_wm_region(C)); + + /* and restore context */ + CTX_wm_region_set(C, oldar); + + return OPERATOR_FINISHED; +} + + +void FILE_OT_smoothscroll(wmOperatorType *ot) +{ + + /* identifiers */ + ot->name= "Smooth Scroll"; + ot->idname= "FILE_OT_smoothscroll"; + ot->description="Smooth scroll to make editable file visible."; + + /* api callbacks */ + ot->invoke= file_smoothscroll_invoke; + + ot->poll= ED_operator_file_active; +} + + /* create a new, non-existing folder name, returns 1 if successful, 0 if name couldn't be created. The actual name is returned in 'name', 'folder' contains the complete path, including the new folder name. */ @@ -813,6 +911,13 @@ int file_directory_new_exec(bContext *C, wmOperator *op) /* now remember file to jump into editing */ BLI_strncpy(sfile->params->renamefile, name, FILE_MAXFILE); + + /* set timer to smoothly view newly generated file */ + sfile->smoothscroll_timer = WM_event_add_timer(CTX_wm_manager(C), CTX_wm_window(C), TIMER1, 1.0/1000.0); /* max 30 frs/sec */ + sfile->scroll_offset=0; + + /* reload dir to make sure we're seeing what's in the directory */ + ED_fileselect_clear(C, sfile); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); return OPERATOR_FINISHED; @@ -834,33 +939,22 @@ void FILE_OT_directory_new(struct wmOperatorType *ot) int file_directory_exec(bContext *C, wmOperator *unused) { - char tmpstr[FILE_MAX]; - SpaceFile *sfile= CTX_wm_space_file(C); if(sfile->params) { if ( sfile->params->dir[0] == '~' ) { - if (sfile->params->dir[1] == '\0') { - BLI_strncpy(sfile->params->dir, BLI_gethome(), sizeof(sfile->params->dir) ); - } else { - /* replace ~ with home */ - char homestr[FILE_MAX]; - char *d = &sfile->params->dir[1]; - - while ( (*d == '\\') || (*d == '/') ) - d++; - BLI_strncpy(homestr, BLI_gethome(), FILE_MAX); - BLI_join_dirfile(tmpstr, homestr, d); - BLI_strncpy(sfile->params->dir, tmpstr, sizeof(sfile->params->dir)); - } + char tmpstr[sizeof(sfile->params->dir)-1]; + strncpy(tmpstr, sfile->params->dir+1, sizeof(tmpstr)); + BLI_join_dirfile(sfile->params->dir, BLI_gethome(), tmpstr); } + #ifdef WIN32 if (sfile->params->dir[0] == '\0') get_default_root(sfile->params->dir); #endif BLI_cleanup_dir(G.sce, sfile->params->dir); BLI_add_slash(sfile->params->dir); - file_change_dir(sfile, 1); + file_change_dir(C, 1); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } @@ -903,13 +997,11 @@ int file_hidedot_exec(bContext *C, wmOperator *unused) if(sfile->params) { sfile->params->flag ^= FILE_HIDE_DOT; - filelist_free(sfile->files); - sfile->params->active_file = -1; + ED_fileselect_clear(C, sfile); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); } return OPERATOR_FINISHED; - } @@ -1089,6 +1181,7 @@ int file_delete_exec(bContext *C, wmOperator *op) file = filelist_file(sfile->files, sfile->params->active_file); BLI_make_file_string(G.sce, str, sfile->params->dir, file->relname); BLI_delete(str, 0, 0); + ED_fileselect_clear(C, sfile); WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_file/file_panels.c b/source/blender/editors/space_file/file_panels.c index b6152f26947..4a505bc022f 100644 --- a/source/blender/editors/space_file/file_panels.c +++ b/source/blender/editors/space_file/file_panels.c @@ -33,8 +33,6 @@ #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -42,7 +40,6 @@ #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "WM_api.h" #include "WM_types.h" @@ -185,14 +182,14 @@ static void file_panel_operator(const bContext *C, Panel *pa) if(flag & PROP_HIDDEN) continue; - if(strcmp(RNA_property_identifier(prop), "path") == 0) + if(strcmp(RNA_property_identifier(prop), "filepath") == 0) continue; if(strcmp(RNA_property_identifier(prop), "directory") == 0) continue; if(strcmp(RNA_property_identifier(prop), "filename") == 0) continue; - uiItemFullR(pa->layout, NULL, 0, op->ptr, prop, -1, 0, 0); + uiItemFullR(pa->layout, op->ptr, prop, -1, 0, 0, NULL, 0); empty= 0; } RNA_STRUCT_END; diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c index 3631e0743da..70ef857699a 100644 --- a/source/blender/editors/space_file/filelist.c +++ b/source/blender/editors/space_file/filelist.c @@ -34,10 +34,6 @@ #include <math.h> #include <string.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #ifndef WIN32 #include <unistd.h> #else @@ -55,6 +51,7 @@ #include "BLI_winstuff.h" #endif +#include "BKE_context.h" #include "BKE_utildefines.h" #include "BKE_global.h" #include "BKE_library.h" @@ -83,29 +80,34 @@ #include "PIL_time.h" -#include "UI_interface.h" -#include "filelist.h" +#include "WM_api.h" +#include "WM_types.h" -/* Elubie: VERY, really very ugly and evil! Remove asap!!! */ -/* for state of file */ -#define ACTIVE 2 +#include "filelist.h" /* max length of library group name within filesel */ #define GROUP_MAX 32 -static void *exec_loadimages(void *list_v); - struct FileList; typedef struct FileImage { struct FileImage *next, *prev; + char path[FILE_MAX]; + unsigned int flags; int index; - short lock; short done; - struct FileList* filelist; + ImBuf *img; } FileImage; +typedef struct ThumbnailJob { + ListBase loadimages; + short *stop; + short *do_update; + struct FileList* filelist; + ReportList reports; +} ThumbnailJob; + typedef struct FileList { struct direntry *filelist; @@ -122,10 +124,9 @@ typedef struct FileList struct BlendHandle *libfiledata; short hide_parent; - void (*read)(struct FileList *); + void (*readf)(struct FileList *); + int (*filterf)(struct direntry* file, const char* dir, unsigned int filter, short hide_dot); - ListBase loadimages; - ListBase threads; } FileList; typedef struct FolderList @@ -160,7 +161,7 @@ static int compare_name(const void *a1, const void *a2) { const struct direntry *entry1=a1, *entry2=a2; - /* type is is equal to stat.st_mode */ + /* type is equal to stat.st_mode */ if (S_ISDIR(entry1->type)){ if (S_ISDIR(entry2->type)==0) return (-1); @@ -257,7 +258,7 @@ static int compare_extension(const void *a1, const void *a2) { if (!sufix1) sufix1= nil; if (!sufix2) sufix2= nil; - /* type is is equal to stat.st_mode */ + /* type is equal to stat.st_mode */ if (S_ISDIR(entry1->type)){ if (S_ISDIR(entry2->type)==0) return (-1); @@ -281,63 +282,91 @@ static int compare_extension(const void *a1, const void *a2) { return (BLI_strcasecmp(sufix1, sufix2)); } +static int is_hidden_file(const char* filename, short hide_dot) +{ + int is_hidden=0; + + if (hide_dot) { + if(filename[0]=='.' && filename[1]!='.' && filename[1]!=0) { + is_hidden=1; /* ignore .file */ + } else if (((filename[0] == '.') && (filename[1] == 0) )) { + is_hidden=1; /* ignore . */ + } else { + int len=strlen(filename); + if( (len>0) && (filename[len-1]=='~') ) { + is_hidden=1; /* ignore file~ */ + } + } + } else { + if (((filename[0] == '.') && (filename[1] == 0) )) { + is_hidden=1; /* ignore . */ + } + } + return is_hidden; +} + +static int is_filtered_file(struct direntry* file, const char* dir, unsigned int filter, short hide_dot) +{ + int is_filtered=0; + if (filter) { + if (file->flags & filter) { + is_filtered=1; + } else if (file->type & S_IFDIR) { + if (filter & FOLDERFILE) { + is_filtered = 1; + } + } + } else { + is_filtered = 1; + } + return is_filtered && !is_hidden_file(file->relname, hide_dot); +} + +static int is_filtered_lib(struct direntry* file, const char* dir, unsigned int filter, short hide_dot) +{ + int is_filtered=0; + char tdir[FILE_MAX], tgroup[GROUP_MAX]; + if (BLO_is_a_library(dir, tdir, tgroup)) { + is_filtered = !is_hidden_file(file->relname, hide_dot); + } else { + is_filtered = is_filtered_file(file, dir, filter, hide_dot); + } + return is_filtered; +} + +static int is_filtered_main(struct direntry* file, const char* dir, unsigned int filter, short hide_dot) +{ + return !is_hidden_file(file->relname, hide_dot); +} + void filelist_filter(FileList* filelist) { - /* char dir[FILE_MAX], group[GROUP_MAX]; XXXXX */ int num_filtered = 0; int i, j; if (!filelist->filelist) return; - - /* XXXXX TODO: check if the filter can be handled outside the filelist - if ( ( (filelist->type == FILE_LOADLIB) && BIF_filelist_islibrary(filelist, dir, group)) - || (filelist->type == FILE_MAIN) ) { - filelist->filter = 0; - } - */ - - if (!filelist->filter) { - if (filelist->fidx) { - MEM_freeN(filelist->fidx); - filelist->fidx = NULL; - } - filelist->fidx = (int *)MEM_callocN(filelist->numfiles*sizeof(int), "filteridx"); - for (i = 0; i < filelist->numfiles; ++i) { - filelist->fidx[i] = i; - } - filelist->numfiltered = filelist->numfiles; - return; - } // How many files are left after filter ? for (i = 0; i < filelist->numfiles; ++i) { - if (filelist->filelist[i].flags & filelist->filter) { + struct direntry *file = &filelist->filelist[i]; + if ( filelist->filterf(file, filelist->dir, filelist->filter, filelist->hide_dot) ) { num_filtered++; } - else if (filelist->filelist[i].type & S_IFDIR) { - if (filelist->filter & FOLDERFILE) { - num_filtered++; - } - } } if (filelist->fidx) { - MEM_freeN(filelist->fidx); - filelist->fidx = NULL; + MEM_freeN(filelist->fidx); + filelist->fidx = NULL; } filelist->fidx = (int *)MEM_callocN(num_filtered*sizeof(int), "filteridx"); filelist->numfiltered = num_filtered; for (i = 0, j=0; i < filelist->numfiles; ++i) { - if (filelist->filelist[i].flags & filelist->filter) { + struct direntry *file = &filelist->filelist[i]; + if ( filelist->filterf(file, filelist->dir, filelist->filter, filelist->hide_dot) ) { filelist->fidx[j++] = i; } - else if (filelist->filelist[i].type & S_IFDIR) { - if (filelist->filter & FOLDERFILE) { - filelist->fidx[j++] = i; - } - } } } @@ -346,7 +375,7 @@ void filelist_init_icons() short x, y, k; ImBuf *bbuf; ImBuf *ibuf; - bbuf = IMB_ibImageFromMemory((int *)datatoc_prvicons, datatoc_prvicons_size, IB_rect); + bbuf = IMB_ibImageFromMemory((unsigned char*)datatoc_prvicons, datatoc_prvicons_size, IB_rect); if (bbuf) { for (y=0; y<SPECIAL_IMG_ROWS; y++) { for (x=0; x<SPECIAL_IMG_COLS; x++) { @@ -480,13 +509,16 @@ struct FileList* filelist_new(short type) FileList* p = MEM_callocN( sizeof(FileList), "filelist" ); switch(type) { case FILE_MAIN: - p->read = filelist_read_main; + p->readf = filelist_read_main; + p->filterf = is_filtered_main; break; case FILE_LOADLIB: - p->read = filelist_read_library; + p->readf = filelist_read_library; + p->filterf = is_filtered_lib; break; default: - p->read = filelist_read_dir; + p->readf = filelist_read_dir; + p->filterf = is_filtered_file; } return p; @@ -501,9 +533,6 @@ void filelist_free(struct FileList* filelist) printf("Attempting to delete empty filelist.\n"); return; } - - BLI_end_threads(&filelist->threads); - BLI_freelistN(&filelist->loadimages); if (filelist->fidx) { MEM_freeN(filelist->fidx); @@ -566,123 +595,31 @@ void filelist_imgsize(struct FileList* filelist, short w, short h) filelist->prv_h = h; } - -static void *exec_loadimages(void *list_v) -{ - FileImage* img = (FileImage*)list_v; - struct FileList *filelist = img->filelist; - - ImBuf *imb = NULL; - int fidx = img->index; - - if ( filelist->filelist[fidx].flags & IMAGEFILE ) { - imb = IMB_thumb_manage(filelist->dir, filelist->filelist[fidx].relname, THB_NORMAL, THB_SOURCE_IMAGE); - } else if ( filelist->filelist[fidx].flags & MOVIEFILE ) { - imb = IMB_thumb_manage(filelist->dir, filelist->filelist[fidx].relname, THB_NORMAL, THB_SOURCE_MOVIE); - if (!imb) { - /* remember that file can't be loaded via IMB_open_anim */ - filelist->filelist[fidx].flags &= ~MOVIEFILE; - filelist->filelist[fidx].flags |= MOVIEFILE_ICON; - } - } - if (imb) { - IMB_freeImBuf(imb); - } - img->done=1; - return 0; -} - short filelist_changed(struct FileList* filelist) { return filelist->changed; } -void filelist_loadimage_timer(struct FileList* filelist) -{ - FileImage *limg = filelist->loadimages.first; - short refresh=0; - - // as long as threads are available and there is work to do - while (limg) { - if (BLI_available_threads(&filelist->threads)>0) { - if (!limg->lock) { - limg->lock=1; - BLI_insert_thread(&filelist->threads, limg); - } - } - if (limg->done) { - FileImage *oimg = limg; - BLI_remove_thread(&filelist->threads, oimg); - /* brecht: keep failed images in the list, otherwise - it keeps trying to load them over and over? - BLI_remlink(&filelist->loadimages, oimg); - MEM_freeN(oimg);*/ - limg = oimg->next; - refresh = 1; - } else { - limg= limg->next; - } - } - filelist->changed=refresh; -} - -void filelist_loadimage(struct FileList* filelist, int index) +struct ImBuf * filelist_loadimage(struct FileList* filelist, int index) { ImBuf *imb = NULL; - int imgwidth = filelist->prv_w; - int imgheight = filelist->prv_h; - short ex, ey, dx, dy; - float scaledx, scaledy; int fidx = 0; if ( (index < 0) || (index >= filelist->numfiltered) ) { - return; + return NULL; } fidx = filelist->fidx[index]; - - if (!filelist->filelist[fidx].image) + imb = filelist->filelist[fidx].image; + if (!imb) { - - if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) { - imb = IMB_thumb_read(filelist->dir, filelist->filelist[fidx].relname, THB_NORMAL); + if ( (filelist->filelist[fidx].flags & IMAGEFILE) || (filelist->filelist[fidx].flags & MOVIEFILE) ) { + imb = IMB_thumb_read(filelist->filelist[fidx].path, THB_NORMAL); } if (imb) { - if (imb->x > imb->y) { - scaledx = (float)imgwidth; - scaledy = ( (float)imb->y/(float)imb->x )*imgwidth; - } - else { - scaledy = (float)imgheight; - scaledx = ( (float)imb->x/(float)imb->y )*imgheight; - } - ex = (short)scaledx; - ey = (short)scaledy; - - dx = imgwidth - ex; - dy = imgheight - ey; - - // IMB_scaleImBuf(imb, ex, ey); filelist->filelist[fidx].image = imb; - } else { - /* prevent loading image twice */ - FileImage* limg = filelist->loadimages.first; - short found= 0; - while(limg) { - if (limg->index == fidx) { - found= 1; - break; - } - limg= limg->next; - } - if (!found) { - FileImage* limg = MEM_callocN(sizeof(struct FileImage), "loadimage"); - limg->index= fidx; - limg->lock= 0; - limg->filelist= filelist; - BLI_addtail(&filelist->loadimages, limg); - } - } + } } + return imb; } struct ImBuf * filelist_getimage(struct FileList* filelist, int index) @@ -709,13 +646,13 @@ struct ImBuf * filelist_geticon(struct FileList* filelist, int index) fidx = filelist->fidx[index]; file = &filelist->filelist[fidx]; if (file->type & S_IFDIR) { - if ( strcmp(filelist->filelist[fidx].relname, "..") == 0) { - ibuf = gSpecialFileImages[SPECIAL_IMG_PARENT]; - } else if ( strcmp(filelist->filelist[fidx].relname, ".") == 0) { - ibuf = gSpecialFileImages[SPECIAL_IMG_REFRESH]; - } else { - ibuf = gSpecialFileImages[SPECIAL_IMG_FOLDER]; - } + if ( strcmp(filelist->filelist[fidx].relname, "..") == 0) { + ibuf = gSpecialFileImages[SPECIAL_IMG_PARENT]; + } else if ( strcmp(filelist->filelist[fidx].relname, ".") == 0) { + ibuf = gSpecialFileImages[SPECIAL_IMG_REFRESH]; + } else { + ibuf = gSpecialFileImages[SPECIAL_IMG_FOLDER]; + } } else { ibuf = gSpecialFileImages[SPECIAL_IMG_UNKNOWNFILE]; } @@ -798,16 +735,11 @@ static void filelist_read_dir(struct FileList* filelist) BLI_getwdN(wdir); BLI_cleanup_dir(G.sce, filelist->dir); - BLI_hide_dot_files(filelist->hide_dot); filelist->numfiles = BLI_getdir(filelist->dir, &(filelist->filelist)); - if(!chdir(wdir)) /* fix warning about not checking return value */; + if(!chdir(wdir)) {} /* fix warning about not checking return value */ filelist_setfiletypes(filelist, G.have_quicktime); filelist_filter(filelist); - - if (!filelist->threads.first) { - BLI_init_threads(&filelist->threads, exec_loadimages, 2); - } } static void filelist_read_main(struct FileList* filelist) @@ -847,7 +779,7 @@ static void filelist_read_library(struct FileList* filelist) void filelist_readdir(struct FileList* filelist) { - filelist->read(filelist); + filelist->readf(filelist); } int filelist_empty(struct FileList* filelist) @@ -874,11 +806,10 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) file->type= file->s.st_mode; /* restore the mess below */ /* Don't check extensions for directories */ - if (file->type & S_IFDIR) + if (file->type & S_IFDIR) { continue; - - - + } + if(BLO_has_bfile_extension(file->relname)) { file->flags |= BLENDERFILE; } else if(BLI_testextensie(file->relname, ".py")) { @@ -895,6 +826,8 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) file->flags |= FTFONTFILE; } else if(BLI_testextensie(file->relname, ".btx")) { file->flags |= BTXFILE; + } else if(BLI_testextensie(file->relname, ".dae")) { + file->flags |= COLLADAFILE; } else if (has_quicktime){ if( BLI_testextensie(file->relname, ".int") || BLI_testextensie(file->relname, ".inta") @@ -914,6 +847,7 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".psd") || BLI_testextensie(file->relname, ".tif") || BLI_testextensie(file->relname, ".tiff") + || BLI_testextensie(file->relname, ".tx") || BLI_testextensie(file->relname, ".pct") || BLI_testextensie(file->relname, ".pict") || BLI_testextensie(file->relname, ".pntg") //macpaint @@ -926,7 +860,7 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) #ifdef WITH_OPENEXR || BLI_testextensie(file->relname, ".exr") #endif - ) { + ) { file->flags |= IMAGEFILE; } else if(BLI_testextensie(file->relname, ".avi") @@ -939,6 +873,7 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".wmv") || BLI_testextensie(file->relname, ".ogv") || BLI_testextensie(file->relname, ".mpeg") + || BLI_testextensie(file->relname, ".dv") || BLI_testextensie(file->relname, ".mpg") || BLI_testextensie(file->relname, ".mpg2") || BLI_testextensie(file->relname, ".vob") @@ -976,6 +911,7 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".iff") || BLI_testextensie(file->relname, ".tif") || BLI_testextensie(file->relname, ".tiff") + || BLI_testextensie(file->relname, ".tx") || BLI_testextensie(file->relname, ".hdr") #ifdef WITH_DDS || BLI_testextensie(file->relname, ".dds") @@ -996,6 +932,7 @@ void filelist_setfiletypes(struct FileList* filelist, short has_quicktime) || BLI_testextensie(file->relname, ".mv") || BLI_testextensie(file->relname, ".wmv") || BLI_testextensie(file->relname, ".ogv") + || BLI_testextensie(file->relname, ".dv") || BLI_testextensie(file->relname, ".mpeg") || BLI_testextensie(file->relname, ".mpg") || BLI_testextensie(file->relname, ".mpg2") @@ -1029,15 +966,15 @@ void filelist_swapselect(struct FileList* filelist) file= filelist->filelist; for(num=0; num<filelist->numfiles; num++, file++) { - if(file->flags & ACTIVE) { + if(file->flags & ACTIVEFILE) { act= 1; break; } } file= filelist->filelist+2; for(num=2; num<filelist->numfiles; num++, file++) { - if(act) file->flags &= ~ACTIVE; - else file->flags |= ACTIVE; + if(act) file->flags &= ~ACTIVEFILE; + else file->flags |= ACTIVEFILE; } } @@ -1230,7 +1167,7 @@ void filelist_from_main(struct FileList *filelist) /* make files */ idcode= groupname_to_code(filelist->dir); - lb= wich_libbase(G.main, idcode ); + lb= which_libbase(G.main, idcode ); if(lb==0) return; id= lb->first; @@ -1275,10 +1212,10 @@ void filelist_from_main(struct FileList *filelist) #if 0 // XXXXX TODO show the selection status of the objects if(!filelist->has_func) { /* F4 DATA BROWSE */ if(idcode==ID_OB) { - if( ((Object *)id)->flag & SELECT) files->flags |= ACTIVE; + if( ((Object *)id)->flag & SELECT) files->flags |= ACTIVEFILE; } else if(idcode==ID_SCE) { - if( ((Scene *)id)->r.scemode & R_BG_RENDER) files->flags |= ACTIVE; + if( ((Scene *)id)->r.scemode & R_BG_RENDER) files->flags |= ACTIVEFILE; } } #endif @@ -1315,3 +1252,115 @@ void filelist_from_main(struct FileList *filelist) filelist_filter(filelist); } +static void thumbnail_joblist_free(ThumbnailJob *tj) +{ + FileImage* limg = tj->loadimages.first; + + /* free the images not yet copied to the filelist -> these will get freed with the filelist */ + while (limg != tj->loadimages.last) { + if ((limg->img) && (!limg->done)) { + IMB_freeImBuf(limg->img); + } + limg = limg->next; + } + BLI_freelistN(&tj->loadimages); +} + +static void thumbnails_startjob(void *tjv, short *stop, short *do_update, float *progress) +{ + ThumbnailJob *tj= tjv; + FileImage* limg = tj->loadimages.first; + + tj->stop= stop; + tj->do_update= do_update; + + while ( (*stop==0) && (limg) ) { + if ( limg->flags & IMAGEFILE ) { + limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_IMAGE); + } else if ( limg->flags & BLENDERFILE ) { + limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_BLEND); + } else if ( limg->flags & MOVIEFILE ) { + limg->img = IMB_thumb_manage(limg->path, THB_NORMAL, THB_SOURCE_MOVIE); + if (!limg->img) { + /* remember that file can't be loaded via IMB_open_anim */ + limg->flags &= ~MOVIEFILE; + limg->flags |= MOVIEFILE_ICON; + } + } + *do_update = 1; + PIL_sleep_ms(10); + limg = limg->next; + } +} + +static void thumbnails_update(void *tjv) +{ + ThumbnailJob *tj= tjv; + + if (tj->filelist && tj->filelist->filelist) { + FileImage* limg = tj->loadimages.first; + while (limg) { + if (!limg->done && limg->img) { + tj->filelist->filelist[limg->index].image = limg->img; + /* update flag for movie files where thumbnail can't be created */ + if (limg->flags & MOVIEFILE_ICON) { + tj->filelist->filelist[limg->index].flags &= ~MOVIEFILE; + tj->filelist->filelist[limg->index].flags |= MOVIEFILE_ICON; + } + limg->done=1; + } + limg = limg->next; + } + } +} + +static void thumbnails_free(void *tjv) +{ + ThumbnailJob *tj= tjv; + thumbnail_joblist_free(tj); + MEM_freeN(tj); +} + + +void thumbnails_start(struct FileList* filelist, const struct bContext* C) +{ + wmJob *steve; + ThumbnailJob *tj; + int idx; + + /* prepare job data */ + tj= MEM_callocN(sizeof(ThumbnailJob), "thumbnails\n"); + tj->filelist = filelist; + for (idx = 0; idx < filelist->numfiles;idx++) { + if (!filelist->filelist[idx].image) { + if ( (filelist->filelist[idx].flags & (IMAGEFILE|MOVIEFILE|BLENDERFILE)) ) { + FileImage* limg = MEM_callocN(sizeof(struct FileImage), "loadimage"); + BLI_strncpy(limg->path, filelist->filelist[idx].path, FILE_MAX); + limg->index= idx; + limg->flags= filelist->filelist[idx].flags; + BLI_addtail(&tj->loadimages, limg); + } + } + } + + BKE_reports_init(&tj->reports, RPT_PRINT); + + /* setup job */ + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), filelist, "Thumbnails", 0); + WM_jobs_customdata(steve, tj, thumbnails_free); + WM_jobs_timer(steve, 0.5, NC_WINDOW, NC_WINDOW); + WM_jobs_callbacks(steve, thumbnails_startjob, NULL, thumbnails_update, NULL); + + /* start the job */ + WM_jobs_start(CTX_wm_manager(C), steve); +} + +void thumbnails_stop(struct FileList* filelist, const struct bContext* C) +{ + WM_jobs_kill(CTX_wm_manager(C), filelist, NULL); +} + +int thumbnails_running(struct FileList* filelist, const struct bContext* C) +{ + return WM_jobs_test(CTX_wm_manager(C), filelist); +} diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h index 8a0e5ebdbc3..b2a86b9c764 100644 --- a/source/blender/editors/space_file/filelist.h +++ b/source/blender/editors/space_file/filelist.h @@ -61,8 +61,6 @@ void filelist_setfilter(struct FileList* filelist, unsigned int filter); void filelist_filter(struct FileList* filelist); void filelist_swapselect(struct FileList* filelist); void filelist_imgsize(struct FileList* filelist, short w, short h); -void filelist_loadimage(struct FileList* filelist, int index); -void filelist_loadimage_timer(struct FileList* filelist); struct ImBuf * filelist_getimage(struct FileList* filelist, int index); struct ImBuf * filelist_geticon(struct FileList* filelist, int index); short filelist_changed(struct FileList* filelist); @@ -86,6 +84,10 @@ void folderlist_popdir(struct ListBase* folderlist, char *dir); void folderlist_pushdir(struct ListBase* folderlist, const char *dir); int folderlist_clear_next(struct SpaceFile* sfile); +void thumbnails_stop(struct FileList* filelist, const struct bContext* C); +void thumbnails_start(struct FileList* filelist, const struct bContext* C); +int thumbnails_running(struct FileList* filelist, const struct bContext* C); + #ifdef __cplusplus } #endif diff --git a/source/blender/editors/space_file/filesel.c b/source/blender/editors/space_file/filesel.c index a82e4ba6fed..086d4f9cce2 100644 --- a/source/blender/editors/space_file/filesel.c +++ b/source/blender/editors/space_file/filesel.c @@ -42,11 +42,18 @@ #include <sys/times.h> #endif +/* path/file handeling stuff */ +#ifndef WIN32 + #include <dirent.h> + #include <unistd.h> +#else + #include <io.h> + #include "BLI_winstuff.h" +#endif + #include "DNA_space_types.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -55,16 +62,15 @@ #include "BLI_storage_types.h" #include "BLI_dynstr.h" +#include "BLO_readfile.h" + #include "BKE_context.h" #include "BKE_screen.h" #include "BKE_global.h" #include "BLF_api.h" -#include "DNA_userdef_types.h" -#include "ED_screen.h" -#include "ED_util.h" #include "ED_fileselect.h" #include "WM_api.h" @@ -76,22 +82,14 @@ #include "RNA_access.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "file_intern.h" #include "filelist.h" -#if defined __BeOS -static int fnmatch(const char *pattern, const char *string, int flags) -{ - return 0; -} -#elif defined WIN32 && !defined _LIBC - /* use fnmatch included in blenlib */ - #include "BLI_fnmatch.h" +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ #else - #include <fnmatch.h> +# include <fnmatch.h> #endif FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile) @@ -104,7 +102,6 @@ FileSelectParams* ED_fileselect_get_params(struct SpaceFile *sfile) short ED_fileselect_set_params(SpaceFile *sfile) { - char name[FILE_MAX], dir[FILE_MAX], file[FILE_MAX]; FileSelectParams *params; wmOperator *op = sfile->op; @@ -112,10 +109,7 @@ short ED_fileselect_set_params(SpaceFile *sfile) if (!sfile->params) { sfile->params= MEM_callocN(sizeof(FileSelectParams), "fileselparams"); /* set path to most recently opened .blend */ - BLI_strncpy(sfile->params->dir, G.sce, sizeof(sfile->params->dir)); - BLI_split_dirfile(G.sce, dir, file); - BLI_strncpy(sfile->params->file, file, sizeof(sfile->params->file)); - BLI_make_file_string(G.sce, sfile->params->dir, dir, ""); /* XXX needed ? - also solve G.sce */ + BLI_split_dirfile(G.sce, sfile->params->dir, sfile->params->file); } params = sfile->params; @@ -129,19 +123,33 @@ short ED_fileselect_set_params(SpaceFile *sfile) else params->type = FILE_SPECIAL; - if (RNA_property_is_set(op->ptr, "path")) { - RNA_string_get(op->ptr, "path", name); + if (RNA_struct_find_property(op->ptr, "filepath") && RNA_property_is_set(op->ptr, "filepath")) { + char name[FILE_MAX]; + RNA_string_get(op->ptr, "filepath", name); if (params->type == FILE_LOADLIB) { BLI_strncpy(params->dir, name, sizeof(params->dir)); - BLI_cleanup_dir(G.sce, params->dir); - } else { - /* if operator has path set, use it, otherwise keep the last */ - BLI_convertstringcode(name, G.sce); - BLI_split_dirfile(name, dir, file); - BLI_strncpy(params->file, file, sizeof(params->file)); - BLI_make_file_string(G.sce, params->dir, dir, ""); /* XXX needed ? - also solve G.sce */ + sfile->params->file[0]= '\0'; + } + else { + BLI_split_dirfile(name, sfile->params->dir, sfile->params->file); + } + } + else { + if (RNA_struct_find_property(op->ptr, "directory") && RNA_property_is_set(op->ptr, "directory")) { + RNA_string_get(op->ptr, "directory", params->dir); + sfile->params->file[0]= '\0'; + } + + if (RNA_struct_find_property(op->ptr, "filename") && RNA_property_is_set(op->ptr, "filename")) { + RNA_string_get(op->ptr, "filename", params->file); } } + + if(params->dir[0]) { + BLI_cleanup_dir(G.sce, params->dir); + BLI_path_abs(params->dir, G.sce); + } + params->filter = 0; if(RNA_struct_find_property(op->ptr, "filter_blender")) params->filter |= RNA_boolean_get(op->ptr, "filter_blender") ? BLENDERFILE : 0; @@ -163,8 +171,15 @@ short ED_fileselect_set_params(SpaceFile *sfile) params->filter |= RNA_boolean_get(op->ptr, "filter_folder") ? FOLDERFILE : 0; if(RNA_struct_find_property(op->ptr, "filter_btx")) params->filter |= RNA_boolean_get(op->ptr, "filter_btx") ? BTXFILE : 0; - if (params->filter != 0) - params->flag |= FILE_FILTER; + if(RNA_struct_find_property(op->ptr, "filter_collada")) + params->filter |= RNA_boolean_get(op->ptr, "filter_collada") ? COLLADAFILE : 0; + if (params->filter != 0) { + if (U.uiflag & USER_FILTERFILEEXTS) { + params->flag |= FILE_FILTER; + } else { + params->flag &= ~FILE_FILTER; + } + } if (U.uiflag & USER_HIDE_DOT) { params->flag |= FILE_HIDE_DOT; @@ -192,7 +207,6 @@ short ED_fileselect_set_params(SpaceFile *sfile) params->filter = 0; params->sort = FILE_SORT_ALPHA; } - return 1; } @@ -209,16 +223,16 @@ int ED_fileselect_layout_numfiles(FileLayout* layout, struct ARegion *ar) if (layout->flag & FILE_LAYOUT_HOR) { int width = ar->v2d.cur.xmax - ar->v2d.cur.xmin - 2*layout->tile_border_x; - numfiles = width/layout->tile_w + 1; + numfiles = (float)width/(float)layout->tile_w+0.5; return numfiles*layout->rows; } else { int height = ar->v2d.cur.ymax - ar->v2d.cur.ymin - 2*layout->tile_border_y; - numfiles = height/layout->tile_h + 1; + numfiles = (float)height/(float)layout->tile_h+0.5; return numfiles*layout->columns; } } -int ED_fileselect_layout_offset(FileLayout* layout, int x, int y) +int ED_fileselect_layout_offset(FileLayout* layout, int clamp_bounds, int x, int y) { int offsetx, offsety; int active_file; @@ -229,9 +243,14 @@ int ED_fileselect_layout_offset(FileLayout* layout, int x, int y) offsetx = (x)/(layout->tile_w + 2*layout->tile_border_x); offsety = (y)/(layout->tile_h + 2*layout->tile_border_y); - if (offsetx > layout->columns-1) return -1 ; - if (offsety > layout->rows-1) return -1 ; - + if (clamp_bounds) { + CLAMP(offsetx, 0, layout->columns-1); + CLAMP(offsety, 0, layout->rows-1); + } else { + if (offsetx > layout->columns-1) return -1 ; + if (offsety > layout->rows-1) return -1 ; + } + if (layout->flag & FILE_LAYOUT_HOR) active_file = layout->rows*offsetx + offsety; else @@ -254,7 +273,7 @@ float file_string_width(const char* str) { uiStyle *style= U.uistyles.first; uiStyleFontSet(&style->widget); - return BLF_width((char *)str); + return BLF_width(style->widget.uifont_id, (char *)str); } float file_font_pointsize() @@ -263,7 +282,7 @@ float file_font_pointsize() char tmp[2] = "X"; uiStyle *style= U.uistyles.first; uiStyleFontSet(&style->widget); - s = BLF_height(tmp); + s = BLF_height(style->widget.uifont_id, tmp); return style->widget.points; } @@ -391,24 +410,25 @@ FileLayout* ED_fileselect_get_layout(struct SpaceFile *sfile, struct ARegion *ar return sfile->layout; } -void file_change_dir(struct SpaceFile *sfile, int checkdir) +void file_change_dir(bContext *C, int checkdir) { + SpaceFile *sfile= CTX_wm_space_file(C); + if (sfile->params) { + ED_fileselect_clear(C, sfile); + if(checkdir && BLI_is_dir(sfile->params->dir)==0) { BLI_strncpy(sfile->params->dir, filelist_dir(sfile->files), sizeof(sfile->params->dir)); /* could return but just refresh the current dir */ } - filelist_setdir(sfile->files, sfile->params->dir); - + if(folderlist_clear_next(sfile)) folderlist_free(sfile->folders_next); folderlist_pushdir(sfile->folders_prev, sfile->params->dir); - filelist_free(sfile->files); - sfile->params->active_file = -1; } } @@ -423,7 +443,7 @@ int file_select_match(struct SpaceFile *sfile, const char *pattern) for (i = 0; i < n; i++) { file = filelist_file(sfile->files, i); if (fnmatch(pattern, file->relname, 0) == 0) { - file->flags |= ACTIVE; + file->flags |= ACTIVEFILE; match = 1; } } @@ -431,10 +451,55 @@ int file_select_match(struct SpaceFile *sfile, const char *pattern) return match; } - void autocomplete_directory(struct bContext *C, char *str, void *arg_v) { - char tmp[FILE_MAX]; + SpaceFile *sfile= CTX_wm_space_file(C); + + /* search if str matches the beginning of name */ + if(str[0] && sfile->files) { + char dirname[FILE_MAX]; + + DIR *dir; + struct dirent *de; + + BLI_split_dirfile(str, dirname, NULL); + + dir = opendir(dirname); + + if(dir) { + AutoComplete *autocpl= autocomplete_begin(str, FILE_MAX); + + while ((de = readdir(dir)) != NULL) { + if (strcmp(".", de->d_name)==0 || strcmp("..", de->d_name)==0) { + /* pass */ + } + else { + char path[FILE_MAX]; + struct stat status; + + BLI_join_dirfile(path, dirname, de->d_name); + + if (stat(path, &status) == 0) { + if (S_ISDIR(status.st_mode)) { /* is subdir */ + autocomplete_do_name(autocpl, path); + } + } + } + } + closedir(dir); + + autocomplete_end(autocpl, str); + if (BLI_exists(str)) { + BLI_add_slash(str); + } else { + BLI_strncpy(sfile->params->dir, str, sizeof(sfile->params->dir)); + } + } + } +} + +void autocomplete_file(struct bContext *C, char *str, void *arg_v) +{ SpaceFile *sfile= CTX_wm_space_file(C); /* search if str matches the beginning of name */ @@ -445,18 +510,24 @@ void autocomplete_directory(struct bContext *C, char *str, void *arg_v) for(i= 0; i<nentries; ++i) { struct direntry* file = filelist_file(sfile->files, i); - const char* dir = filelist_dir(sfile->files); - if (file && S_ISDIR(file->type)) { - // BLI_make_file_string(G.sce, tmp, dir, file->relname); - BLI_join_dirfile(tmp, dir, file->relname); - autocomplete_do_name(autocpl,tmp); + if (file && S_ISREG(file->type)) { + autocomplete_do_name(autocpl, file->relname); } } autocomplete_end(autocpl, str); - if (BLI_exists(str)) { - BLI_add_slash(str); - } else { - BLI_make_exist(str); - } } } + +void ED_fileselect_clear(struct bContext *C, struct SpaceFile *sfile) +{ + thumbnails_stop(sfile->files, C); + filelist_freelib(sfile->files); + filelist_free(sfile->files); + sfile->params->active_file = -1; + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_FILE_LIST, NULL); +} + +void ED_fileselect_exit(struct bContext *C, struct SpaceFile *sfile) +{ + thumbnails_stop(sfile->files, C); +} diff --git a/source/blender/editors/space_file/fsmenu.c b/source/blender/editors/space_file/fsmenu.c index d3e859602d7..6699c0b8bc7 100644 --- a/source/blender/editors/space_file/fsmenu.c +++ b/source/blender/editors/space_file/fsmenu.c @@ -248,12 +248,41 @@ void fsmenu_write_file(struct FSMenu* fsmenu, const char *filename) fclose(fp); } -void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) +void fsmenu_read_bookmarks(struct FSMenu* fsmenu, const char *filename) { char line[256]; FSMenuCategory category = FS_CATEGORY_BOOKMARKS; FILE *fp; + fp = fopen(filename, "r"); + if (!fp) return; + + while ( fgets ( line, 256, fp ) != NULL ) /* read a line */ + { + if (strncmp(line, "[Bookmarks]", 11)==0){ + category = FS_CATEGORY_BOOKMARKS; + } else if (strncmp(line, "[Recent]", 8)==0){ + category = FS_CATEGORY_RECENT; + } else { + int len = strlen(line); + if (len>0) { + if (line[len-1] == '\n') { + line[len-1] = '\0'; + } + if (BLI_exist(line)) { + fsmenu_insert_entry(fsmenu, category, line, 0, 1); + } + } + } + } + fclose(fp); +} + +void fsmenu_read_system(struct FSMenu* fsmenu) +{ + char line[256]; + FILE *fp; + #ifdef WIN32 /* Add the drive names to the listing */ { @@ -266,7 +295,7 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) for (i=2; i < 26; i++) { if ((tmp>>i) & 1) { - tmps[0]='a'+i; + tmps[0]='A'+i; tmps[1]=':'; tmps[2]='\\'; tmps[3]=0; @@ -429,15 +458,14 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) #else /* unix */ { - char dir[FILE_MAXDIR]; char *home= BLI_gethome(); if(home) { - BLI_snprintf(dir, FILE_MAXDIR, "%s/", home); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, dir, 1, 0); - BLI_snprintf(dir, FILE_MAXDIR, "%s/Desktop/", home); - if (BLI_exists(dir)) { - fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, dir, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/", home); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/Desktop/", home); + if (BLI_exists(line)) { + fsmenu_insert_entry(fsmenu, FS_CATEGORY_BOOKMARKS, line, 1, 0); } } @@ -446,7 +474,6 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) #ifdef __linux__ /* loop over mount points */ struct mntent *mnt; - FILE *fp; int len; fp = setmntent (MOUNTED, "r"); @@ -461,8 +488,8 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) len= strlen(mnt->mnt_dir); if(len && mnt->mnt_dir[len-1] != '/') { - BLI_snprintf(dir, FILE_MAXDIR, "%s/", mnt->mnt_dir); - fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, dir, 1, 0); + BLI_snprintf(line, FILE_MAXDIR, "%s/", mnt->mnt_dir); + fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, line, 1, 0); } else fsmenu_insert_entry(fsmenu, FS_CATEGORY_SYSTEM, mnt->mnt_dir, 1, 0); @@ -482,31 +509,9 @@ void fsmenu_read_file(struct FSMenu* fsmenu, const char *filename) } #endif #endif - - fp = fopen(filename, "r"); - if (!fp) return; - - while ( fgets ( line, 256, fp ) != NULL ) /* read a line */ - { - if (strncmp(line, "[Bookmarks]", 11)==0){ - category = FS_CATEGORY_BOOKMARKS; - } else if (strncmp(line, "[Recent]", 8)==0){ - category = FS_CATEGORY_RECENT; - } else { - int len = strlen(line); - if (len>0) { - if (line[len-1] == '\n') { - line[len-1] = '\0'; - } - if (BLI_exist(line)) { - fsmenu_insert_entry(fsmenu, category, line, 0, 1); - } - } - } - } - fclose(fp); } + static void fsmenu_free_category(struct FSMenu* fsmenu, FSMenuCategory category) { FSMenuEntry *fsme= fsmenu_get_category(fsmenu, category); diff --git a/source/blender/editors/space_file/fsmenu.h b/source/blender/editors/space_file/fsmenu.h index d685a844cde..dcf8d3eb632 100644 --- a/source/blender/editors/space_file/fsmenu.h +++ b/source/blender/editors/space_file/fsmenu.h @@ -48,7 +48,7 @@ struct FSMenu* fsmenu_get (void); int fsmenu_get_nentries (struct FSMenu* fsmenu, FSMenuCategory category); /** Returns the fsmenu entry at @a index (or NULL if a bad index) - * or a separator. + * or a separator. */ char* fsmenu_get_entry (struct FSMenu* fsmenu, FSMenuCategory category, int index); @@ -68,7 +68,10 @@ void fsmenu_remove_entry (struct FSMenu* fsmenu, FSMenuCategory category, int i void fsmenu_write_file (struct FSMenu* fsmenu, const char *filename); /** reads the 'bookmarks' from the specified file */ -void fsmenu_read_file (struct FSMenu* fsmenu, const char *filename); +void fsmenu_read_bookmarks (struct FSMenu* fsmenu, const char *filename); + + /** adds system specific directories */ +void fsmenu_read_system (struct FSMenu* fsmenu); /** Free's all the memory associated with the fsmenu */ void fsmenu_free (struct FSMenu* fsmenu); diff --git a/source/blender/editors/space_file/space_file.c b/source/blender/editors/space_file/space_file.c index 3996c6135a0..261b7058151 100644 --- a/source/blender/editors/space_file/space_file.c +++ b/source/blender/editors/space_file/space_file.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "RNA_access.h" @@ -51,7 +47,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_fileselect.h" @@ -61,13 +56,10 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "ED_markers.h" -#include "ED_fileselect.h" #include "file_intern.h" // own include #include "fsmenu.h" @@ -120,6 +112,7 @@ static void file_free(SpaceLink *sl) SpaceFile *sfile= (SpaceFile *) sl; if(sfile->files) { + // XXXXX would need to do thumbnails_stop here, but no context available filelist_freelib(sfile->files); filelist_free(sfile->files); MEM_freeN(sfile->files); @@ -139,8 +132,6 @@ static void file_free(SpaceLink *sl) } if (sfile->params) { - if(sfile->params->pupmenu) - MEM_freeN(sfile->params->pupmenu); MEM_freeN(sfile->params); sfile->params= NULL; } @@ -170,18 +161,18 @@ static SpaceLink *file_duplicate(SpaceLink *sl) /* clear or remove stuff from old */ sfilen->op = NULL; /* file window doesn't own operators */ - if (sfileo->params) + if (sfileo->params) { sfilen->files = filelist_new(sfileo->params->type); + sfilen->params= MEM_dupallocN(sfileo->params); + filelist_setdir(sfilen->files, sfilen->params->dir); + } + if(sfileo->folders_prev) sfilen->folders_prev = folderlist_duplicate(sfileo->folders_prev); if(sfileo->folders_next) sfilen->folders_next = folderlist_duplicate(sfileo->folders_next); - - if(sfileo->params) { - sfilen->params= MEM_dupallocN(sfileo->params); - file_change_dir(sfilen, 0); - } + if (sfileo->layout) { sfilen->layout= MEM_dupallocN(sfileo->layout); } @@ -197,17 +188,42 @@ static void file_refresh(const bContext *C, ScrArea *sa) sfile->folders_prev = folderlist_new(); if (!sfile->files) { sfile->files = filelist_new(params->type); - file_change_dir(sfile, 0); + filelist_setdir(sfile->files, params->dir); params->active_file = -1; // added this so it opens nicer (ton) } filelist_hidedot(sfile->files, params->flag & FILE_HIDE_DOT); filelist_setfilter(sfile->files, params->flag & FILE_FILTER ? params->filter : 0); if (filelist_empty(sfile->files)) { + thumbnails_stop(sfile->files, C); filelist_readdir(sfile->files); + if(params->sort!=FILE_SORT_NONE) { + filelist_sort(sfile->files, params->sort); + } BLI_strncpy(params->dir, filelist_dir(sfile->files), FILE_MAX); + if(params->display == FILE_IMGDISPLAY) { + thumbnails_start(sfile->files, C); + } + } else { + if(params->sort!=FILE_SORT_NONE) { + thumbnails_stop(sfile->files, C); + filelist_sort(sfile->files, params->sort); + if(params->display == FILE_IMGDISPLAY) { + thumbnails_start(sfile->files, C); + } + } else { + if(params->display == FILE_IMGDISPLAY) { + if (!thumbnails_running(sfile->files,C)) { + thumbnails_start(sfile->files, C); + } + } else { + /* stop any running thumbnail jobs if we're not + displaying them - speedup for NFS */ + thumbnails_stop(sfile->files, C); + } + filelist_filter(sfile->files); + } } - if(params->sort!=FILE_SORT_NONE) filelist_sort(sfile->files, params->sort); if (params->renamefile[0] != '\0') { int idx = filelist_find(sfile->files, params->renamefile); @@ -225,14 +241,13 @@ static void file_refresh(const bContext *C, ScrArea *sa) static void file_listener(ScrArea *sa, wmNotifier *wmn) { - SpaceFile* sfile = (SpaceFile*)sa->spacedata.first; + /* SpaceFile* sfile = (SpaceFile*)sa->spacedata.first; */ /* context changes */ switch(wmn->category) { case NC_SPACE: switch (wmn->data) { case ND_SPACE_FILE_LIST: - if (sfile->files) filelist_free(sfile->files); ED_area_tag_refresh(sa); ED_area_tag_redraw(sa); break; @@ -345,7 +360,6 @@ void file_operatortypes(void) WM_operatortype_append(FILE_OT_select_all_toggle); WM_operatortype_append(FILE_OT_select_border); WM_operatortype_append(FILE_OT_select_bookmark); - WM_operatortype_append(FILE_OT_loadimages); WM_operatortype_append(FILE_OT_highlight); WM_operatortype_append(FILE_OT_execute); WM_operatortype_append(FILE_OT_cancel); @@ -361,6 +375,7 @@ void file_operatortypes(void) WM_operatortype_append(FILE_OT_directory_new); WM_operatortype_append(FILE_OT_delete); WM_operatortype_append(FILE_OT_rename); + WM_operatortype_append(FILE_OT_smoothscroll); } /* NOTE: do not add .blend file reading on this level */ @@ -378,6 +393,9 @@ void file_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "FILE_OT_directory_new", IKEY, KM_PRESS, 0, 0); /* XXX needs button */ WM_keymap_add_item(keymap, "FILE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "FILE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "FILE_OT_delete", BACKSPACEKEY, KM_PRESS, KM_OSKEY, 0); + WM_keymap_verify_item(keymap, "FILE_OT_smoothscroll", TIMER1, KM_ANY, KM_ANY, 0); /* keys for main area */ keymap= WM_keymap_find(keyconf, "File Browser Main", SPACE_FILE, 0); @@ -385,12 +403,14 @@ void file_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, 0, 0); kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_SHIFT, 0); RNA_boolean_set(kmi->ptr, "extend", 1); + kmi = WM_keymap_add_item(keymap, "FILE_OT_select", LEFTMOUSE, KM_CLICK, KM_ALT, 0); + RNA_boolean_set(kmi->ptr, "extend", 1); + RNA_boolean_set(kmi->ptr, "fill", 1); WM_keymap_add_item(keymap, "FILE_OT_select_all_toggle", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_select_border", BKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_select_border", EVT_TWEAK_L, KM_ANY, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_rename", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "FILE_OT_highlight", MOUSEMOVE, KM_ANY, KM_ANY, 0); - WM_keymap_add_item(keymap, "FILE_OT_loadimages", TIMER1, KM_ANY, KM_ANY, 0); kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0); RNA_int_set(kmi->ptr, "increment", 1); kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, KM_SHIFT, 0); @@ -404,6 +424,7 @@ void file_keymap(struct wmKeyConfig *keyconf) kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADMINUS, KM_PRESS, KM_CTRL, 0); RNA_int_set(kmi->ptr, "increment",-100); + /* keys for button area (top) */ keymap= WM_keymap_find(keyconf, "File Browser Buttons", SPACE_FILE, 0); kmi = WM_keymap_add_item(keymap, "FILE_OT_filenum", PADPLUSKEY, KM_PRESS, 0, 0); @@ -448,7 +469,12 @@ static void file_channel_area_listener(ARegion *ar, wmNotifier *wmn) /* add handlers, stuff you only do once or on area/region changes */ static void file_header_area_init(wmWindowManager *wm, ARegion *ar) { + wmKeyMap *keymap; + ED_region_header_init(ar); + + keymap= WM_keymap_find(wm->defaultconf, "File Browser", SPACE_FILE, 0); + WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); } static void file_header_area_draw(const bContext *C, ARegion *ar) @@ -565,9 +591,16 @@ void ED_spacetype_file(void) void ED_file_init(void) { - char name[FILE_MAX]; - BLI_make_file_string("/", name, BLI_gethome(), ".Bfs"); - fsmenu_read_file(fsmenu_get(), name); + char *cfgdir = BLI_get_folder(BLENDER_CONFIG, NULL); + + fsmenu_read_system(fsmenu_get()); + + if (cfgdir) { + char name[FILE_MAX]; + BLI_make_file_string("/", name, cfgdir, BLENDER_BOOKMARK_FILE); + fsmenu_read_bookmarks(fsmenu_get(), name); + } + filelist_init_icons(); IMB_thumb_makedirs(); } diff --git a/source/blender/editors/space_file/writeimage.c b/source/blender/editors/space_file/writeimage.c index 07eb58bffbc..05efdc12596 100644 --- a/source/blender/editors/space_file/writeimage.c +++ b/source/blender/editors/space_file/writeimage.c @@ -36,11 +36,9 @@ #include "BLI_blenlib.h" -#include "DNA_image_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_texture_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -52,41 +50,15 @@ #include "file_intern.h" /* XXX */ -static void error() {} +static void error(const char *dummy) {} static void waitcursor(int val) {} -static void activate_fileselect() {} -static int saveover() {return 0;} +static void activate_fileselect(int d1, char *d2, char *d3, void *d4) {} +static int saveover(const char *dummy) {return 0;} /* XXX */ /* ------------------------------------------------------------------------- */ - -void BIF_save_envmap(Scene *scene, EnvMap *env, char *str) -{ - ImBuf *ibuf; -/* extern rectcpy(); */ - int dx; - - /* all interactive stuff is handled in buttons.c */ - if(env->cube[0]==NULL) return; - - dx= env->cube[0]->x; - ibuf= IMB_allocImBuf(3*dx, 2*dx, 24, IB_rect, 0); - - IMB_rectcpy(ibuf, env->cube[0], 0, 0, 0, 0, dx, dx); - IMB_rectcpy(ibuf, env->cube[1], dx, 0, 0, 0, dx, dx); - IMB_rectcpy(ibuf, env->cube[2], 2*dx, 0, 0, 0, dx, dx); - IMB_rectcpy(ibuf, env->cube[3], 0, dx, 0, 0, dx, dx); - IMB_rectcpy(ibuf, env->cube[4], dx, dx, 0, 0, dx, dx); - IMB_rectcpy(ibuf, env->cube[5], 2*dx, dx, 0, 0, dx, dx); - - BKE_write_ibuf(scene, ibuf, str, scene->r.imtype, scene->r.subimtype, scene->r.quality); - IMB_freeImBuf(ibuf); -} - - - /* callback for fileselect to save rendered image, renderresult was checked to exist */ static void save_rendered_image_cb_real(char *name, int confirm) { @@ -105,7 +77,7 @@ static void save_rendered_image_cb_real(char *name, int confirm) BKE_add_image_extension(name, scene->r.imtype); strcpy(str, name); - BLI_convertstringcode(str, G.sce); + BLI_path_abs(str, G.sce); if (confirm) overwrite = saveover(str); @@ -114,14 +86,14 @@ static void save_rendered_image_cb_real(char *name, int confirm) if(overwrite) { if(scene->r.imtype==R_MULTILAYER) { - Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW); + Render *re= RE_GetRender(scene->id.name); RenderResult *rr= RE_AcquireResultRead(re); if(rr) RE_WriteRenderResult(rr, str, scene->r.quality); RE_ReleaseResult(re); } else { - Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW); + Render *re= RE_GetRender(scene->id.name); RenderResult rres; ImBuf *ibuf; @@ -171,10 +143,11 @@ void save_image_filesel_str(Scene *scene, char *str) case R_BMP: strcpy(str, "Save BMP"); break; +#ifdef WITH_TIFF case R_TIFF: - if (G.have_libtiff) - strcpy(str, "Save TIFF"); + strcpy(str, "Save TIFF"); break; +#endif #ifdef WITH_OPENEXR case R_OPENEXR: strcpy(str, "Save OpenEXR"); @@ -211,7 +184,6 @@ void save_image_filesel_str(Scene *scene, char *str) #endif /* default we save jpeg, also for all movie formats */ case R_JPEG90: - case R_MOVIE: case R_AVICODEC: case R_AVIRAW: case R_AVIJPEG: @@ -235,7 +207,7 @@ void BIF_save_rendered_image(char *name) /* calls fileselect */ void BIF_save_rendered_image_fs(Scene *scene) { - Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW); + Render *re= RE_GetRender(scene->id.name); RenderResult rres; RE_AcquireResultImage(re, &rres); diff --git a/source/blender/editors/space_graph/CMakeLists.txt b/source/blender/editors/space_graph/CMakeLists.txt new file mode 100644 index 00000000000..6ad95d920c6 --- /dev/null +++ b/source/blender/editors/space_graph/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/audaspace/intern +) + +BLENDERLIB(bf_editor_space_graph "${SRC}" "${INC}") diff --git a/source/blender/editors/space_graph/graph_buttons.c b/source/blender/editors/space_graph/graph_buttons.c index 3975c88fe5c..bf433923707 100644 --- a/source/blender/editors/space_graph/graph_buttons.c +++ b/source/blender/editors/space_graph/graph_buttons.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,12 +32,8 @@ #include <float.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -66,17 +62,13 @@ #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" #include "ED_anim_api.h" #include "ED_keyframing.h" #include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "graph_intern.h" // own include @@ -155,7 +147,7 @@ static void graph_panel_view(const bContext *C, Panel *pa) /* 2D-Cursor */ col= uiLayoutColumn(pa->layout, 0); - uiItemR(col, NULL, 0, &spaceptr, "show_cursor", 0); + uiItemR(col, &spaceptr, "show_cursor", 0, NULL, 0); subcol= uiLayoutColumn(col, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); @@ -164,11 +156,11 @@ static void graph_panel_view(const bContext *C, Panel *pa) subcol= uiLayoutColumn(col, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&spaceptr, "show_cursor")); row= uiLayoutSplit(subcol, 0.7, 1); - uiItemR(row, "Cursor X", 0, &sceneptr, "current_frame", 0); - uiItemEnumO(row, "To Keys", 0, "GRAPH_OT_snap", "type", GRAPHKEYS_SNAP_CFRA); + uiItemR(row, &sceneptr, "frame_current", 0, "Cursor X", 0); + uiItemEnumO(row, "GRAPH_OT_snap", "To Keys", 0, "type", GRAPHKEYS_SNAP_CFRA); row= uiLayoutSplit(subcol, 0.7, 1); - uiItemR(row, "Cursor Y", 0, &spaceptr, "cursor_value", 0); - uiItemEnumO(row, "To Keys", 0, "GRAPH_OT_snap", "type", GRAPHKEYS_SNAP_VALUE); + uiItemR(row, &spaceptr, "cursor_value", 0, "Cursor Y", 0); + uiItemEnumO(row, "GRAPH_OT_snap", "To Keys", 0, "type", GRAPHKEYS_SNAP_VALUE); } /* ******************* active F-Curve ************** */ @@ -202,25 +194,102 @@ static void graph_panel_properties(const bContext *C, Panel *pa) /* RNA-Path Editing - only really should be enabled when things aren't working */ col= uiLayoutColumn(layout, 1); uiLayoutSetEnabled(col, (fcu->flag & FCURVE_DISABLED)); - uiItemR(col, "", ICON_RNA, &fcu_ptr, "data_path", 0); - uiItemR(col, NULL, 0, &fcu_ptr, "array_index", 0); + uiItemR(col, &fcu_ptr, "data_path", 0, "", ICON_RNA); + uiItemR(col, &fcu_ptr, "array_index", 0, NULL, 0); /* color settings */ col= uiLayoutColumn(layout, 1); uiItemL(col, "Display Color:", 0); row= uiLayoutRow(col, 1); - uiItemR(row, "", 0, &fcu_ptr, "color_mode", 0); + uiItemR(row, &fcu_ptr, "color_mode", 0, "", 0); subrow= uiLayoutRow(row, 1); uiLayoutSetEnabled(subrow, (fcu->color_mode==FCURVE_COLOR_CUSTOM)); - uiItemR(subrow, "", 0, &fcu_ptr, "color", 0); + uiItemR(subrow, &fcu_ptr, "color", 0, "", 0); - /* TODO: the following settings could be added here - * - Access details (ID-block + RNA-Path + Array Index) - * - ... + MEM_freeN(ale); +} + +/* ******************* active Keyframe ************** */ + +/* get 'active' keyframe for panel editing */ +static short get_active_fcurve_keyframe_edit(FCurve *fcu, BezTriple **bezt, BezTriple **prevbezt) +{ + BezTriple *b; + int i; + + /* zero the pointers */ + *bezt = *prevbezt = NULL; + + /* sanity checks */ + if ((fcu->bezt == NULL) || (fcu->totvert == 0)) + return 0; + + /* find first selected keyframe for now, and call it the active one + * - this is a reasonable assumption, given that whenever anyone + * wants to edit numerically, there is likely to only be 1 vert selected */ + for (i=0, b=fcu->bezt; i < fcu->totvert; i++, b++) { + if (BEZSELECTED(b)) { + /* found + * - 'previous' is either the one before, of the keyframe itself (which is still fine) + * XXX: we can just make this null instead if needed + */ + *prevbezt = (i > 0) ? b-1 : b; + *bezt = b; + + return 1; + } + } + + /* not found */ + return 0; +} + +static void graph_panel_key_properties(const bContext *C, Panel *pa) +{ + bAnimListElem *ale; + FCurve *fcu; + BezTriple *bezt, *prevbezt; + + uiLayout *layout = pa->layout; + uiLayout *col; + uiBlock *block; + if (!graph_panel_context(C, &ale, &fcu)) + return; + + block = uiLayoutGetBlock(layout); + uiBlockSetHandleFunc(block, do_graph_region_buttons, NULL); + + /* only show this info if there are keyframes to edit */ + if (get_active_fcurve_keyframe_edit(fcu, &bezt, &prevbezt)) { + PointerRNA bezt_ptr; + + /* RNA pointer to keyframe, to allow editing */ + RNA_pointer_create(ale->id, &RNA_Keyframe, bezt, &bezt_ptr); + + /* interpolation */ + col= uiLayoutColumn(layout, 0); + uiItemR(col, &bezt_ptr, "interpolation", 0, NULL, 0); + + /* numerical coordinate editing */ + col= uiLayoutColumn(layout, 1); + /* keyframe itself */ + uiItemR(col, &bezt_ptr, "co", 0, "Key", 0); + + /* previous handle - only if previous was Bezier interpolation */ + if ((prevbezt) && (prevbezt->ipo == BEZT_IPO_BEZ)) + uiItemR(col, &bezt_ptr, "handle1", 0, NULL, 0); + + /* next handle - only if current is Bezier interpolation */ + if (bezt->ipo == BEZT_IPO_BEZ) + uiItemR(col, &bezt_ptr, "handle2", 0, NULL, 0); + } + else + uiItemL(layout, "No active keyframe on F-Curve", 0); + MEM_freeN(ale); } @@ -357,7 +426,7 @@ static void graph_panel_driverVar__rotDiff(const bContext *C, uiLayout *layout, PointerRNA tar_ptr; RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr); - uiItemPointerR(col, "", ICON_BONE_DATA, &dtar_ptr, "bone_target", &tar_ptr, "bones"); + uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA); } col= uiLayoutColumn(layout, 1); @@ -367,7 +436,7 @@ static void graph_panel_driverVar__rotDiff(const bContext *C, uiLayout *layout, PointerRNA tar_ptr; RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr); - uiItemPointerR(col, "", ICON_BONE_DATA, &dtar2_ptr, "bone_target", &tar_ptr, "bones"); + uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA); } } @@ -393,10 +462,10 @@ static void graph_panel_driverVar__locDiff(const bContext *C, uiLayout *layout, PointerRNA tar_ptr; RNA_pointer_create(dtar->id, &RNA_Pose, ob1->pose, &tar_ptr); - uiItemPointerR(col, "", ICON_BONE_DATA, &dtar_ptr, "bone_target", &tar_ptr, "bones"); + uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA); } - uiItemR(col, NULL, 0, &dtar_ptr, "use_local_space_transforms", 0); + uiItemR(col, &dtar_ptr, "use_local_space_transforms", 0, NULL, 0); col= uiLayoutColumn(layout, 1); uiTemplateAnyID(col, (bContext *)C, &dtar2_ptr, "id", "id_type", "Ob/Bone 2:"); @@ -405,10 +474,10 @@ static void graph_panel_driverVar__locDiff(const bContext *C, uiLayout *layout, PointerRNA tar_ptr; RNA_pointer_create(dtar2->id, &RNA_Pose, ob2->pose, &tar_ptr); - uiItemPointerR(col, "", ICON_BONE_DATA, &dtar2_ptr, "bone_target", &tar_ptr, "bones"); + uiItemPointerR(col, &dtar2_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA); } - uiItemR(col, NULL, 0, &dtar2_ptr, "use_local_space_transforms", 0); + uiItemR(col, &dtar2_ptr, "use_local_space_transforms", 0, NULL, 0); } /* settings for 'transform channel' driver variable type */ @@ -430,12 +499,12 @@ static void graph_panel_driverVar__transChan(const bContext *C, uiLayout *layout PointerRNA tar_ptr; RNA_pointer_create(dtar->id, &RNA_Pose, ob->pose, &tar_ptr); - uiItemPointerR(col, "", ICON_BONE_DATA, &dtar_ptr, "bone_target", &tar_ptr, "bones"); + uiItemPointerR(col, &dtar_ptr, "bone_target", &tar_ptr, "bones", "", ICON_BONE_DATA); } row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &dtar_ptr, "transform_type", 0); - uiItemR(row, NULL, 0, &dtar_ptr, "use_local_space_transforms", 0); + uiItemR(row, &dtar_ptr, "transform_type", 0, "", 0); + uiItemR(row, &dtar_ptr, "use_local_space_transforms", 0, NULL, 0); } /* driver settings for active F-Curve (only for 'Drivers' mode) */ @@ -474,12 +543,12 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) col= uiLayoutColumn(pa->layout, 1); block= uiLayoutGetBlock(col); - uiItemR(col, NULL, 0, &driver_ptr, "type", 0); + uiItemR(col, &driver_ptr, "type", 0, NULL, 0); /* show expression box if doing scripted drivers, and/or error messages when invalid drivers exist */ if (driver->type == DRIVER_TYPE_PYTHON) { /* expression */ - uiItemR(col, "Expr", 0, &driver_ptr, "expression", 0); + uiItemR(col, &driver_ptr, "expression", 0, "Expr", 0); /* errors? */ if (driver->flag & DRIVER_FLAG_INVALID) @@ -493,7 +562,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) col= uiLayoutColumn(pa->layout, 1); /* debug setting */ - uiItemR(col, NULL, 0, &driver_ptr, "show_debug_info", 0); + uiItemR(col, &driver_ptr, "show_debug_info", 0, NULL, 0); /* value of driver */ if (driver->flag & DRIVER_FLAG_SHOWDEBUG) { @@ -528,7 +597,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) row= uiLayoutRow(box, 0); block= uiLayoutGetBlock(row); /* variable name */ - uiItemR(row, "", 0, &dvar_ptr, "name", 0); + uiItemR(row, &dvar_ptr, "name", 0, "", 0); /* remove button */ uiBlockSetEmboss(block, UI_EMBOSSN); @@ -538,7 +607,7 @@ static void graph_panel_drivers(const bContext *C, Panel *pa) /* variable type */ row= uiLayoutRow(box, 0); - uiItemR(row, "", 0, &dvar_ptr, "type", 0); + uiItemR(row, &dvar_ptr, "type", 0, "", 0); /* variable type settings */ box= uiLayoutBox(col); @@ -610,8 +679,13 @@ static void graph_panel_modifiers(const bContext *C, Panel *pa) row= uiLayoutRow(pa->layout, 0); block= uiLayoutGetBlock(row); - // XXX for now, this will be a operator button which calls a temporary 'add modifier' operator + // XXX for now, this will be a operator button which calls a 'add modifier' operator uiDefButO(block, BUT, "GRAPH_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, "Add Modifier", 10, 0, 150, 20, "Adds a new F-Curve Modifier for the active F-Curve"); + + /* copy/paste (as sub-row)*/ + row= uiLayoutRow(row, 1); + uiItemO(row, "", ICON_COPYDOWN, "GRAPH_OT_fmodifier_copy"); + uiItemO(row, "", ICON_PASTEDOWN, "GRAPH_OT_fmodifier_paste"); } /* draw each modifier */ @@ -634,6 +708,7 @@ void graph_buttons_register(ARegionType *art) strcpy(pt->idname, "GRAPH_PT_view"); strcpy(pt->label, "View Properties"); pt->draw= graph_panel_view; + pt->flag |= PNL_DEFAULT_CLOSED; BLI_addtail(&art->paneltypes, pt); pt= MEM_callocN(sizeof(PanelType), "spacetype graph panel properties"); @@ -642,6 +717,14 @@ void graph_buttons_register(ARegionType *art) pt->draw= graph_panel_properties; pt->poll= graph_panel_poll; BLI_addtail(&art->paneltypes, pt); + + pt= MEM_callocN(sizeof(PanelType), "spacetype graph panel properties"); + strcpy(pt->idname, "GRAPH_PT_key_properties"); + strcpy(pt->label, "Active Keyframe"); + pt->draw= graph_panel_key_properties; + pt->poll= graph_panel_poll; + BLI_addtail(&art->paneltypes, pt); + pt= MEM_callocN(sizeof(PanelType), "spacetype graph panel drivers"); strcpy(pt->idname, "GRAPH_PT_drivers"); diff --git a/source/blender/editors/space_graph/graph_draw.c b/source/blender/editors/space_graph/graph_draw.c index 19288bae2a2..543bd8b9964 100644 --- a/source/blender/editors/space_graph/graph_draw.c +++ b/source/blender/editors/space_graph/graph_draw.c @@ -29,10 +29,6 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #ifndef _WIN32 #include <unistd.h> #else @@ -45,23 +41,10 @@ #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_meta_types.h" #include "DNA_object_types.h" -#include "DNA_particle_types.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_sequence_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view2d_types.h" #include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "BKE_animsys.h" #include "BKE_context.h" @@ -78,12 +61,10 @@ #include "BIF_glutil.h" #include "ED_anim_api.h" -#include "ED_util.h" #include "graph_intern.h" #include "UI_interface.h" -#include "UI_interface_icons.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -357,7 +338,6 @@ static int draw_fcurve_handles_check(SpaceIpo *sipo, FCurve *fcu) * note: draw_fcurve_handles_check must be checked before running this. */ static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, FCurve *fcu) { - extern unsigned int nurbcol[]; int sel, b; /* a single call to GL_LINES here around these calls should be sufficient to still @@ -371,8 +351,9 @@ static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, */ for (sel= 0; sel < 2; sel++) { BezTriple *bezt=fcu->bezt, *prevbezt=NULL; - unsigned int *col= (sel)? (nurbcol+4) : (nurbcol); + int basecol= (sel)? TH_HANDLE_SEL_FREE : TH_HANDLE_FREE; float *fp; + char col[4]; /* if only selected keyframes have handles shown, skip the first round */ if ((sel == 0) && (sipo->flag & SIPO_SELVHANDLESONLY)) @@ -390,19 +371,24 @@ static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, /* draw handle with appropriate set of colors if selection is ok */ if ((bezt->f2 & SELECT)==sel) { fp= bezt->vec[0]; - + /* only draw first handle if previous segment had handles */ if ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) { - cpackA(col[(unsigned char)bezt->h1], drawFCurveFade(fcu)); + UI_GetThemeColor3ubv(basecol + bezt->h1, col); + col[3]= drawFCurveFade(fcu) * 255; + glColor4ubv((GLubyte *)col); glVertex2fv(fp); glVertex2fv(fp+3); } - + /* only draw second handle if this segment is bezier */ if (bezt->ipo == BEZT_IPO_BEZ) { - cpackA(col[(unsigned char)bezt->h2], drawFCurveFade(fcu)); + UI_GetThemeColor3ubv(basecol + bezt->h2, col); + col[3]= drawFCurveFade(fcu) * 255; + glColor4ubv((GLubyte *)col); + glVertex2fv(fp+3); glVertex2fv(fp+6); } } @@ -412,8 +398,10 @@ static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, ( (!prevbezt && (bezt->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) ) { fp= bezt->vec[0]; - cpackA(col[(unsigned char)bezt->h1], drawFCurveFade(fcu)); - + UI_GetThemeColor3ubv(basecol + bezt->h1, col); + col[3]= drawFCurveFade(fcu) * 255; + glColor4ubv((GLubyte *)col); + glVertex2fv(fp); glVertex2fv(fp+3); } @@ -422,8 +410,10 @@ static void draw_fcurve_handles (bAnimContext *ac, SpaceIpo *sipo, ARegion *ar, (bezt->ipo == BEZT_IPO_BEZ) ) { fp= bezt->vec[1]; - cpackA(col[(unsigned char)bezt->h2], drawFCurveFade(fcu)); - + UI_GetThemeColor3ubv(basecol + bezt->h2, col); + col[3]= drawFCurveFade(fcu) * 255; + glColor4ubv((GLubyte *)col); + glVertex2fv(fp); glVertex2fv(fp+3); } } @@ -512,7 +502,15 @@ static void draw_fcurve_curve (bAnimContext *ac, ID *id, FCurve *fcu, SpaceIpo * float samplefreq, ctime; float stime, etime; float unitFac; - + float dx, dy; + + /* when opening a blend file on a different sized screen or while dragging the toolbar this can happen + * best just bail out in this case */ + UI_view2d_grid_size(grid, &dx, &dy); + if(dx <= 0.0f) + return; + + /* disable any drivers temporarily */ driver= fcu->driver; fcu->driver= NULL; @@ -529,19 +527,18 @@ static void draw_fcurve_curve (bAnimContext *ac, ID *id, FCurve *fcu, SpaceIpo * * though it is impossible to predict this from the modifiers! * * If the automatically determined sampling frequency is likely to cause an infinite - * loop (i.e. too close to FLT_EPSILON), fall back to default of 0.001 + * loop (i.e. too close to 0), then clamp it to a determined "safe" value. The value + * chosen here is just the coarsest value which still looks reasonable... */ - /* grid->dx is the first float in View2DGrid struct, so just cast to float pointer, and use it - * It represents the number of 'frames' between gridlines, but we divide by U.v2d_min_gridsize to get pixels-steps - */ + /* grid->dx represents the number of 'frames' between gridlines, but we divide by U.v2d_min_gridsize to get pixels-steps */ // TODO: perhaps we should have 1.0 frames as upper limit so that curves don't get too distorted? - samplefreq= *((float *)grid) / U.v2d_min_gridsize; - if (IS_EQ(samplefreq, 0)) samplefreq= 0.001f; + samplefreq= dx / U.v2d_min_gridsize; + if (samplefreq < 0.00001f) samplefreq= 0.00001f; /* the start/end times are simply the horizontal extents of the 'cur' rect */ stime= v2d->cur.xmin; - etime= v2d->cur.xmax; + etime= v2d->cur.xmax + samplefreq; /* + samplefreq here so that last item gets included... */ /* at each sampling interval, add a new vertex diff --git a/source/blender/editors/space_graph/graph_edit.c b/source/blender/editors/space_graph/graph_edit.c index 7a525b2732f..6249edc1090 100644 --- a/source/blender/editors/space_graph/graph_edit.c +++ b/source/blender/editors/space_graph/graph_edit.c @@ -32,10 +32,6 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "AUD_C-API.h" #include "MEM_guardedalloc.h" @@ -44,21 +40,8 @@ #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -80,10 +63,8 @@ #include "ED_anim_api.h" #include "ED_keyframing.h" -#include "ED_keyframes_draw.h" #include "ED_keyframes_edit.h" #include "ED_screen.h" -#include "ED_space_api.h" #include "ED_transform.h" #include "WM_api.h" @@ -105,7 +86,7 @@ void get_graph_keyframe_extents (bAnimContext *ac, float *xmin, float *xmax, flo int filter; /* get data to filter, from Dopesheet */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* set large values to try to override */ @@ -277,7 +258,7 @@ static void create_ghost_curves (bAnimContext *ac, int start, int end) } /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and add keys between selected keyframes on every frame */ @@ -307,7 +288,7 @@ static void create_ghost_curves (bAnimContext *ac, int start, int end) float cfrae= BKE_nla_tweakedit_remap(adt, cfra, NLATIME_CONVERT_UNMAP); fpt->vec[0]= cfrae; - fpt->vec[1]= fcurve_samplingcb_evalcurve(fcu, NULL, cfrae); + fpt->vec[1]= fcurve_samplingcb_evalcurve(fcu, NULL, cfrae) * unitFac; } /* set color of ghost curve @@ -436,7 +417,7 @@ static void insert_graph_keys(bAnimContext *ac, short mode) short flag = 0; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); if (mode == 2) filter |= ANIMFILTER_SEL; ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); @@ -475,8 +456,6 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op) /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - if (ac.datatype == ANIMCONT_GPENCIL) - return OPERATOR_CANCELLED; /* which channels to affect? */ mode= RNA_enum_get(op->ptr, "type"); @@ -488,7 +467,7 @@ static int graphkeys_insertkey_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -552,7 +531,7 @@ static int graphkeys_click_insert_exec (bContext *C, wmOperator *op) MEM_freeN(ale); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -618,7 +597,7 @@ static short copy_graph_keys (bAnimContext *ac) free_anim_copybuf(); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* copy keyframes */ @@ -636,7 +615,7 @@ static short paste_graph_keys (bAnimContext *ac) int filter, ok=0; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* paste keyframes */ @@ -703,7 +682,7 @@ static int graphkeys_paste_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -732,7 +711,7 @@ static void duplicate_graph_keys (bAnimContext *ac) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and delete selected keys */ @@ -761,7 +740,7 @@ static int graphkeys_duplicate_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -804,7 +783,7 @@ static void delete_graph_keys (bAnimContext *ac) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and delete selected keys */ @@ -841,7 +820,7 @@ static int graphkeys_delete_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -871,7 +850,7 @@ static void clean_graph_keys (bAnimContext *ac, float thresh) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_SEL | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and clean curves */ @@ -903,7 +882,7 @@ static int graphkeys_clean_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -938,7 +917,7 @@ static void bake_graph_curves (bAnimContext *ac, int start, int end) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and add keys between selected keyframes on every frame */ @@ -986,7 +965,7 @@ static int graphkeys_bake_exec(bContext *C, wmOperator *op) /* set notifier that keyframes have changed */ // NOTE: some distinction between order/number of keyframes and type should be made? - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1058,7 +1037,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); scene= ac.scene; /* current scene */ @@ -1085,7 +1064,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) end = CFRA + sbi.length - 1; /* filter anim channels */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* loop through all selected F-Curves, replacing its data with the sound samples */ @@ -1106,7 +1085,7 @@ static int graphkeys_sound_bake_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that 'keyframes' have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1138,7 +1117,7 @@ void GRAPH_OT_sound_bake (wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); RNA_def_float(ot->srna, "low", 0.0f, 0.0, 100000.0, "Lowest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "high", 100000.0, 0.0, 100000.0, "Highest frequency", "", 0.1, 1000.00); RNA_def_float(ot->srna, "attack", 0.005, 0.0, 2.0, "Attack time", "", 0.01, 0.1); @@ -1163,7 +1142,7 @@ static void sample_graph_keys (bAnimContext *ac) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through filtered data and add keys between selected keyframes on every frame */ @@ -1191,7 +1170,7 @@ static int graphkeys_sample_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1232,7 +1211,7 @@ static void setexpo_graph_keys(bAnimContext *ac, short mode) int filter; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting mode per F-Curve */ @@ -1298,17 +1277,17 @@ static void setipo_graph_keys(bAnimContext *ac, short mode) ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; - BeztEditFunc set_cb= ANIM_editkeyframes_ipo(mode); + KeyframeEditFunc set_cb= ANIM_editkeyframes_ipo(mode); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting BezTriple interpolation - * Note: we do not supply BeztEditData to the looper yet. Currently that's not necessary here... + * Note: we do not supply KeyframeEditData to the looper yet. Currently that's not necessary here... */ for (ale= anim_data.first; ale; ale= ale->next) - ANIM_fcurve_keys_bezier_loop(NULL, ale->key_data, NULL, set_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(NULL, ale->key_data, NULL, set_cb, calchandles_fcurve); /* cleanup */ BLI_freelistN(&anim_data); @@ -1379,21 +1358,21 @@ static void sethandles_graph_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditFunc edit_cb= ANIM_editkeyframes_handles(mode); - BeztEditFunc sel_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); + KeyframeEditFunc edit_cb= ANIM_editkeyframes_handles(mode); + KeyframeEditFunc sel_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* loop through setting flags for handles - * Note: we do not supply BeztEditData to the looper yet. Currently that's not necessary here... + * Note: we do not supply KeyframeEditData to the looper yet. Currently that's not necessary here... */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; /* any selected keyframes for editing? */ - if (ANIM_fcurve_keys_bezier_loop(NULL, fcu, NULL, sel_cb, NULL)) { + if (ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, sel_cb, NULL)) { /* for auto/auto-clamped, toggle the auto-handles flag on the F-Curve */ if (mode == HD_AUTO_ANIM) fcu->flag |= FCURVE_AUTO_HANDLES; @@ -1401,7 +1380,7 @@ static void sethandles_graph_keys(bAnimContext *ac, short mode) fcu->flag &= ~FCURVE_AUTO_HANDLES; /* change type of selected handles */ - ANIM_fcurve_keys_bezier_loop(NULL, fcu, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, edit_cb, calchandles_fcurve); } } @@ -1494,7 +1473,7 @@ static int graphkeys_euler_filter_exec (bContext *C, wmOperator *op) */ /* step 1: extract only the rotation f-curves */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_FOREDIT); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_SEL | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_FOREDIT | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -1563,17 +1542,17 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) ListBase anim_data= {NULL, NULL}; bAnimListElem *ale; int filter; - BeztEditData bed; + KeyframeEditData ked; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; /* init edit data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* loop over action data, averaging values */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -1584,11 +1563,11 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_calc_average, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_calc_average, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_calc_average, NULL); /* unapply unit corrections */ ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE|ANIM_UNITCONV_ONLYKEYS); @@ -1597,13 +1576,14 @@ static int graphkeys_framejump_exec(bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set the new current frame and cursor values, based on the average time and value */ - if (bed.i1) { + if (ked.i1) { SpaceIpo *sipo= ac.sa->spacedata.first; Scene *scene= ac.scene; /* take the average values, rounding to the nearest int for the current frame */ - CFRA= (int)floor((bed.f1 / bed.i1) + 0.5f); - sipo->cursorVal= bed.f2 / (float)bed.i1; + CFRA= (int)floor((ked.f1 / ked.i1) + 0.5f); + SUBFRA= 0.f; + sipo->cursorVal= ked.f2 / (float)ked.i1; } /* set notifier that things have changed */ @@ -1647,25 +1627,25 @@ static void snap_graph_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc edit_cb; + KeyframeEditData ked; + KeyframeEditFunc edit_cb; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* get beztriple editing callbacks */ edit_cb= ANIM_editkeyframes_snap(mode); - memset(&bed, 0, sizeof(BeztEditData)); - bed.scene= ac->scene; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.scene= ac->scene; if (mode == GRAPHKEYS_SNAP_NEAREST_MARKER) { - bed.list.first= (ac->markers) ? ac->markers->first : NULL; - bed.list.last= (ac->markers) ? ac->markers->last : NULL; + ked.list.first= (ac->markers) ? ac->markers->first : NULL; + ked.list.last= (ac->markers) ? ac->markers->last : NULL; } else if (mode == GRAPHKEYS_SNAP_VALUE) { SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - bed.f1= (sipo) ? sipo->cursorVal : 0.0f; + ked.f1= (sipo) ? sipo->cursorVal : 0.0f; } /* snap keyframes */ @@ -1677,11 +1657,11 @@ static void snap_graph_keys(bAnimContext *ac, short mode) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); /* apply unit corrections */ ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE); @@ -1711,7 +1691,7 @@ static int graphkeys_snap_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1754,14 +1734,14 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc edit_cb; + KeyframeEditData ked; + KeyframeEditFunc edit_cb; /* get beztriple editing callbacks */ edit_cb= ANIM_editkeyframes_mirror(mode); - memset(&bed, 0, sizeof(BeztEditData)); - bed.scene= ac->scene; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.scene= ac->scene; /* for 'first selected marker' mode, need to find first selected marker first! */ // XXX should this be made into a helper func in the API? @@ -1779,17 +1759,17 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) /* store marker's time (if available) */ if (marker) - bed.f1= (float)marker->frame; + ked.f1= (float)marker->frame; else return; } else if (mode == GRAPHKEYS_MIRROR_VALUE) { SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - bed.f1= (sipo) ? sipo->cursorVal : 0.0f; + ked.f1= (sipo) ? sipo->cursorVal : 0.0f; } /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* mirror keyframes */ @@ -1801,11 +1781,11 @@ static void mirror_graph_keys(bAnimContext *ac, short mode) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, edit_cb, calchandles_fcurve); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, edit_cb, calchandles_fcurve); /* unapply unit corrections */ ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYKEYS|ANIM_UNITCONV_RESTORE); @@ -1835,7 +1815,7 @@ static int graphkeys_mirror_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1873,7 +1853,7 @@ static int graphkeys_smooth_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE| ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* smooth keyframes */ @@ -1890,7 +1870,7 @@ static int graphkeys_smooth_exec(bContext *C, wmOperator *op) ANIM_editkeyframes_refresh(&ac); /* set notifier that keyframes have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -1935,7 +1915,7 @@ static int graph_fmodifier_add_invoke (bContext *C, wmOperator *op, wmEvent *eve continue; /* create operator menu item with relevant properties filled in */ - props_ptr= uiItemFullO(layout, fmi->name, 0, "GRAPH_OT_fmodifier_add", NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); + props_ptr= uiItemFullO(layout, "GRAPH_OT_fmodifier_add", fmi->name, 0, NULL, WM_OP_EXEC_REGION_WIN, UI_ITEM_O_RETURN_PROPS); /* the only thing that gets set from the menu is the type of F-Modifier to add */ RNA_enum_set(&props_ptr, "type", i); /* the following properties are just repeats of existing ones... */ @@ -1964,14 +1944,14 @@ static int graph_fmodifier_add_exec(bContext *C, wmOperator *op) type= RNA_enum_get(op->ptr, "type"); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); if (RNA_boolean_get(op->ptr, "only_active")) filter |= ANIMFILTER_ACTIVE; else filter |= (ANIMFILTER_SEL|ANIMFILTER_CURVEVISIBLE); ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); - /* smooth keyframes */ + /* add f-modifier to each curve */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->data; FModifier *fcm; @@ -2017,4 +1997,119 @@ void GRAPH_OT_fmodifier_add (wmOperatorType *ot) RNA_def_boolean(ot->srna, "only_active", 1, "Only Active", "Only add F-Modifier to active F-Curve."); } +/* ******************** Copy F-Modifiers Operator *********************** */ + +static int graph_fmodifier_copy_exec(bContext *C, wmOperator *op) +{ + bAnimContext ac; + bAnimListElem *ale; + short ok = 0; + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* clear buffer first */ + free_fmodifiers_copybuf(); + + /* get the active F-Curve */ + ale= get_active_fcurve_channel(&ac); + + /* if this exists, call the copy F-Modifiers API function */ + if (ale && ale->data) { + FCurve *fcu= (FCurve *)ale->data; + + // TODO: when 'active' vs 'all' boolean is added, change last param! + ok= ANIM_fmodifiers_copy_to_buf(&fcu->modifiers, 0); + + /* free temp data now */ + MEM_freeN(ale); + } + + /* successful or not? */ + if (ok == 0) { + BKE_report(op->reports, RPT_ERROR, "No F-Modifiers available to be copied"); + return OPERATOR_CANCELLED; + } + else + return OPERATOR_FINISHED; +} + +void GRAPH_OT_fmodifier_copy (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy F-Modifiers"; + ot->idname= "GRAPH_OT_fmodifier_copy"; + ot->description= "Copy the F-Modifier(s) of the active F-Curve."; + + /* api callbacks */ + ot->exec= graph_fmodifier_copy_exec; + ot->poll= graphop_active_fcurve_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* id-props */ + //ot->prop = RNA_def_boolean(ot->srna, "all", 1, "All F-Modifiers", "Copy all the F-Modifiers, instead of just the active one"); +} + +/* ******************** Paste F-Modifiers Operator *********************** */ + +static int graph_fmodifier_paste_exec(bContext *C, wmOperator *op) +{ + bAnimContext ac; + ListBase anim_data = {NULL, NULL}; + bAnimListElem *ale; + int filter, ok=0; + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* filter data */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_SEL | ANIMFILTER_FOREDIT | ANIMFILTER_CURVESONLY); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* paste modifiers */ + for (ale = anim_data.first; ale; ale = ale->next) { + FCurve *fcu= (FCurve *)ale->data; + + // TODO: do we want to replace existing modifiers? add user pref for that! + ok += ANIM_fmodifiers_paste_from_buf(&fcu->modifiers, 0); + } + + /* clean up */ + BLI_freelistN(&anim_data); + + /* successful or not? */ + if (ok) { + /* validate keyframes after editing */ + ANIM_editkeyframes_refresh(&ac); + + /* set notifier that keyframes have changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); + + return OPERATOR_FINISHED; + } + else { + BKE_report(op->reports, RPT_ERROR, "No F-Modifiers to paste"); + return OPERATOR_CANCELLED; + } +} + +void GRAPH_OT_fmodifier_paste (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Paste F-Modifiers"; + ot->idname= "GRAPH_OT_fmodifier_paste"; + ot->description= "Add copied F-Modifiers to the selected F-Curves"; + + /* api callbacks */ + ot->exec= graph_fmodifier_paste_exec; + ot->poll= graphop_editable_keyframes_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /* ************************************************************************** */ diff --git a/source/blender/editors/space_graph/graph_intern.h b/source/blender/editors/space_graph/graph_intern.h index 696d31e22e1..a637ed15fcd 100644 --- a/source/blender/editors/space_graph/graph_intern.h +++ b/source/blender/editors/space_graph/graph_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -63,6 +63,7 @@ void graph_header_buttons(const bContext *C, struct ARegion *ar); void GRAPH_OT_select_all_toggle(struct wmOperatorType *ot); void GRAPH_OT_select_border(struct wmOperatorType *ot); void GRAPH_OT_select_column(struct wmOperatorType *ot); +void GRAPH_OT_select_linked(struct wmOperatorType *ot); void GRAPH_OT_select_more(struct wmOperatorType *ot); void GRAPH_OT_select_less(struct wmOperatorType *ot); void GRAPH_OT_clickselect(struct wmOperatorType *ot); @@ -139,6 +140,8 @@ enum { /* ----------- */ void GRAPH_OT_fmodifier_add(struct wmOperatorType *ot); +void GRAPH_OT_fmodifier_copy(struct wmOperatorType *ot); +void GRAPH_OT_fmodifier_paste(struct wmOperatorType *ot); /* ----------- */ @@ -147,6 +150,7 @@ void GRAPH_OT_ghost_curves_clear(struct wmOperatorType *ot); /* ***************************************** */ /* graph_buttons.c */ + void GRAPH_OT_properties(struct wmOperatorType *ot); void graph_buttons_register(struct ARegionType *art); diff --git a/source/blender/editors/space_graph/graph_ops.c b/source/blender/editors/space_graph/graph_ops.c index 7c1ac14027a..fa9acb282c7 100644 --- a/source/blender/editors/space_graph/graph_ops.c +++ b/source/blender/editors/space_graph/graph_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,12 +31,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_listBase.h" -#include "DNA_action_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" @@ -44,7 +39,6 @@ #include "BKE_sound.h" #include "BKE_utildefines.h" -#include "UI_interface.h" #include "UI_view2d.h" #include "ED_screen.h" @@ -77,6 +71,7 @@ static void graphview_cursor_apply(bContext *C, wmOperator *op) * NOTE: sync this part of the code with ANIM_OT_change_frame */ CFRA= RNA_int_get(op->ptr, "frame"); + SUBFRA=0.f; sound_seek_scene(C); /* set the cursor value */ @@ -237,6 +232,7 @@ void graphedit_operatortypes(void) WM_operatortype_append(GRAPH_OT_select_all_toggle); WM_operatortype_append(GRAPH_OT_select_border); WM_operatortype_append(GRAPH_OT_select_column); + WM_operatortype_append(GRAPH_OT_select_linked); WM_operatortype_append(GRAPH_OT_select_more); WM_operatortype_append(GRAPH_OT_select_less); @@ -262,8 +258,9 @@ void graphedit_operatortypes(void) WM_operatortype_append(GRAPH_OT_click_insert); /* F-Curve Modifiers */ - // XXX temporary? WM_operatortype_append(GRAPH_OT_fmodifier_add); + WM_operatortype_append(GRAPH_OT_fmodifier_copy); + WM_operatortype_append(GRAPH_OT_fmodifier_paste); } /* ************************** registration - keymaps **********************************/ @@ -303,9 +300,16 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) RNA_boolean_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_all_toggle", IKEY, KM_PRESS, KM_CTRL, 0)->ptr, "invert", 1); /* borderselect */ - WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, 0, 0); - RNA_boolean_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0)->ptr, "axis_range", 1); - + kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, 0, 0); + kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, KM_ALT, 0); + RNA_boolean_set(kmi->ptr, "axis_range", 1); + + kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, KM_CTRL, 0); + RNA_boolean_set(kmi->ptr, "include_handles", 1); + kmi = WM_keymap_add_item(keymap, "GRAPH_OT_select_border", BKEY, KM_PRESS, KM_CTRL|KM_ALT, 0); + RNA_boolean_set(kmi->ptr, "axis_range", 1); + RNA_boolean_set(kmi->ptr, "include_handles", 1); + /* column select */ RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, 0, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_KEYS); RNA_enum_set(WM_keymap_add_item(keymap, "GRAPH_OT_select_column", KKEY, KM_PRESS, KM_CTRL, 0)->ptr, "mode", GRAPHKEYS_COLUMNSEL_CFRA); @@ -316,6 +320,9 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_select_more", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "GRAPH_OT_select_less", PADMINUS, KM_PRESS, KM_CTRL, 0); + /* select linked */ + WM_keymap_add_item(keymap, "GRAPH_OT_select_linked", LKEY, KM_PRESS, 0, 0); + /* graph_edit.c */ /* snap - current frame to selected keys */ @@ -340,6 +347,7 @@ static void graphedit_keymap_keyframes (wmKeyConfig *keyconf, wmKeyMap *keymap) WM_keymap_add_item(keymap, "GRAPH_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "GRAPH_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "GRAPH_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); diff --git a/source/blender/editors/space_graph/graph_select.c b/source/blender/editors/space_graph/graph_select.c index 5a0e061e994..6a9d8801e28 100644 --- a/source/blender/editors/space_graph/graph_select.c +++ b/source/blender/editors/space_graph/graph_select.c @@ -29,31 +29,16 @@ #include <string.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" #include "DNA_scene_types.h" #include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_userdef_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -71,12 +56,8 @@ #include "UI_view2d.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" -#include "ED_keyframes_draw.h" #include "ED_keyframes_edit.h" #include "ED_markers.h" -#include "ED_screen.h" -#include "ED_space_api.h" #include "WM_api.h" #include "WM_types.h" @@ -110,23 +91,23 @@ static void deselect_graph_keys (bAnimContext *ac, short test, short sel) int filter; SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - BeztEditData bed; - BeztEditFunc test_cb, sel_cb; + KeyframeEditData ked; + KeyframeEditFunc test_cb, sel_cb; /* determine type-based settings */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); /* filter data */ ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* init BezTriple looping data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); test_cb= ANIM_editkeyframes_ok(BEZT_OK_SELECTED); /* See if we should be selecting or deselecting */ if (test) { for (ale= anim_data.first; ale; ale= ale->next) { - if (ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, test_cb, NULL)) { + if (ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, test_cb, NULL)) { sel= SELECT_SUBTRACT; break; } @@ -141,7 +122,7 @@ static void deselect_graph_keys (bAnimContext *ac, short test, short sel) FCurve *fcu= (FCurve *)ale->key_data; /* Keyframes First */ - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, sel_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, sel_cb, NULL); /* only change selection of channel when the visibility of keyframes doesn't depend on this */ if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { @@ -179,7 +160,7 @@ static int graphkeys_deselectall_exec(bContext *C, wmOperator *op) deselect_graph_keys(&ac, 1, SELECT_ADD); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -211,18 +192,19 @@ void GRAPH_OT_select_all_toggle (wmOperatorType *ot) */ /* Borderselect only selects keyframes now, as overshooting handles often get caught too, - * which means that they may be inadvertantly moved as well. - * Also, for convenience, handles should get same status as keyframe (if it was within bounds) + * which means that they may be inadvertantly moved as well. However, incl_handles overrides + * this, and allow handles to be considered independently too. + * Also, for convenience, handles should get same status as keyframe (if it was within bounds). */ -static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, short selectmode) +static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, short selectmode, short incl_handles) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - BeztEditData bed; - BeztEditFunc ok_cb, select_cb; + KeyframeEditData ked; + KeyframeEditFunc ok_cb, select_cb; View2D *v2d= &ac->ar->v2d; rctf rectf; @@ -231,7 +213,7 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho UI_view2d_region_to_view(v2d, rect.xmax, rect.ymax, &rectf.xmax, &rectf.ymax); /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_CURVEVISIBLE); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* get beztriple editing/validation funcs */ @@ -239,8 +221,12 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho ok_cb= ANIM_editkeyframes_ok(mode); /* init editing data */ - memset(&bed, 0, sizeof(BeztEditData)); - bed.data= &rectf; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.data= &rectf; + + /* treat handles separately? */ + if (incl_handles) + ked.iterflags |= KEYFRAME_ITER_INCL_HANDLES; /* loop over data, doing border select */ for (ale= anim_data.first; ale; ale= ale->next) { @@ -258,21 +244,21 @@ static void borderselect_graphkeys (bAnimContext *ac, rcti rect, short mode, sho /* set horizontal range (if applicable) * NOTE: these values are only used for x-range and y-range but not region - * (which uses bed.data, i.e. rectf) + * (which uses ked.data, i.e. rectf) */ if (mode != BEZT_OK_VALUERANGE) { - bed.f1= rectf.xmin; - bed.f2= rectf.xmax; + ked.f1= rectf.xmin; + ked.f2= rectf.xmax; } else { - bed.f1= rectf.ymin; - bed.f2= rectf.ymax; + ked.f1= rectf.ymin; + ked.f2= rectf.ymax; } /* firstly, check if any keyframes will be hit by this */ - if (ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, ok_cb, NULL)) { + if (ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, ok_cb, NULL)) { /* select keyframes that are in the appropriate places */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, fcu, ok_cb, select_cb, NULL); /* only change selection of channel when the visibility of keyframes doesn't depend on this */ if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { @@ -301,16 +287,23 @@ static int graphkeys_borderselect_exec(bContext *C, wmOperator *op) bAnimContext ac; rcti rect; short mode=0, selectmode=0; + short incl_handles; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) return OPERATOR_CANCELLED; - + + /* get select mode + * - 'gesture_mode' from the operator specifies how to select + * - 'include_handles' from the operator specifies whether to include handles in the selection + */ if (RNA_int_get(op->ptr, "gesture_mode")==GESTURE_MODAL_SELECT) selectmode= SELECT_ADD; else selectmode= SELECT_SUBTRACT; - + + incl_handles = RNA_boolean_get(op->ptr, "include_handles"); + /* get settings from operator */ rect.xmin= RNA_int_get(op->ptr, "xmin"); rect.ymin= RNA_int_get(op->ptr, "ymin"); @@ -333,10 +326,10 @@ static int graphkeys_borderselect_exec(bContext *C, wmOperator *op) mode= BEZT_OK_REGION; /* apply borderselect action */ - borderselect_graphkeys(&ac, rect, mode, selectmode); + borderselect_graphkeys(&ac, rect, mode, selectmode, incl_handles); /* send notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -362,6 +355,7 @@ void GRAPH_OT_select_border(wmOperatorType *ot) WM_operator_properties_gesture_border(ot, FALSE); ot->prop= RNA_def_boolean(ot->srna, "axis_range", 0, "Axis Range", ""); + RNA_def_boolean(ot->srna, "include_handles", 0, "Include Handles", "Are handles tested individually against the selection criteria"); } /* ******************** Column Select Operator **************************** */ @@ -390,8 +384,8 @@ static void markers_selectkeys_between (bAnimContext *ac) bAnimListElem *ale; int filter; - BeztEditFunc ok_cb, select_cb; - BeztEditData bed; + KeyframeEditFunc ok_cb, select_cb; + KeyframeEditData ked; float min, max; /* get extreme markers */ @@ -403,12 +397,12 @@ static void markers_selectkeys_between (bAnimContext *ac) ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAMERANGE); select_cb= ANIM_editkeyframes_select(SELECT_ADD); - memset(&bed, 0, sizeof(BeztEditData)); - bed.f1= min; - bed.f2= max; + memset(&ked, 0, sizeof(KeyframeEditData)); + ked.f1= min; + ked.f2= max; /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* select keys in-between */ @@ -417,11 +411,11 @@ static void markers_selectkeys_between (bAnimContext *ac) if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else { - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } } @@ -439,20 +433,20 @@ static void columnselect_graph_keys (bAnimContext *ac, short mode) Scene *scene= ac->scene; CfraElem *ce; - BeztEditFunc select_cb, ok_cb; - BeztEditData bed; + KeyframeEditFunc select_cb, ok_cb; + KeyframeEditData ked; /* initialise keyframe editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* build list of columns */ switch (mode) { case GRAPHKEYS_COLUMNSEL_KEYS: /* list of selected keys */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, NULL, bezt_to_cfraelem, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, NULL, bezt_to_cfraelem, NULL); BLI_freelistN(&anim_data); break; @@ -460,13 +454,13 @@ static void columnselect_graph_keys (bAnimContext *ac, short mode) case GRAPHKEYS_COLUMNSEL_CFRA: /* current frame */ /* make a single CfraElem for storing this */ ce= MEM_callocN(sizeof(CfraElem), "cfraElem"); - BLI_addtail(&bed.list, ce); + BLI_addtail(&ked.list, ce); ce->cfra= (float)CFRA; break; case GRAPHKEYS_COLUMNSEL_MARKERS_COLUMN: /* list of selected markers */ - ED_markers_make_cfra_list(ac->markers, &bed.list, 1); + ED_markers_make_cfra_list(ac->markers, &ked.list, 1); break; default: /* invalid option */ @@ -480,29 +474,29 @@ static void columnselect_graph_keys (bAnimContext *ac, short mode) /* loop through all of the keys and select additional keyframes * based on the keys found to be selected above */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(ac, ale); - /* loop over cfraelems (stored in the BeztEditData->list) + /* loop over cfraelems (stored in the KeyframeEditData->list) * - we need to do this here, as we can apply fewer NLA-mapping conversions */ - for (ce= bed.list.first; ce; ce= ce->next) { + for (ce= ked.list.first; ce; ce= ce->next) { /* set frame for validation callback to refer to */ if (ale) - bed.f1= BKE_nla_tweakedit_remap(adt, ce->cfra, NLATIME_CONVERT_UNMAP); + ked.f1= BKE_nla_tweakedit_remap(adt, ce->cfra, NLATIME_CONVERT_UNMAP); else - bed.f1= ce->cfra; + ked.f1= ce->cfra; /* select elements with frame number matching cfraelem */ - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } } /* free elements */ - BLI_freelistN(&bed.list); + BLI_freelistN(&ked.list); BLI_freelistN(&anim_data); } @@ -526,7 +520,7 @@ static int graphkeys_columnselect_exec(bContext *C, wmOperator *op) columnselect_graph_keys(&ac, mode); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -549,6 +543,61 @@ void GRAPH_OT_select_column (wmOperatorType *ot) ot->prop= RNA_def_enum(ot->srna, "mode", prop_column_select_types, 0, "Mode", ""); } +/* ******************** Select Linked Operator *********************** */ + +static int graphkeys_select_linked_exec (bContext *C, wmOperator *op) +{ + bAnimContext ac; + + ListBase anim_data= {NULL, NULL}; + bAnimListElem *ale; + int filter; + + KeyframeEditFunc ok_cb = ANIM_editkeyframes_ok(BEZT_OK_SELECTED); + KeyframeEditFunc sel_cb = ANIM_editkeyframes_select(SELECT_ADD); + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* loop through all of the keys and select additional keyframes based on these */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + for (ale= anim_data.first; ale; ale= ale->next) { + FCurve *fcu= (FCurve *)ale->key_data; + + /* check if anything selected? */ + if (ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, ok_cb, NULL)) { + /* select every keyframe in this curve then */ + ANIM_fcurve_keyframes_loop(NULL, fcu, NULL, sel_cb, NULL); + } + } + + /* Cleanup */ + BLI_freelistN(&anim_data); + + /* set notifier that keyframe selection has changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); + + return OPERATOR_FINISHED; +} + +void GRAPH_OT_select_linked (wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Select Linked"; + ot->idname= "GRAPH_OT_select_linked"; + ot->description = "Select keyframes occurring the same F-Curves as selected ones"; + + /* api callbacks */ + ot->exec= graphkeys_select_linked_exec; + ot->poll= graphop_visible_keyframes_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER/*|OPTYPE_UNDO*/; +} + /* ******************** Select More/Less Operators *********************** */ /* Common code to perform selection */ @@ -558,16 +607,16 @@ static void select_moreless_graph_keys (bAnimContext *ac, short mode) bAnimListElem *ale; int filter; - BeztEditData bed; - BeztEditFunc build_cb; + KeyframeEditData ked; + KeyframeEditFunc build_cb; /* init selmap building data */ build_cb= ANIM_editkeyframes_buildselmap(mode); - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* loop through all of the keys and select additional keyframes based on these */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -578,15 +627,15 @@ static void select_moreless_graph_keys (bAnimContext *ac, short mode) continue; /* build up map of whether F-Curve's keyframes should be selected or not */ - bed.data= MEM_callocN(fcu->totvert, "selmap graphEdit"); - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, build_cb, NULL); + ked.data= MEM_callocN(fcu->totvert, "selmap graphEdit"); + ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, build_cb, NULL); /* based on this map, adjust the selection status of the keyframes */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, bezt_selmap_flush, NULL); + ANIM_fcurve_keyframes_loop(&ked, fcu, NULL, bezt_selmap_flush, NULL); /* free the selmap used here */ - MEM_freeN(bed.data); - bed.data= NULL; + MEM_freeN(ked.data); + ked.data= NULL; } /* Cleanup */ @@ -607,7 +656,7 @@ static int graphkeys_select_more_exec (bContext *C, wmOperator *op) select_moreless_graph_keys(&ac, SELMAP_MORE); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -641,7 +690,7 @@ static int graphkeys_select_less_exec (bContext *C, wmOperator *op) select_moreless_graph_keys(&ac, SELMAP_LESS); /* set notifier that keyframe selection has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -682,11 +731,32 @@ static EnumPropertyItem prop_graphkeys_leftright_select_types[] = { /* ------------------- */ -enum { - NEAREST_HANDLE_LEFT = 0, +/* temp info for caching handle vertices close */ +typedef struct tNearestVertInfo { + struct tNearestVertInfo *next, *prev; + + FCurve *fcu; /* F-Curve that keyframe comes from */ + + BezTriple *bezt; /* keyframe to consider */ + FPoint *fpt; /* sample point to consider */ + + short hpoint; /* the handle index that we hit (eHandleIndex) */ + short sel; /* whether the handle is selected or not */ + int dist; /* distance from mouse to vert */ +} tNearestVertInfo; + +/* Tags for the type of graph vert that we have */ +typedef enum eGraphVertIndex { + NEAREST_HANDLE_LEFT = -1, NEAREST_HANDLE_KEY, NEAREST_HANDLE_RIGHT -} eHandleIndex; +} eGraphVertIndex; + +/* Tolerance for absolute radius (in pixels) of the vert from the cursor to use */ +// TODO: perhaps this should depend a bit on the size that the user set the vertices to be? +#define GVERTSEL_TOL 10 + +/* ....... */ /* check if its ok to select a handle */ // XXX also need to check for int-values only? @@ -697,11 +767,61 @@ static int fcurve_handle_sel_check(SpaceIpo *sipo, BezTriple *bezt) return 1; } -/* Find the vertex (either handle (0/2) or the keyframe (1)) that is nearest to the mouse cursor (in area coordinates) - * Selected verts get a disadvantage, to make it easier to select handles behind. - * Returns eHandleIndex - */ -static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fcurve, BezTriple **bezt) +/* check if the given vertex is within bounds or not */ +// TODO: should we return if we hit something? +static void nearest_fcurve_vert_store (ListBase *matches, View2D *v2d, FCurve *fcu, BezTriple *bezt, FPoint *fpt, short hpoint, int mval[2]) +{ + /* Keyframes or Samples? */ + if (bezt) { + int screen_co[2], dist; + + /* convert from data-space to screen coordinates + * NOTE: hpoint+1 gives us 0,1,2 respectively for each handle, + * needed to access the relevant vertex coordinates in the 3x3 + * 'vec' matrix + */ + UI_view2d_view_to_region(v2d, bezt->vec[hpoint+1][0], bezt->vec[hpoint+1][1], &screen_co[0], &screen_co[1]); + + /* check if distance from mouse cursor to vert in screen space is within tolerance */ + // XXX: inlined distance calculation, since we cannot do this on ints using the math lib... + //dist = len_v2v2(mval, screen_co); + dist = sqrt((mval[0] - screen_co[0])*(mval[0] - screen_co[0]) + + (mval[1] - screen_co[1])*(mval[1] - screen_co[1])); + + if (dist <= GVERTSEL_TOL) { + tNearestVertInfo *nvi = (tNearestVertInfo *)matches->last; + short replace = 0; + + /* if there is already a point for the F-Curve, check if this point is closer than that was */ + if ((nvi) && (nvi->fcu == fcu)) { + /* replace if we are closer, or if equal and that one wasn't selected but we are... */ + if ( (nvi->dist > dist) || ((nvi->sel == 0) && BEZSELECTED(bezt)) ) + replace= 1; + } + /* add new if not replacing... */ + if (replace == 0) + nvi = MEM_callocN(sizeof(tNearestVertInfo), "Nearest Graph Vert Info - Bezt"); + + /* store values */ + nvi->fcu = fcu; + nvi->bezt = bezt; + nvi->hpoint = hpoint; + nvi->dist = dist; + + nvi->sel= BEZSELECTED(bezt); // XXX... should this use the individual verts instead? + + /* add to list of matches if appropriate... */ + if (replace == 0) + BLI_addtail(matches, nvi); + } + } + else if (fpt) { + // TODO... + } +} + +/* helper for find_nearest_fcurve_vert() - build the list of nearest matches */ +static void get_nearest_fcurve_verts_list (bAnimContext *ac, int mval[2], ListBase *matches) { ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; @@ -709,18 +829,12 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; View2D *v2d= &ac->ar->v2d; - int hpoint=0, sco[3][2]; - int dist= 100, temp, i; - - /* clear pointers first */ - *fcurve= 0; - *bezt= 0; /* get curves to search through * - if the option to only show keyframes that belong to selected F-Curves is enabled, * include the 'only selected' flag... */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); if (sipo->flag & SIPO_SELCUVERTSONLY) // FIXME: this should really be check for by the filtering code... filter |= ANIMFILTER_SEL; ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); @@ -732,97 +846,128 @@ static short findnearest_fcurve_vert (bAnimContext *ac, int mval[2], FCurve **fc /* apply unit corrections */ ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, 0); - /* try to progressively get closer to the right point... */ + /* apply NLA mapping to all the keyframes */ + if (adt) + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); + if (fcu->bezt) { BezTriple *bezt1=fcu->bezt, *prevbezt=NULL; - - /* apply NLA mapping to all the keyframes */ - if (adt) - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); + int i; for (i=0; i < fcu->totvert; i++, prevbezt=bezt1, bezt1++) { - /* convert beztriple points to screen-space */ - UI_view2d_to_region_no_clip(v2d, bezt1->vec[0][0], bezt1->vec[0][1], &sco[0][0], &sco[0][1]); - UI_view2d_to_region_no_clip(v2d, bezt1->vec[1][0], bezt1->vec[1][1], &sco[1][0], &sco[1][1]); - UI_view2d_to_region_no_clip(v2d, bezt1->vec[2][0], bezt1->vec[2][1], &sco[2][0], &sco[2][1]); - - /* keyframe - do select? */ - temp= abs(mval[0] - sco[1][0]) + abs(mval[1] - sco[1][1]); - - if (bezt1->f2 & SELECT) - temp += 5; - - if (temp < dist) { - hpoint= NEAREST_HANDLE_KEY; - *bezt= bezt1; - dist= temp; - *fcurve= fcu; - } + /* keyframe */ + nearest_fcurve_vert_store(matches, v2d, fcu, bezt1, NULL, NEAREST_HANDLE_KEY, mval); /* handles - only do them if they're visible */ - if (fcurve_handle_sel_check(sipo, bezt1)) { + if (fcurve_handle_sel_check(sipo, bezt1) && (fcu->totvert > 1)) { /* first handle only visible if previous segment had handles */ if ( (!prevbezt && (bezt1->ipo==BEZT_IPO_BEZ)) || (prevbezt && (prevbezt->ipo==BEZT_IPO_BEZ)) ) { - temp= -3 + abs(mval[0] - sco[0][0]) + abs(mval[1] - sco[0][1]); - if (bezt1->f1 & SELECT) - temp += 5; - - if (temp < dist) { - hpoint= NEAREST_HANDLE_LEFT; - *bezt= bezt1; - dist= temp; - *fcurve= fcu; - } + nearest_fcurve_vert_store(matches, v2d, fcu, bezt1, NULL, NEAREST_HANDLE_LEFT, mval); } /* second handle only visible if this segment is bezier */ if (bezt1->ipo == BEZT_IPO_BEZ) { - temp= abs(mval[0] - sco[2][0]) + abs(mval[1] - sco[2][1]); - if (bezt1->f3 & SELECT) - temp += 5; - - if (temp < dist) { - hpoint= NEAREST_HANDLE_RIGHT; - *bezt=bezt1; - dist= temp; - *fcurve= fcu; - } + nearest_fcurve_vert_store(matches, v2d, fcu, bezt1, NULL, NEAREST_HANDLE_RIGHT, mval); } } } + } + else if (fcu->fpt) { + // TODO; do this for samples too - /* un-apply NLA mapping from all the keyframes */ - if (adt) - ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } + /* un-apply NLA mapping from all the keyframes */ + if (adt) + ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); + /* unapply unit corrections */ ANIM_unit_mapping_apply_fcurve(ac->scene, ale->id, ale->key_data, ANIM_UNITCONV_RESTORE); } /* free channels */ BLI_freelistN(&anim_data); +} + +/* helper for find_nearest_fcurve_vert() - get the best match to use */ +static tNearestVertInfo *get_best_nearest_fcurve_vert (bAnimContext *ac, ListBase *matches) +{ + tNearestVertInfo *nvi = NULL; + short found = 0; - /* return handle */ - return hpoint; + /* abort if list is empty */ + if (matches->first == NULL) + return NULL; + + /* if list only has 1 item, remove it from the list and return */ + if (matches->first == matches->last) { + /* need to remove from the list, otherwise it gets freed and then we can't return it */ + nvi= matches->first; + BLI_remlink(matches, nvi); + + return nvi; + } + + /* try to find the first selected F-Curve vert, then take the one after it */ + for (nvi = matches->first; nvi; nvi = nvi->next) { + /* which mode of search are we in: find first selected, or find vert? */ + if (found) { + /* just take this vert now that we've found the selected one + * - we'll need to remove this from the list so that it can be returned to the original caller + */ + BLI_remlink(matches, nvi); + return nvi; + } + else { + /* if vert is selected, we've got what we want... */ + if (nvi->sel) + found= 1; + } + } + + /* if we're still here, this means that we failed to find anything appropriate in the first pass, + * so just take the first item now... + */ + nvi = matches->first; + BLI_remlink(matches, nvi); + return nvi; } - + +/* Find the nearest vertices (either a handle or the keyframe) that are nearest to the mouse cursor (in area coordinates) + * NOTE: the match info found must still be freed + */ +static tNearestVertInfo *find_nearest_fcurve_vert (bAnimContext *ac, int mval[2]) +{ + ListBase matches = {NULL, NULL}; + tNearestVertInfo *nvi; + + /* step 1: get the nearest verts */ + get_nearest_fcurve_verts_list(ac, mval, &matches); + + /* step 2: find the best vert */ + nvi= get_best_nearest_fcurve_vert(ac, &matches); + + BLI_freelistN(&matches); + + /* return the best vert found */ + return nvi; +} + +/* ------------------- */ + /* option 1) select keyframe directly under mouse */ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, short curves_only) { SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - FCurve *fcu; - BezTriple *bezt; - short handle; - int filter; + tNearestVertInfo *nvi; /* find the beztriple that we're selecting, and the handle that was clicked on */ - handle= findnearest_fcurve_vert(ac, mval, &fcu, &bezt); + nvi = find_nearest_fcurve_vert(ac, mval); /* check if anything to select */ - if (fcu == NULL) + if (nvi == NULL) return; /* deselect all other curves? */ @@ -843,13 +988,15 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, s /* if points can be selected on this F-Curve */ // TODO: what about those with no keyframes? - if ((curves_only == 0) && ((fcu->flag & FCURVE_PROTECTED)==0)) { + if ((curves_only == 0) && ((nvi->fcu->flag & FCURVE_PROTECTED)==0)) { /* only if there's keyframe */ - if (bezt) { + if (nvi->bezt) { + BezTriple *bezt= nvi->bezt; + /* depends on selection mode */ if (select_mode == SELECT_INVERT) { /* keyframe - invert select of all */ - if (handle == NEAREST_HANDLE_KEY) { + if (nvi->hpoint == NEAREST_HANDLE_KEY) { if (BEZSELECTED(bezt)) { BEZ_DESEL(bezt); } @@ -859,7 +1006,7 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, s } /* handles - toggle selection of relevant handle */ - else if (handle == NEAREST_HANDLE_LEFT) { + else if (nvi->hpoint == NEAREST_HANDLE_LEFT) { /* toggle selection */ bezt->f1 ^= SELECT; } @@ -870,45 +1017,51 @@ static void mouse_graph_keys (bAnimContext *ac, int mval[], short select_mode, s } else { /* if the keyframe was clicked on, select all verts of given beztriple */ - if (handle == NEAREST_HANDLE_KEY) { + if (nvi->hpoint == NEAREST_HANDLE_KEY) { BEZ_SEL(bezt); } /* otherwise, select the handle that applied */ - else if (handle == NEAREST_HANDLE_LEFT) + else if (nvi->hpoint == NEAREST_HANDLE_LEFT) bezt->f1 |= SELECT; else bezt->f3 |= SELECT; } } + else if (nvi->fpt) { + // TODO: need to handle sample points + } } else { - BeztEditFunc select_cb; - BeztEditData bed; + KeyframeEditFunc select_cb; + KeyframeEditData ked; /* initialise keyframe editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* set up BezTriple edit callbacks */ select_cb= ANIM_editkeyframes_select(select_mode); /* select all keyframes */ - ANIM_fcurve_keys_bezier_loop(&bed, fcu, NULL, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, nvi->fcu, NULL, select_cb, NULL); } /* only change selection of channel when the visibility of keyframes doesn't depend on this */ if ((sipo->flag & SIPO_SELCUVERTSONLY) == 0) { /* select or deselect curve? */ if (select_mode == SELECT_INVERT) - fcu->flag ^= FCURVE_SELECTED; + nvi->fcu->flag ^= FCURVE_SELECTED; else if (select_mode == SELECT_ADD) - fcu->flag |= FCURVE_SELECTED; + nvi->fcu->flag |= FCURVE_SELECTED; /* set active F-Curve (NOTE: sync the filter flags with findnearest_fcurve_vert) */ - if (fcu->flag & FCURVE_SELECTED) { - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); - ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, fcu, ANIMTYPE_FCURVE); + if (nvi->fcu->flag & FCURVE_SELECTED) { + int filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); + ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, nvi->fcu, ANIMTYPE_FCURVE); } } + + /* free temp sample data for filtering */ + MEM_freeN(nvi); } /* Option 2) Selects all the keyframes on either side of the current frame (depends on which side the mouse is on) */ @@ -919,8 +1072,8 @@ static void graphkeys_mselect_leftright (bAnimContext *ac, short leftright, shor int filter; SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - BeztEditFunc ok_cb, select_cb; - BeztEditData bed; + KeyframeEditFunc ok_cb, select_cb; + KeyframeEditData ked; Scene *scene= ac->scene; /* if select mode is replace, deselect all keyframes (and channels) first */ @@ -943,18 +1096,18 @@ static void graphkeys_mselect_leftright (bAnimContext *ac, short leftright, shor ok_cb= ANIM_editkeyframes_ok(BEZT_OK_FRAMERANGE); select_cb= ANIM_editkeyframes_select(select_mode); - memset(&bed, 0, sizeof(BeztEditFunc)); + memset(&ked, 0, sizeof(KeyframeEditFunc)); if (leftright == GRAPHKEYS_LRSEL_LEFT) { - bed.f1 = MINAFRAMEF; - bed.f2 = (float)(CFRA + 0.1f); + ked.f1 = MINAFRAMEF; + ked.f2 = (float)(CFRA + 0.1f); } else { - bed.f1 = (float)(CFRA - 0.1f); - bed.f2 = MAXFRAMEF; + ked.f1 = (float)(CFRA - 0.1f); + ked.f2 = MAXFRAMEF; } /* filter data */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); /* select keys on the side where most data occurs */ @@ -963,11 +1116,11 @@ static void graphkeys_mselect_leftright (bAnimContext *ac, short leftright, shor if (adt) { ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 0, 1); - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); ANIM_nla_mapping_apply_fcurve(adt, ale->key_data, 1, 1); } else - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } /* Cleanup */ @@ -982,19 +1135,24 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec int filter; SpaceIpo *sipo= (SpaceIpo *)ac->sa->spacedata.first; - BeztEditFunc select_cb, ok_cb; - BeztEditData bed; - FCurve *fcu; - BezTriple *bezt; + KeyframeEditFunc select_cb, ok_cb; + KeyframeEditData ked; + tNearestVertInfo *nvi; float selx = (float)ac->scene->r.cfra; - /* find the beztriple that occurs on this frame, and use his as the frame number we're using */ - findnearest_fcurve_vert(ac, mval, &fcu, &bezt); + /* find the beztriple that we're selecting, and the handle that was clicked on */ + nvi = find_nearest_fcurve_vert(ac, mval); /* check if anything to select */ - if (ELEM(NULL, fcu, bezt)) + if (nvi == NULL) return; - selx= bezt->vec[1][0]; + + /* get frame number on which elements should be selected */ + // TODO: should we restrict to integer frames only? + if (nvi->bezt) + selx= nvi->bezt->vec[1][0]; + else if (nvi->fpt) + selx= nvi->fpt->vec[0]; /* if select mode is replace, deselect all keyframes (and channels) first */ if (select_mode==SELECT_REPLACE) { @@ -1013,7 +1171,7 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec } /* initialise keyframe editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* set up BezTriple edit callbacks */ select_cb= ANIM_editkeyframes_select(select_mode); @@ -1022,7 +1180,7 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec /* loop through all of the keys and select additional keyframes * based on the keys found to be selected above */ - filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_CURVEVISIBLE | ANIMFILTER_CURVESONLY | ANIMFILTER_NODUPLIS); ANIM_animdata_filter(ac, &anim_data, filter, ac->data, ac->datatype); for (ale= anim_data.first; ale; ale= ale->next) { @@ -1030,16 +1188,17 @@ static void graphkeys_mselect_column (bAnimContext *ac, int mval[2], short selec /* set frame for validation callback to refer to */ if (adt) - bed.f1= BKE_nla_tweakedit_remap(adt, selx, NLATIME_CONVERT_UNMAP); + ked.f1= BKE_nla_tweakedit_remap(adt, selx, NLATIME_CONVERT_UNMAP); else - bed.f1= selx; + ked.f1= selx; /* select elements with frame number matching cfra */ - ANIM_fcurve_keys_bezier_loop(&bed, ale->key_data, ok_cb, select_cb, NULL); + ANIM_fcurve_keyframes_loop(&ked, ale->key_data, ok_cb, select_cb, NULL); } /* free elements */ - BLI_freelistN(&bed.list); + MEM_freeN(nvi); + BLI_freelistN(&ked.list); BLI_freelistN(&anim_data); } @@ -1101,7 +1260,7 @@ static int graphkeys_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *ev } /* set notifier that keyframe selection (and also channel selection in some cases) has changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_SELECT|ND_ANIMCHAN_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|ND_ANIMCHAN|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_graph/graph_utils.c b/source/blender/editors/space_graph/graph_utils.c index 3d1f0b49826..ad96370e4fa 100644 --- a/source/blender/editors/space_graph/graph_utils.c +++ b/source/blender/editors/space_graph/graph_utils.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,12 +32,8 @@ #include <float.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_object_types.h" #include "DNA_space_types.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -62,20 +58,10 @@ #include "BIF_gl.h" #include "WM_api.h" -#include "WM_types.h" -#include "RNA_access.h" -#include "RNA_define.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "graph_intern.h" // own include @@ -141,6 +127,8 @@ short fcurve_needs_draw_fmodifier_controls (FCurve *fcu, FModifier *fcm) /* clearly harmless */ case FMODIFIER_TYPE_CYCLES: return 0; + case FMODIFIER_TYPE_STEPPED: + return 0; /* borderline... */ case FMODIFIER_TYPE_NOISE: diff --git a/source/blender/editors/space_graph/space_graph.c b/source/blender/editors/space_graph/space_graph.c index 31197f49002..1e006ca38ec 100644 --- a/source/blender/editors/space_graph/space_graph.c +++ b/source/blender/editors/space_graph/space_graph.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,10 +30,7 @@ #include <stdio.h> #include "DNA_anim_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -48,7 +45,6 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_anim_api.h" #include "ED_markers.h" @@ -58,7 +54,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -387,9 +382,12 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) case ND_OB_ACTIVE: case ND_FRAME: case ND_MARKERS: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; + case ND_SEQUENCER: + if (wmn->action == NA_SELECTED) + ED_region_tag_redraw(ar); + break; } break; case NC_OBJECT: @@ -406,13 +404,9 @@ static void graph_region_listener(ARegion *ar, wmNotifier *wmn) } break; case NC_NODE: - switch(wmn->data) { - case ND_NODE_SELECT: - ED_region_tag_redraw(ar); - break; - } switch(wmn->action) { case NA_EDITED: + case NA_SELECTED: ED_region_tag_redraw(ar); break; } @@ -437,7 +431,7 @@ static void graph_listener(ScrArea *sa, wmNotifier *wmn) switch (wmn->category) { case NC_ANIMATION: /* for selection changes of animation data, we can just redraw... otherwise autocolor might need to be done again */ - if (ELEM(wmn->data, ND_KEYFRAME_SELECT, ND_ANIMCHAN_SELECT)) + if (ELEM(wmn->data, ND_KEYFRAME, ND_ANIMCHAN) && (wmn->action == NA_SELECTED)) ED_area_tag_redraw(sa); else ED_area_tag_refresh(sa); @@ -526,7 +520,7 @@ static void graph_refresh(const bContext *C, ScrArea *sa) * - we don't include ANIMFILTER_CURVEVISIBLE filter, as that will result in a * mismatch between channel-colors and the drawn curves */ - filter= (ANIMFILTER_VISIBLE|ANIMFILTER_CURVESONLY); + filter= (ANIMFILTER_VISIBLE|ANIMFILTER_CURVESONLY|ANIMFILTER_NODUPLIS); items= ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* loop over F-Curves, assigning colors */ diff --git a/source/blender/editors/space_image/CMakeLists.txt b/source/blender/editors/space_image/CMakeLists.txt new file mode 100644 index 00000000000..fce56b9c239 --- /dev/null +++ b/source/blender/editors/space_image/CMakeLists.txt @@ -0,0 +1,54 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../imbuf + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../render/extern/include + ../../windowmanager +) + +IF(WITH_OPENEXR) + ADD_DEFINITIONS(-DWITH_OPENEXR) +ENDIF(WITH_OPENEXR) + +IF(WITH_TIFF) + ADD_DEFINITIONS(-DWITH_TIFF) +ENDIF(WITH_TIFF) + +IF(WITH_LCMS) + SET(INC ${INC} ${LCMS_INCLUDE_DIR}) + ADD_DEFINITIONS(-DWITH_LCMS) +ENDIF(WITH_LCMS) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_space_image "${SRC}" "${INC}") diff --git a/source/blender/editors/space_image/Makefile b/source/blender/editors/space_image/Makefile index a55b4e58dfa..ab30ff607ec 100644 --- a/source/blender/editors/space_image/Makefile +++ b/source/blender/editors/space_image/Makefile @@ -58,3 +58,7 @@ ifeq ($(WITH_OPENEXR), true) CPPFLAGS += -DWITH_OPENEXR endif +ifeq ($(WHITH_TIFF), true) + CPPFLAGS += -DWITH_TIFF +endif + diff --git a/source/blender/editors/space_image/SConscript b/source/blender/editors/space_image/SConscript index 2b1d5589cb3..933a30808dc 100644 --- a/source/blender/editors/space_image/SConscript +++ b/source/blender/editors/space_image/SConscript @@ -11,7 +11,13 @@ defs = [] if env['WITH_BF_LCMS']: defs.append('WITH_LCMS') + incs += ' ' + env['BF_LCMS_INC'] if env['WITH_BF_OPENEXR']: defs.append('WITH_OPENEXR') +if env['WITH_BF_TIFF']: + defs.append('WITH_TIFF') + +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( 'bf_editors_space_image', sources, Split(incs), defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/space_image/image_buttons.c b/source/blender/editors/space_image/image_buttons.c index 047fc3493cf..e9b094ee8fb 100644 --- a/source/blender/editors/space_image/image_buttons.c +++ b/source/blender/editors/space_image/image_buttons.c @@ -29,17 +29,10 @@ #include <string.h> #include <stdio.h> -#include "DNA_color_types.h" -#include "DNA_image_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_packedFile_types.h" #include "DNA_node_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -70,11 +63,8 @@ #include "ED_gpencil.h" #include "ED_image.h" -#include "ED_mesh.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_uvedit.h" -#include "ED_util.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -86,14 +76,12 @@ #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "image_intern.h" #define B_REDR 1 #define B_IMAGECHANGED 2 #define B_TRANS_IMAGE 3 -#define B_CURSOR_IMAGE 4 #define B_NOP 0 #define B_TWINANIM 5 #define B_SIMAGETILE 6 @@ -114,20 +102,13 @@ #define B_SIMACLONEBROWSE 25 #define B_SIMACLONEDELETE 26 -/* XXX */ -static int simaFaceDraw_Check() {return 0;} -static int simaUVSel_Check() { return 0;} -/* XXX */ - /* proto */ static void image_editvertex_buts(const bContext *C, uiBlock *block); -static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block); static void do_image_panel_events(bContext *C, void *arg, int event) { SpaceImage *sima= CTX_wm_space_image(C); - ARegion *ar= CTX_wm_region(C); switch(event) { case B_REDR: @@ -135,9 +116,6 @@ static void do_image_panel_events(bContext *C, void *arg, int event) case B_TRANS_IMAGE: image_editvertex_buts(C, NULL); break; - case B_CURSOR_IMAGE: - image_editcursor_buts(C, &ar->v2d, NULL); - break; } /* all events now */ @@ -162,7 +140,7 @@ static void image_info(Image *ima, ImBuf *ibuf, char *str) ofs+= sprintf(str+ofs, "%d frs", IMB_anim_get_duration(ima->anim)); } else - ofs= sprintf(str, "Image"); + ofs= sprintf(str, "Image"); ofs+= sprintf(str+ofs, ": size %d x %d,", ibuf->x, ibuf->y); @@ -221,7 +199,9 @@ static void image_transform_but_attr(SpaceImage *sima, int *imx, int *imy, int * /* is used for both read and write... */ static void image_editvertex_buts(const bContext *C, uiBlock *block) { + Scene *scene= CTX_data_scene(C); SpaceImage *sima= CTX_wm_space_image(C); + Image *ima= sima->image; Object *obedit= CTX_data_edit_object(C); BMEditMesh *em; BMFace *efa; @@ -239,13 +219,13 @@ static void image_editvertex_buts(const bContext *C, uiBlock *block) em= ((Mesh *)obedit->data)->edit_btmesh; BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!simaFaceDraw_Check(efa, tf)) + if (!uvedit_face_visible(scene, ima, efa, tf)) continue; BM_ITER(l, &iter, em->bm, BM_LOOPS_OF_FACE, efa) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (simaUVSel_Check(efa, tf, luv)) { + if (uvedit_uv_selected(em, scene, l)) { cent[0] += luv->uv[0]; cent[1] += luv->uv[1]; @@ -293,13 +273,13 @@ static void image_editvertex_buts(const bContext *C, uiBlock *block) BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) { tf = CustomData_bmesh_get(&em->bm->pdata, efa->head.data, CD_MTEXPOLY); - if (!simaFaceDraw_Check(efa, tf)) + if (!uvedit_face_visible(scene, ima, efa, tf)) continue; BM_ITER(l, &iter, em->bm, BM_LOOPS_OF_FACE, efa) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - if (simaUVSel_Check(efa, tf, luv)) { + if (uvedit_uv_selected(em, scene, l)) { luv->uv[0] += delta[0]; luv->uv[1] += delta[1]; } @@ -312,41 +292,6 @@ static void image_editvertex_buts(const bContext *C, uiBlock *block) /* is used for both read and write... */ -static void image_editcursor_buts(const bContext *C, View2D *v2d, uiBlock *block) -{ - SpaceImage *sima= CTX_wm_space_image(C); - static float ocent[2]; - int imx= 256, imy= 256; - int step, digits; - - image_transform_but_attr(sima, &imx, &imy, &step, &digits); - - if(block) { // do the buttons - ocent[0]= v2d->cursor[0]; - ocent[1]= v2d->cursor[1]; - if (sima->flag & SI_COORDFLOATS) { - } else { - ocent[0] *= imx; - ocent[1] *= imy; - } - - uiBlockBeginAlign(block); - uiDefButF(block, NUM, B_CURSOR_IMAGE, "Cursor X:", 165, 120, 145, 19, &ocent[0], -10*imx, 10.0*imx, step, digits, ""); - uiDefButF(block, NUM, B_CURSOR_IMAGE, "Cursor Y:", 165, 100, 145, 19, &ocent[1], -10*imy, 10.0*imy, step, digits, ""); - uiBlockEndAlign(block); - } - else { // apply event - if (sima->flag & SI_COORDFLOATS) { - v2d->cursor[0]= ocent[0]; - v2d->cursor[1]= ocent[1]; - } - else { - v2d->cursor[0]= ocent[0]/imx; - v2d->cursor[1]= ocent[1]/imy; - } - WM_event_add_notifier(C, NC_IMAGE, sima->image); - } -} static int image_panel_poll(const bContext *C, PanelType *pt) { @@ -523,12 +468,12 @@ static char *slot_menu() char *str; int a, slot; - str= MEM_callocN(RE_SLOT_MAX*32, "menu slots"); + str= MEM_callocN(IMA_MAX_RENDER_SLOT*32, "menu slots"); strcpy(str, "Slot %t"); a= strlen(str); - for(slot=0; slot<RE_SLOT_MAX; slot++) + for(slot=0; slot<IMA_MAX_RENDER_SLOT; slot++) a += sprintf(str+a, "|Slot %d %%x%d", slot+1, slot); return str; @@ -602,7 +547,6 @@ static void image_multi_cb(bContext *C, void *rr_v, void *iuser_v) { ImageUser *iuser= iuser_v; - RE_SetViewSlot(iuser->menunr); BKE_image_multilayer_index(rr_v, iuser); WM_event_add_notifier(C, NC_IMAGE|ND_DRAW, NULL); } @@ -703,7 +647,7 @@ static void image_user_change(bContext *C, void *iuser_v, void *unused) } #endif -static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, int w, int render) +static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, int w, short *render_slot) { uiBlock *block= uiLayoutGetBlock(layout); uiBut *but; @@ -719,10 +663,9 @@ static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, Image wmenu3= (3*w)/6; /* menu buts */ - if(render) { + if(render_slot) { strp= slot_menu(); - iuser->menunr= RE_GetViewSlot(); - but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu1, 20, &iuser->menunr, 0,0,0,0, "Select Slot"); + but= uiDefButS(block, MENU, 0, strp, 0, 0, wmenu1, 20, render_slot, 0,0,0,0, "Select Slot"); uiButSetFunc(but, image_multi_cb, rr, iuser); MEM_freeN(strp); } @@ -741,7 +684,7 @@ static void uiblock_layer_pass_buttons(uiLayout *layout, RenderResult *rr, Image } } -static void uiblock_layer_pass_arrow_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, int render) +static void uiblock_layer_pass_arrow_buttons(uiLayout *layout, RenderResult *rr, ImageUser *iuser, short *render_slot) { uiBlock *block= uiLayoutGetBlock(layout); uiLayout *row; @@ -762,7 +705,7 @@ static void uiblock_layer_pass_arrow_buttons(uiLayout *layout, RenderResult *rr, but= uiDefIconBut(block, BUT, 0, ICON_TRIA_RIGHT, 0,0,18,20, NULL, 0, 0, 0, 0, "Next Layer"); uiButSetFunc(but, image_multi_inclay_cb, rr, iuser); - uiblock_layer_pass_buttons(row, rr, iuser, 230, render); + uiblock_layer_pass_buttons(row, rr, iuser, 230, render_slot); /* decrease, increase arrows */ but= uiDefIconBut(block, BUT, 0, ICON_TRIA_LEFT, 0,0,17,20, NULL, 0, 0, 0, 0, "Previous Pass"); @@ -834,7 +777,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn uiLayoutSetContextPointer(layout, "edit_image", &imaptr); if(!compact) - uiTemplateID(layout, C, ptr, propname, "IMAGE_OT_new", "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, propname, "IMAGE_OT_new", "IMAGE_OT_open", NULL, NULL); // XXX missing: reload, pack @@ -871,19 +814,29 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn } else if(ima->type==IMA_TYPE_R_RESULT) { /* browse layer/passes */ - Render *re= RE_GetRender(scene->id.name, RE_SLOT_VIEW); + Render *re= RE_GetRender(scene->id.name); RenderResult *rr= RE_AcquireResultRead(re); - uiblock_layer_pass_arrow_buttons(layout, rr, iuser, 1); + uiblock_layer_pass_arrow_buttons(layout, rr, iuser, &ima->render_slot); RE_ReleaseResult(re); } } else { row= uiLayoutRow(layout, 0); - uiItemR(row, NULL, 0, &imaptr, "source", (compact)? 0: UI_ITEM_R_EXPAND); + uiItemR(row, &imaptr, "source", 0, NULL, 0); if(ima->source != IMA_SRC_GENERATED) { row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &imaptr, "filename", 0); + split = uiLayoutSplit(row, 0.0, 0); + if (ima->packedfile) + uiItemO(split, "", ICON_PACKAGE, "image.unpack"); + else + uiItemO(split, "", ICON_UGLYPACKAGE, "image.pack"); + + split = uiLayoutSplit(row, 0.0, 0); + row= uiLayoutRow(split, 1); + uiLayoutSetEnabled(row, ima->packedfile==NULL); + + uiItemR(row, &imaptr, "filepath", 0, "", 0); uiItemO(row, "", ICON_FILE_REFRESH, "image.reload"); } @@ -900,7 +853,7 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn /* multilayer? */ if(ima->type==IMA_TYPE_MULTILAYER && ima->rr) { - uiblock_layer_pass_arrow_buttons(layout, ima->rr, iuser, 0); + uiblock_layer_pass_arrow_buttons(layout, ima->rr, iuser, NULL); } else if(ima->source != IMA_SRC_GENERATED) { if(compact == 0) { @@ -918,14 +871,13 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn split= uiLayoutSplit(layout, 0, 0); col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &imaptr, "fields", 0); + uiItemR(col, &imaptr, "fields", 0, NULL, 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &imaptr, "field_order", UI_ITEM_R_EXPAND); + uiItemR(row, &imaptr, "field_order", UI_ITEM_R_EXPAND, NULL, 0); uiLayoutSetActive(row, RNA_boolean_get(&imaptr, "fields")); col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &imaptr, "antialias", 0); - uiItemR(col, NULL, 0, &imaptr, "premultiply", 0); + uiItemR(col, &imaptr, "premultiply", 0, NULL, 0); } } @@ -938,30 +890,30 @@ void uiTemplateImage(uiLayout *layout, bContext *C, PointerRNA *ptr, char *propn sprintf(str, "(%d) Frames", iuser->framenr); row= uiLayoutRow(col, 1); - uiItemR(col, str, 0, userptr, "frames", 0); + uiItemR(col, userptr, "frames", 0, str, 0); if(ima->anim) { block= uiLayoutGetBlock(row); - but= uiDefBut(block, BUT, 0, "<", 0, 0, UI_UNIT_X*2, UI_UNIT_Y, 0, 0, 0, 0, 0, "Set the number of frames from the movie or sequence."); + but= uiDefBut(block, BUT, 0, "Match Movie Length", 0, 0, UI_UNIT_X*2, UI_UNIT_Y, 0, 0, 0, 0, 0, "Set the number of frames to match the movie or sequence."); uiButSetFunc(but, set_frames_cb, ima, iuser); } - uiItemR(col, "Start", 0, userptr, "start_frame", 0); - uiItemR(col, NULL, 0, userptr, "offset", 0); + uiItemR(col, userptr, "frame_start", 0, "Start", 0); + uiItemR(col, userptr, "offset", 0, NULL, 0); col= uiLayoutColumn(split, 0); - uiItemR(col, "Fields", 0, userptr, "fields_per_frame", 0); - uiItemR(col, NULL, 0, userptr, "auto_refresh", 0); - uiItemR(col, NULL, 0, userptr, "cyclic", 0); + uiItemR(col, userptr, "fields_per_frame", 0, "Fields", 0); + uiItemR(col, userptr, "auto_refresh", 0, NULL, 0); + uiItemR(col, userptr, "cyclic", 0, NULL, 0); } else if(ima->source==IMA_SRC_GENERATED) { split= uiLayoutSplit(layout, 0, 0); col= uiLayoutColumn(split, 1); - uiItemR(col, "X", 0, &imaptr, "generated_width", 0); - uiItemR(col, "Y", 0, &imaptr, "generated_height", 0); + uiItemR(col, &imaptr, "generated_width", 0, "X", 0); + uiItemR(col, &imaptr, "generated_height", 0, "Y", 0); col= uiLayoutColumn(split, 0); - uiItemR(col, NULL, 0, &imaptr, "generated_type", UI_ITEM_R_EXPAND); + uiItemR(col, &imaptr, "generated_type", UI_ITEM_R_EXPAND, NULL, 0); } } @@ -980,7 +932,7 @@ void uiTemplateImageLayers(uiLayout *layout, bContext *C, Image *ima, ImageUser /* render layers and passes */ if(ima && iuser) { rr= BKE_image_acquire_renderresult(scene, ima); - uiblock_layer_pass_buttons(layout, rr, iuser, 160, ima->type==IMA_TYPE_R_RESULT); + uiblock_layer_pass_buttons(layout, rr, iuser, 160, (ima->type==IMA_TYPE_R_RESULT)? &ima->render_slot: NULL); BKE_image_release_renderresult(scene, ima); } } @@ -993,26 +945,27 @@ static int image_panel_uv_poll(const bContext *C, PanelType *pt) static void image_panel_uv(const bContext *C, Panel *pa) { - ARegion *ar= CTX_wm_region(C); uiBlock *block; block= uiLayoutAbsoluteBlock(pa->layout); uiBlockSetHandleFunc(block, do_image_panel_events, NULL); image_editvertex_buts(C, block); - image_editcursor_buts(C, &ar->v2d, block); } void image_buttons_register(ARegionType *art) { PanelType *pt; - pt= MEM_callocN(sizeof(PanelType), "spacetype image panel uv"); - strcpy(pt->idname, "IMAGE_PT_uv"); - strcpy(pt->label, "UV"); - pt->draw= image_panel_uv; - pt->poll= image_panel_uv_poll; - BLI_addtail(&art->paneltypes, pt); + /* editvertex_buts not working atm */ + if(0) { + pt= MEM_callocN(sizeof(PanelType), "spacetype image panel uv"); + strcpy(pt->idname, "IMAGE_PT_uv"); + strcpy(pt->label, "UV"); + pt->draw= image_panel_uv; + pt->poll= image_panel_uv_poll; + BLI_addtail(&art->paneltypes, pt); + } pt= MEM_callocN(sizeof(PanelType), "spacetype image panel curves"); strcpy(pt->idname, "IMAGE_PT_curves"); diff --git a/source/blender/editors/space_image/image_draw.c b/source/blender/editors/space_image/image_draw.c index cb942472b9e..309c0061130 100644 --- a/source/blender/editors/space_image/image_draw.c +++ b/source/blender/editors/space_image/image_draw.c @@ -31,15 +31,14 @@ #include "MEM_guardedalloc.h" -#include "DNA_brush_types.h" #include "DNA_camera_types.h" -#include "DNA_image_types.h" #include "DNA_object_types.h" #include "DNA_space_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "PIL_time.h" +#include "BLI_threads.h" #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" @@ -56,13 +55,13 @@ #include "ED_gpencil.h" #include "ED_image.h" -#include "ED_screen.h" #include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "WM_api.h" + +#include "RE_pipeline.h" #include "image_intern.h" @@ -77,50 +76,47 @@ static void image_verify_buffer_float(SpaceImage *sima, Image *ima, ImBuf *ibuf, NOTE: if float buffer changes, we have to manually remove the rect */ - if(ibuf->rect_float) { - if(ibuf->rect==NULL) { - if (color_manage) { - if (ima && ima->source == IMA_SRC_VIEWER) - ibuf->profile = IB_PROFILE_LINEAR_RGB; - } else { - ibuf->profile = IB_PROFILE_NONE; - } - IMB_rect_from_float(ibuf); + if(ibuf->rect_float && ibuf->rect==NULL) { + if(color_manage) { + if(ima && ima->source == IMA_SRC_VIEWER) + ibuf->profile = IB_PROFILE_LINEAR_RGB; } + else + ibuf->profile = IB_PROFILE_NONE; + + IMB_rect_from_float(ibuf); } } -static void draw_render_info(Image *ima, ARegion *ar) +static void draw_render_info(Scene *scene, Image *ima, ARegion *ar) { + RenderResult *rr; rcti rect; float colf[3]; - int showspare= 0; // XXX BIF_show_render_spare(); - if(ima->render_text==NULL) - return; - - rect= ar->winrct; - rect.xmin= 0; - rect.ymin= ar->winrct.ymax - ar->winrct.ymin - HEADER_HEIGHT; - rect.xmax= ar->winrct.xmax - ar->winrct.xmin; - rect.ymax= ar->winrct.ymax - ar->winrct.ymin; - - /* clear header rect */ - UI_GetThemeColor3fv(TH_BACK, colf); - glEnable(GL_BLEND); - glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); - glColor4f(colf[0]+0.1f, colf[1]+0.1f, colf[2]+0.1f, 0.5f); - glRecti(rect.xmin, rect.ymin, rect.xmax, rect.ymax+1); - glDisable(GL_BLEND); - - UI_ThemeColor(TH_TEXT_HI); + rr= BKE_image_acquire_renderresult(scene, ima); - if(showspare) { - UI_DrawString(12, rect.ymin + 5, "(Previous)"); - UI_DrawString(72, rect.ymin + 5, ima->render_text); + if(rr && rr->text) { + rect= ar->winrct; + rect.xmin= 0; + rect.ymin= ar->winrct.ymax - ar->winrct.ymin - HEADER_HEIGHT; + rect.xmax= ar->winrct.xmax - ar->winrct.xmin; + rect.ymax= ar->winrct.ymax - ar->winrct.ymin; + + /* clear header rect */ + UI_GetThemeColor3fv(TH_BACK, colf); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); + glColor4f(colf[0]+0.1f, colf[1]+0.1f, colf[2]+0.1f, 0.5f); + glRecti(rect.xmin, rect.ymin, rect.xmax, rect.ymax+1); + glDisable(GL_BLEND); + + UI_ThemeColor(TH_TEXT_HI); + + UI_DrawString(12, rect.ymin + 5, rr->text); } - else - UI_DrawString(12, rect.ymin + 5, ima->render_text); + + BKE_image_release_renderresult(scene, ima); } void draw_image_info(ARegion *ar, int channels, int x, int y, char *cp, float *fp, int *zp, float *zpf) @@ -500,7 +496,7 @@ void draw_image_grease_pencil(bContext *C, short onlyv2d) /* draw grease-pencil ('screen' strokes) */ //if (sima->flag & SI_DISPGP) - draw_gpencil_2dview(C, 0); + draw_gpencil_view2d(C, 0); } } @@ -633,8 +629,8 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) /* retrieve the image and information about it */ ima= ED_space_image(sima); - ibuf= ED_space_image_acquire_buffer(sima, &lock); ED_space_image_zoom(sima, ar, &zoomx, &zoomy); + ibuf= ED_space_image_acquire_buffer(sima, &lock); show_viewer= (ima && ima->source == IMA_SRC_VIEWER); show_render= (show_viewer && ima->type == IMA_TYPE_R_RESULT); @@ -652,10 +648,7 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) /* paint helpers */ draw_image_paint_helpers(sima, ar, scene, zoomx, zoomy); - /* render info */ - if(ibuf && ima && show_render) - draw_render_info(ima, ar); - + /* XXX integrate this code */ #if 0 if(ibuf) { @@ -674,5 +667,9 @@ void draw_image_main(SpaceImage *sima, ARegion *ar, Scene *scene) #endif ED_space_image_release_buffer(sima, lock); + + /* render info */ + if(ima && show_render) + draw_render_info(scene, ima, ar); } diff --git a/source/blender/editors/space_image/image_header.c b/source/blender/editors/space_image/image_header.c index 4e38d4ec082..efe832040c7 100644 --- a/source/blender/editors/space_image/image_header.c +++ b/source/blender/editors/space_image/image_header.c @@ -30,11 +30,7 @@ #include <stdio.h> #include "DNA_object_types.h" -#include "DNA_mesh_types.h" -#include "DNA_customdata_types.h" #include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -50,29 +46,17 @@ #include "BKE_utildefines.h" #include "BKE_mesh.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" #include "ED_image.h" -#include "ED_mesh.h" -#include "ED_screen.h" -#include "ED_transform.h" -#include "ED_types.h" -#include "ED_util.h" -#include "WM_api.h" #include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" -#include "RNA_access.h" -#include "RE_pipeline.h" #include "image_intern.h" @@ -91,10 +75,10 @@ static int toolbox_invoke(bContext *C, wmOperator *op, wmEvent *event) pup= uiPupMenuBegin(C, "Toolbox", 0); layout= uiPupMenuLayout(pup); - uiItemM(layout, C, NULL, 0, "IMAGE_MT_view"); - if(show_uvedit) uiItemM(layout, C, NULL, 0, "IMAGE_MT_select"); - uiItemM(layout, C, NULL, 0, "IMAGE_MT_image"); - if(show_uvedit) uiItemM(layout, C, NULL, 0, "IMAGE_MT_uvs"); + uiItemM(layout, C, "IMAGE_MT_view", NULL, 0); + if(show_uvedit) uiItemM(layout, C, "IMAGE_MT_select", NULL, 0); + uiItemM(layout, C, "IMAGE_MT_image", NULL, 0); + if(show_uvedit) uiItemM(layout, C, "IMAGE_MT_uvs", NULL, 0); uiPupMenuEnd(C, pup); diff --git a/source/blender/editors/space_image/image_intern.h b/source/blender/editors/space_image/image_intern.h index f5d84d7487f..c038f58375c 100644 --- a/source/blender/editors/space_image/image_intern.h +++ b/source/blender/editors/space_image/image_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -80,6 +80,7 @@ void IMAGE_OT_unpack(struct wmOperatorType *ot); void IMAGE_OT_cycle_render_slot(struct wmOperatorType *ot); void IMAGE_OT_sample(struct wmOperatorType *ot); +void IMAGE_OT_sample_line(struct wmOperatorType *ot); void IMAGE_OT_curves_point_set(struct wmOperatorType *ot); void IMAGE_OT_record_composite(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_image/image_ops.c b/source/blender/editors/space_image/image_ops.c index b9a22745ba5..a8e231bfae9 100644 --- a/source/blender/editors/space_image/image_ops.c +++ b/source/blender/editors/space_image/image_ops.c @@ -20,26 +20,21 @@ * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV. * All rights reserved. * - * Contributor(s): Blender Foundation, 2002-2009 + * Contributor(s): Blender Foundation, 2002-2009, Xavier Thomas * * ***** END GPL LICENSE BLOCK ***** */ +#include <stddef.h> #include <string.h> #include <stdlib.h> +#include <errno.h> #include "MEM_guardedalloc.h" -#include "DNA_image_types.h" -#include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_packedFile_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "DNA_meshdata_types.h" #include "BKE_colortools.h" @@ -65,7 +60,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "RNA_enum_types.h" #include "bmesh.h" @@ -115,12 +109,14 @@ static void sima_zoom_set_factor(SpaceImage *sima, ARegion *ar, float zoomfac) sima_zoom_set(sima, ar, sima->zoom*zoomfac); } +#if 0 // currently unused static int image_poll(bContext *C) { return (CTX_data_edit_image(C) != NULL); } +#endif -static int space_image_poll(bContext *C) +static int space_image_buffer_exists_poll(bContext *C) { SpaceImage *sima= CTX_wm_space_image(C); if(sima && sima->spacetype==SPACE_IMAGE) @@ -131,7 +127,7 @@ static int space_image_poll(bContext *C) static int space_image_file_exists_poll(bContext *C) { - if(space_image_poll(C)) { + if(space_image_buffer_exists_poll(C)) { SpaceImage *sima= CTX_wm_space_image(C); ImBuf *ibuf; void *lock; @@ -146,6 +142,13 @@ static int space_image_file_exists_poll(bContext *C) return 0; } +static int space_image_poll(bContext *C) +{ + SpaceImage *sima= CTX_wm_space_image(C); + if(sima && sima->spacetype==SPACE_IMAGE && sima->image) + return 1; + return 0; +} int space_image_main_area_poll(bContext *C) { @@ -189,7 +192,7 @@ static void view_pan_exit(bContext *C, wmOperator *op, int cancel) if(cancel) { sima->xof= vpd->xof; sima->yof= vpd->yof; - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); } WM_cursor_restore(CTX_wm_window(C)); @@ -205,7 +208,7 @@ static int view_pan_exec(bContext *C, wmOperator *op) sima->xof += offset[0]; sima->yof += offset[1]; - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); /* XXX notifier? */ #if 0 @@ -321,7 +324,7 @@ static void view_zoom_exit(bContext *C, wmOperator *op, int cancel) if(cancel) { sima->zoom= vpd->zoom; - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); } WM_cursor_restore(CTX_wm_window(C)); @@ -335,7 +338,7 @@ static int view_zoom_exec(bContext *C, wmOperator *op) sima_zoom_set_factor(sima, ar, RNA_float_get(op->ptr, "factor")); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); /* XXX notifier? */ #if 0 @@ -359,7 +362,7 @@ static int view_zoom_invoke(bContext *C, wmOperator *op, wmEvent *event) factor= 1.0 + (event->x-event->prevx+event->y-event->prevy)/300.0f; RNA_float_set(op->ptr, "factor", factor); sima_zoom_set(sima, ar, sima->zoom*factor); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } @@ -381,7 +384,7 @@ static int view_zoom_modal(bContext *C, wmOperator *op, wmEvent *event) factor= 1.0 + (vpd->x-event->x+vpd->y-event->y)/300.0f; RNA_float_set(op->ptr, "factor", factor); sima_zoom_set(sima, ar, vpd->zoom*factor); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); break; case MIDDLEMOUSE: case LEFTMOUSE: @@ -464,7 +467,7 @@ static int view_all_exec(bContext *C, wmOperator *op) sima->xof= sima->yof= 0.0f; - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } @@ -516,11 +519,16 @@ static int view_selected_exec(bContext *C, wmOperator *op) if(size<=0.01) size= 0.01; sima_zoom_set(sima, ar, 0.7/size); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } +static int view_selected_poll(bContext *C) +{ + return (space_image_main_area_poll(C) && ED_operator_uvedit(C)); +} + void IMAGE_OT_view_selected(wmOperatorType *ot) { /* identifiers */ @@ -529,7 +537,7 @@ void IMAGE_OT_view_selected(wmOperatorType *ot) /* api callbacks */ ot->exec= view_selected_exec; - ot->poll= ED_operator_uvedit; + ot->poll= view_selected_poll; } /********************** view zoom in/out operator *********************/ @@ -541,7 +549,7 @@ static int view_zoom_in_exec(bContext *C, wmOperator *op) sima_zoom_set_factor(sima, ar, 1.25f); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } @@ -564,7 +572,7 @@ static int view_zoom_out_exec(bContext *C, wmOperator *op) sima_zoom_set_factor(sima, ar, 0.8f); - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } @@ -602,7 +610,7 @@ static int view_zoom_ratio_exec(bContext *C, wmOperator *op) } #endif - ED_area_tag_redraw(CTX_wm_area(C)); + ED_region_tag_redraw(CTX_wm_region(C)); return OPERATOR_FINISHED; } @@ -635,8 +643,9 @@ static const EnumPropertyItem image_file_type_items[] = { {R_JP2, "JPEG_2000", 0, "Jpeg 2000", ""}, #endif {R_IRIS, "IRIS", 0, "Iris", ""}, - //if(G.have_libtiff) +#ifdef WITH_TIFF {R_TIFF, "TIFF", 0, "Tiff", ""}, +#endif {R_RADHDR, "RADIANCE_HDR", 0, "Radiance HDR", ""}, {R_CINEON, "CINEON", 0, "Cineon", ""}, {R_DPX, "DPX", 0, "DPX", ""}, @@ -651,7 +660,7 @@ static const EnumPropertyItem image_file_type_items[] = { static void image_filesel(bContext *C, wmOperator *op, const char *path) { - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); } @@ -682,12 +691,16 @@ static int open_exec(bContext *C, wmOperator *op) Image *ima= NULL; char str[FILE_MAX]; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); /* default to frame 1 if there's no scene in context */ + + errno= 0; + ima= BKE_add_image_file(str, scene ? scene->r.cfra : 1); if(!ima) { if(op->customdata) MEM_freeN(op->customdata); + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", str, errno ? strerror(errno) : "Unsupported image format"); return OPERATOR_CANCELLED; } @@ -723,7 +736,10 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) SpaceImage *sima= CTX_wm_space_image(C); char *path= (sima && sima->image)? sima->image->name: U.textudir; - if(RNA_property_is_set(op->ptr, "path")) + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); @@ -748,7 +764,7 @@ void IMAGE_OT_open(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } /******************** replace image operator ********************/ @@ -761,7 +777,7 @@ static int replace_exec(bContext *C, wmOperator *op) if(!sima->image) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); BLI_strncpy(sima->image->name, str, sizeof(sima->image->name)-1); /* we cant do much if the str is longer then 240 :/ */ BKE_image_signal(sima->image, &sima->iuser, IMA_SIGNAL_RELOAD); @@ -773,15 +789,17 @@ static int replace_exec(bContext *C, wmOperator *op) static int replace_invoke(bContext *C, wmOperator *op, wmEvent *event) { SpaceImage *sima= CTX_wm_space_image(C); - char *path= (sima->image)? sima->image->name: U.textudir; if(!sima->image) return OPERATOR_CANCELLED; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return replace_exec(C, op); - image_filesel(C, op, path); + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", (strncmp(sima->image->name, "//", 2))==0); + + image_filesel(C, op, sima->image->name); return OPERATOR_RUNNING_MODAL; } @@ -801,26 +819,27 @@ void IMAGE_OT_replace(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); } /******************** save image as operator ********************/ /* assumes name is FILE_MAX */ /* ima->name and ibuf->name should end up the same */ -static void save_image_doit(bContext *C, SpaceImage *sima, Scene *scene, wmOperator *op, char *name) +static void save_image_doit(bContext *C, SpaceImage *sima, Scene *scene, wmOperator *op, char *path) { Image *ima= ED_space_image(sima); void *lock; ImBuf *ibuf= ED_space_image_acquire_buffer(sima, &lock); - int len; - if (ibuf) { - BLI_convertstringcode(name, G.sce); - BLI_convertstringframe(name, scene->r.cfra, 0); + if (ibuf) { + int relative= RNA_boolean_get(op->ptr, "relative_path"); + int save_copy= (RNA_struct_find_property(op->ptr, "copy") && RNA_boolean_get(op->ptr, "copy")); + + BLI_path_abs(path, G.sce); if(scene->r.scemode & R_EXTENSION) { - BKE_add_image_extension(name, sima->imtypenr); + BKE_add_image_extension(path, sima->imtypenr); } /* enforce user setting for RGB or RGBA, but skip BW */ @@ -834,54 +853,63 @@ static void save_image_doit(bContext *C, SpaceImage *sima, Scene *scene, wmOpera if(sima->imtypenr==R_MULTILAYER) { RenderResult *rr= BKE_image_acquire_renderresult(scene, ima); if(rr) { - RE_WriteRenderResult(rr, name, scene->r.quality); - - BLI_strncpy(ima->name, name, sizeof(ima->name)); - BLI_strncpy(ibuf->name, name, sizeof(ibuf->name)); - - /* should be function? nevertheless, saving only happens here */ - for(ibuf= ima->ibufs.first; ibuf; ibuf= ibuf->next) - ibuf->userflags &= ~IB_BITMAPDIRTY; - + RE_WriteRenderResult(rr, path, scene->r.quality); + + if(relative) + BLI_path_rel(path, G.sce); /* only after saving */ + + if(!save_copy) { + BLI_strncpy(ima->name, path, sizeof(ima->name)); + BLI_strncpy(ibuf->name, path, sizeof(ibuf->name)); + + /* should be function? nevertheless, saving only happens here */ + for(ibuf= ima->ibufs.first; ibuf; ibuf= ibuf->next) + ibuf->userflags &= ~IB_BITMAPDIRTY; + } } else BKE_report(op->reports, RPT_ERROR, "Did not write, no Multilayer Image"); BKE_image_release_renderresult(scene, ima); } - else if (BKE_write_ibuf(scene, ibuf, name, sima->imtypenr, scene->r.subimtype, scene->r.quality)) { - BLI_strncpy(ima->name, name, sizeof(ima->name)); - BLI_strncpy(ibuf->name, name, sizeof(ibuf->name)); - - ibuf->userflags &= ~IB_BITMAPDIRTY; - - /* change type? */ - if(ima->type==IMA_TYPE_R_RESULT) { - ima->type= IMA_TYPE_IMAGE; - - /* workaround to ensure the render result buffer is no longer used - * by this image, otherwise can crash when a new render result is - * created. */ - if(ibuf->rect && !(ibuf->mall & IB_rect)) - imb_freerectImBuf(ibuf); - if(ibuf->rect_float && !(ibuf->mall & IB_rectfloat)) - imb_freerectfloatImBuf(ibuf); - if(ibuf->zbuf && !(ibuf->mall & IB_zbuf)) - IMB_freezbufImBuf(ibuf); - if(ibuf->zbuf_float && !(ibuf->mall & IB_zbuffloat)) - IMB_freezbuffloatImBuf(ibuf); - } - if( ELEM(ima->source, IMA_SRC_GENERATED, IMA_SRC_VIEWER)) { - ima->source= IMA_SRC_FILE; - ima->type= IMA_TYPE_IMAGE; + else if (BKE_write_ibuf(scene, ibuf, path, sima->imtypenr, scene->r.subimtype, scene->r.quality)) { + + if(relative) + BLI_path_rel(path, G.sce); /* only after saving */ + + if(!save_copy) { + + BLI_strncpy(ima->name, path, sizeof(ima->name)); + BLI_strncpy(ibuf->name, path, sizeof(ibuf->name)); + + ibuf->userflags &= ~IB_BITMAPDIRTY; + + /* change type? */ + if(ima->type==IMA_TYPE_R_RESULT) { + ima->type= IMA_TYPE_IMAGE; + + /* workaround to ensure the render result buffer is no longer used + * by this image, otherwise can crash when a new render result is + * created. */ + if(ibuf->rect && !(ibuf->mall & IB_rect)) + imb_freerectImBuf(ibuf); + if(ibuf->rect_float && !(ibuf->mall & IB_rectfloat)) + imb_freerectfloatImBuf(ibuf); + if(ibuf->zbuf && !(ibuf->mall & IB_zbuf)) + IMB_freezbufImBuf(ibuf); + if(ibuf->zbuf_float && !(ibuf->mall & IB_zbuffloat)) + IMB_freezbuffloatImBuf(ibuf); + } + if( ELEM(ima->source, IMA_SRC_GENERATED, IMA_SRC_VIEWER)) { + ima->source= IMA_SRC_FILE; + ima->type= IMA_TYPE_IMAGE; + } + + /* name image as how we saved it */ + rename_id(&ima->id, BLI_path_basename(path)); } - - /* name image as how we saved it */ - len= strlen(name); - while (len > 0 && name[len - 1] != '/' && name[len - 1] != '\\') len--; - rename_id(&ima->id, name+len); } else - BKE_reportf(op->reports, RPT_ERROR, "Couldn't write image: %s", name); + BKE_reportf(op->reports, RPT_ERROR, "Couldn't write image: %s", path); WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, sima->image); @@ -902,7 +930,7 @@ static int save_as_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; sima->imtypenr= RNA_enum_get(op->ptr, "file_type"); - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); save_image_doit(C, sima, scene, op, str); @@ -917,7 +945,10 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) ImBuf *ibuf; void *lock; - if(RNA_property_is_set(op->ptr, "path")) + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + + if(RNA_property_is_set(op->ptr, "filepath")) return save_as_exec(C, op); if(!ima) @@ -932,6 +963,8 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) sima->imtypenr= R_MULTILAYER; else if(ima->type==IMA_TYPE_R_RESULT) sima->imtypenr= scene->r.imtype; + else if (ima->source == IMA_SRC_GENERATED) + sima->imtypenr= R_PNG; else sima->imtypenr= BKE_ftype_to_imtype(ibuf->ftype); @@ -939,7 +972,12 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) if(ibuf->name[0]==0) BLI_strncpy(ibuf->name, G.ima, FILE_MAX); - + + /* enable save_copy by default for render results */ + if(ELEM(ima->type, IMA_TYPE_R_RESULT, IMA_TYPE_COMPOSITE) && !RNA_property_is_set(op->ptr, "copy")) { + RNA_boolean_set(op->ptr, "copy", TRUE); + } + // XXX note: we can give default menu enums to operator for this image_filesel(C, op, ibuf->name); @@ -962,14 +1000,16 @@ void IMAGE_OT_save_as(wmOperatorType *ot) /* api callbacks */ ot->exec= save_as_exec; ot->invoke= save_as_invoke; - ot->poll= space_image_poll; + ot->poll= space_image_buffer_exists_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ RNA_def_enum(ot->srna, "file_type", image_file_type_items, R_PNG, "File Type", "File type to save image as."); - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE|MOVIEFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); + + RNA_def_boolean(ot->srna, "copy", 0, "Copy", "Create a new image file without modifying the current image in blender"); } /******************** save image operator ********************/ @@ -1079,7 +1119,7 @@ static int save_sequence_exec(bContext *C, wmOperator *op) char name[FILE_MAX]; BLI_strncpy(name, ibuf->name, sizeof(name)); - BLI_convertstringcode(name, G.sce); + BLI_path_abs(name, G.sce); if(0 == IMB_saveiff(ibuf, name, IB_rect | IB_zbuf | IB_zbuffloat)) { BKE_reportf(op->reports, RPT_ERROR, "Could not write image %s.", name); @@ -1102,7 +1142,7 @@ void IMAGE_OT_save_sequence(wmOperatorType *ot) /* api callbacks */ ot->exec= save_sequence_exec; - ot->poll= space_image_poll; + ot->poll= space_image_buffer_exists_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1122,7 +1162,6 @@ static int reload_exec(bContext *C, wmOperator *op) BKE_image_signal(ima, (sima)? &sima->iuser: NULL, IMA_SIGNAL_RELOAD); WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); - ED_area_tag_redraw(CTX_wm_area(C)); return OPERATOR_FINISHED; } @@ -1135,7 +1174,6 @@ void IMAGE_OT_reload(wmOperatorType *ot) /* api callbacks */ ot->exec= reload_exec; - ot->poll= image_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1153,7 +1191,7 @@ static int new_exec(bContext *C, wmOperator *op) PropertyRNA *prop; char name[22]; float color[4]; - int width, height, floatbuf, uvtestgrid; + int width, height, floatbuf, uvtestgrid, alpha; /* retrieve state */ sima= CTX_wm_space_image(C); @@ -1166,9 +1204,15 @@ static int new_exec(bContext *C, wmOperator *op) floatbuf= RNA_boolean_get(op->ptr, "float"); uvtestgrid= RNA_boolean_get(op->ptr, "uv_test_grid"); RNA_float_get_array(op->ptr, "color", color); - color[3]= RNA_float_get(op->ptr, "alpha"); + alpha= RNA_boolean_get(op->ptr, "alpha"); + + if (!floatbuf && scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) + linearrgb_to_srgb_v3_v3(color, color); - ima = BKE_add_image_size(width, height, name, floatbuf, uvtestgrid, color); + if(!alpha) + color[3]= 1.0f; + + ima = BKE_add_image_size(width, height, name, alpha ? 32 : 24, floatbuf, uvtestgrid, color); if(!ima) return OPERATOR_CANCELLED; @@ -1196,6 +1240,9 @@ static int new_exec(bContext *C, wmOperator *op) void IMAGE_OT_new(wmOperatorType *ot) { + PropertyRNA *prop; + float default_color[4]= {0.0f, 0.0f, 0.0f, 1.0f}; + /* identifiers */ ot->name= "New"; ot->idname= "IMAGE_OT_new"; @@ -1211,8 +1258,9 @@ void IMAGE_OT_new(wmOperatorType *ot) RNA_def_string(ot->srna, "name", "Untitled", 21, "Name", "Image datablock name."); RNA_def_int(ot->srna, "width", 1024, 1, INT_MAX, "Width", "Image width.", 1, 16384); RNA_def_int(ot->srna, "height", 1024, 1, INT_MAX, "Height", "Image height.", 1, 16384); - RNA_def_float_color(ot->srna, "color", 3, NULL, 0.0f, FLT_MAX, "Color", "Default fill color.", 0.0f, 1.0f); - RNA_def_float(ot->srna, "alpha", 1.0f, 0.0f, 1.0f, "Alpha", "Default fill alpha.", 0.0f, 1.0f); + prop= RNA_def_float_color(ot->srna, "color", 4, NULL, 0.0f, FLT_MAX, "Color", "Default fill color.", 0.0f, 1.0f); + RNA_def_property_float_array_default(prop, default_color); + RNA_def_boolean(ot->srna, "alpha", 1, "Alpha", "Create an image with an alpha channel."); RNA_def_boolean(ot->srna, "uv_test_grid", 0, "UV Test Grid", "Fill the image with a grid for UV map testing."); RNA_def_boolean(ot->srna, "float", 0, "32 bit Float", "Create image with 32 bit floating point bit depth."); } @@ -1256,6 +1304,8 @@ static int pack_exec(bContext *C, wmOperator *op) else ima->packedfile= newPackedFile(op->reports, ima->name); + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); + return OPERATOR_FINISHED; } @@ -1286,12 +1336,12 @@ void IMAGE_OT_pack(wmOperatorType *ot) { /* identifiers */ ot->name= "Pack"; + ot->description= "Pack an image as embedded data into the .blend file"; ot->idname= "IMAGE_OT_pack"; /* api callbacks */ ot->exec= pack_exec; ot->invoke= pack_invoke; - ot->poll= space_image_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1302,12 +1352,14 @@ void IMAGE_OT_pack(wmOperatorType *ot) /********************* unpack operator *********************/ -void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, PackedFile *pf) +void unpack_menu(bContext *C, char *opname, Image *ima, char *folder, PackedFile *pf) { + PointerRNA props_ptr; uiPopupMenu *pup; uiLayout *layout; char line[FILE_MAXDIR + FILE_MAXFILE + 100]; char local_name[FILE_MAXDIR + FILE_MAX], fi[FILE_MAX]; + char *abs_name = ima->name; strcpy(local_name, abs_name); BLI_splitdirstring(local_name, fi); @@ -1316,23 +1368,39 @@ void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, Packed pup= uiPupMenuBegin(C, "Unpack file", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, "Remove Pack", 0, opname, "method", PF_REMOVE); + uiItemEnumO(layout, opname, "Remove Pack", 0, "method", PF_REMOVE); if(strcmp(abs_name, local_name)) { switch(checkPackedFile(local_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + break; case PF_EQUAL: sprintf(line, "Use %s (identical)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name); + sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_LOCAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_LOCAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_LOCAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + + break; } } @@ -1340,17 +1408,30 @@ void unpack_menu(bContext *C, char *opname, char *abs_name, char *folder, Packed switch(checkPackedFile(abs_name, pf)) { case PF_NOFILE: sprintf(line, "Create %s", abs_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; case PF_EQUAL: sprintf(line, "Use %s (identical)", abs_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; case PF_DIFFERS: sprintf(line, "Use %s (differs)", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_USE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_USE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_USE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); + sprintf(line, "Overwrite %s", local_name); - uiItemEnumO(layout, line, 0, opname, "method", PF_WRITE_ORIGINAL); + //uiItemEnumO(layout, opname, line, 0, "method", PF_WRITE_ORIGINAL); + props_ptr= uiItemFullO(layout, opname, line, 0, NULL, WM_OP_EXEC_DEFAULT, UI_ITEM_O_RETURN_PROPS); + RNA_enum_set(&props_ptr, "method", PF_WRITE_ORIGINAL); + RNA_string_set(&props_ptr, "image", ima->id.name+2); break; } @@ -1362,6 +1443,14 @@ static int unpack_exec(bContext *C, wmOperator *op) Image *ima= CTX_data_edit_image(C); int method= RNA_enum_get(op->ptr, "method"); + /* find the suppplied image by name */ + if (RNA_property_is_set(op->ptr, "image")) { + char imaname[22]; + RNA_string_get(op->ptr, "image", imaname); + ima = BLI_findstring(&CTX_data_main(C)->image, imaname, offsetof(ID, name) + 2); + if (!ima) ima = CTX_data_edit_image(C); + } + if(!ima || !ima->packedfile) return OPERATOR_CANCELLED; @@ -1372,8 +1461,10 @@ static int unpack_exec(bContext *C, wmOperator *op) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - + unpackImage(op->reports, ima, method); + + WM_event_add_notifier(C, NC_IMAGE|NA_EDITED, ima); return OPERATOR_FINISHED; } @@ -1382,6 +1473,9 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *event) { Image *ima= CTX_data_edit_image(C); + if(RNA_property_is_set(op->ptr, "image")) + return unpack_exec(C, op); + if(!ima || !ima->packedfile) return OPERATOR_CANCELLED; @@ -1393,7 +1487,7 @@ static int unpack_invoke(bContext *C, wmOperator *op, wmEvent *event) if(G.fileflags & G_AUTOPACK) BKE_report(op->reports, RPT_WARNING, "AutoPack is enabled, so image will be packed again on file save."); - unpack_menu(C, "IMAGE_OT_unpack", ima->name, "textures", ima->packedfile); + unpack_menu(C, "IMAGE_OT_unpack", ima, "textures", ima->packedfile); return OPERATOR_FINISHED; } @@ -1402,18 +1496,19 @@ void IMAGE_OT_unpack(wmOperatorType *ot) { /* identifiers */ ot->name= "Unpack"; + ot->description= "Save an image packed in the .blend file to disk"; ot->idname= "IMAGE_OT_unpack"; /* api callbacks */ ot->exec= unpack_exec; ot->invoke= unpack_invoke; - ot->poll= space_image_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ RNA_def_enum(ot->srna, "method", unpack_method_items, PF_USE_LOCAL, "Method", "How to unpack."); + RNA_def_string(ot->srna, "image", "", 21, "Image Name", "Image datablock name to unpack."); } /******************** sample image operator ********************/ @@ -1503,7 +1598,7 @@ static void sample_apply(bContext *C, wmOperator *op, wmEvent *event) info->colf[0]= fp[0]; info->colf[1]= fp[1]; info->colf[2]= fp[2]; - info->colf[3]= fp[4]; + info->colf[3]= fp[3]; info->colfp= info->colf; } @@ -1623,6 +1718,116 @@ void IMAGE_OT_sample(wmOperatorType *ot) ot->flag= OPTYPE_BLOCKING; } +/******************** sample line operator ********************/ +static int sample_line_exec(bContext *C, wmOperator *op) +{ + SpaceImage *sima= CTX_wm_space_image(C); + ARegion *ar= CTX_wm_region(C); + Scene *scene= CTX_data_scene(C); + + int x_start= RNA_int_get(op->ptr, "xstart"); + int y_start= RNA_int_get(op->ptr, "ystart"); + int x_end= RNA_int_get(op->ptr, "xend"); + int y_end= RNA_int_get(op->ptr, "yend"); + + void *lock; + ImBuf *ibuf= ED_space_image_acquire_buffer(sima, &lock); + Histogram *hist= &sima->sample_line_hist; + + float x1f, y1f, x2f, y2f; + int x1, y1, x2, y2; + int i, x, y; + float *fp; + float rgb[3]; + unsigned char *cp; + + if (ibuf == NULL) { + ED_space_image_release_buffer(sima, lock); + return OPERATOR_CANCELLED; + } + /* hmmmm */ + if (ibuf->channels < 3) { + ED_space_image_release_buffer(sima, lock); + return OPERATOR_CANCELLED; + } + + UI_view2d_region_to_view(&ar->v2d, x_start, y_start, &x1f, &y1f); + UI_view2d_region_to_view(&ar->v2d, x_end, y_end, &x2f, &y2f); + x1= 0.5f+ x1f*ibuf->x; + x2= 0.5f+ x2f*ibuf->x; + y1= 0.5f+ y1f*ibuf->y; + y2= 0.5f+ y2f*ibuf->y; + + hist->channels = 3; + hist->x_resolution = 256; + hist->xmax = 1.0f; + hist->ymax = 1.0f; + + for (i=0; i<256; i++) { + x= (int)(0.5f + x1 + (float)i*(x2-x1)/255.0f); + y= (int)(0.5f + y1 + (float)i*(y2-y1)/255.0f); + + if (x<0 || y<0 || x>=ibuf->x || y>=ibuf->y) { + hist->data_luma[i] = hist->data_r[i] = hist->data_g[i]= hist->data_b[i] = 0.0f; + } else { + if (ibuf->rect_float) { + fp= (ibuf->rect_float + (ibuf->channels)*(y*ibuf->x + x)); + + if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) + linearrgb_to_srgb_v3_v3(rgb, fp); + else + copy_v3_v3(rgb, fp); + + hist->data_r[i] = rgb[0]; + hist->data_g[i] = rgb[1]; + hist->data_b[i] = rgb[2]; + hist->data_luma[i] = (0.299f*rgb[0] + 0.587f*rgb[1] + 0.114f*rgb[2]); + } + else if (ibuf->rect) { + cp= (unsigned char *)(ibuf->rect + y*ibuf->x + x); + hist->data_r[i] = (float)cp[0]/255.0f; + hist->data_g[i] = (float)cp[1]/255.0f; + hist->data_b[i] = (float)cp[2]/255.0f; + hist->data_luma[i] = (0.299f*cp[0] + 0.587f*cp[1] + 0.114f*cp[2])/255; + } + } + } + + ED_space_image_release_buffer(sima, lock); + + ED_area_tag_redraw(CTX_wm_area(C)); + + return OPERATOR_FINISHED; +} + +static int sample_line_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + SpaceImage *sima= CTX_wm_space_image(C); + + if(!ED_space_image_has_buffer(sima)) + return OPERATOR_CANCELLED; + + return WM_gesture_straightline_invoke(C, op, event); +} + +void IMAGE_OT_sample_line(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sample Line"; + ot->idname= "IMAGE_OT_sample_line"; + + /* api callbacks */ + ot->invoke= sample_line_invoke; + ot->modal= WM_gesture_straightline_modal; + ot->exec= sample_line_exec; + ot->poll= space_image_main_area_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_gesture_straightline(ot, CURSOR_EDIT); +} + /******************** set curve point operator ********************/ void IMAGE_OT_curves_point_set(wmOperatorType *ot) @@ -1795,7 +2000,7 @@ void IMAGE_OT_record_composite(wmOperatorType *ot) ot->invoke= record_composite_invoke; ot->modal= record_composite_modal; ot->cancel= record_composite_cancel; - ot->poll= space_image_poll; + ot->poll= space_image_buffer_exists_poll; } /********************* cycle render slot operator *********************/ @@ -1809,21 +2014,21 @@ static int cycle_render_slot_poll(bContext *C) static int cycle_render_slot_exec(bContext *C, wmOperator *op) { - Scene *scene= CTX_data_scene(C); - int a, slot, cur= RE_GetViewSlot(); + Image *ima= CTX_data_edit_image(C); + int a, slot, cur= ima->render_slot; - for(a=1; a<RE_SLOT_MAX; a++) { - slot= (cur+a)%RE_SLOT_MAX; + for(a=1; a<IMA_MAX_RENDER_SLOT; a++) { + slot= (cur+a)%IMA_MAX_RENDER_SLOT; - if(RE_GetRender(scene->id.name, slot)) { - RE_SetViewSlot(slot); + if(ima->renders[slot] || slot == ima->last_render_slot) { + ima->render_slot= slot; break; } } - if(a == RE_SLOT_MAX) - RE_SetViewSlot((cur == 1)? 0: 1); - + if(a == IMA_MAX_RENDER_SLOT) + ima->render_slot= ((cur == 1)? 0: 1); + WM_event_add_notifier(C, NC_IMAGE|ND_DRAW, NULL); return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_image/image_render.c b/source/blender/editors/space_image/image_render.c index 97b5f9847ff..18e42ce8797 100644 --- a/source/blender/editors/space_image/image_render.c +++ b/source/blender/editors/space_image/image_render.c @@ -28,7 +28,6 @@ #include <stdlib.h> #include <stdio.h> -#include "DNA_image_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" @@ -40,11 +39,9 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "ED_screen.h" #include "RE_pipeline.h" -#include "WM_api.h" #define HEADER_HEIGHT 18 diff --git a/source/blender/editors/space_image/space_image.c b/source/blender/editors/space_image/space_image.c index 29041899fa3..28669847814 100644 --- a/source/blender/editors/space_image/space_image.c +++ b/source/blender/editors/space_image/space_image.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,13 +29,9 @@ #include <string.h> #include <stdio.h> -#include "DNA_image_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -55,8 +51,6 @@ #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" -#include "ED_gpencil.h" -#include "ED_image.h" #include "ED_mesh.h" #include "ED_space_api.h" #include "ED_screen.h" @@ -70,7 +64,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -107,6 +100,7 @@ void ED_space_image_set(bContext *C, SpaceImage *sima, Scene *scene, Object *obe WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data); ED_area_tag_redraw(CTX_wm_area(C)); + } } @@ -185,6 +179,12 @@ void ED_space_image_size(SpaceImage *sima, int *width, int *height) /* not very important, just nice */ *width= (scene->r.xsch*scene->r.size)/100; *height= (scene->r.ysch*scene->r.size)/100; + + if((scene->r.mode & R_BORDER) && (scene->r.mode & R_CROP)) { + *width *= (scene->r.border.xmax - scene->r.border.xmin); + *height *= (scene->r.border.ymax - scene->r.border.ymin); + } + } /* I know a bit weak... but preview uses not actual image size */ // XXX else if(image_preview_active(sima, width, height)); @@ -296,21 +296,21 @@ int ED_space_image_show_uvshadow(SpaceImage *sima, Object *obedit) } - -static void image_histogram_tag_refresh(ScrArea *sa) +static void image_scopes_tag_refresh(ScrArea *sa) { SpaceImage *sima= (SpaceImage *)sa->spacedata.first; ARegion *ar; - + /* only while histogram is visible */ for (ar=sa->regionbase.first; ar; ar=ar->next) { if (ar->regiontype == RGN_TYPE_PREVIEW && ar->flag & RGN_FLAG_HIDDEN) return; } - - sima->hist.ok=0; + + sima->scopes.ok=0; } + /* ******************** manage regions ********************* */ ARegion *image_has_buttons_region(ScrArea *sa) @@ -363,8 +363,8 @@ ARegion *image_has_scope_region(ScrArea *sa) arnew->alignment= RGN_ALIGN_RIGHT; arnew->flag = RGN_FLAG_HIDDEN; - - image_histogram_tag_refresh(sa); + + image_scopes_tag_refresh(sa); return arnew; } @@ -384,6 +384,8 @@ static SpaceLink *image_new(const bContext *C) simage->iuser.ok= 1; simage->iuser.fie_ima= 2; simage->iuser.frames= 100; + + scopes_new(&simage->scopes); /* header */ ar= MEM_callocN(sizeof(ARegion), "header for image"); @@ -407,7 +409,7 @@ static SpaceLink *image_new(const bContext *C) ar->regiontype= RGN_TYPE_PREVIEW; ar->alignment= RGN_ALIGN_RIGHT; ar->flag = RGN_FLAG_HIDDEN; - + /* main area */ ar= MEM_callocN(sizeof(ARegion), "main area for image"); @@ -424,9 +426,7 @@ static void image_free(SpaceLink *sl) if(simage->cumap) curvemapping_free(simage->cumap); -// if(simage->gpd) -// XXX free_gpencil_data(simage->gpd); - + scopes_free(&simage->scopes); } @@ -474,6 +474,7 @@ void image_operatortypes(void) WM_operatortype_append(IMAGE_OT_cycle_render_slot); WM_operatortype_append(IMAGE_OT_sample); + WM_operatortype_append(IMAGE_OT_sample_line); WM_operatortype_append(IMAGE_OT_curves_point_set); WM_operatortype_append(IMAGE_OT_record_composite); @@ -530,7 +531,7 @@ void image_keymap(struct wmKeyConfig *keyconf) static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) { if(drag->type==WM_DRAG_PATH) - if(ELEM(drag->icon, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */ + if(ELEM3(drag->icon, 0, ICON_FILE_IMAGE, ICON_FILE_BLANK)) /* rule might not work? */ return 1; return 0; } @@ -538,7 +539,7 @@ static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void image_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } /* area+region dropbox definition */ @@ -559,6 +560,9 @@ static void image_refresh(const bContext *C, ScrArea *sa) ima= ED_space_image(sima); + if(sima->iuser.flag & IMA_ANIM_ALWAYS) + BKE_image_user_calc_frame(&sima->iuser, CTX_data_scene(C)->r.cfra, 0); + /* check if we have to set the image from the editmesh */ if(ima && (ima->source==IMA_SRC_VIEWER || sima->pin)); else if(obedit && obedit->type == OB_MESH) { @@ -590,26 +594,33 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn) switch(wmn->category) { case NC_SCENE: switch(wmn->data) { + case ND_FRAME: + image_scopes_tag_refresh(sa); + ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); + break; case ND_MODE: case ND_RENDER_RESULT: case ND_COMPO_RESULT: if (ED_space_image_show_render(sima)) - image_histogram_tag_refresh(sa); + image_scopes_tag_refresh(sa); ED_area_tag_refresh(sa); - ED_area_tag_redraw(sa); + ED_area_tag_redraw(sa); break; } break; case NC_IMAGE: if (wmn->reference == sima->image || !wmn->reference) { - image_histogram_tag_refresh(sa); + image_scopes_tag_refresh(sa); ED_area_tag_refresh(sa); ED_area_tag_redraw(sa); } break; case NC_SPACE: - if(wmn->data == ND_SPACE_IMAGE) + if(wmn->data == ND_SPACE_IMAGE) { + image_scopes_tag_refresh(sa); ED_area_tag_redraw(sa); + } break; case NC_GEOM: switch(wmn->data) { @@ -619,6 +630,15 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); break; } + case NC_OBJECT: + switch(wmn->data) { + case ND_TRANSFORM: + if(sima->lock && (sima->flag & SI_DRAWSHADOW)) { + ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); + } + break; + } } } @@ -766,7 +786,10 @@ static void image_main_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ switch(wmn->category) { - /* nothing yet */ + case NC_SCREEN: + if (wmn->data==ND_GPENCIL) + ED_region_tag_redraw(ar); + break; } } @@ -792,6 +815,10 @@ static void image_buttons_area_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ switch(wmn->category) { + case NC_SCREEN: + if (wmn->data==ND_GPENCIL) + ED_region_tag_redraw(ar); + break; case NC_BRUSH: if(wmn->action==NA_EDITED) ED_region_tag_redraw(ar); @@ -815,10 +842,12 @@ static void image_scope_area_init(wmWindowManager *wm, ARegion *ar) static void image_scope_area_draw(const bContext *C, ARegion *ar) { SpaceImage *sima= CTX_wm_space_image(C); + Scene *scene= CTX_data_scene(C); void *lock; ImBuf *ibuf= ED_space_image_acquire_buffer(sima, &lock); - if(ibuf) - histogram_update(&sima->hist, ibuf); + if(ibuf) { + scopes_update(&sima->scopes, ibuf, scene->r.color_mgt_flag & R_COLOR_MANAGEMENT ); + } ED_space_image_release_buffer(sima, lock); ED_region_panels(C, ar, 1, NULL, -1); @@ -860,6 +889,29 @@ static void image_header_area_draw(const bContext *C, ARegion *ar) ED_region_header(C, ar); } +static void image_header_area_listener(ARegion *ar, wmNotifier *wmn) +{ + /* context changes */ + switch(wmn->category) { + case NC_SCENE: + switch(wmn->data) { + case ND_MODE: + case ND_TOOLSETTINGS: + ED_region_tag_redraw(ar); + break; + } + break; + case NC_GEOM: + switch(wmn->data) { + case ND_DATA: + case ND_SELECT: + ED_region_tag_redraw(ar); + break; + } + + } +} + /**************************** spacetype *****************************/ /* only called once, from space/spacetypes.c */ @@ -919,6 +971,7 @@ void ED_spacetype_image(void) art->regionid = RGN_TYPE_HEADER; art->prefsizey= HEADERY; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D|ED_KEYMAP_FRAMES|ED_KEYMAP_HEADER; + art->listener= image_header_area_listener; art->init= image_header_area_init; art->draw= image_header_area_draw; diff --git a/source/blender/editors/space_info/CMakeLists.txt b/source/blender/editors/space_info/CMakeLists.txt new file mode 100644 index 00000000000..473f1f2fcff --- /dev/null +++ b/source/blender/editors/space_info/CMakeLists.txt @@ -0,0 +1,36 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../imbuf + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_info "${SRC}" "${INC}") diff --git a/source/blender/editors/space_info/SConscript b/source/blender/editors/space_info/SConscript index ba1110274ff..cf1d8ab7d77 100644 --- a/source/blender/editors/space_info/SConscript +++ b/source/blender/editors/space_info/SConscript @@ -8,7 +8,4 @@ incs += ' ../../bmesh ../../windowmanager #/intern/guardedalloc #/extern/glew/in defs = [] -if env['WITH_BF_GAMEENGINE']: - defs.append('GAMEBLENDER=1') - env.BlenderLib ( 'bf_editors_space_info', sources, Split(incs), defs, libtype=['core'], priority=[70] ) diff --git a/source/blender/editors/space_info/info_intern.h b/source/blender/editors/space_info/info_intern.h index 939d984a0d8..4053bbf5a1f 100644 --- a/source/blender/editors/space_info/info_intern.h +++ b/source/blender/editors/space_info/info_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -39,5 +39,7 @@ void FILE_OT_make_paths_absolute(struct wmOperatorType *ot); void FILE_OT_report_missing_files(struct wmOperatorType *ot); void FILE_OT_find_missing_files(struct wmOperatorType *ot); +void INFO_OT_reports_display_update(struct wmOperatorType *ot); + #endif /* ED_INFO_INTERN_H */ diff --git a/source/blender/editors/space_info/info_ops.c b/source/blender/editors/space_info/info_ops.c index 072c5bf1573..62e82f83e58 100644 --- a/source/blender/editors/space_info/info_ops.c +++ b/source/blender/editors/space_info/info_ops.c @@ -31,14 +31,12 @@ #include "DNA_packedFile_types.h" #include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" +#include "BLI_math.h" #include "BLI_bpath.h" #include "BKE_context.h" @@ -49,9 +47,6 @@ #include "BKE_report.h" #include "BKE_screen.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "WM_api.h" #include "WM_types.h" @@ -60,14 +55,12 @@ #include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_resources.h" #include "IMB_imbuf_types.h" #include "RNA_access.h" #include "RNA_define.h" -#include "WM_types.h" #include "info_intern.h" @@ -278,7 +271,7 @@ static int find_missing_files_exec(bContext *C, wmOperator *op) { char *path; - path= RNA_string_get_alloc(op->ptr, "path", NULL, 0); + path= RNA_string_get_alloc(op->ptr, "filepath", NULL, 0); findMissingFiles(path, G.sce); MEM_freeN(path); @@ -306,5 +299,102 @@ void FILE_OT_find_missing_files(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* properties */ - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); +} + +/********************* report box operator *********************/ + +/* Hard to decide whether to keep this as an operator, + * or turn it into a hardcoded ui control feature, + * handling TIMER events for all regions in interface_handlers.c + * Not sure how good that is to be accessing UI data from + * inactive regions, so use this for now. --matt + */ + +#define INFO_TIMEOUT 5.0 +#define INFO_COLOR_TIMEOUT 3.0 +#define ERROR_TIMEOUT 10.0 +#define ERROR_COLOR_TIMEOUT 6.0 +#define COLLAPSE_TIMEOUT 0.2 +static int update_reports_display_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + wmWindowManager *wm= CTX_wm_manager(C); + ReportList *reports= CTX_wm_reports(C); + Report *report; + ReportTimerInfo *rti; + float progress=0.0, color_progress=0.0; + float neutral_col[3] = {0.35, 0.35, 0.35}; + float neutral_grey= 0.6; + float timeout=0.0, color_timeout=0.0; + + /* escape if not our timer */ + if(reports->reporttimer==NULL || reports->reporttimer != event->customdata) + return OPERATOR_PASS_THROUGH; + + report= BKE_reports_last_displayable(reports); + rti = (ReportTimerInfo *)reports->reporttimer->customdata; + + timeout = (report->type & RPT_ERROR_ALL)?ERROR_TIMEOUT:INFO_TIMEOUT; + color_timeout = (report->type & RPT_ERROR_ALL)?ERROR_COLOR_TIMEOUT:INFO_COLOR_TIMEOUT; + + /* clear the report display after timeout */ + if (reports->reporttimer->duration > timeout) { + WM_event_remove_timer(wm, NULL, reports->reporttimer); + reports->reporttimer = NULL; + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_INFO, NULL); + + return (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH); + } + + if (rti->widthfac == 0.0) { + /* initialise colours based on report type */ + if(report->type & RPT_ERROR_ALL) { + rti->col[0] = 1.0; + rti->col[1] = 0.2; + rti->col[2] = 0.0; + } else if(report->type & RPT_WARNING_ALL) { + rti->col[0] = 1.0; + rti->col[1] = 1.0; + rti->col[2] = 0.0; + } else if(report->type & RPT_INFO_ALL) { + rti->col[0] = 0.3; + rti->col[1] = 0.45; + rti->col[2] = 0.7; + } + rti->greyscale = 0.75; + rti->widthfac=1.0; + } + + progress = reports->reporttimer->duration / timeout; + color_progress = reports->reporttimer->duration / color_timeout; + + /* fade colours out sharply according to progress through fade-out duration */ + interp_v3_v3v3(rti->col, rti->col, neutral_col, color_progress); + rti->greyscale = interpf(neutral_grey, rti->greyscale, color_progress); + + /* collapse report at end of timeout */ + if (progress*timeout > timeout - COLLAPSE_TIMEOUT) { + rti->widthfac = (progress*timeout - (timeout - COLLAPSE_TIMEOUT)) / COLLAPSE_TIMEOUT; + rti->widthfac = 1.0 - rti->widthfac; + } + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_INFO, NULL); + + return (OPERATOR_FINISHED|OPERATOR_PASS_THROUGH); +} + +void INFO_OT_reports_display_update(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Update Reports Display"; + ot->idname= "INFO_OT_reports_display_update"; + + /* api callbacks */ + ot->invoke= update_reports_display_invoke; + + /* flags */ + ot->flag= 0; + + /* properties */ } diff --git a/source/blender/editors/space_info/info_stats.c b/source/blender/editors/space_info/info_stats.c index 41fc87151bd..68058a5315d 100644 --- a/source/blender/editors/space_info/info_stats.c +++ b/source/blender/editors/space_info/info_stats.c @@ -27,15 +27,11 @@ #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_curve_types.h" #include "DNA_group_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" #include "DNA_meta_types.h" -#include "DNA_object_types.h" -#include "DNA_particle_types.h" #include "DNA_scene_types.h" #include "BKE_anim.h" diff --git a/source/blender/editors/space_info/space_info.c b/source/blender/editors/space_info/space_info.c index f6cc25e9074..0f483f4bcec 100644 --- a/source/blender/editors/space_info/space_info.c +++ b/source/blender/editors/space_info/space_info.c @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -42,10 +38,10 @@ #include "BKE_context.h" #include "BKE_colortools.h" +#include "BKE_global.h" #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -53,12 +49,8 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" - -#include "ED_markers.h" -#include "ED_object.h" +#include "UI_interface.h" #include "info_intern.h" // own include @@ -120,11 +112,9 @@ static void info_main_area_init(wmWindowManager *wm, ARegion *ar) static void info_main_area_draw(const bContext *C, ARegion *ar) { - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); } @@ -136,11 +126,15 @@ void info_operatortypes(void) WM_operatortype_append(FILE_OT_make_paths_absolute); WM_operatortype_append(FILE_OT_report_missing_files); WM_operatortype_append(FILE_OT_find_missing_files); + + WM_operatortype_append(INFO_OT_reports_display_update); } void info_keymap(struct wmKeyConfig *keyconf) { + wmKeyMap *keymap= WM_keymap_find(keyconf, "Window", 0, 0); + WM_keymap_verify_item(keymap, "INFO_OT_reports_display_update", TIMER, KM_ANY, KM_ANY, 0); } /* add handlers, stuff you only do once or on area/region changes */ @@ -167,6 +161,10 @@ static void info_header_listener(ARegion *ar, wmNotifier *wmn) if(ELEM(wmn->data, ND_SCREENCAST, ND_ANIMPLAY)) ED_region_tag_redraw(ar); break; + case NC_WM: + if(wmn->data == ND_JOB) + ED_region_tag_redraw(ar); + break; case NC_SCENE: if(wmn->data==ND_RENDER_RESULT) ED_region_tag_redraw(ar); @@ -182,6 +180,31 @@ static void info_header_listener(ARegion *ar, wmNotifier *wmn) } +static void recent_files_menu(const bContext *C, Menu *menu) +{ + struct RecentFile *recent; + uiLayout *layout= menu->layout; + uiLayoutSetOperatorContext(layout, WM_OP_EXEC_REGION_WIN); + if (G.recent_files.first) { + for(recent = G.recent_files.first; (recent); recent = recent->next) { + uiItemStringO(layout, BLI_path_basename(recent->filepath), ICON_FILE_BLEND, "WM_OT_open_mainfile", "filepath", recent->filepath); + } + } else { + uiItemL(layout, "No Recent Files", 0); + } +} + +void recent_files_menu_register() +{ + MenuType *mt; + + mt= MEM_callocN(sizeof(MenuType), "spacetype info menu recent files"); + strcpy(mt->idname, "INFO_MT_file_open_recent"); + strcpy(mt->label, "Open Recent..."); + mt->draw= recent_files_menu; + WM_menutype_add(mt); +} + /* only called once, from space/spacetypes.c */ void ED_spacetype_info(void) { @@ -220,7 +243,8 @@ void ED_spacetype_info(void) BLI_addhead(&st->regiontypes, art); - + recent_files_menu_register(); + BKE_spacetype_register(st); } diff --git a/source/blender/editors/space_logic/CMakeLists.txt b/source/blender/editors/space_logic/CMakeLists.txt new file mode 100644 index 00000000000..91087d57f11 --- /dev/null +++ b/source/blender/editors/space_logic/CMakeLists.txt @@ -0,0 +1,39 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager + ../../editors/interface +) + +IF(WITH_GAMEENGINE) + ADD_DEFINITIONS(-DGAMEBLENDER) +ENDIF(WITH_GAMEENGINE) + +BLENDERLIB(bf_editor_space_logic "${SRC}" "${INC}") diff --git a/source/blender/editors/space_logic/logic_buttons.c b/source/blender/editors/space_logic/logic_buttons.c index 21f43af7980..6fb019cda35 100644 --- a/source/blender/editors/space_logic/logic_buttons.c +++ b/source/blender/editors/space_logic/logic_buttons.c @@ -28,11 +28,6 @@ #include <stdio.h> #include "DNA_object_types.h" -#include "DNA_node_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "DNA_meshdata_types.h" #include "MEM_guardedalloc.h" @@ -49,9 +44,7 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" -#include "ED_util.h" #include "BIF_gl.h" #include "BIF_glutil.h" @@ -63,7 +56,6 @@ #include "WM_types.h" #include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "interface_intern.h" diff --git a/source/blender/editors/space_logic/logic_header.c b/source/blender/editors/space_logic/logic_header.c index 789c00a6aa5..3e38eb815fb 100644 --- a/source/blender/editors/space_logic/logic_header.c +++ b/source/blender/editors/space_logic/logic_header.c @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -46,8 +42,6 @@ #include "ED_types.h" #include "ED_util.h" -#include "WM_api.h" -#include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" diff --git a/source/blender/editors/space_logic/logic_intern.h b/source/blender/editors/space_logic/logic_intern.h index 6a4888c3bf1..3b2b6497cdc 100644 --- a/source/blender/editors/space_logic/logic_intern.h +++ b/source/blender/editors/space_logic/logic_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -54,6 +54,7 @@ void LOGIC_OT_links_cut(struct wmOperatorType *ot); /* logic_window.c */ void logic_buttons(struct bContext *C, struct ARegion *ar); +void make_unique_prop_names(struct bContext *C, char *str); #endif /* ED_LOGIC_INTERN_H */ diff --git a/source/blender/editors/space_logic/logic_ops.c b/source/blender/editors/space_logic/logic_ops.c new file mode 100644 index 00000000000..2a179ac281c --- /dev/null +++ b/source/blender/editors/space_logic/logic_ops.c @@ -0,0 +1,697 @@ +/** + * $Id$ + * + * ***** BEGIN GPL LICENSE BLOCK ***** + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + * The Original Code is Copyright (C) 2009 Blender Foundation. + * All rights reserved. + * + * + * Contributor(s): Blender Foundation + * + * ***** END GPL LICENSE BLOCK ***** + */ +#include <stddef.h> + +#include "DNA_object_types.h" +#include "DNA_scene_types.h" +#include "DNA_sensor_types.h" +#include "DNA_controller_types.h" +#include "DNA_actuator_types.h" + +#include "BLI_blenlib.h" + +#include "BKE_context.h" +#include "BKE_main.h" +#include "BKE_sca.h" + +#include "ED_object.h" +#include "ED_screen.h" + +#include "RNA_access.h" +#include "RNA_define.h" +#include "RNA_enum_types.h" + +#include "WM_api.h" +#include "WM_types.h" + +#include "logic_intern.h" + +/* ************* Generic Operator Helpers ************* */ + +static int edit_sensor_poll(bContext *C) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor); + + if (ptr.data && ((ID*)ptr.id.data)->lib) return 0; + return 1; +} + +static int edit_controller_poll(bContext *C) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "controller", &RNA_Controller); + + if (ptr.data && ((ID*)ptr.id.data)->lib) return 0; + return 1; +} + +static int edit_actuator_poll(bContext *C) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "actuator", &RNA_Actuator); + + if (ptr.data && ((ID*)ptr.id.data)->lib) return 0; + return 1; +} + +static void edit_sensor_properties(wmOperatorType *ot) +{ + RNA_def_string(ot->srna, "sensor", "", 32, "Sensor", "Name of the sensor to edit"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the object the sensor belongs to"); +} + +static int edit_sensor_invoke_properties(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "sensor", &RNA_Sensor); + + if (RNA_property_is_set(op->ptr, "sensor") && RNA_property_is_set(op->ptr, "object") ) + return 1; + + if (ptr.data) { + bSensor *sens = ptr.data; + Object *ob = ptr.id.data; + + RNA_string_set(op->ptr, "sensor", sens->name); + RNA_string_set(op->ptr, "object", ob->id.name+2); + return 1; + } + + return 0; +} + +static Object *edit_object_property_get(bContext *C, wmOperator *op) +{ + char ob_name[32]; + Object *ob; + + RNA_string_get(op->ptr, "object", ob_name); + + /* if ob_name is valid try to find the object with this name + otherwise gets the active object */ + if (BLI_strnlen(ob_name, 32) > 0) + ob = BLI_findstring(&(CTX_data_main(C)->object), ob_name, offsetof(ID, name) + 2); + else + ob= ED_object_active_context(C); + + return ob; +} + +static bSensor *edit_sensor_property_get(bContext *C, wmOperator *op, Object **ob) +{ + char sensor_name[32]; + bSensor *sens; + + RNA_string_get(op->ptr, "sensor", sensor_name); + + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; + + sens = BLI_findstring(&((*ob)->sensors), sensor_name, offsetof(bSensor, name)); + return sens; +} + +static void edit_controller_properties(wmOperatorType *ot) +{ + RNA_def_string(ot->srna, "controller", "", 32, "Controller", "Name of the controller to edit"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the object the controller belongs to"); +} + +static int edit_controller_invoke_properties(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "controller", &RNA_Controller); + + if (RNA_property_is_set(op->ptr, "controller") && RNA_property_is_set(op->ptr, "object") ) + return 1; + + if (ptr.data) { + bController *cont = ptr.data; + Object *ob = ptr.id.data; + + RNA_string_set(op->ptr, "controller", cont->name); + RNA_string_set(op->ptr, "object", ob->id.name+2); + return 1; + } + + return 0; +} + +static bController *edit_controller_property_get(bContext *C, wmOperator *op, Object **ob) +{ + char controller_name[32]; + bController *cont; + + RNA_string_get(op->ptr, "controller", controller_name); + + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; + + cont = BLI_findstring(&((*ob)->controllers), controller_name, offsetof(bController, name)); + return cont; +} + +static void edit_actuator_properties(wmOperatorType *ot) +{ + RNA_def_string(ot->srna, "actuator", "", 32, "Actuator", "Name of the actuator to edit"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the object the actuator belongs to"); +} + +static int edit_actuator_invoke_properties(bContext *C, wmOperator *op) +{ + PointerRNA ptr= CTX_data_pointer_get_type(C, "actuator", &RNA_Actuator); + + if (RNA_property_is_set(op->ptr, "actuator") && RNA_property_is_set(op->ptr, "object") ) + return 1; + + if (ptr.data) { + bActuator *act = ptr.data; + Object *ob = ptr.id.data; + + RNA_string_set(op->ptr, "actuator",act->name); + RNA_string_set(op->ptr, "object", ob->id.name+2); + return 1; + } + + return 0; +} + +static bActuator *edit_actuator_property_get(bContext *C, wmOperator *op, Object **ob) +{ + char actuator_name[32]; + bActuator *act; + + RNA_string_get(op->ptr, "actuator", actuator_name); + + *ob= edit_object_property_get(C, op); + if (!*ob) return NULL; + + act = BLI_findstring(&((*ob)->actuators), actuator_name, offsetof(bActuator, name)); + return act; +} + +static int logicbricks_move_property_get(wmOperator *op) +{ + int type = RNA_enum_get(op->ptr, "direction"); + + if (type == 1) + return TRUE; + else + return FALSE; +} + +/* ************* Add/Remove Sensor Operator ************* */ + +static int sensor_remove_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bSensor *sens = edit_sensor_property_get(C, op, &ob); + + if (!sens) + return OPERATOR_CANCELLED; + + BLI_remlink(&(ob->sensors), sens); + free_sensor(sens); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + + static int sensor_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_sensor_invoke_properties(C, op)) + return sensor_remove_exec(C, op); + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_sensor_remove(wmOperatorType *ot) +{ + ot->name= "Remove Sensor"; + ot->description= "Remove a sensor from the active object"; + ot->idname= "LOGIC_OT_sensor_remove"; + + ot->invoke= sensor_remove_invoke; + ot->exec= sensor_remove_exec; + ot->poll= edit_sensor_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_sensor_properties(ot); +} + +static int sensor_add_exec(bContext *C, wmOperator *op) +{ + Object *ob; + bSensor *sens; + PointerRNA sens_ptr; + PropertyRNA *prop; + const char *sens_name; + char name[32]; + int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if (!ob) + return OPERATOR_CANCELLED; + + sens= new_sensor(type); + BLI_addtail(&(ob->sensors), sens); + + /* set the sensor name based on rna type enum */ + RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &sens_ptr); + prop = RNA_struct_find_property(&sens_ptr, "type"); + + RNA_string_get(op->ptr, "name", name); + if(BLI_strnlen(name, 32) < 1){ + RNA_property_enum_name(C, &sens_ptr, prop, RNA_property_enum_get(&sens_ptr, prop), &sens_name); + BLI_strncpy(sens->name, sens_name, sizeof(sens->name)); + } + else + BLI_strncpy(sens->name, name, sizeof(sens->name)); + + make_unique_prop_names(C, sens->name); + ob->scaflag |= OB_SHOWSENS; + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +void LOGIC_OT_sensor_add(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Add Sensor"; + ot->description = "Add a sensor to the active object"; + ot->idname= "LOGIC_OT_sensor_add"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= sensor_add_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, SENS_ALWAYS, "Type", "Type of sensor to add"); + RNA_def_enum_funcs(prop, rna_Sensor_type_itemf); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Sensor to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Sensor to"); +} + +/* ************* Add/Remove Controller Operator ************* */ + +static int controller_remove_exec(bContext *C, wmOperator *op) +{ + Object *ob = NULL; + bController *cont = edit_controller_property_get(C, op, &ob); + + if (!cont) + return OPERATOR_CANCELLED; + + BLI_remlink(&(ob->controllers), cont); + unlink_controller(cont); + free_controller(cont); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + + static int controller_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_controller_invoke_properties(C, op)) + return controller_remove_exec(C, op); + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_controller_remove(wmOperatorType *ot) +{ + ot->name= "Remove Controller"; + ot->description= "Remove a controller from the active object"; + ot->idname= "LOGIC_OT_controller_remove"; + + ot->invoke= controller_remove_invoke; + ot->exec= controller_remove_exec; + ot->poll= edit_controller_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_controller_properties(ot); +} + +static int controller_add_exec(bContext *C, wmOperator *op) +{ + Object *ob; + bController *cont; + PointerRNA cont_ptr; + PropertyRNA *prop; + const char *cont_name; + int bit; + char name[32]; + int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if(!ob) + return OPERATOR_CANCELLED; + + cont= new_controller(type); + BLI_addtail(&(ob->controllers), cont); + + /* set the controller name based on rna type enum */ + RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &cont_ptr); + prop = RNA_struct_find_property(&cont_ptr, "type"); + + RNA_string_get(op->ptr, "name", name); + if(BLI_strnlen(name, 32) < 1){ + RNA_property_enum_name(C, &cont_ptr, prop, RNA_property_enum_get(&cont_ptr, prop), &cont_name); + BLI_strncpy(cont->name, cont_name, sizeof(cont->name)); + } + else + BLI_strncpy(cont->name, name, sizeof(cont->name)); + + make_unique_prop_names(C, cont->name); + /* set the controller state mask from the current object state. + A controller is always in a single state, so select the lowest bit set + from the object state */ + for (bit=0; bit<OB_MAX_STATES; bit++) { + if (ob->state & (1<<bit)) + break; + } + cont->state_mask = (1<<bit); + if (cont->state_mask == 0) { + /* shouldn't happen, object state is never 0 */ + cont->state_mask = 1; + } + + ob->scaflag |= OB_SHOWCONT; + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +void LOGIC_OT_controller_add(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add Controller"; + ot->description = "Add a controller to the active object"; + ot->idname= "LOGIC_OT_controller_add"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= controller_add_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + RNA_def_enum(ot->srna, "type", controller_type_items, CONT_LOGIC_AND, "Type", "Type of controller to add"); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Controller to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Controller to"); +} + +/* ************* Add/Remove Actuator Operator ************* */ + +static int actuator_remove_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bActuator *act = edit_actuator_property_get(C, op, &ob); + + if (!act) + return OPERATOR_CANCELLED; + + BLI_remlink(&(ob->actuators), act); + unlink_actuator(act); + free_actuator(act); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int actuator_remove_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_actuator_invoke_properties(C, op)) + return actuator_remove_exec(C, op); + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_actuator_remove(wmOperatorType *ot) +{ + ot->name= "Remove Actuator"; + ot->description= "Remove a actuator from the active object"; + ot->idname= "LOGIC_OT_actuator_remove"; + + ot->invoke= actuator_remove_invoke; + ot->exec= actuator_remove_exec; + ot->poll= edit_actuator_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + edit_actuator_properties(ot); +} + +static int actuator_add_exec(bContext *C, wmOperator *op) +{ + Object *ob; + bActuator *act; + PointerRNA act_ptr; + PropertyRNA *prop; + const char *act_name; + char name[32]; + int type= RNA_enum_get(op->ptr, "type"); + + ob= edit_object_property_get(C, op); + if(!ob) + return OPERATOR_CANCELLED; + + act= new_actuator(type); + BLI_addtail(&(ob->actuators), act); + + /* set the actuator name based on rna type enum */ + RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &act_ptr); + prop = RNA_struct_find_property(&act_ptr, "type"); + + RNA_string_get(op->ptr, "name", name); + if (BLI_strnlen(name, 32) < 1){ + RNA_property_enum_name(C, &act_ptr, prop, RNA_property_enum_get(&act_ptr, prop), &act_name); + BLI_strncpy(act->name, act_name, sizeof(act->name)); + } + else + BLI_strncpy(act->name, name, sizeof(act->name)); + + make_unique_prop_names(C, act->name); + ob->scaflag |= OB_SHOWACT; + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +void LOGIC_OT_actuator_add(wmOperatorType *ot) +{ + PropertyRNA *prop; + + /* identifiers */ + ot->name= "Add Actuator"; + ot->description = "Add a actuator to the active object"; + ot->idname= "LOGIC_OT_actuator_add"; + + /* api callbacks */ + ot->invoke= WM_menu_invoke; + ot->exec= actuator_add_exec; + ot->poll= ED_operator_object_active_editable; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, CONT_LOGIC_AND, "Type", "Type of actuator to add"); + RNA_def_enum_funcs(prop, rna_Actuator_type_itemf); + RNA_def_string(ot->srna, "name", "", 32, "Name", "Name of the Actuator to add"); + RNA_def_string(ot->srna, "object", "", 32, "Object", "Name of the Object to add the Actuator to"); +} + +/* ************* Move Logic Bricks Operator ************* */ +static EnumPropertyItem logicbricks_move_direction[] ={ + {1, "UP", 0, "Move Up", ""}, + {2, "DOWN", 0, "Move Down", ""}, + {0, NULL, 0, NULL, NULL}}; + + +static int sensor_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bSensor *sens= edit_sensor_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!sens) + return OPERATOR_CANCELLED; + + sca_move_sensor(sens, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int sensor_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_sensor_invoke_properties(C, op)) { + return sensor_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_sensor_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Sensor"; + ot->description = "Move Densor"; + ot->idname= "LOGIC_OT_sensor_move"; + + /* api callbacks */ + ot->invoke= sensor_move_invoke; + ot->exec= sensor_move_exec; + ot->poll= edit_sensor_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_sensor_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + +static int controller_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bController *cont= edit_controller_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!cont) + return OPERATOR_CANCELLED; + + sca_move_controller(cont, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int controller_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_controller_invoke_properties(C, op)) { + return controller_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_controller_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Controller"; + ot->description = "Move Controller"; + ot->idname= "LOGIC_OT_controller_move"; + + /* api callbacks */ + ot->invoke= controller_move_invoke; + ot->exec= controller_move_exec; + ot->poll= edit_controller_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_controller_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + +static int actuator_move_exec(bContext *C, wmOperator *op) +{ + Object *ob=NULL; + bActuator *act = edit_actuator_property_get(C, op, &ob); + int move_up= logicbricks_move_property_get(op); + + if (!act) + return OPERATOR_CANCELLED; + + sca_move_actuator(act, ob, move_up); + + WM_event_add_notifier(C, NC_LOGIC, NULL); + + return OPERATOR_FINISHED; +} + +static int actuator_move_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + if (edit_actuator_invoke_properties(C, op)) { + return actuator_move_exec(C, op); + } + else + return OPERATOR_CANCELLED; +} + +void LOGIC_OT_actuator_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Move Actuator"; + ot->description = "Move Actuator"; + ot->idname= "LOGIC_OT_actuator_move"; + + /* api callbacks */ + ot->invoke= actuator_move_invoke; + ot->exec= actuator_move_exec; + ot->poll= edit_actuator_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ + edit_actuator_properties(ot); + RNA_def_enum(ot->srna, "direction", logicbricks_move_direction, 1, "Direction", "Move Up or Down"); +} + + +void ED_operatortypes_logic(void) +{ + WM_operatortype_append(LOGIC_OT_sensor_remove); + WM_operatortype_append(LOGIC_OT_sensor_add); + WM_operatortype_append(LOGIC_OT_sensor_move); + WM_operatortype_append(LOGIC_OT_controller_remove); + WM_operatortype_append(LOGIC_OT_controller_add); + WM_operatortype_append(LOGIC_OT_controller_move); + WM_operatortype_append(LOGIC_OT_actuator_remove); + WM_operatortype_append(LOGIC_OT_actuator_add); + WM_operatortype_append(LOGIC_OT_actuator_move); +} diff --git a/source/blender/editors/space_logic/logic_window.c b/source/blender/editors/space_logic/logic_window.c index 7539f721883..c4a42d89758 100644 --- a/source/blender/editors/space_logic/logic_window.c +++ b/source/blender/editors/space_logic/logic_window.c @@ -33,16 +33,12 @@ #include "DNA_actuator_types.h" #include "DNA_controller_types.h" -#include "DNA_object_types.h" #include "DNA_property_types.h" #include "DNA_space_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_sensor_types.h" -#include "DNA_sound_types.h" -#include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_action_types.h" #include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -58,19 +54,16 @@ #include "BKE_sca.h" #include "BKE_utildefines.h" -#include "ED_screen.h" -#include "ED_types.h" #include "ED_util.h" -#include "WM_api.h" #include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" + +#include "RNA_access.h" /* XXX BAD BAD */ #include "../interface/interface_intern.h" @@ -201,8 +194,9 @@ static void make_unique_prop_names_cb(bContext *C, void *strv, void *redraw_view } -static void sca_move_sensor(bContext *C, void *datav, void *move_up) +static void old_sca_move_sensor(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bSensor *sens_to_delete= datav; int val; @@ -253,8 +247,9 @@ static void sca_move_sensor(bContext *C, void *datav, void *move_up) } } -static void sca_move_controller(bContext *C, void *datav, void *move_up) +static void old_sca_move_controller(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bController *controller_to_del= datav; int val; @@ -308,8 +303,9 @@ static void sca_move_controller(bContext *C, void *datav, void *move_up) } } -static void sca_move_actuator(bContext *C, void *datav, void *move_up) +static void old_sca_move_actuator(bContext *C, void *datav, void *move_up) { + /* deprecated, no longer using it (moved to sca.c) */ Scene *scene= CTX_data_scene(C); bActuator *actuator_to_move= datav; int val; @@ -455,8 +451,8 @@ void do_logic_buts(bContext *C, void *arg, int event) case B_SET_STATE_BIT: for(ob=G.main->object.first; ob; ob=ob->id.next) { - if(ob->scaflag & OB_SETSTBIT) { - ob->scaflag &= ~OB_SETSTBIT; + if(ob->scaflag & OB_ALLSTATE) { + ob->scaflag &= ~OB_ALLSTATE; ob->state = 0x3FFFFFFF; } } @@ -648,17 +644,17 @@ static char *controller_name(int type) { switch (type) { case CONT_LOGIC_AND: - return "AND"; + return "And"; case CONT_LOGIC_OR: - return "OR"; + return "Or"; case CONT_LOGIC_NAND: - return "NAND"; + return "Nand"; case CONT_LOGIC_NOR: - return "NOR"; + return "Nor"; case CONT_LOGIC_XOR: - return "XOR"; + return "Xor"; case CONT_LOGIC_XNOR: - return "XNOR"; + return "Xnor"; case CONT_EXPRESSION: return "Expression"; case CONT_PYTHON: @@ -682,7 +678,7 @@ static char *actuator_name(int type) case ACT_OBJECT: return "Motion"; case ACT_IPO: - return "Ipo"; + return "F-Curve"; case ACT_LAMP: return "Lamp"; case ACT_CAMERA: @@ -710,7 +706,7 @@ static char *actuator_name(int type) case ACT_VISIBILITY: return "Visibility"; case ACT_2DFILTER: - return "2D Filter"; + return "Filter 2D"; case ACT_PARENT: return "Parent"; case ACT_STATE: @@ -731,21 +727,21 @@ static char *actuator_pup(Object *owner) case OB_ARMATURE: return "Actuators %t|Action %x15|Armature %x23|Motion %x0|Constraint %x9|Ipo %x1" "|Camera %x3|Sound %x5|Property %x6|Edit Object %x10" - "|Scene %x11|Random %x13|Message %x14|Game %x17" + "|Scene %x11|Random %x13|Message %x14|Game %x17" "|Visibility %x18|2D Filter %x19|Parent %x20|State %x22"; break; case OB_MESH: return "Actuators %t|Shape Action %x21|Motion %x0|Constraint %x9|Ipo %x1" "|Camera %x3|Sound %x5|Property %x6|Edit Object %x10" - "|Scene %x11|Random %x13|Message %x14|Game %x17" + "|Scene %x11|Random %x13|Message %x14|Game %x17" "|Visibility %x18|2D Filter %x19|Parent %x20|State %x22"; break; default: return "Actuators %t|Motion %x0|Constraint %x9|Ipo %x1" "|Camera %x3|Sound %x5|Property %x6|Edit Object %x10" - "|Scene %x11|Random %x13|Message %x14|Game %x17" + "|Scene %x11|Random %x13|Message %x14|Game %x17" "|Visibility %x18|2D Filter %x19|Parent %x20|State %x22"; } } @@ -916,8 +912,15 @@ static ID **get_selected_and_linked_obs(bContext *C, short *count, short scavisf ob= G.main->object.first; nr= 0; + + /* make the active object always the first one of the list */ + if (obact) { + idar[0]= (ID *)obact; + nr++; + } + while(ob) { - if( ob->scavisflag ) { + if( (ob->scavisflag) && (ob != obact)) { idar[nr]= (ID *)ob; nr++; } @@ -2125,7 +2128,7 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh break; } - case ACT_SOUND: + case ACT_SOUND: { sa = act->data; sa->sndnr = 0; @@ -2177,27 +2180,27 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh } case ACT_CAMERA: - ysize= 48; + ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - ca= act->data; + ca= act->data; - uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+10, yco-24, (width-20)/2, 19, &(ca->ob), "Look at this Object"); - uiDefButF(block, NUM, 0, "Height:", xco+10+(width-20)/2, yco-24, (width-20)/2, 19, &ca->height, 0.0, 20.0, 0, 0, ""); + uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+10, yco-24, (width-20)/2, 19, &(ca->ob), "Look at this Object"); + uiDefButF(block, NUM, 0, "Height:", xco+10+(width-20)/2, yco-24, (width-20)/2, 19, &ca->height, 0.0, 20.0, 0, 0, ""); - uiDefButF(block, NUM, 0, "Min:", xco+10, yco-44, (width-60)/2, 19, &ca->min, 0.0, 20.0, 0, 0, ""); + uiDefButF(block, NUM, 0, "Min:", xco+10, yco-44, (width-60)/2, 19, &ca->min, 0.0, 20.0, 0, 0, ""); - if(ca->axis==0) ca->axis= 'x'; - uiDefButS(block, ROW, 0, "X", xco+10+(width-60)/2, yco-44, 20, 19, &ca->axis, 4.0, (float)'x', 0, 0, "Camera tries to get behind the X axis"); - uiDefButS(block, ROW, 0, "Y", xco+30+(width-60)/2, yco-44, 20, 19, &ca->axis, 4.0, (float)'y', 0, 0, "Camera tries to get behind the Y axis"); + if(ca->axis==0) ca->axis= 'x'; + uiDefButS(block, ROW, 0, "X", xco+10+(width-60)/2, yco-44, 20, 19, &ca->axis, 4.0, (float)'x', 0, 0, "Camera tries to get behind the X axis"); + uiDefButS(block, ROW, 0, "Y", xco+30+(width-60)/2, yco-44, 20, 19, &ca->axis, 4.0, (float)'y', 0, 0, "Camera tries to get behind the Y axis"); - uiDefButF(block, NUM, 0, "Max:", xco+20+(width)/2, yco-44, (width-60)/2, 19, &ca->max, 0.0, 20.0, 0, 0, ""); + uiDefButF(block, NUM, 0, "Max:", xco+20+(width)/2, yco-44, (width-60)/2, 19, &ca->max, 0.0, 20.0, 0, 0, ""); - yco-= ysize; + yco-= ysize; - break; + break; case ACT_EDIT_OBJECT: @@ -2288,11 +2291,11 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh str= "Edit Object %t|Add Object %x0|End Object %x1|Replace Mesh %x2|Track to %x3|Dynamics %x4"; uiDefButS(block, MENU, B_REDR, str, xco+40, yco-24, (width-80), 19, &eoa->type, 0.0, 0.0, 0, 0, ""); - yco-= ysize; + yco-= ysize; - break; + break; - case ACT_CONSTRAINT: + case ACT_CONSTRAINT: coa= act->data; if (coa->type == ACT_CONST_TYPE_LOC) { @@ -2425,79 +2428,79 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh } str= "Constraint Type %t|Location %x0|Distance %x1|Orientation %x2|Force field %x3"; but = uiDefButS(block, MENU, B_REDR, str, xco+40, yco-23, (width-80), 19, &coa->type, 0.0, 0.0, 0, 0, ""); - yco-= ysize; - break; + yco-= ysize; + break; case ACT_SCENE: - sca= act->data; + sca= act->data; - if(sca->type==ACT_SCENE_RESTART) { - ysize= 28; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - } - else if(sca->type==ACT_SCENE_CAMERA) { - - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + if(sca->type==ACT_SCENE_RESTART) { + ysize= 28; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + } + else if(sca->type==ACT_SCENE_CAMERA) { + + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+40, yco-44, (width-80), 19, &(sca->camera), "Set this Camera. Leave empty to refer to self object"); - } - else if(sca->type==ACT_SCENE_SET) { + uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+40, yco-44, (width-80), 19, &(sca->camera), "Set this Camera. Leave empty to refer to self object"); + } + else if(sca->type==ACT_SCENE_SET) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Set this Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Set this Scene"); + } else if(sca->type==ACT_SCENE_ADD_FRONT) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Add an Overlay Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Add an Overlay Scene"); + } else if(sca->type==ACT_SCENE_ADD_BACK) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Add a Background Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Add a Background Scene"); + } else if(sca->type==ACT_SCENE_REMOVE) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Remove a Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Remove a Scene"); + } else if(sca->type==ACT_SCENE_SUSPEND) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Pause a Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Pause a Scene"); + } else if(sca->type==ACT_SCENE_RESUME) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Unpause a Scene"); - } + uiDefIDPoinBut(block, test_scenepoin_but, ID_SCE, 1, "SCE:", xco+40, yco-44, (width-80), 19, &(sca->scene), "Unpause a Scene"); + } str= "Scene %t|Restart %x0|Set Scene %x1|Set Camera %x2|Add OverlayScene %x3|Add BackgroundScene %x4|Remove Scene %x5|Suspend Scene %x6|Resume Scene %x7"; uiDefButS(block, MENU, B_REDR, str, xco+40, yco-24, (width-80), 19, &sca->type, 0.0, 0.0, 0, 0, ""); - yco-= ysize; - break; + yco-= ysize; + break; case ACT_GAME: { gma = act->data; @@ -2507,7 +2510,7 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh ysize = 48; glRects(xco, yco-ysize, xco+width, yco); uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefBut(block, TEX, 1, "File: ", xco+10, yco-44,width-20,19, &(gma->filename), 0, 63, 0, 0, "Load this blend file, use the \"//\" prefix for a path relative to the current blend file"); + uiDefBut(block, TEX, 1, "File: ", xco+10, yco-44,width-20,19, &(gma->filename), 0, 63, 0, 0, "Load this blend file, use the \"//\" prefix for a path relative to the current blend file"); // uiDefBut(block, TEX, 1, "Anim: ", xco+10, yco-64,width-20,19, &(gma->loadaniname), 0, 63, 0, 0, "Use this loadinganimation"); } /* else if (gma->type == ACT_GAME_START) @@ -2516,7 +2519,7 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh glRects(xco, yco-ysize, xco+width, yco); uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefBut(block, TEX, 1, "File: ", xco+10, yco-44,width-20,19, &(gma->filename), 0, 63, 0, 0, "Load this file"); + uiDefBut(block, TEX, 1, "File: ", xco+10, yco-44,width-20,19, &(gma->filename), 0, 63, 0, 0, "Load this file"); uiDefBut(block, TEX, 1, "Anim: ", xco+10, yco-64,width-20,19, &(gma->loadaniname), 0, 63, 0, 0, "Use this loadinganimation"); } */ else if (ELEM4(gma->type, ACT_GAME_RESTART, ACT_GAME_QUIT, ACT_GAME_SAVECFG, ACT_GAME_LOADCFG)) @@ -2759,16 +2762,16 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh if (ma->bodyType == ACT_MESG_MESG) { - /* line 3: Message Body */ - uiDefBut(block, TEX, 1, "Body: ", - (xco+10+(0.20*(width-20))),(yco-(myline++*24)),(0.8*(width-20)),19, - &ma->body, 0, 31, 0, 0, - "Optional message body Text"); + /* line 3: Message Body */ + uiDefBut(block, TEX, 1, "Body: ", + (xco+10+(0.20*(width-20))),(yco-(myline++*24)),(0.8*(width-20)),19, + &ma->body, 0, 31, 0, 0, + "Optional message body Text"); } else { /* line 3: Property body (set by property) */ uiDefBut(block, TEX, 1, "Propname: ", - (xco+10+(0.20*(width-20))),(yco-(myline++*24)),(0.8*(width-20)),19, + (xco+10+(0.20*(width-20))),(yco-(myline++*24)),(0.8*(width-20)),19, &ma->body, 0, 31, 0, 0, "The message body will be set by the Property Value"); } @@ -2783,7 +2786,7 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh { ysize +=20; } - glRects( xco, yco-ysize, xco+width, yco ); + glRects( xco, yco-ysize, xco+width, yco ); uiEmboss( (float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1 ); switch(tdfa->type) @@ -2826,16 +2829,16 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh uiDefButS(block, MENU, B_REDR, str, xco+30,yco-24,width-60, 19, &tdfa->type, 0.0, 0.0, 0.0, 0.0, "2D filter type"); yco -= ysize; - break; + break; case ACT_PARENT: - parAct = act->data; + parAct = act->data; - if(parAct->type==ACT_PARENT_SET) { + if(parAct->type==ACT_PARENT_SET) { - ysize= 48; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+95, yco-24, (width-100), 19, &(parAct->ob), "Set this object as parent"); + ysize= 48; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + uiDefIDPoinBut(block, test_obpoin_but, ID_OB, 1, "OB:", xco+95, yco-24, (width-100), 19, &(parAct->ob), "Set this object as parent"); uiBlockBeginAlign(block); uiDefButBitS(block, TOGN, ACT_PARENT_COMPOUND, B_REDR, "Compound", @@ -2848,21 +2851,21 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh 0.0, 0.0, 0, 0, "Make this object ghost while parented (only if not compound)"); uiBlockEndAlign(block); - } - else if(parAct->type==ACT_PARENT_REMOVE) { + } + else if(parAct->type==ACT_PARENT_REMOVE) { - ysize= 28; - glRects(xco, yco-ysize, xco+width, yco); - uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - } + ysize= 28; + glRects(xco, yco-ysize, xco+width, yco); + uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); + } str= "Parent %t|Set Parent %x0|Remove Parent %x1"; uiDefButI(block, MENU, B_REDR, str, xco+5, yco-24, parAct->type==1?(width-80):90, 19, &parAct->type, 0.0, 0.0, 0, 0, ""); - yco-= ysize; - break; + yco-= ysize; + break; case ACT_ARMATURE: - armAct = act->data; + armAct = act->data; if (ob->type == OB_ARMATURE) { str= "Constraint %t|Run armature %x0|Enable %x1|Disable %x2|Set target %x3|Set weight %x4"; @@ -2897,13 +2900,13 @@ static short draw_actuatorbuttons(Object *ob, bActuator *act, uiBlock *block, sh break; } } - } + } glRects(xco, yco-ysize, xco+width, yco); uiEmboss((float)xco, (float)yco-ysize, (float)xco+width, (float)yco, 1); - yco-= ysize; - break; + yco-= ysize; + break; - default: + default: ysize= 4; glRects(xco, yco-ysize, xco+width, yco); @@ -3177,6 +3180,1538 @@ static int is_sensor_linked(uiBlock *block, bSensor *sens) /* never used, see CVS 1.120 for the code */ /* static uiBlock *freecamera_menu(void) */ +/* Sensors code */ + +static void draw_sensor_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) +{ + uiLayout *box, *row, *subrow; + bSensor *sens= (bSensor *)ptr->data; + + box= uiLayoutBox(layout); + row= uiLayoutRow(box, 0); + + uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, sensor_name(sens->type), 0); + uiItemL(row, sens->name, 0); + } + + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "sensors_show_active_states") + && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); + uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + + if(RNA_boolean_get(ptr, "expanded")==0) { + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_sensor_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } + + uiItemO(row, "", ICON_X, "LOGIC_OT_sensor_remove"); +} + +static void draw_sensor_internal_header(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *box, *split, *row; + + box= uiLayoutBox(layout); + split = uiLayoutSplit(box, 0.45, 0); + + row= uiLayoutRow(split, 1); + uiItemR(row, ptr, "pulse_true_level", 0, "", ICON_DOTSUP); + uiItemR(row, ptr, "pulse_false_level", 0, "", ICON_DOTSDOWN); + uiItemR(row, ptr, "frequency", 0, "Freq", 0); + + row= uiLayoutRow(split, 1); + uiItemR(row, ptr, "level", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "tap", UI_ITEM_R_TOGGLE, NULL, 0); + + row= uiLayoutRow(split, 1); + uiItemR(row, ptr, "invert", UI_ITEM_R_TOGGLE, "Invert", 0); +} +/* sensors in alphabetical order */ + +static void draw_sensor_actuator(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + uiItemPointerR(layout, ptr, "actuator", &settings_ptr, "actuators", NULL, ICON_LOGIC); +} + +static void draw_sensor_armature(uiLayout *layout, PointerRNA *ptr) +{ + bSensor *sens = (bSensor*)ptr->data; + bArmatureSensor *as = (bArmatureSensor *) sens->data; + Object *ob = (Object *)ptr->id.data; + PointerRNA pose_ptr, pchan_ptr; + PropertyRNA *bones_prop= NULL; + uiLayout *row; + + if(ob->type != OB_ARMATURE){ + uiItemL(layout, "Sensor only available for armatures", 0); + return; + } + + if (ob->pose) { + RNA_pointer_create((ID *)ob, &RNA_Pose, ob->pose, &pose_ptr); + bones_prop = RNA_struct_find_property(&pose_ptr, "bones"); + } + + if (&pose_ptr.data) { + uiItemPointerR(layout, ptr, "bone", &pose_ptr, "bones", NULL, ICON_BONE_DATA); + + if (RNA_property_collection_lookup_string(&pose_ptr, bones_prop, as->posechannel, &pchan_ptr)) + uiItemPointerR(layout, ptr, "constraint", &pchan_ptr, "constraints", NULL, ICON_CONSTRAINT_BONE); + } + row = uiLayoutRow(layout, 1); + uiItemR(row, ptr, "test_type", 0, NULL, 0); + uiItemR(row, ptr, "value", 0, NULL, 0); +} + +static void draw_sensor_collision(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *row, *split; + PointerRNA main_ptr; + + RNA_main_pointer_create(CTX_data_main(C), &main_ptr); + + split = uiLayoutSplit(layout, 0.3, 0); + row = uiLayoutRow(split, 1); + uiItemR(row, ptr, "pulse", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "collision_type", UI_ITEM_R_TOGGLE, NULL, 0); + + switch (RNA_enum_get(ptr, "collision_type")) { + case SENS_COLLISION_PROPERTY: + uiItemR(split, ptr, "property", 0, NULL, 0); + break; + case SENS_COLLISION_MATERIAL: + uiItemPointerR(split, ptr, "material", &main_ptr, "materials", NULL, ICON_MATERIAL_DATA); + break; + } +} + +static void draw_sensor_delay(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + + row= uiLayoutRow(layout, 0); + + uiItemR(row, ptr, "delay", 0, NULL, 0); + uiItemR(row, ptr, "duration", 0, NULL, 0); + uiItemR(row, ptr, "repeat", 0, NULL, 0); +} + +static void draw_sensor_joystick(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *col, *row; + + uiItemR(layout, ptr, "joystick_index", 0, NULL, 0); + uiItemR(layout, ptr, "event_type", 0, NULL, 0); + + switch (RNA_enum_get(ptr, "event_type")) { + case SENS_JOY_BUTTON: + uiItemR(layout, ptr, "all_events", 0, NULL, 0); + + col = uiLayoutColumn(layout, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0); + uiItemR(col, ptr, "button_number", 0, NULL, 0); + break; + case SENS_JOY_AXIS: + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "axis_number", 0, NULL, 0); + uiItemR(row, ptr, "axis_threshold", 0, NULL, 0); + + uiItemR(layout, ptr, "all_events", 0, NULL, 0); + col = uiLayoutColumn(layout, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0); + uiItemR(col, ptr, "axis_direction", 0, NULL, 0); + break; + case SENS_JOY_HAT: + uiItemR(layout, ptr, "hat_number", 0, NULL, 0); + uiItemR(layout, ptr, "all_events", 0, NULL, 0); + + col = uiLayoutColumn(layout, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_events")==0); + uiItemR(col, ptr, "hat_direction", 0, NULL, 0); + break; + case SENS_JOY_AXIS_SINGLE: + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "single_axis_number", 0, NULL, 0); + uiItemR(row, ptr, "axis_threshold", 0, NULL, 0); + break; + } +} + +static void draw_sensor_keyboard(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + uiLayout *row, *col; + + row = uiLayoutRow(layout, 0); + uiItemL(row, "Key:", 0); + col = uiLayoutColumn(row, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_keys")==0); + uiItemR(col, ptr, "key", UI_ITEM_R_EVENT, "", 0); + col = uiLayoutColumn(row, 0); + uiItemR(col, ptr, "all_keys", UI_ITEM_R_TOGGLE, NULL, 0); + + col = uiLayoutColumn(layout, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "all_keys")==0); + row = uiLayoutRow(col, 0); + uiItemL(row, "First Modifier:", 0); + uiItemR(row, ptr, "modifier_key", UI_ITEM_R_EVENT, "", 0); + + row = uiLayoutRow(col, 0); + uiItemL(row, "Second Modifier:", 0); + uiItemR(row, ptr, "second_modifier_key", UI_ITEM_R_EVENT, "", 0); + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + uiItemPointerR(layout, ptr, "target", &settings_ptr, "properties", NULL, 0); + uiItemPointerR(layout, ptr, "log", &settings_ptr, "properties", NULL, 0); +} + +static void draw_sensor_message(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "subject", 0, NULL, 0); +} + +static void draw_sensor_mouse(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "mouse_event", 0, NULL, 0); +} + +static void draw_sensor_near(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + + uiItemR(layout, ptr, "property", 0, NULL, 0); + + row= uiLayoutRow(layout, 1); + uiItemR(row, ptr, "distance", 0, NULL, 0); + uiItemR(row, ptr, "reset_distance", 0, NULL, 0); +} + +static void draw_sensor_property(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + + uiLayout *row; + uiItemR(layout, ptr, "evaluation_type", 0, NULL, 0); + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + uiItemPointerR(layout, ptr, "property", &settings_ptr, "properties", NULL, 0); + + switch (RNA_enum_get(ptr, "evaluation_type")) { + case SENS_PROP_INTERVAL: + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "min_value", 0, NULL, 0); + uiItemR(row, ptr, "max_value", 0, NULL, 0); + break; + case SENS_PROP_EQUAL: + uiItemR(layout, ptr, "value", 0, NULL, 0); + break; + case SENS_PROP_NEQUAL: + uiItemR(layout, ptr, "value", 0, NULL, 0); + break; + case SENS_PROP_CHANGED: + break; + } +} + +static void draw_sensor_radar(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + + uiItemR(layout, ptr, "property", 0, NULL, 0); + uiItemR(layout, ptr, "axis", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "angle", 0, NULL, 0); + uiItemR(row, ptr, "distance", 0, NULL, 0); +} + +static void draw_sensor_random(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "seed", 0, NULL, 0); +} + +static void draw_sensor_ray(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *split, *row; + PointerRNA main_ptr; + + RNA_main_pointer_create(CTX_data_main(C), &main_ptr); + split= uiLayoutSplit(layout, 0.3, 0); + uiItemR(split, ptr, "ray_type", 0, "", 0); + switch (RNA_enum_get(ptr, "ray_type")) { + case SENS_RAY_PROPERTY: + uiItemR(split, ptr, "property", 0, "", 0); + break; + case SENS_RAY_MATERIAL: + uiItemPointerR(split, ptr, "material", &main_ptr, "materials", "", ICON_MATERIAL_DATA); + break; + } + + split= uiLayoutSplit(layout, 0.3, 0); + uiItemR(split, ptr, "axis", 0, "", 0); + row= uiLayoutRow(split, 0); + uiItemR(row, ptr, "range", 0, NULL, 0); + uiItemR(row, ptr, "x_ray_mode", UI_ITEM_R_TOGGLE, NULL, 0); +} + +static void draw_sensor_touch(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "material", 0, NULL, 0); +} + +void draw_brick_sensor(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *box; + + if (!RNA_boolean_get(ptr, "expanded")) + return; + + draw_sensor_internal_header(layout, ptr); + + box = uiLayoutBox(layout); + + switch (RNA_enum_get(ptr, "type")) { + + case SENS_ACTUATOR: + draw_sensor_actuator(box, ptr); + break; + case SENS_ALWAYS: + break; + case SENS_ARMATURE: + draw_sensor_armature(box, ptr); + break; + case SENS_COLLISION: + draw_sensor_collision(box, ptr, C); + break; + case SENS_DELAY: + draw_sensor_delay(box, ptr); + break; + case SENS_JOYSTICK: + draw_sensor_joystick(box, ptr); + break; + case SENS_KEYBOARD: + draw_sensor_keyboard(box, ptr); + break; + case SENS_MESSAGE: + draw_sensor_message(box, ptr); + break; + case SENS_MOUSE: + draw_sensor_mouse(box, ptr); + break; + case SENS_NEAR: + draw_sensor_near(box, ptr); + break; + case SENS_PROPERTY: + draw_sensor_property(box, ptr); + break; + case SENS_RADAR: + draw_sensor_radar(box, ptr); + break; + case SENS_RANDOM: + draw_sensor_random(box, ptr); + break; + case SENS_RAY: + draw_sensor_ray(box, ptr, C); + break; + case SENS_TOUCH: + draw_sensor_touch(box, ptr); + break; + } +} + +/* Controller code */ +static void draw_controller_header(uiLayout *layout, PointerRNA *ptr, int xco, int width, int yco) +{ + uiLayout *box, *row, *subrow; + bController *cont= (bController *)ptr->data; + + char state[3]; + sprintf(state, "%d", RNA_int_get(ptr, "state")); + + box= uiLayoutBox(layout); + row= uiLayoutRow(box, 0); + + uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + /* XXX provisory for Blender 2.50Beta */ + uiDefBlockBut(uiLayoutGetBlock(layout), controller_state_mask_menu, cont, state, (short)(xco+width-44), yco, 22+22, UI_UNIT_Y, "Set controller state index (from 1 to 30)"); + } else { + uiItemL(row, controller_name(cont->type), 0); + uiItemL(row, cont->name, 0); + uiItemL(row, state, 0); + } + + uiItemR(row, ptr, "priority", 0, "", 0); + + if(RNA_boolean_get(ptr, "expanded")==0) { + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_controller_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } + uiItemO(row, "", ICON_X, "LOGIC_OT_controller_remove"); +} + +static void draw_controller_expression(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "expression", 0, "", 0); +} + +static void draw_controller_python(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *split, *subsplit; + + split = uiLayoutSplit(layout, 0.3, 1); + uiItemR(split, ptr, "mode", 0, "", 0); + if (RNA_enum_get(ptr, "mode") == CONT_PY_SCRIPT) { + uiItemR(split, ptr, "text", 0, "", 0); + } + else { + subsplit = uiLayoutSplit(split, 0.8, 0); + uiItemR(subsplit, ptr, "module", 0, "", 0); + uiItemR(subsplit, ptr, "debug", UI_ITEM_R_TOGGLE, NULL, 0); + } +} + +static void draw_controller_state(uiLayout *layout, PointerRNA *ptr) +{ + +} + +void draw_brick_controller(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *box; + + if (!RNA_boolean_get(ptr, "expanded")) + return; + + box = uiLayoutBox(layout); + + draw_controller_state(box, ptr); + + switch (RNA_enum_get(ptr, "type")) { + case CONT_LOGIC_AND: + break; + case CONT_LOGIC_OR: + break; + case CONT_EXPRESSION: + draw_controller_expression(box, ptr); + break; + case CONT_PYTHON: + draw_controller_python(box, ptr); + break; + case CONT_LOGIC_NAND: + break; + case CONT_LOGIC_NOR: + break; + case CONT_LOGIC_XOR: + break; + case CONT_LOGIC_XNOR: + break; + } +} + +/* Actuator code */ +static void draw_actuator_header(uiLayout *layout, PointerRNA *ptr, PointerRNA *logic_ptr) +{ + uiLayout *box, *row, *subrow; + bActuator *act= (bActuator *)ptr->data; + + box= uiLayoutBox(layout); + row= uiLayoutRow(box, 0); + + uiItemR(row, ptr, "expanded", UI_ITEM_R_NO_BG, "", 0); + if(RNA_boolean_get(ptr, "expanded")) { + uiItemR(row, ptr, "type", 0, "", 0); + uiItemR(row, ptr, "name", 0, "", 0); + } else { + uiItemL(row, actuator_name(act->type), 0); + uiItemL(row, act->name, 0); + } + + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, ((RNA_boolean_get(logic_ptr, "actuators_show_active_states") + && RNA_boolean_get(ptr, "expanded")) || RNA_boolean_get(ptr, "pinned"))); + uiItemR(subrow, ptr, "pinned", UI_ITEM_R_NO_BG, "", 0); + + if(RNA_boolean_get(ptr, "expanded")==0) { + subrow= uiLayoutRow(row, 1); + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_UP, "direction", 1); // up + uiItemEnumO(subrow, "LOGIC_OT_actuator_move", "", ICON_TRIA_DOWN, "direction", 2); // down + } + uiItemO(row, "", ICON_X, "LOGIC_OT_actuator_remove"); +} + +static void draw_actuator_action(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + uiLayout *row; + + if(ob->type != OB_ARMATURE){ + uiItemL(layout, "Actuator only available for armatures", 0); + return; + } + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "mode", 0, "", 0); + uiItemR(row, ptr, "action", 0, NULL, 0); + uiItemR(row, ptr, "continue_last_frame", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + if((RNA_enum_get(ptr, "mode") == ACT_ACTION_FROM_PROP)) + uiItemPointerR(row, ptr, "property", &settings_ptr, "properties", NULL, 0); + + else { + uiItemR(row, ptr, "frame_start", 0, NULL, 0); + uiItemR(row, ptr, "frame_end", 0, NULL, 0); + } + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "blendin", 0, NULL, 0); + uiItemR(row, ptr, "priority", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + uiItemPointerR(layout, ptr, "frame_property", &settings_ptr, "properties", NULL, 0); + +#ifdef __NLA_ACTION_BY_MOTION_ACTUATOR + uiItemR(row, "stride_length", 0, NULL, 0); +#endif +} + +static void draw_actuator_armature(uiLayout *layout, PointerRNA *ptr) +{ + bActuator *act = (bActuator*)ptr->data; + bArmatureActuator *aa = (bArmatureActuator *) act->data; + Object *ob = (Object *)ptr->id.data; + PointerRNA pose_ptr, pchan_ptr; + PropertyRNA *bones_prop; + + if(ob->type != OB_ARMATURE){ + uiItemL(layout, "Actuator only available for armatures", 0); + return; + } + + if (ob->pose) { + RNA_pointer_create((ID *)ob, &RNA_Pose, ob->pose, &pose_ptr); + bones_prop = RNA_struct_find_property(&pose_ptr, "bones"); + } + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + + switch (RNA_enum_get(ptr, "mode")) + { + case ACT_ARM_RUN: + break; + case ACT_ARM_ENABLE: + case ACT_ARM_DISABLE: + if (&pose_ptr.data) { + uiItemPointerR(layout, ptr, "bone", &pose_ptr, "bones", NULL, ICON_BONE_DATA); + + if (RNA_property_collection_lookup_string(&pose_ptr, bones_prop, aa->posechannel, &pchan_ptr)) + uiItemPointerR(layout, ptr, "constraint", &pchan_ptr, "constraints", NULL, ICON_CONSTRAINT_BONE); + } + break; + case ACT_ARM_SETTARGET: + if (&pose_ptr.data) { + uiItemPointerR(layout, ptr, "bone", &pose_ptr, "bones", NULL, ICON_BONE_DATA); + + if (RNA_property_collection_lookup_string(&pose_ptr, bones_prop, aa->posechannel, &pchan_ptr)) + uiItemPointerR(layout, ptr, "constraint", &pchan_ptr, "constraints", NULL, ICON_CONSTRAINT_BONE); + } + + uiItemR(layout, ptr, "target", 0, NULL, 0); + uiItemR(layout, ptr, "secondary_target", 0, NULL, 0); + break; + case ACT_ARM_SETWEIGHT: + if (&pose_ptr.data) { + uiItemPointerR(layout, ptr, "bone", &pose_ptr, "bones", NULL, ICON_BONE_DATA); + + if (RNA_property_collection_lookup_string(&pose_ptr, bones_prop, aa->posechannel, &pchan_ptr)) + uiItemPointerR(layout, ptr, "constraint", &pchan_ptr, "constraints", NULL, ICON_CONSTRAINT_BONE); + } + + uiItemR(layout, ptr, "weight", 0, NULL, 0); + break; + } +} + +static void draw_actuator_camera(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + uiItemR(layout, ptr, "object", 0, NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "height", 0, NULL, 0); + uiItemR(row, ptr, "axis", 0, NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "min", 0, NULL, 0); + uiItemR(row, ptr, "max", 0, NULL, 0); +} + +static void draw_actuator_constraint(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *row, *col, *subcol, *split; + PointerRNA main_ptr; + + RNA_main_pointer_create(CTX_data_main(C), &main_ptr); + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + switch (RNA_enum_get(ptr, "mode")) + { + case ACT_CONST_TYPE_LOC: + uiItemR(layout, ptr, "limit", 0, NULL, 0); + + row = uiLayoutRow(layout, 1); + uiItemR(row, ptr, "limit_min", 0, NULL, 0); + uiItemR(row, ptr, "limit_max", 0, NULL, 0); + + uiItemR(layout, ptr, "damping", UI_ITEM_R_SLIDER, NULL, 0); + break; + + case ACT_CONST_TYPE_DIST: + split = uiLayoutSplit(layout, 0.8, 0); + uiItemR(split, ptr, "direction", 0, NULL, 0); + row = uiLayoutRow(split, 1); + uiItemR(row, ptr, "local", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "normal", UI_ITEM_R_TOGGLE, NULL, 0); + + row = uiLayoutRow(layout, 0); + col = uiLayoutColumn(row, 0); + uiItemL(col, "Range:", 0); + uiItemR(col, ptr, "range", 0, "", 0); + + col = uiLayoutColumn(row, 1); + uiItemR(col, ptr, "force_distance", UI_ITEM_R_TOGGLE, NULL, 0); + subcol = uiLayoutColumn(col, 0); + uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "force_distance")==1); + uiItemR(subcol, ptr, "distance", 0, "", 0); + + uiItemR(layout, ptr, "damping", UI_ITEM_R_SLIDER , NULL, 0); + + split = uiLayoutSplit(layout, 0.15, 0); + uiItemR(split, ptr, "detect_material", UI_ITEM_R_TOGGLE, NULL, 0); + if (RNA_boolean_get(ptr, "detect_material")) + uiItemPointerR(split, ptr, "material", &main_ptr, "materials", NULL, ICON_MATERIAL_DATA); + else + uiItemR(split, ptr, "property", 0, NULL, 0); + + split = uiLayoutSplit(layout, 0.15, 0); + uiItemR(split, ptr, "persistent", UI_ITEM_R_TOGGLE, NULL, 0); + + row = uiLayoutRow(split, 1); + uiItemR(row, ptr, "time", 0, NULL, 0); + uiItemR(row, ptr, "damping_rotation", UI_ITEM_R_SLIDER, NULL, 0); + break; + + case ACT_CONST_TYPE_ORI: + uiItemR(layout, ptr, "direction_axis", 0, NULL, 0); + + row=uiLayoutRow(layout, 1); + uiItemR(row, ptr, "damping", UI_ITEM_R_SLIDER , NULL, 0); + uiItemR(row, ptr, "time", 0, NULL, 0); + + row=uiLayoutRow(layout, 0); + uiItemR(row, ptr, "max_rotation", 0, NULL, 0); + + row=uiLayoutRow(layout, 1); + uiItemR(row, ptr, "min_angle", 0, NULL, 0); + uiItemR(row, ptr, "max_angle", 0, NULL, 0); + break; + + case ACT_CONST_TYPE_FH: + split=uiLayoutSplit(layout, 0.75, 0); + row= uiLayoutRow(split, 0); + uiItemR(row, ptr, "fh_damping", UI_ITEM_R_SLIDER , NULL, 0); + + uiItemR(row, ptr, "fh_height", 0, NULL, 0); + uiItemR(split, ptr, "fh_paralel_axis", UI_ITEM_R_TOGGLE , NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "direction_axis", 0, NULL, 0); + split = uiLayoutSplit(row, 0.9, 0); + uiItemR(split, ptr, "spring", 0, NULL, 0); + uiItemR(split, ptr, "fh_normal", UI_ITEM_R_TOGGLE , NULL, 0); + + split = uiLayoutSplit(layout, 0.15, 0); + uiItemR(split, ptr, "detect_material", UI_ITEM_R_TOGGLE, NULL, 0); + if (RNA_boolean_get(ptr, "detect_material")) + uiItemPointerR(split, ptr, "material", &main_ptr, "materials", NULL, ICON_MATERIAL_DATA); + else + uiItemR(split, ptr, "property", 0, NULL, 0); + + split = uiLayoutSplit(layout, 0.15, 0); + uiItemR(split, ptr, "persistent", UI_ITEM_R_TOGGLE, NULL, 0); + + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "time", 0, NULL, 0); + uiItemR(row, ptr, "damping_rotation", UI_ITEM_R_SLIDER, NULL, 0); + break; + } +} + +static void draw_actuator_edit_object(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + uiLayout *row, *split, *subsplit; + uiItemR(layout, ptr, "mode", 0, NULL, 0); + + switch (RNA_enum_get(ptr, "mode")) + { + case ACT_EDOB_ADD_OBJECT: + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "object", 0, NULL, 0); + uiItemR(row, ptr, "time", 0, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "linear_velocity", 0, NULL, 0); + uiItemR(split, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "angular_velocity", 0, NULL, 0); + uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + break; + case ACT_EDOB_END_OBJECT: + break; + case ACT_EDOB_REPLACE_MESH: + if(ob->type != OB_MESH) { + uiItemL(layout, "Mode only available for mesh objects", 0); + break; + } + split = uiLayoutSplit(layout, 0.6, 0); + uiItemR(split, ptr, "mesh", 0, NULL, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "replace_display_mesh", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "replace_physics_mesh", UI_ITEM_R_TOGGLE, NULL, 0); + break; + case ACT_EDOB_TRACK_TO: + split = uiLayoutSplit(layout, 0.5, 0); + uiItemR(split, ptr, "track_object", 0, NULL, 0); + subsplit = uiLayoutSplit(split, 0.7, 0); + uiItemR(subsplit, ptr, "time", 0, NULL, 0); + uiItemR(subsplit, ptr, "enable_3d_tracking", UI_ITEM_R_TOGGLE, NULL, 0); + break; + case ACT_EDOB_DYNAMICS: + if(ob->type != OB_MESH) { + uiItemL(layout, "Mode only available for mesh objects", 0); + break; + } + uiItemR(layout, ptr, "dynamic_operation", 0, NULL, 0); + if (RNA_enum_get(ptr, "dynamic_operation") == ACT_EDOB_SET_MASS) + uiItemR(layout, ptr, "mass", 0, NULL, 0); + break; + } +} + +static void draw_actuator_filter_2d(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row, *split; + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + switch (RNA_enum_get(ptr, "mode")) + { + case ACT_2DFILTER_CUSTOMFILTER: + uiItemR(layout, ptr, "filter_pass", 0, NULL, 0); + uiItemR(layout, ptr, "glsl_shader", 0, NULL, 0); + break; + case ACT_2DFILTER_MOTIONBLUR: + split=uiLayoutSplit(layout, 0.75, 1); + row= uiLayoutRow(split, 0); + uiLayoutSetActive(row, RNA_boolean_get(ptr, "enable_motion_blur")==1); + uiItemR(row, ptr, "motion_blur_value", 0, NULL, 0); + uiItemR(split, ptr, "enable_motion_blur", UI_ITEM_R_TOGGLE, NULL, 0); + break; + default: // all other 2D Filters + uiItemR(layout, ptr, "filter_pass", 0, NULL, 0); + break; + } +} + +static void draw_actuator_game(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "mode", 0, NULL, 0); + if (RNA_enum_get(ptr, "mode") == ACT_GAME_LOAD) + uiItemR(layout, ptr, "filename", 0, NULL, 0); +} + +static void draw_actuator_ipo(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob; + PointerRNA settings_ptr; + uiLayout *row, *subrow, *col; + + ob = (Object *)ptr->id.data; + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "play_type", 0, "", 0); + subrow= uiLayoutRow(row, 1); + uiItemR(subrow, ptr, "force", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(subrow, ptr, "add", UI_ITEM_R_TOGGLE, NULL, 0); + + col = uiLayoutColumn(subrow, 0); + uiLayoutSetActive(col, (RNA_boolean_get(ptr, "add") || RNA_boolean_get(ptr, "force"))); + uiItemR(col, ptr, "local", UI_ITEM_R_TOGGLE, NULL, 0); + + row= uiLayoutRow(layout, 0); + if((RNA_enum_get(ptr, "play_type") == ACT_IPO_FROM_PROP)) + uiItemPointerR(row, ptr, "property", &settings_ptr, "properties", NULL, 0); + + else { + uiItemR(row, ptr, "frame_start", 0, NULL, 0); + uiItemR(row, ptr, "frame_end", 0, NULL, 0); + } + uiItemR(row, ptr, "child", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + uiItemPointerR(row, ptr, "frame_property", &settings_ptr, "properties", NULL, 0); +} + +static void draw_actuator_message(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + Object *ob; + PointerRNA main_ptr, settings_ptr; + uiLayout *row; + + RNA_main_pointer_create(CTX_data_main(C), &main_ptr); + + ob = (Object *)ptr->id.data; + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + uiItemPointerR(layout, ptr, "to_property", &main_ptr, "objects", NULL, ICON_OBJECT_DATA); + uiItemR(layout, ptr, "subject", 0, NULL, 0); + + row= uiLayoutRow(layout, 1); + uiItemR(row, ptr, "body_type", 0, NULL, 0); + + if(RNA_enum_get(ptr, "body_type") == ACT_MESG_MESG) + uiItemR(row, ptr, "body_message", 0, "", 0); + else // mode == ACT_MESG_PROP + uiItemPointerR(row, ptr, "body_property", &settings_ptr, "properties", "", 0); +} + +static void draw_actuator_motion(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob; + PointerRNA settings_ptr; + uiLayout *split, *row, *col, *subcol; + int physics_type; + + ob = (Object *)ptr->id.data; + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + physics_type = RNA_enum_get(&settings_ptr, "physics_type"); + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + + switch (RNA_enum_get(ptr, "mode")) { + case ACT_OBJECT_NORMAL: + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "loc", 0, NULL, 0); + uiItemR(split, ptr, "local_location", UI_ITEM_R_TOGGLE, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "rot", 0, NULL, 0); + uiItemR(split, ptr, "local_rotation", UI_ITEM_R_TOGGLE, NULL, 0); + + if (ELEM3(physics_type, OB_BODY_TYPE_DYNAMIC, OB_BODY_TYPE_RIGID, OB_BODY_TYPE_SOFT)) { + uiItemL(layout, "Dynamic Object Settings:", 0); + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "force", 0, NULL, 0); + uiItemR(split, ptr, "local_force", UI_ITEM_R_TOGGLE, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "torque", 0, NULL, 0); + uiItemR(split, ptr, "local_torque", UI_ITEM_R_TOGGLE, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "linear_velocity", 0, NULL, 0); + row = uiLayoutRow(split, 1); + uiItemR(row, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(row, ptr, "add_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "angular_velocity", 0, NULL, 0); + uiItemR(split, ptr, "local_angular_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + + uiItemR(layout, ptr, "damping", 0, NULL, 0); + } + break; + case ACT_OBJECT_SERVO: + uiItemR(layout, ptr, "reference_object", 0, NULL, 0); + + split = uiLayoutSplit(layout, 0.9, 0); + row = uiLayoutRow(split, 0); + uiItemR(row, ptr, "linear_velocity", 0, NULL, 0); + uiItemR(split, ptr, "local_linear_velocity", UI_ITEM_R_TOGGLE, NULL, 0); + + row = uiLayoutRow(layout, 0); + col = uiLayoutColumn(row, 0); + uiItemR(col, ptr, "servo_limit_x", UI_ITEM_R_TOGGLE, NULL, 0); + subcol = uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_x")==1); + uiItemR(subcol, ptr, "force_max_x", 0, NULL, 0); + uiItemR(subcol, ptr, "force_min_x", 0, NULL, 0); + + col = uiLayoutColumn(row, 0); + uiItemR(col, ptr, "servo_limit_y", UI_ITEM_R_TOGGLE, NULL, 0); + subcol = uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_y")==1); + uiItemR(subcol, ptr, "force_max_y", 0, NULL, 0); + uiItemR(subcol, ptr, "force_min_y", 0, NULL, 0); + + col = uiLayoutColumn(row, 0); + uiItemR(col, ptr, "servo_limit_z", UI_ITEM_R_TOGGLE, NULL, 0); + subcol = uiLayoutColumn(col, 1); + uiLayoutSetActive(subcol, RNA_boolean_get(ptr, "servo_limit_z")==1); + uiItemR(subcol, ptr, "force_max_z", 0, NULL, 0); + uiItemR(subcol, ptr, "force_min_z", 0, NULL, 0); + + //XXXACTUATOR missing labels from original 2.49 ui (e.g. Servo, Min, Max, Fast) + //Layout designers willing to help on that, please compare with 2.49 ui + // (since the old code is going to be deleted ... soon) + + col = uiLayoutColumn(layout, 1); + uiItemR(col, ptr, "proportional_coefficient", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "integral_coefficient", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "derivate_coefficient", UI_ITEM_R_SLIDER, NULL, 0); + break; + } +} + +static void draw_actuator_parent(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + uiItemR(layout, ptr, "object", 0, NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "compound", 0, NULL, 0); + uiItemR(row, ptr, "ghost", 0, NULL, 0); +} + +static void draw_actuator_property(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + bActuator *act = (bActuator *)ptr->data; + bPropertyActuator *pa = (bPropertyActuator *) act->data; + Object *ob_from= pa->ob; + PointerRNA settings_ptr, obj_settings_ptr; + + uiLayout *row, *subrow; + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + uiItemR(layout, ptr, "mode", 0, NULL, 0); + uiItemPointerR(layout, ptr, "property", &settings_ptr, "properties", NULL, 0); + + switch(RNA_enum_get(ptr, "mode")) + { + case ACT_PROP_TOGGLE: + break; + case ACT_PROP_ADD: + uiItemR(layout, ptr, "value", 0, NULL, 0); + break; + case ACT_PROP_ASSIGN: + uiItemR(layout, ptr, "value", 0, NULL, 0); + break; + case ACT_PROP_COPY: + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "object", 0, NULL, 0); + if(ob_from){ + RNA_pointer_create((ID *)ob_from, &RNA_GameObjectSettings, ob_from, &obj_settings_ptr); + uiItemPointerR(row, ptr, "object_property", &obj_settings_ptr, "properties", NULL, 0); + }else + { + subrow= uiLayoutRow(row, 0); + uiLayoutSetActive(subrow, 0); + uiItemR(subrow, ptr, "object_property", 0, NULL, 0); + } + break; + } +} + +static void draw_actuator_random(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob; + PointerRNA settings_ptr; + uiLayout *row; + + ob = (Object *)ptr->id.data; + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + row = uiLayoutRow(layout, 0); + + uiItemR(row, ptr, "seed", 0, NULL, 0); + uiItemR(row, ptr, "distribution", 0, NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemPointerR(row, ptr, "property", &settings_ptr, "properties", NULL, 0); + + row = uiLayoutRow(layout, 0); + + switch (RNA_enum_get(ptr, "distribution")){ + case ACT_RANDOM_BOOL_CONST: + uiItemR(row, ptr, "always_true", UI_ITEM_R_TOGGLE, NULL, 0); + break; + + case ACT_RANDOM_BOOL_UNIFORM: + uiItemL(row, "Choose between true and false, 50% chance each", 0); + break; + + case ACT_RANDOM_BOOL_BERNOUILLI: + uiItemR(row, ptr, "chance", 0, NULL, 0); + break; + + case ACT_RANDOM_INT_CONST: + uiItemR(row, ptr, "int_value", 0, NULL, 0); + break; + + case ACT_RANDOM_INT_UNIFORM: + uiItemR(row, ptr, "int_min", 0, NULL, 0); + uiItemR(row, ptr, "int_max", 0, NULL, 0); + break; + + case ACT_RANDOM_INT_POISSON: + uiItemR(row, ptr, "int_mean", 0, NULL, 0); + break; + + case ACT_RANDOM_FLOAT_CONST: + uiItemR(row, ptr, "float_value", 0, NULL, 0); + break; + + case ACT_RANDOM_FLOAT_UNIFORM: + uiItemR(row, ptr, "float_min", 0, NULL, 0); + uiItemR(row, ptr, "float_max", 0, NULL, 0); + break; + + case ACT_RANDOM_FLOAT_NORMAL: + uiItemR(row, ptr, "float_mean", 0, NULL, 0); + uiItemR(row, ptr, "standard_derivation", 0, NULL, 0); + break; + + case ACT_RANDOM_FLOAT_NEGATIVE_EXPONENTIAL: + uiItemR(row, ptr, "half_life_time", 0, NULL, 0); + break; + } +} + +static void draw_actuator_scene(uiLayout *layout, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "mode", 0, NULL, 0); + + switch (RNA_enum_get(ptr, "mode")) { + case ACT_SCENE_CAMERA: + uiItemR(layout, ptr, "camera", 0, NULL, 0); + break; + case ACT_SCENE_RESTART: + break; + default: // ACT_SCENE_SET|ACT_SCENE_ADD_FRONT|ACT_SCENE_ADD_BACK|ACT_SCENE_REMOVE|ACT_SCENE_SUSPEND|ACT_SCENE_RESUME + uiItemR(layout, ptr, "scene", 0, NULL, 0); + break; + } +} + +static void draw_actuator_shape_action(uiLayout *layout, PointerRNA *ptr) +{ + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + uiLayout *row; + + if(ob->type != OB_MESH){ + uiItemL(layout, "Actuator only available for mesh objects", 0); + return; + } + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "mode", 0, "", 0); + uiItemR(row, ptr, "action", 0, NULL, 0); + uiItemR(row, ptr, "continue_last_frame", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + if((RNA_enum_get(ptr, "mode") == ACT_ACTION_FROM_PROP)) + uiItemPointerR(row, ptr, "property", &settings_ptr, "properties", NULL, 0); + + else { + uiItemR(row, ptr, "frame_start", 0, NULL, 0); + uiItemR(row, ptr, "frame_end", 0, NULL, 0); + } + + row= uiLayoutRow(layout, 0); + uiItemR(row, ptr, "blendin", 0, NULL, 0); + uiItemR(row, ptr, "priority", 0, NULL, 0); + + row= uiLayoutRow(layout, 0); + uiItemPointerR(row, ptr, "frame_property", &settings_ptr, "properties", NULL, 0); + +#ifdef __NLA_ACTION_BY_MOTION_ACTUATOR + uiItemR(row, "stride_length", 0, NULL, 0); +#endif +} + +static void draw_actuator_sound(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *row, *col; + + uiTemplateID(layout, C, ptr, "sound", NULL, "SOUND_OT_open", NULL, NULL); + if (!RNA_pointer_get(ptr, "sound").data) + { + uiItemL(layout, "Select a sound from the list or load a new one", 0); + return; + } + uiItemR(layout, ptr, "mode", 0, NULL, 0); + + row = uiLayoutRow(layout, 0); + uiItemR(row, ptr, "volume", 0, NULL, 0); + uiItemR(row, ptr, "pitch", 0, NULL, 0); + + uiItemR(layout, ptr, "enable_sound_3d", 0, NULL, 0); + + col = uiLayoutColumn(layout, 0); + uiLayoutSetActive(col, RNA_boolean_get(ptr, "enable_sound_3d")==1); + + row = uiLayoutRow(col, 0); + uiItemR(row, ptr, "minimum_gain_3d", 0, NULL, 0); + uiItemR(row, ptr, "maximum_gain_3d", 0, NULL, 0); + + row = uiLayoutRow(col, 0); + uiItemR(row, ptr, "reference_distance_3d", 0, NULL, 0); + uiItemR(row, ptr, "max_distance_3d", 0, NULL, 0); + + row = uiLayoutRow(col, 0); + uiItemR(row, ptr, "rolloff_factor_3d", 0, NULL, 0); + uiItemR(row, ptr, "cone_outer_gain_3d", 0, NULL, 0); + + row = uiLayoutRow(col, 0); + uiItemR(row, ptr, "cone_outer_angle_3d", 0, NULL, 0); + uiItemR(row, ptr, "cone_inner_angle_3d", 0, NULL, 0); +} + +static void draw_actuator_state(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *split; + Object *ob = (Object *)ptr->id.data; + PointerRNA settings_ptr; + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + split = uiLayoutSplit(layout, 0.35, 0); + uiItemR(split, ptr, "operation", 0, NULL, 0); + + uiTemplateLayers(split, ptr, "state", &settings_ptr, "used_state", 0); +} + +static void draw_actuator_visibility(uiLayout *layout, PointerRNA *ptr) +{ + uiLayout *row; + row = uiLayoutRow(layout, 0); + + uiItemR(row, ptr, "visible", 0, NULL, 0); + uiItemR(row, ptr, "occlusion", 0, NULL, 0); + uiItemR(row, ptr, "children", 0, NULL, 0); +} + +void draw_brick_actuator(uiLayout *layout, PointerRNA *ptr, bContext *C) +{ + uiLayout *box; + + if (!RNA_boolean_get(ptr, "expanded")) + return; + + box = uiLayoutBox(layout); + + switch (RNA_enum_get(ptr, "type")) { + case ACT_ACTION: + draw_actuator_action(box, ptr); + break; + case ACT_ARMATURE: + draw_actuator_armature(box, ptr); + break; + case ACT_CAMERA: + draw_actuator_camera(box, ptr); + break; + case ACT_CONSTRAINT: + draw_actuator_constraint(box, ptr, C); + break; + case ACT_EDIT_OBJECT: + draw_actuator_edit_object(box, ptr); + break; + case ACT_2DFILTER: + draw_actuator_filter_2d(box, ptr); + break; + case ACT_GAME: + draw_actuator_game(box, ptr); + break; + case ACT_IPO: + draw_actuator_ipo(box, ptr); + break; + case ACT_MESSAGE: + draw_actuator_message(box, ptr, C); + break; + case ACT_OBJECT: + draw_actuator_motion(box, ptr); + break; + case ACT_PARENT: + draw_actuator_parent(box, ptr); + break; + case ACT_PROPERTY: + draw_actuator_property(box, ptr); + break; + case ACT_RANDOM: + draw_actuator_random(box, ptr); + break; + case ACT_SCENE: + draw_actuator_scene(box, ptr); + break; + case ACT_SHAPEACTION: + draw_actuator_shape_action(box, ptr); + break; + case ACT_SOUND: + draw_actuator_sound(box, ptr, C); + break; + case ACT_STATE: + draw_actuator_state(box, ptr); + break; + case ACT_VISIBILITY: + draw_actuator_visibility(box, ptr); + break; + } +} + +static void logic_buttons_new(bContext *C, ARegion *ar) +{ + SpaceLogic *slogic= CTX_wm_space_logic(C); + Object *ob= CTX_data_active_object(C); + Object *act_ob= ob; + ID **idar; + + PointerRNA logic_ptr, settings_ptr; + + uiLayout *layout, *row, *box; + uiBlock *block; + uiBut *but; + char name[32]; + short a, count; + int xco, yco, width; + + if(ob==NULL) return; + + RNA_pointer_create(NULL, &RNA_SpaceLogicEditor, slogic, &logic_ptr); + idar= get_selected_and_linked_obs(C, &count, slogic->scaflag); + + sprintf(name, "buttonswin %p", ar); + block= uiBeginBlock(C, ar, name, UI_EMBOSS); + uiBlockSetHandleFunc(block, do_logic_buts, NULL); + + /* loop over all objects and set visible/linked flags for the logic bricks */ + for(a=0; a<count; a++) { + bActuator *act; + bSensor *sens; + bController *cont; + int iact; + short flag; + + ob= (Object *)idar[a]; + + /* clean ACT_LINKED and ACT_VISIBLE of all potentially visible actuators so that we can determine which is actually linked/visible */ + act = ob->actuators.first; + while(act) { + act->flag &= ~(ACT_LINKED|ACT_VISIBLE); + act = act->next; + } + /* same for sensors */ + sens= ob->sensors.first; + while(sens) { + sens->flag &= ~(SENS_VISIBLE); + sens = sens->next; + } + + /* mark the linked and visible actuators */ + cont= ob->controllers.first; + while(cont) { + flag = ACT_LINKED; + + /* this controller is visible, mark all its actuator */ + if ((ob->scaflag & OB_ALLSTATE) || (ob->state & cont->state_mask)) + flag |= ACT_VISIBLE; + + for (iact=0; iact<cont->totlinks; iact++) { + act = cont->links[iact]; + if (act) + act->flag |= flag; + } + cont = cont->next; + } + } + + /* ****************** Controllers ****************** */ + + xco= 420; yco= 170; width= 300; + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); + row = uiLayoutRow(layout, 1); + + uiDefBlockBut(block, controller_menu, NULL, "Controllers", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + + uiItemR(row, &logic_ptr, "controllers_show_selected_objects", 0, "Sel", 0); + uiItemR(row, &logic_ptr, "controllers_show_active_objects", 0, "Act", 0); + uiItemR(row, &logic_ptr, "controllers_show_linked_controller", 0, "Link", 0); + + for(a=0; a<count; a++) { + bController *cont; + PointerRNA ptr; + uiLayout *split, *subsplit, *col; + + + ob= (Object *)idar[a]; + + /* only draw the controller common header if "visible" */ + if( (ob->scavisflag & OB_VIS_CONT) == 0) continue; + + /* Drawing the Controller Header common to all Selected Objects */ + + RNA_pointer_create((ID *)ob, &RNA_GameObjectSettings, ob, &settings_ptr); + + split= uiLayoutSplit(layout, 0.05, 0); + uiItemR(split, &settings_ptr, "show_state_panel", UI_ITEM_R_NO_BG, "", ICON_DISCLOSURE_TRI_RIGHT); + + row = uiLayoutRow(split, 1); + uiDefButBitS(block, TOG, OB_SHOWCONT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide controllers"); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_controller_add", "type", "Add Controller", 0); + + if (RNA_boolean_get(&settings_ptr, "show_state_panel")) { + + box= uiLayoutBox(layout); + split= uiLayoutSplit(box, 0.2, 0); + + col= uiLayoutColumn(split, 0); + uiItemL(col, "Visible", 0); + uiItemL(col, "Initial", 0); + + subsplit= uiLayoutSplit(split, 0.85, 0); + col= uiLayoutColumn(subsplit, 0); + row= uiLayoutRow(col, 0); + uiLayoutSetActive(row, RNA_boolean_get(&settings_ptr, "all_states")==0); + uiTemplateLayers(row, &settings_ptr, "visible_state", &settings_ptr, "used_state", 0); + row= uiLayoutRow(col, 0); + uiTemplateLayers(row, &settings_ptr, "initial_state", &settings_ptr, "used_state", 0); + + col= uiLayoutColumn(subsplit, 0); + uiItemR(col, &settings_ptr, "all_states", UI_ITEM_R_TOGGLE, NULL, 0); + uiItemR(col, &settings_ptr, "debug_state", 0, "", 0); + } + + /* End of Drawing the Controller Header common to all Selected Objects */ + + if ((ob->scaflag & OB_SHOWCONT) == 0) continue; + + + uiItemS(layout); + + for(cont= ob->controllers.first; cont; cont=cont->next) { + RNA_pointer_create((ID *)ob, &RNA_Controller, cont, &ptr); + + if (!(ob->scaflag & OB_ALLSTATE) && !(ob->state & cont->state_mask)) + continue; + + /* use two nested splits to align inlinks/links properly */ + split = uiLayoutSplit(layout, 0.05, 0); + + /* put inlink button to the left */ + col = uiLayoutColumn(split, 0); + uiLayoutSetAlignment(col, UI_LAYOUT_ALIGN_LEFT); + uiDefIconBut(block, INLINK, 0, ICON_INLINK, 0, 0, UI_UNIT_X, UI_UNIT_Y, cont, LINK_CONTROLLER, 0, 0, 0, ""); + + //col = uiLayoutColumn(split, 1); + /* nested split for middle and right columns */ + subsplit = uiLayoutSplit(split, 0.95, 0); + + col = uiLayoutColumn(subsplit, 1); + uiLayoutSetContextPointer(col, "controller", &ptr); + + /* should make UI template for controller header.. function will do for now */ +// draw_controller_header(col, &ptr); + draw_controller_header(col, &ptr, xco, width, yco); //provisory for 2.50 beta + + /* draw the brick contents */ + draw_brick_controller(col, &ptr); + + + /* put link button to the right */ + col = uiLayoutColumn(subsplit, 0); + uiLayoutSetAlignment(col, UI_LAYOUT_ALIGN_LEFT); + but= uiDefIconBut(block, LINK, 0, ICON_LINK, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + uiSetButLink(but, NULL, (void ***)&(cont->links), &cont->totlinks, LINK_CONTROLLER, LINK_ACTUATOR); + } + } + uiBlockLayoutResolve(block, NULL, &yco); /* stores final height in yco */ + + + /* ****************** Sensors ****************** */ + + xco= 10; yco= 170; width= 340; + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); + row = uiLayoutRow(layout, 1); + + uiDefBlockBut(block, sensor_menu, NULL, "Sensors", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + + uiItemR(row, &logic_ptr, "sensors_show_selected_objects", 0, "Sel", 0); + uiItemR(row, &logic_ptr, "sensors_show_active_objects", 0, "Act", 0); + uiItemR(row, &logic_ptr, "sensors_show_linked_controller", 0, "Link", 0); + uiItemR(row, &logic_ptr, "sensors_show_active_states", 0, "State", 0); + + for(a=0; a<count; a++) { + bSensor *sens; + PointerRNA ptr; + + ob= (Object *)idar[a]; + + /* only draw the sensor common header if "visible" */ + if((ob->scavisflag & OB_VIS_SENS) == 0) continue; + + row = uiLayoutRow(layout, 1); + uiDefButBitS(block, TOG, OB_SHOWSENS, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide sensors"); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_sensor_add", "type", "Add Sensor", 0); + + if ((ob->scaflag & OB_SHOWSENS) == 0) continue; + + uiItemS(layout); + + for(sens= ob->sensors.first; sens; sens=sens->next) { + RNA_pointer_create((ID *)ob, &RNA_Sensor, sens, &ptr); + + if ((ob->scaflag & OB_ALLSTATE) || + !(slogic->scaflag & BUTS_SENS_STATE) || + (sens->totlinks == 0) || /* always display sensor without links so that is can be edited */ + (sens->flag & SENS_PIN && slogic->scaflag & BUTS_SENS_STATE) || /* states can hide some sensors, pinned sensors ignore the visible state */ + (is_sensor_linked(block, sens)) + ) + { // gotta check if the current state is visible or not + uiLayout *split, *col; + + /* make as visible, for move operator */ + sens->flag |= SENS_VISIBLE; + + split = uiLayoutSplit(layout, 0.95, 0); + col = uiLayoutColumn(split, 1); + uiLayoutSetContextPointer(col, "sensor", &ptr); + + /* should make UI template for sensor header.. function will do for now */ + draw_sensor_header(col, &ptr, &logic_ptr); + + /* draw the brick contents */ + draw_brick_sensor(col, &ptr, C); + + /* put link button to the right */ + col = uiLayoutColumn(split, 0); + /* use oldskool uiButtons for links for now */ + but= uiDefIconBut(block, LINK, 0, ICON_LINK, 0, 0, UI_UNIT_X, UI_UNIT_Y, NULL, 0, 0, 0, 0, ""); + uiSetButLink(but, NULL, (void ***)&(sens->links), &sens->totlinks, LINK_SENSOR, LINK_CONTROLLER); + } + } + } + uiBlockLayoutResolve(block, NULL, &yco); /* stores final height in yco */ + + /* ****************** Actuators ****************** */ + + xco= 800; yco= 170; width= 340; + layout= uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, xco, yco, width, 20, U.uistyles.first); + row = uiLayoutRow(layout, 1); + + uiDefBlockBut(block, actuator_menu, NULL, "Actuators", xco-10, yco, 300, UI_UNIT_Y, ""); /* replace this with uiLayout stuff later */ + + uiItemR(row, &logic_ptr, "actuators_show_selected_objects", 0, "Sel", 0); + uiItemR(row, &logic_ptr, "actuators_show_active_objects", 0, "Act", 0); + uiItemR(row, &logic_ptr, "actuators_show_linked_controller", 0, "Link", 0); + uiItemR(row, &logic_ptr, "actuators_show_active_states", 0, "State", 0); + + for(a=0; a<count; a++) { + bActuator *act; + PointerRNA ptr; + + ob= (Object *)idar[a]; + + /* only draw the actuator common header if "visible" */ + if( (ob->scavisflag & OB_VIS_ACT) == 0) continue; + + row = uiLayoutRow(layout, 1); + uiDefButBitS(block, TOG, OB_SHOWACT, B_REDR, ob->id.name+2,(short)(xco-10), yco, (short)(width-30), UI_UNIT_Y, &ob->scaflag, 0, 31, 0, 0, "Object name, click to show/hide actuators"); + if (ob == act_ob) + uiItemMenuEnumO(row, "LOGIC_OT_actuator_add", "type", "Add Actuator", 0); + + if ((ob->scaflag & OB_SHOWACT) == 0) continue; + + uiItemS(layout); + + for(act= ob->actuators.first; act; act=act->next) { + + RNA_pointer_create((ID *)ob, &RNA_Actuator, act, &ptr); + + if ((ob->scaflag & OB_ALLSTATE) || + !(slogic->scaflag & BUTS_ACT_STATE) || + !(act->flag & ACT_LINKED) || /* always display actuators without links so that is can be edited */ + (act->flag & ACT_VISIBLE) || /* this actuator has visible connection, display it */ + (act->flag & ACT_PIN && slogic->scaflag & BUTS_ACT_STATE) /* states can hide some sensors, pinned sensors ignore the visible state */ + ) + { // gotta check if the current state is visible or not + uiLayout *split, *col; + + /* make as visible, for move operator */ + act->flag |= ACT_VISIBLE; + + split = uiLayoutSplit(layout, 0.05, 0); + + /* put inlink button to the left */ + col = uiLayoutColumn(split, 0); + uiDefIconBut(block, INLINK, 0, ICON_INLINK, 0, 0, UI_UNIT_X, UI_UNIT_Y, act, LINK_ACTUATOR, 0, 0, 0, ""); + + col = uiLayoutColumn(split, 1); + uiLayoutSetContextPointer(col, "actuator", &ptr); + + /* should make UI template for actuator header.. function will do for now */ + draw_actuator_header(col, &ptr, &logic_ptr); + + /* draw the brick contents */ + draw_brick_actuator(col, &ptr, C); + + } + } + } + uiBlockLayoutResolve(block, NULL, &yco); /* stores final height in yco */ + + + uiComposeLinks(block); + + uiEndBlock(C, block); + uiDrawBlock(C, block); + + if(idar) MEM_freeN(idar); +} void logic_buttons(bContext *C, ARegion *ar) { @@ -3188,13 +4723,20 @@ void logic_buttons(bContext *C, ARegion *ar) bActuator *act; uiBlock *block; uiBut *but; + PointerRNA logic_ptr; int a, iact, stbit, offset; - short xco, yco, count, width, ycoo; + int xco, yco, width, ycoo; + short count; char name[32]; /* pin is a bool used for actuator and sensor drawing with states * pin so changing states dosnt hide the logic brick */ char pin; + if (G.rt == 0) { + logic_buttons_new(C, ar); + return; + } + if(ob==NULL) return; // uiSetButLock(object_is_libdata(ob), ERROR_LIBDATA_MESSAGE); @@ -3202,6 +4744,8 @@ void logic_buttons(bContext *C, ARegion *ar) block= uiBeginBlock(C, ar, name, UI_EMBOSS); uiBlockSetHandleFunc(block, do_logic_buts, NULL); + RNA_pointer_create(NULL, &RNA_SpaceLogicEditor, slogic, &logic_ptr); + idar= get_selected_and_linked_obs(C, &count, slogic->scaflag); /* clean ACT_LINKED and ACT_VISIBLE of all potentially visible actuators so that @@ -3285,7 +4829,7 @@ void logic_buttons(bContext *C, ARegion *ar) } } uiBlockBeginAlign(block); - uiDefButBitS(block, TOG, OB_SETSTBIT, B_SET_STATE_BIT, "All",(short)(xco+226), yco-10, 22, UI_UNIT_Y, &ob->scaflag, 0, 0, 0, 0, "Set all state bits"); + uiDefButBitS(block, TOG, OB_ALLSTATE, B_SET_STATE_BIT, "All",(short)(xco+226), yco-10, 22, UI_UNIT_Y, &ob->scaflag, 0, 0, 0, 0, "Set all state bits"); uiDefButBitS(block, TOG, OB_INITSTBIT, B_INIT_STATE_BIT, "Ini",(short)(xco+248), yco-10, 22, UI_UNIT_Y, &ob->scaflag, 0, 0, 0, 0, "Set the initial state"); uiDefButBitS(block, TOG, OB_DEBUGSTATE, 0, "D",(short)(xco+270), yco-10, 15, UI_UNIT_Y, &ob->scaflag, 0, 0, 0, 0, "Print state debug info"); uiBlockEndAlign(block); @@ -3332,15 +4876,15 @@ void logic_buttons(bContext *C, ARegion *ar) cpack(0x999999); glRecti(xco+22, yco, xco+width-22,yco+19); but= uiDefBut(block, LABEL, 0, controller_name(cont->type), (short)(xco+22), yco, 70, UI_UNIT_Y, cont, 0, 0, 0, 0, "Controller type"); - //uiButSetFunc(but, sca_move_controller, cont, NULL); + //uiButSetFunc(but, old_sca_move_controller, cont, NULL); but= uiDefBut(block, LABEL, 0, cont->name,(short)(xco+92), yco,(short)(width-158), UI_UNIT_Y, cont, 0, 0, 0, 0, "Controller name"); - //uiButSetFunc(but, sca_move_controller, cont, NULL); + //uiButSetFunc(but, old_sca_move_controller, cont, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(110+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_controller, cont, (void *)TRUE); + uiButSetFunc(but, old_sca_move_controller, cont, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(88+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_controller, cont, (void *)FALSE); + uiButSetFunc(but, old_sca_move_controller, cont, (void *)FALSE); uiBlockEndAlign(block); ycoo= yco; @@ -3361,7 +4905,7 @@ void logic_buttons(bContext *C, ARegion *ar) yco-= 6; } } - + /* ******************************* */ xco= 10; yco= 170; width= 300; @@ -3424,15 +4968,15 @@ void logic_buttons(bContext *C, ARegion *ar) set_col_sensor(sens->type, 1); glRecti(xco+22, yco, xco+width-22,yco+19); but= uiDefBut(block, LABEL, 0, sensor_name(sens->type), (short)(xco+22), yco, 80, UI_UNIT_Y, sens, 0, 0, 0, 0, ""); - //uiButSetFunc(but, sca_move_sensor, sens, NULL); + //uiButSetFunc(but, old_sca_move_sensor, sens, NULL); but= uiDefBut(block, LABEL, 0, sens->name, (short)(xco+102), yco, (short)(width-(pin?146:124)), UI_UNIT_Y, sens, 0, 31, 0, 0, ""); - //uiButSetFunc(but, sca_move_sensor, sens, NULL); + //uiButSetFunc(but, old_sca_move_sensor, sens, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_sensor, sens, (void *)TRUE); + uiButSetFunc(but, old_sca_move_sensor, sens, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_sensor, sens, (void *)FALSE); + uiButSetFunc(but, old_sca_move_sensor, sens, (void *)FALSE); uiBlockEndAlign(block); } @@ -3446,10 +4990,8 @@ void logic_buttons(bContext *C, ARegion *ar) yco-= 6; } } - /* ******************************* */ xco= 800; yco= 170; width= 300; - uiDefBlockBut(block, actuator_menu, NULL, "Actuators", xco-10, yco+35, 90, UI_UNIT_Y, ""); uiBlockBeginAlign(block); @@ -3504,15 +5046,15 @@ void logic_buttons(bContext *C, ARegion *ar) set_col_actuator(act->type, 1); glRecti((short)(xco+22), yco, (short)(xco+width-22),(short)(yco+19)); but= uiDefBut(block, LABEL, 0, actuator_name(act->type), (short)(xco+22), yco, 90, UI_UNIT_Y, act, 0, 0, 0, 0, "Actuator type"); - // uiButSetFunc(but, sca_move_actuator, act, NULL); + // uiButSetFunc(but, old_sca_move_actuator, act, NULL); but= uiDefBut(block, LABEL, 0, act->name, (short)(xco+112), yco, (short)(width-(pin?156:134)), UI_UNIT_Y, act, 0, 0, 0, 0, "Actuator name"); - // uiButSetFunc(but, sca_move_actuator, act, NULL); + // uiButSetFunc(but, old_sca_move_actuator, act, NULL); uiBlockBeginAlign(block); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_UP, (short)(xco+width-(66+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick up"); - uiButSetFunc(but, sca_move_actuator, act, (void *)TRUE); + uiButSetFunc(but, old_sca_move_actuator, act, (void *)TRUE); but= uiDefIconBut(block, BUT, B_REDR, ICON_TRIA_DOWN, (short)(xco+width-(44+5)), yco, 22, UI_UNIT_Y, NULL, 0, 0, 0, 0, "Move this logic brick down"); - uiButSetFunc(but, sca_move_actuator, act, (void *)FALSE); + uiButSetFunc(but, old_sca_move_actuator, act, (void *)FALSE); uiBlockEndAlign(block); ycoo= yco; diff --git a/source/blender/editors/space_logic/space_logic.c b/source/blender/editors/space_logic/space_logic.c index ab37cad2bd8..ed3d956ce01 100644 --- a/source/blender/editors/space_logic/space_logic.c +++ b/source/blender/editors/space_logic/space_logic.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,13 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_image_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -46,18 +39,15 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" #include "BIF_glutil.h" -#include "RNA_access.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -192,6 +182,7 @@ void logic_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "LOGIC_OT_properties", NKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "LOGIC_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_menu(keymap, "LOGIC_MT_logicbricks_add", AKEY, KM_PRESS, KM_SHIFT, 0); } static void logic_refresh(const bContext *C, ScrArea *sa) @@ -205,6 +196,9 @@ static void logic_listener(ARegion *ar, wmNotifier *wmn) { /* context changes */ switch(wmn->category) { + case NC_LOGIC: + ED_region_tag_redraw(ar); + break; case NC_SCENE: switch(wmn->data) { case ND_FRAME: @@ -254,11 +248,9 @@ static void logic_main_area_draw(const bContext *C, ARegion *ar) // SpaceLogic *slogic= CTX_wm_space_logic(C); View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); @@ -304,15 +296,8 @@ static void logic_header_area_init(wmWindowManager *wm, ARegion *ar) static void logic_header_area_draw(const bContext *C, ARegion *ar) { - float col[3]; - /* clear */ - if(ED_screen_area_active(C)) - UI_GetThemeColor3fv(TH_HEADER, col); - else - UI_GetThemeColor3fv(TH_HEADERDESEL, col); - - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(ED_screen_area_active(C)?TH_HEADER:TH_HEADERDESEL); glClear(GL_COLOR_BUFFER_BIT); /* set view2d view matrix for scrolling (without scrollers) */ diff --git a/source/blender/editors/space_nla/CMakeLists.txt b/source/blender/editors/space_nla/CMakeLists.txt new file mode 100644 index 00000000000..be8020b0793 --- /dev/null +++ b/source/blender/editors/space_nla/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_nla "${SRC}" "${INC}") diff --git a/source/blender/editors/space_nla/nla_buttons.c b/source/blender/editors/space_nla/nla_buttons.c index 4f944d1b855..81d4e8b6b01 100644 --- a/source/blender/editors/space_nla/nla_buttons.c +++ b/source/blender/editors/space_nla/nla_buttons.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,12 +32,6 @@ #include <float.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -66,17 +60,12 @@ #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" #include "ED_anim_api.h" -#include "ED_keyframing.h" #include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "nla_intern.h" // own include @@ -248,19 +237,19 @@ static void nla_panel_animdata (const bContext *C, Panel *pa) /* Active Action Properties ------------------------------------- */ /* action */ row= uiLayoutRow(layout, 1); - uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/); // XXX: need to make these operators + uiTemplateID(row, (bContext *)C, &adt_ptr, "action", "ACTION_OT_new", NULL, NULL /*"ACTION_OT_unlink"*/, NULL); // XXX: need to make these operators /* extrapolation */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_extrapolation", 0); + uiItemR(row, &adt_ptr, "action_extrapolation", 0, NULL, 0); /* blending */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_blending", 0); + uiItemR(row, &adt_ptr, "action_blending", 0, NULL, 0); /* influence */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &adt_ptr, "action_influence", 0); + uiItemR(row, &adt_ptr, "action_influence", 0, NULL, 0); } /* active NLA-Track */ @@ -280,7 +269,7 @@ static void nla_panel_track (const bContext *C, Panel *pa) /* Info - Active NLA-Context:Track ---------------------- */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, ICON_NLA, &nlt_ptr, "name", 0); + uiItemR(row, &nlt_ptr, "name", 0, NULL, ICON_NLA); } /* generic settings for active NLA-Strip */ @@ -300,41 +289,41 @@ static void nla_panel_properties(const bContext *C, Panel *pa) /* Strip Properties ------------------------------------- */ /* strip type */ row= uiLayoutColumn(layout, 1); - uiItemR(row, NULL, ICON_NLA, &strip_ptr, "name", 0); // XXX icon? - uiItemR(row, NULL, 0, &strip_ptr, "type", 0); + uiItemR(row, &strip_ptr, "name", 0, NULL, ICON_NLA); // XXX icon? + uiItemR(row, &strip_ptr, "type", 0, NULL, 0); /* strip extents */ column= uiLayoutColumn(layout, 1); uiItemL(column, "Strip Extents:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "start_frame", 0); - uiItemR(column, NULL, 0, &strip_ptr, "end_frame", 0); + uiItemR(column, &strip_ptr, "frame_start", 0, NULL, 0); + uiItemR(column, &strip_ptr, "frame_end", 0, NULL, 0); /* extrapolation */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &strip_ptr, "extrapolation", 0); + uiItemR(row, &strip_ptr, "extrapolation", 0, NULL, 0); /* blending */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, 0, &strip_ptr, "blending", 0); + uiItemR(row, &strip_ptr, "blending", 0, NULL, 0); /* blend in/out + autoblending * - blend in/out can only be set when autoblending is off */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_influence")==0); - uiItemR(column, NULL, 0, &strip_ptr, "auto_blending", 0); // XXX as toggle? + uiItemR(column, &strip_ptr, "auto_blending", 0, NULL, 0); // XXX as toggle? subcol= uiLayoutColumn(column, 1); uiLayoutSetActive(subcol, RNA_boolean_get(&strip_ptr, "auto_blending")==0); - uiItemR(subcol, NULL, 0, &strip_ptr, "blend_in", 0); - uiItemR(subcol, NULL, 0, &strip_ptr, "blend_out", 0); + uiItemR(subcol, &strip_ptr, "blend_in", 0, NULL, 0); + uiItemR(subcol, &strip_ptr, "blend_out", 0, NULL, 0); /* settings */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, !(RNA_boolean_get(&strip_ptr, "animated_influence") || RNA_boolean_get(&strip_ptr, "animated_time"))); uiItemL(column, "Playback Settings:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "muted", 0); - uiItemR(column, NULL, 0, &strip_ptr, "reversed", 0); + uiItemR(column, &strip_ptr, "muted", 0, NULL, 0); + uiItemR(column, &strip_ptr, "reversed", 0, NULL, 0); } @@ -356,22 +345,22 @@ static void nla_panel_actclip(const bContext *C, Panel *pa) /* Strip Properties ------------------------------------- */ /* action pointer */ row= uiLayoutRow(layout, 1); - uiItemR(row, NULL, ICON_ACTION, &strip_ptr, "action", 0); + uiItemR(row, &strip_ptr, "action", 0, NULL, ICON_ACTION); /* action extents */ // XXX custom names were used here (to avoid the prefixes)... probably not necessary in future? column= uiLayoutColumn(layout, 1); uiItemL(column, "Action Extents:", 0); - uiItemR(column, "Start Frame", 0, &strip_ptr, "action_start_frame", 0); - uiItemR(column, "End Frame", 0, &strip_ptr, "action_end_frame", 0); + uiItemR(column, &strip_ptr, "action_frame_start", 0, "Start Frame", 0); + uiItemR(column, &strip_ptr, "action_frame_end", 0, "End Frame", 0); uiItemO(column, NULL, 0, "NLA_OT_action_sync_length"); /* action usage */ column= uiLayoutColumn(layout, 1); uiLayoutSetActive(column, RNA_boolean_get(&strip_ptr, "animated_time")==0); uiItemL(column, "Playback Settings:", 0); - uiItemR(column, NULL, 0, &strip_ptr, "scale", 0); - uiItemR(column, NULL, 0, &strip_ptr, "repeat", 0); + uiItemR(column, &strip_ptr, "scale", 0, NULL, 0); + uiItemR(column, &strip_ptr, "repeat", 0, NULL, 0); } /* evaluation settings for active NLA-Strip */ @@ -379,7 +368,7 @@ static void nla_panel_evaluation(const bContext *C, Panel *pa) { PointerRNA strip_ptr; uiLayout *layout= pa->layout; - uiLayout *column, *subcolumn; + uiLayout *column, *subcolumn, *subrow; uiBlock *block; /* check context and also validity of pointer */ @@ -390,19 +379,22 @@ static void nla_panel_evaluation(const bContext *C, Panel *pa) uiBlockSetHandleFunc(block, do_nla_region_buttons, NULL); column= uiLayoutColumn(layout, 1); - uiItemR(column, NULL, 0, &strip_ptr, "animated_influence", 0); + uiItemR(column, &strip_ptr, "animated_influence", 0, NULL, 0); subcolumn= uiLayoutColumn(column, 1); uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "animated_influence")); - uiItemR(subcolumn, NULL, 0, &strip_ptr, "influence", 0); + uiItemR(subcolumn, &strip_ptr, "influence", 0, NULL, 0); column= uiLayoutColumn(layout, 1); - uiItemR(column, NULL, 0, &strip_ptr, "animated_time", 0); - + subrow= uiLayoutRow(column, 0); + uiItemR(subrow, &strip_ptr, "animated_time", 0, NULL, 0); + uiItemR(subrow, &strip_ptr, "animated_time_cyclic", 0, NULL, 0); + subcolumn= uiLayoutColumn(column, 1); - uiLayoutSetEnabled(subcolumn, RNA_boolean_get(&strip_ptr, "animated_time")); - uiItemR(subcolumn, NULL, 0, &strip_ptr, "strip_time", 0); + subrow= uiLayoutRow(subcolumn, 0); + uiLayoutSetEnabled(subrow, RNA_boolean_get(&strip_ptr, "animated_time")); + uiItemR(subcolumn, &strip_ptr, "strip_time", 0, NULL, 0); } /* F-Modifiers for active NLA-Strip */ @@ -430,6 +422,11 @@ static void nla_panel_modifiers(const bContext *C, Panel *pa) // XXX for now, this will be a operator button which calls a temporary 'add modifier' operator // FIXME: we need to set the only-active property so that this will only add modifiers for the active strip (not all selected) uiDefButO(block, BUT, "NLA_OT_fmodifier_add", WM_OP_INVOKE_REGION_WIN, "Add Modifier", 10, 0, 150, 20, "Adds a new F-Modifier for the active NLA Strip"); + + /* copy/paste (as sub-row)*/ + row= uiLayoutRow(row, 1); + uiItemO(row, "", ICON_COPYDOWN, "NLA_OT_fmodifier_copy"); + uiItemO(row, "", ICON_PASTEDOWN, "NLA_OT_fmodifier_paste"); } /* draw each modifier */ diff --git a/source/blender/editors/space_nla/nla_channels.c b/source/blender/editors/space_nla/nla_channels.c index 9708e12e738..cf98decb825 100644 --- a/source/blender/editors/space_nla/nla_channels.c +++ b/source/blender/editors/space_nla/nla_channels.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,24 +31,9 @@ #include <stdlib.h> #include <math.h> -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" #include "DNA_object_types.h" -#include "DNA_particle_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_meta_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -65,8 +50,6 @@ #include "ED_anim_api.h" #include "ED_keyframes_edit.h" -#include "ED_markers.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "RNA_access.h" @@ -75,9 +58,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_interface_icons.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "nla_intern.h" // own include @@ -136,7 +116,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho if (adt) adt->flag |= ADT_UI_SELECTED; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; case ANIMTYPE_OBJECT: @@ -177,7 +157,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho adt->flag |= ADT_UI_ACTIVE; /* notifiers - channel was selected */ - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } } break; @@ -214,7 +194,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho ale->adt->flag |= ADT_UI_ACTIVE; } - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } break; @@ -240,21 +220,21 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho nlt->flag ^= NLATRACK_PROTECTED; /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (x >= (v2d->cur.xmax-2*NLACHANNEL_BUTTON_WIDTH)) { /* toggle mute */ nlt->flag ^= NLATRACK_MUTED; /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (x <= ((NLACHANNEL_BUTTON_WIDTH*2)+offset)) { /* toggle 'solo' */ BKE_nlatrack_solo_toggle(adt, nlt); /* notifier flags - channel was edited */ - notifierFlags |= ND_ANIMCHAN_EDIT; + notifierFlags |= (ND_ANIMCHAN|NA_EDITED); } else if (nlaedit_is_tweakmode_on(ac) == 0) { /* set selection */ @@ -273,7 +253,7 @@ static int mouse_nla_channels (bAnimContext *ac, float x, int channel_index, sho ANIM_set_active_channel(ac, ac->data, ac->datatype, filter, nlt, ANIMTYPE_NLATRACK); /* notifier flags - channel was selected */ - notifierFlags |= ND_ANIMCHAN_SELECT; + notifierFlags |= (ND_ANIMCHAN|NA_SELECTED); } } break; @@ -426,7 +406,7 @@ static int nlaedit_add_tracks_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -482,7 +462,7 @@ static int nlaedit_delete_tracks_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; diff --git a/source/blender/editors/space_nla/nla_draw.c b/source/blender/editors/space_nla/nla_draw.c index 3a9d668e7f8..2314b5ddcfa 100644 --- a/source/blender/editors/space_nla/nla_draw.c +++ b/source/blender/editors/space_nla/nla_draw.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,26 +32,10 @@ #include <math.h> #include <float.h> -#include "DNA_listBase.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_object_types.h" #include "DNA_screen_types.h" -#include "DNA_scene_types.h" #include "DNA_space_types.h" -#include "DNA_constraint_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_material_types.h" -#include "DNA_meta_types.h" -#include "DNA_particle_types.h" -#include "DNA_userdef_types.h" #include "DNA_windowmanager_types.h" -#include "DNA_world_types.h" -#include "DNA_vec_types.h" #include "MEM_guardedalloc.h" @@ -69,13 +53,10 @@ #include "ED_anim_api.h" #include "ED_keyframes_draw.h" -#include "ED_space_api.h" -#include "ED_screen.h" #include "BIF_gl.h" #include "BIF_glutil.h" -#include "WM_api.h" #include "WM_types.h" #include "UI_interface.h" @@ -83,7 +64,6 @@ #include "UI_resources.h" #include "UI_view2d.h" -#include "ED_markers.h" #include "nla_intern.h" // own include @@ -810,7 +790,7 @@ static void draw_nla_channel_list_gl (bAnimContext *ac, ListBase *anim_data, Vie fdrawline((float)(v2d->cur.xmax-offset), yminc, (float)(v2d->cur.xmax-offset), ymaxc); - offset += 16;; + offset += 16; /* 'tweaking action' indicator - not a button */ UI_icon_draw((float)(v2d->cur.xmax-offset), ydatac, ICON_EDIT); @@ -825,7 +805,7 @@ static void draw_nla_channel_list_gl (bAnimContext *ac, ListBase *anim_data, Vie glEnd(); // GL_LINES /* 'push down' icon for normal active-actions */ - UI_icon_draw((float)NLACHANNEL_NAMEWIDTH-offset, ydatac, ICON_FREEZE); + UI_icon_draw((float)v2d->cur.xmax-offset, ydatac, ICON_FREEZE); } } diff --git a/source/blender/editors/space_nla/nla_edit.c b/source/blender/editors/space_nla/nla_edit.c index 543fa1dfed7..38c6ecdca22 100644 --- a/source/blender/editors/space_nla/nla_edit.c +++ b/source/blender/editors/space_nla/nla_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,13 +31,7 @@ #include <math.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -59,7 +53,6 @@ #include "ED_anim_api.h" #include "ED_keyframes_edit.h" #include "ED_markers.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_transform.h" @@ -71,8 +64,6 @@ #include "WM_types.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "nla_intern.h" // own include #include "nla_private.h" // FIXME... maybe this shouldn't be included? @@ -269,7 +260,7 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op) cfra= (float)CFRA; /* get action to use */ - act= BLI_findlink(&CTX_data_main(C)->action, RNA_enum_get(op->ptr, "type")); + act= BLI_findlink(&CTX_data_main(C)->action, RNA_enum_get(op->ptr, "action")); if (act == NULL) { BKE_report(op->reports, RPT_ERROR, "No valid Action to add."); @@ -320,7 +311,7 @@ static int nlaedit_add_actionclip_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -345,7 +336,7 @@ void NLA_OT_actionclip_add (wmOperatorType *ot) /* props */ // TODO: this would be nicer as an ID-pointer... - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + prop= RNA_def_enum(ot->srna, "action", DummyRNA_NULL_items, 0, "Action", ""); RNA_def_enum_funcs(prop, RNA_action_itemf); ot->prop= prop; } @@ -439,7 +430,7 @@ static int nlaedit_add_transition_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -506,7 +497,7 @@ static int nlaedit_add_meta_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -558,7 +549,7 @@ static int nlaedit_remove_meta_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -648,7 +639,7 @@ static int nlaedit_duplicate_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -736,7 +727,7 @@ static int nlaedit_delete_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -881,7 +872,7 @@ static int nlaedit_split_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -912,6 +903,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *op) ListBase anim_data = {NULL, NULL}; bAnimListElem *ale; int filter; +// int flag = 0; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -923,7 +915,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *op) /* for each AnimData block, bake strips to animdata... */ for (ale= anim_data.first; ale; ale= ale->next) { - // FIXME + //BKE_nla_bake(ac.scene, ale->id, ale->data, flag); } /* free temp data */ @@ -933,7 +925,7 @@ static int nlaedit_bake_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -995,7 +987,7 @@ static int nlaedit_toggle_mute_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1069,7 +1061,7 @@ static int nlaedit_move_up_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1143,7 +1135,7 @@ static int nlaedit_move_down_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1219,7 +1211,7 @@ static int nlaedit_sync_actlen_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1247,10 +1239,10 @@ void NLA_OT_action_sync_length (wmOperatorType *ot) /* Reset the scaling of the selected strips to 1.0f */ /* apply scaling to keyframe */ -static short bezt_apply_nlamapping (BeztEditData *bed, BezTriple *bezt) +static short bezt_apply_nlamapping (KeyframeEditData *ked, BezTriple *bezt) { - /* NLA-strip which has this scaling is stored in bed->data */ - NlaStrip *strip= (NlaStrip *)bed->data; + /* NLA-strip which has this scaling is stored in ked->data */ + NlaStrip *strip= (NlaStrip *)ked->data; /* adjust all the times */ bezt->vec[0][0]= nlastrip_get_frame(strip, bezt->vec[0][0], NLATIME_CONVERT_MAP); @@ -1269,7 +1261,7 @@ static int nlaedit_apply_scale_exec (bContext *C, wmOperator *op) bAnimListElem *ale; int filter; - BeztEditData bed; + KeyframeEditData ked; /* get editor data */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -1280,7 +1272,7 @@ static int nlaedit_apply_scale_exec (bContext *C, wmOperator *op) ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); /* init the editing data */ - memset(&bed, 0, sizeof(BeztEditData)); + memset(&ked, 0, sizeof(KeyframeEditData)); /* for each NLA-Track, apply scale of all selected strips */ for (ale= anim_data.first; ale; ale= ale->next) { @@ -1303,8 +1295,8 @@ static int nlaedit_apply_scale_exec (bContext *C, wmOperator *op) } /* setup iterator, and iterate over all the keyframes in the action, applying this scaling */ - bed.data= strip; - ANIM_animchanneldata_keys_bezier_loop(&bed, strip->act, ALE_ACT, NULL, bezt_apply_nlamapping, calchandles_fcurve, 0); + ked.data= strip; + ANIM_animchanneldata_keyframes_loop(&ked, strip->act, ALE_ACT, NULL, bezt_apply_nlamapping, calchandles_fcurve, 0); /* clear scale of strip now that it has been applied, * and recalculate the extents of the action now that it has been scaled @@ -1320,7 +1312,7 @@ static int nlaedit_apply_scale_exec (bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1383,7 +1375,7 @@ static int nlaedit_clear_scale_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1524,7 +1516,7 @@ static int nlaedit_snap_exec (bContext *C, wmOperator *op) ED_nla_postop_refresh(&ac); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1575,7 +1567,7 @@ static int nla_fmodifier_add_invoke (bContext *C, wmOperator *op, wmEvent *event continue; /* add entry to add this type of modifier */ - uiItemEnumO(layout, fmi->name, 0, "NLA_OT_fmodifier_add", "type", i); + uiItemEnumO(layout, "NLA_OT_fmodifier_add", fmi->name, 0, "type", i); } uiItemS(layout); @@ -1608,12 +1600,19 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op) for (ale= anim_data.first; ale; ale= ale->next) { NlaTrack *nlt= (NlaTrack *)ale->data; NlaStrip *strip; - int i = 1; - for (strip= nlt->strips.first; strip; strip=strip->next, i++) { - /* only add F-Modifier if on active strip? */ - if ((onlyActive) && (strip->flag & NLASTRIP_FLAG_ACTIVE)==0) - continue; + for (strip= nlt->strips.first; strip; strip=strip->next) { + /* can F-Modifier be added to the current strip? */ + if (onlyActive) { + /* if not active, cannot add since we're only adding to active strip */ + if ((strip->flag & NLASTRIP_FLAG_ACTIVE)==0) + continue; + } + else { + /* strip must be selected, since we're not just doing active */ + if ((strip->flag & NLASTRIP_FLAG_SELECT)==0) + continue; + } /* add F-Modifier of specified type to selected, and make it the active one */ fcm= add_fmodifier(&strip->modifiers, type); @@ -1621,10 +1620,9 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op) if (fcm) set_active_fmodifier(&strip->modifiers, fcm); else { - char errormsg[128]; - sprintf(errormsg, "Modifier couldn't be added to (%s : %d). See console for details.", nlt->name, i); - - BKE_report(op->reports, RPT_ERROR, errormsg); + BKE_reportf(op->reports, RPT_ERROR, + "Modifier couldn't be added to (%s : %s). See console for details.", + nlt->name, strip->name); } } } @@ -1633,8 +1631,7 @@ static int nla_fmodifier_add_exec(bContext *C, wmOperator *op) BLI_freelistN(&anim_data); /* set notifier that things have changed */ - // FIXME: this doesn't really do it justice... - WM_event_add_notifier(C, NC_ANIMATION, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); /* done */ return OPERATOR_FINISHED; @@ -1659,4 +1656,125 @@ void NLA_OT_fmodifier_add (wmOperatorType *ot) RNA_def_boolean(ot->srna, "only_active", 0, "Only Active", "Only add F-Modifier of the specified type to the active strip."); } +/* ******************** Copy F-Modifiers Operator *********************** */ + +static int nla_fmodifier_copy_exec(bContext *C, wmOperator *op) +{ + bAnimContext ac; + ListBase anim_data = {NULL, NULL}; + bAnimListElem *ale; + int filter, ok=0; + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* clear buffer first */ + free_fmodifiers_copybuf(); + + /* get a list of the editable tracks being shown in the NLA */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NLATRACKS | ANIMFILTER_FOREDIT); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* for each NLA-Track, add the specified modifier to all selected strips */ + for (ale= anim_data.first; ale; ale= ale->next) { + NlaTrack *nlt= (NlaTrack *)ale->data; + NlaStrip *strip; + + for (strip= nlt->strips.first; strip; strip=strip->next) { + /* only add F-Modifier if on active strip? */ + if ((strip->flag & NLASTRIP_FLAG_ACTIVE)==0) + continue; + + // TODO: when 'active' vs 'all' boolean is added, change last param! + ok += ANIM_fmodifiers_copy_to_buf(&strip->modifiers, 0); + } + } + + /* successful or not? */ + if (ok == 0) { + BKE_report(op->reports, RPT_ERROR, "No F-Modifiers available to be copied"); + return OPERATOR_CANCELLED; + } + else + return OPERATOR_FINISHED; +} + +void NLA_OT_fmodifier_copy (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Copy F-Modifiers"; + ot->idname= "NLA_OT_fmodifier_copy"; + ot->description= "Copy the F-Modifier(s) of the active NLA-Strip."; + + /* api callbacks */ + ot->exec= nla_fmodifier_copy_exec; + ot->poll= nlaop_poll_tweakmode_off; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* id-props */ + //ot->prop = RNA_def_boolean(ot->srna, "all", 1, "All F-Modifiers", "Copy all the F-Modifiers, instead of just the active one"); +} + +/* ******************** Paste F-Modifiers Operator *********************** */ + +static int nla_fmodifier_paste_exec(bContext *C, wmOperator *op) +{ + bAnimContext ac; + ListBase anim_data = {NULL, NULL}; + bAnimListElem *ale; + int filter, ok=0; + + /* get editor data */ + if (ANIM_animdata_get_context(C, &ac) == 0) + return OPERATOR_CANCELLED; + + /* get a list of the editable tracks being shown in the NLA */ + filter= (ANIMFILTER_VISIBLE | ANIMFILTER_NLATRACKS | ANIMFILTER_SEL | ANIMFILTER_FOREDIT); + ANIM_animdata_filter(&ac, &anim_data, filter, ac.data, ac.datatype); + + /* for each NLA-Track, add the specified modifier to all selected strips */ + for (ale= anim_data.first; ale; ale= ale->next) { + NlaTrack *nlt= (NlaTrack *)ale->data; + NlaStrip *strip; + + for (strip= nlt->strips.first; strip; strip=strip->next) { + // TODO: do we want to replace existing modifiers? add user pref for that! + ok += ANIM_fmodifiers_paste_from_buf(&strip->modifiers, 0); + } + } + + /* clean up */ + BLI_freelistN(&anim_data); + + /* successful or not? */ + if (ok) { + /* set notifier that things have changed */ + /* set notifier that things have changed */ + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); + return OPERATOR_FINISHED; + } + else { + BKE_report(op->reports, RPT_ERROR, "No F-Modifiers to paste"); + return OPERATOR_CANCELLED; + } +} + +void NLA_OT_fmodifier_paste (wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Paste F-Modifiers"; + ot->idname= "NLA_OT_fmodifier_paste"; + ot->description= "Add copied F-Modifiers to the selected NLA-Strips"; + + /* api callbacks */ + ot->exec= nla_fmodifier_paste_exec; + ot->poll= nlaop_poll_tweakmode_off; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + /* *********************************************** */ diff --git a/source/blender/editors/space_nla/nla_intern.h b/source/blender/editors/space_nla/nla_intern.h index 1af2d2a1635..7570969158b 100644 --- a/source/blender/editors/space_nla/nla_intern.h +++ b/source/blender/editors/space_nla/nla_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -111,6 +111,8 @@ void NLA_OT_clear_scale(wmOperatorType *ot); void NLA_OT_snap(wmOperatorType *ot); void NLA_OT_fmodifier_add(wmOperatorType *ot); +void NLA_OT_fmodifier_copy(wmOperatorType *ot); +void NLA_OT_fmodifier_paste(wmOperatorType *ot); /* **************************************** */ diff --git a/source/blender/editors/space_nla/nla_ops.c b/source/blender/editors/space_nla/nla_ops.c index 10ff10f46fd..dfb50ee33e5 100644 --- a/source/blender/editors/space_nla/nla_ops.c +++ b/source/blender/editors/space_nla/nla_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,14 +29,7 @@ #include <string.h> #include <stdio.h> -#include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -51,7 +44,6 @@ #include "BKE_screen.h" #include "ED_anim_api.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_transform.h" @@ -60,9 +52,6 @@ #include "RNA_access.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "nla_intern.h" // own include @@ -165,6 +154,8 @@ void nla_operatortypes(void) WM_operatortype_append(NLA_OT_snap); WM_operatortype_append(NLA_OT_fmodifier_add); + WM_operatortype_append(NLA_OT_fmodifier_copy); + WM_operatortype_append(NLA_OT_fmodifier_paste); } /* ************************** registration - keymaps **********************************/ @@ -186,6 +177,7 @@ static void nla_keymap_channels (wmKeyConfig *keyconf, wmKeyMap *keymap) /* delete tracks */ WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NLA_OT_delete_tracks", BACKSPACEKEY, KM_PRESS, 0, 0); /* General Animation Channels keymap (see anim_channels.c) ----------------------- */ /* selection */ @@ -255,6 +247,7 @@ static void nla_keymap_main (wmKeyConfig *keyconf, wmKeyMap *keymap) /* delete */ WM_keymap_add_item(keymap, "NLA_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NLA_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NLA_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); /* split */ WM_keymap_add_item(keymap, "NLA_OT_split", YKEY, KM_PRESS, 0, 0); diff --git a/source/blender/editors/space_nla/nla_select.c b/source/blender/editors/space_nla/nla_select.c index 7729573070d..55463580115 100644 --- a/source/blender/editors/space_nla/nla_select.c +++ b/source/blender/editors/space_nla/nla_select.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,13 +30,7 @@ #include <stdio.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -52,8 +46,6 @@ #include "ED_anim_api.h" #include "ED_keyframes_edit.h" -#include "ED_markers.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "RNA_access.h" @@ -62,8 +54,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "nla_intern.h" // own include @@ -80,7 +70,7 @@ static short selmodes_to_flagmodes (short sel) break; case SELECT_INVERT: - return ACHANNEL_SETFLAG_TOGGLE; + return ACHANNEL_SETFLAG_INVERT; break; case SELECT_ADD: @@ -186,7 +176,7 @@ static int nlaedit_deselectall_exec(bContext *C, wmOperator *op) deselect_nla_strips(&ac, DESELECT_STRIPS_TEST, SELECT_ADD); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -323,7 +313,7 @@ static int nlaedit_borderselect_exec(bContext *C, wmOperator *op) borderselect_nla_strips(&ac, rect, mode, selectmode); /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -580,7 +570,7 @@ static int nlaedit_clickselect_invoke(bContext *C, wmOperator *op, wmEvent *even } /* set notifier that things have changed */ - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_SELECT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_SELECTED, NULL); /* for tweak grab to work */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; diff --git a/source/blender/editors/space_nla/space_nla.c b/source/blender/editors/space_nla/space_nla.c index 6ea843a00de..64933e3c11a 100644 --- a/source/blender/editors/space_nla/space_nla.c +++ b/source/blender/editors/space_nla/space_nla.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,11 +30,7 @@ #include <stdio.h> #include "DNA_anim_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -54,7 +50,6 @@ #include "ED_anim_api.h" #include "ED_markers.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -62,7 +57,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -159,10 +153,10 @@ static SpaceLink *nla_new(const bContext *C) ar->v2d.cur = ar->v2d.tot; ar->v2d.min[0]= 0.0f; - ar->v2d.min[1]= 0.0f; + ar->v2d.min[1]= 0.0f; ar->v2d.max[0]= MAXFRAMEF; - ar->v2d.max[1]= 10000.0f; + ar->v2d.max[1]= 10000.0f; ar->v2d.minzoom= 0.01f; ar->v2d.maxzoom= 50; @@ -233,11 +227,9 @@ static void nla_channel_area_draw(const bContext *C, ARegion *ar) bAnimContext ac; View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); @@ -279,12 +271,10 @@ static void nla_main_area_draw(const bContext *C, ARegion *ar) View2D *v2d= &ar->v2d; View2DGrid *grid; View2DScrollers *scrollers; - float col[3]; short unit=0, flag=0; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); diff --git a/source/blender/editors/space_node/CMakeLists.txt b/source/blender/editors/space_node/CMakeLists.txt new file mode 100644 index 00000000000..0c8f9fc1ee2 --- /dev/null +++ b/source/blender/editors/space_node/CMakeLists.txt @@ -0,0 +1,42 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../imbuf + ../include + ../../../../intern/guardedalloc + ../../../../intern/opennl/extern + ../../makesdna + ../../makesrna + ../../nodes + ../../render/extern/include + ../../windowmanager +) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +BLENDERLIB(bf_editor_space_node "${SRC}" "${INC}") diff --git a/source/blender/editors/space_node/drawnode.c b/source/blender/editors/space_node/drawnode.c index 9f02702372f..082f3f97dfd 100644 --- a/source/blender/editors/space_node/drawnode.c +++ b/source/blender/editors/space_node/drawnode.c @@ -34,23 +34,12 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "DNA_ID.h" #include "DNA_node_types.h" -#include "DNA_image_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_action_types.h" -#include "DNA_color_types.h" -#include "DNA_customdata_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_ipo_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_space_types.h" #include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_text_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_curve.h" @@ -73,22 +62,15 @@ #include "MEM_guardedalloc.h" -#include "ED_node.h" -#include "ED_space_api.h" -#include "ED_screen.h" -#include "ED_types.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "UI_view2d.h" #include "UI_interface.h" #include "UI_resources.h" -#include "RE_pipeline.h" #include "IMB_imbuf.h" #include "IMB_imbuf_types.h" @@ -99,7 +81,7 @@ void node_buts_group(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, ""); + uiTemplateIDBrowse(layout, C, ptr, "nodetree", NULL, NULL, "", NULL); } static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -111,7 +93,7 @@ static void node_buts_value(uiLayout *layout, bContext *C, PointerRNA *ptr) prop = RNA_struct_find_property(ptr, "outputs"); RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr); - uiItemR(layout, "", 0, &sockptr, "default_value", 0); + uiItemR(layout, &sockptr, "default_value", 0, "", 0); } static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -125,8 +107,8 @@ static void node_buts_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) RNA_property_collection_lookup_int(ptr, prop, 0, &sockptr); col = uiLayoutColumn(layout, 0); - uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0); - uiItemR(col, "", 0, &sockptr, "default_value", 0); + uiTemplateColorWheel(col, &sockptr, "default_value", 1, 0, 0, 0); + uiItemR(col, &sockptr, "default_value", 0, "", 0); } static void node_buts_mix_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -136,9 +118,9 @@ static void node_buts_mix_rgb(uiLayout *layout, bContext *C, PointerRNA *ptr) bNodeTree *ntree= (bNodeTree*)ptr->id.data; row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "blend_type", 0); + uiItemR(row, ptr, "blend_type", 0, "", 0); if(ntree->type == NTREE_COMPOSIT) - uiItemR(row, "", ICON_IMAGE_RGB_ALPHA, ptr, "alpha", 0); + uiItemR(row, ptr, "alpha", 0, "", ICON_IMAGE_RGB_ALPHA); } static void node_buts_time(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -159,8 +141,8 @@ static void node_buts_time(uiLayout *layout, bContext *C, PointerRNA *ptr) uiTemplateCurveMapping(layout, ptr, "curve", 's', 0, 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "Sta", 0, ptr, "start", 0); - uiItemR(row, "End", 0, ptr, "end", 0); + uiItemR(row, ptr, "start", 0, "Sta", 0); + uiItemR(row, ptr, "end", 0, "End", 0); } static void node_buts_colorramp(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -278,17 +260,17 @@ static void node_buts_texture(uiLayout *layout, bContext *C, PointerRNA *ptr) (node->type != TEX_NODE_TEXTURE) ); - uiItemR(layout, "", 0, ptr, "texture", 0); + uiItemR(layout, ptr, "texture", 0, "", 0); if(multi) { /* Number Drawing not optimal here, better have a list*/ - uiItemR(layout, "", 0, ptr, "node_output", 0); + uiItemR(layout, ptr, "node_output", 0, "", 0); } } static void node_buts_math(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "operation", 0); + uiItemR(layout, ptr, "operation", 0, "", 0); } /* ****************** BUTTON CALLBACKS FOR SHADER NODES ***************** */ @@ -324,14 +306,14 @@ static void node_shader_buts_material(uiLayout *layout, bContext *C, PointerRNA bNode *node= ptr->data; uiLayout *col; - uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL); + uiTemplateID(layout, C, ptr, "material", "MATERIAL_OT_new", NULL, NULL, NULL); if(!node->id) return; col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "diffuse", 0); - uiItemR(col, NULL, 0, ptr, "specular", 0); - uiItemR(col, NULL, 0, ptr, "invert_normal", 0); + uiItemR(col, ptr, "diffuse", 0, NULL, 0); + uiItemR(col, ptr, "specular", 0, NULL, 0); + uiItemR(col, ptr, "invert_normal", 0, NULL, 0); } static void node_shader_buts_mapping(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -340,38 +322,48 @@ static void node_shader_buts_mapping(uiLayout *layout, bContext *C, PointerRNA * uiItemL(layout, "Location:", 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "location", 0); + uiItemR(row, ptr, "location", 0, "", 0); uiItemL(layout, "Rotation:", 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "rotation", 0); + uiItemR(row, ptr, "rotation", 0, "", 0); uiItemL(layout, "Scale:", 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, ptr, "scale", 0); + uiItemR(row, ptr, "scale", 0, "", 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "Min", 0, ptr, "clamp_minimum", 0); - uiItemR(row, "", 0, ptr, "minimum", 0); + uiItemR(row, ptr, "clamp_minimum", 0, "Min", 0); + uiItemR(row, ptr, "minimum", 0, "", 0); row= uiLayoutRow(layout, 1); - uiItemR(row, "Max", 0, ptr, "clamp_maximum", 0); - uiItemR(row, "", 0, ptr, "maximum", 0); + uiItemR(row, ptr, "clamp_maximum", 0, "Max", 0); + uiItemR(row, ptr, "maximum", 0, "", 0); } static void node_shader_buts_vect_math(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "operation", 0); + uiItemR(layout, ptr, "operation", 0, "", 0); } static void node_shader_buts_geometry(uiLayout *layout, bContext *C, PointerRNA *ptr) { + PointerRNA obptr= CTX_data_pointer_get(C, "active_object"); uiLayout *col; - + col= uiLayoutColumn(layout, 0); - uiItemR(col, "UV", 0, ptr, "uv_layer", 0); - uiItemR(col, "VCol", 0, ptr, "color_layer", 0); + + if(obptr.data && RNA_enum_get(&obptr, "type") == OB_MESH) { + PointerRNA dataptr= RNA_pointer_get(&obptr, "data"); + + uiItemPointerR(col, ptr, "uv_layer", &dataptr, "uv_textures", "", 0); + uiItemPointerR(col, ptr, "color_layer", &dataptr, "vertex_colors", "", 0); + } + else { + uiItemR(col, ptr, "uv_layer", 0, "UV", 0); + uiItemR(col, ptr, "color_layer", 0, "VCol", 0); + } } static void node_shader_buts_dynamic(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -475,7 +467,7 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA * PointerRNA imaptr; PropertyRNA *prop; - uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL, NULL); if(!node->id) return; @@ -485,21 +477,21 @@ static void node_composit_buts_image(uiLayout *layout, bContext *C, PointerRNA * col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, &imaptr, "source", 0); + uiItemR(col, &imaptr, "source", 0, NULL, 0); if (ELEM(RNA_enum_get(&imaptr, "source"), IMA_SRC_SEQUENCE, IMA_SRC_MOVIE)) { col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "frames", 0); - uiItemR(col, NULL, 0, ptr, "start", 0); - uiItemR(col, NULL, 0, ptr, "offset", 0); - uiItemR(col, NULL, 0, ptr, "cyclic", 0); - uiItemR(col, NULL, 0, ptr, "auto_refresh", UI_ITEM_R_ICON_ONLY); + uiItemR(col, ptr, "frames", 0, NULL, 0); + uiItemR(col, ptr, "start", 0, NULL, 0); + uiItemR(col, ptr, "offset", 0, NULL, 0); + uiItemR(col, ptr, "cyclic", 0, NULL, 0); + uiItemR(col, ptr, "auto_refresh", UI_ITEM_R_ICON_ONLY, NULL, 0); } col= uiLayoutColumn(layout, 0); if (RNA_enum_get(&imaptr, "type")== IMA_TYPE_MULTILAYER) - uiItemR(col, NULL, 0, ptr, "layer", 0); + uiItemR(col, ptr, "layer", 0, NULL, 0); } static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -512,13 +504,13 @@ static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, Point const char *layer_name; char scene_name[19]; - uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL); + uiTemplateID(layout, C, ptr, "scene", NULL, NULL, NULL, NULL); if(!node->id) return; col= uiLayoutColumn(layout, 0); row = uiLayoutRow(col, 0); - uiItemR(row, "", 0, ptr, "layer", 0); + uiItemR(row, ptr, "layer", 0, "", 0); prop = RNA_struct_find_property(ptr, "layer"); if (!(RNA_property_enum_identifier(C, ptr, prop, RNA_property_enum_get(ptr, prop), &layer_name))) @@ -527,10 +519,10 @@ static void node_composit_buts_renderlayers(uiLayout *layout, bContext *C, Point scn_ptr = RNA_pointer_get(ptr, "scene"); RNA_string_get(&scn_ptr, "name", scene_name); - WM_operator_properties_create(&op_ptr, "SCREEN_OT_render"); + WM_operator_properties_create(&op_ptr, "RENDER_OT_render"); RNA_string_set(&op_ptr, "layer", layer_name); RNA_string_set(&op_ptr, "scene", scene_name); - uiItemFullO(row, "", ICON_RENDER_STILL, "SCREEN_OT_render", op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); + uiItemFullO(row, "RENDER_OT_render", "", ICON_RENDER_STILL, op_ptr.data, WM_OP_INVOKE_DEFAULT, 0); } @@ -541,21 +533,21 @@ static void node_composit_buts_blur(uiLayout *layout, bContext *C, PointerRNA *p col= uiLayoutColumn(layout, 0); - uiItemR(col, "", 0, ptr, "filter_type", 0); + uiItemR(col, ptr, "filter_type", 0, "", 0); if (RNA_enum_get(ptr, "filter_type")!= R_FILTER_FAST_GAUSS) { - uiItemR(col, NULL, 0, ptr, "bokeh", 0); - uiItemR(col, NULL, 0, ptr, "gamma", 0); + uiItemR(col, ptr, "bokeh", 0, NULL, 0); + uiItemR(col, ptr, "gamma", 0, NULL, 0); } - uiItemR(col, NULL, 0, ptr, "relative", 0); + uiItemR(col, ptr, "relative", 0, NULL, 0); col= uiLayoutColumn(layout, 1); if (RNA_boolean_get(ptr, "relative")) { - uiItemR(col, "X", 0, ptr, "factor_x", 0); - uiItemR(col, "Y", 0, ptr, "factor_y", 0); + uiItemR(col, ptr, "factor_x", 0, "X", 0); + uiItemR(col, ptr, "factor_y", 0, "Y", 0); } else { - uiItemR(col, "X", 0, ptr, "sizex", 0); - uiItemR(col, "Y", 0, ptr, "sizey", 0); + uiItemR(col, ptr, "sizex", 0, "X", 0); + uiItemR(col, ptr, "sizey", 0, "Y", 0); } } @@ -563,24 +555,24 @@ static void node_composit_buts_dblur(uiLayout *layout, bContext *C, PointerRNA * { uiLayout *col; - uiItemR(layout, NULL, 0, ptr, "iterations", 0); - uiItemR(layout, NULL, 0, ptr, "wrap", 0); + uiItemR(layout, ptr, "iterations", 0, NULL, 0); + uiItemR(layout, ptr, "wrap", 0, NULL, 0); col= uiLayoutColumn(layout, 1); uiItemL(col, "Center:", 0); - uiItemR(col, "X", 0, ptr, "center_x", 0); - uiItemR(col, "Y", 0, ptr, "center_y", 0); + uiItemR(col, ptr, "center_x", 0, "X", 0); + uiItemR(col, ptr, "center_y", 0, "Y", 0); uiItemS(layout); col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "distance", 0); - uiItemR(col, NULL, 0, ptr, "angle", 0); + uiItemR(col, ptr, "distance", 0, NULL, 0); + uiItemR(col, ptr, "angle", 0, NULL, 0); uiItemS(layout); - uiItemR(layout, NULL, 0, ptr, "spin", 0); - uiItemR(layout, NULL, 0, ptr, "zoom", 0); + uiItemR(layout, ptr, "spin", 0, NULL, 0); + uiItemR(layout, ptr, "zoom", 0, NULL, 0); } static void node_composit_buts_bilateralblur(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -588,9 +580,9 @@ static void node_composit_buts_bilateralblur(uiLayout *layout, bContext *C, Poin uiLayout *col; col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "iterations", 0); - uiItemR(col, NULL, 0, ptr, "sigma_color", 0); - uiItemR(col, NULL, 0, ptr, "sigma_space", 0); + uiItemR(col, ptr, "iterations", 0, NULL, 0); + uiItemR(col, ptr, "sigma_color", 0, NULL, 0); + uiItemR(col, ptr, "sigma_space", 0, NULL, 0); } static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -599,59 +591,59 @@ static void node_composit_buts_defocus(uiLayout *layout, bContext *C, PointerRNA col= uiLayoutColumn(layout, 0); uiItemL(col, "Bokeh Type:", 0); - uiItemR(col, "", 0, ptr, "bokeh", 0); - uiItemR(col, NULL, 0, ptr, "angle", 0); + uiItemR(col, ptr, "bokeh", 0, "", 0); + uiItemR(col, ptr, "angle", 0, NULL, 0); - uiItemR(layout, NULL, 0, ptr, "gamma_correction", 0); + uiItemR(layout, ptr, "gamma_correction", 0, NULL, 0); col = uiLayoutColumn(layout, 0); uiLayoutSetActive(col, RNA_boolean_get(ptr, "use_zbuffer")==1); - uiItemR(col, NULL, 0, ptr, "f_stop", 0); + uiItemR(col, ptr, "f_stop", 0, NULL, 0); - uiItemR(layout, NULL, 0, ptr, "max_blur", 0); - uiItemR(layout, NULL, 0, ptr, "threshold", 0); + uiItemR(layout, ptr, "max_blur", 0, NULL, 0); + uiItemR(layout, ptr, "threshold", 0, NULL, 0); col = uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "preview", 0); + uiItemR(col, ptr, "preview", 0, NULL, 0); sub = uiLayoutColumn(col, 0); uiLayoutSetActive(sub, RNA_boolean_get(ptr, "preview")); - uiItemR(sub, NULL, 0, ptr, "samples", 0); + uiItemR(sub, ptr, "samples", 0, NULL, 0); col = uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "use_zbuffer", 0); + uiItemR(col, ptr, "use_zbuffer", 0, NULL, 0); sub = uiLayoutColumn(col, 0); uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_zbuffer")==0); - uiItemR(sub, NULL, 0, ptr, "z_scale", 0); + uiItemR(sub, ptr, "z_scale", 0, NULL, 0); } /* qdn: glare node */ static void node_composit_buts_glare(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "glare_type", 0); - uiItemR(layout, "", 0, ptr, "quality", 0); + uiItemR(layout, ptr, "glare_type", 0, "", 0); + uiItemR(layout, ptr, "quality", 0, "", 0); if (RNA_enum_get(ptr, "glare_type")!= 1) { - uiItemR(layout, NULL, 0, ptr, "iterations", 0); + uiItemR(layout, ptr, "iterations", 0, NULL, 0); if (RNA_enum_get(ptr, "glare_type")!= 0) - uiItemR(layout, NULL, 0, ptr, "color_modulation", UI_ITEM_R_SLIDER); + uiItemR(layout, ptr, "color_modulation", UI_ITEM_R_SLIDER, NULL, 0); } - uiItemR(layout, NULL, 0, ptr, "mix", 0); - uiItemR(layout, NULL, 0, ptr, "threshold", 0); + uiItemR(layout, ptr, "mix", 0, NULL, 0); + uiItemR(layout, ptr, "threshold", 0, NULL, 0); if (RNA_enum_get(ptr, "glare_type")== 2) { - uiItemR(layout, NULL, 0, ptr, "streaks", 0); - uiItemR(layout, NULL, 0, ptr, "angle_offset", 0); + uiItemR(layout, ptr, "streaks", 0, NULL, 0); + uiItemR(layout, ptr, "angle_offset", 0, NULL, 0); } if (RNA_enum_get(ptr, "glare_type")== 0 || RNA_enum_get(ptr, "glare_type")== 2) { - uiItemR(layout, NULL, 0, ptr, "fade", UI_ITEM_R_SLIDER); + uiItemR(layout, ptr, "fade", UI_ITEM_R_SLIDER, NULL, 0); if (RNA_enum_get(ptr, "glare_type")== 0) - uiItemR(layout, NULL, 0, ptr, "rotate_45", 0); + uiItemR(layout, ptr, "rotate_45", 0, NULL, 0); } if (RNA_enum_get(ptr, "glare_type")== 1) { - uiItemR(layout, NULL, 0, ptr, "size", 0); + uiItemR(layout, ptr, "size", 0, NULL, 0); } } @@ -660,17 +652,17 @@ static void node_composit_buts_tonemap(uiLayout *layout, bContext *C, PointerRNA uiLayout *col; col = uiLayoutColumn(layout, 0); - uiItemR(col, "", 0, ptr, "tonemap_type", 0); + uiItemR(col, ptr, "tonemap_type", 0, "", 0); if (RNA_enum_get(ptr, "tonemap_type")== 0) { - uiItemR(col, NULL, 0, ptr, "key", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "offset", 0); - uiItemR(col, NULL, 0, ptr, "gamma", 0); + uiItemR(col, ptr, "key", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "offset", 0, NULL, 0); + uiItemR(col, ptr, "gamma", 0, NULL, 0); } else { - uiItemR(col, NULL, 0, ptr, "intensity", 0); - uiItemR(col, NULL, 0, ptr, "contrast", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "adaptation", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "correction", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "intensity", 0, NULL, 0); + uiItemR(col, ptr, "contrast", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "adaptation", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "correction", UI_ITEM_R_SLIDER, NULL, 0); } } @@ -679,12 +671,12 @@ static void node_composit_buts_lensdist(uiLayout *layout, bContext *C, PointerRN uiLayout *col; col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "projector", 0); + uiItemR(col, ptr, "projector", 0, NULL, 0); col = uiLayoutColumn(col, 0); uiLayoutSetActive(col, RNA_boolean_get(ptr, "projector")==0); - uiItemR(col, NULL, 0, ptr, "jitter", 0); - uiItemR(col, NULL, 0, ptr, "fit", 0); + uiItemR(col, ptr, "jitter", 0, NULL, 0); + uiItemR(col, ptr, "fit", 0, NULL, 0); } static void node_composit_buts_vecblur(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -692,38 +684,38 @@ static void node_composit_buts_vecblur(uiLayout *layout, bContext *C, PointerRNA uiLayout *col; col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "samples", 0); - uiItemR(col, "Blur", 0, ptr, "factor", 0); + uiItemR(col, ptr, "samples", 0, NULL, 0); + uiItemR(col, ptr, "factor", 0, "Blur", 0); col= uiLayoutColumn(layout, 1); uiItemL(col, "Speed:", 0); - uiItemR(col, "Min", 0, ptr, "min_speed", 0); - uiItemR(col, "Max", 0, ptr, "max_speed", 0); + uiItemR(col, ptr, "min_speed", 0, "Min", 0); + uiItemR(col, ptr, "max_speed", 0, "Max", 0); - uiItemR(layout, NULL, 0, ptr, "curved", 0); + uiItemR(layout, ptr, "curved", 0, NULL, 0); } static void node_composit_buts_filter(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "filter_type", 0); + uiItemR(layout, ptr, "filter_type", 0, "", 0); } static void node_composit_buts_flip(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "axis", 0); + uiItemR(layout, ptr, "axis", 0, "", 0); } static void node_composit_buts_crop(uiLayout *layout, bContext *C, PointerRNA *ptr) { uiLayout *col; - uiItemR(layout, NULL, 0, ptr, "crop_size", 0); + uiItemR(layout, ptr, "crop_size", 0, NULL, 0); col= uiLayoutColumn(layout, 1); - uiItemR(col, "Left", 0, ptr, "x1", 0); - uiItemR(col, "Right", 0, ptr, "x2", 0); - uiItemR(col, "Up", 0, ptr, "y1", 0); - uiItemR(col, "Down", 0, ptr, "y2", 0); + uiItemR(col, ptr, "x1", 0, "Left", 0); + uiItemR(col, ptr, "x2", 0, "Right", 0); + uiItemR(col, ptr, "y1", 0, "Up", 0); + uiItemR(col, ptr, "y2", 0, "Down", 0); } static void node_composit_buts_splitviewer(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -732,8 +724,8 @@ static void node_composit_buts_splitviewer(uiLayout *layout, bContext *C, Pointe col= uiLayoutColumn(layout, 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "axis", UI_ITEM_R_EXPAND); - uiItemR(col, NULL, 0, ptr, "factor", 0); + uiItemR(row, ptr, "axis", UI_ITEM_R_EXPAND, NULL, 0); + uiItemR(col, ptr, "factor", 0, NULL, 0); } static void node_composit_buts_map_value(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -741,20 +733,20 @@ static void node_composit_buts_map_value(uiLayout *layout, bContext *C, PointerR uiLayout *sub, *col; col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "offset", 0); - uiItemR(col, NULL, 0, ptr, "size", 0); + uiItemR(col, ptr, "offset", 0, NULL, 0); + uiItemR(col, ptr, "size", 0, NULL, 0); col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "use_min", 0); + uiItemR(col, ptr, "use_min", 0, NULL, 0); sub =uiLayoutColumn(col, 0); uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_min")); - uiItemR(sub, "", 0, ptr, "min", 0); + uiItemR(sub, ptr, "min", 0, "", 0); col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "use_max", 0); + uiItemR(col, ptr, "use_max", 0, NULL, 0); sub =uiLayoutColumn(col, 0); uiLayoutSetActive(sub, RNA_boolean_get(ptr, "use_max")); - uiItemR(sub, "", 0, ptr, "max", 0); + uiItemR(sub, ptr, "max", 0, "", 0); } static void node_composit_buts_alphaover(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -762,8 +754,8 @@ static void node_composit_buts_alphaover(uiLayout *layout, bContext *C, PointerR uiLayout *col; col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "convert_premul", 0); - uiItemR(col, NULL, 0, ptr, "premul", 0); + uiItemR(col, ptr, "convert_premul", 0, NULL, 0); + uiItemR(col, ptr, "premul", 0, NULL, 0); } static void node_composit_buts_hue_sat(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -771,14 +763,14 @@ static void node_composit_buts_hue_sat(uiLayout *layout, bContext *C, PointerRNA uiLayout *col; col =uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "hue", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "sat", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "val", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "hue", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "sat", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "val", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_dilateerode(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, NULL, 0, ptr, "distance", 0); + uiItemR(layout, ptr, "distance", 0, NULL, 0); } static void node_composit_buts_diff_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -786,8 +778,8 @@ static void node_composit_buts_diff_matte(uiLayout *layout, bContext *C, Pointer uiLayout *col; col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "tolerance", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "falloff", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "tolerance", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "falloff", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_distance_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -795,18 +787,34 @@ static void node_composit_buts_distance_matte(uiLayout *layout, bContext *C, Poi uiLayout *col; col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "tolerance", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "falloff", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "tolerance", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "falloff", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_color_spill(uiLayout *layout, bContext *C, PointerRNA *ptr) { uiLayout *row, *col; - col =uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "factor", 0); - row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "channel", UI_ITEM_R_EXPAND); + uiItemL(layout, "Despill Channel:", 0); + row =uiLayoutRow(layout,0); + uiItemR(row, ptr, "channel", UI_ITEM_R_EXPAND, NULL, 0); + + col= uiLayoutColumn(layout, 0); + uiItemR(col, ptr, "algorithm", 0, NULL, 0); + + if(RNA_enum_get(ptr, "algorithm")==0) { + uiItemL(col, "Limiting Channel:", 0); + row=uiLayoutRow(col,0); + uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, 0); + } + + uiItemR(col, ptr, "ratio", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "unspill", 0, NULL, 0); + if (RNA_enum_get(ptr, "unspill")== 1) { + uiItemR(col, ptr, "unspill_red", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "unspill_green", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "unspill_blue", UI_ITEM_R_SLIDER, NULL, 0); + } } static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -814,13 +822,13 @@ static void node_composit_buts_chroma_matte(uiLayout *layout, bContext *C, Point uiLayout *col; col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "acceptance", 0); - uiItemR(col, NULL, 0, ptr, "cutoff", 0); + uiItemR(col, ptr, "acceptance", 0, NULL, 0); + uiItemR(col, ptr, "cutoff", 0, NULL, 0); col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "lift", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "gain", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "shadow_adjust", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "lift", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "gain", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "shadow_adjust", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_color_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -828,24 +836,35 @@ static void node_composit_buts_color_matte(uiLayout *layout, bContext *C, Pointe uiLayout *col; col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "h", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "s", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "v", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "h", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "s", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "v", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_channel_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) { uiLayout *col, *row; + uiItemL(layout, "Color Space:", 0); row= uiLayoutRow(layout, 0); - uiItemR(row, NULL, 0, ptr, "color_space", UI_ITEM_R_EXPAND); + uiItemR(row, ptr, "color_space", UI_ITEM_R_EXPAND, NULL, 0); - row= uiLayoutRow(layout, 0); - uiItemR(row, NULL, 0, ptr, "channel", UI_ITEM_R_EXPAND); + col=uiLayoutColumn(layout, 0); + uiItemL(col, "Key Channel:", 0); + row= uiLayoutRow(col, 0); + uiItemR(row, ptr, "channel", UI_ITEM_R_EXPAND, NULL, 0); - col =uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "high", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "low", UI_ITEM_R_SLIDER); + col =uiLayoutColumn(layout, 0); + + uiItemR(col, ptr, "algorithm", 0, NULL, 0); + if(RNA_enum_get(ptr, "algorithm")==0) { + uiItemL(col, "Limiting Channel:", 0); + row=uiLayoutRow(col,0); + uiItemR(row, ptr, "limit_channel", UI_ITEM_R_EXPAND, NULL, 0); + } + + uiItemR(col, ptr, "high", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "low", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_luma_matte(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -853,18 +872,18 @@ static void node_composit_buts_luma_matte(uiLayout *layout, bContext *C, Pointer uiLayout *col; col= uiLayoutColumn(layout, 1); - uiItemR(col, NULL, 0, ptr, "high", UI_ITEM_R_SLIDER); - uiItemR(col, NULL, 0, ptr, "low", UI_ITEM_R_SLIDER); + uiItemR(col, ptr, "high", UI_ITEM_R_SLIDER, NULL, 0); + uiItemR(col, ptr, "low", UI_ITEM_R_SLIDER, NULL, 0); } static void node_composit_buts_map_uv(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, NULL, 0, ptr, "alpha", 0); + uiItemR(layout, ptr, "alpha", 0, NULL, 0); } static void node_composit_buts_id_mask(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, NULL, 0, ptr, "index", 0); + uiItemR(layout, ptr, "index", 0, NULL, 0); } static void node_composit_buts_file_output(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -872,26 +891,31 @@ static void node_composit_buts_file_output(uiLayout *layout, bContext *C, Pointe uiLayout *col, *row; col= uiLayoutColumn(layout, 0); - uiItemR(col, "", 0, ptr, "filename", 0); - uiItemR(col, "", 0, ptr, "image_type", 0); + uiItemR(col, ptr, "filepath", 0, "", 0); + uiItemR(col, ptr, "image_type", 0, "", 0); row= uiLayoutRow(layout, 0); if (RNA_enum_get(ptr, "image_type")== R_OPENEXR) { - uiItemR(row, NULL, 0, ptr, "exr_half", 0); - uiItemR(row, "", 0, ptr, "exr_codec", 0); + uiItemR(row, ptr, "exr_half", 0, NULL, 0); + uiItemR(row, ptr, "exr_codec", 0, "", 0); } else if (RNA_enum_get(ptr, "image_type")== R_JPEG90) { - uiItemR(row, NULL, 0, ptr, "quality", UI_ITEM_R_SLIDER); + uiItemR(row, ptr, "quality", UI_ITEM_R_SLIDER, NULL, 0); } row= uiLayoutRow(layout, 1); - uiItemR(row, "Start", 0, ptr, "start_frame", 0); - uiItemR(row, "End", 0, ptr, "end_frame", 0); + uiItemR(row, ptr, "frame_start", 0, "Start", 0); + uiItemR(row, ptr, "frame_end", 0, "End", 0); } static void node_composit_buts_scale(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "space", 0); + uiItemR(layout, ptr, "space", 0, "", 0); +} + +static void node_composit_buts_rotate(uiLayout *layout, bContext *C, PointerRNA *ptr) +{ + uiItemR(layout, ptr, "filter", 0, "", 0); } static void node_composit_buts_invert(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -899,61 +923,61 @@ static void node_composit_buts_invert(uiLayout *layout, bContext *C, PointerRNA uiLayout *col; col= uiLayoutColumn(layout, 0); - uiItemR(col, NULL, 0, ptr, "rgb", 0); - uiItemR(col, NULL, 0, ptr, "alpha", 0); + uiItemR(col, ptr, "rgb", 0, NULL, 0); + uiItemR(col, ptr, "alpha", 0, NULL, 0); } static void node_composit_buts_premulkey(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "mapping", 0); + uiItemR(layout, ptr, "mapping", 0, "", 0); } static void node_composit_buts_view_levels(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, NULL, 0, ptr, "channel", UI_ITEM_R_EXPAND); + uiItemR(layout, ptr, "channel", UI_ITEM_R_EXPAND, NULL, 0); } static void node_composit_buts_colorbalance(uiLayout *layout, bContext *C, PointerRNA *ptr) { uiLayout *split, *col, *row; - uiItemR(layout, NULL, 0, ptr, "correction_formula", 0); + uiItemR(layout, ptr, "correction_formula", 0, NULL, 0); if (RNA_enum_get(ptr, "correction_formula")== 0) { split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "lift", 1, 1); + uiTemplateColorWheel(col, ptr, "lift", 1, 1, 0, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "lift", 0); + uiItemR(row, ptr, "lift", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gamma", 1, 1); + uiTemplateColorWheel(col, ptr, "gamma", 1, 1, 1, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "gamma", 0); + uiItemR(row, ptr, "gamma", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "gain", 1, 1); + uiTemplateColorWheel(col, ptr, "gain", 1, 1, 1, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "gain", 0); + uiItemR(row, ptr, "gain", 0, NULL, 0); } else { split = uiLayoutSplit(layout, 0, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "offset", 1, 1); + uiTemplateColorWheel(col, ptr, "offset", 1, 1, 0, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "offset", 0); + uiItemR(row, ptr, "offset", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "power", 1, 1); + uiTemplateColorWheel(col, ptr, "power", 1, 1, 0, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "power", 0); + uiItemR(row, ptr, "power", 0, NULL, 0); col = uiLayoutColumn(split, 0); - uiTemplateColorWheel(col, ptr, "slope", 1, 1); + uiTemplateColorWheel(col, ptr, "slope", 1, 1, 0, 1); row = uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, ptr, "slope", 0); + uiItemR(row, ptr, "slope", 0, NULL, 0); } } @@ -1071,6 +1095,9 @@ static void node_composit_set_butfunc(bNodeType *ntype) case CMP_NODE_SCALE: ntype->uifunc= node_composit_buts_scale; break; + case CMP_NODE_ROTATE: + ntype->uifunc=node_composit_buts_rotate; + break; case CMP_NODE_CHANNEL_MATTE: ntype->uifunc= node_composit_buts_channel_matte; break; @@ -1094,13 +1121,13 @@ static void node_composit_set_butfunc(bNodeType *ntype) break; case CMP_NODE_VIEW_LEVELS: ntype->uifunc=node_composit_buts_view_levels; - break; + break; case CMP_NODE_COLORBALANCE: ntype->uifunc=node_composit_buts_colorbalance; - break; + break; case CMP_NODE_HUECORRECT: ntype->uifunc=node_composit_buts_huecorrect; - break; + break; default: ntype->uifunc= NULL; } @@ -1113,12 +1140,12 @@ static void node_texture_buts_bricks(uiLayout *layout, bContext *C, PointerRNA * uiLayout *col; col= uiLayoutColumn(layout, 1); - uiItemR(col, "Offset", 0, ptr, "offset", 0); - uiItemR(col, "Frequency", 0, ptr, "offset_frequency", 0); + uiItemR(col, ptr, "offset", 0, "Offset", 0); + uiItemR(col, ptr, "offset_frequency", 0, "Frequency", 0); col= uiLayoutColumn(layout, 1); - uiItemR(col, "Squash", 0, ptr, "squash", 0); - uiItemR(col, "Frequency", 0, ptr, "squash_frequency", 0); + uiItemR(col, ptr, "squash", 0, "Squash", 0); + uiItemR(col, ptr, "squash_frequency", 0, "Frequency", 0); } static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *ptr) @@ -1135,54 +1162,54 @@ static void node_texture_buts_proc(uiLayout *layout, bContext *C, PointerRNA *pt switch( tex->type ) { case TEX_BLEND: - uiItemR(col, "", 0, &tex_ptr, "progression", 0); + uiItemR(col, &tex_ptr, "progression", 0, "", 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "flip_axis", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "flip_axis", UI_ITEM_R_EXPAND, NULL, 0); break; case TEX_MARBLE: row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "stype", UI_ITEM_R_EXPAND, NULL, 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND, NULL, 0); break; case TEX_WOOD: - uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); - uiItemR(col, "", 0, &tex_ptr, "stype", 0); + uiItemR(col, &tex_ptr, "noise_basis", 0, "", 0); + uiItemR(col, &tex_ptr, "stype", 0, "", 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "noisebasis2", UI_ITEM_R_EXPAND, NULL, 0); row= uiLayoutRow(col, 0); uiLayoutSetActive(row, !(RNA_enum_get(&tex_ptr, "stype")==TEX_BAND || RNA_enum_get(&tex_ptr, "stype")==TEX_RING)); - uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, 0); break; case TEX_CLOUDS: - uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); + uiItemR(col, &tex_ptr, "noise_basis", 0, "", 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "stype", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "stype", UI_ITEM_R_EXPAND, NULL, 0); row= uiLayoutRow(col, 0); - uiItemR(row, NULL, 0, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND); - uiItemR(col, "Depth", 0, &tex_ptr, "noise_depth", UI_ITEM_R_EXPAND); + uiItemR(row, &tex_ptr, "noise_type", UI_ITEM_R_EXPAND, NULL, 0); + uiItemR(col, &tex_ptr, "noise_depth", UI_ITEM_R_EXPAND, "Depth", 0); break; case TEX_DISTNOISE: - uiItemR(col, "", 0, &tex_ptr, "noise_basis", 0); - uiItemR(col, "", 0, &tex_ptr, "noise_distortion", 0); + uiItemR(col, &tex_ptr, "noise_basis", 0, "", 0); + uiItemR(col, &tex_ptr, "noise_distortion", 0, "", 0); break; } } static void node_texture_buts_image(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL); + uiTemplateID(layout, C, ptr, "image", NULL, "IMAGE_OT_open", NULL, NULL); } static void node_texture_buts_output(uiLayout *layout, bContext *C, PointerRNA *ptr) { - uiItemR(layout, "", 0, ptr, "output_name", 0); + uiItemR(layout, ptr, "output_name", 0, "", 0); } /* only once called */ @@ -1276,14 +1303,17 @@ void draw_nodespace_back_pix(ARegion *ar, SpaceNode *snode, int color_manage) glMatrixMode(GL_MODELVIEW); glPushMatrix(); + /* keep this, saves us from a version patch */ + if(snode->zoom==0.0f) snode->zoom= 1.0f; + /* somehow the offset has to be calculated inverse */ glaDefine2DArea(&ar->winrct); /* ortho at pixel level curarea */ wmOrtho2(-0.375, ar->winx-0.375, -0.375, ar->winy-0.375); - x = (ar->winx-ibuf->x)/2 + snode->xof; - y = (ar->winy-ibuf->y)/2 + snode->yof; + x = (ar->winx-snode->zoom*ibuf->x)/2 + snode->xof; + y = (ar->winy-snode->zoom*ibuf->y)/2 + snode->yof; if(!ibuf->rect) { if(color_manage) @@ -1293,8 +1323,11 @@ void draw_nodespace_back_pix(ARegion *ar, SpaceNode *snode, int color_manage) IMB_rect_from_float(ibuf); } - if(ibuf->rect) + if(ibuf->rect) { + glPixelZoom(snode->zoom, snode->zoom); glaDrawPixelsSafe(x, y, ibuf->x, ibuf->y, ibuf->x, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); + glPixelZoom(1.0f, 1.0f); + } glMatrixMode(GL_PROJECTION); glPopMatrix(); diff --git a/source/blender/editors/space_node/node_buttons.c b/source/blender/editors/space_node/node_buttons.c index cbd3ad73024..41cf689407b 100644 --- a/source/blender/editors/space_node/node_buttons.c +++ b/source/blender/editors/space_node/node_buttons.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,13 +31,8 @@ #include <math.h> #include <float.h> -#include "DNA_ID.h" -#include "DNA_gpencil_types.h" #include "DNA_node_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -61,16 +56,12 @@ #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" #include "ED_gpencil.h" #include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "node_intern.h" // own include @@ -123,7 +114,7 @@ static void active_node_panel(const bContext *C, Panel *pa) uiBlockSetHandleFunc(block, do_node_region_buttons, NULL); /* draw this node's name, etc. */ - uiItemR(layout, NULL, ICON_NODE, &ptr, "name", 0); + uiItemR(layout, &ptr, "name", 0, NULL, ICON_NODE); // TODO: a separator would be nice... /* draw this node's settings */ diff --git a/source/blender/editors/space_node/node_draw.c b/source/blender/editors/space_node/node_draw.c index 5928e5cf20e..5eb6d9cf94a 100644 --- a/source/blender/editors/space_node/node_draw.c +++ b/source/blender/editors/space_node/node_draw.c @@ -30,23 +30,12 @@ #include <stdio.h> #include <string.h> -#include "DNA_ID.h" #include "DNA_node_types.h" -#include "DNA_image_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_action_types.h" -#include "DNA_color_types.h" -#include "DNA_customdata_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_ipo_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_space_types.h" #include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_text_types.h" -#include "DNA_userdef_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -73,9 +62,6 @@ #include "WM_types.h" #include "ED_gpencil.h" -#include "ED_screen.h" -#include "ED_util.h" -#include "ED_types.h" #include "UI_interface.h" #include "UI_interface_icons.h" @@ -121,6 +107,44 @@ void ED_node_changed_update(ID *id, bNode *node) } } +static int has_nodetree(bNodeTree *ntree, bNodeTree *lookup) +{ + bNode *node; + + if(ntree == lookup) + return 1; + + for(node=ntree->nodes.first; node; node=node->next) + if(node->type == NODE_GROUP && node->id) + if(has_nodetree((bNodeTree*)node->id, lookup)) + return 1; + + return 0; +} + +void ED_node_generic_update(Main *bmain, Scene *scene, bNodeTree *ntree, bNode *node) +{ + Material *ma; + Tex *tex; + Scene *sce; + + /* look through all datablocks, to support groups */ + for(ma=bmain->mat.first; ma; ma=ma->id.next) + if(ma->nodetree && ma->use_nodes && has_nodetree(ma->nodetree, ntree)) + ED_node_changed_update(&ma->id, node); + + for(tex=bmain->tex.first; tex; tex=tex->id.next) + if(tex->nodetree && tex->use_nodes && has_nodetree(tex->nodetree, ntree)) + ED_node_changed_update(&tex->id, node); + + for(sce=bmain->scene.first; sce; sce=sce->id.next) + if(sce->nodetree && sce->use_nodes && has_nodetree(sce->nodetree, ntree)) + ED_node_changed_update(&sce->id, node); + + if(ntree->type == NTREE_TEXTURE) + ntreeTexCheckCyclics(ntree); +} + static void do_node_internal_buttons(bContext *C, void *node_v, int event) { if(event==B_NODE_EXEC) { @@ -373,9 +397,6 @@ static void node_update_group(const bContext *C, bNodeTree *ntree, bNode *gnode) rctf *rect= &gnode->totr; int counter; - /* init ui blocks for sub-nodetrees */ - node_uiblocks_init(C, ngroup); - /* center them, is a bit of abuse of locx and locy though */ for(node= ngroup->nodes.first; node; node= node->next) { node->locx+= gnode->locx; @@ -562,7 +583,7 @@ static uiBlock *socket_vector_menu(bContext *C, ARegion *ar, void *socket_v) layout= uiLayoutColumn(uiBlockLayout(block, UI_LAYOUT_VERTICAL, UI_LAYOUT_PANEL, sock->locx, sock->locy-8, 140, 20, U.uistyles.first), 0); - uiItemR(layout, "", 0, &ptr, "default_value", UI_ITEM_R_EXPAND); + uiItemR(layout, &ptr, "default_value", UI_ITEM_R_EXPAND, "", 0); return block; } @@ -605,13 +626,7 @@ static void node_draw_preview(bNodePreview *preview, rctf *prv) } } -// if(GPU_type_matches(GPU_DEVICE_NVIDIA, GPU_OS_MAC, GPU_DRIVER_OFFICIAL)) { XXX -// float zoomx= curarea->winx/(float)(G.v2d->cur.xmax-G.v2d->cur.xmin); -// float zoomy= curarea->winy/(float)(G.v2d->cur.ymax-G.v2d->cur.ymin); -// glPixelZoom(zoomx*xscale, zoomy*yscale); -// } -// else - glPixelZoom(xscale, yscale); + glPixelZoom(xscale, yscale); glEnable(GL_BLEND); glBlendFunc( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); /* premul graphics */ @@ -640,6 +655,19 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN bNodeTree *ntree = snode->nodetree; PointerRNA ptr; + /* hurmf... another candidate for callback, have to see how this works first */ + if(node->id && node->block && snode->treetype==NTREE_SHADER) + nodeShaderSynchronizeID(node, 0); + + /* skip if out of view */ + if (node->totr.xmax < ar->v2d.cur.xmin || node->totr.xmin > ar->v2d.cur.xmax || + node->totr.ymax < ar->v2d.cur.ymin || node->totr.ymin > ar->v2d.cur.ymax) { + + uiEndBlock(C, node->block); + node->block= NULL; + return; + } + uiSetRoundBox(15-4); ui_dropshadow(rct, BASIS_RAD, snode->aspect, node->flag & SELECT); @@ -662,42 +690,32 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN icon_id= ICON_MATERIAL; else icon_id= ICON_MATERIAL_DATA; - iconofs-=18.0f; - glEnable(GL_BLEND); - UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, icon_id, 1.0f, 0.5f); - glDisable(GL_BLEND); + iconofs-=22.0f; + uiDefIconBut(node->block, LABEL, B_REDR, icon_id, iconofs, rct->ymax-NODE_DY, + UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 1.0, 0.5, ""); } if(node->type == NODE_GROUP) { - iconofs-=18.0f; - glEnable(GL_BLEND); - if(node->id->lib) { - float rgb[3] = {1.0f, 0.7f, 0.3f}; - UI_icon_draw_aspect_color(iconofs, rct->ymax-NODE_DY, ICON_NODETREE, 1.0f, rgb); - } - else { - UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, ICON_NODETREE, 1.0f, 0.5f); - } - glDisable(GL_BLEND); + iconofs-=15.0f; + uiDefIconBut(node->block, LABEL, B_REDR, ICON_NODETREE, iconofs, rct->ymax-NODE_DY, + UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 1.0, 0.5, ""); } if(node->typeinfo->flag & NODE_OPTIONS) { - iconofs-=18.0f; - glEnable(GL_BLEND); - UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, ICON_BUTS, 1.0f, 0.5f); - glDisable(GL_BLEND); + iconofs-=15.0f; + uiDefIconBut(node->block, LABEL, B_REDR, ICON_BUTS, iconofs, rct->ymax-NODE_DY, + UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 1.0, 0.5, ""); } { /* always hide/reveal unused sockets */ int shade; - iconofs-=18.0f; + iconofs-=15.0f; // XXX re-enable /*if(node_has_hidden_sockets(node)) shade= -40; else*/ shade= -90; - glEnable(GL_BLEND); - UI_icon_draw_aspect(iconofs, rct->ymax-NODE_DY, ICON_PLUS, 1.0f, 0.5f); - glDisable(GL_BLEND); + uiDefIconBut(node->block, LABEL, B_REDR, ICON_PLUS, iconofs, rct->ymax-NODE_DY, + UI_UNIT_X, UI_UNIT_Y, NULL, 0.0, 0.0, 1.0, 0.5, ""); } /* title */ @@ -715,10 +733,10 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN UI_ThemeColor(TH_TEXT); if(node->flag & NODE_CUSTOM_NAME) - BLI_strncpy(showname, node->name, 32); + BLI_strncpy(showname, node->name, sizeof(showname)); else /* todo: auto name display for node types */ - BLI_strncpy(showname, node->name, 32); + BLI_strncpy(showname, node->name, sizeof(showname)); //if(node->flag & NODE_MUTED) // sprintf(showname, "[%s]", showname); @@ -750,10 +768,6 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN node_draw_mute_line(v2d, snode, node); - /* hurmf... another candidate for callback, have to see how this works first */ - if(node->id && node->block && snode->treetype==NTREE_SHADER) - nodeShaderSynchronizeID(node, 0); - /* socket inputs, buttons */ for(sock= node->inputs.first; sock; sock= sock->next) { if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) { @@ -824,6 +838,8 @@ static void node_draw_basis(const bContext *C, ARegion *ar, SpaceNode *snode, bN node_draw_preview(node->preview, &node->prvr); BLI_unlock_thread(LOCK_PREVIEW); } + + UI_ThemeClearColor(color_id); uiEndBlock(C, node->block); uiDrawBlock(C, node->block); @@ -877,10 +893,10 @@ static void node_draw_hidden(const bContext *C, ARegion *ar, SpaceNode *snode, b if(node->flag & NODE_CUSTOM_NAME) - BLI_strncpy(showname, node->name, 128); + BLI_strncpy(showname, node->name, sizeof(showname)); else /* todo: auto name display */ - BLI_strncpy(showname, node->name, 128); + BLI_strncpy(showname, node->name, sizeof(showname)); //if(node->flag & NODE_MUTED) // sprintf(showname, "[%s]", showname); @@ -1022,9 +1038,9 @@ static void node_draw_group(const bContext *C, ARegion *ar, SpaceNode *snode, bN UI_ThemeColor(TH_TEXT_HI); if (gnode->flag & NODE_CUSTOM_NAME) - strcat(showname, gnode->name); + BLI_strncpy(showname, gnode->name, sizeof(showname)); else - strcpy(showname, ngroup->id.name+2); + BLI_strncpy(showname, ngroup->id.name+2, sizeof(showname)); // XXX this shows some scaling artifacts UI_DrawString(rect.xmin+8.0f, rect.ymax+5.0f, showname); @@ -1046,14 +1062,12 @@ static void node_draw_group(const bContext *C, ARegion *ar, SpaceNode *snode, bN void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d) { - float col[3]; View2DScrollers *scrollers; SpaceNode *snode= CTX_wm_space_node(C); Scene *scene= CTX_data_scene(C); int color_manage = scene->r.color_mgt_flag & R_COLOR_MANAGEMENT; - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); @@ -1078,8 +1092,16 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d) if(snode->nodetree) { bNode *node; + /* init ui blocks for opened node group trees first + * so they're in the correct depth stack order */ + for(node= snode->nodetree->nodes.first; node; node= node->next) { + if(node->flag & NODE_GROUP_EDIT) + node_uiblocks_init(C, (bNodeTree *)node->id); + } + node_uiblocks_init(C, snode->nodetree); + /* for now, we set drawing coordinates on each redraw */ for(node= snode->nodetree->nodes.first; node; node= node->next) { if(node->flag & NODE_GROUP_EDIT) @@ -1101,14 +1123,14 @@ void drawnodespace(const bContext *C, ARegion *ar, View2D *v2d) /* draw grease-pencil ('canvas' strokes) */ if (/*(snode->flag & SNODE_DISPGP) &&*/ (snode->nodetree)) - draw_gpencil_2dview((bContext*)C, 1); + draw_gpencil_view2d((bContext*)C, 1); /* reset view matrix */ UI_view2d_view_restore(C); /* draw grease-pencil (screen strokes, and also paintbuffer) */ if (/*(snode->flag & SNODE_DISPGP) && */(snode->nodetree)) - draw_gpencil_2dview((bContext*)C, 0); + draw_gpencil_view2d((bContext*)C, 0); /* scrollers */ scrollers= UI_view2d_scrollers_calc(C, v2d, 10, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY); diff --git a/source/blender/editors/space_node/node_edit.c b/source/blender/editors/space_node/node_edit.c index 473f706f6f8..cea88c33c5b 100644 --- a/source/blender/editors/space_node/node_edit.c +++ b/source/blender/editors/space_node/node_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,22 +31,14 @@ #include <stdlib.h> #include <math.h> #include <string.h> +#include <errno.h> #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" -#include "DNA_brush_types.h" -#include "DNA_color_types.h" -#include "DNA_image_types.h" -#include "DNA_ipo_types.h" #include "DNA_object_types.h" #include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_node_types.h" -#include "DNA_space_types.h" -#include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_colortools.h" @@ -73,11 +65,8 @@ #include "IMB_imbuf_types.h" #include "ED_node.h" -#include "ED_render.h" #include "ED_screen.h" -#include "ED_space_api.h" -#include "ED_transform.h" -#include "ED_types.h" +#include "ED_render.h" #include "RNA_access.h" #include "RNA_define.h" @@ -87,7 +76,7 @@ #include "UI_interface.h" #include "UI_view2d.h" - + #include "node_intern.h" #define SOCK_IN 1 @@ -101,6 +90,7 @@ typedef struct CompoJob { bNodeTree *localtree; short *stop; short *do_update; + float *progress; } CompoJob; /* called by compo, only to check job 'stop' value */ @@ -146,9 +136,16 @@ static void compo_updatejob(void *cjv) ntreeLocalSync(cj->localtree, cj->ntree); } +static void compo_progressjob(void *cjv, float progress) +{ + CompoJob *cj= cjv; + + *(cj->progress) = progress; +} + /* only this runs inside thread */ -static void compo_startjob(void *cjv, short *stop, short *do_update) +static void compo_startjob(void *cjv, short *stop, short *do_update, float *progress) { CompoJob *cj= cjv; bNodeTree *ntree= cj->localtree; @@ -158,11 +155,14 @@ static void compo_startjob(void *cjv, short *stop, short *do_update) cj->stop= stop; cj->do_update= do_update; + cj->progress= progress; ntree->test_break= compo_breakjob; ntree->tbh= cj; ntree->stats_draw= compo_redrawjob; ntree->sdh= cj; + ntree->progress= compo_progressjob; + ntree->prh= cj; // XXX BIF_store_spare(); @@ -170,6 +170,7 @@ static void compo_startjob(void *cjv, short *stop, short *do_update) ntree->test_break= NULL; ntree->stats_draw= NULL; + ntree->progress= NULL; } @@ -179,7 +180,7 @@ void snode_composite_job(const bContext *C, ScrArea *sa) wmJob *steve; CompoJob *cj; - steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), sa, WM_JOB_EXCL_RENDER); + steve= WM_jobs_get(CTX_wm_manager(C), CTX_wm_window(C), sa, "Compositing", WM_JOB_EXCL_RENDER|WM_JOB_PROGRESS); cj= MEM_callocN(sizeof(CompoJob), "compo job"); /* customdata for preview thread */ @@ -189,7 +190,7 @@ void snode_composite_job(const bContext *C, ScrArea *sa) /* setup job */ WM_jobs_customdata(steve, cj, compo_freejob); WM_jobs_timer(steve, 0.1, NC_SCENE, NC_SCENE|ND_COMPO_RESULT); - WM_jobs_callbacks(steve, compo_startjob, compo_initjob, compo_updatejob); + WM_jobs_callbacks(steve, compo_startjob, compo_initjob, compo_updatejob, NULL); WM_jobs_start(CTX_wm_manager(C), steve); @@ -401,11 +402,13 @@ void snode_set_context(SpaceNode *snode, Scene *scene) snode->from= (ID*)give_current_material(ob, ob->actcol); /* from is not set fully for material nodes, should be ID + Node then */ + snode->id= &tx->id; } } else if(snode->texfrom==SNODE_TEX_WORLD) { tx= give_current_world_texture(scene->world); snode->from= (ID *)scene->world; + snode->id= &tx->id; } else { Brush *brush= NULL; @@ -415,11 +418,12 @@ void snode_set_context(SpaceNode *snode, Scene *scene) else brush= paint_brush(&scene->toolsettings->imapaint.paint); - snode->from= (ID *)brush; - tx= give_current_brush_texture(brush); + if (brush) { + snode->from= (ID *)brush; + tx= give_current_brush_texture(brush); + snode->id= &tx->id; + } } - - snode->id= &tx->id; } if(snode->id) @@ -546,6 +550,8 @@ static int node_group_edit_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); bNode *gnode; + ED_preview_kill_jobs(C); + gnode= nodeGetActive(snode->edittree); snode_make_group_editable(snode, gnode); @@ -591,6 +597,8 @@ static int node_group_ungroup_exec(bContext *C, wmOperator *op) SpaceNode *snode = CTX_wm_space_node(C); bNode *gnode; + ED_preview_kill_jobs(C); + /* are we inside of a group? */ gnode= node_tree_get_editgroup(snode->nodetree); if(gnode) @@ -697,68 +705,125 @@ static bNode *visible_node(SpaceNode *snode, rctf *rct) return tnode; } -#if 0 -static void snode_bg_viewmove(SpaceNode *snode) +/* **************************** */ + +typedef struct NodeViewMove { + short mvalo[2]; + int xmin, ymin, xmax, ymax; +} NodeViewMove; + +static int snode_bg_viewmove_modal(bContext *C, wmOperator *op, wmEvent *event) { - ScrArea *sa; + SpaceNode *snode= CTX_wm_space_node(C); + ARegion *ar= CTX_wm_region(C); + NodeViewMove *nvm= op->customdata; + + switch (event->type) { + case MOUSEMOVE: + + snode->xof -= (nvm->mvalo[0]-event->mval[0]); + snode->yof -= (nvm->mvalo[1]-event->mval[1]); + nvm->mvalo[0]= event->mval[0]; + nvm->mvalo[1]= event->mval[1]; + + /* prevent dragging image outside of the window and losing it! */ + CLAMP(snode->xof, nvm->xmin, nvm->xmax); + CLAMP(snode->yof, nvm->ymin, nvm->ymax); + + ED_region_tag_redraw(ar); + + break; + + case LEFTMOUSE: + case MIDDLEMOUSE: + case RIGHTMOUSE: + + MEM_freeN(nvm); + op->customdata= NULL; + + return OPERATOR_FINISHED; + } + + return OPERATOR_RUNNING_MODAL; +} + +static int snode_bg_viewmove_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + ARegion *ar= CTX_wm_region(C); + NodeViewMove *nvm; Image *ima; ImBuf *ibuf; - Window *win; - short mval[2], mvalo[2]; - short rectx, recty, xmin, xmax, ymin, ymax, pad; - int oldcursor; + int pad= 10; ima= BKE_image_verify_viewer(IMA_TYPE_COMPOSITE, "Viewer Node"); ibuf= BKE_image_get_ibuf(ima, NULL); - sa = snode->area; + if(ibuf == NULL) + return OPERATOR_CANCELLED; + + nvm= MEM_callocN(sizeof(NodeViewMove), "NodeViewMove struct"); + op->customdata= nvm; + nvm->mvalo[0]= event->mval[0]; + nvm->mvalo[1]= event->mval[1]; + + nvm->xmin = -(ar->winx/2) - ibuf->x/2 + pad; + nvm->xmax = ar->winx/2 + ibuf->x/2 - pad; + nvm->ymin = -(ar->winy/2) - ibuf->y/2 + pad; + nvm->ymax = ar->winy/2 + ibuf->y/2 - pad; - if(ibuf) { - rectx = ibuf->x; - recty = ibuf->y; - } else { - rectx = recty = 1; - } + /* add modal handler */ + WM_event_add_modal_handler(C, op); - pad = 10; - xmin = -(sa->winx/2) - rectx/2 + pad; - xmax = sa->winx/2 + rectx/2 - pad; - ymin = -(sa->winy/2) - recty/2 + pad; - ymax = sa->winy/2 + recty/2 - pad; + return OPERATOR_RUNNING_MODAL; +} + + +void NODE_OT_backimage_move(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Background Image Move"; + ot->idname= "NODE_OT_backimage_move"; - getmouseco_sc(mvalo); + /* api callbacks */ + ot->invoke= snode_bg_viewmove_invoke; + ot->modal= snode_bg_viewmove_modal; + ot->poll= ED_operator_node_active; - /* store the old cursor to temporarily change it */ - oldcursor=get_cursor(); - win=winlay_get_active_window(); + /* flags */ + ot->flag= OPTYPE_BLOCKING; +} + +static int backimage_zoom(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + ARegion *ar= CTX_wm_region(C); + float fac= RNA_float_get(op->ptr, "factor"); + + snode->zoom *= fac; + ED_region_tag_redraw(ar); + + return OPERATOR_FINISHED; +} + + +void NODE_OT_backimage_zoom(wmOperatorType *ot) +{ - SetBlenderCursor(BC_NSEW_SCROLLCURSOR); + /* identifiers */ + ot->name= "Background Image Zoom"; + ot->idname= "NODE_OT_backimage_zoom"; - while(get_mbut()&(L_MOUSE|M_MOUSE)) { - - getmouseco_sc(mval); - - if(mvalo[0]!=mval[0] || mvalo[1]!=mval[1]) { - - snode->xof -= (mvalo[0]-mval[0]); - snode->yof -= (mvalo[1]-mval[1]); - - /* prevent dragging image outside of the window and losing it! */ - CLAMP(snode->xof, xmin, xmax); - CLAMP(snode->yof, ymin, ymax); - - mvalo[0]= mval[0]; - mvalo[1]= mval[1]; - - scrarea_do_windraw(curarea); - screen_swapbuffers(); - } - else BIF_wait_for_statechange(); - } + /* api callbacks */ + ot->exec= backimage_zoom; + ot->poll= ED_operator_node_active; - window_set_cursor(win, oldcursor); + /* flags */ + ot->flag= OPTYPE_BLOCKING; + + /* internal */ + RNA_def_float(ot->srna, "factor", 1.2f, 0.0f, 10.0f, "Factor", "", 0.0f, 10.0f); } -#endif + /* ********************** size widget operator ******************** */ @@ -875,6 +940,79 @@ void node_deselectall(SpaceNode *snode) node->flag &= ~SELECT; } +/* return 1 if we need redraw otherwise zero. */ +int node_select_same_type(SpaceNode *snode) +{ + bNode *nac, *p; + int redraw; + + /* search for the active node. */ + for (nac= snode->edittree->nodes.first; nac; nac= nac->next) { + if (nac->flag & SELECT) + break; + } + + /* no active node, return. */ + if (!nac) + return(0); + + redraw= 0; + for (p= snode->edittree->nodes.first; p; p= p->next) { + if (p->type != nac->type && p->flag & SELECT) { + /* if it's selected but different type, unselect */ + redraw= 1; + p->flag &= ~SELECT; + } + else if (p->type == nac->type && (!(p->flag & SELECT))) { + /* if it's the same type and is not selected, select! */ + redraw= 1; + p->flag |= SELECT; + } + } + return(redraw); +} + +/* return 1 if we need redraw, otherwise zero. + * dir can be 0 == next or 0 != prev. + */ +int node_select_same_type_np(SpaceNode *snode, int dir) +{ + bNode *nac, *p; + + /* search the active one. */ + for (nac= snode->edittree->nodes.first; nac; nac= nac->next) { + if (nac->flag & SELECT) + break; + } + + /* no active node, return. */ + if (!nac) + return(0); + + if (dir == 0) + p= nac->next; + else + p= nac->prev; + + while (p) { + /* Now search the next with the same type. */ + if (p->type == nac->type) + break; + + if (dir == 0) + p= p->next; + else + p= p->prev; + } + + if (p) { + node_deselectall(snode); + p->flag |= SELECT; + return(1); + } + return(0); +} + int node_has_hidden_sockets(bNode *node) { bNodeSocket *sock; @@ -903,31 +1041,101 @@ static void node_link_viewer(SpaceNode *snode, bNode *tonode) if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) if(node->flag & NODE_DO_OUTPUT) break; + /* no viewer, we make one active */ + if(node==NULL) { + for(node= snode->edittree->nodes.first; node; node= node->next) { + if( ELEM(node->type, CMP_NODE_VIEWER, CMP_NODE_SPLITVIEWER)) { + node->flag |= NODE_DO_OUTPUT; + break; + } + } + } if(node) { bNodeLink *link; - - /* get link to viewer */ + bNodeSocket *sock= NULL; + + /* try to find an already connected socket to cycle to the next */ for(link= snode->edittree->links.first; link; link= link->next) - if(link->tonode==node) - break; + if(link->tonode==node && link->fromnode==tonode) + if(link->tosock==node->inputs.first) + break; if(link) { - link->fromnode= tonode; - link->fromsock= tonode->outputs.first; + /* unlink existing connection */ + sock= link->fromsock; + nodeRemLink(snode->edittree, link); + + /* find a socket after the previously connected socket */ + for(sock=sock->next; sock; sock= sock->next) + if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) + break; + } + + /* find a socket starting from the first socket */ + if(!sock) { + for(sock= tonode->outputs.first; sock; sock= sock->next) + if(!(sock->flag & (SOCK_HIDDEN|SOCK_UNAVAIL))) + break; + } + + if(sock) { + /* get link to viewer */ + for(link= snode->edittree->links.first; link; link= link->next) + if(link->tonode==node && link->tosock==node->inputs.first) + break; + + if(link==NULL) { + nodeAddLink(snode->edittree, tonode, sock, node, node->inputs.first); + } + else { + link->fromnode= tonode; + link->fromsock= sock; + } + ntreeSolveOrder(snode->edittree); NodeTagChanged(snode->edittree, node); } } } -void node_active_link_viewer(SpaceNode *snode) +static int node_active_link_viewer(bContext *C, wmOperator *op) { - bNode *node= editnode_get_active(snode->edittree); - if(node) - node_link_viewer(snode, node); + SpaceNode *snode= CTX_wm_space_node(C); + bNode *node; + + node= editnode_get_active(snode->edittree); + + if(!node) + return OPERATOR_CANCELLED; + + ED_preview_kill_jobs(C); + + node_link_viewer(snode, node); + snode_notify(C, snode); + + return OPERATOR_FINISHED; } + + +void NODE_OT_link_viewer(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Link to Viewer Node"; + ot->description = "Link to Viewer Node"; + ot->idname= "NODE_OT_link_viewer"; + + /* api callbacks */ + ot->exec= node_active_link_viewer; + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + + /* return 0, nothing done */ /*static*/ int node_mouse_groupheader(SpaceNode *snode) { @@ -1267,6 +1475,8 @@ static int node_duplicate_exec(bContext *C, wmOperator *op) { SpaceNode *snode= CTX_wm_space_node(C); + ED_preview_kill_jobs(C); + ntreeCopyTree(snode->edittree, 1); /* 1 == internally selected nodes */ ntreeSolveOrder(snode->edittree); @@ -1425,7 +1635,7 @@ static int node_link_modal(bContext *C, wmOperator *op, wmEvent *event) static int node_link_init(SpaceNode *snode, NodeLinkDrag *nldrag) { bNodeLink *link; - + /* output indicated? */ if(find_indicated_socket(snode, &nldrag->node, &nldrag->sock, SOCK_OUT)) { if(nodeCountSocketLinks(snode->edittree, nldrag->sock) < nldrag->sock->limit) @@ -1479,6 +1689,8 @@ static int node_link_invoke(bContext *C, wmOperator *op, wmEvent *event) UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, &snode->mx, &snode->my); + ED_preview_kill_jobs(C); + nldrag->in_out= node_link_init(snode, nldrag); if(nldrag->in_out) { @@ -1525,6 +1737,8 @@ static int node_make_link_exec(bContext *C, wmOperator *op) SpaceNode *snode= CTX_wm_space_node(C); int replace = RNA_boolean_get(op->ptr, "replace"); + ED_preview_kill_jobs(C); + snode_autoconnect(snode, 0, replace); node_tree_verify_groups(snode->nodetree); @@ -1588,6 +1802,8 @@ static int cut_links_exec(bContext *C, wmOperator *op) if(i>1) { bNodeLink *link, *next; + + ED_preview_kill_jobs(C); for(link= snode->edittree->links.first; link; link= next) { next= link->next; @@ -1633,13 +1849,15 @@ void NODE_OT_links_cut(wmOperatorType *ot) /* ******************************** */ // XXX some code needing updating to operators... -/* goes over all scenes, reads render layerss */ -void node_read_renderlayers(SpaceNode *snode) +/* goes over all scenes, reads render layers */ +static int node_read_renderlayers_exec(bContext *C, wmOperator *op) { - Scene *curscene= NULL; // XXX - Scene *scene; + SpaceNode *snode= CTX_wm_space_node(C); + Scene *curscene= CTX_data_scene(C), *scene; bNode *node; + ED_preview_kill_jobs(C); + /* first tag scenes unread */ for(scene= G.main->scene.first; scene; scene= scene->id.next) scene->id.flag |= LIB_DOIT; @@ -1655,26 +1873,57 @@ void node_read_renderlayers(SpaceNode *snode) } } - // XXX snode_notify(snode); + snode_notify(C, snode); + return OPERATOR_FINISHED; +} + +void NODE_OT_read_renderlayers(wmOperatorType *ot) +{ + + ot->name= "Read Render Layers"; + ot->idname= "NODE_OT_read_renderlayers"; + + ot->exec= node_read_renderlayers_exec; + + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= 0; } -void node_read_fullsamplelayers(SpaceNode *snode) +static int node_read_fullsamplelayers_exec(bContext *C, wmOperator *op) { - Scene *curscene= NULL; // XXX - Render *re= RE_NewRender(curscene->id.name, RE_SLOT_VIEW); + SpaceNode *snode= CTX_wm_space_node(C); + Scene *curscene= CTX_data_scene(C); + Render *re= RE_NewRender(curscene->id.name); - WM_cursor_wait(1); +// WM_cursor_wait(1); - //BIF_init_render_callbacks(re, 1); RE_MergeFullSample(re, curscene, snode->nodetree); - //BIF_end_render_callbacks(); + snode_notify(C, snode); + +// WM_cursor_wait(0); + return OPERATOR_FINISHED; +} + + +void NODE_OT_read_fullsamplelayers(wmOperatorType *ot) +{ + + ot->name= "Read Full Sample Layers"; + ot->idname= "NODE_OT_read_fullsamplelayers"; - // allqueue(REDRAWNODE, 1); - // allqueue(REDRAWIMAGE, 1); + ot->exec= node_read_fullsamplelayers_exec; - WM_cursor_wait(0); + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= 0; } + +/* ************************* */ + void imagepaint_composite_tags(bNodeTree *ntree, Image *image, ImageUser *iuser) { bNode *node; @@ -1725,6 +1974,8 @@ static int node_group_make_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } } + + ED_preview_kill_jobs(C); gnode= nodeMakeGroupFromSelected(snode->nodetree); if(gnode==NULL) { @@ -1758,49 +2009,144 @@ void NODE_OT_group_make(wmOperatorType *ot) /* ****************** Hide operator *********************** */ -static int node_hide_exec(bContext *C, wmOperator *op) +static void node_flag_toggle_exec(SpaceNode *snode, int toggle_flag) { - SpaceNode *snode= CTX_wm_space_node(C); + int tot_eq= 0, tot_neq= 0; bNode *node; - int nothidden=0, ishidden=0; - - /* sanity checking (poll callback checks this already) */ - if((snode == NULL) || (snode->edittree == NULL)) - return OPERATOR_CANCELLED; - + for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { - if(node->flag & NODE_HIDDEN) - ishidden++; + + if(toggle_flag== NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW)==0) + continue; + + if(node->flag & toggle_flag) + tot_eq++; else - nothidden++; + tot_neq++; } } for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { - if( (ishidden && nothidden) || ishidden==0) - node->flag |= NODE_HIDDEN; - else - node->flag &= ~NODE_HIDDEN; + + if(toggle_flag== NODE_PREVIEW && (node->typeinfo->flag & NODE_PREVIEW)==0) + continue; + + if( (tot_eq && tot_neq) || tot_eq==0) + node->flag |= toggle_flag; + else + node->flag &= ~toggle_flag; } } +} + +static int node_hide_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + + /* sanity checking (poll callback checks this already) */ + if((snode == NULL) || (snode->edittree == NULL)) + return OPERATOR_CANCELLED; + + node_flag_toggle_exec(snode, NODE_HIDDEN); snode_notify(C, snode); return OPERATOR_FINISHED; } -void NODE_OT_hide(wmOperatorType *ot) +void NODE_OT_hide_toggle(wmOperatorType *ot) { /* identifiers */ ot->name= "Hide"; - ot->description= "Toggle hiding of the nodes"; - ot->idname= "NODE_OT_hide"; + ot->description= "Toggle hiding of selected nodes"; + ot->idname= "NODE_OT_hide_toggle"; /* callbacks */ ot->exec= node_hide_exec; ot->poll= ED_operator_node_active; - + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int node_preview_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + + /* sanity checking (poll callback checks this already) */ + if((snode == NULL) || (snode->edittree == NULL)) + return OPERATOR_CANCELLED; + + ED_preview_kill_jobs(C); + + node_flag_toggle_exec(snode, NODE_PREVIEW); + + snode_notify(C, snode); + + return OPERATOR_FINISHED; +} + +void NODE_OT_preview_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Node Preview"; + ot->description= "Toggle preview display for selected nodes"; + ot->idname= "NODE_OT_preview_toggle"; + + /* callbacks */ + ot->exec= node_preview_exec; + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int node_socket_toggle_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode= CTX_wm_space_node(C); + bNode *node; + int hidden= 0; + + /* sanity checking (poll callback checks this already) */ + if((snode == NULL) || (snode->edittree == NULL)) + return OPERATOR_CANCELLED; + + ED_preview_kill_jobs(C); + + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + if(node_has_hidden_sockets(node)) { + hidden= 1; + break; + } + } + } + + for(node= snode->edittree->nodes.first; node; node= node->next) { + if(node->flag & SELECT) { + node_set_hidden_sockets(snode, node, !hidden); + } + } + + node_tree_verify_groups(snode->nodetree); + + snode_notify(C, snode); + + return OPERATOR_FINISHED; +} + +void NODE_OT_hide_socket_toggle(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Toggle Hidden Node Sockets"; + ot->description= "Toggle unused node socket display"; + ot->idname= "NODE_OT_hide_socket_toggle"; + + /* callbacks */ + ot->exec= node_socket_toggle_exec; + ot->poll= ED_operator_node_active; + /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } @@ -1816,6 +2162,8 @@ static int node_mute_exec(bContext *C, wmOperator *op) if(node_tree_get_editgroup(snode->nodetree)) return OPERATOR_CANCELLED; + ED_preview_kill_jobs(C); + for(node= snode->edittree->nodes.first; node; node= node->next) { if(node->flag & SELECT) { if(node->inputs.first && node->outputs.first) { @@ -1830,12 +2178,12 @@ static int node_mute_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -void NODE_OT_mute(wmOperatorType *ot) +void NODE_OT_mute_toggle(wmOperatorType *ot) { /* identifiers */ - ot->name= "Mute"; + ot->name= "Toggle Node Mute"; ot->description= "Toggle muting of the nodes"; - ot->idname= "NODE_OT_mute"; + ot->idname= "NODE_OT_mute_toggle"; /* callbacks */ ot->exec= node_mute_exec; @@ -1852,6 +2200,8 @@ static int node_delete_exec(bContext *C, wmOperator *op) SpaceNode *snode= CTX_wm_space_node(C); bNode *node, *next; + ED_preview_kill_jobs(C); + for(node= snode->edittree->nodes.first; node; node= next) { next= node->next; if(node->flag & SELECT) { @@ -1912,4 +2262,95 @@ void NODE_OT_show_cyclic_dependencies(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ****************** Add File Node Operator ******************* */ + +static int node_add_file_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + SpaceNode *snode= CTX_wm_space_node(C); + bNode *node; + Image *ima= NULL; + int ntype=0; + + /* check input variables */ + if (RNA_property_is_set(op->ptr, "filepath")) + { + char path[FILE_MAX]; + RNA_string_get(op->ptr, "filepath", path); + + errno= 0; + + ima= BKE_add_image_file(path, scene ? scene->r.cfra : 1); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Can't read: \"%s\", %s.", path, errno ? strerror(errno) : "Unsupported image format"); + return OPERATOR_CANCELLED; + } + } + else if(RNA_property_is_set(op->ptr, "name")) + { + char name[32]; + RNA_string_get(op->ptr, "name", name); + ima= (Image *)find_id("IM", name); + + if(!ima) { + BKE_reportf(op->reports, RPT_ERROR, "Image named \"%s\", not found.", name); + return OPERATOR_CANCELLED; + } + } + + node_deselectall(snode); + + if (snode->nodetree->type==NTREE_COMPOSIT) + ntype = CMP_NODE_IMAGE; + + ED_preview_kill_jobs(C); + + node = node_add_node(snode, scene, ntype, snode->mx, snode->my); + + if (!node) { + BKE_report(op->reports, RPT_ERROR, "Could not add an image node."); + return OPERATOR_CANCELLED; + } + + node->id = (ID *)ima; + + snode_notify(C, snode); + + return OPERATOR_FINISHED; +} + +static int node_add_file_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + ARegion *ar= CTX_wm_region(C); + SpaceNode *snode= CTX_wm_space_node(C); + + /* convert mouse coordinates to v2d space */ + UI_view2d_region_to_view(&ar->v2d, event->x - ar->winrct.xmin, event->y - ar->winrct.ymin, + &snode->mx, &snode->my); + + if (RNA_property_is_set(op->ptr, "filepath") || RNA_property_is_set(op->ptr, "name")) + return node_add_file_exec(C, op); + else + return WM_operator_filesel(C, op, event); +} + +void NODE_OT_add_file(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Add File Node"; + ot->description= "Add a file node to the current node editor"; + ot->idname= "NODE_OT_add_file"; + + /* callbacks */ + ot->exec= node_add_file_exec; + ot->invoke= node_add_file_invoke; + ot->poll= ED_operator_node_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path + RNA_def_string(ot->srna, "name", "Image", 24, "Name", "Datablock name to assign."); +} diff --git a/source/blender/editors/space_node/node_header.c b/source/blender/editors/space_node/node_header.c index 168d2524995..3ed719eccc0 100644 --- a/source/blender/editors/space_node/node_header.c +++ b/source/blender/editors/space_node/node_header.c @@ -31,11 +31,8 @@ #include "DNA_space_types.h" #include "DNA_node_types.h" -#include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -47,9 +44,6 @@ #include "BKE_main.h" #include "BKE_utildefines.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" #include "WM_api.h" #include "WM_types.h" @@ -58,8 +52,6 @@ #include "BIF_glutil.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "node_intern.h" diff --git a/source/blender/editors/space_node/node_intern.h b/source/blender/editors/space_node/node_intern.h index 3a9a2e8ad83..77fda0627e7 100644 --- a/source/blender/editors/space_node/node_intern.h +++ b/source/blender/editors/space_node/node_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -62,6 +62,9 @@ void NODE_OT_select_linked_from(wmOperatorType *ot); void NODE_OT_visibility_toggle(struct wmOperatorType *ot); void NODE_OT_view_all(struct wmOperatorType *ot); void NODE_OT_select_border(struct wmOperatorType *ot); +void NODE_OT_select_same_type(struct wmOperatorType *ot); +void NODE_OT_select_same_type_next(wmOperatorType *ot); +void NODE_OT_select_same_type_prev(wmOperatorType *ot); /* drawnode.c */ void node_draw_link(View2D *v2d, SpaceNode *snode, bNodeLink *link); @@ -80,11 +83,15 @@ void snode_set_context(SpaceNode *snode, Scene *scene); void snode_make_group_editable(SpaceNode *snode, bNode *gnode); void node_set_active(SpaceNode *snode, bNode *node); void node_deselectall(SpaceNode *snode); +int node_select_same_type(SpaceNode *snode); +int node_select_same_type_np(SpaceNode *snode, int dir); void snode_composite_job(const struct bContext *C, ScrArea *sa); bNode *node_tree_get_editgroup(bNodeTree *ntree); void node_tree_verify_groups(bNodeTree *nodetree); void snode_autoconnect(SpaceNode *snode, int allow_multiple, int replace); int node_has_hidden_sockets(bNode *node); +void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set); + void NODE_OT_duplicate(struct wmOperatorType *ot); void NODE_OT_delete(struct wmOperatorType *ot); @@ -98,10 +105,19 @@ void NODE_OT_group_make(struct wmOperatorType *ot); void NODE_OT_group_ungroup(struct wmOperatorType *ot); void NODE_OT_group_edit(struct wmOperatorType *ot); -void NODE_OT_mute(struct wmOperatorType *ot); -void NODE_OT_hide(struct wmOperatorType *ot); +void NODE_OT_mute_toggle(struct wmOperatorType *ot); +void NODE_OT_hide_toggle(struct wmOperatorType *ot); +void NODE_OT_hide_socket_toggle(struct wmOperatorType *ot); +void NODE_OT_preview_toggle(struct wmOperatorType *ot); void NODE_OT_show_cyclic_dependencies(struct wmOperatorType *ot); +void NODE_OT_link_viewer(struct wmOperatorType *ot); +void NODE_OT_read_fullsamplelayers(struct wmOperatorType *ot); +void NODE_OT_read_renderlayers(struct wmOperatorType *ot); +void NODE_OT_backimage_move(struct wmOperatorType *ot); +void NODE_OT_backimage_zoom(struct wmOperatorType *ot); + +void NODE_OT_add_file(struct wmOperatorType *ot); // XXXXXX diff --git a/source/blender/editors/space_node/node_ops.c b/source/blender/editors/space_node/node_ops.c index 4ce56f96146..654fdc6800e 100644 --- a/source/blender/editors/space_node/node_ops.c +++ b/source/blender/editors/space_node/node_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -27,20 +27,15 @@ */ #include "DNA_node_types.h" -#include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" #include "BKE_context.h" #include "BKE_node.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_transform.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" @@ -56,11 +51,16 @@ void node_operatortypes(void) WM_operatortype_append(NODE_OT_select_linked_to); WM_operatortype_append(NODE_OT_select_linked_from); WM_operatortype_append(NODE_OT_select_border); - + WM_operatortype_append(NODE_OT_select_same_type); + WM_operatortype_append(NODE_OT_select_same_type_next); + WM_operatortype_append(NODE_OT_select_same_type_prev); + WM_operatortype_append(NODE_OT_view_all); WM_operatortype_append(NODE_OT_visibility_toggle); - WM_operatortype_append(NODE_OT_mute); - WM_operatortype_append(NODE_OT_hide); + WM_operatortype_append(NODE_OT_mute_toggle); + WM_operatortype_append(NODE_OT_hide_toggle); + WM_operatortype_append(NODE_OT_preview_toggle); + WM_operatortype_append(NODE_OT_hide_socket_toggle); WM_operatortype_append(NODE_OT_show_cyclic_dependencies); WM_operatortype_append(NODE_OT_duplicate); @@ -74,17 +74,30 @@ void node_operatortypes(void) WM_operatortype_append(NODE_OT_group_make); WM_operatortype_append(NODE_OT_group_ungroup); WM_operatortype_append(NODE_OT_group_edit); + + WM_operatortype_append(NODE_OT_link_viewer); + + WM_operatortype_append(NODE_OT_read_renderlayers); + WM_operatortype_append(NODE_OT_read_fullsamplelayers); + + WM_operatortype_append(NODE_OT_backimage_move); + WM_operatortype_append(NODE_OT_backimage_zoom); + + WM_operatortype_append(NODE_OT_add_file); } void ED_operatormacros_node(void) { wmOperatorType *ot; - wmOperatorTypeMacro *otmacro; ot= WM_operatortype_append_macro("NODE_OT_duplicate_move", "Duplicate", OPTYPE_UNDO|OPTYPE_REGISTER); WM_operatortype_macro_define(ot, "NODE_OT_duplicate"); - otmacro= WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); - RNA_enum_set(otmacro->ptr, "proportional", 0); + WM_operatortype_macro_define(ot, "TRANSFORM_OT_translate"); + + ot= WM_operatortype_append_macro("NODE_OT_select_link_viewer", "Link Viewer", OPTYPE_UNDO); + WM_operatortype_macro_define(ot, "NODE_OT_select"); + WM_operatortype_macro_define(ot, "NODE_OT_link_viewer"); + } void node_keymap(struct wmKeyConfig *keyconf) @@ -117,14 +130,25 @@ void node_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "NODE_OT_visibility_toggle", LEFTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_links_cut", LEFTMOUSE, KM_PRESS, KM_CTRL, 0); + WM_keymap_add_item(keymap, "NODE_OT_select_link_viewer", LEFTMOUSE, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + + WM_keymap_add_item(keymap, "NODE_OT_backimage_move", MIDDLEMOUSE, KM_PRESS, KM_ALT, 0); + kmi= WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, 0, 0); + RNA_float_set(kmi->ptr, "factor", 0.83333f); + kmi= WM_keymap_add_item(keymap, "NODE_OT_backimage_zoom", VKEY, KM_PRESS, KM_ALT, 0); + RNA_float_set(kmi->ptr, "factor", 1.2f); + + WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, 0, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "NODE_OT_link_make", FKEY, KM_PRESS, KM_CTRL, 0)->ptr, "replace", 1); WM_keymap_add_menu(keymap, "NODE_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "NODE_OT_duplicate_move", DKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "NODE_OT_hide", HKEY, KM_PRESS, 0, 0); - WM_keymap_add_item(keymap, "NODE_OT_mute", MKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_hide_toggle", HKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_mute_toggle", MKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_preview_toggle", HKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NODE_OT_hide_socket_toggle", HKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "NODE_OT_show_cyclic_dependencies", CKEY, KM_PRESS, 0, 0); @@ -132,14 +156,21 @@ void node_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "NODE_OT_select_border", BKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_select_all", AKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "NODE_OT_select_linked_to", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "NODE_OT_select_linked_from", LKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_select_same_type", GKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NODE_OT_select_same_type_next", RIGHTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); + WM_keymap_add_item(keymap, "NODE_OT_select_same_type_prev", LEFTBRACKETKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "NODE_OT_group_make", GKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "NODE_OT_group_ungroup", GKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "NODE_OT_group_edit", TABKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_read_renderlayers", RKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "NODE_OT_read_fullsamplelayers", RKEY, KM_PRESS, KM_SHIFT, 0); + transform_keymap_for_space(keyconf, keymap, SPACE_NODE); } diff --git a/source/blender/editors/space_node/node_select.c b/source/blender/editors/space_node/node_select.c index 055290fbb66..ccd1555e1a2 100644 --- a/source/blender/editors/space_node/node_select.c +++ b/source/blender/editors/space_node/node_select.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,11 +29,7 @@ #include <stdio.h> #include "DNA_node_types.h" -#include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "BKE_context.h" #include "BKE_node.h" @@ -42,7 +38,6 @@ #include "BLI_rect.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_types.h" @@ -117,9 +112,6 @@ static int node_select_exec(bContext *C, wmOperator *op) /* perform the select */ node= node_mouse_select(snode, ar, mval, extend); - /* need refresh/a notifier vs compo notifier */ - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */ - /* WATCH THIS, there are a few other ways to change the active material */ if(node) { if (node->id && ELEM(GS(node->id->name), ID_MA, ID_TE)) { @@ -127,8 +119,8 @@ static int node_select_exec(bContext *C, wmOperator *op) } } - /* send notifiers */ - WM_event_add_notifier(C, NC_NODE|ND_NODE_SELECT, NULL); + /* send notifiers */ + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); /* allow tweak event to work too */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; @@ -196,7 +188,7 @@ static int node_borderselect_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); /* Do we need to pass the scene? */ + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -272,7 +264,7 @@ static int node_select_all_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -312,7 +304,7 @@ static int node_select_linked_to_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -352,7 +344,7 @@ static int node_select_linked_from_exec(bContext *C, wmOperator *op) node->flag |= NODE_SELECT; } - WM_event_add_notifier(C, NC_SCENE|ND_NODES, NULL); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); return OPERATOR_FINISHED; } @@ -371,3 +363,78 @@ void NODE_OT_select_linked_from(wmOperatorType *ot) ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; } +/* ****** Select Same Type ****** */ + +static int node_select_same_type_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode = CTX_wm_space_node(C); + + node_select_same_type(snode); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); + return OPERATOR_FINISHED; +} + +void NODE_OT_select_same_type(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Select Same Type"; + ot->description = "Select all the same type"; + ot->idname = "NODE_OT_select_same_type"; + + /* api callbacks */ + ot->exec = node_select_same_type_exec; + ot->poll = ED_operator_node_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + +/* ****** Select The Next/Prev Node Of The Same Type ****** */ + +static int node_select_same_type_next_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode = CTX_wm_space_node(C); + + node_select_same_type_np(snode, 0); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); + return OPERATOR_FINISHED; +} + +void NODE_OT_select_same_type_next(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Select Same Type Next"; + ot->description = "Select the next node of the same type."; + ot->idname = "NODE_OT_select_same_type_next"; + + /* api callbacks */ + ot->exec = node_select_same_type_next_exec; + ot->poll = ED_operator_node_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} + +static int node_select_same_type_prev_exec(bContext *C, wmOperator *op) +{ + SpaceNode *snode = CTX_wm_space_node(C); + + node_select_same_type_np(snode, 1); + WM_event_add_notifier(C, NC_NODE|NA_SELECTED, NULL); + return OPERATOR_FINISHED; +} + +void NODE_OT_select_same_type_prev(wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Select Same Type Prev"; + ot->description = "Select the prev node of the same type."; + ot->idname = "NODE_OT_select_same_type_prev"; + + /* api callbacks */ + ot->exec = node_select_same_type_prev_exec; + ot->poll = ED_operator_node_active; + + /* flags */ + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO; +} diff --git a/source/blender/editors/space_node/node_state.c b/source/blender/editors/space_node/node_state.c index e754903efc5..6b3cfd11135 100644 --- a/source/blender/editors/space_node/node_state.c +++ b/source/blender/editors/space_node/node_state.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,11 +29,7 @@ #include <stdio.h> #include "DNA_node_types.h" -#include "DNA_material_types.h" -#include "DNA_texture_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "BKE_context.h" #include "BKE_node.h" @@ -41,9 +37,7 @@ #include "BLI_rect.h" -#include "ED_space_api.h" #include "ED_screen.h" -#include "ED_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -57,12 +51,13 @@ /* **************** Node Header Buttons ************** */ -static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) -{ +/* note: call node_tree_verify_groups(snode->nodetree) after this + */ +void node_set_hidden_sockets(SpaceNode *snode, bNode *node, int set) +{ bNodeSocket *sock; - - /* unhide all */ - if( node_has_hidden_sockets(node) ) { + + if(set==0) { for(sock= node->inputs.first; sock; sock= sock->next) sock->flag &= ~SOCK_HIDDEN; for(sock= node->outputs.first; sock; sock= sock->next) @@ -70,7 +65,7 @@ static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) } else { bNode *gnode= node_tree_get_editgroup(snode->nodetree); - + /* hiding inside group should not break links in other group users */ if(gnode) { nodeGroupSocketUseFlags((bNodeTree *)gnode->id); @@ -95,7 +90,11 @@ static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) } } } +} +static void node_hide_unhide_sockets(SpaceNode *snode, bNode *node) +{ + node_set_hidden_sockets(snode, node, !node_has_hidden_sockets(node)); node_tree_verify_groups(snode->nodetree); } diff --git a/source/blender/editors/space_node/space_node.c b/source/blender/editors/space_node/space_node.c index fb36c53e9fa..5b681958a3a 100644 --- a/source/blender/editors/space_node/space_node.c +++ b/source/blender/editors/space_node/space_node.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,10 +32,7 @@ #include "DNA_node_types.h" #include "DNA_object_types.h" #include "DNA_material_types.h" -#include "DNA_texture_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -49,7 +46,6 @@ #include "BKE_node.h" #include "ED_render.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -57,7 +53,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -141,8 +136,8 @@ static SpaceLink *node_new(const bContext *C) ar->v2d.max[0]= 32000.0f; ar->v2d.max[1]= 32000.0f; - ar->v2d.minzoom= 0.2f; - ar->v2d.maxzoom= 1.21f; + ar->v2d.minzoom= 0.09f; + ar->v2d.maxzoom= 2.31f; ar->v2d.scroll= (V2D_SCROLL_RIGHT|V2D_SCROLL_BOTTOM); ar->v2d.keepzoom= V2D_LIMITZOOM|V2D_KEEPASPECT; @@ -205,7 +200,8 @@ static void node_area_listener(ScrArea *sa, wmNotifier *wmn) ED_area_tag_redraw(sa); break; case NC_NODE: - ED_area_tag_refresh(sa); + if (wmn->action == NA_EDITED) + ED_area_tag_refresh(sa); break; } } @@ -268,6 +264,7 @@ static void node_buttons_area_draw(const bContext *C, ARegion *ar) static void node_main_area_init(wmWindowManager *wm, ARegion *ar) { wmKeyMap *keymap; + ListBase *lb; UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_CUSTOM, ar->winx, ar->winy); @@ -277,6 +274,11 @@ static void node_main_area_init(wmWindowManager *wm, ARegion *ar) keymap= WM_keymap_find(wm->defaultconf, "Node Editor", SPACE_NODE, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + + /* add drop boxes */ + lb = WM_dropboxmap_find("Node Editor", SPACE_NODE, RGN_TYPE_WINDOW); + + WM_event_add_dropbox_handler(&ar->handlers, lb); } static void node_main_area_draw(const bContext *C, ARegion *ar) @@ -286,6 +288,47 @@ static void node_main_area_draw(const bContext *C, ARegion *ar) drawnodespace(C, ar, v2d); } + +/* ************* dropboxes ************* */ + +static int node_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_ID) { + ID *id= (ID *)drag->poin; + if( GS(id->name)==ID_IM ) + return 1; + } + else if(drag->type==WM_DRAG_PATH){ + if(ELEM(drag->icon, 0, ICON_FILE_IMAGE)) /* rule might not work? */ + return 1; + } + return 0; +} + +static void node_id_path_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + ID *id= (ID *)drag->poin; + + if(id) { + RNA_string_set(drop->ptr, "name", id->name+2); + } + if (drag->path[0]) { + RNA_string_set(drop->ptr, "filepath", drag->path); + } +} + +/* this region dropbox definition */ +static void node_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("Node Editor", SPACE_NODE, RGN_TYPE_WINDOW); + + WM_dropbox_add(lb, "NODE_OT_add_file", node_drop_poll, node_id_path_drop_copy); + +} + +/* ************* end drop *********** */ + + /* add handlers, stuff you only do once or on area/region changes */ static void node_header_area_init(wmWindowManager *wm, ARegion *ar) { @@ -297,7 +340,7 @@ static void node_header_area_draw(const bContext *C, ARegion *ar) SpaceNode *snode= CTX_wm_space_node(C); Scene *scene= CTX_data_scene(C); - /* find and set the context */ + /* find and set the context */ snode_set_context(snode, scene); ED_region_header(C, ar); @@ -346,6 +389,7 @@ static int node_context(const bContext *C, const char *member, bContextDataResul CTX_data_list_add(result, &snode->edittree->id, &RNA_Node, node); } } + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } @@ -370,6 +414,7 @@ void ED_spacetype_node(void) st->listener= node_area_listener; st->refresh= node_area_refresh; st->context= node_context; + st->dropboxes = node_dropboxes; /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype node region"); diff --git a/source/blender/editors/space_outliner/CMakeLists.txt b/source/blender/editors/space_outliner/CMakeLists.txt new file mode 100644 index 00000000000..78c4fcbdd8d --- /dev/null +++ b/source/blender/editors/space_outliner/CMakeLists.txt @@ -0,0 +1,36 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../imbuf + ../include + ../../../../intern/guardedalloc + ../../../../intern/opennl/extern + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_outliner "${SRC}" "${INC}") diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c index 8a07e99e280..95e2cb920fc 100644 --- a/source/blender/editors/space_outliner/outliner.c +++ b/source/blender/editors/space_outliner/outliner.c @@ -27,6 +27,7 @@ * ***** END GPL LICENSE BLOCK ***** */ +#include <math.h> #include <string.h> #include <stdlib.h> #include <stddef.h> @@ -34,34 +35,29 @@ #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_curve_types.h" #include "DNA_camera_types.h" -#include "DNA_image_types.h" -#include "DNA_ipo_types.h" #include "DNA_group_types.h" #include "DNA_key_types.h" #include "DNA_lamp_types.h" #include "DNA_material_types.h" #include "DNA_mesh_types.h" #include "DNA_meta_types.h" -#include "DNA_modifier_types.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" -#include "DNA_outliner_types.h" #include "DNA_particle_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_texture_types.h" -#include "DNA_text_types.h" #include "DNA_world_types.h" #include "DNA_sequence_types.h" #include "BLI_blenlib.h" +#if defined WIN32 && !defined _LIBC +# include "BLI_fnmatch.h" /* use fnmatch included in blenlib */ +#else +# define _GNU_SOURCE +# include <fnmatch.h> +#endif + #include "IMB_imbuf_types.h" #include "BKE_animsys.h" @@ -87,7 +83,6 @@ #include "ED_object.h" #include "ED_screen.h" #include "ED_util.h" -#include "ED_types.h" #include "WM_api.h" #include "WM_types.h" @@ -103,16 +98,10 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "ED_armature.h" #include "ED_keyframing.h" -#include "ED_object.h" -#include "ED_particle.h" -#include "ED_screen.h" -#include "ED_view3d.h" #include "outliner_intern.h" -#include "PIL_time.h" #define OL_H 19 @@ -134,7 +123,7 @@ /* ************* XXX **************** */ -static void error() {} +static void error(const char *dummy, ...) {} /* ********************************** */ @@ -144,6 +133,7 @@ static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene static void outliner_do_object_operation(bContext *C, Scene *scene, SpaceOops *soops, ListBase *lb, void (*operation_cb)(bContext *C, Scene *scene, TreeElement *, TreeStoreElem *, TreeStoreElem *)); +static int group_select_flag(Group *gr); /* ******************** PERSISTANT DATA ***************** */ @@ -445,78 +435,91 @@ static void outliner_sort(SpaceOops *soops, ListBase *lb) static TreeElement *outliner_add_element(SpaceOops *soops, ListBase *lb, void *idv, TreeElement *parent, short type, short index); +#define LOG2I(x) (int)(log(x)/log(2.0)) static void outliner_add_passes(SpaceOops *soops, TreeElement *tenla, ID *id, SceneRenderLayer *srl) { - TreeStoreElem *tselem= TREESTORE(tenla); - TreeElement *te; + TreeStoreElem *tselem = NULL; + TreeElement *te = NULL; + + /* log stuff is to convert bitflags (powers of 2) to small integers, + * in order to not overflow short tselem->nr */ - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_COMBINED); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_COMBINED)); te->name= "Combined"; te->directdata= &srl->passflag; /* save cpu cycles, but we add the first to invoke an open/close triangle */ + tselem = TREESTORE(tenla); if(tselem->flag & TSE_CLOSED) return; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_Z); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_Z)); te->name= "Z"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_VECTOR); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_VECTOR)); te->name= "Vector"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_NORMAL); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_NORMAL)); te->name= "Normal"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_UV); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_UV)); te->name= "UV"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_MIST); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_MIST)); te->name= "Mist"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_INDEXOB); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDEXOB)); te->name= "Index Object"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_RGBA); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_RGBA)); te->name= "Color"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_DIFFUSE); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_DIFFUSE)); te->name= "Diffuse"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_SPEC); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SPEC)); te->name= "Specular"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_SHADOW); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_SHADOW)); te->name= "Shadow"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_AO); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_AO)); te->name= "AO"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_REFLECT); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFLECT)); te->name= "Reflection"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_REFRACT); + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_REFRACT)); te->name= "Refraction"; te->directdata= &srl->passflag; - te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, SCE_PASS_RADIO); - te->name= "Radiosity"; + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_INDIRECT)); + te->name= "Indirect"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_ENVIRONMENT)); + te->name= "Environment"; + te->directdata= &srl->passflag; + + te= outliner_add_element(soops, &tenla->subtree, id, tenla, TSE_R_PASS, LOG2I(SCE_PASS_EMIT)); + te->name= "Emit"; te->directdata= &srl->passflag; - } +#undef LOG2I /* special handling of hierarchical non-lib data */ static void outliner_add_bone(SpaceOops *soops, ListBase *lb, ID *id, Bone *curBone, @@ -1245,6 +1248,86 @@ void add_seq_dup(SpaceOops *soops, Sequence *seq, TreeElement *te, short index) } } +static int outliner_filter_has_name(TreeElement *te, char *name, int flags) +{ +#if 0 + int found= 0; + + /* determine if match */ + if (flags & SO_FIND_CASE_SENSITIVE) { + if (flags & SO_FIND_COMPLETE) + found= strcmp(te->name, name) == 0; + else + found= strstr(te->name, name) != NULL; + } + else { + if (flags & SO_FIND_COMPLETE) + found= BLI_strcasecmp(te->name, name) == 0; + else + found= BLI_strcasestr(te->name, name) != NULL; + } +#else + + int fn_flag= 0; + int found= 0; + + if ((flags & SO_FIND_CASE_SENSITIVE) == 0) + fn_flag |= FNM_CASEFOLD; + + if (flags & SO_FIND_COMPLETE) { + found= fnmatch(name, te->name, fn_flag)==0; + } + else { + char fn_name[sizeof(((struct SpaceOops *)NULL)->search_string) + 2]; + sprintf(fn_name, "*%s*", name); + found= fnmatch(fn_name, te->name, fn_flag)==0; + } + return found; +#endif +} + +static int outliner_filter_tree(SpaceOops *soops, ListBase *lb) +{ + TreeElement *te, *ten; + TreeStoreElem *tselem; + + /* although we don't have any search string, we return TRUE + * since the entire tree is ok then... + */ + if (soops->search_string[0]==0) + return 1; + + for (te= lb->first; te; te= ten) { + ten= te->next; + + if (0==outliner_filter_has_name(te, soops->search_string, soops->search_flags)) { + /* item isn't something we're looking for, but... + * - if the subtree is expanded, check if there are any matches that can be easily found + * so that searching for "cu" in the default scene will still match the Cube + * - otherwise, we can't see within the subtree and the item doesn't match, + * so these can be safely ignored (i.e. the subtree can get freed) + */ + tselem= TREESTORE(te); + + if ((tselem->flag & TSE_CLOSED) || outliner_filter_tree(soops, &te->subtree)==0) { + outliner_free_tree(&te->subtree); + BLI_remlink(lb, te); + + if(te->flag & TE_FREE_NAME) MEM_freeN(te->name); + MEM_freeN(te); + } + } + else { + /* filter subtree too */ + outliner_filter_tree(soops, &te->subtree); + } + } + + /* if there are still items in the list, that means that there were still some matches */ + return (lb->first != NULL); +} + + static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) { Base *base; @@ -1328,7 +1411,7 @@ static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) GroupObject *go; for(group= mainvar->group.first; group; group= group->id.next) { - if(group->id.us) { + if(group->gobject.first) { te= outliner_add_element(soops, &soops->tree, group, NULL, 0, 0); tselem= TREESTORE(te); @@ -1426,6 +1509,7 @@ static void outliner_build_tree(Main *mainvar, Scene *scene, SpaceOops *soops) } outliner_sort(soops, &soops->tree); + outliner_filter_tree(soops, &soops->tree); } /* **************** INTERACTIVE ************* */ @@ -1550,8 +1634,6 @@ void OUTLINER_OT_selectability_toggle(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } -/* --- */ - void object_toggle_renderability_cb(bContext *C, Scene *scene, TreeElement *te, TreeStoreElem *tsep, TreeStoreElem *tselem) { Base *base= (Base *)te->directdata; @@ -1845,7 +1927,8 @@ static int tree_element_active_material(bContext *C, Scene *scene, SpaceOops *so /* we search for the object parent */ ob= (Object *)outliner_search_back(soops, te, ID_OB); - if(ob==NULL || ob!=OBACT) return 0; // just paranoia + // note: ob->matbits can be NULL when a local object points to a library mesh. + if(ob==NULL || ob!=OBACT || ob->matbits==NULL) return 0; // just paranoia /* searching in ob mat array? */ tes= te->parent; @@ -2140,7 +2223,7 @@ static int tree_element_active_psys(bContext *C, Scene *scene, TreeElement *te, if(set) { Object *ob= (Object *)tselem->id; - WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE_DATA, ob); + WM_event_add_notifier(C, NC_OBJECT|ND_PARTICLE|NA_EDITED, ob); // XXX extern_set_butspace(F7KEY, 0); } @@ -2265,7 +2348,6 @@ static int tree_element_active_keymap_item(bContext *C, TreeElement *te, TreeSto /* Context can be NULL when set==0 */ static int tree_element_type_active(bContext *C, Scene *scene, SpaceOops *soops, TreeElement *te, TreeStoreElem *tselem, int set) { - switch(tselem->type) { case TSE_DEFGROUP: return tree_element_active_defgroup(C, scene, te, tselem, set); @@ -2343,12 +2425,46 @@ static int do_outliner_item_activate(bContext *C, Scene *scene, ARegion *ar, Spa ED_screen_set_scene(C, (Scene *)tselem->id); } } + else if(te->idcode==ID_GR) { + Group *gr= (Group *)tselem->id; + GroupObject *gob; + + if(extend) { + int sel= BA_SELECT; + for(gob= gr->gobject.first; gob; gob= gob->next) { + if(gob->ob->flag & SELECT) { + sel= BA_DESELECT; + break; + } + } + + for(gob= gr->gobject.first; gob; gob= gob->next) { + ED_base_object_select(object_in_scene(gob->ob, scene), sel); + } + } + else { + scene_deselect_all(scene); + + for(gob= gr->gobject.first; gob; gob= gob->next) { + if((gob->ob->flag & SELECT) == 0) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); + } + } + + WM_event_add_notifier(C, NC_SCENE|ND_OB_SELECT, scene); + } else if(ELEM5(te->idcode, ID_ME, ID_CU, ID_MB, ID_LT, ID_AR)) { Object *obedit= CTX_data_edit_object(C); if(obedit) ED_object_exit_editmode(C, EM_FREEDATA|EM_FREEUNDO|EM_WAITCURSOR|EM_DO_UNDO); else { - ED_object_enter_editmode(C, EM_WAITCURSOR); + Object *ob= CTX_data_active_object(C); + + /* Don't allow edit mode if the object is hide! + * check the bug #22153 and #21609 + */ + if (ob && (!(ob->restrictflag & OB_RESTRICT_VIEW))) + ED_object_enter_editmode(C, EM_WAITCURSOR); // XXX extern_set_butspace(F9KEY, 0); } } else { // rest of types @@ -2655,17 +2771,7 @@ static TreeElement *outliner_find_named(SpaceOops *soops, ListBase *lb, char *na TreeElement *te, *tes; for (te= lb->first; te; te= te->next) { - int found; - - /* determine if match */ - if(flags==OL_FIND) - found= BLI_strcasestr(te->name, name)!=NULL; - else if(flags==OL_FIND_CASE) - found= strstr(te->name, name)!=NULL; - else if(flags==OL_FIND_COMPLETE) - found= BLI_strcasecmp(te->name, name)==0; - else - found= strcmp(te->name, name)==0; + int found = outliner_filter_has_name(te, name, flags); if(found) { /* name is right, but is element the previous one? */ @@ -2721,7 +2827,7 @@ void outliner_find_panel(Scene *scene, ARegion *ar, SpaceOops *soops, int again, TreeElement *last_find; TreeStoreElem *tselem; int ytop, xdelta, prevFound=0; - char name[33]; + char name[32]; /* get last found tree-element based on stored search_tse */ last_find= outliner_find_tse(soops, &soops->search_tse); @@ -2729,7 +2835,7 @@ void outliner_find_panel(Scene *scene, ARegion *ar, SpaceOops *soops, int again, /* determine which type of search to do */ if (again && last_find) { /* no popup panel - previous + user wanted to search for next after previous */ - BLI_strncpy(name, soops->search_string, 33); + BLI_strncpy(name, soops->search_string, sizeof(name)); flags= soops->search_flags; /* try to find matching element */ @@ -3018,7 +3124,6 @@ static void unlink_group_cb(bContext *C, Scene *scene, TreeElement *te, TreeStor if( GS(tsep->id->name)==ID_OB) { Object *ob= (Object *)tsep->id; ob->dup_group= NULL; - group->id.us--; } } else { @@ -3328,6 +3433,9 @@ static EnumPropertyItem prop_group_op_types[] = { {1, "UNLINK", 0, "Unlink", ""}, {2, "LOCAL", 0, "Make Local", ""}, {3, "LINK", 0, "Link Group Objects to Scene", ""}, + {4, "TOGVIS", 0, "Toggle Visible", ""}, + {5, "TOGSEL", 0, "Toggle Selectable", ""}, + {6, "TOGREN", 0, "Toggle Renderable", ""}, {0, NULL, 0, NULL, NULL} }; @@ -3354,7 +3462,7 @@ static int outliner_group_operation_exec(bContext *C, wmOperator *op) else if(event==3) { outliner_do_libdata_operation(C, scene, soops, &soops->tree, group_linkobs2scene_cb); ED_undo_push(C, "Link Group Objects to Scene"); - } + } WM_event_add_notifier(C, NC_GROUP, NULL); @@ -3786,7 +3894,7 @@ static void do_outliner_drivers_editop(SpaceOops *soops, ListBase *tree, short m short groupmode= KSP_GROUP_KSNAME; /* check if RNA-property described by this selected element is an animateable prop */ - if ((tselem->type == TSE_RNA_PROPERTY) && RNA_property_animateable(&te->rnaptr, te->directdata)) { + if (ELEM(tselem->type, TSE_RNA_PROPERTY, TSE_RNA_ARRAY_ELEM) && RNA_property_animateable(&te->rnaptr, te->directdata)) { /* get id + path + index info from the selected element */ tree_element_to_path(soops, te, tselem, &id, &path, &array_index, &flag, &groupmode); @@ -3794,7 +3902,7 @@ static void do_outliner_drivers_editop(SpaceOops *soops, ListBase *tree, short m /* only if ID and path were set, should we perform any actions */ if (id && path) { - int arraylen; + int arraylen = 1; /* array checks */ if (flag & KSP_FLAG_WHOLE_ARRAY) { @@ -4101,11 +4209,11 @@ static void tselem_draw_icon_uibut(struct DrawIconArg *arg, int icon) if(arg->x >= arg->xmax) UI_icon_draw(arg->x, arg->y, icon); else { - uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-4, arg->y, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH, NULL, 0.0, 0.0, 1.0, arg->alpha, ""); + uiBut *but= uiDefIconBut(arg->block, LABEL, 0, icon, arg->x-4, arg->y, ICON_DEFAULT_WIDTH, ICON_DEFAULT_WIDTH, NULL, 0.0, 0.0, 1.0, arg->alpha, (arg->id && arg->id->lib) ? arg->id->lib->name : ""); if(arg->id) uiButSetDragID(but, arg->id); } - + } static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeStoreElem *tselem, TreeElement *te, float alpha) @@ -4210,6 +4318,8 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto UI_icon_draw(x, y, ICON_MOD_SMOKE); break; case eModifierType_Solidify: UI_icon_draw(x, y, ICON_MOD_SOLIDIFY); break; + case eModifierType_Screw: + UI_icon_draw(x, y, ICON_MOD_SCREW); break; default: UI_icon_draw(x, y, ICON_DOT); break; } @@ -4226,7 +4336,7 @@ static void tselem_draw_icon(uiBlock *block, int xmax, float x, float y, TreeSto case TSE_R_LAYER_BASE: UI_icon_draw(x, y, ICON_RENDERLAYERS); break; case TSE_R_LAYER: - UI_icon_draw(x, y, ICON_RENDER_RESULT); break; + UI_icon_draw(x, y, ICON_RENDERLAYERS); break; case TSE_LINKED_LAMP: UI_icon_draw(x, y, ICON_LAMP_DATA); break; case TSE_LINKED_MAT: @@ -4427,6 +4537,18 @@ static void outliner_draw_tree_element(bContext *C, uiBlock *block, Scene *scene active= 2; } } + else if(te->idcode==ID_GR) { + Group *gr = (Group *)tselem->id; + + if(group_select_flag(gr)) { + char col[4]; + UI_GetThemeColorType4ubv(TH_SELECT, SPACE_VIEW3D, col); + col[3]= 100; + glColor4ubv((GLubyte *)col); + + active= 2; + } + } else if(te->idcode==ID_OB) { Object *ob= (Object *)tselem->id; @@ -4721,6 +4843,16 @@ static void restrictbutton_view_cb(bContext *C, void *poin, void *poin2) Base *base; Scene *scene = (Scene *)poin; Object *ob = (Object *)poin2; + Object *obedit= CTX_data_edit_object(C); + + /* Don't allow hide an objet in edit mode, + * check the bug #22153 and #21609 + */ + if (obedit && obedit == ob) { + if (ob->restrictflag & OB_RESTRICT_VIEW) + ob->restrictflag &= ~OB_RESTRICT_VIEW; + return; + } /* deselect objects that are invisible */ if (ob->restrictflag & OB_RESTRICT_VIEW) { @@ -4772,11 +4904,9 @@ static void restrictbutton_r_lay_cb(bContext *C, void *poin, void *poin2) static void restrictbutton_modifier_cb(bContext *C, void *poin, void *poin2) { - Scene *scene = (Scene *)poin; Object *ob = (Object *)poin2; DAG_id_flush_update(&ob->id, OB_RECALC_DATA); - object_handle_update(scene, ob); WM_event_add_notifier(C, NC_OBJECT|ND_DRAW, ob); } @@ -4786,6 +4916,73 @@ static void restrictbutton_bone_cb(bContext *C, void *poin, void *poin2) WM_event_add_notifier(C, NC_OBJECT|ND_POSE, NULL); } + +static int group_restrict_flag(Group *gr, int flag) +{ + GroupObject *gob; + + for(gob= gr->gobject.first; gob; gob= gob->next) { + if((gob->ob->restrictflag & flag) == 0) + return 0; + } + + return 1; +} + +static int group_select_flag(Group *gr) +{ + GroupObject *gob; + + for(gob= gr->gobject.first; gob; gob= gob->next) + if((gob->ob->flag & SELECT)) + return 1; + + return 0; +} + +static void restrictbutton_gr_restrict_flag(bContext *C, void *poin, void *poin2, int flag) +{ + Scene *scene = (Scene *)poin; + GroupObject *gob; + Group *gr = (Group *)poin2; + + if(group_restrict_flag(gr, flag)) { + for(gob= gr->gobject.first; gob; gob= gob->next) { + gob->ob->restrictflag &= ~flag; + + if(flag==OB_RESTRICT_VIEW) + if(gob->ob->flag & SELECT) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_DESELECT); + } + } + else { + for(gob= gr->gobject.first; gob; gob= gob->next) { + gob->ob->restrictflag |= flag; + + if(flag==OB_RESTRICT_VIEW) + if((gob->ob->flag & SELECT) == 0) + ED_base_object_select(object_in_scene(gob->ob, scene), BA_SELECT); + } + } +} + +static void restrictbutton_gr_restrict_view(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(C, poin, poin2, OB_RESTRICT_VIEW); + WM_event_add_notifier(C, NC_GROUP, NULL); +} +static void restrictbutton_gr_restrict_select(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(C, poin, poin2, OB_RESTRICT_SELECT); + WM_event_add_notifier(C, NC_GROUP, NULL); +} +static void restrictbutton_gr_restrict_render(bContext *C, void *poin, void *poin2) +{ + restrictbutton_gr_restrict_flag(C, poin, poin2, OB_RESTRICT_RENDER); + WM_event_add_notifier(C, NC_GROUP, NULL); +} + + static void namebutton_cb(bContext *C, void *tsep, char *oldname) { SpaceOops *soops= CTX_wm_space_outliner(C); @@ -4816,7 +5013,7 @@ static void namebutton_cb(bContext *C, void *tsep, char *oldname) if (te->idcode == ID_LI) { char expanded[FILE_MAXDIR + FILE_MAXFILE]; BLI_strncpy(expanded, ((Library *)tselem->id)->name, FILE_MAXDIR + FILE_MAXFILE); - BLI_convertstringcode(expanded, G.sce); + BLI_path_abs(expanded, G.sce); if (!BLI_exists(expanded)) { error("This path does not exist, correct this before saving"); } @@ -4903,29 +5100,57 @@ static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar TreeElement *te; TreeStoreElem *tselem; Object *ob = NULL; + Group *gr = NULL; for(te= lb->first; te; te= te->next) { tselem= TREESTORE(te); if(te->ys+2*OL_H >= ar->v2d.cur.ymin && te->ys <= ar->v2d.cur.ymax) { /* objects have toggle-able restriction flags */ if(tselem->type==0 && te->idcode==ID_OB) { + PointerRNA ptr; + ob = (Object *)tselem->id; + RNA_pointer_create((ID *)ob, &RNA_Object, ob, &ptr); uiBlockSetEmboss(block, UI_EMBOSSN); - bt= uiDefIconButBitS(block, ICONTOG, OB_RESTRICT_VIEW, 0, ICON_RESTRICT_VIEW_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (short)te->ys, 17, OL_H-1, &(ob->restrictflag), 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_VIEW_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (short)te->ys, 17, OL_H-1, + &ptr, "restrict_view", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_view_cb, scene, ob); - bt= uiDefIconButBitS(block, ICONTOG, OB_RESTRICT_SELECT, 0, ICON_RESTRICT_SELECT_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (short)te->ys, 17, OL_H-1, &(ob->restrictflag), 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_SELECT_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (short)te->ys, 17, OL_H-1, + &ptr, "restrict_select", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_sel_cb, scene, ob); - bt= uiDefIconButBitS(block, ICONTOG, OB_RESTRICT_RENDER, 0, ICON_RESTRICT_RENDER_OFF, - (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (short)te->ys, 17, OL_H-1, &(ob->restrictflag), 0, 0, 0, 0, "Restrict/Allow renderability"); + bt= uiDefIconButR(block, ICONTOG, 0, ICON_RESTRICT_RENDER_OFF, + (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (short)te->ys, 17, OL_H-1, + &ptr, "restrict_render", -1, 0, 0, -1, -1, NULL); uiButSetFunc(bt, restrictbutton_rend_cb, scene, ob); uiBlockSetEmboss(block, UI_EMBOSS); + } + if(tselem->type==0 && te->idcode==ID_GR){ + int restrict_bool; + gr = (Group *)tselem->id; + + uiBlockSetEmboss(block, UI_EMBOSSN); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_VIEW); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_VIEW_ON : ICON_RESTRICT_VIEW_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (short)te->ys, 17, OL_H-1, 0, 0, 0, 0, 0, "Restrict/Allow visibility in the 3D View"); + uiButSetFunc(bt, restrictbutton_gr_restrict_view, scene, gr); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_SELECT); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_SELECT_ON : ICON_RESTRICT_SELECT_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (short)te->ys, 17, OL_H-1, 0, 0, 0, 0, 0, "Restrict/Allow selection in the 3D View"); + uiButSetFunc(bt, restrictbutton_gr_restrict_select, scene, gr); + + restrict_bool= group_restrict_flag(gr, OB_RESTRICT_RENDER); + bt = uiDefIconBut(block, BUT, 0, restrict_bool ? ICON_RESTRICT_RENDER_ON : ICON_RESTRICT_RENDER_OFF, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_RENDERX, (short)te->ys, 17, OL_H-1, 0, 0, 0, 0, 0, "Restrict/Allow renderability"); + uiButSetFunc(bt, restrictbutton_gr_restrict_render, scene, gr); + + uiBlockSetEmboss(block, UI_EMBOSS); + } /* scene render layers and passes have toggle-able flags too! */ else if(tselem->type==TSE_R_LAYER) { uiBlockSetEmboss(block, UI_EMBOSSN); @@ -4938,16 +5163,18 @@ static void outliner_draw_restrictbuts(uiBlock *block, Scene *scene, ARegion *ar } else if(tselem->type==TSE_R_PASS) { int *layflag= te->directdata; + int passflag= 1<<tselem->nr; + uiBlockSetEmboss(block, UI_EMBOSSN); - /* NOTE: tselem->nr is short! */ - bt= uiDefIconButBitI(block, ICONTOG, tselem->nr, 0, ICON_CHECKBOX_HLT-1, + + bt= uiDefIconButBitI(block, ICONTOG, passflag, 0, ICON_CHECKBOX_HLT-1, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_VIEWX, (short)te->ys, 17, OL_H-1, layflag, 0, 0, 0, 0, "Render this Pass"); uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); layflag++; /* is lay_xor */ - if(ELEM6(tselem->nr, SCE_PASS_SPEC, SCE_PASS_SHADOW, SCE_PASS_AO, SCE_PASS_REFLECT, SCE_PASS_REFRACT, SCE_PASS_RADIO)) - bt= uiDefIconButBitI(block, TOG, tselem->nr, 0, (*layflag & tselem->nr)?ICON_DOT:ICON_BLANK1, + if(ELEM8(passflag, SCE_PASS_SPEC, SCE_PASS_SHADOW, SCE_PASS_AO, SCE_PASS_REFLECT, SCE_PASS_REFRACT, SCE_PASS_INDIRECT, SCE_PASS_EMIT, SCE_PASS_ENVIRONMENT)) + bt= uiDefIconButBitI(block, TOG, passflag, 0, (*layflag & passflag)?ICON_DOT:ICON_BLANK1, (int)ar->v2d.cur.xmax-OL_TOG_RESTRICT_SELECTX, (short)te->ys, 17, OL_H-1, layflag, 0, 0, 0, 0, "Exclude this Pass from Combined"); uiButSetFunc(bt, restrictbutton_r_lay_cb, tselem->id, NULL); diff --git a/source/blender/editors/space_outliner/outliner_intern.h b/source/blender/editors/space_outliner/outliner_intern.h index c3a0165f945..fa3078a365b 100644 --- a/source/blender/editors/space_outliner/outliner_intern.h +++ b/source/blender/editors/space_outliner/outliner_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -45,7 +45,8 @@ typedef struct TreeElement { ListBase subtree; float xs, ys; // do selection int store_index; // offset in tree store - short flag, index; // flag for non-saved stuff, index for data arrays + short flag; // flag for non-saved stuff + short index; // index for data arrays short idcode; // from TreeStore id short xend; // width of item display, for select char *name; @@ -98,12 +99,6 @@ typedef struct TreeElement { #define TSE_KEYMAP 34 #define TSE_KEYMAP_ITEM 35 -/* outliner search flags */ -#define OL_FIND 0 -#define OL_FIND_CASE 1 -#define OL_FIND_COMPLETE 2 -#define OL_FIND_COMPLETE_CASE 3 - /* button events */ #define OL_NAMEBUTTON 1 @@ -146,21 +141,5 @@ void OUTLINER_OT_keyingset_remove_selected(struct wmOperatorType *ot); void OUTLINER_OT_drivers_add_selected(struct wmOperatorType *ot); void OUTLINER_OT_drivers_delete_selected(struct wmOperatorType *ot); -#if 0 -extern void outliner_mouse_event(Scene *scene, ARegion *ar, SpaceOops *soops, short event); -extern void outliner_toggle_visible(SpaceOops *soops); -extern void outliner_show_active(ARegion *ar, SpaceOops *soops); -extern void outliner_show_hierarchy(Scene *scene, SpaceOops *soops); -extern void outliner_one_level(SpaceOops *soops, int add); -extern void outliner_select(Scene *scene, SpaceOops *soops); -extern void outliner_toggle_selected(Scene *scene, SpaceOops *soops); -extern void outliner_toggle_visibility(Scene *scene, SpaceOops *soops); -extern void outliner_toggle_selectability(Scene *scene, SpaceOops *soops); -extern void outliner_toggle_renderability(Scene *scene, SpaceOops *soops); -extern void outliner_del(Scene *scene, SpaceOops *soops); -extern void outliner_page_up_down(Scene *scene, ARegion *ar, SpaceOops *soops, int up); -extern void outliner_find_panel(Scene *scene, ARegion *ar, SpaceOops *soops, int again, int flags); -#endif - #endif /* ED_OUTLINER_INTERN_H */ diff --git a/source/blender/editors/space_outliner/outliner_ops.c b/source/blender/editors/space_outliner/outliner_ops.c index fdfb89d32e3..d23e950a033 100644 --- a/source/blender/editors/space_outliner/outliner_ops.c +++ b/source/blender/editors/space_outliner/outliner_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,15 +29,12 @@ #include <stdlib.h> #include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "WM_api.h" #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" -#include "ED_screen.h" #include "outliner_intern.h" @@ -78,6 +75,8 @@ void outliner_keymap(wmKeyConfig *keyconf) { wmKeyMap *keymap= WM_keymap_find(keyconf, "Outliner", SPACE_OUTLINER, 0); + WM_keymap_add_item(keymap, "OUTLINER_OT_item_rename", LEFTMOUSE, KM_DBL_CLICK, 0, 0); + RNA_boolean_set(WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "extend", 0); RNA_boolean_set(WM_keymap_add_item(keymap, "OUTLINER_OT_item_activate", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "extend", 1); diff --git a/source/blender/editors/space_outliner/space_outliner.c b/source/blender/editors/space_outliner/space_outliner.c index 27d6c83cdb8..1c86eb4df70 100644 --- a/source/blender/editors/space_outliner/space_outliner.c +++ b/source/blender/editors/space_outliner/space_outliner.c @@ -29,16 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_color_types.h" -#include "DNA_object_types.h" -#include "DNA_outliner_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_texture_types.h" -#include "DNA_vec_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -52,7 +42,6 @@ #include "BKE_texture.h" #include "BKE_utildefines.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "WM_api.h" @@ -61,12 +50,9 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "RNA_access.h" -#include "RNA_types.h" #include "outliner_intern.h" @@ -85,11 +71,9 @@ static void outliner_main_area_draw(const bContext *C, ARegion *ar) { View2D *v2d= &ar->v2d; View2DScrollers *scrollers; - float col[3]; /* clear */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); draw_outliner(C); diff --git a/source/blender/editors/space_script/CMakeLists.txt b/source/blender/editors/space_script/CMakeLists.txt new file mode 100644 index 00000000000..58b3affe2d4 --- /dev/null +++ b/source/blender/editors/space_script/CMakeLists.txt @@ -0,0 +1,40 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +IF(WITH_PYTHON) + SET(INC ${INC} ${PYTHON_INC} ../../python) +ELSE(WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(WITH_PYTHON) + +BLENDERLIB(bf_editor_space_script "${SRC}" "${INC}") diff --git a/source/blender/editors/space_script/script_edit.c b/source/blender/editors/space_script/script_edit.c index cc90330459b..71b37e514d7 100644 --- a/source/blender/editors/space_script/script_edit.c +++ b/source/blender/editors/space_script/script_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,9 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -41,6 +38,7 @@ #include "BKE_global.h" #include "BKE_screen.h" #include "BKE_utildefines.h" +#include "BKE_report.h" #include "WM_api.h" #include "WM_types.h" @@ -49,25 +47,21 @@ #include "RNA_define.h" #include "ED_screen.h" -#include "ED_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "script_intern.h" // own include - +#ifndef DISABLE_PYTHON #include "BPY_extern.h" /* BPY_run_python_script */ +#endif static int run_pyfile_exec(bContext *C, wmOperator *op) { - ARegion *ar= CTX_wm_region(C); - - char path[512]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); #ifndef DISABLE_PYTHON if(BPY_run_python_script(C, path, NULL, op->reports)) { + ARegion *ar= CTX_wm_region(C); ED_region_tag_redraw(ar); return OPERATOR_FINISHED; } @@ -87,6 +81,34 @@ void SCRIPT_OT_python_file_run(wmOperatorType *ot) ot->exec= run_pyfile_exec; ot->poll= ED_operator_areaactive; - RNA_def_string_file_path(ot->srna, "path", "", 512, "Path", ""); + RNA_def_string_file_path(ot->srna, "filepath", "", 512, "Path", ""); } + +static int script_reload_exec(bContext *C, wmOperator *op) +{ +#ifndef DISABLE_PYTHON + /* TODO, this crashes on netrender and keying sets, need to look into why + * disable for now unless running in debug mode */ + if(G.f & G_DEBUG) { + BPY_eval_string(C, "__import__('bpy').utils.load_scripts(reload_scripts=True)"); + } + else { + BKE_reportf(op->reports, RPT_ERROR, "reloading is currently unstable, only operates in debug mode.\n"); + return OPERATOR_CANCELLED; + } + return OPERATOR_FINISHED; +#endif + return OPERATOR_CANCELLED; +} + +void SCRIPT_OT_reload(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reload Scripts"; + ot->description= "Reload Scripts"; + ot->idname= "SCRIPT_OT_reload"; + + /* api callbacks */ + ot->exec= script_reload_exec; +} diff --git a/source/blender/editors/space_script/script_header.c b/source/blender/editors/space_script/script_header.c index 2c08fd97bac..9c23d1b8131 100644 --- a/source/blender/editors/space_script/script_header.c +++ b/source/blender/editors/space_script/script_header.c @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -45,8 +41,6 @@ #include "ED_types.h" #include "ED_util.h" -#include "WM_api.h" -#include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" diff --git a/source/blender/editors/space_script/script_intern.h b/source/blender/editors/space_script/script_intern.h index c24aae600c8..ed625bb8ec6 100644 --- a/source/blender/editors/space_script/script_intern.h +++ b/source/blender/editors/space_script/script_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -39,6 +39,7 @@ void script_operatortypes(void); void script_keymap(struct wmKeyConfig *keyconf); /* script_edit.c */ +void SCRIPT_OT_reload(struct wmOperatorType *ot); void SCRIPT_OT_python_file_run(struct wmOperatorType *ot); #endif /* ED_SCRIPT_INTERN_H */ diff --git a/source/blender/editors/space_script/script_ops.c b/source/blender/editors/space_script/script_ops.c index e6d2990677f..15140f080e7 100644 --- a/source/blender/editors/space_script/script_ops.c +++ b/source/blender/editors/space_script/script_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,11 +31,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -45,12 +42,10 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "ED_screen.h" #include "script_intern.h" @@ -60,6 +55,7 @@ void script_operatortypes(void) { WM_operatortype_append(SCRIPT_OT_python_file_run); + WM_operatortype_append(SCRIPT_OT_reload); } void script_keymap(wmKeyConfig *keyconf) @@ -67,6 +63,6 @@ void script_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "Script", SPACE_SCRIPT, 0); /* TODO - this is just while we have no way to load a text datablock */ - RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "path", "test.py"); + RNA_string_set(WM_keymap_add_item(keymap, "SCRIPT_OT_python_file_run", PKEY, KM_PRESS, KM_CTRL|KM_SHIFT|KM_ALT, 0)->ptr, "filepath", "test.py"); } diff --git a/source/blender/editors/space_script/space_script.c b/source/blender/editors/space_script/space_script.c index 4f7c0dc364b..0aba1df47e9 100644 --- a/source/blender/editors/space_script/space_script.c +++ b/source/blender/editors/space_script/space_script.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -44,7 +40,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -52,13 +47,12 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "ED_markers.h" - +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "script_intern.h" // own include @@ -147,11 +141,9 @@ static void script_main_area_draw(const bContext *C, ARegion *ar) /* draw entirely, view changes should be handled here */ SpaceScript *sscript= (SpaceScript*)CTX_wm_space_data(C); View2D *v2d= &ar->v2d; - float col[3]; - + /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); diff --git a/source/blender/editors/space_sequencer/CMakeLists.txt b/source/blender/editors/space_sequencer/CMakeLists.txt new file mode 100644 index 00000000000..383cc05b7f7 --- /dev/null +++ b/source/blender/editors/space_sequencer/CMakeLists.txt @@ -0,0 +1,36 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../imbuf + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager + ../../../../intern/audaspace/intern +) + +BLENDERLIB(bf_editor_space_sequencer "${SRC}" "${INC}") diff --git a/source/blender/editors/space_sequencer/sequencer_add.c b/source/blender/editors/space_sequencer/sequencer_add.c index bd1053d8d77..01a99ed2b1f 100644 --- a/source/blender/editors/space_sequencer/sequencer_add.c +++ b/source/blender/editors/space_sequencer/sequencer_add.c @@ -41,18 +41,9 @@ #include "BLI_math.h" #include "BLI_storage_types.h" -#include "IMB_imbuf_types.h" -#include "IMB_imbuf.h" -#include "DNA_ipo_types.h" -#include "DNA_curve_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_sequence_types.h" -#include "DNA_view2d_types.h" #include "DNA_userdef_types.h" -#include "DNA_sound_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -71,23 +62,13 @@ #include "WM_api.h" #include "WM_types.h" -#include "RNA_access.h" #include "RNA_define.h" #include "RNA_enum_types.h" /* for menu/popup icons etc etc*/ -#include "UI_interface.h" -#include "UI_resources.h" -#include "ED_anim_api.h" -#include "ED_space_api.h" -#include "ED_types.h" #include "ED_screen.h" -#include "ED_util.h" -#include "ED_fileselect.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" #include "BKE_sound.h" @@ -105,13 +86,11 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag) { - RNA_def_string(ot->srna, "name", "", MAX_ID_NAME-2, "Name", "Name of the new sequence strip"); - if(flag & SEQPROP_STARTFRAME) - RNA_def_int(ot->srna, "start_frame", 0, INT_MIN, INT_MAX, "Start Frame", "Start frame of the sequence strip", INT_MIN, INT_MAX); + RNA_def_int(ot->srna, "frame_start", 0, INT_MIN, INT_MAX, "Start Frame", "Start frame of the sequence strip", INT_MIN, INT_MAX); if(flag & SEQPROP_ENDFRAME) - RNA_def_int(ot->srna, "end_frame", 0, INT_MIN, INT_MAX, "End Frame", "End frame for the color strip", INT_MIN, INT_MAX); /* not useual since most strips have a fixed length */ + RNA_def_int(ot->srna, "frame_end", 0, INT_MIN, INT_MAX, "End Frame", "End frame for the color strip", INT_MIN, INT_MAX); /* not useual since most strips have a fixed length */ RNA_def_int(ot->srna, "channel", 1, 1, MAXSEQ, "Channel", "Channel to place this strip into", 1, MAXSEQ); @@ -121,6 +100,20 @@ static void sequencer_generic_props__internal(wmOperatorType *ot, int flag) RNA_def_collection_runtime(ot->srna, "files", &RNA_OperatorFileListElement, "Files", ""); } +static void sequencer_generic_invoke_path__internal(bContext *C, wmOperator *op, const char *identifier) +{ + if(RNA_struct_find_property(op->ptr, identifier)) { + Scene *scene= CTX_data_scene(C); + Sequence *last_seq= seq_active_get(scene); + if(last_seq && last_seq->strip && SEQ_HAS_PATH(last_seq)) { + char path[sizeof(last_seq->strip->dir)]; + BLI_strncpy(path, last_seq->strip->dir, sizeof(path)); + BLI_path_abs(path, G.sce); + RNA_string_set(op->ptr, identifier, path); + } + } +} + static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, wmEvent *event, int flag) { ARegion *ar= CTX_wm_region(C); @@ -136,29 +129,36 @@ static void sequencer_generic_invoke_xy__internal(bContext *C, wmOperator *op, w UI_view2d_region_to_view(v2d, mval[0], mval[1], &mval_v2d[0], &mval_v2d[1]); RNA_int_set(op->ptr, "channel", (int)mval_v2d[1]+0.5f); - RNA_int_set(op->ptr, "start_frame", (int)mval_v2d[0]); - - if ((flag & SEQPROP_ENDFRAME) && RNA_property_is_set(op->ptr, "end_frame")==0) - RNA_int_set(op->ptr, "end_frame", (int)mval_v2d[0] + 25); // XXX arbitary but ok for now. + RNA_int_set(op->ptr, "frame_start", (int)mval_v2d[0]); + if ((flag & SEQPROP_ENDFRAME) && RNA_property_is_set(op->ptr, "frame_end")==0) + RNA_int_set(op->ptr, "frame_end", (int)mval_v2d[0] + 25); // XXX arbitary but ok for now. + + sequencer_generic_invoke_path__internal(C, op, "filepath"); + sequencer_generic_invoke_path__internal(C, op, "directory"); } static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) { + int is_file= -1; memset(seq_load, 0, sizeof(SeqLoadInfo)); - seq_load->start_frame= RNA_int_get(op->ptr, "start_frame"); + seq_load->start_frame= RNA_int_get(op->ptr, "frame_start"); seq_load->end_frame= seq_load->start_frame; /* un-set */ seq_load->channel= RNA_int_get(op->ptr, "channel"); seq_load->len= 1; // images only, if endframe isnt set! - RNA_string_get(op->ptr, "name", seq_load->name+2); - - RNA_string_get(op->ptr, "path", seq_load->path); /* full path, file is set by the caller */ + if(RNA_struct_find_property(op->ptr, "filepath")) { + RNA_string_get(op->ptr, "filepath", seq_load->path); /* full path, file is set by the caller */ + is_file= 1; + } else if (RNA_struct_find_property(op->ptr, "directory")) { + RNA_string_get(op->ptr, "directory", seq_load->path); /* full path, file is set by the caller */ + is_file= 0; + } - if (RNA_struct_find_property(op->ptr, "end_frame")) { - seq_load->end_frame = RNA_int_get(op->ptr, "end_frame"); + if (RNA_struct_find_property(op->ptr, "frame_end")) { + seq_load->end_frame = RNA_int_get(op->ptr, "frame_end"); } if (RNA_struct_find_property(op->ptr, "replace_sel") && RNA_boolean_get(op->ptr, "replace_sel")) @@ -172,6 +172,20 @@ static void seq_load_operator_info(SeqLoadInfo *seq_load, wmOperator *op) /* always use this for ops */ seq_load->flag |= SEQ_LOAD_FRAME_ADVANCE; + + + if(is_file==1) { + BLI_strncpy(seq_load->name, BLI_path_basename(seq_load->path), sizeof(seq_load->name)); + } + else if(RNA_struct_find_property(op->ptr, "files")) { + /* used for image strip */ + /* best guess, first images name */ + RNA_BEGIN(op->ptr, itemptr, "files") { + RNA_string_get(&itemptr, "name", seq_load->name); + break; + } + RNA_END; + } } /* add scene operator */ @@ -188,10 +202,10 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) int start_frame, channel; /* operator props */ - start_frame= RNA_int_get(op->ptr, "start_frame"); + start_frame= RNA_int_get(op->ptr, "frame_start"); channel= RNA_int_get(op->ptr, "channel"); - sce_seq= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "type")); + sce_seq= BLI_findlink(&CTX_data_main(C)->scene, RNA_enum_get(op->ptr, "scene")); if (sce_seq==NULL) { BKE_report(op->reports, RPT_ERROR, "Scene not found"); @@ -199,9 +213,11 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) } seq = alloc_sequence(ed->seqbasep, start_frame, channel); - seq->type= SEQ_SCENE; + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ + seq->scene= sce_seq; + seq->sfra= sce_seq->r.sfra; /* basic defaults */ seq->strip= strip= MEM_callocN(sizeof(Strip), "strip"); @@ -210,17 +226,17 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) strip->stripdata= se= MEM_callocN(seq->len*sizeof(StripElem), "stripelem"); - if(RNA_property_is_set(op->ptr, "name")) - RNA_string_get(op->ptr, "name", seq->name+2); - else - strcpy(seq->name+2, sce_seq->id.name+2); - + strcpy(seq->name+2, sce_seq->id.name+2); + seqbase_unique_name_recursive(&ed->seqbase, seq); + + seq->scene_sound = sound_scene_add_scene_sound(scene, seq, start_frame, start_frame + strip->len, 0); + calc_sequence_disp(scene, seq); sort_seq(scene); if (RNA_boolean_get(op->ptr, "replace_sel")) { deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); seq->flag |= SELECT; } @@ -232,6 +248,11 @@ static int sequencer_add_scene_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_scene_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(!ED_operator_sequencer_active(C)) { + BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); + return OPERATOR_CANCELLED; + } + sequencer_generic_invoke_xy__internal(C, op, event, 0); return sequencer_add_scene_strip_exec(C, op); // needs a menu @@ -252,14 +273,15 @@ void SEQUENCER_OT_scene_strip_add(struct wmOperatorType *ot) ot->invoke= sequencer_add_scene_strip_invoke; ot->exec= sequencer_add_scene_strip_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME); - prop= RNA_def_enum(ot->srna, "type", DummyRNA_NULL_items, 0, "Type", ""); + prop= RNA_def_enum(ot->srna, "scene", DummyRNA_NULL_items, 0, "Scene", ""); RNA_def_enum_funcs(prop, RNA_scene_itemf); + ot->prop= prop; } static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoadFunc seq_load_func) @@ -282,7 +304,7 @@ static int sequencer_add_generic_strip_exec(bContext *C, wmOperator *op, SeqLoad char dir_only[FILE_MAX]; char file_only[FILE_MAX]; - BLI_split_dirfile_basic(seq_load.path, dir_only, NULL); + BLI_split_dirfile(seq_load.path, dir_only, NULL); RNA_BEGIN(op->ptr, itemptr, "files") { RNA_string_get(&itemptr, "name", file_only); @@ -318,9 +340,20 @@ static int sequencer_add_movie_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_movie_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ +{ + if(!ED_operator_sequencer_active(C)) { + BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); + return OPERATOR_CANCELLED; + } + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, 0); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_movie_strip_exec(C, op); } @@ -337,12 +370,12 @@ void SEQUENCER_OT_movie_strip_add(struct wmOperatorType *ot) ot->invoke= sequencer_add_movie_strip_invoke; ot->exec= sequencer_add_movie_strip_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|MOVIEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "sound", TRUE, "Sound", "Load sound with the movie"); } @@ -355,9 +388,20 @@ static int sequencer_add_sound_strip_exec(bContext *C, wmOperator *op) } static int sequencer_add_sound_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ +{ + if(!ED_operator_sequencer_active(C)) { + BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); + return OPERATOR_CANCELLED; + } + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, 0); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_sound_strip_exec(C, op); } @@ -374,12 +418,12 @@ void SEQUENCER_OT_sound_strip_add(struct wmOperatorType *ot) ot->invoke= sequencer_add_sound_strip_invoke; ot->exec= sequencer_add_sound_strip_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|SOUNDFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_FILES); RNA_def_boolean(ot->srna, "cache", FALSE, "Cache", "Cache the sound in memory."); } @@ -403,26 +447,26 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) seq_load.len= RNA_property_collection_length(op->ptr, RNA_struct_find_property(op->ptr, "files")); if(seq_load.len==0) - seq_load.len= 1; + return OPERATOR_CANCELLED; if(seq_load.flag & SEQ_LOAD_REPLACE_SEL) deselect_all_seq(scene); - + /* main adding function */ seq= sequencer_add_image_strip(C, ed->seqbasep, &seq_load); strip= seq->strip; se= strip->stripdata; - if(seq_load.len > 1) { - RNA_BEGIN(op->ptr, itemptr, "files") { - RNA_string_get(&itemptr, "name", se->name); - se++; - } - RNA_END; + RNA_BEGIN(op->ptr, itemptr, "files") { + char *filename= RNA_string_get_alloc(&itemptr, "name", NULL, 0); + BLI_strncpy(se->name, filename, sizeof(se->name)); + MEM_freeN(filename); + se++; } - else { - BLI_split_dirfile_basic(seq_load.path, NULL, se->name); + RNA_END; + + if(seq_load.len == 1) { if(seq_load.start_frame < seq_load.end_frame) { seq->endstill= seq_load.end_frame - seq_load.start_frame; } @@ -442,8 +486,19 @@ static int sequencer_add_image_strip_exec(bContext *C, wmOperator *op) static int sequencer_add_image_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(!ED_operator_sequencer_active(C)) { + BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); + return OPERATOR_CANCELLED; + } + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); - return WM_operator_filesel(C, op, event); + + WM_event_add_fileselect(C, op); + return OPERATOR_RUNNING_MODAL; + //return sequencer_add_image_strip_exec(C, op); } @@ -460,12 +515,12 @@ void SEQUENCER_OT_image_strip_add(struct wmOperatorType *ot) ot->invoke= sequencer_add_image_strip_invoke; ot->exec= sequencer_add_image_strip_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|IMAGEFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_DIRECTORY|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME|SEQPROP_FILES); } @@ -486,13 +541,13 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) Sequence *seq1, *seq2, *seq3; char *error_msg; - start_frame= RNA_int_get(op->ptr, "start_frame"); - end_frame= RNA_int_get(op->ptr, "end_frame"); + start_frame= RNA_int_get(op->ptr, "frame_start"); + end_frame= RNA_int_get(op->ptr, "frame_end"); channel= RNA_int_get(op->ptr, "channel"); type= RNA_enum_get(op->ptr, "type"); - // XXX We need unique names and move to invoke + // XXX move to invoke if(!seq_effect_find_selected(scene, NULL, type, &seq1, &seq2, &seq3, &error_msg)) { BKE_report(op->reports, RPT_ERROR, error_msg); return OPERATOR_CANCELLED; @@ -508,11 +563,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) seq = alloc_sequence(ed->seqbasep, start_frame, channel); seq->type= type; - if(RNA_property_is_set(op->ptr, "name")) - RNA_string_get(op->ptr, "name", seq->name+2); - else - strcpy(seq->name+2, give_seqname(seq)); - + BLI_strncpy(seq->name+2, give_seqname(seq), sizeof(seq->name)-2); seqbase_unique_name_recursive(&ed->seqbase, seq); sh = get_sequence_effect(seq); @@ -541,7 +592,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) if (seq->type==SEQ_PLUGIN) { char path[FILE_MAX]; - RNA_string_get(op->ptr, "path", path); + RNA_string_get(op->ptr, "filepath", path); sh.init_plugin(seq, path); @@ -555,6 +606,18 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) else if (seq->type==SEQ_COLOR) { SolidColorVars *colvars= (SolidColorVars *)seq->effectdata; RNA_float_get_array(op->ptr, "color", colvars->col); + seq->blend_mode= SEQ_CROSS; /* so alpha adjustment fade to the strip below */ + + } + + // XXX, this conflicts with giving a channel with invoke, perhaps we should have an active channel + // but for now this is much more usable + if(seq->seq1 || seq->seq2 || seq->seq3) { + int chan= MAX3( seq->seq1 ? seq->seq1->machine : 0, + seq->seq2 ? seq->seq2->machine : 0, + seq->seq3 ? seq->seq3->machine : 0); + if(chan < MAXSEQ) + seq->machine= chan; } if(seq_test_overlap(ed->seqbasep, seq)) shuffle_seq(ed->seqbasep, seq, scene); @@ -568,7 +631,7 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) if (RNA_boolean_get(op->ptr, "replace_sel")) { deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); seq->flag |= SELECT; } @@ -581,9 +644,18 @@ static int sequencer_add_effect_strip_exec(bContext *C, wmOperator *op) /* add color */ static int sequencer_add_effect_strip_invoke(bContext *C, wmOperator *op, wmEvent *event) { + if(!ED_operator_sequencer_active(C)) { + BKE_report(op->reports, RPT_ERROR, "Sequencer area not active"); + return OPERATOR_CANCELLED; + } + sequencer_generic_invoke_xy__internal(C, op, event, SEQPROP_ENDFRAME); if (RNA_property_is_set(op->ptr, "type") && RNA_enum_get(op->ptr, "type")==SEQ_PLUGIN) { + + if(!RNA_property_is_set(op->ptr, "relative_path")) + RNA_boolean_set(op->ptr, "relative_path", U.flag & USER_RELPATHS); + /* only plugins need the file selector */ return WM_operator_filesel(C, op, event); } @@ -603,12 +675,12 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot) ot->invoke= sequencer_add_effect_strip_invoke; ot->exec= sequencer_add_effect_strip_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= ED_operator_scene_editable; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, 0, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH|WM_FILESEL_RELPATH); sequencer_generic_props__internal(ot, SEQPROP_STARTFRAME|SEQPROP_ENDFRAME); RNA_def_enum(ot->srna, "type", sequencer_prop_effect_types, SEQ_CROSS, "Type", "Sequencer effect type"); RNA_def_float_vector(ot->srna, "color", 3, NULL, 0.0f, 1.0f, "Color", "Initialize the strip with this color (only used when type='COLOR')", 0.0f, 1.0f); diff --git a/source/blender/editors/space_sequencer/sequencer_buttons.c b/source/blender/editors/space_sequencer/sequencer_buttons.c index d6b52e83090..a2aa7e649b9 100644 --- a/source/blender/editors/space_sequencer/sequencer_buttons.c +++ b/source/blender/editors/space_sequencer/sequencer_buttons.c @@ -27,11 +27,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -43,21 +38,14 @@ #include "BKE_screen.h" #include "BKE_utildefines.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" #include "ED_screen.h" -#include "ED_sequencer.h" -#include "ED_util.h" -#include "RNA_access.h" #include "WM_api.h" #include "WM_types.h" #include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "sequencer_intern.h" diff --git a/source/blender/editors/space_sequencer/sequencer_draw.c b/source/blender/editors/space_sequencer/sequencer_draw.c index c1a023d0009..4f52a17f623 100644 --- a/source/blender/editors/space_sequencer/sequencer_draw.c +++ b/source/blender/editors/space_sequencer/sequencer_draw.c @@ -35,12 +35,9 @@ #include "IMB_imbuf_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_sequence_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_view2d_types.h" #include "DNA_userdef_types.h" #include "BKE_context.h" @@ -51,7 +48,6 @@ #include "BKE_utildefines.h" #include "BKE_sound.h" -#include "IMB_imbuf_types.h" #include "IMB_imbuf.h" #include "BIF_gl.h" @@ -59,8 +55,6 @@ #include "ED_anim_api.h" #include "ED_markers.h" -#include "ED_space_api.h" -#include "ED_sequencer.h" #include "ED_types.h" #include "UI_interface.h" @@ -132,6 +126,7 @@ static void get_seq_color3ubv(Scene *curscene, Sequence *seq, char *col) case SEQ_ALPHAUNDER: case SEQ_OVERDROP: case SEQ_GLOW: + case SEQ_MULTICAM: /* slightly offset hue to distinguish different effects */ UI_GetThemeColor3ubv(TH_SEQ_EFFECT, col); @@ -205,46 +200,86 @@ static void drawseqwave(Sequence *seq, float x1, float y1, float x2, float y2, f } } +static void drawmeta_stipple(int value) +{ + if(value) { + glEnable(GL_POLYGON_STIPPLE); + glPolygonStipple(stipple_halftone); + + glEnable(GL_LINE_STIPPLE); + glLineStipple(1, 0x8888); + } + else { + glDisable(GL_POLYGON_STIPPLE); + glDisable(GL_LINE_STIPPLE); + } +} + static void drawmeta_contents(Scene *scene, Sequence *seqm, float x1, float y1, float x2, float y2) { /* Note, this used to use WHILE_SEQ, but it messes up the seq->depth value, (needed by transform when doing overlap checks) * so for now, just use the meta's immediate children, could be fixed but its only drawing - Campbell */ Sequence *seq; - float dx; - int nr; - char col[3]; - - nr= BLI_countlist(&seqm->seqbase); + char col[4]; - dx= (x2-x1)/nr; + int chan_min= MAXSEQ; + int chan_max= 0; + int chan_range= 0; + float draw_range= y2 - y1; + float draw_height; - if (seqm->flag & SEQ_MUTE) { - glEnable(GL_POLYGON_STIPPLE); - glPolygonStipple(stipple_halftone); - - glEnable(GL_LINE_STIPPLE); - glLineStipple(1, 0x8888); + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + if(seqm->flag & SEQ_MUTE) + drawmeta_stipple(1); + + for (seq= seqm->seqbase.first; seq; seq= seq->next) { + chan_min= MIN2(chan_min, seq->machine); + chan_max= MAX2(chan_max, seq->machine); } - + + chan_range= (chan_max - chan_min) + 1; + draw_height= draw_range / chan_range; + + col[3]= 196; /* alpha, used for all meta children */ + for (seq= seqm->seqbase.first; seq; seq= seq->next) { - get_seq_color3ubv(scene, seq, col); - - glColor3ubv((GLubyte *)col); + if((seq->startdisp > x2 || seq->enddisp < x1) == 0) { + float y_chan= (seq->machine - chan_min) / (float)(chan_range) * draw_range; + float x1_chan= seq->startdisp; + float x2_chan= seq->enddisp; + float y1_chan, y2_chan; - glRectf(x1, y1, x1+0.9*dx, y2); - - UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, -30); - glColor3ubv((GLubyte *)col); + if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) + drawmeta_stipple(1); - fdrawbox(x1, y1, x1+0.9*dx, y2); - - x1+= dx; + get_seq_color3ubv(scene, seq, col); + + glColor4ubv((GLubyte *)col); + + /* clamp within parent sequence strip bounds */ + if(x1_chan < x1) x1_chan= x1; + if(x2_chan > x2) x2_chan= x2; + + y1_chan= y1 + y_chan + (draw_height * SEQ_STRIP_OFSBOTTOM); + y2_chan= y1 + y_chan + (draw_height * SEQ_STRIP_OFSTOP); + + glRectf(x1_chan, y1_chan, x2_chan, y2_chan); + + UI_GetColorPtrBlendShade3ubv(col, col, col, 0.0, -30); + glColor4ubv((GLubyte *)col); + fdrawbox(x1_chan, y1_chan, x2_chan, y2_chan); + + if((seqm->flag & SEQ_MUTE) == 0 && (seq->flag & SEQ_MUTE)) + drawmeta_stipple(0); + } } + + if (seqm->flag & SEQ_MUTE) + drawmeta_stipple(0); - if (seqm->flag & SEQ_MUTE) { - glDisable(GL_POLYGON_STIPPLE); - glDisable(GL_LINE_STIPPLE); - } + glDisable(GL_BLEND); } /* draw a handle, for each end of a sequence strip */ @@ -330,11 +365,11 @@ static void draw_seq_handle(View2D *v2d, Sequence *seq, float pixelx, short dire } } -static void draw_seq_extensions(Scene *scene, SpaceSeq *sseq, Sequence *seq) +static void draw_seq_extensions(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence *seq) { float x1, x2, y1, y2, pixely, a; char col[3], blendcol[3]; - View2D *v2d; + View2D *v2d= &ar->v2d; if(seq->type >= SEQ_EFFECT) return; @@ -343,8 +378,7 @@ static void draw_seq_extensions(Scene *scene, SpaceSeq *sseq, Sequence *seq) y1= seq->machine+SEQ_STRIP_OFSBOTTOM; y2= seq->machine+SEQ_STRIP_OFSTOP; - - v2d = &sseq->v2d; + pixely = (v2d->cur.ymax - v2d->cur.ymin)/(v2d->mask.ymax - v2d->mask.ymin); blendcol[0] = blendcol[1] = blendcol[2] = 120; @@ -438,40 +472,49 @@ static void draw_seq_text(View2D *v2d, Sequence *seq, float x1, float x2, float { rctf rect; char str[32 + FILE_MAXDIR+FILE_MAXFILE]; + const char *name= seq->name+2; - if(seq->name[2]) { - sprintf(str, "%d | %s: %s", seq->len, give_seqname(seq), seq->name+2); + if(name[0]=='\0') + name= give_seqname(seq); + + if(seq->type == SEQ_META) { + sprintf(str, "%d | %s", seq->len, name); } - else{ - if(seq->type == SEQ_META) { - sprintf(str, "%d | %s", seq->len, give_seqname(seq)); - } - else if(seq->type == SEQ_SCENE) { - if(seq->scene) sprintf(str, "%d | %s: %s", seq->len, give_seqname(seq), seq->scene->id.name+2); - else sprintf(str, "%d | %s", seq->len, give_seqname(seq)); - - } - else if(seq->type == SEQ_IMAGE) { - sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name); - } - else if(seq->type & SEQ_EFFECT) { - int can_float = (seq->type != SEQ_PLUGIN) - || (seq->plugin && seq->plugin->version >= 4); - - if(seq->seq3!=seq->seq2 && seq->seq1!=seq->seq3) - sprintf(str, "%d | %s: %d>%d (use %d)%s", seq->len, give_seqname(seq), seq->seq1->machine, seq->seq2->machine, seq->seq3->machine, can_float ? "" : " No float, upgrade plugin!"); - else if (seq->seq1 && seq->seq2) - sprintf(str, "%d | %s: %d>%d%s", seq->len, give_seqname(seq), seq->seq1->machine, seq->seq2->machine, can_float ? "" : " No float, upgrade plugin!"); - else - sprintf(str, "%d | %s", seq->len, give_seqname(seq)); + else if(seq->type == SEQ_SCENE) { + if(seq->scene) { + if(seq->scene_camera) { + sprintf(str, "%d | %s: %s (%s)", seq->len, name, seq->scene->id.name+2, ((ID *)seq->scene_camera)->name+2); + } else { + sprintf(str, "%d | %s: %s", seq->len, name, seq->scene->id.name+2); + } } - else if (seq->type == SEQ_SOUND) { - sprintf(str, "%d | %s", seq->len, seq->sound->name); - } - else if (seq->type == SEQ_MOVIE) { - sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name); + else { + sprintf(str, "%d | %s", seq->len, name); } } + else if(seq->type == SEQ_MULTICAM) { + sprintf(str, "Cam: %d", seq->multicam_source); + } + else if(seq->type == SEQ_IMAGE) { + sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name); + } + else if(seq->type & SEQ_EFFECT) { + int can_float = (seq->type != SEQ_PLUGIN) + || (seq->plugin && seq->plugin->version >= 4); + + if(seq->seq3!=seq->seq2 && seq->seq1!=seq->seq3) + sprintf(str, "%d | %s: %d>%d (use %d)%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, seq->seq3->machine, can_float ? "" : " No float, upgrade plugin!"); + else if (seq->seq1 && seq->seq2) + sprintf(str, "%d | %s: %d>%d%s", seq->len, name, seq->seq1->machine, seq->seq2->machine, can_float ? "" : " No float, upgrade plugin!"); + else + sprintf(str, "%d | %s", seq->len, name); + } + else if (seq->type == SEQ_SOUND) { + sprintf(str, "%d | %s", seq->len, seq->sound->name); + } + else if (seq->type == SEQ_MOVIE) { + sprintf(str, "%d | %s%s", seq->len, seq->strip->dir, seq->strip->stripdata->name); + } if(seq->flag & SELECT){ cpack(0xFFFFFF); @@ -581,7 +624,7 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * /* draw additional info and controls */ if (!is_single_image) - draw_seq_extensions(scene, sseq, seq); + draw_seq_extensions(scene, ar, sseq, seq); draw_seq_handle(v2d, seq, pixelx, SEQ_LEFTHANDLE); draw_seq_handle(v2d, seq, pixelx, SEQ_RIGHTHANDLE); @@ -615,13 +658,12 @@ static void draw_seq_strip(Scene *scene, ARegion *ar, SpaceSeq *sseq, Sequence * glDisable(GL_LINE_STIPPLE); } + if(seq->type==SEQ_META) drawmeta_contents(scene, seq, x1, y1, x2, y2); + /* calculate if seq is long enough to print a name */ x1= seq->startdisp+seq->handsize; x2= seq->enddisp-seq->handsize; - /* but first the contents of a meta */ - if(seq->type==SEQ_META) drawmeta_contents(scene, seq, x1, y1+0.15, x2, y2-0.15); - /* info text on the strip */ if(x1<v2d->cur.xmin) x1= v2d->cur.xmin; else if(x1>v2d->cur.xmax) x1= v2d->cur.xmax; @@ -647,7 +689,7 @@ void set_special_seq_update(int val) else special_seq_update= 0; } -void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq) +void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq, int cfra, int frame_ofs) { extern void gl_round_box(int mode, float minx, float miny, float maxx, float maxy, float rad); struct ImBuf *ibuf; @@ -678,14 +720,19 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq recty = viewrecty + 0.5f; if (sseq->mainb == SEQ_DRAW_IMG_IMBUF) { - viewrectx *= (float)scene->r.xasp / (float)scene->r.yasp; + viewrectx *= scene->r.xasp / scene->r.yasp; viewrectx /= proxy_size / 100.0; viewrecty /= proxy_size / 100.0; } - /* XXX TODO: take color from theme */ - glClearColor(0.0, 0.0, 0.0, 0.0); - glClear(GL_COLOR_BUFFER_BIT); + if(frame_ofs == 0) { + /* XXX TODO: take color from theme */ + glClearColor(0.0, 0.0, 0.0, 0.0); + glClear(GL_COLOR_BUFFER_BIT); + } + + /* without this colors can flicker from previous opengl state */ + glColor4ub(255, 255, 255, 255); UI_view2d_totRect_set(v2d, viewrectx + 0.5f, viewrecty + 0.5f); UI_view2d_curRect_validate(v2d); @@ -700,13 +747,13 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq else { recursive= 1; if (special_seq_update) { - ibuf= give_ibuf_seq_direct(scene, rectx, recty, (scene->r.cfra), proxy_size, special_seq_update); + ibuf= give_ibuf_seq_direct(scene, rectx, recty, cfra + frame_ofs, proxy_size, special_seq_update); } else if (!U.prefetchframes) { // XXX || (G.f & G_PLAYANIM) == 0) { - ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, proxy_size); + ibuf= (ImBuf *)give_ibuf_seq(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size); } else { - ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, (scene->r.cfra), sseq->chanshown, proxy_size); + ibuf= (ImBuf *)give_ibuf_seq_threaded(scene, rectx, recty, cfra + frame_ofs, sseq->chanshown, proxy_size); } recursive= 0; @@ -750,11 +797,6 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq } if(ibuf->rect_float && ibuf->rect==NULL) { - if (scene->r.color_mgt_flag & R_COLOR_MANAGEMENT) { - ibuf->profile = IB_PROFILE_LINEAR_RGB; - } else { - ibuf->profile = IB_PROFILE_NONE; - } IMB_rect_from_float(ibuf); } @@ -771,11 +813,26 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, ibuf->x, ibuf->y, 0, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); - glBegin(GL_QUADS); - glTexCoord2f(0.0f, 0.0f); glVertex2f(v2d->tot.xmin, v2d->tot.ymin); - glTexCoord2f(0.0f, 1.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymax); + glBegin(GL_QUADS); + + if(frame_ofs) { + rctf tot_clip; + tot_clip.xmin= v2d->tot.xmin + (ABS(v2d->tot.xmax - v2d->tot.xmin) * scene->ed->over_border.xmin); + tot_clip.ymin= v2d->tot.ymin + (ABS(v2d->tot.ymax - v2d->tot.ymin) * scene->ed->over_border.ymin); + tot_clip.xmax= v2d->tot.xmin + (ABS(v2d->tot.xmax - v2d->tot.xmin) * scene->ed->over_border.xmax); + tot_clip.ymax= v2d->tot.ymin + (ABS(v2d->tot.ymax - v2d->tot.ymin) * scene->ed->over_border.ymax); + + glTexCoord2f(scene->ed->over_border.xmin, scene->ed->over_border.ymin);glVertex2f(tot_clip.xmin, tot_clip.ymin); + glTexCoord2f(scene->ed->over_border.xmin, scene->ed->over_border.ymax);glVertex2f(tot_clip.xmin, tot_clip.ymax); + glTexCoord2f(scene->ed->over_border.xmax, scene->ed->over_border.ymax);glVertex2f(tot_clip.xmax, tot_clip.ymax); + glTexCoord2f(scene->ed->over_border.xmax, scene->ed->over_border.ymin);glVertex2f(tot_clip.xmax, tot_clip.ymin); + } + else { + glTexCoord2f(0.0f, 0.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymin); + glTexCoord2f(0.0f, 1.0f);glVertex2f(v2d->tot.xmin, v2d->tot.ymax); glTexCoord2f(1.0f, 1.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymax); - glTexCoord2f(1.0f, 0.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymin); + glTexCoord2f(1.0f, 0.0f);glVertex2f(v2d->tot.xmax, v2d->tot.ymin); + } glEnd( ); glBindTexture(GL_TEXTURE_2D, last_texid); glDisable(GL_TEXTURE_2D); @@ -783,7 +840,7 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq /* safety border */ if (sseq->mainb == SEQ_DRAW_IMG_IMBUF && - (sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) { + (sseq->flag & SEQ_DRAW_SAFE_MARGINS) != 0) { float fac= 0.1; float x1 = v2d->tot.xmin; float y1 = v2d->tot.ymin; @@ -820,7 +877,7 @@ void draw_image_seq(const bContext* C, Scene *scene, ARegion *ar, SpaceSeq *sseq /* draw grease-pencil (screen aligned) */ // if (sseq->flag & SEQ_DRAW_GPENCIL) -// XXX draw_gpencil_2dview(sa, 0); +// XXX draw_gpencil_view2d(sa, 0); /* ortho at pixel level */ UI_view2d_view_restore(C); @@ -898,7 +955,7 @@ static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar) Scene *scene= CTX_data_scene(C); SpaceSeq *sseq= CTX_wm_space_seq(C); View2D *v2d= &ar->v2d; - Sequence *last_seq = active_seq_get(scene); + Sequence *last_seq = seq_active_get(scene); int sel = 0, j; float pixelx = (v2d->cur.xmax - v2d->cur.xmin)/(v2d->mask.xmax - v2d->mask.xmin); @@ -930,6 +987,33 @@ static void draw_seq_strips(const bContext *C, Editing *ed, ARegion *ar) draw_seq_strip(scene, ar, sseq, last_seq, 120, pixelx); } +static void seq_draw_sfra_efra(const bContext *C, SpaceSeq *sseq, ARegion *ar) +{ + View2D *v2d= UI_view2d_fromcontext(C); + Scene *scene= CTX_data_scene(C); + + glEnable(GL_BLEND); + + /* draw darkened area outside of active timeline + * frame range used is preview range or scene range */ + UI_ThemeColorShadeAlpha(TH_BACK, -25, -100); + + if (PSFRA < PEFRA) { + glRectf(v2d->cur.xmin, v2d->cur.ymin, (float)PSFRA, v2d->cur.ymax); + glRectf((float)PEFRA, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax); + } + else { + glRectf(v2d->cur.xmin, v2d->cur.ymin, v2d->cur.xmax, v2d->cur.ymax); + } + + UI_ThemeColorShade(TH_BACK, -60); + /* thin lines where the actual frames are */ + fdrawline((float)PSFRA, v2d->cur.ymin, (float)PSFRA, v2d->cur.ymax); + fdrawline((float)PEFRA, v2d->cur.ymin, (float)PEFRA, v2d->cur.ymax); + + glDisable(GL_BLEND); +} + /* Draw Timeline/Strip Editor Mode for Sequencer */ void draw_timeline_seq(const bContext *C, ARegion *ar) { @@ -963,7 +1047,8 @@ void draw_timeline_seq(const bContext *C, ARegion *ar) /* regular grid-pattern over the rest of the view (i.e. frame grid lines) */ UI_view2d_constant_grid_draw(C, v2d); - + + seq_draw_sfra_efra(C, sseq, ar); /* sequence strips (if there is data available to be drawn) */ if (ed) { @@ -987,6 +1072,19 @@ void draw_timeline_seq(const bContext *C, ARegion *ar) /* preview range */ UI_view2d_view_ortho(C, v2d); ANIM_draw_previewrange(C, v2d); + + /* overlap playhead */ + if(scene->ed && scene->ed->over_flag & SEQ_EDIT_OVERLAY_SHOW) { + int cfra_over= (scene->ed->over_flag & SEQ_EDIT_OVERLAY_ABS) ? scene->ed->over_cfra : scene->r.cfra + scene->ed->over_ofs; + glColor3f(0.2, 0.2, 0.2); + // glRectf(cfra_over, v2d->cur.ymin, scene->ed->over_ofs + scene->r.cfra + 1, v2d->cur.ymax); + + glBegin(GL_LINES); + glVertex2f(cfra_over, v2d->cur.ymin); + glVertex2f(cfra_over, v2d->cur.ymax); + glEnd(); + + } /* reset view matrix */ UI_view2d_view_restore(C); diff --git a/source/blender/editors/space_sequencer/sequencer_edit.c b/source/blender/editors/space_sequencer/sequencer_edit.c index ce8d99da3a9..d3d2fd7e220 100644 --- a/source/blender/editors/space_sequencer/sequencer_edit.c +++ b/source/blender/editors/space_sequencer/sequencer_edit.c @@ -42,18 +42,10 @@ #include "BLI_math.h" #include "BLI_storage_types.h" -#include "IMB_imbuf_types.h" -#include "IMB_imbuf.h" #include "DNA_ipo_types.h" -#include "DNA_curve_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_sequence_types.h" -#include "DNA_view2d_types.h" #include "DNA_userdef_types.h" -#include "DNA_sound_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -70,37 +62,24 @@ #include "WM_api.h" #include "WM_types.h" -#include "RNA_access.h" #include "RNA_define.h" /* for menu/popup icons etc etc*/ -#include "UI_interface.h" -#include "UI_resources.h" -#include "ED_anim_api.h" -#include "ED_space_api.h" -#include "ED_types.h" #include "ED_screen.h" #include "ED_transform.h" -#include "ED_util.h" #include "ED_sequencer.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" /* own include */ #include "sequencer_intern.h" -/* XXX */ -//static Sequence *_last_seq=0; -//static int _last_seq_init=0; -/* XXX */ -static void error() {} +static void error(const char *dummy) {} static void waitcursor(int val) {} -static void activate_fileselect() {} -static int pupmenu() {return 0;} -static int okee() {return 0;} +static void activate_fileselect(int d1, char *d2, char *d3, void *d4) {} +static int pupmenu(const char *dummy) {return 0;} +static int okee(const char *dummy) {return 0;} /* XXX */ @@ -120,6 +99,7 @@ EnumPropertyItem sequencer_prop_effect_types[] = { {SEQ_TRANSFORM, "TRANSFORM", 0, "Transform", "Transform effect strip type"}, {SEQ_COLOR, "COLOR", 0, "Color", "Color effect strip type"}, {SEQ_SPEED, "SPEED", 0, "Speed", "Color effect strip type"}, + {SEQ_MULTICAM, "MULTICAM", 0, "Multicam Selector", ""}, {0, NULL, 0, NULL, NULL} }; @@ -183,7 +163,7 @@ static void change_plugin_seq(Scene *scene, char *str) /* called from fileselect { Editing *ed= seq_give_editing(scene, FALSE); struct SeqEffectHandle sh; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); if(last_seq && last_seq->type != SEQ_PLUGIN) return; @@ -409,7 +389,7 @@ void deselect_all_seq(Scene *scene) if(ed==NULL) return; SEQP_BEGIN(ed, seq) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } SEQ_END @@ -422,9 +402,9 @@ void recurs_sel_seq(Sequence *seqm) seq= seqm->seqbase.first; while(seq) { - if(seqm->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL)) seq->flag &= SEQ_DESEL; + if(seqm->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL)) seq->flag &= ~SEQ_ALLSEL; else if(seqm->flag & SELECT) seq->flag |= SELECT; - else seq->flag &= SEQ_DESEL; + else seq->flag &= ~SEQ_ALLSEL; if(seq->seqbase.first) recurs_sel_seq(seq); @@ -457,7 +437,7 @@ static void reload_sound_strip(Scene *scene, char *name) Editing *ed; Sequence *seq, *seqact; SpaceFile *sfile; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); ed= scene->ed; @@ -499,7 +479,7 @@ static void reload_image_strip(Scene *scene, char *name) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq=NULL, *seqact; SpaceFile *sfile=NULL; - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); @@ -535,7 +515,7 @@ static void reload_image_strip(Scene *scene, char *name) void change_sequence(Scene *scene) { Editing *ed= seq_give_editing(scene, FALSE); - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); Scene *sce; short event; @@ -573,17 +553,17 @@ void change_sequence(Scene *scene) U.plugseqdir, change_plugin_seq); } else if(event==12); - /* recalculate: only new_stripdata */ + /* recalculate: only new_stripdata */ else { /* free previous effect and init new effect */ struct SeqEffectHandle sh; if (get_sequence_effect_num_inputs( - last_seq->type) - < get_sequence_effect_num_inputs( - event_to_efftype(event))) { + last_seq->type) + < get_sequence_effect_num_inputs( + event_to_efftype(event))) { error("New effect needs more " - "input strips!"); + "input strips!"); } else { sh = get_sequence_effect(last_seq); sh.free(last_seq); @@ -602,9 +582,9 @@ void change_sequence(Scene *scene) else if(last_seq->type == SEQ_IMAGE) { if(okee("Change images")) { activate_fileselect(FILE_SPECIAL, - "Select Images", - ed->act_imagedir, - reload_image_strip); + "Select Images", + ed->act_imagedir, + reload_image_strip); } } else if(last_seq->type == SEQ_MOVIE) { @@ -637,7 +617,7 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen *error_str= NULL; if (!activeseq) - seq2= active_seq_get(scene); + seq2= seq_active_get(scene); for(seq=ed->seqbasep->first; seq; seq=seq->next) { if(seq->flag & SELECT) { @@ -646,13 +626,13 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen return 0; } if((seq != activeseq) && (seq != seq2)) { - if(seq2==0) seq2= seq; - else if(seq1==0) seq1= seq; - else if(seq3==0) seq3= seq; - else { + if(seq2==0) seq2= seq; + else if(seq1==0) seq1= seq; + else if(seq3==0) seq3= seq; + else { *error_str= "Can't apply effect to more than 3 sequence strips"; return 0; - } + } } } } @@ -697,36 +677,6 @@ int seq_effect_find_selected(Scene *scene, Sequence *activeseq, int type, Sequen return 1; } -void reassign_inputs_seq_effect(Scene *scene) -{ - Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq1, *seq2, *seq3, *last_seq = active_seq_get(scene); - char *error_msg; - - if(last_seq==0 || !(last_seq->type & SEQ_EFFECT)) return; - if(ed==NULL) return; - - if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { - //BKE_report(op->reports, RPT_ERROR, error_msg); // XXX operatorify - return; - } - /* see reassigning would create a cycle */ - if( seq_is_predecessor(seq1, last_seq) || - seq_is_predecessor(seq2, last_seq) || - seq_is_predecessor(seq3, last_seq) - ) { - //BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed"); // XXX operatorify - return; - } - - last_seq->seq1 = seq1; - last_seq->seq2 = seq2; - last_seq->seq3 = seq3; - - update_changed_seq_and_deps(scene, last_seq, 1, 1); - -} - static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq) { Sequence *seq1, *seq2, *seq3; @@ -769,7 +719,7 @@ static Sequence *del_seq_find_replace_recurs(Scene *scene, Sequence *seq) static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short deleteall) { Sequence *seq, *seqn; - Sequence *last_seq = active_seq_get(scene); + Sequence *last_seq = seq_active_get(scene); seq= lb->first; while(seq) { @@ -779,139 +729,16 @@ static void recurs_del_seq_flag(Scene *scene, ListBase *lb, short flag, short de seq->sound->id.us--; BLI_remlink(lb, seq); - if(seq==last_seq) active_seq_set(scene, NULL); + if(seq==last_seq) seq_active_set(scene, NULL); if(seq->type==SEQ_META) recurs_del_seq_flag(scene, &seq->seqbase, flag, 1); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve */ seq_free_sequence(scene, seq); } seq= seqn; } } -static Sequence *dupli_seq(struct Scene *scene, Sequence *seq) -{ - Sequence *seqn = MEM_dupallocN(seq); - - seq->tmp = seqn; - seqn->strip= MEM_dupallocN(seq->strip); - - // XXX: add F-Curve duplication stuff? - - seqn->strip->tstripdata = 0; - seqn->strip->tstripdata_startstill = 0; - seqn->strip->tstripdata_endstill = 0; - seqn->strip->ibuf_startstill = 0; - seqn->strip->ibuf_endstill = 0; - - if (seq->strip->crop) { - seqn->strip->crop = MEM_dupallocN(seq->strip->crop); - } - - if (seq->strip->transform) { - seqn->strip->transform = MEM_dupallocN(seq->strip->transform); - } - - if (seq->strip->proxy) { - seqn->strip->proxy = MEM_dupallocN(seq->strip->proxy); - } - - if (seq->strip->color_balance) { - seqn->strip->color_balance - = MEM_dupallocN(seq->strip->color_balance); - } - - if(seq->type==SEQ_META) { - seqn->strip->stripdata = 0; - - seqn->seqbase.first= seqn->seqbase.last= 0; - /* WATCH OUT!!! - This metastrip is not recursively duplicated here - do this after!!! */ - /* - recurs_dupli_seq(&seq->seqbase,&seqn->seqbase);*/ - } else if(seq->type == SEQ_SCENE) { - seqn->strip->stripdata = 0; - } else if(seq->type == SEQ_MOVIE) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - seqn->anim= 0; - } else if(seq->type == SEQ_SOUND) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - if(seq->scene_sound) - seqn->scene_sound = sound_add_scene_sound(scene, seqn, seq->startdisp, seq->enddisp, seq->startofs + seq->anim_startofs); - - seqn->sound->id.us++; - } else if(seq->type == SEQ_IMAGE) { - seqn->strip->stripdata = - MEM_dupallocN(seq->strip->stripdata); - } else if(seq->type >= SEQ_EFFECT) { - if(seq->seq1 && seq->seq1->tmp) seqn->seq1= seq->seq1->tmp; - if(seq->seq2 && seq->seq2->tmp) seqn->seq2= seq->seq2->tmp; - if(seq->seq3 && seq->seq3->tmp) seqn->seq3= seq->seq3->tmp; - - if (seq->type & SEQ_EFFECT) { - struct SeqEffectHandle sh; - sh = get_sequence_effect(seq); - if(sh.copy) - sh.copy(seq, seqn); - } - - seqn->strip->stripdata = 0; - - } else { - fprintf(stderr, "Aiiiiekkk! sequence type not " - "handled in duplicate!\nExpect a crash" - " now...\n"); - } - - seqbase_unique_name_recursive(&scene->ed->seqbase, seqn); - - return seqn; -} - -static Sequence * deep_dupli_seq(struct Scene *scene, Sequence * seq) -{ - Sequence * seqn = dupli_seq(scene, seq); - if (seq->type == SEQ_META) { - Sequence * s; - for(s= seq->seqbase.first; s; s = s->next) { - Sequence * n = deep_dupli_seq(scene, s); - if (n) { - BLI_addtail(&seqn->seqbase, n); - } - } - } - return seqn; -} - - -static void recurs_dupli_seq(Scene *scene, ListBase *old, ListBase *new, int do_context) -{ - Sequence *seq; - Sequence *seqn = 0; - Sequence *last_seq = active_seq_get(scene); - - for(seq= old->first; seq; seq= seq->next) { - seq->tmp= NULL; - if(seq->flag & SELECT) { - seqn = dupli_seq(scene, seq); - if (seqn) { /*should never fail */ - if(do_context) { - seq->flag &= SEQ_DESEL; - seqn->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL+SEQ_LOCK); - } - - BLI_addtail(new, seqn); - if(seq->type==SEQ_META) - recurs_dupli_seq(scene, &seq->seqbase,&seqn->seqbase, do_context); - - if(do_context) { - if (seq == last_seq) { - active_seq_set(scene, seqn); - } - } - } - } - } -} static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) { @@ -960,12 +787,12 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) } } - reload_sequence_new_file(scene, seq); + reload_sequence_new_file(scene, seq, FALSE); calc_sequence(scene, seq); if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = deep_dupli_seq(scene, seq); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM); } if (seqn) { @@ -999,7 +826,7 @@ static Sequence *cut_seq_hard(Scene *scene, Sequence * seq, int cutframe) seqn->startstill = 0; } - reload_sequence_new_file(scene, seqn); + reload_sequence_new_file(scene, seqn, FALSE); calc_sequence(scene, seqn); } return seqn; @@ -1054,7 +881,7 @@ static Sequence *cut_seq_soft(Scene *scene, Sequence * seq, int cutframe) if (!skip_dup) { /* Duplicate AFTER the first change */ - seqn = deep_dupli_seq(scene, seq); + seqn = seq_dupli_recursive(scene, seq, SEQ_DUPE_UNIQUE_NAME | SEQ_DUPE_ANIM); } if (seqn) { @@ -1192,7 +1019,8 @@ void set_filter_seq(Scene *scene) if(seq->flag & SELECT) { if(seq->type==SEQ_MOVIE) { seq->flag |= SEQ_FILTERY; - reload_sequence_new_file(scene, seq); + reload_sequence_new_file(scene, seq, FALSE); + calc_sequence(scene, seq); } } @@ -1203,7 +1031,7 @@ void set_filter_seq(Scene *scene) void seq_remap_paths(Scene *scene) { - Sequence *seq, *last_seq = active_seq_get(scene); + Sequence *seq, *last_seq = seq_active_get(scene); Editing *ed= seq_give_editing(scene, FALSE); char from[FILE_MAX], to[FILE_MAX], stripped[FILE_MAX]; @@ -1284,6 +1112,20 @@ static int seq_get_snaplimit(View2D *v2d) #endif /* Operator functions */ +int sequencer_edit_poll(bContext *C) +{ + return (seq_give_editing(CTX_data_scene(C), FALSE) != NULL); +} + +int sequencer_view_poll(bContext *C) +{ + SpaceSeq *sseq= CTX_wm_space_seq(C); + Editing *ed= seq_give_editing(CTX_data_scene(C), FALSE); + if (ed && sseq && (sseq->mainb == SEQ_DRAW_IMG_IMBUF)) + return 1; + + return 0; +} /* snap operator*/ static int sequencer_snap_exec(bContext *C, wmOperator *op) @@ -1293,8 +1135,6 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; int snap_frame; - - if(ed==NULL) return OPERATOR_CANCELLED; snap_frame= RNA_int_get(op->ptr, "frame"); @@ -1303,7 +1143,7 @@ static int sequencer_snap_exec(bContext *C, wmOperator *op) /* also check metas */ SEQP_BEGIN(ed, seq) { if (seq->flag & SELECT && !(seq->depth==0 && seq->flag & SEQ_LOCK) && - seq_tx_test(seq)) { + seq_tx_test(seq)) { if((seq->flag & (SEQ_LEFTSEL+SEQ_RIGHTSEL))==0) { seq->start= snap_frame-seq->startofs+seq->startstill; } else { @@ -1368,8 +1208,7 @@ void SEQUENCER_OT_snap(struct wmOperatorType *ot) /* api callbacks */ ot->invoke= sequencer_snap_invoke; ot->exec= sequencer_snap_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1385,9 +1224,6 @@ static int sequencer_mute_exec(bContext *C, wmOperator *op) Sequence *seq; int selected; - if(ed==NULL) - return OPERATOR_CANCELLED; - selected= !RNA_boolean_get(op->ptr, "unselected"); for(seq= ed->seqbasep->first; seq; seq= seq->next) { @@ -1418,8 +1254,7 @@ void SEQUENCER_OT_mute(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_mute_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1436,9 +1271,6 @@ static int sequencer_unmute_exec(bContext *C, wmOperator *op) Sequence *seq; int selected; - if(ed==NULL) - return OPERATOR_CANCELLED; - selected= !RNA_boolean_get(op->ptr, "unselected"); for(seq= ed->seqbasep->first; seq; seq= seq->next) { @@ -1463,14 +1295,13 @@ static int sequencer_unmute_exec(bContext *C, wmOperator *op) void SEQUENCER_OT_unmute(struct wmOperatorType *ot) { /* identifiers */ - ot->name= "UnMute Strips"; + ot->name= "Un-Mute Strips"; ot->idname= "SEQUENCER_OT_unmute"; - ot->description="UnMute unselected rather than selected strips"; + ot->description="Un-Mute unselected rather than selected strips"; /* api callbacks */ ot->exec= sequencer_unmute_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1486,9 +1317,6 @@ static int sequencer_lock_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; - if(ed==NULL) - return OPERATOR_CANCELLED; - for(seq= ed->seqbasep->first; seq; seq= seq->next) { if (seq->flag & SELECT) { seq->flag |= SEQ_LOCK; @@ -1509,8 +1337,7 @@ void SEQUENCER_OT_lock(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_lock_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1523,9 +1350,6 @@ static int sequencer_unlock_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; - if(ed==NULL) - return OPERATOR_CANCELLED; - for(seq= ed->seqbasep->first; seq; seq= seq->next) { if (seq->flag & SELECT) { seq->flag &= ~SEQ_LOCK; @@ -1546,8 +1370,7 @@ void SEQUENCER_OT_unlock(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_unlock_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1560,9 +1383,6 @@ static int sequencer_reload_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; - if(ed==NULL) - return OPERATOR_CANCELLED; - for(seq= ed->seqbasep->first; seq; seq= seq->next) { if(seq->flag & SELECT) { update_changed_seq_and_deps(scene, seq, 0, 1); @@ -1583,8 +1403,7 @@ void SEQUENCER_OT_reload(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_reload_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1595,9 +1414,6 @@ static int sequencer_refresh_all_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - - if(ed==NULL) - return OPERATOR_CANCELLED; free_imbuf_seq(scene, &ed->seqbase, FALSE); @@ -1615,13 +1431,73 @@ void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_refresh_all_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; } +static int sequencer_reassign_inputs_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq1, *seq2, *seq3, *last_seq = seq_active_get(scene); + char *error_msg; + + if(!seq_effect_find_selected(scene, last_seq, last_seq->type, &seq1, &seq2, &seq3, &error_msg)) { + BKE_report(op->reports, RPT_ERROR, error_msg); + return OPERATOR_CANCELLED; + } + /* see reassigning would create a cycle */ + if( seq_is_predecessor(seq1, last_seq) || + seq_is_predecessor(seq2, last_seq) || + seq_is_predecessor(seq3, last_seq) + ) { + BKE_report(op->reports, RPT_ERROR, "Can't reassign inputs: no cycles allowed"); + return OPERATOR_CANCELLED; + } + + last_seq->seq1 = seq1; + last_seq->seq2 = seq2; + last_seq->seq3 = seq3; + + update_changed_seq_and_deps(scene, last_seq, 1, 1); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +int sequencer_effect_poll(bContext *C) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + + if(ed) { + Sequence *last_seq= seq_active_get(scene); + if(last_seq && (last_seq->type & SEQ_EFFECT)) { + return 1; + } + } + + return 0; +} + +void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Reassign Inputs"; + ot->idname= "SEQUENCER_OT_reassign_inputs"; + ot->description="Reassign the inputs for the effects strip"; + + /* api callbacks */ + ot->exec= sequencer_reassign_inputs_exec; + ot->poll= sequencer_effect_poll; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; +} + + /* cut operator */ static EnumPropertyItem prop_cut_types[] = { {SEQ_CUT_SOFT, "SOFT", 0, "Soft", ""}, @@ -1637,9 +1513,6 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) ListBase newlist; int changed; - - if(ed==NULL) - return OPERATOR_CANCELLED; cut_frame= RNA_int_get(op->ptr, "frame"); cut_hard= RNA_enum_get(op->ptr, "type"); @@ -1663,11 +1536,11 @@ static int sequencer_cut_exec(bContext *C, wmOperator *op) SEQP_BEGIN(ed, seq) { if (cut_side==SEQ_SIDE_LEFT) { if ( seq->startdisp >= cut_frame ) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } } else { if ( seq->enddisp <= cut_frame ) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } } } @@ -1688,11 +1561,12 @@ static int sequencer_cut_invoke(bContext *C, wmOperator *op, wmEvent *event) Scene *scene = CTX_data_scene(C); ARegion *ar= CTX_wm_region(C); View2D *v2d= UI_view2d_fromcontext(C); - - int cut_side, cut_frame; - - cut_frame= CFRA; - cut_side= mouse_frame_side(v2d, event->x - ar->winrct.xmin, cut_frame); + + int cut_side= SEQ_SIDE_BOTH; + int cut_frame= CFRA; + + if (ED_operator_sequencer_active(C) && v2d) + cut_side= mouse_frame_side(v2d, event->x - ar->winrct.xmin, cut_frame); RNA_int_set(op->ptr, "frame", cut_frame); RNA_enum_set(op->ptr, "side", cut_side); @@ -1712,8 +1586,7 @@ void SEQUENCER_OT_cut(struct wmOperatorType *ot) /* api callbacks */ ot->invoke= sequencer_cut_invoke; ot->exec= sequencer_cut_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1724,25 +1597,37 @@ void SEQUENCER_OT_cut(struct wmOperatorType *ot) } /* duplicate operator */ +static int apply_unique_name_cb(Sequence *seq, void *arg_pt) +{ + Scene *scene= (Scene *)arg_pt; + char name[sizeof(seq->name)-2]; + + strcpy(name, seq->name+2); + seqbase_unique_name_recursive(&scene->ed->seqbase, seq); + seq_dupe_animdata(scene, name, seq->name+2); + return 1; + +} + static int sequencer_add_duplicate_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - ListBase new= {NULL, NULL}; + ListBase nseqbase= {NULL, NULL}; if(ed==NULL) return OPERATOR_CANCELLED; - recurs_dupli_seq(scene, ed->seqbasep, &new, TRUE); + seqbase_dupli_recursive(scene, &nseqbase, ed->seqbasep, SEQ_DUPE_CONTEXT); - if(new.first) { - Sequence * seq= new.first; - /* rely on the new list being added at the end */ - addlisttolist(ed->seqbasep, &new); + if(nseqbase.first) { + Sequence * seq= nseqbase.first; + /* rely on the nseqbase list being added at the end */ + addlisttolist(ed->seqbasep, &nseqbase); for( ; seq; seq= seq->next) - seqbase_unique_name_recursive(&ed->seqbase, seq); + seq_recursive_apply(seq, apply_unique_name_cb, scene); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); return OPERATOR_FINISHED; @@ -1763,7 +1648,6 @@ static int sequencer_add_duplicate_invoke(bContext *C, wmOperator *op, wmEvent * void SEQUENCER_OT_duplicate(wmOperatorType *ot) { - /* identifiers */ ot->name= "Duplicate"; ot->idname= "SEQUENCER_OT_duplicate"; @@ -1772,7 +1656,6 @@ void SEQUENCER_OT_duplicate(wmOperatorType *ot) /* api callbacks */ ot->invoke= sequencer_add_duplicate_invoke; ot->exec= sequencer_add_duplicate_exec; - ot->poll= ED_operator_sequencer_active; /* flags */ @@ -1791,10 +1674,7 @@ static int sequencer_delete_exec(bContext *C, wmOperator *op) MetaStack *ms; int nothingSelected = TRUE; - if(ed==NULL) - return OPERATOR_CANCELLED; - - seq=active_seq_get(scene); + seq=seq_active_get(scene); if (seq && seq->flag & SELECT) { /* avoid a loop since this is likely to be selected */ nothingSelected = FALSE; } else { @@ -1854,8 +1734,7 @@ void SEQUENCER_OT_delete(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_confirm; ot->exec= sequencer_delete_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1874,10 +1753,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) int start_ofs, cfra, frame_end; int step= RNA_int_get(op->ptr, "length"); - if(ed==NULL) - return OPERATOR_CANCELLED; - - seq= ed->seqbasep->first; + seq= ed->seqbasep->first; /* poll checks this is valid */ while (seq) { if((seq->flag & SELECT) && (seq->type == SEQ_IMAGE) && (seq->len > 1)) { @@ -1885,7 +1761,8 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) see seq_free_sequence below for the real free'ing */ seq_next = seq->next; BLI_remlink(ed->seqbasep, seq); - if(seq->ipo) seq->ipo->id.us--; + /* if(seq->ipo) seq->ipo->id.us--; */ + /* XXX, remove fcurve and assign to split image strips */ start_ofs = cfra = seq_tx_get_final_left(seq, 0); frame_end = seq_tx_get_final_right(seq, 0); @@ -1909,11 +1786,16 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op) strip_new->stripdata= se_new= MEM_callocN(sizeof(StripElem)*1, "stripelem"); strncpy(se_new->name, se->name, FILE_MAXFILE-1); calc_sequence(scene, seq_new); - seq_new->flag &= ~SEQ_OVERLAP; - if (seq_test_overlap(ed->seqbasep, seq_new)) { - shuffle_seq(ed->seqbasep, seq_new, scene); + + if(step > 1) { + seq_new->flag &= ~SEQ_OVERLAP; + if (seq_test_overlap(ed->seqbasep, seq_new)) { + shuffle_seq(ed->seqbasep, seq_new, scene); + } } + /* XXX, COPY FCURVES */ + strncpy(seq_new->name+2, seq->name+2, sizeof(seq->name)-2); seqbase_unique_name_recursive(&scene->ed->seqbase, seq_new); cfra++; @@ -1946,8 +1828,7 @@ void SEQUENCER_OT_images_separate(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_props_popup; ot->exec= sequencer_separate_images_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1963,12 +1844,9 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *last_seq= active_seq_get(scene); + Sequence *last_seq= seq_active_get(scene); MetaStack *ms; - if(ed==NULL) - return OPERATOR_CANCELLED; - if(last_seq && last_seq->type==SEQ_META && last_seq->flag & SELECT) { /* Enter Metastrip */ ms= MEM_mallocN(sizeof(MetaStack), "metastack"); @@ -1978,7 +1856,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) ed->seqbasep= &last_seq->seqbase; - active_seq_set(scene, NULL); + seq_active_set(scene, NULL); } else { @@ -1998,7 +1876,7 @@ static int sequencer_meta_toggle_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq= seq->next) calc_sequence(scene, seq); - active_seq_set(scene, ms->parseq); + seq_active_set(scene, ms->parseq); ms->parseq->flag |= SELECT; recurs_sel_seq(ms->parseq); @@ -2022,8 +1900,7 @@ void SEQUENCER_OT_meta_toggle(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_meta_toggle_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2036,13 +1913,9 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *seqm, *next; - + Sequence *seq, *seqm, *next, *last_seq = seq_active_get(scene); int channel_max= 1; - if(ed==NULL) - return OPERATOR_CANCELLED; - if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) { BKE_report(op->reports, RPT_ERROR, "Please select all related strips"); return OPERATOR_CANCELLED; @@ -2065,14 +1938,14 @@ static int sequencer_meta_make_exec(bContext *C, wmOperator *op) } seq= next; } - seqm->machine= channel_max; + seqm->machine= last_seq ? last_seq->machine : channel_max; calc_sequence(scene, seqm); seqm->strip= MEM_callocN(sizeof(Strip), "metastrip"); seqm->strip->len= seqm->len; seqm->strip->us= 1; - active_seq_set(scene, seqm); + seq_active_set(scene, seqm); if( seq_test_overlap(ed->seqbasep, seqm) ) shuffle_seq(ed->seqbasep, seqm, scene); @@ -2095,8 +1968,7 @@ void SEQUENCER_OT_meta_make(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_confirm; ot->exec= sequencer_meta_make_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2118,7 +1990,7 @@ static int sequencer_meta_separate_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *seq, *last_seq = active_seq_get(scene); /* last_seq checks ed==NULL */ + Sequence *seq, *last_seq = seq_active_get(scene); /* last_seq checks ed==NULL */ if(last_seq==NULL || last_seq->type!=SEQ_META) return OPERATOR_CANCELLED; @@ -2167,8 +2039,7 @@ void SEQUENCER_OT_meta_separate(wmOperatorType *ot) /* api callbacks */ ot->invoke= WM_operator_confirm; ot->exec= sequencer_meta_separate_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2200,7 +2071,6 @@ void SEQUENCER_OT_view_all(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_view_all_exec; - ot->poll= ED_operator_sequencer_active; /* flags */ @@ -2237,7 +2107,7 @@ static int sequencer_view_all_preview_exec(bContext *C, wmOperator *op) imgheight= (scene->r.size*scene->r.ysch)/100; /* Apply aspect, dosnt need to be that accurate */ - imgwidth= (int)(imgwidth * ((float)scene->r.xasp / (float)scene->r.yasp)); + imgwidth= (int)(imgwidth * (scene->r.xasp / scene->r.yasp)); if (((imgwidth >= width) || (imgheight >= height)) && ((width > 0) && (height > 0))) { @@ -2267,13 +2137,49 @@ void SEQUENCER_OT_view_all_preview(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_view_all_preview_exec; - ot->poll= ED_operator_sequencer_active; /* flags */ ot->flag= OPTYPE_REGISTER; } + +static int sequencer_view_zoom_ratio_exec(bContext *C, wmOperator *op) +{ + RenderData *r= &CTX_data_scene(C)->r; + View2D *v2d= UI_view2d_fromcontext(C); + + float ratio= RNA_float_get(op->ptr, "ratio"); + + float winx= (int)(r->size * r->xsch)/100; + float winy= (int)(r->size * r->ysch)/100; + + float facx= (v2d->mask.xmax - v2d->mask.xmin) / winx; + float facy= (v2d->mask.ymax - v2d->mask.ymin) / winy; + + BLI_resize_rctf(&v2d->cur, winx*facx*ratio, winy*facy*ratio); + + ED_region_tag_redraw(CTX_wm_region(C)); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_view_zoom_ratio(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sequencer View Zoom Ratio"; + ot->idname= "SEQUENCER_OT_view_zoom_ratio"; + + /* api callbacks */ + ot->exec= sequencer_view_zoom_ratio_exec; + ot->poll= ED_operator_sequencer_active; + + /* properties */ + RNA_def_float(ot->srna, "ratio", 1.0f, 0.0f, FLT_MAX, + "Ratio", "Zoom ratio, 1.0 is 1:1, higher is zoomed in, lower is zoomed out.", -FLT_MAX, FLT_MAX); +} + + #if 0 static EnumPropertyItem view_type_items[] = { {SEQ_VIEW_SEQUENCE, "SEQUENCER", ICON_SEQ_SEQUENCER, "Sequencer", ""}, @@ -2384,7 +2290,6 @@ void SEQUENCER_OT_view_selected(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_view_selected_exec; - ot->poll= ED_operator_sequencer_active; /* flags */ @@ -2470,7 +2375,7 @@ void SEQUENCER_OT_next_edit(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_next_edit_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2500,7 +2405,7 @@ void SEQUENCER_OT_previous_edit(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_previous_edit_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2541,11 +2446,10 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, FALSE); - Sequence *active_seq = active_seq_get(scene); + Sequence *active_seq = seq_active_get(scene); Sequence *seq, *iseq; int side= RNA_enum_get(op->ptr, "side"); - if(ed==NULL) return OPERATOR_CANCELLED; if(active_seq==NULL) return OPERATOR_CANCELLED; seq = find_next_prev_sequence(scene, active_seq, side, -1); @@ -2553,9 +2457,9 @@ static int sequencer_swap_exec(bContext *C, wmOperator *op) if(seq) { /* disallow effect strips */ - if ((seq->type!=SEQ_COLOR) && (seq->effectdata || seq->seq1 || seq->seq2 || seq->seq3)) + if (get_sequence_effect_num_inputs(seq->type) >= 1 && (seq->effectdata || seq->seq1 || seq->seq2 || seq->seq3)) return OPERATOR_CANCELLED; - if ((active_seq->type!=SEQ_COLOR) && (active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3)) + if ((get_sequence_effect_num_inputs(active_seq->type) >= 1) && (active_seq->effectdata || active_seq->seq1 || active_seq->seq2 || active_seq->seq3)) return OPERATOR_CANCELLED; switch (side) { @@ -2605,7 +2509,7 @@ void SEQUENCER_OT_swap(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_swap_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2618,7 +2522,7 @@ static int sequencer_rendersize_exec(bContext *C, wmOperator *op) { int retval = OPERATOR_CANCELLED; Scene *scene= CTX_data_scene(C); - Sequence *active_seq = active_seq_get(scene); + Sequence *active_seq = seq_active_get(scene); if(active_seq==NULL) return OPERATOR_CANCELLED; @@ -2655,7 +2559,7 @@ void SEQUENCER_OT_rendersize(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_rendersize_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2684,9 +2588,6 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; - if(ed==NULL) - return OPERATOR_CANCELLED; - seq_free_clipboard(); if(seqbase_isolated_sel_check(ed->seqbasep)==FALSE) { @@ -2694,7 +2595,7 @@ static int sequencer_copy_exec(bContext *C, wmOperator *op) return OPERATOR_CANCELLED; } - recurs_dupli_seq(scene, ed->seqbasep, &seqbase_clipboard, FALSE); + seqbase_dupli_recursive(scene, &seqbase_clipboard, ed->seqbasep, SEQ_DUPE_UNIQUE_NAME); seqbase_clipboard_frame= scene->r.cfra; /* Need to remove anything that references the current scene */ @@ -2714,7 +2615,7 @@ void SEQUENCER_OT_copy(wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_copy_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -2741,23 +2642,23 @@ static int sequencer_paste_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, TRUE); /* create if needed */ - ListBase new = {NULL, NULL}; + ListBase nseqbase = {NULL, NULL}; int ofs; Sequence *iseq; deselect_all_seq(scene); ofs = scene->r.cfra - seqbase_clipboard_frame; - recurs_dupli_seq(scene, &seqbase_clipboard, &new, FALSE); + seqbase_dupli_recursive(scene, &nseqbase, &seqbase_clipboard, SEQ_DUPE_UNIQUE_NAME); /* transform pasted strips before adding */ if(ofs) { - for(iseq= new.first; iseq; iseq= iseq->next) { + for(iseq= nseqbase.first; iseq; iseq= iseq->next) { seq_offset(scene, iseq, ofs); } } - addlisttolist(ed->seqbasep, &new); + addlisttolist(ed->seqbasep, &nseqbase); WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); @@ -2780,3 +2681,113 @@ void SEQUENCER_OT_paste(wmOperatorType *ot) /* properties */ } + +static int sequencer_swap_data_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Sequence *seq_act; + Sequence *seq_other; + + if(seq_active_pair_get(scene, &seq_act, &seq_other) == 0) { + BKE_report(op->reports, RPT_ERROR, "Must select 2 strips"); + return OPERATOR_CANCELLED; + } + + if(seq_swap(seq_act, seq_other) == 0) { + BKE_report(op->reports, RPT_ERROR, "Strips were not compatible"); + return OPERATOR_CANCELLED; + } + + sound_remove_scene_sound(scene, seq_act->scene_sound); + sound_remove_scene_sound(scene, seq_other->scene_sound); + + seq_act->scene_sound= NULL; + seq_other->scene_sound= NULL; + + calc_sequence(scene, seq_act); + calc_sequence(scene, seq_other); + + if(seq_act->sound) sound_add_scene_sound(scene, seq_act, seq_act->startdisp, seq_act->enddisp, seq_act->startofs + seq_act->anim_startofs); + if(seq_other->sound) sound_add_scene_sound(scene, seq_other, seq_other->startdisp, seq_other->enddisp, seq_other->startofs + seq_other->anim_startofs); + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +void SEQUENCER_OT_swap_data(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Sequencer Swap Data"; + ot->idname= "SEQUENCER_OT_swap_data"; + ot->description="Swap 2 sequencer strips"; + + /* api callbacks */ + ot->exec= sequencer_swap_data_exec; + ot->poll= ED_operator_sequencer_active; + + /* flags */ + ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; + + /* properties */ +} + +/* borderselect operator */ +static int view_ghost_border_exec(bContext *C, wmOperator *op) +{ + Scene *scene= CTX_data_scene(C); + Editing *ed= seq_give_editing(scene, FALSE); + View2D *v2d= UI_view2d_fromcontext(C); + + rctf rect; + + /* convert coordinates of rect to 'tot' rect coordinates */ + UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmin"), RNA_int_get(op->ptr, "ymin"), &rect.xmin, &rect.ymin); + UI_view2d_region_to_view(v2d, RNA_int_get(op->ptr, "xmax"), RNA_int_get(op->ptr, "ymax"), &rect.xmax, &rect.ymax); + + if(ed==NULL) + return OPERATOR_CANCELLED; + + rect.xmin /= (float)(ABS(v2d->tot.xmax - v2d->tot.xmin)); + rect.ymin /= (float)(ABS(v2d->tot.ymax - v2d->tot.ymin)); + + rect.xmax /= (float)(ABS(v2d->tot.xmax - v2d->tot.xmin)); + rect.ymax /= (float)(ABS(v2d->tot.ymax - v2d->tot.ymin)); + + rect.xmin+=0.5; + rect.xmax+=0.5; + rect.ymin+=0.5; + rect.ymax+=0.5; + + CLAMP(rect.xmin, 0.0f, 1.0f); + CLAMP(rect.ymin, 0.0f, 1.0f); + CLAMP(rect.xmax, 0.0f, 1.0f); + CLAMP(rect.ymax, 0.0f, 1.0f); + + scene->ed->over_border= rect; + + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER, scene); + + return OPERATOR_FINISHED; +} + +/* ****** Border Select ****** */ +void SEQUENCER_OT_view_ghost_border(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "Border Offset View"; + ot->idname= "SEQUENCER_OT_view_ghost_border"; + ot->description="Enable border select mode"; + + /* api callbacks */ + ot->invoke= WM_border_select_invoke; + ot->exec= view_ghost_border_exec; + ot->modal= WM_border_select_modal; + ot->poll= sequencer_view_poll; + + /* flags */ + ot->flag= 0; + + /* rna */ + WM_operator_properties_gesture_border(ot, FALSE); +} diff --git a/source/blender/editors/space_sequencer/sequencer_intern.h b/source/blender/editors/space_sequencer/sequencer_intern.h index e9f7da95a81..bf0dfff8e98 100644 --- a/source/blender/editors/space_sequencer/sequencer_intern.h +++ b/source/blender/editors/space_sequencer/sequencer_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -48,7 +48,7 @@ struct ARegion *sequencer_has_buttons_region(struct ScrArea *sa); /* sequencer_draw.c */ void draw_timeline_seq(const struct bContext *C, struct ARegion *ar); -void draw_image_seq(const struct bContext* C, struct Scene *scene,struct ARegion *ar, struct SpaceSeq *sseq); +void draw_image_seq(const struct bContext* C, struct Scene *scene,struct ARegion *ar, struct SpaceSeq *sseq, int cfra, int offset); void seq_reset_imageofs(struct SpaceSeq *sseq); @@ -67,6 +67,10 @@ int event_to_efftype(int event); int seq_effect_find_selected(struct Scene *scene, struct Sequence *activeseq, int type, struct Sequence **selseq1, struct Sequence **selseq2, struct Sequence **selseq3, char **error_str); struct Sequence *alloc_sequence(struct ListBase *lb, int cfra, int machine); +/* operator helpers */ +int sequencer_edit_poll(struct bContext *C); +int sequencer_view_poll(struct bContext *C); + /* externs */ extern EnumPropertyItem sequencer_prop_effect_types[]; extern EnumPropertyItem prop_side_types[]; @@ -82,6 +86,7 @@ void SEQUENCER_OT_lock(struct wmOperatorType *ot); void SEQUENCER_OT_unlock(struct wmOperatorType *ot); void SEQUENCER_OT_reload(struct wmOperatorType *ot); void SEQUENCER_OT_refresh_all(struct wmOperatorType *ot); +void SEQUENCER_OT_reassign_inputs(struct wmOperatorType *ot); void SEQUENCER_OT_duplicate(struct wmOperatorType *ot); void SEQUENCER_OT_delete(struct wmOperatorType *ot); void SEQUENCER_OT_images_separate(struct wmOperatorType *ot); @@ -92,11 +97,14 @@ void SEQUENCER_OT_snap(struct wmOperatorType *ot); void SEQUENCER_OT_previous_edit(struct wmOperatorType *ot); void SEQUENCER_OT_next_edit(struct wmOperatorType *ot); void SEQUENCER_OT_swap(struct wmOperatorType *ot); +void SEQUENCER_OT_swap_data(struct wmOperatorType *ot); void SEQUENCER_OT_rendersize(struct wmOperatorType *ot); void SEQUENCER_OT_view_toggle(struct wmOperatorType *ot); void SEQUENCER_OT_view_all(struct wmOperatorType *ot); void SEQUENCER_OT_view_selected(struct wmOperatorType *ot); +void SEQUENCER_OT_view_zoom_ratio(struct wmOperatorType *ot); +void SEQUENCER_OT_view_ghost_border(struct wmOperatorType *ot); void SEQUENCER_OT_copy(struct wmOperatorType *ot); void SEQUENCER_OT_paste(struct wmOperatorType *ot); @@ -127,22 +135,20 @@ void SEQUENCER_OT_effect_strip_add(struct wmOperatorType *ot); /* RNA enums, just to be more readable */ enum { SEQ_SIDE_NONE=0, - SEQ_SIDE_LEFT, - SEQ_SIDE_RIGHT, + SEQ_SIDE_LEFT, + SEQ_SIDE_RIGHT, SEQ_SIDE_BOTH, }; enum { - SEQ_CUT_SOFT, - SEQ_CUT_HARD, + SEQ_CUT_SOFT, + SEQ_CUT_HARD, }; enum { - SEQ_SELECTED, - SEQ_UNSELECTED, + SEQ_SELECTED, + SEQ_UNSELECTED, }; /* defines used internally */ -#define SEQ_ALLSEL (SELECT+SEQ_LEFTSEL+SEQ_RIGHTSEL) -#define SEQ_DESEL ~SEQ_ALLSEL #define SCE_MARKERS 0 // XXX - dummy /* sequencer_ops.c */ diff --git a/source/blender/editors/space_sequencer/sequencer_ops.c b/source/blender/editors/space_sequencer/sequencer_ops.c index 787d5712640..82f70eafc0a 100644 --- a/source/blender/editors/space_sequencer/sequencer_ops.c +++ b/source/blender/editors/space_sequencer/sequencer_ops.c @@ -1,6 +1,6 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,11 +32,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -45,13 +41,10 @@ #include "BKE_global.h" #include "BKE_utildefines.h" -#include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "ED_screen.h" #include "ED_transform.h" /* transform keymap */ #include "sequencer_intern.h" @@ -70,6 +63,7 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_unlock); WM_operatortype_append(SEQUENCER_OT_reload); WM_operatortype_append(SEQUENCER_OT_refresh_all); + WM_operatortype_append(SEQUENCER_OT_reassign_inputs); WM_operatortype_append(SEQUENCER_OT_duplicate); WM_operatortype_append(SEQUENCER_OT_delete); WM_operatortype_append(SEQUENCER_OT_images_separate); @@ -80,12 +74,15 @@ void sequencer_operatortypes(void) WM_operatortype_append(SEQUENCER_OT_next_edit); WM_operatortype_append(SEQUENCER_OT_previous_edit); WM_operatortype_append(SEQUENCER_OT_swap); + WM_operatortype_append(SEQUENCER_OT_swap_data); WM_operatortype_append(SEQUENCER_OT_rendersize); WM_operatortype_append(SEQUENCER_OT_view_all); WM_operatortype_append(SEQUENCER_OT_view_selected); WM_operatortype_append(SEQUENCER_OT_view_all_preview); WM_operatortype_append(SEQUENCER_OT_view_toggle); + WM_operatortype_append(SEQUENCER_OT_view_zoom_ratio); + WM_operatortype_append(SEQUENCER_OT_view_ghost_border); /* sequencer_select.c */ WM_operatortype_append(SEQUENCER_OT_select_all_toggle); @@ -117,6 +114,9 @@ void sequencer_keymap(wmKeyConfig *keyconf) wmKeyMap *keymap= WM_keymap_find(keyconf, "SequencerCommon", SPACE_SEQ, 0); wmKeyMapItem *kmi; + kmi= WM_keymap_add_item(keymap, "WM_OT_context_toggle", OKEY, KM_PRESS, KM_SHIFT, 0); + RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.show_overlay"); + /* operators common to sequence and preview view */ WM_keymap_add_item(keymap, "SEQUENCER_OT_view_toggle", TABKEY, KM_PRESS, KM_CTRL, 0); @@ -139,12 +139,14 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "SEQUENCER_OT_lock", LKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_unlock", LKEY, KM_PRESS, KM_SHIFT|KM_ALT, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_reassign_inputs", RKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_reload", RKEY, KM_PRESS, KM_ALT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_duplicate", DKEY, KM_PRESS, KM_SHIFT, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", XKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", DELKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_delete", BACKSPACEKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_copy", CKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_paste", VKEY, KM_PRESS, KM_CTRL, 0); @@ -225,9 +227,28 @@ void sequencer_keymap(wmKeyConfig *keyconf) WM_keymap_add_menu(keymap, "SEQUENCER_MT_add", AKEY, KM_PRESS, KM_SHIFT, 0); + kmi= WM_keymap_add_item(keymap, "WM_OT_context_set_int", OKEY, KM_PRESS, 0, 0); + RNA_string_set(kmi->ptr, "data_path", "scene.sequence_editor.overlay_frame"); + RNA_int_set(kmi->ptr, "value", 0); + transform_keymap_for_space(keyconf, keymap, SPACE_SEQ); keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); WM_keymap_add_item(keymap, "SEQUENCER_OT_view_all_preview", HOMEKEY, KM_PRESS, 0, 0); + WM_keymap_add_item(keymap, "SEQUENCER_OT_properties", NKEY, KM_PRESS, 0, 0); + + + keymap= WM_keymap_find(keyconf, "SequencerPreview", SPACE_SEQ, 0); + + WM_keymap_add_item(keymap, "SEQUENCER_OT_view_ghost_border", OKEY, KM_PRESS, 0, 0); + + /* would prefer to use numpad keys for job */ + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 8.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 4.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, KM_SHIFT, 0)->ptr, "ratio", 2.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD1, KM_PRESS, 0, 0)->ptr, "ratio", 1.0f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD2, KM_PRESS, 0, 0)->ptr, "ratio", 0.5f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD4, KM_PRESS, 0, 0)->ptr, "ratio", 0.25f); + RNA_float_set(WM_keymap_add_item(keymap, "SEQUENCER_OT_view_zoom_ratio", PAD8, KM_PRESS, 0, 0)->ptr, "ratio", 0.125f); } diff --git a/source/blender/editors/space_sequencer/sequencer_scopes.c b/source/blender/editors/space_sequencer/sequencer_scopes.c index 0257ea5d9ca..d9d027823bc 100644 --- a/source/blender/editors/space_sequencer/sequencer_scopes.c +++ b/source/blender/editors/space_sequencer/sequencer_scopes.c @@ -35,16 +35,16 @@ static void rgb_to_yuv(float rgb[3], float yuv[3]) { - yuv[0]= 0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2]; - yuv[1]= 0.492*(rgb[2] - yuv[0]); - yuv[2]= 0.877*(rgb[0] - yuv[0]); + yuv[0]= 0.299*rgb[0] + 0.587*rgb[1] + 0.114*rgb[2]; + yuv[1]= 0.492*(rgb[2] - yuv[0]); + yuv[2]= 0.877*(rgb[0] - yuv[0]); - /* Normalize */ - yuv[1]*= 255.0/(122*2.0); - yuv[1]+= 0.5; + /* Normalize */ + yuv[1]*= 255.0/(122*2.0); + yuv[1]+= 0.5; - yuv[2]*= 255.0/(157*2.0); - yuv[2]+= 0.5; + yuv[2]*= 255.0/(157*2.0); + yuv[2]+= 0.5; } static void scope_put_pixel(unsigned char* table, unsigned char * pos) @@ -580,7 +580,7 @@ static void vectorscope_put_cross(unsigned char r, unsigned char g, rgb_to_yuv(rgb, yuv); p = tgt + 4 * (w * (int) ((yuv[2] * (h - 3) + 1)) - + (int) ((yuv[1] * (w - 3) + 1))); + + (int) ((yuv[1] * (w - 3) + 1))); if (r == 0 && g == 0 && b == 0) { r = 255; @@ -631,7 +631,7 @@ static struct ImBuf *make_vectorscope_view_from_ibuf_byte(struct ImBuf * ibuf) rgb_to_yuv(rgb, yuv); p = tgt + 4 * (w * (int) ((yuv[2] * (h - 3) + 1)) - + (int) ((yuv[1] * (w - 3) + 1))); + + (int) ((yuv[1] * (w - 3) + 1))); scope_put_pixel(wtable, (unsigned char*)p); } } @@ -681,7 +681,7 @@ static struct ImBuf *make_vectorscope_view_from_ibuf_float(struct ImBuf * ibuf) rgb_to_yuv(rgb, yuv); p = tgt + 4 * (w * (int) ((yuv[2] * (h - 3) + 1)) - + (int) ((yuv[1] * (w - 3) + 1))); + + (int) ((yuv[1] * (w - 3) + 1))); scope_put_pixel(wtable, (unsigned char*)p); } } diff --git a/source/blender/editors/space_sequencer/sequencer_select.c b/source/blender/editors/space_sequencer/sequencer_select.c index 437871c7fe8..83fa8bffd58 100644 --- a/source/blender/editors/space_sequencer/sequencer_select.c +++ b/source/blender/editors/space_sequencer/sequencer_select.c @@ -40,13 +40,7 @@ #include "BLI_blenlib.h" #include "BLI_math.h" -#include "DNA_curve_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_sequence_types.h" -#include "DNA_view2d_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_global.h" @@ -59,27 +53,18 @@ #include "WM_api.h" #include "WM_types.h" -#include "RNA_access.h" #include "RNA_define.h" /* for menu/popup icons etc etc*/ -#include "UI_interface.h" -#include "UI_resources.h" -#include "ED_anim_api.h" -#include "ED_space_api.h" #include "ED_types.h" #include "ED_screen.h" -#include "ED_util.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "UI_view2d.h" /* own include */ #include "sequencer_intern.h" -static void *find_nearest_marker() {return NULL;} -static void deselect_markers() {} +static void *find_nearest_marker(int d1, int d2) {return NULL;} void select_surrounding_handles(Scene *scene, Sequence *test) /* XXX BRING BACK */ { @@ -181,7 +166,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B if(deselect_all) deselect_all_seq(scene); - active_seq_set(scene, seq); + seq_active_set(scene, seq); if((seq->type==SEQ_IMAGE) || (seq->type==SEQ_MOVIE)) { if(seq->strip) @@ -200,7 +185,7 @@ void select_single_seq(Scene *scene, Sequence *seq, int deselect_all) /* BRING B void select_neighbor_from_last(Scene *scene, int lr) { - Sequence *seq= active_seq_get(scene); + Sequence *seq= seq_active_get(scene); Sequence *neighbor; int change = 0; if (seq) { @@ -237,9 +222,6 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) Sequence *seq; int desel = 0; - if(ed==NULL) - return OPERATOR_CANCELLED; - for(seq= ed->seqbasep->first; seq; seq=seq->next) { if(seq->flag & SEQ_ALLSEL) { desel= 1; @@ -249,7 +231,7 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) for(seq= ed->seqbasep->first; seq; seq=seq->next) { if (desel) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } else { seq->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL); @@ -257,7 +239,7 @@ static int sequencer_deselect_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -271,8 +253,7 @@ void SEQUENCER_OT_select_all_toggle(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_deselect_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -286,12 +267,9 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op) Editing *ed= seq_give_editing(scene, FALSE); Sequence *seq; - if(ed==NULL) - return OPERATOR_CANCELLED; - for(seq= ed->seqbasep->first; seq; seq=seq->next) { if (seq->flag & SELECT) { - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; } else { seq->flag &= ~(SEQ_LEFTSEL+SEQ_RIGHTSEL); @@ -299,7 +277,7 @@ static int sequencer_select_inverse_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -313,8 +291,7 @@ void SEQUENCER_OT_select_inverse(struct wmOperatorType *ot) /* api callbacks */ ot->exec= sequencer_select_inverse_exec; - - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -363,7 +340,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) marker->flag |= SELECT; } else { - deselect_markers(0, 0); + /* deselect_markers(0, 0); */ /* XXX, in 2.4x, seq selection used to deselect all, need to re-thnik this for 2.5 */ marker->flag |= SELECT; } @@ -388,6 +365,24 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) } } SEQ_END + + { + SpaceSeq *sseq= CTX_wm_space_seq(C); + if (sseq && sseq->flag & SEQ_MARKER_TRANS) { + TimeMarker *marker; + + for (marker= scene->markers.first; marker; marker= marker->next) { + if( ((x < CFRA) && marker->frame < CFRA) || + ((x >= CFRA) && marker->frame >= CFRA) + ) { + marker->flag |= SELECT; + } + else { + marker->flag &= ~SELECT; + } + } + } + } } else { // seq= find_nearest_seq(scene, v2d, &hand, mval); @@ -397,7 +392,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) deselect_all_seq(scene); if(seq) { - active_seq_set(scene, seq); + seq_active_set(scene, seq); if ((seq->type == SEQ_IMAGE) || (seq->type == SEQ_MOVIE)) { if(seq->strip) { @@ -414,7 +409,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) switch(hand) { case SEQ_SIDE_NONE: if (linked_handle==0) - seq->flag &= SEQ_DESEL; + seq->flag &= ~SEQ_ALLSEL; break; case SEQ_SIDE_LEFT: seq->flag ^= SEQ_LEFTSEL; @@ -510,7 +505,7 @@ static int sequencer_select_invoke(bContext *C, wmOperator *op, wmEvent *event) } #endif - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); /* allowing tweaks */ return OPERATOR_FINISHED|OPERATOR_PASS_THROUGH; @@ -600,7 +595,7 @@ static int sequencer_select_more_exec(bContext *C, wmOperator *op) if(!select_more_less_seq__internal(scene, 0, 0)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -610,11 +605,11 @@ void SEQUENCER_OT_select_more(wmOperatorType *ot) /* identifiers */ ot->name= "Select More"; ot->idname= "SEQUENCER_OT_select_more"; - ot->description="DOC_BROKEN"; + ot->description="Select more strips adjacent to the current selection"; /* api callbacks */ ot->exec= sequencer_select_more_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -631,7 +626,7 @@ static int sequencer_select_less_exec(bContext *C, wmOperator *op) if(!select_more_less_seq__internal(scene, 1, 0)) return OPERATOR_CANCELLED; - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -641,11 +636,11 @@ void SEQUENCER_OT_select_less(wmOperatorType *ot) /* identifiers */ ot->name= "Select less"; ot->idname= "SEQUENCER_OT_select_less"; - ot->description="DOC_BROKEN"; + ot->description="Shrink the current selection of adjacent selected strips"; /* api callbacks */ ot->exec= sequencer_select_less_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -686,7 +681,7 @@ static int sequencer_select_linked_pick_invoke(bContext *C, wmOperator *op, wmEv selected = select_more_less_seq__internal(scene, 1, 1); } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -696,7 +691,7 @@ void SEQUENCER_OT_select_linked_pick(wmOperatorType *ot) /* identifiers */ ot->name= "Select pick linked"; ot->idname= "SEQUENCER_OT_select_linked_pick"; - ot->description="DOC_BROKEN"; + ot->description="Select a chain of linked strips nearest to the mouse pointer"; /* api callbacks */ ot->invoke= sequencer_select_linked_pick_invoke; @@ -721,7 +716,7 @@ static int sequencer_select_linked_exec(bContext *C, wmOperator *op) selected = select_more_less_seq__internal(scene, 1, 1); } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -731,11 +726,11 @@ void SEQUENCER_OT_select_linked(wmOperatorType *ot) /* identifiers */ ot->name= "Select linked"; ot->idname= "SEQUENCER_OT_select_linked"; - ot->description="DOC_BROKEN"; + ot->description="Select all strips adjacent to the current selection"; /* api callbacks */ ot->exec= sequencer_select_linked_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -752,8 +747,6 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op) Sequence *seq; int sel_side= RNA_enum_get(op->ptr, "side"); - if (ed==NULL) - return OPERATOR_CANCELLED; for(seq= ed->seqbasep->first; seq; seq=seq->next) { if (seq->flag & SELECT) { @@ -773,7 +766,7 @@ static int sequencer_select_handles_exec(bContext *C, wmOperator *op) } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -783,11 +776,11 @@ void SEQUENCER_OT_select_handles(wmOperatorType *ot) /* identifiers */ ot->name= "Select Handles"; ot->idname= "SEQUENCER_OT_select_handles"; - ot->description="DOC_BROKEN"; + ot->description="Select manipulator handles on the sides of the selected strip"; /* api callbacks */ ot->exec= sequencer_select_handles_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -801,7 +794,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Editing *ed= seq_give_editing(scene, 0); - Sequence *seq_act= active_seq_get(scene); + Sequence *seq_act= seq_active_get(scene); if (ed==NULL || seq_act==NULL) return OPERATOR_CANCELLED; @@ -810,7 +803,7 @@ static int sequencer_select_active_side_exec(bContext *C, wmOperator *op) select_active_side(ed->seqbasep, RNA_enum_get(op->ptr, "side"), seq_act->machine, seq_act->startdisp); - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } @@ -820,11 +813,11 @@ void SEQUENCER_OT_select_active_side(wmOperatorType *ot) /* identifiers */ ot->name= "Select Active Side"; ot->idname= "SEQUENCER_OT_select_active_side"; - ot->description="DOC_BROKEN"; + ot->description="Select strips on the nominated side of the active strip"; /* api callbacks */ ot->exec= sequencer_select_active_side_exec; - ot->poll= ED_operator_sequencer_active; + ot->poll= sequencer_edit_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -867,12 +860,12 @@ static int sequencer_borderselect_exec(bContext *C, wmOperator *op) if(BLI_isect_rctf(&rq, &rectf, 0)) { if(selecting) seq->flag |= SELECT; - else seq->flag &= SEQ_DESEL; + else seq->flag &= ~SEQ_ALLSEL; recurs_sel_seq(seq); } } - WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER_SELECT, scene); + WM_event_add_notifier(C, NC_SCENE|ND_SEQUENCER|NA_SELECTED, scene); return OPERATOR_FINISHED; } diff --git a/source/blender/editors/space_sequencer/space_sequencer.c b/source/blender/editors/space_sequencer/space_sequencer.c index ba405f74ba6..586b76268e4 100644 --- a/source/blender/editors/space_sequencer/space_sequencer.c +++ b/source/blender/editors/space_sequencer/space_sequencer.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,36 +29,27 @@ #include <string.h> #include <stdio.h> -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" #include "BLI_blenlib.h" #include "BLI_math.h" -#include "BLI_rand.h" -#include "BKE_colortools.h" #include "BKE_context.h" #include "BKE_screen.h" #include "BKE_sequencer.h" +#include "BKE_global.h" -#include "ED_space_api.h" #include "ED_screen.h" - -#include "BIF_gl.h" +#include "ED_view3d.h" /* only for sequencer view3d drawing callback */ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "ED_markers.h" - #include "sequencer_intern.h" // own include /* ******************** manage regions ********************* */ @@ -110,44 +101,44 @@ void ED_sequencer_update_view(bContext *C, int view) switch (view) { case SEQ_VIEW_SEQUENCE: - if (ar_main->flag & RGN_FLAG_HIDDEN) { + if (ar_main && (ar_main->flag & RGN_FLAG_HIDDEN)) { ar_main->flag &= ~RGN_FLAG_HIDDEN; ar_main->v2d.flag &= ~V2D_IS_INITIALISED; } - if (!(ar_preview->flag & RGN_FLAG_HIDDEN)) { + if (ar_preview && !(ar_preview->flag & RGN_FLAG_HIDDEN)) { ar_preview->flag |= RGN_FLAG_HIDDEN; ar_preview->v2d.flag &= ~V2D_IS_INITIALISED; WM_event_remove_handlers(C, &ar_preview->handlers); } - ar_main->alignment= RGN_ALIGN_NONE; - ar_preview->alignment= RGN_ALIGN_NONE; + if (ar_main) ar_main->alignment= RGN_ALIGN_NONE; + if (ar_preview) ar_preview->alignment= RGN_ALIGN_NONE; break; case SEQ_VIEW_PREVIEW: - if (!(ar_main->flag & RGN_FLAG_HIDDEN)) { + if (ar_main && !(ar_main->flag & RGN_FLAG_HIDDEN)) { ar_main->flag |= RGN_FLAG_HIDDEN; ar_main->v2d.flag &= ~V2D_IS_INITIALISED; WM_event_remove_handlers(C, &ar_main->handlers); } - if (ar_preview->flag & RGN_FLAG_HIDDEN) { + if (ar_preview && (ar_preview->flag & RGN_FLAG_HIDDEN)) { ar_preview->flag &= ~RGN_FLAG_HIDDEN; ar_preview->v2d.flag &= ~V2D_IS_INITIALISED; ar_preview->v2d.cur = ar_preview->v2d.tot; } - ar_main->alignment= RGN_ALIGN_NONE; - ar_preview->alignment= RGN_ALIGN_NONE; + if (ar_main) ar_main->alignment= RGN_ALIGN_NONE; + if (ar_preview) ar_preview->alignment= RGN_ALIGN_NONE; break; case SEQ_VIEW_SEQUENCE_PREVIEW: - if (ar_main->flag & RGN_FLAG_HIDDEN) { + if (ar_main && (ar_main->flag & RGN_FLAG_HIDDEN)) { ar_main->flag &= ~RGN_FLAG_HIDDEN; ar_main->v2d.flag &= ~V2D_IS_INITIALISED; } - if (ar_preview->flag & RGN_FLAG_HIDDEN) { + if (ar_preview && (ar_preview->flag & RGN_FLAG_HIDDEN)) { ar_preview->flag &= ~RGN_FLAG_HIDDEN; ar_preview->v2d.flag &= ~V2D_IS_INITIALISED; ar_preview->v2d.cur = ar_preview->v2d.tot; } - ar_main->alignment= RGN_ALIGN_NONE; - ar_preview->alignment= RGN_ALIGN_TOP; + if (ar_main) ar_main->alignment= RGN_ALIGN_NONE; + if (ar_preview) ar_preview->alignment= RGN_ALIGN_TOP; break; } @@ -195,15 +186,15 @@ static SpaceLink *sequencer_new(const bContext *C) /* for now, aspect ratio should be maintained, and zoom is clamped within sane default limits */ ar->v2d.keepzoom= V2D_KEEPASPECT | V2D_KEEPZOOM; ar->v2d.minzoom= 0.00001f; - ar->v2d.maxzoom= 100000.0f; - ar->v2d.tot.xmin= -960.0f; /* 1920 width centered */ - ar->v2d.tot.ymin= -540.0f; /* 1080 height centered */ - ar->v2d.tot.xmax= 960.0f; - ar->v2d.tot.ymax= 540.0f; - ar->v2d.min[0]= 0.0f; - ar->v2d.min[1]= 0.0f; - ar->v2d.max[0]= 12000.0f; - ar->v2d.max[1]= 12000.0f; + ar->v2d.maxzoom= 100000.0f; + ar->v2d.tot.xmin= -960.0f; /* 1920 width centered */ + ar->v2d.tot.ymin= -540.0f; /* 1080 height centered */ + ar->v2d.tot.xmax= 960.0f; + ar->v2d.tot.ymax= 540.0f; + ar->v2d.min[0]= 0.0f; + ar->v2d.min[1]= 0.0f; + ar->v2d.max[0]= 12000.0f; + ar->v2d.max[1]= 12000.0f; ar->v2d.cur= ar->v2d.tot; ar->v2d.align= V2D_ALIGN_FREE; ar->v2d.keeptot= V2D_KEEPTOT_FREE; @@ -315,7 +306,7 @@ static int image_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static int movie_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) { if(drag->type==WM_DRAG_PATH) - if(ELEM(drag->icon, ICON_FILE_MOVIE, ICON_FILE_BLANK)) /* rule might not work? */ + if(ELEM3(drag->icon, 0, ICON_FILE_MOVIE, ICON_FILE_BLANK)) /* rule might not work? */ return 1; return 0; } @@ -331,7 +322,7 @@ static int sound_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static void sequencer_drop_copy(wmDrag *drag, wmDropBox *drop) { /* copy drag path to properties */ - RNA_string_set(drop->ptr, "path", drag->path); + RNA_string_set(drop->ptr, "filepath", drag->path); } /* this region dropbox definition */ @@ -364,9 +355,9 @@ static void sequencer_main_area_listener(ARegion *ar, wmNotifier *wmn) case NC_SCENE: switch(wmn->data) { case ND_FRAME: + case ND_FRAME_RANGE: case ND_MARKERS: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } @@ -405,7 +396,21 @@ static void sequencer_preview_area_draw(const bContext *C, ARegion *ar) /* XXX temp fix for wrong setting in sseq->mainb */ if (sseq->mainb == SEQ_DRAW_SEQUENCE) sseq->mainb = SEQ_DRAW_IMG_IMBUF; - draw_image_seq(C, scene, ar, sseq); + + draw_image_seq(C, scene, ar, sseq, scene->r.cfra, 0); + + if(scene->ed && scene->ed->over_flag & SEQ_EDIT_OVERLAY_SHOW && sseq->mainb == SEQ_DRAW_IMG_IMBUF) { + int over_cfra; + + if(scene->ed->over_flag & SEQ_EDIT_OVERLAY_ABS) + over_cfra= scene->ed->over_cfra; + else + over_cfra= scene->r.cfra + scene->ed->over_ofs; + + if(over_cfra != scene->r.cfra) + draw_image_seq(C, scene, ar, sseq, scene->r.cfra, over_cfra - scene->r.cfra); + } + } static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn) @@ -417,7 +422,6 @@ static void sequencer_preview_area_listener(ARegion *ar, wmNotifier *wmn) case ND_FRAME: case ND_MARKERS: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } @@ -459,7 +463,6 @@ static void sequencer_buttons_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->data) { case ND_FRAME: case ND_SEQUENCER: - case ND_SEQUENCER_SELECT: ED_region_tag_redraw(ar); break; } @@ -540,5 +543,10 @@ void ED_spacetype_sequencer(void) BLI_addhead(&st->regiontypes, art); BKE_spacetype_register(st); + + /* set the sequencer callback when not in background mode */ + if(G.background==0) { + sequencer_view3d_cb= ED_view3d_draw_offscreen_imbuf_simple; + } } diff --git a/source/blender/editors/space_sound/CMakeLists.txt b/source/blender/editors/space_sound/CMakeLists.txt new file mode 100644 index 00000000000..60c8f5e44bd --- /dev/null +++ b/source/blender/editors/space_sound/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_sound "${SRC}" "${INC}") diff --git a/source/blender/editors/space_sound/sound_header.c b/source/blender/editors/space_sound/sound_header.c index 2e6bf599692..acc9645af9d 100644 --- a/source/blender/editors/space_sound/sound_header.c +++ b/source/blender/editors/space_sound/sound_header.c @@ -29,10 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -45,8 +41,6 @@ #include "ED_types.h" #include "ED_util.h" -#include "WM_api.h" -#include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" diff --git a/source/blender/editors/space_sound/sound_intern.h b/source/blender/editors/space_sound/sound_intern.h index fd64ccb22b1..7117e7d6df9 100644 --- a/source/blender/editors/space_sound/sound_intern.h +++ b/source/blender/editors/space_sound/sound_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/space_sound/space_sound.c b/source/blender/editors/space_sound/space_sound.c index f0ec9b3ebb9..174d686cf73 100644 --- a/source/blender/editors/space_sound/space_sound.c +++ b/source/blender/editors/space_sound/space_sound.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,10 +30,7 @@ #include <stdio.h> #include "DNA_sound_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -45,7 +42,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -53,11 +49,9 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" -#include "ED_markers.h" #include "sound_intern.h" // own include @@ -156,11 +150,9 @@ static void sound_main_area_draw(const bContext *C, ARegion *ar) /* draw entirely, view changes should be handled here */ // SpaceSound *ssound= (SpaceSound*)CTX_wm_space_data(C); View2D *v2d= &ar->v2d; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); diff --git a/source/blender/editors/space_text/CMakeLists.txt b/source/blender/editors/space_text/CMakeLists.txt new file mode 100644 index 00000000000..0616cf5147a --- /dev/null +++ b/source/blender/editors/space_text/CMakeLists.txt @@ -0,0 +1,41 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenfont + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +IF(WITH_PYTHON) + SET(INC ${INC} ${PYTHON_INC} ../../python) +ELSE(WITH_PYTHON) + ADD_DEFINITIONS(-DDISABLE_PYTHON) +ENDIF(WITH_PYTHON) + +BLENDERLIB(bf_editor_text "${SRC}" "${INC}") diff --git a/source/blender/editors/space_text/space_text.c b/source/blender/editors/space_text/space_text.c index 44aeb9158f0..7f3741e8e17 100644 --- a/source/blender/editors/space_text/space_text.c +++ b/source/blender/editors/space_text/space_text.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,10 +31,6 @@ #include "DNA_text_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "MEM_guardedalloc.h" @@ -46,7 +42,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" @@ -60,7 +55,6 @@ #include "RNA_access.h" -#include "ED_markers.h" #include "text_intern.h" // own include @@ -124,15 +118,13 @@ static void text_listener(ScrArea *sa, wmNotifier *wmn) /* context changes */ switch(wmn->category) { case NC_TEXT: - if(!wmn->reference || wmn->reference == st->text) { + if(!wmn->reference || wmn->reference == st->text || wmn->data == ND_DISPLAY || wmn->action == NA_EDITED) { ED_area_tag_redraw(sa); if(wmn->action == NA_EDITED) if(st->text) text_update_edited(st->text); } - else if(wmn->data == ND_DISPLAY) - ED_area_tag_redraw(sa); break; case NC_SPACE: @@ -223,19 +215,19 @@ static void text_keymap(struct wmKeyConfig *keyconf) #endif kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELUPMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", WHEELDOWNMOUSE, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADPLUSKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 0); kmi = WM_keymap_add_item(keymap, "WM_OT_context_cycle_int", PADMINUS, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.font_size"); + RNA_string_set(kmi->ptr, "data_path", "space_data.font_size"); RNA_boolean_set(kmi->ptr, "reverse", 1); WM_keymap_add_item(keymap, "TEXT_OT_new", NKEY, KM_PRESS, KM_ALT, 0); @@ -313,6 +305,8 @@ static void text_keymap(struct wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "TEXT_OT_line_break", RETKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "TEXT_OT_line_break", PADENTER, KM_PRESS, 0, 0); + WM_keymap_add_menu(keymap, "TEXT_MT_toolbox", RIGHTMOUSE, KM_PRESS, KM_ANY, 0); + WM_keymap_add_item(keymap, "TEXT_OT_line_number", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); WM_keymap_add_item(keymap, "TEXT_OT_insert", KM_TEXTINPUT, KM_ANY, KM_ANY, 0); // last! } @@ -340,12 +334,18 @@ static int text_context(const bContext *C, const char *member, bContextDataResul static void text_main_area_init(wmWindowManager *wm, ARegion *ar) { wmKeyMap *keymap; + ListBase *lb; UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy); /* own keymap */ keymap= WM_keymap_find(wm->defaultconf, "Text", SPACE_TEXT, 0); WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct); + + /* add drop boxes */ + lb = WM_dropboxmap_find("Text", SPACE_TEXT, RGN_TYPE_WINDOW); + + WM_event_add_dropbox_handler(&ar->handlers, lb); } static void text_main_area_draw(const bContext *C, ARegion *ar) @@ -353,11 +353,9 @@ static void text_main_area_draw(const bContext *C, ARegion *ar) /* draw entirely, view changes should be handled here */ SpaceText *st= CTX_wm_space_text(C); //View2D *v2d= &ar->v2d; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); // UI_view2d_view_ortho(C, v2d); @@ -376,6 +374,36 @@ static void text_cursor(wmWindow *win, ScrArea *sa, ARegion *ar) WM_cursor_set(win, BC_TEXTEDITCURSOR); } + + +/* ************* dropboxes ************* */ + +static int text_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) +{ + if(drag->type==WM_DRAG_PATH) + if(ELEM(drag->icon, 0, ICON_FILE_BLANK)) /* rule might not work? */ + return 1; + return 0; +} + +static void text_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + /* copy drag path to properties */ + RNA_string_set(drop->ptr, "filepath", drag->path); +} + +/* this region dropbox definition */ +static void text_dropboxes(void) +{ + ListBase *lb= WM_dropboxmap_find("Text", SPACE_TEXT, RGN_TYPE_WINDOW); + + WM_dropbox_add(lb, "TEXT_OT_open", text_drop_poll, text_drop_copy); + +} + +/* ************* end drop *********** */ + + /****************** header region ******************/ /* add handlers, stuff you only do once or on area/region changes */ @@ -421,6 +449,7 @@ void ED_spacetype_text(void) st->keymap= text_keymap; st->listener= text_listener; st->context= text_context; + st->dropboxes = text_dropboxes; /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); @@ -435,7 +464,7 @@ void ED_spacetype_text(void) art= MEM_callocN(sizeof(ARegionType), "spacetype text region"); art->regionid = RGN_TYPE_UI; art->prefsizex= UI_COMPACT_PANEL_WIDTH; - art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_VIEW2D; + art->keymapflag= ED_KEYMAP_UI; art->init= text_properties_area_init; art->draw= text_properties_area_draw; diff --git a/source/blender/editors/space_text/text_draw.c b/source/blender/editors/space_text/text_draw.c index 8f9f475b9c8..873deb30511 100644 --- a/source/blender/editors/space_text/text_draw.c +++ b/source/blender/editors/space_text/text_draw.c @@ -60,18 +60,15 @@ #include "text_intern.h" /******************** text font drawing ******************/ +static int mono= -1; // XXX needs proper storage and change all the BLF_* here static void text_font_begin(SpaceText *st) { - static int mono= -1; // XXX needs proper storage - if(mono == -1) mono= BLF_load_mem("monospace", (unsigned char*)datatoc_bmonofont_ttf, datatoc_bmonofont_ttf_size); - BLF_set(mono); - BLF_aspect(1.0); - - BLF_size(st->lheight, 72); + BLF_aspect(mono, 1.0); + BLF_size(mono, st->lheight, 72); } static void text_font_end(SpaceText *st) @@ -80,10 +77,10 @@ static void text_font_end(SpaceText *st) static int text_font_draw(SpaceText *st, int x, int y, char *str) { - BLF_position(x, y, 0); - BLF_draw(str); + BLF_position(mono, x, y, 0); + BLF_draw(mono, str); - return BLF_width(str); + return BLF_width(mono, str); } static int text_font_draw_character(SpaceText *st, int x, int y, char c) @@ -93,15 +90,15 @@ static int text_font_draw_character(SpaceText *st, int x, int y, char c) str[0]= c; str[1]= '\0'; - BLF_position(x, y, 0); - BLF_draw(str); + BLF_position(mono, x, y, 0); + BLF_draw(mono, str); return st->cwidth; } int text_font_width(SpaceText *st, char *str) { - return BLF_width(str); + return BLF_width(mono, str); } /****************** flatten string **********************/ @@ -227,6 +224,24 @@ static int find_specialvar(char *string) return i; } +static int find_bool(char *string) +{ + int i = 0; + /* Check for "False" */ + if(string[0]=='F' && string[1]=='a' && string[2]=='l' && string[3]=='s' && string[4]=='e') + i = 5; + /* Check for "True" */ + else if(string[0]=='T' && string[1]=='r' && string[2]=='u' && string[3]=='e') + i = 4; + /* Check for "None" */ + else if(string[0]=='N' && string[1]=='o' && string[2]=='n' && string[3]=='e') + i = 4; + /* If next source char is an identifier (eg. 'i' in "definate") no match */ + if(i==0 || text_check_identifier(string[i])) + return -1; + return i; +} + /* Ensures the format string for the given line is long enough, reallocating as needed. Allocation is done here, alone, to ensure consistency. */ int text_check_format_len(TextLine *line, unsigned int len) @@ -249,14 +264,14 @@ int text_check_format_len(TextLine *line, unsigned int len) /* Formats the specified line. If do_next is set, the process will move on to the succeeding line if it is affected (eg. multiline strings). Format strings may contain any of the following characters: - '_' Whitespace - '#' Comment text - '!' Punctuation and other symbols - 'n' Numerals - 'l' String letters - 'v' Special variables (class, def) - 'b' Built-in names (print, for, etc.) - 'q' Other text (identifiers, etc.) + '_' Whitespace + '#' Comment text + '!' Punctuation and other symbols + 'n' Numerals + 'l' String letters + 'v' Special variables (class, def) + 'b' Built-in names (print, for, etc.) + 'q' Other text (identifiers, etc.) It is terminated with a null-terminator '\0' followed by a continuation flag indicating whether the line is part of a multi-line string. */ @@ -338,6 +353,17 @@ static void txt_format_line(SpaceText *st, TextLine *line, int do_next) /* Numbers (digits not part of an identifier and periods followed by digits) */ else if((prev != 'q' && text_check_digit(*str)) || (*str == '.' && text_check_digit(*(str+1)))) *fmt = 'n'; + /* Booleans */ + else if(prev != 'q' && (i=find_bool(str)) != -1) + if(i>0) { + while(i>1) { + *fmt = 'n'; fmt++; str++; + i--; + } + *fmt = 'n'; + } + else + *fmt = 'q'; /* Punctuation */ else if(text_check_delim(*str)) *fmt = '!'; @@ -1237,7 +1263,7 @@ void draw_text_main(SpaceText *st, ARegion *ar) } text_font_begin(st); - st->cwidth= BLF_fixed_width(); + st->cwidth= BLF_fixed_width(mono); st->cwidth= MAX2(st->cwidth, 1); /* draw line numbers background */ @@ -1307,7 +1333,7 @@ void draw_text_main(SpaceText *st, ARegion *ar) void text_update_character_width(SpaceText *st) { text_font_begin(st); - st->cwidth= BLF_fixed_width(); + st->cwidth= BLF_fixed_width(mono); st->cwidth= MAX2(st->cwidth, 1); text_font_end(st); } @@ -1318,11 +1344,13 @@ void text_update_cursor_moved(bContext *C) { ScrArea *sa= CTX_wm_area(C); SpaceText *st= CTX_wm_space_text(C); - Text *text= st->text; + Text *text; ARegion *ar; int i, x, winx= 0; - if(!st) return; + if(!st || !st->text || st->text->curl) return; + + text= st->text; for(ar=sa->regionbase.first; ar; ar= ar->next) if(ar->regiontype==RGN_TYPE_WINDOW) @@ -1330,8 +1358,6 @@ void text_update_cursor_moved(bContext *C) winx -= TXT_SCROLL_WIDTH; - if(!text || !text->curl) return; - text_update_character_width(st); i= txt_get_span(text->lines.first, text->sell); diff --git a/source/blender/editors/space_text/text_header.c b/source/blender/editors/space_text/text_header.c index f9b11022cd1..3b1c882ff2f 100644 --- a/source/blender/editors/space_text/text_header.c +++ b/source/blender/editors/space_text/text_header.c @@ -42,10 +42,6 @@ #include "BLI_winstuff.h" #endif -#include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_text_types.h" #include "DNA_windowmanager_types.h" #include "MEM_guardedalloc.h" @@ -61,20 +57,13 @@ #include "BKE_text.h" #include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" -#include "WM_api.h" #include "WM_types.h" #include "BIF_gl.h" #include "BIF_glutil.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" -#include "RNA_access.h" #ifndef DISABLE_PYTHON #include "BPY_extern.h" @@ -136,7 +125,7 @@ void TEXT_OT_properties(wmOperatorType *ot) { /* identifiers */ ot->name= "Properties"; - ot->description= "Toggle text properties panel"; + ot->description= "Toggle text properties panel"; ot->idname= "TEXT_OT_properties"; /* api callbacks */ @@ -214,10 +203,10 @@ void TEXT_OT_properties(wmOperatorType *ot) uiPopupMenu *pup; pup= uiPupMenuBegin(C, "Text", 0); - uiItemEnumO(layout, "Top of File", 0, "TEXT_OT_move", "type", FILE_TOP); - uiItemEnumO(layout, "Bottom of File", 0, "TEXT_OT_move", "type", FILE_BOTTOM); - uiItemEnumO(layout, "Page Up", 0, "TEXT_OT_move", "type", PREV_PAGE); - uiItemEnumO(layout, "Page Down", 0, "TEXT_OT_move", "type", NEXT_PAGE); + uiItemEnumO(layout, "TEXT_OT_move", "Top of File", 0, "type", FILE_TOP); + uiItemEnumO(layout, "TEXT_OT_move", "Bottom of File", 0, "type", FILE_BOTTOM); + uiItemEnumO(layout, "TEXT_OT_move", "Page Up", 0, "type", PREV_PAGE); + uiItemEnumO(layout, "TEXT_OT_move", "Page Down", 0, "type", NEXT_PAGE); uiPupMenuEnd(C, pup); } #endif diff --git a/source/blender/editors/space_text/text_intern.h b/source/blender/editors/space_text/text_intern.h index e8cecab8404..a93f30ac62a 100644 --- a/source/blender/editors/space_text/text_intern.h +++ b/source/blender/editors/space_text/text_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -99,7 +99,7 @@ void text_pop_suggest_list(); /* text_ops.c */ enum { LINE_BEGIN, LINE_END, FILE_TOP, FILE_BOTTOM, PREV_CHAR, NEXT_CHAR, - PREV_WORD, NEXT_WORD, PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE }; + PREV_WORD, NEXT_WORD, PREV_LINE, NEXT_LINE, PREV_PAGE, NEXT_PAGE }; enum { DEL_NEXT_CHAR, DEL_PREV_CHAR, DEL_NEXT_WORD, DEL_PREV_WORD }; void TEXT_OT_new(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_text/text_ops.c b/source/blender/editors/space_text/text_ops.c index be1151219a2..a684c4dce0e 100644 --- a/source/blender/editors/space_text/text_ops.c +++ b/source/blender/editors/space_text/text_ops.c @@ -35,13 +35,7 @@ #include "MEM_guardedalloc.h" #include "DNA_constraint_types.h" -#include "DNA_object_types.h" -#include "DNA_action_types.h" -#include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_text_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "PIL_time.h" @@ -196,6 +190,9 @@ void TEXT_OT_new(wmOperatorType *ot) /* api callbacks */ ot->exec= new_exec; ot->poll= text_new_poll; + + /* flags */ + ot->flag= OPTYPE_UNDO; } /******************* open operator *********************/ @@ -221,8 +218,9 @@ static int open_exec(bContext *C, wmOperator *op) PropertyPointerRNA *pprop; PointerRNA idptr; char str[FILE_MAX]; + short internal = RNA_int_get(op->ptr, "internal"); - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); text= add_text(str, G.sce); @@ -250,6 +248,13 @@ static int open_exec(bContext *C, wmOperator *op) st->text= text; st->top= 0; } + + if (internal) { + if(text->name) + MEM_freeN(text->name); + + text->name = NULL; + } WM_event_add_notifier(C, NC_TEXT|NA_ADDED, text); @@ -263,11 +268,11 @@ static int open_invoke(bContext *C, wmOperator *op, wmEvent *event) Text *text= CTX_data_edit_text(C); char *path= (text && text->name)? text->name: G.sce; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return open_exec(C, op); open_init(C, op); - RNA_string_set(op->ptr, "path", path); + RNA_string_set(op->ptr, "filepath", path); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -286,8 +291,12 @@ void TEXT_OT_open(wmOperatorType *ot) ot->cancel= open_cancel; ot->poll= text_new_poll; + /* flags */ + ot->flag= OPTYPE_UNDO; + /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path + RNA_def_boolean(ot->srna, "internal", 0, "Make internal", "Make text file internal after loading"); } /******************* reload operator *********************/ @@ -366,6 +375,9 @@ void TEXT_OT_unlink(wmOperatorType *ot) ot->exec= unlink_exec; ot->invoke= WM_operator_confirm; ot->poll= text_edit_poll; + + /* flags */ + ot->flag= OPTYPE_UNDO; } /******************* make internal operator *********************/ @@ -397,6 +409,9 @@ void TEXT_OT_make_internal(wmOperatorType *ot) /* api callbacks */ ot->exec= make_internal_exec; ot->poll= text_edit_poll; + + /* flags */ + ot->flag= OPTYPE_UNDO; } /******************* save operator *********************/ @@ -420,7 +435,7 @@ static void txt_write_file(Text *text, ReportList *reports) char file[FILE_MAXDIR+FILE_MAXFILE]; BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE); - BLI_convertstringcode(file, G.sce); + BLI_path_abs(file, G.sce); fp= fopen(file, "w"); if(fp==NULL) { @@ -479,7 +494,7 @@ static int save_as_exec(bContext *C, wmOperator *op) if(!text) return OPERATOR_CANCELLED; - RNA_string_get(op->ptr, "path", str); + RNA_string_get(op->ptr, "filepath", str); if(text->name) MEM_freeN(text->name); text->name= BLI_strdup(str); @@ -498,7 +513,7 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) Text *text= CTX_data_edit_text(C); char *str; - if(RNA_property_is_set(op->ptr, "path")) + if(RNA_property_is_set(op->ptr, "filepath")) return save_as_exec(C, op); if(text->name) @@ -508,7 +523,7 @@ static int save_as_invoke(bContext *C, wmOperator *op, wmEvent *event) else str= G.sce; - RNA_string_set(op->ptr, "path", str); + RNA_string_set(op->ptr, "filepath", str); WM_event_add_fileselect(C, op); return OPERATOR_RUNNING_MODAL; @@ -527,7 +542,7 @@ void TEXT_OT_save_as(wmOperatorType *ot) ot->poll= text_edit_poll; /* properties */ - WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE); + WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH); //XXX TODO, relative_path } /******************* run script operator *********************/ @@ -746,7 +761,7 @@ void TEXT_OT_paste(wmOperatorType *ot) /* api callbacks */ ot->exec= paste_exec; ot->poll= text_edit_poll; - + /* properties */ RNA_def_boolean(ot->srna, "selection", 0, "Selection", "Paste text selected elsewhere rather than copied, X11 only."); } @@ -1592,10 +1607,12 @@ static int jump_exec(bContext *C, wmOperator *op) int line= RNA_int_get(op->ptr, "line"); short nlines= txt_get_span(text->lines.first, text->lines.last)+1; - if(line < 1 || line > nlines) - return OPERATOR_CANCELLED; - - txt_move_toline(text, line-1, 0); + if(line < 1) + txt_move_toline(text, 1, 0); + else if(line > nlines) + txt_move_toline(text, nlines-1, 0); + else + txt_move_toline(text, line-1, 0); text_update_cursor_moved(C); WM_event_add_notifier(C, NC_TEXT|ND_CURSOR, text); @@ -1603,6 +1620,12 @@ static int jump_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } +static int jump_invoke(bContext *C, wmOperator *op, wmEvent *event) +{ + return WM_operator_props_dialog_popup(C,op,200,100); + +} + void TEXT_OT_jump(wmOperatorType *ot) { /* identifiers */ @@ -1611,7 +1634,7 @@ void TEXT_OT_jump(wmOperatorType *ot) ot->description= "Jump cursor to line"; /* api callbacks */ - ot->invoke= WM_operator_props_popup; + ot->invoke= jump_invoke; ot->exec= jump_exec; ot->poll= text_edit_poll; @@ -1699,7 +1722,7 @@ static void screen_skip(SpaceText *st, int lines) { int last; - st->top += lines; + st->top += lines; last= txt_get_span(st->text->lines.first, st->text->lines.last); last= last - (st->viewlines/2); @@ -1849,9 +1872,9 @@ void TEXT_OT_scroll(wmOperatorType *ot) { /* identifiers */ ot->name= "Scroll"; - /*don't really see the difference between this and - scroll_bar. Both do basically the same thing (aside - from keymaps).*/ + /*don't really see the difference between this and + scroll_bar. Both do basically the same thing (aside + from keymaps).*/ ot->idname= "TEXT_OT_scroll"; ot->description= "Scroll text screen"; @@ -1902,9 +1925,9 @@ void TEXT_OT_scroll_bar(wmOperatorType *ot) { /* identifiers */ ot->name= "Scrollbar"; - /*don't really see the difference between this and - scroll. Both do basically the same thing (aside - from keymaps).*/ + /*don't really see the difference between this and + scroll. Both do basically the same thing (aside + from keymaps).*/ ot->idname= "TEXT_OT_scroll_bar"; ot->description= "Scroll text screen"; @@ -2542,7 +2565,7 @@ int text_file_modified(Text *text) return 0; BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE); - BLI_convertstringcode(file, G.sce); + BLI_path_abs(file, G.sce); if(!BLI_exists(file)) return 2; @@ -2570,7 +2593,7 @@ static void text_ignore_modified(Text *text) if(!text || !text->name) return; BLI_strncpy(file, text->name, FILE_MAXDIR+FILE_MAXFILE); - BLI_convertstringcode(file, G.sce); + BLI_path_abs(file, G.sce); if(!BLI_exists(file)) return; @@ -2614,25 +2637,25 @@ static int resolve_conflict_invoke(bContext *C, wmOperator *op, wmEvent *event) /* modified locally and externally, ahhh. offer more possibilites. */ pup= uiPupMenuBegin(C, "File Modified Outside and Inside Blender", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, "Reload from disk (ignore local changes)", 0, op->type->idname, "resolution", RESOLVE_RELOAD); - uiItemEnumO(layout, "Save to disk (ignore outside changes)", 0, op->type->idname, "resolution", RESOLVE_SAVE); - uiItemEnumO(layout, "Make text internal (separate copy)", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL); + uiItemEnumO(layout, op->type->idname, "Reload from disk (ignore local changes)", 0, "resolution", RESOLVE_RELOAD); + uiItemEnumO(layout, op->type->idname, "Save to disk (ignore outside changes)", 0, "resolution", RESOLVE_SAVE); + uiItemEnumO(layout, op->type->idname, "Make text internal (separate copy)", 0, "resolution", RESOLVE_MAKE_INTERNAL); uiPupMenuEnd(C, pup); } else { pup= uiPupMenuBegin(C, "File Modified Outside Blender", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, "Reload from disk", 0, op->type->idname, "resolution", RESOLVE_RELOAD); - uiItemEnumO(layout, "Make text internal (separate copy)", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL); - uiItemEnumO(layout, "Ignore", 0, op->type->idname, "resolution", RESOLVE_IGNORE); + uiItemEnumO(layout, op->type->idname, "Reload from disk", 0, "resolution", RESOLVE_RELOAD); + uiItemEnumO(layout, op->type->idname, "Make text internal (separate copy)", 0, "resolution", RESOLVE_MAKE_INTERNAL); + uiItemEnumO(layout, op->type->idname, "Ignore", 0, "resolution", RESOLVE_IGNORE); uiPupMenuEnd(C, pup); } break; case 2: pup= uiPupMenuBegin(C, "File Deleted Outside Blender", 0); layout= uiPupMenuLayout(pup); - uiItemEnumO(layout, "Make text internal", 0, op->type->idname, "resolution", RESOLVE_MAKE_INTERNAL); - uiItemEnumO(layout, "Recreate file", 0, op->type->idname, "resolution", RESOLVE_SAVE); + uiItemEnumO(layout, op->type->idname, "Make text internal", 0, "resolution", RESOLVE_MAKE_INTERNAL); + uiItemEnumO(layout, op->type->idname, "Recreate file", 0, "resolution", RESOLVE_SAVE); uiPupMenuEnd(C, pup); break; } diff --git a/source/blender/editors/space_text/text_python.c b/source/blender/editors/space_text/text_python.c index c5d56408b1e..aee1a7ecfd6 100644 --- a/source/blender/editors/space_text/text_python.c +++ b/source/blender/editors/space_text/text_python.c @@ -39,7 +39,6 @@ #include "BLI_blenlib.h" -#include "WM_api.h" #include "WM_types.h" #include "text_intern.h" diff --git a/source/blender/editors/space_time/CMakeLists.txt b/source/blender/editors/space_time/CMakeLists.txt new file mode 100644 index 00000000000..39b7ba355b9 --- /dev/null +++ b/source/blender/editors/space_time/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_time "${SRC}" "${INC}") diff --git a/source/blender/editors/space_time/space_time.c b/source/blender/editors/space_time/space_time.c index 0dc4bff0ebf..b73c08e6542 100644 --- a/source/blender/editors/space_time/space_time.c +++ b/source/blender/editors/space_time/space_time.c @@ -30,10 +30,8 @@ #include <stdio.h> #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" +#include "DNA_particle_types.h" #include "MEM_guardedalloc.h" @@ -43,13 +41,12 @@ #include "BKE_context.h" #include "BKE_global.h" #include "BKE_screen.h" +#include "BKE_pointcache.h" #include "BKE_utildefines.h" #include "ED_anim_api.h" #include "ED_keyframes_draw.h" -#include "ED_space_api.h" #include "ED_screen.h" -#include "ED_util.h" #include "WM_api.h" #include "WM_types.h" @@ -57,7 +54,6 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "UI_interface.h" #include "UI_resources.h" #include "UI_view2d.h" @@ -90,6 +86,174 @@ static void time_draw_sfra_efra(const bContext *C, SpaceTime *stime, ARegion *ar fdrawline((float)PEFRA, v2d->cur.ymin, (float)PEFRA, v2d->cur.ymax); } +#define CACHE_DRAW_HEIGHT 3.0f + +static void time_draw_cache(const bContext *C, SpaceTime *stime, ARegion *ar) +{ + SpaceTimeCache *stc; + float yoffs=0.f; + + if (!(stime->cache_display & TIME_CACHE_DISPLAY)) + return; + + for (stc= stime->caches.first; stc; stc=stc->next) { + float col[4]; + + if (!stc->array || !stc->ok) + continue; + + glPushMatrix(); + glTranslatef(0.0, (float)V2D_SCROLL_HEIGHT+yoffs, 0.0); + glScalef(1.0, CACHE_DRAW_HEIGHT, 0.0); + + switch(stc->type) { + case PTCACHE_TYPE_SOFTBODY: + col[0] = 1.0; col[1] = 0.4; col[2] = 0.02; + col[3] = 0.1; + break; + case PTCACHE_TYPE_PARTICLES: + col[0] = 1.0; col[1] = 0.1; col[2] = 0.02; + col[3] = 0.1; + break; + case PTCACHE_TYPE_CLOTH: + col[0] = 0.1; col[1] = 0.1; col[2] = 0.75; + col[3] = 0.1; + break; + case PTCACHE_TYPE_SMOKE_DOMAIN: + case PTCACHE_TYPE_SMOKE_HIGHRES: + col[0] = 0.2; col[1] = 0.2; col[2] = 0.2; + col[3] = 0.1; + break; + } + glColor4fv(col); + + glEnable(GL_BLEND); + + glRectf((float)stc->startframe, 0.0, (float)stc->endframe, 1.0); + + col[3] = 0.4; + if (stc->flag & PTCACHE_BAKED) { + col[0] -= 0.4; col[1] -= 0.4; col[2] -= 0.4; + } + glColor4fv(col); + + glEnableClientState(GL_VERTEX_ARRAY); + glVertexPointer(2, GL_FLOAT, 0, stc->array); + glDrawArrays(GL_QUADS, 0, stc->len); + glDisableClientState(GL_VERTEX_ARRAY); + + glDisable(GL_BLEND); + + glPopMatrix(); + + yoffs += CACHE_DRAW_HEIGHT; + } +} + +static void time_cache_free(SpaceTime *stime) +{ + SpaceTimeCache *stc; + + for (stc= stime->caches.first; stc; stc=stc->next) { + if (stc->array) { + MEM_freeN(stc->array); + stc->array = NULL; + } + } + + BLI_freelistN(&stime->caches); +} + +static void time_cache_refresh(const bContext *C, SpaceTime *stime, ARegion *ar) +{ + Object *ob = CTX_data_active_object(C); + PTCacheID *pid; + ListBase pidlist; + + time_cache_free(stime); + + if (!(stime->cache_display & TIME_CACHE_DISPLAY) || (!ob)) + return; + + BKE_ptcache_ids_from_object(&pidlist, ob, NULL, 0); + + /* iterate over pointcaches on the active object, + * add spacetimecache and vertex array for each */ + for(pid=pidlist.first; pid; pid=pid->next) { + SpaceTimeCache *stc; + float *fp, *array; + int i, len; + + switch(pid->type) { + case PTCACHE_TYPE_SOFTBODY: + if (!(stime->cache_display & TIME_CACHE_SOFTBODY)) continue; + break; + case PTCACHE_TYPE_PARTICLES: + if (!(stime->cache_display & TIME_CACHE_PARTICLES)) continue; + break; + case PTCACHE_TYPE_CLOTH: + if (!(stime->cache_display & TIME_CACHE_CLOTH)) continue; + break; + case PTCACHE_TYPE_SMOKE_DOMAIN: + case PTCACHE_TYPE_SMOKE_HIGHRES: + if (!(stime->cache_display & TIME_CACHE_SMOKE)) continue; + break; + } + + stc= MEM_callocN(sizeof(SpaceTimeCache), "spacetimecache"); + + stc->type = pid->type; + + if (pid->cache->flag & PTCACHE_BAKED) + stc->flag |= PTCACHE_BAKED; + if (pid->cache->flag & PTCACHE_DISK_CACHE) + stc->flag |= PTCACHE_DISK_CACHE; + + /* first allocate with maximum number of frames needed */ + BKE_ptcache_id_time(pid, CTX_data_scene(C), 0, &stc->startframe, &stc->endframe, NULL); + len = (stc->endframe - stc->startframe + 1)*4; + fp = array = MEM_callocN(len*2*sizeof(float), "temporary timeline cache array"); + + /* fill the vertex array with a quad for each cached frame */ + for (i=stc->startframe; i<=stc->endframe; i++) { + + if (BKE_ptcache_id_exist(pid, i)) { + fp[0] = (float)i; + fp[1] = 0.0; + fp+=2; + + fp[0] = (float)i; + fp[1] = 1.0; + fp+=2; + + fp[0] = (float)(i+1); + fp[1] = 1.0; + fp+=2; + + fp[0] = (float)(i+1); + fp[1] = 0.0; + fp+=2; + } + } + /* update with final number of frames */ + stc->len = (i-stc->startframe)*4; + stc->array = MEM_mallocN(stc->len*2*sizeof(float), "SpaceTimeCache array"); + memcpy(stc->array, array, stc->len*2*sizeof(float)); + + MEM_freeN(array); + array = NULL; + + stc->ok = 1; + + BLI_addtail(&stime->caches, stc); + } + + /* todo: sort time->caches list for consistent order */ + // ... + + BLI_freelistN(&pidlist); +} + /* helper function - find actkeycolumn that occurs on cframe, or the nearest one if not found */ static ActKeyColumn *time_cfra_find_ak (ActKeyColumn *ak, float cframe) { @@ -212,6 +376,66 @@ static void time_draw_keyframes(const bContext *C, SpaceTime *stime, ARegion *ar /* ---------------- */ +static void time_refresh(const bContext *C, ScrArea *sa) +{ + SpaceTime *stime = (SpaceTime *)sa->spacedata.first; + ARegion *ar; + + /* find the main timeline region and refresh cache display*/ + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + time_cache_refresh(C, stime, ar); + break; + } + } +} + +/* editor level listener */ +static void time_listener(ScrArea *sa, wmNotifier *wmn) +{ + + /* mainly for updating cache display */ + switch (wmn->category) { + case NC_OBJECT: + switch (wmn->data) { + case ND_POINTCACHE: + ED_area_tag_refresh(sa); + ED_area_tag_redraw(sa); + break; + } + break; + case NC_SCENE: + switch (wmn->data) { + case ND_OB_ACTIVE: + case ND_FRAME: + ED_area_tag_refresh(sa); + break; + case ND_FRAME_RANGE: + { + ARegion *ar; + Scene *scene = wmn->reference; + + for (ar= sa->regionbase.first; ar; ar= ar->next) { + if (ar->regiontype==RGN_TYPE_WINDOW) { + ar->v2d.tot.xmin= (float)(SFRA - 4); + ar->v2d.tot.xmax= (float)(EFRA + 4); + break; + } + } + } + break; + } + case NC_SPACE: + switch (wmn->data) { + case ND_SPACE_CHANGED: + ED_area_tag_refresh(sa); + break; + } + } +} + +/* ---------------- */ + /* add handlers, stuff you only do once or on area/region changes */ static void time_main_area_init(wmWindowManager *wm, ARegion *ar) { @@ -232,18 +456,16 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) View2DGrid *grid; View2DScrollers *scrollers; int unit, flag=0; - float col[3]; /* clear and setup matrix */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); glClear(GL_COLOR_BUFFER_BIT); UI_view2d_view_ortho(C, v2d); /* start and end frame */ time_draw_sfra_efra(C, stime, ar); - + /* grid */ unit= (stime->flag & TIME_DRAWFRAMES)? V2D_UNIT_FRAMES: V2D_UNIT_SECONDS; grid= UI_view2d_grid_calc(C, v2d, unit, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY, ar->winx, ar->winy); @@ -251,7 +473,8 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_grid_free(grid); /* keyframes */ - time_draw_keyframes(C, stime, ar); + if(!G.rendering) /* ANIM_nla_mapping_apply_fcurve() modifies curve data while rendering, possible race condition */ + time_draw_keyframes(C, stime, ar); /* current frame */ if ((stime->flag & TIME_DRAWFRAMES)==0) flag |= DRAWCFRA_UNIT_SECONDS; @@ -262,6 +485,9 @@ static void time_main_area_draw(const bContext *C, ARegion *ar) UI_view2d_view_orthoSpecial(C, v2d, 1); draw_markers_time(C, 0); + /* caches */ + time_draw_cache(C, stime, ar); + /* reset view matrix */ UI_view2d_view_restore(C); @@ -285,7 +511,6 @@ static void time_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_SCENE: - /* any scene change for now */ ED_region_tag_redraw(ar); break; @@ -385,13 +610,23 @@ static SpaceLink *time_new(const bContext *C) /* not spacelink itself */ static void time_free(SpaceLink *sl) { + SpaceTime *stime= (SpaceTime *)sl; + + time_cache_free(stime); } /* spacetype; init callback in ED_area_initialize() */ /* init is called to (re)initialize an existing editor (file read, screen changes) */ /* validate spacedata, add own area level handlers */ static void time_init(wmWindowManager *wm, ScrArea *sa) { + SpaceTime *stime= (SpaceTime *)sa->spacedata.first; + time_cache_free(stime); + + /* enable all cache display */ + stime->cache_display |= TIME_CACHE_DISPLAY; + stime->cache_display |= (TIME_CACHE_SOFTBODY|TIME_CACHE_PARTICLES); + stime->cache_display |= (TIME_CACHE_CLOTH|TIME_CACHE_SMOKE); } static SpaceLink *time_duplicate(SpaceLink *sl) @@ -399,6 +634,8 @@ static SpaceLink *time_duplicate(SpaceLink *sl) SpaceTime *stime= (SpaceTime *)sl; SpaceTime *stimen= MEM_dupallocN(stime); + time_cache_free(stimen); + return (SpaceLink *)stimen; } @@ -418,6 +655,8 @@ void ED_spacetype_time(void) st->duplicate= time_duplicate; st->operatortypes= time_operatortypes; st->keymap= NULL; + st->listener= time_listener; + st->refresh= time_refresh; /* regions: main window */ art= MEM_callocN(sizeof(ARegionType), "spacetype time region"); diff --git a/source/blender/editors/space_time/time_intern.h b/source/blender/editors/space_time/time_intern.h index 5fe55444d45..31164d0c27a 100644 --- a/source/blender/editors/space_time/time_intern.h +++ b/source/blender/editors/space_time/time_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/space_time/time_ops.c b/source/blender/editors/space_time/time_ops.c index 08e84140f0e..68036d0ea33 100644 --- a/source/blender/editors/space_time/time_ops.c +++ b/source/blender/editors/space_time/time_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,22 +32,15 @@ #include "MEM_guardedalloc.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_blenlib.h" #include "BKE_context.h" #include "BKE_utildefines.h" -#include "UI_interface.h" -#include "UI_view2d.h" #include "ED_screen.h" -#include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" diff --git a/source/blender/editors/space_userpref/CMakeLists.txt b/source/blender/editors/space_userpref/CMakeLists.txt new file mode 100644 index 00000000000..1752f39cfa5 --- /dev/null +++ b/source/blender/editors/space_userpref/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenkernel + ../../blenlib + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_space_userpref "${SRC}" "${INC}") diff --git a/source/blender/editors/space_userpref/SConscript b/source/blender/editors/space_userpref/SConscript index 1b808a5a7c0..3ba1543b840 100644 --- a/source/blender/editors/space_userpref/SConscript +++ b/source/blender/editors/space_userpref/SConscript @@ -8,7 +8,4 @@ incs += ' ../../windowmanager #/intern/guardedalloc #/extern/glew/include' defs = [] -if env['WITH_BF_GAMEENGINE']: - defs.append('GAMEBLENDER=1') - env.BlenderLib ( 'bf_editors_space_userpref', sources, Split(incs), defs, libtype=['core'], priority=[70] ) diff --git a/source/blender/editors/space_userpref/space_userpref.c b/source/blender/editors/space_userpref/space_userpref.c index 0a8eee1c7dd..4d6d303625b 100644 --- a/source/blender/editors/space_userpref/space_userpref.c +++ b/source/blender/editors/space_userpref/space_userpref.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,8 +29,6 @@ #include <string.h> #include <stdio.h> -#include "DNA_space_types.h" -#include "DNA_screen_types.h" #include "MEM_guardedalloc.h" @@ -39,7 +37,6 @@ #include "BKE_context.h" #include "BKE_screen.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "BIF_gl.h" diff --git a/source/blender/editors/space_userpref/userpref_intern.h b/source/blender/editors/space_userpref/userpref_intern.h index 8c84cfdede4..206c8efe70e 100644 --- a/source/blender/editors/space_userpref/userpref_intern.h +++ b/source/blender/editors/space_userpref/userpref_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/space_view3d/CMakeLists.txt b/source/blender/editors/space_view3d/CMakeLists.txt new file mode 100644 index 00000000000..733c81676d1 --- /dev/null +++ b/source/blender/editors/space_view3d/CMakeLists.txt @@ -0,0 +1,51 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../include + ../../blenfont + ../../blenkernel + ../../blenlib + ../../bmesh + ../../gpu + ../../imbuf + ../../../../intern/guardedalloc + ../../../../intern/smoke/extern + ../../makesdna + ../../makesrna + ../../render/extern/include + ../../windowmanager +) + +IF(WITH_GAMEENGINE) + SET(INC ${INC} ../../../kernel/gen_system) + ADD_DEFINITIONS(-DGAMEBLENDER) +ENDIF(WITH_GAMEENGINE) + +IF(WIN32) + SET(INC ${INC} ${PTHREADS_INC}) +ENDIF(WIN32) + +ADD_DEFINITIONS(-DGLEW_STATIC) + +BLENDERLIB(bf_editor_space_view3d "${SRC}" "${INC}") diff --git a/source/blender/editors/space_view3d/SConscript b/source/blender/editors/space_view3d/SConscript index ecff3c96d14..907afc12020 100644 --- a/source/blender/editors/space_view3d/SConscript +++ b/source/blender/editors/space_view3d/SConscript @@ -13,5 +13,7 @@ incs += ' #source/kernel/gen_system' if env['WITH_BF_GAMEENGINE']: defs.append('GAMEBLENDER=1') +if env['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross', 'win64-vc'): + incs += ' ' + env['BF_PTHREADS_INC'] env.BlenderLib ( 'bf_editors_space_view3d', sources, Split(incs), defines = defs, libtype=['core'], priority=[40] ) diff --git a/source/blender/editors/space_view3d/drawanimviz.c b/source/blender/editors/space_view3d/drawanimviz.c index 721ab12dbc1..1bc51de4471 100644 --- a/source/blender/editors/space_view3d/drawanimviz.c +++ b/source/blender/editors/space_view3d/drawanimviz.c @@ -31,23 +31,13 @@ #include <string.h> #include <math.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_ID.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -72,11 +62,8 @@ #include "BIF_glutil.h" #include "ED_armature.h" -#include "ED_anim_api.h" #include "ED_keyframes_draw.h" -#include "WM_api.h" -#include "WM_types.h" #include "BLF_api.h" #include "UI_resources.h" @@ -212,6 +199,21 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, glVertex3fv(mpv->co); glEnd(); + /* Draw big green dot where the current frame is */ + // NOTE: only do this when drawing keyframes for now... + if (avs->path_viewflag & MOTIONPATH_VIEW_KFRAS) { + UI_ThemeColor(TH_CFRAME); + glPointSize(6.0f); + + glBegin(GL_POINTS); + mpv = mpv_start + (CFRA - sfra); + glVertex3fv(mpv->co); + glEnd(); + + glPointSize(1.0f); + UI_ThemeColor(TH_TEXT_HI); + } + /* Draw frame numbers at each framestep value */ if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) { for (i=0, mpv=mpv_start; i < len; i+=stepsize, mpv+=stepsize) { @@ -233,9 +235,9 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, } } } - + /* Keyframes - dots and numbers */ - if (avs->path_viewflag & MOTIONPATH_VIEW_KFNOS) { + if (avs->path_viewflag & MOTIONPATH_VIEW_KFRAS) { AnimData *adt= BKE_animdata_from_id(&ob->id); DLRBT_Tree keys; @@ -243,8 +245,10 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, BLI_dlrbTree_init(&keys); if (adt) { - /* for now, it is assumed that keyframes for bones are all grouped in a single group */ - if (pchan) { + /* it is assumed that keyframes for bones are all grouped in a single group + * unless an option is set to always use the whole action + */ + if ((pchan) && (avs->path_viewflag & MOTIONPATH_VIEW_KFACT)==0) { bActionGroup *agrp= action_groups_find_named(adt->action, pchan->name); if (agrp) { @@ -274,7 +278,7 @@ void draw_motion_path_instance(Scene *scene, View3D *v3d, ARegion *ar, glPointSize(1.0f); /* Draw frame numbers of keyframes */ - if (avs->path_viewflag & MOTIONPATH_VIEW_FNUMS) { + if (avs->path_viewflag & MOTIONPATH_VIEW_KFNOS) { for (i=0, mpv=mpv_start; i < len; i++, mpv++) { float mframe= (float)(sfra + i); diff --git a/source/blender/editors/space_view3d/drawarmature.c b/source/blender/editors/space_view3d/drawarmature.c index 9df9cad1ac0..e8f4fc7890f 100644 --- a/source/blender/editors/space_view3d/drawarmature.c +++ b/source/blender/editors/space_view3d/drawarmature.c @@ -31,24 +31,14 @@ #include <string.h> #include <math.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_constraint_types.h" -#include "DNA_ID.h" -#include "DNA_nla_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -74,8 +64,6 @@ #include "ED_armature.h" #include "ED_keyframes_draw.h" -#include "WM_api.h" -#include "WM_types.h" #include "BLF_api.h" #include "UI_resources.h" @@ -1205,7 +1193,7 @@ static void draw_bone(int dt, int armflag, int boneflag, int constflag, unsigned { /* Draw a 3d octahedral bone, we use normalized space based on length, - for glDisplayLists */ + for glDisplayLists */ glScalef(length, length, length); @@ -1559,7 +1547,7 @@ static void bone_matrix_translate_y(float mat[][4], float y) VECCOPY(trans, mat[1]); mul_v3_fl(trans, y); - add_v3_v3v3(mat[3], mat[3], trans); + add_v3_v3(mat[3], trans); } /* assumes object is Armature with pose */ @@ -1894,16 +1882,16 @@ static void draw_pose_bones(Scene *scene, View3D *v3d, ARegion *ar, Base *base, /* Draw additional axes on the bone tail */ if ( (arm->flag & ARM_DRAWAXES) && (arm->flag & ARM_POSEMODE) ) { + float mat[4][4]; glPushMatrix(); copy_m4_m4(bmat, pchan->pose_mat); bone_matrix_translate_y(bmat, pchan->bone->length); glMultMatrixf(bmat); - /* do cached text draw immediate to include transform */ - view3d_cached_text_draw_begin(); - drawaxes(pchan->bone->length*0.25f, 0, OB_ARROWS); - view3d_cached_text_draw_end(v3d, ar, 1, bmat); + mul_m4_m4m4(mat, bmat, rv3d->viewmatob); + drawaxes(rv3d, mat, pchan->bone->length*0.25f, 0, OB_ARROWS); + glPopMatrix(); } } @@ -1929,7 +1917,7 @@ static void get_matrix_editbone(EditBone *eBone, float bmat[][4]) vec_roll_to_mat3(delta, eBone->roll, mat); copy_m4_m3(bmat, mat); - add_v3_v3v3(bmat[3], bmat[3], eBone->head); + add_v3_v3(bmat[3], eBone->head); } static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt) @@ -2090,15 +2078,16 @@ static void draw_ebones(View3D *v3d, ARegion *ar, Object *ob, int dt) } /* Draw additional axes */ if (arm->flag & ARM_DRAWAXES) { + float mat[4][4]; glPushMatrix(); get_matrix_editbone(eBone, bmat); bone_matrix_translate_y(bmat, eBone->length); glMultMatrixf(bmat); + mul_m4_m4m4(mat, bmat, rv3d->viewmatob); + /* do cached text draw immediate to include transform */ - view3d_cached_text_draw_begin(); - drawaxes(eBone->length*0.25f, 0, OB_ARROWS); - view3d_cached_text_draw_end(v3d, ar, 1, bmat); + drawaxes(rv3d, mat, eBone->length*0.25f, 0, OB_ARROWS); glPopMatrix(); } @@ -2406,7 +2395,7 @@ int draw_armature(Scene *scene, View3D *v3d, ARegion *ar, Base *base, int dt, in bArmature *arm= ob->data; int retval= 0; - if(G.f & G_RENDER_SHADOW) + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return 1; if(dt>OB_WIRE && arm->drawtype!=ARM_LINE) { diff --git a/source/blender/editors/space_view3d/drawmesh.c b/source/blender/editors/space_view3d/drawmesh.c index e93e05a0a55..e46a5f5efae 100644 --- a/source/blender/editors/space_view3d/drawmesh.c +++ b/source/blender/editors/space_view3d/drawmesh.c @@ -35,20 +35,13 @@ #include "BLI_edgehash.h" #include "BLI_editVert.h" -#include "IMB_imbuf.h" -#include "IMB_imbuf_types.h" -#include "DNA_image_types.h" -#include "DNA_lamp_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" -#include "DNA_object_types.h" #include "DNA_property_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_view3d_types.h" -#include "DNA_userdef_types.h" #include "DNA_windowmanager_types.h" #include "BKE_bmfont.h" @@ -70,9 +63,8 @@ #include "BIF_glutil.h" #include "UI_resources.h" -#include "UI_interface_icons.h" -#include "gpu_buffers.h" +#include "GPU_buffers.h" #include "GPU_extensions.h" #include "GPU_draw.h" @@ -440,7 +432,7 @@ static int draw_tface__set_draw(MTFace *tface, MCol *mcol, int matnr) } else if (tface && tface->mode&TF_OBCOL) { return 2; /* Don't set color */ } else if (!mcol) { - return 2; /* Don't set color */ + return 1; /* Don't set color */ } else { return 1; /* Set color from mcol */ } @@ -475,9 +467,9 @@ static void add_tface_color_layer(DerivedMesh *dm) } } else if (tface && tface->mode&TF_OBCOL) { for(j=0;j<4;j++) { - finalCol[i*4+j].r = Gtexdraw.obcol[0]; - finalCol[i*4+j].g = Gtexdraw.obcol[1]; - finalCol[i*4+j].b = Gtexdraw.obcol[2]; + finalCol[i*4+j].r = FTOCHAR(Gtexdraw.obcol[0]); + finalCol[i*4+j].g = FTOCHAR(Gtexdraw.obcol[1]); + finalCol[i*4+j].b = FTOCHAR(Gtexdraw.obcol[2]); } } else if (!mcol) { if (tface) { @@ -496,9 +488,9 @@ static void add_tface_color_layer(DerivedMesh *dm) else copy_v3_v3(col, &ma->r); for(j=0;j<4;j++) { - finalCol[i*4+j].b = col[2]; - finalCol[i*4+j].g = col[1]; - finalCol[i*4+j].r = col[0]; + finalCol[i*4+j].b = FTOCHAR(col[2]); + finalCol[i*4+j].g = FTOCHAR(col[1]); + finalCol[i*4+j].r = FTOCHAR(col[0]); } } else @@ -568,7 +560,7 @@ static int draw_em_tf_mapped__set_draw(void *userData, int index) mtf.unwrap = tpoly->unwrap; } - return draw_tface__set_draw(&mtf, has_vcol, matnr); + return draw_tface__set_draw_legacy(&mtf, has_vcol, matnr); } static int wpaint__setSolidDrawOptions(void *userData, int index, int *drawSmooth_r) diff --git a/source/blender/editors/space_view3d/drawobject.c b/source/blender/editors/space_view3d/drawobject.c index 8dbaeed97fa..b737a65e2be 100644 --- a/source/blender/editors/space_view3d/drawobject.c +++ b/source/blender/editors/space_view3d/drawobject.c @@ -28,40 +28,18 @@ #include <string.h> #include <math.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" -#include "IMB_imbuf.h" - - - - -#include "DNA_armature_types.h" -#include "DNA_boid_types.h" #include "DNA_camera_types.h" #include "DNA_curve_types.h" #include "DNA_constraint_types.h" // for drawing constraint -#include "DNA_effect_types.h" #include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_material_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_meta_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" -#include "DNA_object_fluidsim.h" -#include "DNA_particle_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" #include "DNA_smoke_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "DNA_world_types.h" #include "BLI_blenlib.h" @@ -103,7 +81,6 @@ #include "BIF_glutil.h" #include "GPU_draw.h" -#include "GPU_material.h" #include "GPU_extensions.h" #include "ED_mesh.h" @@ -111,10 +88,8 @@ #include "ED_screen.h" #include "ED_sculpt.h" #include "ED_types.h" -#include "ED_util.h" #include "UI_resources.h" -#include "UI_interface_icons.h" #include "WM_api.h" #include "wm_subwindow.h" @@ -128,13 +103,6 @@ ((vd->drawtype==OB_TEXTURE && dt>OB_SOLID) || \ (vd->drawtype==OB_SOLID && vd->flag2 & V3D_SOLID_TEX)) -#define CHECK_OB_DRAWFACEDOT(sce, vd, dt) \ -( (sce->toolsettings->selectmode & SCE_SELECT_FACE) && \ - (vd->drawtype<=OB_SOLID) && \ - (G.f & G_BACKBUFSEL)==0 && \ - (((vd->drawtype==OB_SOLID) && (dt>=OB_SOLID) && (vd->flag2 & V3D_SOLID_TEX) && (vd->flag & V3D_ZBUF_SELECT)) == 0) \ - ) - static void draw_bounding_volume(Scene *scene, Object *ob); static void drawcube_size(float size); @@ -142,6 +110,26 @@ static void drawcircle_size(float size); static void draw_empty_sphere(float size); static void draw_empty_cone(float size); +static int check_ob_drawface_dot(Scene *sce, View3D *vd, char dt) +{ + if((sce->toolsettings->selectmode & SCE_SELECT_FACE) == 0) + return 0; + + if(G.f & G_BACKBUFSEL) + return 0; + + if((vd->flag & V3D_ZBUF_SELECT) == 0) + return 1; + + /* if its drawing textures with zbuf sel, then dont draw dots */ + if(dt==OB_TEXTURE && vd->drawtype==OB_TEXTURE) + return 0; + + if(vd->drawtype>=OB_SOLID && vd->flag2 & V3D_SOLID_TEX) + return 0; + + return 1; +} /* ************* only use while object drawing ************** * or after running ED_view3d_init_mats_rv3d @@ -334,16 +322,114 @@ static float cosval[32] ={ 1.00000000 }; +static void draw_xyz_wire(RegionView3D *rv3d, float mat[][4], float *c, float size, int axis) +{ + float v1[3]= {0.f, 0.f, 0.f}, v2[3] = {0.f, 0.f, 0.f}; + float imat[4][4]; + float dim; + float dx[3], dy[3]; + + /* hrms, really only works properly after glLoadMatrixf(rv3d->viewmat); */ + float pixscale= rv3d->persmat[0][3]*c[0]+ rv3d->persmat[1][3]*c[1]+ rv3d->persmat[2][3]*c[2] + rv3d->persmat[3][3]; + pixscale*= rv3d->pixsize; + + /* halfway blend between fixed size in worldspace vs viewspace - + * alleviates some of the weirdness due to not using viewmat for gl matrix */ + dim = (0.05*size*0.5) + (size*10.f*pixscale*0.5); + + invert_m4_m4(imat, mat); + normalize_v3(imat[0]); + normalize_v3(imat[1]); + + copy_v3_v3(dx, imat[0]); + copy_v3_v3(dy, imat[1]); + + mul_v3_fl(dx, dim); + mul_v3_fl(dy, dim); + + switch(axis) { + case 0: /* x axis */ + glBegin(GL_LINES); + + /* bottom left to top right */ + sub_v3_v3v3(v1, c, dx); + sub_v3_v3(v1, dy); + add_v3_v3v3(v2, c, dx); + add_v3_v3(v2, dy); + + glVertex3fv(v1); + glVertex3fv(v2); + + /* top left to bottom right */ + mul_v3_fl(dy, 2.f); + add_v3_v3(v1, dy); + sub_v3_v3(v2, dy); + + glVertex3fv(v1); + glVertex3fv(v2); + + glEnd(); + break; + case 1: /* y axis */ + glBegin(GL_LINES); + + /* bottom left to top right */ + mul_v3_fl(dx, 0.75f); + sub_v3_v3v3(v1, c, dx); + sub_v3_v3(v1, dy); + add_v3_v3v3(v2, c, dx); + add_v3_v3(v2, dy); + + glVertex3fv(v1); + glVertex3fv(v2); + + /* top left to center */ + mul_v3_fl(dy, 2.f); + add_v3_v3(v1, dy); + copy_v3_v3(v2, c); + + glVertex3fv(v1); + glVertex3fv(v2); + + glEnd(); + break; + case 2: /* z axis */ + glBegin(GL_LINE_STRIP); + + /* start at top left */ + sub_v3_v3v3(v1, c, dx); + add_v3_v3v3(v1, c, dy); + + glVertex3fv(v1); + + mul_v3_fl(dx, 2.f); + add_v3_v3(v1, dx); + + glVertex3fv(v1); + + mul_v3_fl(dy, 2.f); + sub_v3_v3(v1, dx); + sub_v3_v3(v1, dy); + + glVertex3fv(v1); + + add_v3_v3(v1, dx); + + glVertex3fv(v1); + + glEnd(); + break; + } + +} + /* flag is same as for draw_object */ -void drawaxes(float size, int flag, char drawtype) +void drawaxes(RegionView3D *rv3d, float mat[][4], float size, int flag, char drawtype) { int axis; float v1[3]= {0.0, 0.0, 0.0}; float v2[3]= {0.0, 0.0, 0.0}; float v3[3]= {0.0, 0.0, 0.0}; - - if(G.f & G_RENDER_SHADOW) - return; switch(drawtype) { @@ -424,12 +510,12 @@ void drawaxes(float size, int flag, char drawtype) glVertex3fv(v1); glVertex3fv(v2); - v1[axis]= size*0.8; - v1[arrow_axis]= -size*0.125; + v1[axis]= size*0.85; + v1[arrow_axis]= -size*0.08; glVertex3fv(v1); glVertex3fv(v2); - v1[arrow_axis]= size*0.125; + v1[arrow_axis]= size*0.08; glVertex3fv(v1); glVertex3fv(v2); @@ -437,15 +523,7 @@ void drawaxes(float size, int flag, char drawtype) v2[axis]+= size*0.125; - // patch for 3d cards crashing on glSelect for text drawing (IBM) - if((flag & DRAW_PICKING) == 0) { - if (axis==0) - view3d_cached_text_draw_add(v2[0], v2[1], v2[2], "x", 0, V3D_CACHE_TEXT_ZBUF); - else if (axis==1) - view3d_cached_text_draw_add(v2[0], v2[1], v2[2], "y", 0, V3D_CACHE_TEXT_ZBUF); - else - view3d_cached_text_draw_add(v2[0], v2[1], v2[2], "z", 0, V3D_CACHE_TEXT_ZBUF); - } + draw_xyz_wire(rv3d, mat, v2, size, axis); } break; } @@ -554,14 +632,14 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa } if(tot) { +#if 0 bglMats mats; /* ZBuffer depth vars */ double ux, uy, uz; float depth; if(v3d->zbuf) bgl_get_mats(&mats); - - +#endif if(rv3d->rflag & RV3D_CLIPPING) for(a=0; a<6; a++) glDisable(GL_CLIP_PLANE0+a); @@ -578,7 +656,7 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa else glDepthMask(0); for(vos= strings->first; vos; vos= vos->next) { - +#if 0 // too slow, reading opengl info while drawing is very bad, better to see if we cn use the zbuffer while in pixel space - campbell if(v3d->zbuf && (vos->flag & V3D_CACHE_TEXT_ZBUF)) { gluProject(vos->vec[0], vos->vec[1], vos->vec[2], mats.modelview, mats.projection, (GLint *)mats.viewport, &ux, &uy, &uz); glReadPixels(ar->winrct.xmin+vos->mval[0]+vos->xoffs, ar->winrct.ymin+vos->mval[1], 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &depth); @@ -586,7 +664,7 @@ void view3d_cached_text_draw_end(View3D *v3d, ARegion *ar, int depth_write, floa if(uz > depth) continue; } - +#endif if(vos->mval[0]!=IS_CLIPPED) { glColor3fv(vos->col); BLF_draw_default((float)vos->mval[0]+vos->xoffs, (float)vos->mval[1], (depth_write)? 0.0f: 2.0f, vos->str); @@ -697,9 +775,7 @@ static void drawshadbuflimits(Lamp *la, float mat[][4]) { float sta[3], end[3], lavec[3]; - lavec[0]= -mat[2][0]; - lavec[1]= -mat[2][1]; - lavec[2]= -mat[2][2]; + negate_v3_v3(lavec, mat[2]); normalize_v3(lavec); sta[0]= mat[3][0]+ la->clipsta*lavec[0]; @@ -794,25 +870,17 @@ static void spotvolume(float *lvec, float *vvec, float inp) static void draw_spot_cone(Lamp *la, float x, float z) { - float vec[3]; - z= fabs(z); glBegin(GL_TRIANGLE_FAN); glVertex3f(0.0f, 0.0f, -x); if(la->mode & LA_SQUARE) { - vec[0]= z; - vec[1]= z; - vec[2]= 0.0; - - glVertex3fv(vec); - vec[1]= -z; - glVertex3fv(vec); - vec[0]= -z; - glVertex3fv(vec); - vec[1]= z; - glVertex3fv(vec); + glVertex3f(z, z, 0); + glVertex3f(-z, z, 0); + glVertex3f(-z, -z, 0); + glVertex3f(z, -z, 0); + glVertex3f(z, z, 0); } else { float angle; @@ -866,9 +934,6 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, float imat[4][4], curcol[4]; char col[4]; int drawcone= (dt>OB_WIRE && !(G.f & G_PICKSEL) && la->type == LA_SPOT && (la->mode & LA_SHOW_CONE)); - - if(G.f & G_RENDER_SHADOW) - return; if(drawcone && !v3d->transp) { /* in this case we need to draw delayed */ @@ -915,21 +980,23 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, /* Outer circle */ circrad = 3.0f*lampsize; + setlinestyle(3); + drawcircball(GL_LINE_LOOP, vec, circrad, imat); - } - else - circrad = 0.0f; - - setlinestyle(3); - /* draw dashed outer circle if shadow is on. remember some lamps can't have certain shadows! */ - if (la->type!=LA_HEMI) { - if ((la->mode & LA_SHAD_RAY) || - ((la->mode & LA_SHAD_BUF) && (la->type==LA_SPOT)) ) - { - drawcircball(GL_LINE_LOOP, vec, circrad + 3.0f*pixsize, imat); + /* draw dashed outer circle if shadow is on. remember some lamps can't have certain shadows! */ + if(la->type!=LA_HEMI) { + if( (la->mode & LA_SHAD_RAY) || + ((la->mode & LA_SHAD_BUF) && (la->type==LA_SPOT)) + ) { + drawcircball(GL_LINE_LOOP, vec, circrad + 3.0f*pixsize, imat); + } } } + else { + setlinestyle(3); + circrad = 0.0f; + } /* draw the pretty sun rays */ if(la->type==LA_SUN) { @@ -1002,17 +1069,20 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, /* draw the circle/square at the end of the cone */ glTranslatef(0.0, 0.0 , x); if(la->mode & LA_SQUARE) { - vvec[0]= fabs(z); - vvec[1]= fabs(z); - vvec[2]= 0.0; + float tvec[3]; + float z_abs= fabs(z); + + tvec[0]= tvec[1]= z_abs; + tvec[2]= 0.0; + glBegin(GL_LINE_LOOP); - glVertex3fv(vvec); - vvec[1]= -fabs(z); - glVertex3fv(vvec); - vvec[0]= -fabs(z); - glVertex3fv(vvec); - vvec[1]= fabs(z); - glVertex3fv(vvec); + glVertex3fv(tvec); + tvec[1]= -z_abs; /* neg */ + glVertex3fv(tvec); + tvec[0]= -z_abs; /* neg */ + glVertex3fv(tvec); + tvec[1]= z_abs; /* pos */ + glVertex3fv(tvec); glEnd(); } else circ(0.0, 0.0, fabs(z)); @@ -1029,6 +1099,22 @@ static void drawlamp(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, if(drawcone) draw_transp_spot_volume(la, x, z); + + /* draw clip start, useful for wide cones where its not obvious where the start is */ + glTranslatef(0.0, 0.0 , -x); /* reverse translation above */ + if(la->type==LA_SPOT && (la->mode & LA_SHAD_BUF) ) { + float lvec_clip[3]; + float vvec_clip[3]; + float clipsta_fac= la->clipsta / -x; + + interp_v3_v3v3(lvec_clip, vec, lvec, clipsta_fac); + interp_v3_v3v3(vvec_clip, vec, vvec, clipsta_fac); + + glBegin(GL_LINE_STRIP); + glVertex3fv(lvec_clip); + glVertex3fv(vvec_clip); + glEnd(); + } } else if ELEM(la->type, LA_HEMI, LA_SUN) { @@ -1166,9 +1252,6 @@ static void drawcamera(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob float nobmat[4][4], vec[8][4], fac, facx, facy, depth; int i; - if(G.f & G_RENDER_SHADOW) - return; - cam= ob->data; glDisable(GL_LIGHTING); @@ -1344,14 +1427,16 @@ static void drawlattice(Scene *scene, View3D *v3d, Object *ob) Lattice *lt= ob->data; DispList *dl; int u, v, w; - int use_wcol= 0; + int use_wcol= 0, is_edit= (lt->editlatt != NULL); /* now we default make displist, this will modifiers work for non animated case */ if(ob->disp.first==NULL) lattice_calc_modifiers(scene, ob); dl= find_displist(&ob->disp, DL_VERTS); - if(lt->editlatt) { + if(is_edit) { + lt= lt->editlatt; + cpack(0x004000); if(ob->defbase.first && lt->dvert) { @@ -1360,8 +1445,6 @@ static void drawlattice(Scene *scene, View3D *v3d, Object *ob) } } - if(lt->editlatt) lt= lt->editlatt; - glBegin(GL_LINES); for(w=0; w<lt->pntsw; w++) { int wxt = (w==0 || w==lt->pntsw-1); @@ -1391,7 +1474,7 @@ static void drawlattice(Scene *scene, View3D *v3d, Object *ob) if(use_wcol) glShadeModel(GL_FLAT); - if( ((Lattice *)ob->data)->editlatt ) { + if(is_edit) { if(v3d->zbuf) glDisable(GL_DEPTH_TEST); lattice_draw_verts(lt, dl, 0); @@ -1986,7 +2069,7 @@ static int draw_dm_creases__setDrawOptions(void *userData, int index) return 0; if (!BM_TestHFlag(eed, BM_HIDDEN) && *crease!=0.0) { - UI_ThemeColorBlend(TH_WIRE, TH_EDGE_SELECT, *crease); + UI_ThemeColorBlend(TH_WIRE, TH_EDGE_CREASE, *crease); return 1; } else { return 0; @@ -2096,7 +2179,7 @@ static void draw_em_fancy_verts(Scene *scene, View3D *v3d, Object *obedit, draw_dm_verts(em, cageDM, sel, eve_act); } - if( CHECK_OB_DRAWFACEDOT(scene, v3d, obedit->dt) ) { + if(check_ob_drawface_dot(scene, v3d, obedit->dt)) { glPointSize(fsize); glColor4ubv((GLubyte *)fcol); draw_dm_face_centers(em, cageDM, sel); @@ -2187,7 +2270,8 @@ static void draw_em_measure_stats(View3D *v3d, RegionView3D *rv3d, float area, col[3]; /* area of the face, color of the text to draw */ float grid= unit->system ? unit->scale_length : v3d->grid; int do_split= unit->flag & USER_UNIT_OPT_SPLIT; - if(G.f & (G_RENDER_OGL|G_RENDER_SHADOW)) + + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return; /* make the precision of the pronted value proportionate to the gridsize */ @@ -2430,7 +2514,7 @@ static void draw_em_fancy(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object else { if (cageDM!=finalDM) { UI_ThemeColorBlend(TH_WIRE, TH_BACK, 0.7); - finalDM->drawEdges(finalDM, 1); + finalDM->drawEdges(finalDM, 1, 0); } } @@ -2566,7 +2650,7 @@ static void draw_mesh_object_outline(View3D *v3d, Object *ob, DerivedMesh *dm) GPU_disable_material(); } else { - dm->drawEdges(dm, 0); + dm->drawEdges(dm, 0, 1); } glLineWidth(1.0); @@ -2610,7 +2694,8 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D if (ob==OBACT && paint_facesel_test(ob)) draw_wire = 0; if(dt==OB_BOUNDBOX) { - draw_bounding_volume(scene, ob); + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_WIRE)==0) + draw_bounding_volume(scene, ob); } else if(hasHaloMat || (totface==0 && totedge==0)) { glPointSize(1.5); @@ -2624,8 +2709,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D CHECK_OB_DRAWTEXTURE(v3d, dt)) { int faceselect= (ob==OBACT && paint_facesel_test(ob)); - - if ((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !(G.f&G_PICKSEL || paint_facesel_test(ob)) && !draw_wire) { + if ((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !(G.f&G_PICKSEL || paint_facesel_test(ob)) && !draw_wire) { draw_mesh_object_outline(v3d, ob, dm); } @@ -2649,7 +2733,8 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D else UI_ThemeColor(TH_WIRE); - dm->drawLooseEdges(dm); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + dm->drawLooseEdges(dm); } } else if(dt==OB_SOLID) { @@ -2667,7 +2752,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D glEnable(GL_LINE_STIPPLE); glLineStipple(1, 0x8888); - dm->drawEdges(dm, 1); + dm->drawEdges(dm, 1, 0); bglPolygonOffset(rv3d->dist, 0.0); glDepthMask(1); @@ -2680,7 +2765,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D else { Paint *p; - if((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) + if((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !draw_wire && !ob->sculpt) draw_mesh_object_outline(v3d, ob, dm); glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, me->flag & ME_TWOSIDED ); @@ -2694,9 +2779,11 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D int fast= (p->flags & PAINT_FAST_NAVIGATE) && (rv3d->rflag & RV3D_NAVIGATING); if(ob->sculpt->partial_redraw) { - sculpt_get_redraw_planes(planes, ar, rv3d, ob); - fpl = planes; - ob->sculpt->partial_redraw = 0; + if(ar->do_draw & RGN_DRAW_PARTIAL) { + sculpt_get_redraw_planes(planes, ar, rv3d, ob); + fpl = planes; + ob->sculpt->partial_redraw = 0; + } } dm->drawFacesSolid(dm, fpl, fast, GPU_enable_material); @@ -2714,7 +2801,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } else { UI_ThemeColor(TH_WIRE); } - if(!ob->sculpt) + if(!ob->sculpt && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0) dm->drawLooseEdges(dm); } } @@ -2764,7 +2851,7 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D dm= mesh_get_derived_final(scene, ob, v3d->customdata_mask); } - if ((v3d->flag&V3D_SELECT_OUTLINE) && (base->flag&SELECT) && !draw_wire) { + if ((v3d->flag&V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && (base->flag&SELECT) && !draw_wire) { draw_mesh_object_outline(v3d, ob, dm); } @@ -2781,7 +2868,8 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D } else { UI_ThemeColor(TH_WIRE); } - dm->drawLooseEdges(dm); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + dm->drawLooseEdges(dm); } } @@ -2835,8 +2923,9 @@ static void draw_mesh_fancy(Scene *scene, ARegion *ar, View3D *v3d, RegionView3D glDepthMask(0); // disable write in zbuffer, selected edge wires show better } - dm->drawEdges(dm, (dt==OB_WIRE || totface==0)); - + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_SOLID)==0) + dm->drawEdges(dm, (dt==OB_WIRE || totface==0), me->drawflag & ME_ALLEDGES); + if (dt!=OB_WIRE && draw_wire==2) { glDepthMask(1); bglPolygonOffset(rv3d->dist, 0.0); @@ -3053,8 +3142,7 @@ static void drawDispListsolid(ListBase *lb, Object *ob, int glsl) case DL_POLY: if(ob->type==OB_SURF) { int nr; - - UI_ThemeColor(TH_WIRE); + glDisable(GL_LIGHTING); /* for some reason glDrawArrays crashes here in half of the platforms (not osx) */ @@ -3176,6 +3264,41 @@ static void drawDispListshaded(ListBase *lb, Object *ob) glDisableClientState(GL_COLOR_ARRAY); } +static void drawCurveDMWired(Object *ob) +{ + DerivedMesh *dm = ob->derivedFinal; + dm->drawEdges (dm, 1, 0); +} + +/* return 1 when nothing was drawn */ +static int drawCurveDerivedMesh(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt) +{ + Object *ob= base->object; + DerivedMesh *dm = ob->derivedFinal; + + if (!dm) { + return 1; + } + + if(dt>OB_WIRE && dm->getNumFaces(dm)) { + int glsl = draw_glsl_material(scene, ob, v3d, dt); + GPU_begin_object_materials(v3d, rv3d, scene, ob, glsl, NULL); + + if (!glsl) + glLightModeli(GL_LIGHT_MODEL_TWO_SIDE, 0); + + glEnable(GL_LIGHTING); + dm->drawFacesSolid(dm, NULL, 0, GPU_enable_material); + glDisable(GL_LIGHTING); + GPU_end_object_materials(); + } else { + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_SOLID)==0) + drawCurveDMWired (ob); + } + + return 0; +} + /* returns 1 when nothing was drawn */ static int drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, int dt) { @@ -3187,6 +3310,10 @@ static int drawDispList(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *bas solid= (dt > OB_WIRE); + if (drawCurveDerivedMesh(scene, v3d, rv3d, base, dt) == 0) { + return 0; + } + switch(ob->type) { case OB_FONT: case OB_CURVE: @@ -3547,12 +3674,11 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv select=1; } + psys_update_children(&sim); + psys->flag|=PSYS_DRAWING; - if(part->type==PART_HAIR && !psys->childcache) - totchild=0; - else - totchild=psys->totchild*part->disp/100; + totchild=psys->totchild*part->disp/100; ma= give_current_material(ob,part->omat); @@ -3587,11 +3713,18 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv totpart=psys->totpart; - //if(part->flag&PART_GLOB_TIME) cfra=bsystem_time(scene, 0, (float)CFRA, 0.0f); - if(draw_as==PART_DRAW_PATH && psys->pathcache==NULL && psys->childcache==NULL) - draw_as=PART_DRAW_DOT; + if(draw_as==PART_DRAW_PATH) { + if(psys->pathcache==NULL && psys->childcache==NULL) + psys_update_path_cache(&sim, cfra); + + /* can't create pathcache for some reason*/ + if(psys->pathcache==NULL && psys->childcache==NULL) + draw_as=PART_DRAW_DOT; + else if(psys->childcache==NULL) + totchild = 0; + } /* 3. */ switch(draw_as){ @@ -3895,7 +4028,8 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv setlinestyle(0); } - if((part->draw & PART_DRAW_NUM || part->draw & PART_DRAW_HEALTH) && !(G.f & G_RENDER_SHADOW)){ + + if((part->draw & PART_DRAW_NUM || part->draw & PART_DRAW_HEALTH) && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0){ float vec_txt[3]; char *val_pos= val; val[0]= '\0'; @@ -3924,7 +4058,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv float *cd2=0,*cdata2=0; /* setup gl flags */ - if(ob_dt > OB_WIRE) { + if (1) { //ob_dt > OB_WIRE) { glEnableClientState(GL_NORMAL_ARRAY); if(part->draw&PART_DRAW_MAT_COL) @@ -3934,15 +4068,15 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv glColorMaterial(GL_FRONT_AND_BACK, GL_DIFFUSE); glEnable(GL_COLOR_MATERIAL); } - else { + /*else { glDisableClientState(GL_NORMAL_ARRAY); glDisable(GL_COLOR_MATERIAL); glDisable(GL_LIGHTING); UI_ThemeColor(TH_WIRE); - } + }*/ - if(totchild && (part->draw&PART_DRAW_PARENT)==0) + if(totchild && ((part->draw&PART_DRAW_PARENT)==0 || psys_in_edit_mode(scene, psys))) totpart=0; else if(psys->pathcache==NULL) totpart=0; @@ -3954,7 +4088,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv if(path->steps > 0) { glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co); - if(ob_dt > OB_WIRE) { + if(1) { //ob_dt > OB_WIRE) { glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel); if(part->draw&PART_DRAW_MAT_COL) glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col); @@ -3970,7 +4104,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv path=cache[a]; glVertexPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->co); - if(ob_dt > OB_WIRE) { + if(1) { //ob_dt > OB_WIRE) { glNormalPointer(GL_FLOAT, sizeof(ParticleCacheKey), path->vel); if(part->draw&PART_DRAW_MAT_COL) glColorPointer(3, GL_FLOAT, sizeof(ParticleCacheKey), path->col); @@ -3981,7 +4115,7 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv /* restore & clean up */ - if(ob_dt > OB_WIRE) { + if(1) { //ob_dt > OB_WIRE) { if(part->draw&PART_DRAW_MAT_COL) glDisable(GL_COLOR_ARRAY); glDisable(GL_COLOR_MATERIAL); @@ -3992,6 +4126,20 @@ static void draw_new_particle_system(Scene *scene, View3D *v3d, RegionView3D *rv cd2=cdata2=0; glLineWidth(1.0f); + + if((part->draw & PART_DRAW_NUM) && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0){ + cache=psys->pathcache; + + for(a=0, pa=psys->particles; a<totpart; a++, pa++){ + float vec_txt[3]; + val[0]= '\0'; + + sprintf(val, "%i", a); + /* use worldspace beause object matrix is alredy applied */ + mul_v3_m4v3(vec_txt, ob->imat, cache[a]->co); + view3d_cached_text_draw_add(vec_txt[0], vec_txt[1], vec_txt[2], val, 10, V3D_CACHE_TEXT_WORLDSPACE); + } + } } else if(pdd && ELEM(draw_as, 0, PART_DRAW_CIRC)==0){ glDisableClientState(GL_COLOR_ARRAY); @@ -4414,23 +4562,21 @@ static void ob_draw_RE_motion(float com[3],float rotscale[3][3],float itw,float } /*place to add drawers */ -unsigned int nurbcol[8]= { - 0, 0x9090, 0x409030, 0x603080, 0, 0x40fff0, 0x40c033, 0xA090F0 }; static void tekenhandlesN(Nurb *nu, short sel, short hide_handles) { BezTriple *bezt; float *fp; - unsigned int *col; + int basecol; int a; if(nu->hide || hide_handles) return; - + glBegin(GL_LINES); if(nu->type == CU_BEZIER) { - if(sel) col= nurbcol+4; - else col= nurbcol; + if(sel) basecol= TH_HANDLE_SEL_FREE; + else basecol= TH_HANDLE_FREE; bezt= nu->bezt; a= nu->pntsu; @@ -4438,26 +4584,26 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles) if(bezt->hide==0) { if( (bezt->f2 & SELECT)==sel) { fp= bezt->vec[0]; - - cpack(col[(int)bezt->h1]); + + UI_ThemeColor(basecol + bezt->h1); glVertex3fv(fp); glVertex3fv(fp+3); - cpack(col[(int)bezt->h2]); + UI_ThemeColor(basecol + bezt->h2); glVertex3fv(fp+3); glVertex3fv(fp+6); } else if( (bezt->f1 & SELECT)==sel) { fp= bezt->vec[0]; - - cpack(col[(int)bezt->h1]); + + UI_ThemeColor(basecol + bezt->h1); glVertex3fv(fp); glVertex3fv(fp+3); } else if( (bezt->f3 & SELECT)==sel) { fp= bezt->vec[1]; - - cpack(col[(int)bezt->h2]); + + UI_ThemeColor(basecol + bezt->h2); glVertex3fv(fp); glVertex3fv(fp+3); } @@ -4468,17 +4614,54 @@ static void tekenhandlesN(Nurb *nu, short sel, short hide_handles) glEnd(); } -static void tekenvertsN(Nurb *nu, short sel, short hide_handles) +static void tekenhandlesN_active(Nurb *nu) +{ + BezTriple *bezt; + float *fp; + int a; + + if(nu->hide) return; + + UI_ThemeColor(TH_ACTIVE_SPLINE); + glLineWidth(2); + + glBegin(GL_LINES); + + if(nu->type == CU_BEZIER) { + bezt= nu->bezt; + a= nu->pntsu; + while(a--) { + if(bezt->hide==0) { + fp= bezt->vec[0]; + + glVertex3fv(fp); + glVertex3fv(fp+3); + + glVertex3fv(fp+3); + glVertex3fv(fp+6); + } + bezt++; + } + } + glEnd(); + + glColor3ub(0,0,0); + glLineWidth(1); +} + +static void tekenvertsN(Nurb *nu, short sel, short hide_handles, void *lastsel) { BezTriple *bezt; BPoint *bp; float size; - int a; + int a, color; if(nu->hide) return; - if(sel) UI_ThemeColor(TH_VERTEX_SELECT); - else UI_ThemeColor(TH_VERTEX); + if(sel) color= TH_VERTEX_SELECT; + else color= TH_VERTEX; + + UI_ThemeColor(color); size= UI_GetThemeValuef(TH_VERTEX_SIZE); glPointSize(size); @@ -4491,7 +4674,17 @@ static void tekenvertsN(Nurb *nu, short sel, short hide_handles) a= nu->pntsu; while(a--) { if(bezt->hide==0) { - if (hide_handles) { + if (sel == 1 && bezt == lastsel) { + UI_ThemeColor(TH_LASTSEL_POINT); + bglVertex3fv(bezt->vec[1]); + + if (!hide_handles) { + if(bezt->f1 & SELECT) bglVertex3fv(bezt->vec[0]); + if(bezt->f3 & SELECT) bglVertex3fv(bezt->vec[2]); + } + + UI_ThemeColor(color); + } else if (hide_handles) { if((bezt->f2 & SELECT)==sel) bglVertex3fv(bezt->vec[1]); } else { if((bezt->f1 & SELECT)==sel) bglVertex3fv(bezt->vec[0]); @@ -4507,7 +4700,13 @@ static void tekenvertsN(Nurb *nu, short sel, short hide_handles) a= nu->pntsu*nu->pntsv; while(a--) { if(bp->hide==0) { - if((bp->f1 & SELECT)==sel) bglVertex3fv(bp->vec); + if (bp == lastsel) { + UI_ThemeColor(TH_LASTSEL_POINT); + bglVertex3fv(bp->vec); + UI_ThemeColor(color); + } else { + if((bp->f1 & SELECT)==sel) bglVertex3fv(bp->vec); + } } bp++; } @@ -4517,18 +4716,94 @@ static void tekenvertsN(Nurb *nu, short sel, short hide_handles) glPointSize(1.0); } +static void editnurb_draw_active_poly(Nurb *nu) +{ + BPoint *bp; + int a, b; + + UI_ThemeColor(TH_ACTIVE_SPLINE); + glLineWidth(2); + + bp= nu->bp; + for(b=0; b<nu->pntsv; b++) { + if(nu->flagu & 1) glBegin(GL_LINE_LOOP); + else glBegin(GL_LINE_STRIP); + + for(a=0; a<nu->pntsu; a++, bp++) { + glVertex3fv(bp->vec); + } + + glEnd(); + } + + glColor3ub(0,0,0); + glLineWidth(1); +} + +static void editnurb_draw_active_nurbs(Nurb *nu) +{ + BPoint *bp, *bp1; + int a, b, ofs; + + UI_ThemeColor(TH_ACTIVE_SPLINE); + glLineWidth(2); + + glBegin(GL_LINES); + bp= nu->bp; + for(b=0; b<nu->pntsv; b++) { + bp1= bp; + bp++; + + for(a=nu->pntsu-1; a>0; a--, bp++) { + if(bp->hide==0 && bp1->hide==0) { + glVertex3fv(bp->vec); + glVertex3fv(bp1->vec); + } + bp1= bp; + } + } + + if(nu->pntsv > 1) { /* surface */ + + ofs= nu->pntsu; + for(b=0; b<nu->pntsu; b++) { + bp1= nu->bp+b; + bp= bp1+ofs; + for(a=nu->pntsv-1; a>0; a--, bp+=ofs) { + if(bp->hide==0 && bp1->hide==0) { + glVertex3fv(bp->vec); + glVertex3fv(bp1->vec); + } + bp1= bp; + } + } + } + + glEnd(); + + glColor3ub(0,0,0); + glLineWidth(1); +} + static void draw_editnurb(Object *ob, Nurb *nurb, int sel) { Nurb *nu; BPoint *bp, *bp1; - int a, b, ofs; - + int a, b, ofs, index; + Curve *cu= (Curve*)ob->data; + + index= 0; nu= nurb; while(nu) { if(nu->hide==0) { switch(nu->type) { case CU_POLY: - cpack(nurbcol[3]); + if (!sel && index== cu->actnu) { + /* we should draw active spline highlight below everything */ + editnurb_draw_active_poly(nu); + } + + UI_ThemeColor(TH_NURB_ULINE); bp= nu->bp; for(b=0; b<nu->pntsv; b++) { if(nu->flagu & 1) glBegin(GL_LINE_LOOP); @@ -4542,6 +4817,10 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) } break; case CU_NURBS: + if (!sel && index== cu->actnu) { + /* we should draw active spline highlight below everything */ + editnurb_draw_active_nurbs(nu); + } bp= nu->bp; for(b=0; b<nu->pntsv; b++) { @@ -4551,7 +4830,7 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) if(bp->hide==0 && bp1->hide==0) { if(sel) { if( (bp->f1 & SELECT) && ( bp1->f1 & SELECT ) ) { - cpack(nurbcol[5]); + UI_ThemeColor(TH_NURB_SEL_ULINE); glBegin(GL_LINE_STRIP); glVertex3fv(bp->vec); @@ -4562,7 +4841,7 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) else { if( (bp->f1 & SELECT) && ( bp1->f1 & SELECT) ); else { - cpack(nurbcol[1]); + UI_ThemeColor(TH_NURB_ULINE); glBegin(GL_LINE_STRIP); glVertex3fv(bp->vec); @@ -4584,7 +4863,7 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) if(bp->hide==0 && bp1->hide==0) { if(sel) { if( (bp->f1 & SELECT) && ( bp1->f1 & SELECT) ) { - cpack(nurbcol[7]); + UI_ThemeColor(TH_NURB_SEL_VLINE); glBegin(GL_LINE_STRIP); glVertex3fv(bp->vec); @@ -4595,7 +4874,7 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) else { if( (bp->f1 & SELECT) && ( bp1->f1 & SELECT) ); else { - cpack(nurbcol[3]); + UI_ThemeColor(TH_NURB_VLINE); glBegin(GL_LINE_STRIP); glVertex3fv(bp->vec); @@ -4612,6 +4891,8 @@ static void draw_editnurb(Object *ob, Nurb *nurb, int sel) break; } } + + ++index; nu= nu->next; } } @@ -4624,6 +4905,7 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, Nurb *nu; BevList *bl; short hide_handles = (cu->drawflag & CU_HIDE_HANDLES); + int index; // XXX retopo_matrix_update(v3d); @@ -4633,11 +4915,15 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, if(v3d->zbuf) glDisable(GL_DEPTH_TEST); - /* first non-selected handles */ + /* first non-selected and active handles */ + index= 0; for(nu=nurb; nu; nu=nu->next) { if(nu->type == CU_BEZIER) { + if (index == cu->actnu && !hide_handles) + tekenhandlesN_active(nu); tekenhandlesN(nu, 0, hide_handles); } + ++index; } draw_editnurb(ob, nurb, 0); draw_editnurb(ob, nurb, 1); @@ -4645,7 +4931,7 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, for(nu=nurb; nu; nu=nu->next) { if(nu->type == CU_BEZIER && (cu->drawflag & CU_HIDE_HANDLES)==0) tekenhandlesN(nu, 1, hide_handles); - tekenvertsN(nu, 0, hide_handles); + tekenvertsN(nu, 0, hide_handles, NULL); } if(v3d->zbuf) glEnable(GL_DEPTH_TEST); @@ -4667,8 +4953,8 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, mul_qt_v3(bevp->quat, vec_a); mul_qt_v3(bevp->quat, vec_b); - add_v3_v3v3(vec_a, vec_a, bevp->vec); - add_v3_v3v3(vec_b, vec_b, bevp->vec); + add_v3_v3(vec_a, bevp->vec); + add_v3_v3(vec_b, bevp->vec); VECSUBFAC(vec_a, vec_a, bevp->dir, fac); VECSUBFAC(vec_b, vec_b, bevp->dir, fac); @@ -4688,7 +4974,7 @@ static void drawnurb(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, if(v3d->zbuf) glDisable(GL_DEPTH_TEST); for(nu=nurb; nu; nu=nu->next) { - tekenvertsN(nu, 1, hide_handles); + tekenvertsN(nu, 1, hide_handles, cu->lastsel); } if(v3d->zbuf) glEnable(GL_DEPTH_TEST); @@ -4935,6 +5221,8 @@ static int drawmball(Scene *scene, View3D *v3d, RegionView3D *rv3d, Base *base, } if(ml==NULL) return 1; + + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return 0; /* in case solid draw, reset wire colors */ if(ob->flag & SELECT) { @@ -4986,9 +5274,6 @@ static void draw_forcefield(Scene *scene, Object *ob, RegionView3D *rv3d) int curcol; float size; - if(G.f & G_RENDER_SHADOW) - return; - /* XXX why? */ if(ob!=scene->obedit && (ob->flag & SELECT)) { if(ob==OBACT) curcol= TH_ACTIVE; @@ -5077,13 +5362,13 @@ static void draw_forcefield(Scene *scene, Object *ob, RegionView3D *rv3d) /*path end*/ setlinestyle(3); - where_on_path(ob, 1.0f, guidevec1, guidevec2, NULL, NULL); + where_on_path(ob, 1.0f, guidevec1, guidevec2, NULL, NULL, NULL); UI_ThemeColorBlend(curcol, TH_BACK, 0.5); drawcircball(GL_LINE_LOOP, guidevec1, mindist, imat); /*path beginning*/ setlinestyle(0); - where_on_path(ob, 0.0f, guidevec1, guidevec2, NULL, NULL); + where_on_path(ob, 0.0f, guidevec1, guidevec2, NULL, NULL, NULL); UI_ThemeColorBlend(curcol, TH_BACK, 0.5); drawcircball(GL_LINE_LOOP, guidevec1, mindist, imat); @@ -5236,7 +5521,7 @@ static void draw_bounding_volume(Scene *scene, Object *ob) bb= mesh_get_bb(ob); } else if ELEM3(ob->type, OB_CURVE, OB_SURF, OB_FONT) { - bb= ( (Curve *)ob->data )->bb; + bb= ob->bb ? ob->bb : ( (Curve *)ob->data )->bb; } else if(ob->type==OB_MBALL) { bb= ob->bb; @@ -5303,9 +5588,22 @@ static void drawSolidSelect(Scene *scene, View3D *v3d, ARegion *ar, Base *base) if(ELEM3(ob->type, OB_FONT,OB_CURVE, OB_SURF)) { Curve *cu = ob->data; - if (displist_has_faces(&cu->disp) && boundbox_clip(rv3d, ob->obmat, cu->bb)) { + DerivedMesh *dm = ob->derivedFinal; + int hasfaces= 0; + + if (dm) { + hasfaces= dm->getNumFaces(dm); + } else { + hasfaces= displist_has_faces(&cu->disp); + } + + if (hasfaces && boundbox_clip(rv3d, ob->obmat, ob->bb ? ob->bb : cu->bb)) { draw_index_wire= 0; - drawDispListwire(&cu->disp); + if (dm) { + draw_mesh_object_outline(v3d, ob, dm); + } else { + drawDispListwire(&cu->disp); + } draw_index_wire= 1; } } else if (ob->type==OB_MBALL) { @@ -5350,10 +5648,16 @@ static void drawWireExtra(Scene *scene, RegionView3D *rv3d, Object *ob) if (ELEM3(ob->type, OB_FONT, OB_CURVE, OB_SURF)) { Curve *cu = ob->data; - if (boundbox_clip(rv3d, ob->obmat, cu->bb)) { + if (boundbox_clip(rv3d, ob->obmat, ob->bb ? ob->bb : cu->bb)) { if (ob->type==OB_CURVE) draw_index_wire= 0; - drawDispListwire(&cu->disp); + + if (ob->derivedFinal) { + drawCurveDMWired(ob); + } else { + drawDispListwire(&cu->disp); + } + if (ob->type==OB_CURVE) draw_index_wire= 1; } @@ -5404,9 +5708,6 @@ void drawRBpivot(bRigidBodyJointConstraint *data) float eu[3]= {radsPerDeg*data->axX, radsPerDeg*data->axY, radsPerDeg*data->axZ}; float mat[4][4]; - if(G.f & G_RENDER_SHADOW) - return; - eul_to_mat4(mat,eu); glLineWidth (4.0f); setlinestyle(2); @@ -5457,6 +5758,9 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if (ob!=scene->obedit) { if (ob->restrictflag & OB_RESTRICT_VIEW) return; + if ((ob->restrictflag & OB_RESTRICT_RENDER) && + (v3d->flag2 & V3D_RENDER_OVERRIDE)) + return; } /* XXX particles are not safe for simultaneous threaded render */ @@ -5672,7 +5976,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } /* draw outline for selected solid objects, mesh does itself */ - if((v3d->flag & V3D_SELECT_OUTLINE) && ob->type!=OB_MESH) { + if((v3d->flag & V3D_SELECT_OUTLINE) && ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) && ob->type!=OB_MESH) { if(dt>OB_WIRE && dt<OB_TEXTURE && (ob->mode & OB_MODE_EDIT)==0 && (flag & DRAW_SCENESET)==0) { if (!(ob->dtx&OB_DRAWWIRE) && (ob->flag&SELECT) && !(flag&DRAW_PICKING)) { @@ -5771,9 +6075,11 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) set_inverted_drawing(0); } } - else if(dt==OB_BOUNDBOX) - draw_bounding_volume(scene, ob); - else if(boundbox_clip(rv3d, ob->obmat, cu->bb)) + else if(dt==OB_BOUNDBOX) { + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_WIRE)==0) + draw_bounding_volume(scene, ob); + } + else if(boundbox_clip(rv3d, ob->obmat, ob->bb ? ob->bb : cu->bb)) empty_object= drawDispList(scene, v3d, rv3d, base, dt); break; @@ -5784,14 +6090,16 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(cu->editnurb) { drawnurb(scene, v3d, rv3d, base, cu->editnurb->first, dt); } - else if(dt==OB_BOUNDBOX) - draw_bounding_volume(scene, ob); - else if(boundbox_clip(rv3d, ob->obmat, cu->bb)) { + else if(dt==OB_BOUNDBOX) { + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_WIRE)==0) + draw_bounding_volume(scene, ob); + } + else if(boundbox_clip(rv3d, ob->obmat, ob->bb ? ob->bb : cu->bb)) { empty_object= drawDispList(scene, v3d, rv3d, base, dt); if(cu->path) curve_draw_speed(scene, ob); - } + } break; case OB_MBALL: { @@ -5799,51 +6107,69 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(mb->editelems) drawmball(scene, v3d, rv3d, base, dt); - else if(dt==OB_BOUNDBOX) - draw_bounding_volume(scene, ob); + else if(dt==OB_BOUNDBOX) { + if((v3d->flag2 & V3D_RENDER_OVERRIDE && v3d->drawtype >= OB_WIRE)==0) + draw_bounding_volume(scene, ob); + } else empty_object= drawmball(scene, v3d, rv3d, base, dt); break; } case OB_EMPTY: - drawaxes(ob->empty_drawsize, flag, ob->empty_drawtype); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + drawaxes(rv3d, rv3d->viewmatob, ob->empty_drawsize, flag, ob->empty_drawtype); break; case OB_LAMP: - drawlamp(scene, v3d, rv3d, base, dt, flag); - if(dtx || (base->flag & SELECT)) glMultMatrixf(ob->obmat); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawlamp(scene, v3d, rv3d, base, dt, flag); + if(dtx || (base->flag & SELECT)) glMultMatrixf(ob->obmat); + } break; case OB_CAMERA: - drawcamera(scene, v3d, rv3d, ob, flag); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0 || (rv3d->persp==RV3D_CAMOB && v3d->camera==ob)) /* special exception for active camera */ + drawcamera(scene, v3d, rv3d, ob, flag); break; case OB_LATTICE: - drawlattice(scene, v3d, ob); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawlattice(scene, v3d, ob); + } break; case OB_ARMATURE: - if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material - empty_object= draw_armature(scene, v3d, ar, base, dt, flag); - if(dt>OB_WIRE) GPU_disable_material(); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + if(dt>OB_WIRE) GPU_enable_material(0, NULL); // we use default material + empty_object= draw_armature(scene, v3d, ar, base, dt, flag); + if(dt>OB_WIRE) GPU_disable_material(); + } break; default: - drawaxes(1.0, flag, OB_ARROWS); + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + drawaxes(rv3d, rv3d->viewmatob, 1.0, flag, OB_ARROWS); + } } - if(ob->soft /*&& flag & OB_SBMOTION*/){ - float mrt[3][3],msc[3][3],mtr[3][3]; - SoftBody *sb = 0; - float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f; - if ((sb= ob->soft)){ - if(sb->solverflags & SBSO_ESTIMATEIPO){ - glLoadMatrixf(rv3d->viewmat); - copy_m3_m3(msc,sb->lscale); - copy_m3_m3(mrt,sb->lrot); - mul_m3_m3m3(mtr,mrt,msc); - ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize); - glMultMatrixf(ob->obmat); + if((v3d->flag2 & V3D_RENDER_OVERRIDE) == 0) { + + if(ob->soft /*&& flag & OB_SBMOTION*/){ + float mrt[3][3],msc[3][3],mtr[3][3]; + SoftBody *sb = 0; + float tipw = 0.5f, tiph = 0.5f,drawsize = 4.0f; + if ((sb= ob->soft)){ + if(sb->solverflags & SBSO_ESTIMATEIPO){ + + glLoadMatrixf(rv3d->viewmat); + copy_m3_m3(msc,sb->lscale); + copy_m3_m3(mrt,sb->lrot); + mul_m3_m3m3(mtr,mrt,msc); + ob_draw_RE_motion(sb->lcom,mtr,tipw,tiph,drawsize); + glMultMatrixf(ob->obmat); + } } } - } - if(ob->pd && ob->pd->forcefield) draw_forcefield(scene, ob, rv3d); + if(ob->pd && ob->pd->forcefield) { + draw_forcefield(scene, ob, rv3d); + } + } /* code for new particle system */ if( (warning_recursive==0) && @@ -5852,7 +6178,6 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) (ob!=scene->obedit) ) { ParticleSystem *psys; - PTCacheEdit *edit = PE_get_current(scene, ob); if(col || (ob->flag & SELECT)) cpack(0xFFFFFF); /* for visibility, also while wpaint */ //glDepthMask(GL_FALSE); @@ -5863,9 +6188,11 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) for(psys=ob->particlesystem.first; psys; psys=psys->next) { /* run this so that possible child particles get cached */ - if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) + if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) { + PTCacheEdit *edit = PE_create_current(scene, ob); if(edit && edit->psys == psys) draw_update_ptcache_edit(scene, ob, edit); + } draw_new_particle_system(scene, v3d, rv3d, base, psys, dt); } @@ -5885,7 +6212,7 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) ) { if(ob->mode & OB_MODE_PARTICLE_EDIT && ob==OBACT) { - PTCacheEdit *edit = PE_get_current(scene, ob); + PTCacheEdit *edit = PE_create_current(scene, ob); if(edit) { glLoadMatrixf(rv3d->viewmat); draw_ptcache_edit(scene, v3d, rv3d, ob, edit, dt); @@ -5999,7 +6326,8 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) } } - { + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + bConstraint *con; for(con=ob->constraints.first; con; con= con->next) { @@ -6010,27 +6338,31 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) drawRBpivot(data); } } - } - /* draw extra: after normal draw because of makeDispList */ - if(dtx && !(G.f & (G_RENDER_OGL|G_RENDER_SHADOW))) { - if(dtx & OB_AXIS) { - drawaxes(1.0f, flag, OB_ARROWS); - } - if(dtx & OB_BOUNDBOX) draw_bounding_volume(scene, ob); - if(dtx & OB_TEXSPACE) drawtexspace(ob); - if(dtx & OB_DRAWNAME) { - /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */ - /* but, we also dont draw names for sets or duplicators */ - if(flag == 0) { - view3d_cached_text_draw_add(0.0f, 0.0f, 0.0f, ob->id.name+2, 10, 0); + /* draw extra: after normal draw because of makeDispList */ + if(dtx && (G.f & G_RENDER_OGL)==0) { + + if(dtx & OB_AXIS) { + drawaxes(rv3d, rv3d->viewmatob, 1.0f, flag, OB_ARROWS); + } + if(dtx & OB_BOUNDBOX) { + if((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) + draw_bounding_volume(scene, ob); + } + if(dtx & OB_TEXSPACE) drawtexspace(ob); + if(dtx & OB_DRAWNAME) { + /* patch for several 3d cards (IBM mostly) that crash on glSelect with text drawing */ + /* but, we also dont draw names for sets or duplicators */ + if(flag == 0) { + view3d_cached_text_draw_add(0.0f, 0.0f, 0.0f, ob->id.name+2, 10, 0); + } } + /*if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);*/ + if((dtx & OB_DRAWWIRE) && dt>=OB_SOLID) drawWireExtra(scene, rv3d, ob); } - /*if(dtx & OB_DRAWIMAGE) drawDispListwire(&ob->disp);*/ - if((dtx & OB_DRAWWIRE) && dt>=OB_SOLID) drawWireExtra(scene, rv3d, ob); } - if(dt<OB_SHADED) { + if(dt<OB_SHADED && (v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { if((ob->gameflag & OB_DYNAMIC) || ((ob->gameflag & OB_BOUNDS) && (ob->boundtype == OB_BOUND_SPHERE))) { float imat[4][4], vec[3]; @@ -6053,13 +6385,15 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) if(warning_recursive) return; if(base->flag & OB_FROMDUPLI) return; - if(G.f & G_RENDER_SHADOW) return; + if(v3d->flag2 & V3D_RENDER_OVERRIDE) return; /* object centers, need to be drawn in viewmat space for speed, but OK for picking select */ if(ob!=OBACT || !(ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT))) { int do_draw_center= -1; /* defines below are zero or positive... */ - if((scene->basact)==base) + if(v3d->flag2 & V3D_RENDER_OVERRIDE) { + /* dont draw */ + } else if((scene->basact)==base) do_draw_center= ACTIVE; else if(base->flag & SELECT) do_draw_center= SELECT; @@ -6076,15 +6410,15 @@ void draw_object(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int flag) else if((flag & DRAW_CONSTCOLOR)==0) { /* we don't draw centers for duplicators and sets */ if(U.obcenter_dia > 0) { - /* check > 0 otherwise grease pencil can draw into the circle select which is annoying. */ - drawcentercircle(v3d, rv3d, ob->obmat[3], do_draw_center, ob->id.lib || ob->id.us>1); + /* check > 0 otherwise grease pencil can draw into the circle select which is annoying. */ + drawcentercircle(v3d, rv3d, ob->obmat[3], do_draw_center, ob->id.lib || ob->id.us>1); } } } } /* not for sets, duplicators or picking */ - if(flag==0 && (!(v3d->flag & V3D_HIDE_HELPLINES))) { + if(flag==0 && (v3d->flag & V3D_HIDE_HELPLINES)== 0 && (v3d->flag2 & V3D_RENDER_OVERRIDE)== 0) { ListBase *list; /* draw hook center and offset line */ @@ -6225,7 +6559,7 @@ static void bbs_mesh_solid_EM(BMEditMesh *em, Scene *scene, View3D *v3d, ptrs[1] = (void*)(intptr_t) 1; dm->drawMappedFaces(dm, bbs_mesh_solid__setSolidDrawOptions, ptrs, 0); - if( CHECK_OB_DRAWFACEDOT(scene, v3d, ob->dt) ) { + if(check_ob_drawface_dot(scene, v3d, ob->dt)) { glPointSize(UI_GetThemeValuef(TH_FACEDOT_SIZE)); bglBegin(GL_POINTS); @@ -6345,9 +6679,9 @@ static void draw_object_mesh_instance(Scene *scene, View3D *v3d, RegionView3D *r if(dt<=OB_WIRE) { if(dm) - dm->drawEdges(dm, 1); + dm->drawEdges(dm, 1, 0); else if(edm) - edm->drawEdges(edm, 1); + edm->drawEdges(edm, 1, 0); } else { if(outline) @@ -6391,7 +6725,7 @@ void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object draw_object_mesh_instance(scene, v3d, rv3d, ob, dt, outline); break; case OB_EMPTY: - drawaxes(ob->empty_drawsize, 0, ob->empty_drawtype); + drawaxes(rv3d, rv3d->viewmatob, ob->empty_drawsize, 0, ob->empty_drawtype); break; } } diff --git a/source/blender/editors/space_view3d/drawvolume.c b/source/blender/editors/space_view3d/drawvolume.c index 004d4a022f6..420f2d77fed 100644 --- a/source/blender/editors/space_view3d/drawvolume.c +++ b/source/blender/editors/space_view3d/drawvolume.c @@ -29,41 +29,15 @@ #include <string.h> #include <math.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #include "MEM_guardedalloc.h" -#include "IMB_imbuf.h" - - - - -#include "DNA_armature_types.h" -#include "DNA_boid_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_constraint_types.h" // for drawing constraint -#include "DNA_effect_types.h" -#include "DNA_lamp_types.h" -#include "DNA_lattice_types.h" -#include "DNA_material_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_meta_types.h" -#include "DNA_modifier_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" -#include "DNA_object_fluidsim.h" -#include "DNA_particle_types.h" -#include "DNA_space_types.h" + + + + #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_smoke_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" -#include "DNA_world_types.h" #include "BLI_blenlib.h" #include "BLI_math.h" @@ -99,23 +73,13 @@ #include "BIF_gl.h" #include "BIF_glutil.h" -#include "GPU_draw.h" -#include "GPU_material.h" #include "GPU_extensions.h" #include "ED_mesh.h" -#include "ED_particle.h" -#include "ED_screen.h" -#include "ED_types.h" -#include "ED_util.h" -#include "UI_resources.h" -#include "UI_interface_icons.h" -#include "WM_api.h" #include "BLF_api.h" -#include "GPU_extensions.h" #include "view3d_intern.h" // own include @@ -248,7 +212,7 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture {{-1.0f, 1.0f, -1.0f}, {2.0f, 0.0f, 0.0f}} }; - /* Fragment program to calculate the 3dview of smoke */ + /* Fragment program to calculate the view3d of smoke */ /* using 2 textures, density and shadow */ const char *text = "!!ARBfp1.0\n" "PARAM dx = program.local[0];\n" @@ -272,6 +236,11 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture float size[3]; + if(!tex) { + printf("Could not allocate 3D texture for 3D View smoke drawing.\n"); + return; + } + tstart(); VECSUB(size, max, min); @@ -380,6 +349,11 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture } } + if(i >= 8) { + /* fallback, avoid using buffer over-run */ + i= 0; + } + // printf("i: %d\n", i); // printf("point %f, %f, %f\n", cv[i][0], cv[i][1], cv[i][2]); @@ -397,7 +371,7 @@ void draw_volume(Scene *scene, ARegion *ar, View3D *v3d, Base *base, GPUTexture glProgramLocalParameter4fARB (GL_FRAGMENT_PROGRAM_ARB, 1, 7.0, 7.0, 7.0, 1.0); } else - printf("Your gfx card does not support 3dview smoke drawing.\n"); + printf("Your gfx card does not support 3D View smoke drawing.\n"); GPU_texture_bind(tex, 0); if(tex_shadow) diff --git a/source/blender/editors/space_view3d/space_view3d.c b/source/blender/editors/space_view3d/space_view3d.c index fc67881367f..caad2afba7f 100644 --- a/source/blender/editors/space_view3d/space_view3d.c +++ b/source/blender/editors/space_view3d/space_view3d.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -29,13 +29,8 @@ #include <string.h> #include <stdio.h> -#include "DNA_action_types.h" -#include "DNA_armature_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_view3d_types.h" #include "MEM_guardedalloc.h" @@ -50,22 +45,20 @@ #include "BKE_utildefines.h" #include "BKE_image.h" -#include "ED_armature.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_object.h" #include "BIF_gl.h" + #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "RNA_access.h" +#include "UI_resources.h" + #include "view3d_intern.h" // own include /* ******************** manage regions ********************* */ @@ -230,7 +223,7 @@ static SpaceLink *view3d_new(const bContext *C) ar= MEM_callocN(sizeof(ARegion), "toolshelf for view3d"); BLI_addtail(&v3d->regionbase, ar); - ar->regiontype= RGN_TYPE_UI; + ar->regiontype= RGN_TYPE_TOOLS; ar->alignment= RGN_ALIGN_LEFT; ar->flag = RGN_FLAG_HIDDEN; @@ -238,7 +231,7 @@ static SpaceLink *view3d_new(const bContext *C) ar= MEM_callocN(sizeof(ARegion), "tool properties for view3d"); BLI_addtail(&v3d->regionbase, ar); - ar->regiontype= RGN_TYPE_UI; + ar->regiontype= RGN_TYPE_TOOL_PROPS; ar->alignment= RGN_ALIGN_BOTTOM|RGN_SPLIT_PREV; ar->flag = RGN_FLAG_HIDDEN; @@ -420,10 +413,16 @@ static int view3d_mat_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) static int view3d_ima_drop_poll(bContext *C, wmDrag *drag, wmEvent *event) { - if(drag->type==WM_DRAG_ID) { - ID *id= (ID *)drag->poin; - if( GS(id->name)==ID_IM ) - return 1; + if( ED_view3d_give_base_under_cursor(C, event->mval) ) { + if(drag->type==WM_DRAG_ID) { + ID *id= (ID *)drag->poin; + if( GS(id->name)==ID_IM ) + return 1; + } + else if(drag->type==WM_DRAG_PATH){ + if(ELEM(drag->icon, 0, ICON_FILE_IMAGE)) /* rule might not work? */ + return 1; + } } return 0; } @@ -444,10 +443,20 @@ static void view3d_ob_drop_copy(wmDrag *drag, wmDropBox *drop) static void view3d_id_drop_copy(wmDrag *drag, wmDropBox *drop) { ID *id= (ID *)drag->poin; - + RNA_string_set(drop->ptr, "name", id->name+2); } +static void view3d_id_path_drop_copy(wmDrag *drag, wmDropBox *drop) +{ + ID *id= (ID *)drag->poin; + + if(id) + RNA_string_set(drop->ptr, "name", id->name+2); + if(drag->path[0]) + RNA_string_set(drop->ptr, "filepath", drag->path); +} + /* region dropbox definition */ static void view3d_dropboxes(void) @@ -456,7 +465,7 @@ static void view3d_dropboxes(void) WM_dropbox_add(lb, "OBJECT_OT_add_named_cursor", view3d_ob_drop_poll, view3d_ob_drop_copy); WM_dropbox_add(lb, "OBJECT_OT_drop_named_material", view3d_mat_drop_poll, view3d_id_drop_copy); - WM_dropbox_add(lb, "MESH_OT_drop_named_image", view3d_ima_drop_poll, view3d_id_drop_copy); + WM_dropbox_add(lb, "MESH_OT_drop_named_image", view3d_ima_drop_poll, view3d_id_path_drop_copy); } @@ -514,13 +523,19 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->category) { case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: case ND_KEYFRAME_PROP: - case ND_NLA_EDIT: case ND_NLA_ACTCHANGE: - case ND_ANIMCHAN_SELECT: ED_region_tag_redraw(ar); break; + case ND_NLA: + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); + break; + case ND_ANIMCHAN: + if (wmn->action == NA_SELECTED) + ED_region_tag_redraw(ar); + break; } break; case NC_SCENE: @@ -548,8 +563,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) case ND_MODIFIER: case ND_CONSTRAINT: case ND_KEYS: - case ND_PARTICLE_SELECT: - case ND_PARTICLE_DATA: + case ND_PARTICLE: ED_region_tag_redraw(ar); break; } @@ -573,7 +587,7 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) break; case NC_BRUSH: if(wmn->action == NA_EDITED) - ED_region_tag_redraw(ar); + ED_region_tag_redraw_overlay(ar); break; case NC_MATERIAL: switch(wmn->data) { @@ -601,9 +615,18 @@ static void view3d_main_area_listener(ARegion *ar, wmNotifier *wmn) * more context than just the region */ ED_region_tag_redraw(ar); break; + case NC_TEXTURE: + /* same as above */ + ED_region_tag_redraw(ar); + break; case NC_SPACE: - if(wmn->data == ND_SPACE_VIEW3D) + if(wmn->data == ND_SPACE_VIEW3D) { + if (wmn->subtype == NS_VIEW3D_GPU) { + RegionView3D *rv3d= ar->regiondata; + rv3d->rflag |= RV3D_GPULIGHT_UPDATE; + } ED_region_tag_redraw(ar); + } break; case NC_ID: if(wmn->action == NA_RENAME) @@ -691,12 +714,15 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) switch(wmn->category) { case NC_ANIMATION: switch(wmn->data) { - case ND_KEYFRAME_EDIT: case ND_KEYFRAME_PROP: - case ND_NLA_EDIT: case ND_NLA_ACTCHANGE: ED_region_tag_redraw(ar); break; + case ND_NLA: + case ND_KEYFRAME: + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); + break; } break; case NC_SCENE: @@ -723,6 +749,7 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) case ND_POSE: case ND_DRAW: case ND_KEYS: + case ND_MODIFIER: ED_region_tag_redraw(ar); break; } @@ -734,6 +761,8 @@ static void view3d_buttons_area_listener(ARegion *ar, wmNotifier *wmn) ED_region_tag_redraw(ar); break; } + if (wmn->action == NA_EDITED) + ED_region_tag_redraw(ar); break; case NC_TEXTURE: /* for brush textures */ @@ -774,6 +803,25 @@ static void view3d_tools_area_draw(const bContext *C, ARegion *ar) ED_region_panels(C, ar, 1, CTX_data_mode_string(C), -1); } +static void view3d_props_area_listener(ARegion *ar, wmNotifier *wmn) +{ + /* context changes */ + switch(wmn->category) { + case NC_WM: + if(wmn->data == ND_HISTORY) + ED_region_tag_redraw(ar); + break; + case NC_SCENE: + if(wmn->data == ND_MODE) + ED_region_tag_redraw(ar); + break; + case NC_SPACE: + if(wmn->data == ND_SPACE_VIEW3D) + ED_region_tag_redraw(ar); + break; + } +} + static int view3d_context(const bContext *C, const char *member, bContextDataResult *result) { View3D *v3d= CTX_wm_view3d(C); @@ -802,7 +850,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "selected_editable_objects") || CTX_data_equals(member, "selected_editable_bases")) { @@ -820,7 +868,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "visible_objects") || CTX_data_equals(member, "visible_bases")) { @@ -836,7 +884,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "selectable_objects") || CTX_data_equals(member, "selectable_bases")) { @@ -852,7 +900,7 @@ static int view3d_context(const bContext *C, const char *member, bContextDataRes } } } - + CTX_data_type_set(result, CTX_DATA_TYPE_COLLECTION); return 1; } else if(CTX_data_equals(member, "active_base")) { @@ -948,7 +996,10 @@ void ED_spacetype_view3d(void) art->draw= view3d_tools_area_draw; BLI_addhead(&st->regiontypes, art); +#if 0 + /* unfinished still */ view3d_toolshelf_register(art); +#endif /* regions: tool properties */ art= MEM_callocN(sizeof(ARegionType), "spacetype view3d region"); @@ -956,7 +1007,7 @@ void ED_spacetype_view3d(void) art->prefsizex= 0; art->prefsizey= 120; art->keymapflag= ED_KEYMAP_UI|ED_KEYMAP_FRAMES; - art->listener= view3d_buttons_area_listener; + art->listener= view3d_props_area_listener; art->init= view3d_tools_area_init; art->draw= view3d_tools_area_draw; BLI_addhead(&st->regiontypes, art); diff --git a/source/blender/editors/space_view3d/view3d_buttons.c b/source/blender/editors/space_view3d/view3d_buttons.c index e679310b224..93a045dad9d 100644 --- a/source/blender/editors/space_view3d/view3d_buttons.c +++ b/source/blender/editors/space_view3d/view3d_buttons.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,24 +31,13 @@ #include <math.h> #include <float.h> -#include "DNA_ID.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_curve_types.h" -#include "DNA_camera_types.h" -#include "DNA_gpencil_types.h" -#include "DNA_lamp_types.h" #include "DNA_lattice_types.h" #include "DNA_meta_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -79,24 +68,15 @@ #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" #include "ED_armature.h" -#include "ED_curve.h" -#include "ED_image.h" #include "ED_gpencil.h" -#include "ED_keyframing.h" #include "ED_mesh.h" -#include "ED_object.h" -#include "ED_particle.h" #include "ED_screen.h" #include "ED_transform.h" -#include "ED_types.h" -#include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "view3d_intern.h" // own include @@ -147,7 +127,7 @@ typedef struct { float ob_scale[3]; // need temp space due to linked values float ob_dims[3]; short link_scale; - float ve_median[5]; + float ve_median[6]; int curdef; float *defweightp; } TransformProperties; @@ -159,12 +139,12 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d uiBlock *block= (layout)? uiLayoutAbsoluteBlock(layout): NULL; MDeformVert *dvert=NULL; TransformProperties *tfp= v3d->properties_storage; - float median[5], ve_median[5]; - int tot, totw, totweight, totedge; + float median[6], ve_median[6]; + int tot, totw, totweight, totedge, totradius; char defstr[320]; - median[0]= median[1]= median[2]= median[3]= median[4]= 0.0; - tot= totw= totweight= totedge= 0; + median[0]= median[1]= median[2]= median[3]= median[4]= median[5]= 0.0; + tot= totw= totweight= totedge= totradius= 0; defstr[0]= 0; if(ob->type==OB_MESH) { @@ -179,7 +159,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d if(BM_TestHFlag(eve, BM_SELECT)) { evedef= eve; tot++; - add_v3_v3v3(median, median, eve->co); + add_v3_v3(median, eve->co); } } @@ -233,18 +213,20 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d a= nu->pntsu; while(a--) { if(bezt->f2 & SELECT) { - add_v3_v3v3(median, median, bezt->vec[1]); + add_v3_v3(median, bezt->vec[1]); tot++; median[4]+= bezt->weight; totweight++; + median[5]+= bezt->radius; + totradius++; } else { if(bezt->f1 & SELECT) { - add_v3_v3v3(median, median, bezt->vec[0]); + add_v3_v3(median, bezt->vec[0]); tot++; } if(bezt->f3 & SELECT) { - add_v3_v3v3(median, median, bezt->vec[2]); + add_v3_v3(median, bezt->vec[2]); tot++; } } @@ -256,12 +238,14 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d a= nu->pntsu*nu->pntsv; while(a--) { if(bp->f1 & SELECT) { - add_v3_v3v3(median, median, bp->vec); + add_v3_v3(median, bp->vec); median[3]+= bp->vec[3]; totw++; tot++; median[4]+= bp->weight; totweight++; + median[5]+= bp->radius; + totradius++; } bp++; } @@ -278,7 +262,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d bp= lt->editlatt->def; while(a--) { if(bp->f1 & SELECT) { - add_v3_v3v3(median, median, bp->vec); + add_v3_v3(median, bp->vec); tot++; median[4]+= bp->weight; totweight++; @@ -295,6 +279,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d if(totedge) median[3] /= (float)totedge; else if(totw) median[3] /= (float)totw; if(totweight) median[4] /= (float)totweight; + if(totradius) median[5] /= (float)totradius; if(v3d->flag & V3D_GLOBAL_STATS) mul_m4_v3(ob->obmat, median); @@ -324,6 +309,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d uiBlockEndAlign(block); if(totweight) uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Weight:", 0, 0, 200, 20, &(tfp->ve_median[4]), 0.0, 1.0, 10, 3, ""); + if(totradius) + uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Radius:", 0, 0, 200, 20, &(tfp->ve_median[5]), 0.0, 100.0, 10, 3, "Radius of curve CPs"); } else { uiBlockBeginAlign(block); @@ -332,6 +319,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d uiBlockEndAlign(block); if(totweight) uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Weight:", 0, 20, 200, 20, &(tfp->ve_median[4]), 0.0, 1.0, 10, 3, ""); + if(totradius) + uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Radius:", 0, 20, 200, 20, &(tfp->ve_median[5]), 0.0, 100.0, 10, 3, "Radius of curve CPs"); } } else { @@ -349,6 +338,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d uiBlockEndAlign(block); if(totweight) uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Weight:", 0, 0, 200, 20, &(tfp->ve_median[4]), 0.0, 1.0, 10, 3, "Weight is used for SoftBody Goal"); + if(totradius) + uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Radius:", 0, 0, 200, 20, &(tfp->ve_median[5]), 0.0, 100.0, 10, 3, "Radius of curve CPs"); uiBlockEndAlign(block); } else { @@ -358,6 +349,8 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d uiBlockEndAlign(block); if(totweight) uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Weight:", 0, 20, 200, 20, &(tfp->ve_median[4]), 0.0, 1.0, 10, 3, "Weight is used for SoftBody Goal"); + if(totradius) + uiDefButF(block, NUM, B_OBJECTPANELMEDIAN, "Radius:", 0, 0, 200, 20, &(tfp->ve_median[5]), 0.0, 100.0, 10, 3, "Radius of curve CPs"); uiBlockEndAlign(block); } } @@ -379,6 +372,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d sub_v3_v3v3(median, ve_median, median); median[3]= ve_median[3]-median[3]; median[4]= ve_median[4]-median[4]; + median[5]= ve_median[5]-median[5]; if(ob->type==OB_MESH) { Mesh *me= ob->data; @@ -389,7 +383,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { if(BM_TestHFlag(eve, BM_SELECT)) { - add_v3_v3v3(eve->co, eve->co, median); + add_v3_v3(eve->co, median); } } @@ -424,17 +418,18 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d a= nu->pntsu; while(a--) { if(bezt->f2 & SELECT) { - add_v3_v3v3(bezt->vec[0], bezt->vec[0], median); - add_v3_v3v3(bezt->vec[1], bezt->vec[1], median); - add_v3_v3v3(bezt->vec[2], bezt->vec[2], median); + add_v3_v3(bezt->vec[0], median); + add_v3_v3(bezt->vec[1], median); + add_v3_v3(bezt->vec[2], median); bezt->weight+= median[4]; + bezt->radius+= median[5]; } else { if(bezt->f1 & SELECT) { - add_v3_v3v3(bezt->vec[0], bezt->vec[0], median); + add_v3_v3(bezt->vec[0], median); } if(bezt->f3 & SELECT) { - add_v3_v3v3(bezt->vec[2], bezt->vec[2], median); + add_v3_v3(bezt->vec[2], median); } } bezt++; @@ -445,9 +440,10 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d a= nu->pntsu*nu->pntsv; while(a--) { if(bp->f1 & SELECT) { - add_v3_v3v3(bp->vec, bp->vec, median); + add_v3_v3(bp->vec, median); bp->vec[3]+= median[3]; bp->weight+= median[4]; + bp->radius+= median[5]; } bp++; } @@ -467,7 +463,7 @@ static void v3d_editvertex_buts(const bContext *C, uiLayout *layout, View3D *v3d bp= lt->editlatt->def; while(a--) { if(bp->f1 & SELECT) { - add_v3_v3v3(bp->vec, bp->vec, median); + add_v3_v3(bp->vec, median); bp->weight+= median[4]; } bp++; @@ -752,57 +748,57 @@ static void v3d_transform_butsR(uiLayout *layout, PointerRNA *ptr) uiLayoutSetActive(split, !(bone->parent && bone->flag & BONE_CONNECTED)); } colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Location", 0, ptr, "location", 0); + uiItemR(colsub, ptr, "location", 0, "Location", 0); colsub = uiLayoutColumn(split, 1); uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_location", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_location", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); split = uiLayoutSplit(layout, 0.8, 0); switch(RNA_enum_get(ptr, "rotation_mode")) { case ROT_MODE_QUAT: /* quaternion */ colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Rotation", 0, ptr, "rotation_quaternion", 0); + uiItemR(colsub, ptr, "rotation_quaternion", 0, "Rotation", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE, "4L", 0); if (RNA_boolean_get(ptr, "lock_rotations_4d")) - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); else uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); break; case ROT_MODE_AXISANGLE: /* axis angle */ colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Rotation", 0, ptr, "rotation_axis_angle", 0); + uiItemR(colsub, ptr, "rotation_axis_angle", 0, "Rotation", 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "4L", 0, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE); + uiItemR(colsub, ptr, "lock_rotations_4d", UI_ITEM_R_TOGGLE, "4L", 0); if (RNA_boolean_get(ptr, "lock_rotations_4d")) - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_rotation_w", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); else uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); break; default: /* euler rotations */ colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Rotation", 0, ptr, "rotation_euler", 0); + uiItemR(colsub, ptr, "rotation_euler", 0, "Rotation", 0); colsub = uiLayoutColumn(split, 1); uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_rotation", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); break; } - uiItemR(layout, "", 0, ptr, "rotation_mode", 0); + uiItemR(layout, ptr, "rotation_mode", 0, "", 0); split = uiLayoutSplit(layout, 0.8, 0); colsub = uiLayoutColumn(split, 1); - uiItemR(colsub, "Scale", 0, ptr, "scale", 0); + uiItemR(colsub, ptr, "scale", 0, "Scale", 0); colsub = uiLayoutColumn(split, 1); uiItemL(colsub, "", 0); - uiItemR(colsub, "", ICON_LOCKED, ptr, "lock_scale", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY); + uiItemR(colsub, ptr, "lock_scale", UI_ITEM_R_TOGGLE+UI_ITEM_R_ICON_ONLY, "", 0); if (ptr->type == &RNA_Object) { Object *ob = ptr->data; if (ELEM5(ob->type, OB_MESH, OB_CURVE, OB_SURF, OB_FONT, OB_MBALL)) - uiItemR(layout, "Dimensions", 0, ptr, "dimensions", 0); + uiItemR(layout, ptr, "dimensions", 0, "Dimensions", 0); } } @@ -928,18 +924,18 @@ static void v3d_editarmature_buts(uiLayout *layout, View3D *v3d, Object *ob, flo col= uiLayoutColumn(layout, 0); - uiItemR(col, "Head", 0, &eboneptr, "head", 0); + uiItemR(col, &eboneptr, "head", 0, "Head", 0); if (ebone->parent && ebone->flag & BONE_CONNECTED ) { PointerRNA parptr = RNA_pointer_get(&eboneptr, "parent"); - uiItemR(col, "Radius", 0, &parptr, "tail_radius", 0); + uiItemR(col, &parptr, "tail_radius", 0, "Radius", 0); } else { - uiItemR(col, "Radius", 0, &eboneptr, "head_radius", 0); + uiItemR(col, &eboneptr, "head_radius", 0, "Radius", 0); } - uiItemR(col, "Tail", 0, &eboneptr, "tail", 0); - uiItemR(col, "Radius", 0, &eboneptr, "tail_radius", 0); + uiItemR(col, &eboneptr, "tail", 0, "Tail", 0); + uiItemR(col, &eboneptr, "tail_radius", 0, "Radius", 0); - uiItemR(col, "Roll", 0, &eboneptr, "roll", 0); + uiItemR(col, &eboneptr, "roll", 0, "Roll", 0); } static void v3d_editmetaball_buts(uiLayout *layout, Object *ob, float lim) @@ -958,12 +954,12 @@ static void v3d_editmetaball_buts(uiLayout *layout, Object *ob, float lim) RNA_pointer_create(&mball->id, &RNA_MetaElement, mball->lastelem, &ptr); col= uiLayoutColumn(layout, 0); - uiItemR(col, "Location", 0, &ptr, "location", 0); + uiItemR(col, &ptr, "location", 0, "Location", 0); - uiItemR(col, "Radius", 0, &ptr, "radius", 0); - uiItemR(col, "Stiffness", 0, &ptr, "stiffness", 0); + uiItemR(col, &ptr, "radius", 0, "Radius", 0); + uiItemR(col, &ptr, "stiffness", 0, "Stiffness", 0); - uiItemR(col, "Type", 0, &ptr, "type", 0); + uiItemR(col, &ptr, "type", 0, "Type", 0); col= uiLayoutColumn(layout, 1); switch (RNA_enum_get(&ptr, "type")) { @@ -971,24 +967,24 @@ static void v3d_editmetaball_buts(uiLayout *layout, Object *ob, float lim) break; case MB_CUBE: uiItemL(col, "Size:", 0); - uiItemR(col, "X", 0, &ptr, "size_x", 0); - uiItemR(col, "Y", 0, &ptr, "size_y", 0); - uiItemR(col, "Z", 0, &ptr, "size_z", 0); + uiItemR(col, &ptr, "size_x", 0, "X", 0); + uiItemR(col, &ptr, "size_y", 0, "Y", 0); + uiItemR(col, &ptr, "size_z", 0, "Z", 0); break; case MB_TUBE: uiItemL(col, "Size:", 0); - uiItemR(col, "X", 0, &ptr, "size_x", 0); + uiItemR(col, &ptr, "size_x", 0, "X", 0); break; case MB_PLANE: uiItemL(col, "Size:", 0); - uiItemR(col, "X", 0, &ptr, "size_x", 0); - uiItemR(col, "Y", 0, &ptr, "size_y", 0); + uiItemR(col, &ptr, "size_x", 0, "X", 0); + uiItemR(col, &ptr, "size_y", 0, "Y", 0); break; case MB_ELIPSOID: uiItemL(col, "Size:", 0); - uiItemR(col, "X", 0, &ptr, "size_x", 0); - uiItemR(col, "Y", 0, &ptr, "size_y", 0); - uiItemR(col, "Z", 0, &ptr, "size_z", 0); + uiItemR(col, &ptr, "size_x", 0, "X", 0); + uiItemR(col, &ptr, "size_y", 0, "Y", 0); + uiItemR(col, &ptr, "size_z", 0, "Z", 0); break; } } diff --git a/source/blender/editors/space_view3d/view3d_draw.c b/source/blender/editors/space_view3d/view3d_draw.c index a9ab286b2dc..8cc8c976981 100644 --- a/source/blender/editors/space_view3d/view3d_draw.c +++ b/source/blender/editors/space_view3d/view3d_draw.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,19 +30,13 @@ #include <stdio.h> #include <math.h> -#include "DNA_action_types.h" #include "DNA_armature_types.h" #include "DNA_camera_types.h" #include "DNA_customdata_types.h" #include "DNA_group_types.h" #include "DNA_key_types.h" #include "DNA_lamp_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" #include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -75,27 +69,24 @@ #include "BIF_glutil.h" #include "WM_api.h" -#include "WM_types.h" #include "BLF_api.h" #include "ED_armature.h" #include "ED_keyframing.h" #include "ED_gpencil.h" -#include "ED_mesh.h" #include "ED_screen.h" #include "ED_space_api.h" #include "ED_screen_types.h" -#include "ED_util.h" #include "ED_transform.h" -#include "ED_types.h" +#include "ED_gpencil.h" #include "UI_interface.h" #include "UI_interface_icons.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "GPU_draw.h" #include "GPU_material.h" +#include "GPU_extensions.h" #include "view3d_intern.h" // own include @@ -303,7 +294,7 @@ static void drawgrid(UnitSettings *unit, ARegion *ar, View3D *v3d, char **grid_u while(i--) { scalar= bUnit_GetScaler(usys, i); - dx_scalar = dx * scalar * unit->scale_length; + dx_scalar = dx * scalar / unit->scale_length; if (dx_scalar < (GRID_MIN_PX*2)) continue; @@ -476,11 +467,11 @@ static void drawfloor(Scene *scene, View3D *v3d) if (draw_line) { glBegin(GL_LINE_STRIP); - vert[0]= a*v3d->grid; - vert[1]= grid; - glVertex3fv(vert); - vert[1]= -grid; - glVertex3fv(vert); + vert[0]= a*v3d->grid; + vert[1]= grid; + glVertex3fv(vert); + vert[1]= -grid; + glVertex3fv(vert); glEnd(); } } @@ -515,11 +506,11 @@ static void drawfloor(Scene *scene, View3D *v3d) if (draw_line) { glBegin(GL_LINE_STRIP); - vert[1]= a*v3d->grid; - vert[0]= grid; - glVertex3fv(vert ); - vert[0]= -grid; - glVertex3fv(vert); + vert[1]= a*v3d->grid; + vert[0]= grid; + glVertex3fv(vert ); + vert[0]= -grid; + glVertex3fv(vert); glEnd(); } } @@ -830,7 +821,7 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d) } /* colour depends on whether there is a keyframe */ - if (id_frame_has_keyframe((ID *)ob, /*frame_to_float(scene, CFRA)*/(float)(CFRA), v3d->keyflags)) + if (id_frame_has_keyframe((ID *)ob, /*BKE_curframe(scene)*/(float)(CFRA), v3d->keyflags)) UI_ThemeColor(TH_VERTEX_SELECT); else UI_ThemeColor(TH_TEXT_HI); @@ -855,7 +846,7 @@ static void draw_selected_name(Scene *scene, Object *ob, View3D *v3d) static void view3d_get_viewborder_size(Scene *scene, ARegion *ar, float size_r[2]) { float winmax= MAX2(ar->winx, ar->winy); - float aspect= (float) (scene->r.xsch*scene->r.xasp)/(scene->r.ysch*scene->r.yasp); + float aspect= (scene->r.xsch*scene->r.xasp) / (scene->r.ysch*scene->r.yasp); if(aspect>1.0) { size_r[0]= winmax; @@ -866,14 +857,16 @@ static void view3d_get_viewborder_size(Scene *scene, ARegion *ar, float size_r[2 } } -void calc_viewborder(Scene *scene, ARegion *ar, View3D *v3d, rctf *viewborder_r) +void calc_viewborder(Scene *scene, ARegion *ar, RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r) { - RegionView3D *rv3d= ar->regiondata; float zoomfac, size[2]; float dx= 0.0f, dy= 0.0f; view3d_get_viewborder_size(scene, ar, size); + if (rv3d == NULL) + rv3d = ar->regiondata; + /* magic zoom calculation, no idea what * it signifies, if you find out, tell me! -zr */ @@ -982,13 +975,14 @@ static void drawviewborder(Scene *scene, ARegion *ar, View3D *v3d) float x3, y3, x4, y4; rctf viewborder; Camera *ca= NULL; + RegionView3D *rv3d= (RegionView3D *)ar->regiondata; if(v3d->camera==NULL) return; if(v3d->camera->type==OB_CAMERA) ca = v3d->camera->data; - calc_viewborder(scene, ar, v3d, &viewborder); + calc_viewborder(scene, ar, rv3d, v3d, &viewborder); x1= viewborder.xmin; y1= viewborder.ymin; x2= viewborder.xmax; @@ -1077,7 +1071,7 @@ void backdrawview3d(Scene *scene, ARegion *ar, View3D *v3d) rcti winrct; if(base && (base->object->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT) || - paint_facesel_test(base->object))); + paint_facesel_test(base->object))); else if((base && (base->object->mode & OB_MODE_TEXTURE_PAINT)) && scene->toolsettings && (scene->toolsettings->imapaint.flag & IMAGEPAINT_PROJECT_DISABLE)); else if((base && (base->object->mode & OB_MODE_PARTICLE_EDIT)) && v3d->drawtype>OB_WIRE && (v3d->flag & V3D_ZBUF_SELECT)); @@ -1317,7 +1311,7 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d) if(rv3d->persp==RV3D_CAMOB) { rctf vb; - calc_viewborder(scene, ar, v3d, &vb); + calc_viewborder(scene, ar, rv3d, v3d, &vb); x1= vb.xmin; y1= vb.ymin; @@ -1362,7 +1356,7 @@ static void draw_bgpic(Scene *scene, ARegion *ar, View3D *v3d) int mip= 0; if(ibuf->mipmap[0]==NULL) - IMB_makemipmap(ibuf, 0, 0); + IMB_makemipmap(ibuf, 0); while(tzoom < 1.0f && mip<8 && ibuf->mipmap[mip]) { tzoom*= 2.0f; @@ -1492,11 +1486,19 @@ int dupli_ob_sort(void *arg1, void *arg2) } #endif + +static DupliObject *dupli_step(DupliObject *dob) +{ + while(dob && dob->no_draw) + dob= dob->next; + return dob; +} + static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Base *base, int color) -{ +{ RegionView3D *rv3d= ar->regiondata; ListBase *lb; - DupliObject *dob; + DupliObject *dob_prev= NULL, *dob, *dob_next; Base tbase; BoundBox bb, *bb_tmp; /* use a copy because draw_object, calls clear_mesh_caches */ GLuint displist=0; @@ -1508,72 +1510,81 @@ static void draw_dupli_objects_color(Scene *scene, ARegion *ar, View3D *v3d, Bas tbase.flag= OB_FROMDUPLI|base->flag; lb= object_duplilist(scene, base->object); // BLI_sortlist(lb, dupli_ob_sort); // might be nice to have if we have a dupli list with mixed objects. - - for(dob= lb->first; dob; dob= dob->next) { - if(dob->no_draw); - else { - tbase.object= dob->ob; - - /* extra service: draw the duplicator in drawtype of parent */ - /* MIN2 for the drawtype to allow bounding box objects in groups for lods */ - dt= tbase.object->dt; tbase.object->dt= MIN2(tbase.object->dt, base->object->dt); - dtx= tbase.object->dtx; tbase.object->dtx= base->object->dtx; - - /* negative scale flag has to propagate */ - transflag= tbase.object->transflag; - if(base->object->transflag & OB_NEG_SCALE) - tbase.object->transflag ^= OB_NEG_SCALE; - - UI_ThemeColorBlend(color, TH_BACK, 0.5); - - /* generate displist, test for new object */ - if(use_displist==1 && dob->prev && dob->prev->ob!=dob->ob) { - use_displist= -1; + + dob=dupli_step(lb->first); + if(dob) dob_next= dupli_step(dob->next); + + for( ; dob ; dob_prev= dob, dob= dob_next, dob_next= dob_next ? dupli_step(dob_next->next) : NULL) { + tbase.object= dob->ob; + + /* extra service: draw the duplicator in drawtype of parent */ + /* MIN2 for the drawtype to allow bounding box objects in groups for lods */ + dt= tbase.object->dt; tbase.object->dt= MIN2(tbase.object->dt, base->object->dt); + dtx= tbase.object->dtx; tbase.object->dtx= base->object->dtx; + + /* negative scale flag has to propagate */ + transflag= tbase.object->transflag; + if(base->object->transflag & OB_NEG_SCALE) + tbase.object->transflag ^= OB_NEG_SCALE; + + UI_ThemeColorBlend(color, TH_BACK, 0.5); + + /* generate displist, test for new object */ + if(dob_prev && dob_prev->ob != dob->ob) { + if(use_displist==1) glDeleteLists(displist, 1); - } - /* generate displist */ - if(use_displist == -1) { - - /* lamp drawing messes with matrices, could be handled smarter... but this works */ - - /* note, since this was added, its checked dob->type==OB_DUPLIGROUP - * however this is very slow, it was probably needed for the NLA - * offset feature (used in group-duplicate.blend but no longer works in 2.5) - * so for now it should be ok to - campbell */ - if(dob->ob->type==OB_LAMP || (dob->type==OB_DUPLIGROUP && dob->animated) || !(bb_tmp= object_get_boundbox(dob->ob))) - use_displist= 0; - else { - bb= *bb_tmp; /* must make a copy */ - - /* disable boundbox check for list creation */ - object_boundbox_flag(dob->ob, OB_BB_DISABLED, 1); - /* need this for next part of code */ - unit_m4(dob->ob->obmat); /* obmat gets restored */ - - displist= glGenLists(1); - glNewList(displist, GL_COMPILE); - draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); - glEndList(); - - use_displist= 1; - object_boundbox_flag(dob->ob, OB_BB_DISABLED, 0); - } - } - if(use_displist) { - glMultMatrixf(dob->mat); - if(boundbox_clip(rv3d, dob->mat, &bb)) - glCallList(displist); - glLoadMatrixf(rv3d->viewmat); + + use_displist= -1; + } + + /* generate displist */ + if(use_displist == -1) { + + /* note, since this was added, its checked dob->type==OB_DUPLIGROUP + * however this is very slow, it was probably needed for the NLA + * offset feature (used in group-duplicate.blend but no longer works in 2.5) + * so for now it should be ok to - campbell */ + + if( (dob_next==NULL || dob_next->ob != dob->ob) || /* if this is the last no need to make a displist */ + (dob->ob->type == OB_LAMP) || /* lamp drawing messes with matrices, could be handled smarter... but this works */ + (dob->type == OB_DUPLIGROUP && dob->animated) || + !(bb_tmp= object_get_boundbox(dob->ob)) + ) { + // printf("draw_dupli_objects_color: skipping displist for %s\n", dob->ob->id.name+2); + use_displist= 0; } else { - copy_m4_m4(dob->ob->obmat, dob->mat); + // printf("draw_dupli_objects_color: using displist for %s\n", dob->ob->id.name+2); + bb= *bb_tmp; /* must make a copy */ + + /* disable boundbox check for list creation */ + object_boundbox_flag(dob->ob, OB_BB_DISABLED, 1); + /* need this for next part of code */ + unit_m4(dob->ob->obmat); /* obmat gets restored */ + + displist= glGenLists(1); + glNewList(displist, GL_COMPILE); draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); + glEndList(); + + use_displist= 1; + object_boundbox_flag(dob->ob, OB_BB_DISABLED, 0); } - - tbase.object->dt= dt; - tbase.object->dtx= dtx; - tbase.object->transflag= transflag; } + if(use_displist) { + glMultMatrixf(dob->mat); + if(boundbox_clip(rv3d, dob->mat, &bb)) + glCallList(displist); + glLoadMatrixf(rv3d->viewmat); + } + else { + copy_m4_m4(dob->ob->obmat, dob->mat); + draw_object(scene, ar, v3d, &tbase, DRAW_CONSTCOLOR); + } + + tbase.object->dt= dt; + tbase.object->dtx= dtx; + tbase.object->transflag= transflag; } /* Transp afterdraw disabled, afterdraw only stores base pointers, and duplis can be same obj */ @@ -1647,7 +1658,7 @@ void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d) v3d->zbuf= TRUE; glEnable(GL_DEPTH_TEST); - draw_gpencil_3dview_ext(scene, ar, 1); + draw_gpencil_view3d_ext(scene, ar, 1); v3d->zbuf= zbuf; @@ -1791,6 +1802,8 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) Scene *sce; Base *base; Object *ob; + ARegion ar; + RegionView3D rv3d; shadows.first= shadows.last= NULL; @@ -1818,23 +1831,36 @@ static void gpu_update_lamps_shadows(Scene *scene, View3D *v3d) for(shadow=shadows.first; shadow; shadow=shadow->next) { /* this needs to be done better .. */ float viewmat[4][4], winmat[4][4]; - int drawtype, lay, winsize, flag2; + int drawtype, lay, winsize, flag2=v3d->flag2; drawtype= v3d->drawtype; lay= v3d->lay; - flag2= v3d->flag2 & V3D_SOLID_TEX; v3d->drawtype = OB_SOLID; v3d->lay &= GPU_lamp_shadow_layer(shadow->lamp); v3d->flag2 &= ~V3D_SOLID_TEX; + v3d->flag2 |= V3D_RENDER_OVERRIDE; GPU_lamp_shadow_buffer_bind(shadow->lamp, viewmat, &winsize, winmat); -// XXX drawview3d_render(v3d, viewmat, winsize, winsize, winmat, 1); + + memset(&ar, 0, sizeof(ar)); + memset(&rv3d, 0, sizeof(rv3d)); + + ar.regiondata= &rv3d; + ar.regiontype= RGN_TYPE_WINDOW; + rv3d.persp= RV3D_CAMOB; + copy_m4_m4(rv3d.winmat, winmat); + copy_m4_m4(rv3d.viewmat, viewmat); + invert_m4_m4(rv3d.viewinv, rv3d.viewmat); + mul_m4_m4m4(rv3d.persmat, rv3d.viewmat, rv3d.winmat); + invert_m4_m4(rv3d.persinv, rv3d.viewinv); + + ED_view3d_draw_offscreen(scene, v3d, &ar, winsize, winsize, viewmat, winmat); GPU_lamp_shadow_buffer_unbind(shadow->lamp); v3d->drawtype= drawtype; v3d->lay= lay; - v3d->flag2 |= flag2; + v3d->flag2 = flag2; } BLI_freelistN(&shadows); @@ -1862,7 +1888,7 @@ static CustomDataMask get_viewedit_datamask(bScreen *screen, Scene *scene, Objec } if((view->drawtype == OB_TEXTURE) || ((view->drawtype == OB_SOLID) && (view->flag2 & V3D_SOLID_TEX))) { mask |= CD_MASK_MTFACE | CD_MASK_MCOL; - + if(scene->gm.matmode == GAME_MAT_GLSL) mask |= CD_MASK_ORCO; } @@ -1937,19 +1963,20 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, bwiny= ar->winy; ar->winx= winx; ar->winy= winy; - + /* set flags */ G.f |= G_RENDER_OGL; - GPU_free_images(); + + /* free images which can have changed on frame-change + * warning! can be slow so only free animated images - campbell */ + GPU_free_images_anim(); /* set background color, fallback on the view background color */ if(scene->world) { glClearColor(scene->world->horr, scene->world->horg, scene->world->horb, 0.0); } else { - float col[3]; - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); + UI_ThemeClearColor(TH_BACK); } glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); @@ -2000,22 +2027,111 @@ void ED_view3d_draw_offscreen(Scene *scene, View3D *v3d, ARegion *ar, int winx, } /* draw grease-pencil stuff */ - draw_gpencil_3dview_ext(scene, ar, 1); + draw_gpencil_view3d_ext(scene, ar, 1); ED_region_pixelspace(ar); /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ - draw_gpencil_3dview_ext(scene, ar, 0); + draw_gpencil_view3d_ext(scene, ar, 0); - GPU_free_images(); + /* freeing the images again here could be done after the operator runs, leaving for now */ + GPU_free_images_anim(); /* restore size */ ar->winx= bwinx; ar->winy= bwiny; glPopMatrix(); + + glColor4ub(255, 255, 255, 255); // XXX, without this the sequencer flickers with opengl draw enabled, need to find out why - campbell + + G.f &= ~G_RENDER_OGL; } +/* utility func for ED_view3d_draw_offscreen */ +ImBuf *ED_view3d_draw_offscreen_imbuf(Scene *scene, View3D *v3d, ARegion *ar, int sizex, int sizey) +{ + RegionView3D *rv3d= ar->regiondata; + ImBuf *ibuf; + GPUOffScreen *ofs; + + /* bind */ + ofs= GPU_offscreen_create(sizex, sizey); + if(ofs == NULL) + return NULL; + + GPU_offscreen_bind(ofs); + + /* render 3d view */ + if(rv3d->persp==RV3D_CAMOB && v3d->camera) { + float winmat[4][4]; + float _clipsta, _clipend, _lens, _yco, _dx, _dy; + rctf _viewplane; + + object_camera_matrix(&scene->r, v3d->camera, sizex, sizey, 0, winmat, &_viewplane, &_clipsta, &_clipend, &_lens, &_yco, &_dx, &_dy); + + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, winmat); + } + else { + ED_view3d_draw_offscreen(scene, v3d, ar, sizex, sizey, NULL, NULL); + } + + /* read in pixels & stamp */ + ibuf= IMB_allocImBuf(sizex, sizey, 24, IB_rect, 0); + glReadPixels(0, 0, sizex, sizey, GL_RGBA, GL_UNSIGNED_BYTE, ibuf->rect); + + //if((scene->r.stamp & R_STAMP_ALL) && (scene->r.stamp & R_STAMP_DRAW)) + // BKE_stamp_buf(scene, NULL, rr->rectf, rr->rectx, rr->recty, 4); + + /* unbind */ + GPU_offscreen_unbind(ofs); + GPU_offscreen_free(ofs); + + return ibuf; +} + +/* creates own 3d views, used by the sequencer */ +ImBuf *ED_view3d_draw_offscreen_imbuf_simple(Scene *scene, int width, int height, int drawtype) +{ + View3D v3d; + ARegion ar; + RegionView3D rv3d; + + memset(&v3d, 0, sizeof(v3d)); + memset(&ar, 0, sizeof(ar)); + memset(&rv3d, 0, sizeof(rv3d)); + + /* connect data */ + v3d.regionbase.first= v3d.regionbase.last= &ar; + ar.regiondata= &rv3d; + ar.regiontype= RGN_TYPE_WINDOW; + + v3d.camera= scene->camera; + v3d.lay= scene->lay; + v3d.drawtype = drawtype; + v3d.flag2 = V3D_RENDER_OVERRIDE; + + rv3d.persp= RV3D_CAMOB; + + copy_m4_m4(rv3d.viewinv, v3d.camera->obmat); + normalize_m4(rv3d.viewinv); + invert_m4_m4(rv3d.viewmat, rv3d.viewinv); + + { + float _yco, _dx, _dy; + rctf _viewplane; + object_camera_matrix(&scene->r, v3d.camera, width, height, 0, rv3d.winmat, &_viewplane, &v3d.near, &v3d.far, &v3d.lens, &_yco, &_dx, &_dy); + } + + mul_m4_m4m4(rv3d.persmat, rv3d.viewmat, rv3d.winmat); + invert_m4_m4(rv3d.persinv, rv3d.viewinv); + + return ED_view3d_draw_offscreen_imbuf(scene, &v3d, &ar, width, height); + + // seq_view3d_cb(scene, cfra, render_size, seqrectx, seqrecty); +} + + /* NOTE: the info that this uses is updated in ED_refresh_viewport_fps(), * which currently gets called during SCREEN_OT_animation_step. */ @@ -2053,15 +2169,15 @@ static void draw_viewport_fps(Scene *scene, ARegion *ar) fps = fps / tot; } #endif - + /* is this more then half a frame behind? */ if (fps+0.5 < FPS) { UI_ThemeColor(TH_REDALERT); - sprintf(printable, "fps: %.2f", (float)fps); + BLI_snprintf(printable, sizeof(printable), "fps: %.2f", (float)fps); } else { UI_ThemeColor(TH_TEXT_HI); - sprintf(printable, "fps: %i", (int)(fps+0.5)); + BLI_snprintf(printable, sizeof(printable), "fps: %i", (int)(fps+0.5)); } BLF_draw_default(22, ar->winy-17, 0.0f, printable); @@ -2075,22 +2191,26 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) Scene *sce; Base *base; Object *ob; - float col[3]; int retopo= 0, sculptparticle= 0; Object *obact = OBACT; char *grid_unit= NULL; /* from now on all object derived meshes check this */ v3d->customdata_mask= get_viewedit_datamask(CTX_wm_screen(C), scene, obact); - + /* shadow buffers, before we setup matrices */ if(draw_glsl_material(scene, NULL, v3d, v3d->drawtype)) gpu_update_lamps_shadows(scene, v3d); + + /* reset default OpenGL lights if needed (i.e. after preferences have been altered) */ + if (rv3d->rflag & RV3D_GPULIGHT_UPDATE) { + rv3d->rflag &= ~RV3D_GPULIGHT_UPDATE; + GPU_default_lights(); + } /* clear background */ - UI_GetThemeColor3fv(TH_BACK, col); - glClearColor(col[0], col[1], col[2], 0.0); - glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); + UI_ThemeClearColor(TH_BACK); + glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT); /* setup view matrices */ view3d_main_area_setup_view(scene, v3d, ar, NULL, NULL); @@ -2115,35 +2235,38 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) // needs to be done always, gridview is adjusted in drawgrid() now rv3d->gridview= v3d->grid; - if(rv3d->view==0 || rv3d->persp!=0) { - drawfloor(scene, v3d); - if(rv3d->persp==2) { - if(scene->world) { - if(scene->world->mode & WO_STARS) { - RE_make_stars(NULL, scene, star_stuff_init_func, star_stuff_vertex_func, - star_stuff_term_func); + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + + if(rv3d->view==0 || rv3d->persp != RV3D_ORTHO) { + drawfloor(scene, v3d); + if(rv3d->persp==RV3D_CAMOB) { + if(scene->world) { + if(scene->world->mode & WO_STARS) { + RE_make_stars(NULL, scene, star_stuff_init_func, star_stuff_vertex_func, + star_stuff_term_func); + } } + if(v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d); } - if(v3d->flag & V3D_DISPBGPICS) draw_bgpic(scene, ar, v3d); } - } - else { - ED_region_pixelspace(ar); - drawgrid(&scene->unit, ar, v3d, &grid_unit); - /* XXX make function? replaces persp(1) */ - glMatrixMode(GL_PROJECTION); - glLoadMatrixf(rv3d->winmat); - glMatrixMode(GL_MODELVIEW); - glLoadMatrixf(rv3d->viewmat); - - if(v3d->flag & V3D_DISPBGPICS) { - draw_bgpic(scene, ar, v3d); + else { + ED_region_pixelspace(ar); + drawgrid(&scene->unit, ar, v3d, &grid_unit); + /* XXX make function? replaces persp(1) */ + glMatrixMode(GL_PROJECTION); + glLoadMatrixf(rv3d->winmat); + glMatrixMode(GL_MODELVIEW); + glLoadMatrixf(rv3d->viewmat); + + if(v3d->flag & V3D_DISPBGPICS) { + draw_bgpic(scene, ar, v3d); + } } } if(rv3d->rflag & RV3D_CLIPPING) view3d_set_clipping(rv3d); - + /* draw set first */ if(scene->set) { for(SETLOOPER(scene->set, base)) { @@ -2164,7 +2287,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) /* extra service in layerbuttons, showing used layers */ v3d->lay_used = 0; - + /* then draw not selected and the duplis, but skip editmode object */ for(base= scene->base.first; base; base= base->next) { v3d->lay_used |= base->lay; @@ -2201,8 +2324,6 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) // REEB_draw(); -// if(scene->radio) RAD_drawall(v3d->drawtype>=OB_SOLID); - /* Transp and X-ray afterdraw stuff */ view3d_draw_transp(scene, ar, v3d); view3d_draw_xray(scene, ar, v3d, 1); // clears zbuffer if it is used! @@ -2227,12 +2348,14 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) glDisable(GL_DEPTH_TEST); } - /* draw grease-pencil stuff (3d-space strokes) */ - //if (v3d->flag2 & V3D_DISPGP) - draw_gpencil_3dview((bContext *)C, 1); - - BDR_drawSketch(C); - + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + /* draw grease-pencil stuff (3d-space strokes) */ + //if (v3d->flag2 & V3D_DISPGP) + draw_gpencil_view3d((bContext *)C, 1); + + BDR_drawSketch(C); + } + ED_region_pixelspace(ar); // retopo_paint_view_update(v3d); @@ -2240,14 +2363,17 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) /* Draw particle edit brush XXX (removed) */ - if(rv3d->persp>1) drawviewborder(scene, ar, v3d); + + if(rv3d->persp==RV3D_CAMOB) drawviewborder(scene, ar, v3d); if(rv3d->rflag & RV3D_FLYMODE) drawviewborder_flymode(ar); - - /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ -// if (v3d->flag2 & V3D_DISPGP) - draw_gpencil_3dview((bContext *)C, 0); - drawcursor(scene, ar, v3d); + if ((v3d->flag2 & V3D_RENDER_OVERRIDE)==0) { + /* draw grease-pencil stuff - needed to get paint-buffer shown too (since it's 2D) */ + // if (v3d->flag2 & V3D_DISPGP) + draw_gpencil_view3d((bContext *)C, 0); + + drawcursor(scene, ar, v3d); + } if(U.uiflag & USER_SHOW_ROTVIEWICON) draw_view_axis(rv3d); @@ -2262,7 +2388,7 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) } if (grid_unit) { /* draw below the viewport name */ UI_ThemeColor(TH_TEXT_HI); - BLF_draw_default(10, ar->winy-(USER_SHOW_VIEWPORTNAME?40:20), 0.0f, grid_unit); + BLF_draw_default(22, ar->winy-(USER_SHOW_VIEWPORTNAME?40:20), 0.0f, grid_unit); } ob= OBACT; @@ -2275,5 +2401,3 @@ void view3d_main_area_draw(const bContext *C, ARegion *ar) v3d->flag |= V3D_INVALID_BACKBUF; } - - diff --git a/source/blender/editors/space_view3d/view3d_edit.c b/source/blender/editors/space_view3d/view3d_edit.c index 9e598b2c7ae..0cf2bc492ee 100644 --- a/source/blender/editors/space_view3d/view3d_edit.c +++ b/source/blender/editors/space_view3d/view3d_edit.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,17 +31,9 @@ #include <math.h> #include <float.h> -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_lamp_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -61,7 +53,6 @@ #include "BKE_utildefines.h" #include "BKE_tessmesh.h" -#include "RE_pipeline.h" // make_stars #include "BIF_gl.h" @@ -73,15 +64,10 @@ #include "ED_particle.h" #include "ED_retopo.h" -#include "ED_space_api.h" #include "ED_screen.h" #include "ED_transform.h" -#include "ED_types.h" #include "ED_mesh.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" #include "PIL_time.h" /* smoothview */ @@ -557,9 +543,9 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) conjugate_qt(q1); /* conj == inv for unit quat */ VECCOPY(rv3d->ofs, vod->ofs); - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + sub_v3_v3(rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + add_v3_v3(rv3d->ofs, vod->dyn_ofs); } } else { @@ -590,9 +576,9 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) if (vod->use_dyn_ofs) { conjugate_qt(q1); /* conj == inv for unit quat */ - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + sub_v3_v3(rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + add_v3_v3(rv3d->ofs, vod->dyn_ofs); } /* Perform the orbital rotation */ @@ -604,9 +590,9 @@ static void viewrotate_apply(ViewOpsData *vod, int x, int y) if (vod->use_dyn_ofs) { conjugate_qt(q1); - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + sub_v3_v3(rv3d->ofs, vod->dyn_ofs); mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, vod->dyn_ofs); + add_v3_v3(rv3d->ofs, vod->dyn_ofs); } } @@ -706,8 +692,15 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) if (U.uiflag & USER_AUTOPERSP) vod->rv3d->persp= RV3D_PERSP; - else if(vod->rv3d->persp==RV3D_CAMOB) + else if(vod->rv3d->persp==RV3D_CAMOB) { + + /* changed since 2.4x, use the camera view */ + View3D *v3d = CTX_wm_view3d(C); + if(v3d->camera) + view3d_settings_from_ob(v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, NULL); + vod->rv3d->persp= RV3D_PERSP; + } ED_region_tag_redraw(vod->ar); } @@ -736,7 +729,19 @@ static int viewrotate_invoke(bContext *C, wmOperator *op, wmEvent *event) } } -static int ED_operator_view3d_rotate(bContext *C) +static int view3d_camera_active_poll(bContext *C) +{ + if(ED_operator_view3d_active(C)) { + RegionView3D *rv3d= CTX_wm_region_view3d(C); + if(rv3d && rv3d->persp==RV3D_CAMOB) { + return 1; + } + } + + return 0; +} + +static int view3d_rotate_poll(bContext *C) { if (!ED_operator_view3d_active(C)) { return 0; @@ -762,7 +767,7 @@ void VIEW3D_OT_rotate(wmOperatorType *ot) /* api callbacks */ ot->invoke= viewrotate_invoke; ot->modal= viewrotate_modal; - ot->poll= ED_operator_view3d_rotate; + ot->poll= view3d_rotate_poll; /* flags */ ot->flag= OPTYPE_BLOCKING|OPTYPE_GRAB_POINTER; @@ -816,7 +821,7 @@ static void viewmove_apply(ViewOpsData *vod, int x, int y) float dvec[3]; window_to_3d_delta(vod->ar, dvec, x-vod->oldx, y-vod->oldy); - add_v3_v3v3(vod->rv3d->ofs, vod->rv3d->ofs, dvec); + add_v3_v3(vod->rv3d->ofs, dvec); if(vod->rv3d->viewlock & RV3D_BOXVIEW) view3d_boxview_sync(vod->sa, vod->ar); @@ -1037,7 +1042,7 @@ static void viewzoom_apply(ViewOpsData *vod, int x, int y, short viewzoom) vod->rv3d->dist = vod->dist0; copy_m3_m4(mat, vod->rv3d->viewinv); mul_m3_v3(mat, upvec); - add_v3_v3v3(vod->rv3d->ofs, vod->rv3d->ofs, upvec); + add_v3_v3(vod->rv3d->ofs, upvec); } else { /* these limits were in old code too */ if(vod->rv3d->dist<0.001*vod->grid) vod->rv3d->dist= 0.001*vod->grid; @@ -1119,7 +1124,7 @@ static int viewzoom_exec(bContext *C, wmOperator *op) else { if(rv3d->persp==RV3D_CAMOB) { rv3d->camzoom+= 10; - if(rv3d->camzoom>300) rv3d->camzoom= 300; + if(rv3d->camzoom>600) rv3d->camzoom= 600; } else if(rv3d->dist> 0.001*v3d->grid) { view_zoom_mouseloc(CTX_wm_region(C), .83333f, mx, my); @@ -1172,8 +1177,8 @@ static int viewzoom_invoke(bContext *C, wmOperator *op, wmEvent *event) else { /* Set y move = x move as MOUSEZOOM uses only x axis to pass magnification value */ - vod->origy = vod->oldy = event->x; - viewzoom_apply(vod, event->x, event->prevx, USER_ZOOM_DOLLY); + vod->origy = vod->oldy = vod->origy + event->x - event->prevx; + viewzoom_apply(vod, event->prevx, event->prevy, USER_ZOOM_DOLLY); } request_depth_update(CTX_wm_region_view3d(C)); @@ -1250,7 +1255,17 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. minmax_object(base->object, min, max); } } - if(!onedone) return OPERATOR_FINISHED; /* TODO - should this be cancel? */ + if(!onedone) { + ED_region_tag_redraw(ar); + /* TODO - should this be cancel? + * I think no, because we always move the cursor, with or without + * object, but in this case there is no change in the scene, + * only the cursor so I choice a ED_region_tag like + * smooth_view do for the center_cursor. + * See bug #22640 + */ + return OPERATOR_FINISHED; + } afm[0]= (max[0]-min[0]); afm[1]= (max[1]-min[1]); @@ -1278,9 +1293,9 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. rv3d->persp= RV3D_PERSP; smooth_view(C, NULL, v3d->camera, new_ofs, NULL, &new_dist, NULL); } - else { - smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL); - } + else { + smooth_view(C, NULL, NULL, new_ofs, NULL, &new_dist, NULL); + } } // XXX BIF_view3d_previewrender_signal(curarea, PR_DBASE|PR_DISPRECT); @@ -1292,6 +1307,18 @@ static int viewhome_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2. return OPERATOR_FINISHED; } +static int viewhome_poll(bContext *C) +{ + if(ED_operator_view3d_active(C)) { + RegionView3D *rv3d= CTX_wm_region_view3d(C); //XXX, when accessed from a header menu this doesnt work! + if(rv3d && rv3d->persp!=RV3D_CAMOB) { + return 1; + } + } + + return 0; +} + void VIEW3D_OT_view_all(wmOperatorType *ot) { /* identifiers */ @@ -1301,7 +1328,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) /* api callbacks */ ot->exec= viewhome_exec; - ot->poll= ED_operator_view3d_active; + ot->poll= viewhome_poll; /* flags */ ot->flag= 0; @@ -1309,6 +1336,7 @@ void VIEW3D_OT_view_all(wmOperatorType *ot) RNA_def_boolean(ot->srna, "center", 0, "Center", ""); } + static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview without local!, was centerview() in 2.4x */ { ARegion *ar= CTX_wm_region(C); @@ -1354,11 +1382,12 @@ static int viewselected_exec(bContext *C, wmOperator *op) /* like a localview wi for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { if(pchan->bone->flag & BONE_SELECTED) { if(pchan->bone->layer & arm->layer) { + bPoseChannel *pchan_tx= pchan->custom_tx ? pchan->custom_tx : pchan; ok= 1; - VECCOPY(vec, pchan->pose_head); + VECCOPY(vec, pchan_tx->pose_head); mul_m4_v3(ob->obmat, vec); DO_MINMAX(vec, min, max); - VECCOPY(vec, pchan->pose_tail); + VECCOPY(vec, pchan_tx->pose_tail); mul_m4_v3(ob->obmat, vec); DO_MINMAX(vec, min, max); } @@ -1457,16 +1486,10 @@ static int viewcenter_cursor_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); if (rv3d) { - if (rv3d->persp==RV3D_CAMOB) { - /* center the camera offset */ - rv3d->camdx= rv3d->camdy= 0.0; - } - else { - /* non camera center */ - float new_ofs[3]; - negate_v3_v3(new_ofs, give_cursor(scene, v3d)); - smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL); - } + /* non camera center */ + float new_ofs[3]; + negate_v3_v3(new_ofs, give_cursor(scene, v3d)); + smooth_view(C, NULL, NULL, new_ofs, NULL, NULL, NULL); if (rv3d->viewlock & RV3D_BOXVIEW) view3d_boxview_copy(CTX_wm_area(C), CTX_wm_region(C)); @@ -1490,12 +1513,39 @@ void VIEW3D_OT_view_center_cursor(wmOperatorType *ot) ot->flag= 0; } +static int view3d_center_camera_exec(bContext *C, wmOperator *op) /* was view3d_home() in 2.4x */ +{ + RegionView3D *rv3d= CTX_wm_region_view3d(C); + + rv3d->camdx= rv3d->camdy= 0.0f; + + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, CTX_wm_view3d(C)); + + return OPERATOR_FINISHED; +} + +void VIEW3D_OT_view_center_camera(wmOperatorType *ot) +{ + /* identifiers */ + ot->name= "View Camera Center"; + ot->description = "Center the camera view"; + ot->idname= "VIEW3D_OT_view_center_camera"; + + /* api callbacks */ + ot->exec= view3d_center_camera_exec; + ot->poll= view3d_camera_active_poll; + + /* flags */ + ot->flag= 0; +} + /* ********************* Set render border operator ****************** */ static int render_border_exec(bContext *C, wmOperator *op) { View3D *v3d = CTX_wm_view3d(C); ARegion *ar= CTX_wm_region(C); + RegionView3D *rv3d= ED_view3d_context_rv3d(C); Scene *scene= CTX_data_scene(C); rcti rect; @@ -1508,7 +1558,7 @@ static int render_border_exec(bContext *C, wmOperator *op) rect.ymax= RNA_int_get(op->ptr, "ymax"); /* calculate range */ - calc_viewborder(scene, ar, v3d, &vb); + calc_viewborder(scene, ar, rv3d, v3d, &vb); scene->r.border.xmin= ((float)rect.xmin-vb.xmin)/(vb.xmax-vb.xmin); scene->r.border.ymin= ((float)rect.ymin-vb.ymin)/(vb.ymax-vb.ymin); @@ -1539,15 +1589,6 @@ static int render_border_exec(bContext *C, wmOperator *op) } -static int view3d_render_border_invoke(bContext *C, wmOperator *op, wmEvent *event) -{ - RegionView3D *rv3d= CTX_wm_region_view3d(C); - - /* if not in camera view do not exec the operator*/ - if (rv3d->persp == RV3D_CAMOB) return WM_border_select_invoke(C, op, event); - else return OPERATOR_PASS_THROUGH; -} - void VIEW3D_OT_render_border(wmOperatorType *ot) { /* identifiers */ @@ -1556,11 +1597,11 @@ void VIEW3D_OT_render_border(wmOperatorType *ot) ot->idname= "VIEW3D_OT_render_border"; /* api callbacks */ - ot->invoke= view3d_render_border_invoke; + ot->invoke= WM_border_select_invoke; ot->exec= render_border_exec; ot->modal= WM_border_select_modal; - ot->poll= ED_operator_view3d_active; + ot->poll= view3d_camera_active_poll; /* flags */ ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; @@ -1688,7 +1729,7 @@ static int view3d_zoom_border_exec(bContext *C, wmOperator *op) window_to_3d_delta(ar, dvec, (rect.xmin+rect.xmax-vb[0])/2, (rect.ymin+rect.ymax-vb[1])/2); /* center the view to the center of the rectangle */ - sub_v3_v3v3(new_ofs, new_ofs, dvec); + sub_v3_v3(new_ofs, dvec); } /* work out the ratios, so that everything selected fits when we zoom */ @@ -1906,7 +1947,8 @@ static int viewnumpad_exec(bContext *C, wmOperator *op) if(v3d->camera==NULL) { v3d->camera= scene_find_camera(scene); - /*handle_view3d_lock();*/ + if (v3d->camera == NULL) + return OPERATOR_CANCELLED; } rv3d->persp= RV3D_CAMOB; smooth_view(C, NULL, v3d->camera, rv3d->ofs, rv3d->viewquat, &rv3d->dist, &v3d->lens); @@ -2005,7 +2047,7 @@ void VIEW3D_OT_view_orbit(wmOperatorType *ot) /* api callbacks */ ot->exec= vieworbit_exec; - ot->poll= ED_operator_view3d_rotate; + ot->poll= view3d_rotate_poll; /* flags */ ot->flag= 0; @@ -2311,7 +2353,7 @@ static int set_3dcursor_invoke(bContext *C, wmOperator *op, wmEvent *event) if(depth_used==0) { window_to_3d_delta(ar, dvec, mval[0]-mx, mval[1]-my); - sub_v3_v3v3(fp, fp, dvec); + sub_v3_v3(fp, dvec); } } else { @@ -2390,8 +2432,8 @@ void VIEW3D_OT_manipulator(wmOperatorType *ot) ot->poll= ED_operator_view3d_active; - /* rna later */ - RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); + /* properties to pass to transform */ + Transform_Properties(ot, P_CONSTRAINT); } static int enable_manipulator_invoke(bContext *C, wmOperator *op, wmEvent *event) @@ -2647,21 +2689,21 @@ float m_dist; void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode) { RegionView3D *rv3d= ar->regiondata; - int i; - float phi; - float dval[7]; + int i; + float phi; + float dval[7]; // static fval[6] for low pass filter; device input vector is dval[6] static float fval[6]; - float tvec[3],rvec[3]; - float q1[4]; + float tvec[3],rvec[3]; + float q1[4]; float mat[3][3]; float upvec[3]; - /*---------------------------------------------------- + /*---------------------------------------------------- * sometimes this routine is called from headerbuttons - * viewmove needs to refresh the screen - */ + * viewmove needs to refresh the screen + */ // XXX areawinset(ar->win); @@ -2719,7 +2761,7 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode) upvec[2] = rv3d->dist; copy_m3_m4(mat, rv3d->viewinv); mul_m3_v3(mat, upvec); - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec); + sub_v3_v3(rv3d->ofs, upvec); rv3d->dist = 0.0; } @@ -2761,12 +2803,12 @@ void viewmoveNDOFfly(ARegion *ar, View3D *v3d, int mode) // translate the view - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, tvec); + sub_v3_v3(rv3d->ofs, tvec); /*---------------------------------------------------- - * refresh the screen XXX - */ + * refresh the screen XXX + */ // update render preview window @@ -2796,10 +2838,10 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) float mat[3][3]; float upvec[3]; - /* Sensitivity will control how fast the view rotates. The value was - * obtained experimentally by tweaking until the author didn't get dizzy watching. - * Perhaps this should be a configurable user parameter. - */ + /* Sensitivity will control how fast the view rotates. The value was + * obtained experimentally by tweaking until the author didn't get dizzy watching. + * Perhaps this should be a configurable user parameter. + */ float psens = 0.005f * (float) U.ndof_pan; /* pan sensitivity */ float rsens = 0.005f * (float) U.ndof_rotate; /* rotate sensitivity */ float zsens = 0.3f; /* zoom sensitivity */ @@ -2822,19 +2864,19 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) upvec[2] = rv3d->dist; copy_m3_m4(mat, rv3d->viewinv); mul_m3_v3(mat, upvec); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec); + add_v3_v3(rv3d->ofs, upvec); } - /*---------------------------------------------------- + /*---------------------------------------------------- * sometimes this routine is called from headerbuttons - * viewmove needs to refresh the screen - */ + * viewmove needs to refresh the screen + */ // XXX areawinset(curarea->win); - /*---------------------------------------------------- - * record how much time has passed. clamp at 10 Hz - * pretend the previous frame occured at the clamped time - */ + /*---------------------------------------------------- + * record how much time has passed. clamp at 10 Hz + * pretend the previous frame occured at the clamped time + */ // now = PIL_check_seconds_timer(); // frametime = (now - prevTime); // if (frametime > 0.1f){ /* if more than 1/10s */ @@ -2843,13 +2885,13 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) // prevTime = now; // sbadjust *= 60 * frametime; /* normalize ndof device adjustments to 100Hz for framerate independence */ - /* fetch the current state of the ndof device & enforce dominant mode if selected */ + /* fetch the current state of the ndof device & enforce dominant mode if selected */ // XXX getndof(fval); if (v3d->ndoffilter) filterNDOFvalues(fval); - // put scaling back here, was previously in ghostwinlay + // put scaling back here, was previously in ghostwinlay fval[0] = fval[0] * (1.0f/600.0f); fval[1] = fval[1] * (1.0f/600.0f); fval[2] = fval[2] * (1.0f/1100.0f); @@ -2858,7 +2900,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) fval[5] = fval[5] * 0.00005f; fval[6] = fval[6] / 1000000.0f; - // scale more if not in perspective mode + // scale more if not in perspective mode if (rv3d->persp == RV3D_ORTHO) { fval[0] = fval[0] * 0.05f; fval[1] = fval[1] * 0.05f; @@ -2869,7 +2911,7 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) zsens *= 8; } - /* set object offset */ + /* set object offset */ if (ob) { obofs[0] = -ob->obmat[3][0]; obofs[1] = -ob->obmat[3][1]; @@ -2879,102 +2921,102 @@ void viewmoveNDOF(Scene *scene, ARegion *ar, View3D *v3d, int mode) VECCOPY(obofs, rv3d->ofs); } - /* calc an adjustment based on distance from camera - disabled per patch 14402 */ - d = 1.0f; + /* calc an adjustment based on distance from camera + disabled per patch 14402 */ + d = 1.0f; /* if (ob) { - sub_v3_v3v3(diff, obofs, rv3d->ofs); - d = len_v3(diff); - } + sub_v3_v3v3(diff, obofs, rv3d->ofs); + d = len_v3(diff); + } */ - reverse = (rv3d->persmat[2][1] < 0.0f) ? -1.0f : 1.0f; - - /*---------------------------------------------------- - * ndof device pan - */ - psens *= 1.0f + d; - curareaX = sbadjust * psens * fval[0]; - curareaY = sbadjust * psens * fval[1]; - dvec[0] = curareaX * rv3d->persinv[0][0] + curareaY * rv3d->persinv[1][0]; - dvec[1] = curareaX * rv3d->persinv[0][1] + curareaY * rv3d->persinv[1][1]; - dvec[2] = curareaX * rv3d->persinv[0][2] + curareaY * rv3d->persinv[1][2]; - add_v3_v3v3(rv3d->ofs, rv3d->ofs, dvec); - - /*---------------------------------------------------- - * ndof device dolly - */ - len = zsens * sbadjust * fval[2]; - - if (rv3d->persp==RV3D_CAMOB) { - if(rv3d->persp==RV3D_CAMOB) { /* This is stupid, please fix - TODO */ - rv3d->camzoom+= 10.0f * -len; - } - if (rv3d->camzoom < minZoom) rv3d->camzoom = minZoom; - else if (rv3d->camzoom > maxZoom) rv3d->camzoom = maxZoom; - } - else if ((rv3d->dist> 0.001*v3d->grid) && (rv3d->dist<10.0*v3d->far)) { - rv3d->dist*=(1.0 + len); - } - - - /*---------------------------------------------------- - * ndof device turntable - * derived from the turntable code in viewmove - */ - - /* Get the 3x3 matrix and its inverse from the quaternion */ - quat_to_mat3( m,rv3d->viewquat); - invert_m3_m3(m_inv,m); - - /* Determine the direction of the x vector (for rotating up and down) */ - /* This can likely be compuated directly from the quaternion. */ - mul_m3_v3(m_inv,xvec); - mul_m3_v3(m_inv,yvec); - mul_m3_v3(m_inv,zvec); - - /* Perform the up/down rotation */ - phi = sbadjust * rsens * /*0.5f * */ fval[3]; /* spin vertically half as fast as horizontally */ - q1[0] = cos(phi); - mul_v3_v3fl(q1+1, xvec, sin(phi)); - mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); - - if (use_sel) { - conjugate_qt(q1); /* conj == inv for unit quat */ - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs); - mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs); - } - - /* Perform the orbital rotation */ - /* Perform the orbital rotation - If the seen Up axis is parallel to the zoom axis, rotation should be - achieved with a pure Roll motion (no Spin) on the device. When you start - to tilt, moving from Top to Side view, Spinning will increasingly become - more relevant while the Roll component will decrease. When a full - Side view is reached, rotations around the world's Up axis are achieved - with a pure Spin-only motion. In other words the control of the spinning - around the world's Up axis should move from the device's Spin axis to the - device's Roll axis depending on the orientation of the world's Up axis - relative to the screen. */ - //phi = sbadjust * rsens * reverse * fval[4]; /* spin the knob, y axis */ - phi = sbadjust * rsens * (yvec[2] * fval[4] + zvec[2] * fval[5]); - q1[0] = cos(phi); - q1[1] = q1[2] = 0.0; - q1[3] = sin(phi); - mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); - - if (use_sel) { - conjugate_qt(q1); - sub_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs); - mul_qt_v3(q1, rv3d->ofs); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, obofs); - } - - /*---------------------------------------------------- - * refresh the screen - */ + reverse = (rv3d->persmat[2][1] < 0.0f) ? -1.0f : 1.0f; + + /*---------------------------------------------------- + * ndof device pan + */ + psens *= 1.0f + d; + curareaX = sbadjust * psens * fval[0]; + curareaY = sbadjust * psens * fval[1]; + dvec[0] = curareaX * rv3d->persinv[0][0] + curareaY * rv3d->persinv[1][0]; + dvec[1] = curareaX * rv3d->persinv[0][1] + curareaY * rv3d->persinv[1][1]; + dvec[2] = curareaX * rv3d->persinv[0][2] + curareaY * rv3d->persinv[1][2]; + add_v3_v3(rv3d->ofs, dvec); + + /*---------------------------------------------------- + * ndof device dolly + */ + len = zsens * sbadjust * fval[2]; + + if (rv3d->persp==RV3D_CAMOB) { + if(rv3d->persp==RV3D_CAMOB) { /* This is stupid, please fix - TODO */ + rv3d->camzoom+= 10.0f * -len; + } + if (rv3d->camzoom < minZoom) rv3d->camzoom = minZoom; + else if (rv3d->camzoom > maxZoom) rv3d->camzoom = maxZoom; + } + else if ((rv3d->dist> 0.001*v3d->grid) && (rv3d->dist<10.0*v3d->far)) { + rv3d->dist*=(1.0 + len); + } + + + /*---------------------------------------------------- + * ndof device turntable + * derived from the turntable code in viewmove + */ + + /* Get the 3x3 matrix and its inverse from the quaternion */ + quat_to_mat3( m,rv3d->viewquat); + invert_m3_m3(m_inv,m); + + /* Determine the direction of the x vector (for rotating up and down) */ + /* This can likely be compuated directly from the quaternion. */ + mul_m3_v3(m_inv,xvec); + mul_m3_v3(m_inv,yvec); + mul_m3_v3(m_inv,zvec); + + /* Perform the up/down rotation */ + phi = sbadjust * rsens * /*0.5f * */ fval[3]; /* spin vertically half as fast as horizontally */ + q1[0] = cos(phi); + mul_v3_v3fl(q1+1, xvec, sin(phi)); + mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); + + if (use_sel) { + conjugate_qt(q1); /* conj == inv for unit quat */ + sub_v3_v3(rv3d->ofs, obofs); + mul_qt_v3(q1, rv3d->ofs); + add_v3_v3(rv3d->ofs, obofs); + } + + /* Perform the orbital rotation */ + /* Perform the orbital rotation + If the seen Up axis is parallel to the zoom axis, rotation should be + achieved with a pure Roll motion (no Spin) on the device. When you start + to tilt, moving from Top to Side view, Spinning will increasingly become + more relevant while the Roll component will decrease. When a full + Side view is reached, rotations around the world's Up axis are achieved + with a pure Spin-only motion. In other words the control of the spinning + around the world's Up axis should move from the device's Spin axis to the + device's Roll axis depending on the orientation of the world's Up axis + relative to the screen. */ + //phi = sbadjust * rsens * reverse * fval[4]; /* spin the knob, y axis */ + phi = sbadjust * rsens * (yvec[2] * fval[4] + zvec[2] * fval[5]); + q1[0] = cos(phi); + q1[1] = q1[2] = 0.0; + q1[3] = sin(phi); + mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, q1); + + if (use_sel) { + conjugate_qt(q1); + sub_v3_v3(rv3d->ofs, obofs); + mul_qt_v3(q1, rv3d->ofs); + add_v3_v3(rv3d->ofs, obofs); + } + + /*---------------------------------------------------- + * refresh the screen + */ // XXX scrarea_do_windraw(curarea); } diff --git a/source/blender/editors/space_view3d/view3d_header.c b/source/blender/editors/space_view3d/view3d_header.c index c9edeb24aa0..71a7031e407 100644 --- a/source/blender/editors/space_view3d/view3d_header.c +++ b/source/blender/editors/space_view3d/view3d_header.c @@ -30,19 +30,7 @@ #include <stdio.h> #include <stdlib.h> -#include "DNA_armature_types.h" -#include "DNA_ID.h" -#include "DNA_image_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_mesh_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_texture_types.h" -#include "DNA_userdef_types.h" /* U.smooth_viewtx */ -#include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" @@ -67,9 +55,6 @@ #include "BKE_utildefines.h" /* for VECCOPY */ #include "BKE_tessmesh.h" -#include "ED_armature.h" -#include "ED_particle.h" -#include "ED_object.h" #include "ED_mesh.h" #include "ED_util.h" #include "ED_screen.h" @@ -79,7 +64,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "RNA_access.h" #include "RNA_define.h" #include "RNA_enum_types.h" @@ -91,9 +75,7 @@ #include "BLI_editVert.h" #include "UI_interface.h" -#include "UI_interface_icons.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "view3d_intern.h" @@ -156,11 +138,12 @@ static void handle_view3d_lock(bContext *C) if(v3d->localvd==NULL && v3d->scenelock && sa->spacetype==SPACE_VIEW3D) { /* copy to scene */ scene->lay= v3d->lay; + scene->layact= v3d->layact; scene->camera= v3d->camera; /* not through notifiery, listener don't have context and non-open screens or spaces need to be updated too */ - ED_view3d_scene_layers_update(bmain, scene); + BKE_screen_view3d_main_sync(&bmain->screen, scene); /* notifiers for scene update */ WM_event_add_notifier(C, NC_SCENE|ND_LAYER, scene); @@ -178,14 +161,18 @@ static int layers_exec(bContext *C, wmOperator *op) if(nr < 0) return OPERATOR_CANCELLED; - - + if(nr == 0) { /* all layers */ - v3d->lay |= (1<<20)-1; - if(!v3d->layact) v3d->layact= 1; + + if (toggle && v3d->lay == ((1<<20)-1)) { + /* return to active layer only */ + v3d->lay = v3d->layact; + } else { + v3d->lay |= (1<<20)-1; + } } else { int bit; @@ -398,25 +385,25 @@ static void do_view3d_header_buttons(bContext *C, void *arg, int event) if( shift==0 || v3d->twtype==0) { v3d->twtype= V3D_MANIP_TRANSLATE; } - ED_area_tag_redraw(sa); - break; + ED_area_tag_redraw(sa); + break; case B_MAN_ROT: if( shift==0 || v3d->twtype==0) { - v3d->twtype= V3D_MANIP_ROTATE; + v3d->twtype= V3D_MANIP_ROTATE; } - ED_area_tag_redraw(sa); + ED_area_tag_redraw(sa); break; case B_MAN_SCALE: if( shift==0 || v3d->twtype==0) { - v3d->twtype= V3D_MANIP_SCALE; + v3d->twtype= V3D_MANIP_SCALE; } - ED_area_tag_redraw(sa); + ED_area_tag_redraw(sa); break; case B_NDOF: - ED_area_tag_redraw(sa); + ED_area_tag_redraw(sa); break; case B_MAN_MODE: - ED_area_tag_redraw(sa); + ED_area_tag_redraw(sa); break; default: break; @@ -450,7 +437,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlock *block; uiLayout *row; - RNA_pointer_create(&screen->id, &RNA_Space3DView, v3d, &v3dptr); + RNA_pointer_create(&screen->id, &RNA_SpaceView3D, v3d, &v3dptr); RNA_pointer_create(&scene->id, &RNA_ToolSettings, ts, &toolsptr); RNA_pointer_create(&scene->id, &RNA_Scene, scene, &sceneptr); @@ -488,7 +475,7 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiBlockEndAlign(block); /* Draw type */ - uiItemR(layout, "", 0, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY); + uiItemR(layout, &v3dptr, "viewport_shading", UI_ITEM_R_ICON_ONLY, "", 0); if (obedit==NULL && ((ob && ob->mode & (OB_MODE_VERTEX_PAINT|OB_MODE_WEIGHT_PAINT|OB_MODE_TEXTURE_PAINT)))) { /* Manipulators aren't used in weight paint mode */ @@ -496,13 +483,13 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) PointerRNA meshptr; RNA_pointer_create(&ob->id, &RNA_Mesh, ob->data, &meshptr); - uiItemR(layout, "", 0, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY); + uiItemR(layout, &meshptr, "use_paint_mask", UI_ITEM_R_ICON_ONLY, "", 0); } else { char *str_menu; row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY); - uiItemR(row, "", 0, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY); + uiItemR(row, &v3dptr, "pivot_point", UI_ITEM_R_ICON_ONLY, "", 0); + uiItemR(row, &v3dptr, "pivot_point_align", UI_ITEM_R_ICON_ONLY, "", 0); /* NDOF */ /* Not implemented yet @@ -510,14 +497,14 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) uiDefIconTextButC(block, ICONTEXTROW,B_NDOF, ICON_NDOF_TURN, ndof_pup(), 0,0,XIC+10,YIC, &(v3d->ndofmode), 0, 3.0, 0, 0, "Ndof mode"); uiDefIconButC(block, TOG, B_NDOF, ICON_NDOF_DOM, - 0,0,XIC,YIC, - &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); + 0,0,XIC,YIC, + &v3d->ndoffilter, 0, 1, 0, 0, "dominant axis"); } */ /* Transform widget / manipulators */ row= uiLayoutRow(layout, 1); - uiItemR(row, "", 0, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY); + uiItemR(row, &v3dptr, "manipulator", UI_ITEM_R_ICON_ONLY, "", 0); block= uiLayoutGetBlock(row); if(v3d->twflag & V3D_USE_MANIPULATOR) { @@ -540,12 +527,12 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C) /* Layers */ if (v3d->scenelock) - uiTemplateLayers(layout, &sceneptr, "visible_layers", &v3dptr, "used_layers", ob_lay); + uiTemplateLayers(layout, &sceneptr, "layers", &v3dptr, "used_layers", ob_lay); else - uiTemplateLayers(layout, &v3dptr, "visible_layers", &v3dptr, "used_layers", ob_lay); + uiTemplateLayers(layout, &v3dptr, "layers", &v3dptr, "used_layers", ob_lay); /* Scene lock */ - uiItemR(layout, "", 0, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY); + uiItemR(layout, &v3dptr, "lock_camera_and_layers", UI_ITEM_R_ICON_ONLY, "", 0); } /* selection modus, dont use python for this since it cant do the toggle buttons with shift+click as well as clicking to set one. */ diff --git a/source/blender/editors/space_view3d/view3d_intern.h b/source/blender/editors/space_view3d/view3d_intern.h index d56d70d1fbc..3e8bc71c351 100644 --- a/source/blender/editors/space_view3d/view3d_intern.h +++ b/source/blender/editors/space_view3d/view3d_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -75,6 +75,7 @@ void VIEW3D_OT_view_all(struct wmOperatorType *ot); void VIEW3D_OT_viewnumpad(struct wmOperatorType *ot); void VIEW3D_OT_view_selected(struct wmOperatorType *ot); void VIEW3D_OT_view_center_cursor(struct wmOperatorType *ot); +void VIEW3D_OT_view_center_camera(struct wmOperatorType *ot); void VIEW3D_OT_view_pan(struct wmOperatorType *ot); void VIEW3D_OT_view_persportho(struct wmOperatorType *ot); void VIEW3D_OT_add_background_image(struct wmOperatorType *ot); @@ -104,7 +105,7 @@ void draw_object(Scene *scene, struct ARegion *ar, View3D *v3d, Base *base, int int draw_glsl_material(Scene *scene, Object *ob, View3D *v3d, int dt); void draw_object_instance(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob, int dt, int outline); void draw_object_backbufsel(Scene *scene, View3D *v3d, RegionView3D *rv3d, Object *ob); -void drawaxes(float size, int flag, char drawtype); +void drawaxes(struct RegionView3D *rv3d, float mat[][4], float size, int flag, char drawtype); void view3d_cached_text_draw_begin(void); void view3d_cached_text_draw_add(float x, float y, float z, char *str, short xoffs, short flag); @@ -125,7 +126,7 @@ void draw_depth_gpencil(Scene *scene, ARegion *ar, View3D *v3d); void view3d_clr_clipping(void); void view3d_set_clipping(RegionView3D *rv3d); void add_view3d_after(View3D *v3d, Base *base, int type, int flag); -void calc_viewborder(Scene *scene, struct ARegion *ar, View3D *v3d, rctf *viewborder_r); +void calc_viewborder(Scene *scene, struct ARegion *ar, struct RegionView3D *rv3d, View3D *v3d, rctf *viewborder_r); void circf(float x, float y, float rad); void circ(float x, float y, float rad); @@ -139,6 +140,8 @@ void VIEW3D_OT_select_border(struct wmOperatorType *ot); void VIEW3D_OT_select_lasso(struct wmOperatorType *ot); /* view3d_view.c */ +void view3d_settings_from_ob(struct Object *ob, float *ofs, float *quat, float *dist, float *lens); + void VIEW3D_OT_smoothview(struct wmOperatorType *ot); void VIEW3D_OT_setcameratoview(struct wmOperatorType *ot); void VIEW3D_OT_setobjectascamera(struct wmOperatorType *ot); @@ -175,7 +178,6 @@ int minmax_verts(Object *obedit, float *min, float *max); void VIEW3D_OT_snap_selected_to_grid(struct wmOperatorType *ot); void VIEW3D_OT_snap_selected_to_cursor(struct wmOperatorType *ot); -void VIEW3D_OT_snap_selected_to_center(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_grid(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_center(struct wmOperatorType *ot); void VIEW3D_OT_snap_cursor_to_selected(struct wmOperatorType *ot); diff --git a/source/blender/editors/space_view3d/view3d_ops.c b/source/blender/editors/space_view3d/view3d_ops.c index 792153cab08..faeab482f72 100644 --- a/source/blender/editors/space_view3d/view3d_ops.c +++ b/source/blender/editors/space_view3d/view3d_ops.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -35,9 +35,7 @@ #include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -47,12 +45,10 @@ #include "BKE_utildefines.h" #include "RNA_access.h" -#include "RNA_define.h" #include "WM_api.h" #include "WM_types.h" -#include "ED_screen.h" #include "ED_transform.h" #include "view3d_intern.h" @@ -74,6 +70,7 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_remove_background_image); WM_operatortype_append(VIEW3D_OT_view_selected); WM_operatortype_append(VIEW3D_OT_view_center_cursor); + WM_operatortype_append(VIEW3D_OT_view_center_camera); WM_operatortype_append(VIEW3D_OT_select); WM_operatortype_append(VIEW3D_OT_select_border); WM_operatortype_append(VIEW3D_OT_clip_border); @@ -97,7 +94,6 @@ void view3d_operatortypes(void) WM_operatortype_append(VIEW3D_OT_snap_selected_to_grid); WM_operatortype_append(VIEW3D_OT_snap_selected_to_cursor); - WM_operatortype_append(VIEW3D_OT_snap_selected_to_center); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_grid); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_center); WM_operatortype_append(VIEW3D_OT_snap_cursor_to_selected); @@ -119,7 +115,8 @@ void view3d_keymap(wmKeyConfig *keyconf) /* only for region 3D window */ keymap= WM_keymap_find(keyconf, "3D View", SPACE_VIEW3D, 0); - WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0); + kmi = WM_keymap_verify_item(keymap, "VIEW3D_OT_manipulator", LEFTMOUSE, KM_PRESS, KM_ANY, 0); + RNA_boolean_set(kmi->ptr, "release_confirm", 1); /* * Doesn't work with KM_SHIFT, have to use KM_ANY and filter in invoke * */ @@ -154,7 +151,8 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELINMOUSE, KM_PRESS, 0, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "VIEW3D_OT_zoom", WHEELOUTMOUSE, KM_PRESS, 0, 0)->ptr, "delta", -1); - RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0); + WM_keymap_add_item(keymap, "VIEW3D_OT_view_center_camera", HOMEKEY, KM_PRESS, 0, 0); /* only with camera view */ + RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", HOMEKEY, KM_PRESS, 0, 0)->ptr, "center", 0); /* only without camera view */ RNA_boolean_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_all", CKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "center", 1); /* numpad view hotkeys*/ @@ -186,25 +184,25 @@ void view3d_keymap(wmKeyConfig *keyconf) RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELUPMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPUP); RNA_enum_set(WM_keymap_add_item(keymap, "VIEW3D_OT_view_orbit", WHEELDOWNMOUSE, KM_PRESS, KM_SHIFT|KM_ALT, 0)->ptr, "type", V3D_VIEW_STEPDOWN); - /* active aligned, replaces '*' key in 2.4x */ - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BACK); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); - kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0); - RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM); - RNA_boolean_set(kmi->ptr, "align_active", TRUE); + /* active aligned, replaces '*' key in 2.4x */ + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_FRONT); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_RIGHT); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_TOP); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD1, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BACK); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD3, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_LEFT); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); + kmi= WM_keymap_add_item(keymap, "VIEW3D_OT_viewnumpad", PAD7, KM_PRESS, KM_SHIFT|KM_CTRL, 0); + RNA_enum_set(kmi->ptr, "type", RV3D_VIEW_BOTTOM); + RNA_boolean_set(kmi->ptr, "align_active", TRUE); WM_keymap_add_item(keymap, "VIEW3D_OT_localview", PADSLASHKEY, KM_PRESS, 0, 0); @@ -224,12 +222,12 @@ void view3d_keymap(wmKeyConfig *keyconf) /* drawtype */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); + RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading"); RNA_string_set(kmi->ptr, "value_1", "SOLID"); RNA_string_set(kmi->ptr, "value_2", "WIREFRAME"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle_enum", ZKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.viewport_shading"); + RNA_string_set(kmi->ptr, "data_path", "space_data.viewport_shading"); RNA_string_set(kmi->ptr, "value_1", "TEXTURED"); RNA_string_set(kmi->ptr, "value_2", "SOLID"); @@ -270,29 +268,29 @@ void view3d_keymap(wmKeyConfig *keyconf) /* context ops */ kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "BOUNDING_BOX_CENTER"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", COMMAKEY, KM_PRESS, KM_CTRL, 0); /* 2.4x allowed Comma+Shift too, rather not use both */ - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "MEDIAN_POINT"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", COMMAKEY, KM_PRESS, KM_ALT, 0); /* new in 2.5 */ - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point_align"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point_align"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_toggle", SPACEKEY, KM_PRESS, KM_CTRL, 0); /* new in 2.5 */ - RNA_string_set(kmi->ptr, "path", "space_data.manipulator"); + RNA_string_set(kmi->ptr, "data_path", "space_data.manipulator"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, 0, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "CURSOR"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_CTRL, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "INDIVIDUAL_ORIGINS"); kmi = WM_keymap_add_item(keymap, "WM_OT_context_set_enum", PERIODKEY, KM_PRESS, KM_ALT, 0); - RNA_string_set(kmi->ptr, "path", "space_data.pivot_point"); + RNA_string_set(kmi->ptr, "data_path", "space_data.pivot_point"); RNA_string_set(kmi->ptr, "value", "ACTIVE_ELEMENT"); transform_keymap_for_space(keyconf, keymap, SPACE_VIEW3D); diff --git a/source/blender/editors/space_view3d/view3d_toolbar.c b/source/blender/editors/space_view3d/view3d_toolbar.c index 4a103da6d3c..ac6d61fce18 100644 --- a/source/blender/editors/space_view3d/view3d_toolbar.c +++ b/source/blender/editors/space_view3d/view3d_toolbar.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,23 +31,8 @@ #include <math.h> #include <float.h> -#include "DNA_ID.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_curve_types.h" -#include "DNA_camera_types.h" -#include "DNA_lamp_types.h" -#include "DNA_lattice_types.h" -#include "DNA_meta_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -76,23 +61,12 @@ #include "WM_types.h" #include "RNA_access.h" -#include "RNA_define.h" - -#include "ED_armature.h" -#include "ED_curve.h" -#include "ED_image.h" -#include "ED_keyframing.h" -#include "ED_mesh.h" -#include "ED_object.h" -#include "ED_particle.h" + #include "ED_screen.h" -#include "ED_transform.h" -#include "ED_types.h" #include "ED_util.h" #include "UI_interface.h" #include "UI_resources.h" -#include "UI_view2d.h" #include "view3d_intern.h" // own include @@ -282,7 +256,7 @@ static void view3d_panel_tool_shelf(const bContext *C, Panel *pa) for(ct= st->toolshelf.first; ct; ct= ct->next) { if(0==strncmp(context, ct->context, OP_MAX_TYPENAME)) { col= uiLayoutColumn(pa->layout, 1); - uiItemFullO(col, NULL, 0, ct->opname, NULL, WM_OP_INVOKE_REGION_WIN, 0); + uiItemFullO(col, ct->opname, NULL, 0, NULL, WM_OP_INVOKE_REGION_WIN, 0); } } } diff --git a/source/blender/editors/space_view3d/view3d_view.c b/source/blender/editors/space_view3d/view3d_view.c index 759a7ce08b8..4471c051aa7 100644 --- a/source/blender/editors/space_view3d/view3d_view.c +++ b/source/blender/editors/space_view3d/view3d_view.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -32,17 +32,9 @@ #include <float.h> #include "DNA_anim_types.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" #include "DNA_camera_types.h" #include "DNA_lamp_types.h" -#include "DNA_object_types.h" -#include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_world_types.h" #include "MEM_guardedalloc.h" @@ -63,7 +55,6 @@ #include "BKE_utildefines.h" #include "BKE_depsgraph.h" /* for fly mode updating */ -#include "RE_pipeline.h" // make_stars #include "BIF_gl.h" #include "BIF_glutil.h" @@ -72,17 +63,12 @@ #include "WM_types.h" #include "ED_keyframing.h" -#include "ED_mesh.h" #include "ED_screen.h" -#include "ED_view3d.h" #include "ED_armature.h" -#include "UI_interface.h" -#include "UI_resources.h" -#include "UI_view2d.h" - #include "GPU_draw.h" + #include "PIL_time.h" /* smoothview */ #if GAMEBLENDER == 1 @@ -152,37 +138,32 @@ static void object_lens_clip_settings(Object *ob, float *lens, float *clipsta, f * * The dist is not modified for this function, if NULL its assimed zero * */ -static void view_settings_from_ob(Object *ob, float *ofs, float *quat, float *dist, float *lens) -{ - float bmat[4][4]; - float imat[4][4]; - float tmat[3][3]; - +void view3d_settings_from_ob(Object *ob, float *ofs, float *quat, float *dist, float *lens) +{ if (!ob) return; - + /* Offset */ if (ofs) negate_v3_v3(ofs, ob->obmat[3]); /* Quat */ if (quat) { - copy_m4_m4(bmat, ob->obmat); - normalize_m4(bmat); - invert_m4_m4(imat, bmat); - copy_m3_m4(tmat, imat); - mat3_to_quat( quat,tmat); + float imat[4][4]; + invert_m4_m4(imat, ob->obmat); + mat4_to_quat(quat, imat); } - + if (dist) { - float vec[3]; - copy_m3_m4(tmat, ob->obmat); - - vec[0]= vec[1] = 0.0; - vec[2]= -(*dist); - mul_m3_v3(tmat, vec); - sub_v3_v3v3(ofs, ofs, vec); + float vec[3] = {0.0f, 0.0f, -(*dist)}; + float tquat[4]; + + mat4_to_quat(tquat, ob->obmat); + + mul_qt_v3(tquat, vec); + + sub_v3_v3(ofs, vec); } - + /* Lens */ if (lens) object_lens_clip_settings(ob, lens, NULL, NULL); @@ -226,7 +207,7 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo if(lens) sms.new_lens= *lens; if (camera) { - view_settings_from_ob(camera, sms.new_ofs, sms.new_quat, &sms.new_dist, &sms.new_lens); + view3d_settings_from_ob(camera, sms.new_ofs, sms.new_quat, &sms.new_dist, &sms.new_lens); sms.to_camera= 1; /* restore view3d values in end */ } @@ -260,20 +241,20 @@ void smooth_view(bContext *C, Object *oldcamera, Object *camera, float *ofs, flo * the angle between quats * this means small rotations wont lag */ if (quat && !ofs && !dist) { - float vec1[3], vec2[3]; + float vec1[3], vec2[3]; - VECCOPY(vec1, sms.new_quat); - VECCOPY(vec2, sms.orig_quat); - normalize_v3(vec1); - normalize_v3(vec2); - /* scale the time allowed by the rotation */ - sms.time_allowed *= angle_normalized_v3v3(vec1, vec2)/(M_PI/2); + VECCOPY(vec1, sms.new_quat); + VECCOPY(vec2, sms.orig_quat); + normalize_v3(vec1); + normalize_v3(vec2); + /* scale the time allowed by the rotation */ + sms.time_allowed *= angle_normalized_v3v3(vec1, vec2)/(M_PI/2); } /* original values */ if (oldcamera) { sms.orig_dist= rv3d->dist; // below function does weird stuff with it... - view_settings_from_ob(oldcamera, sms.orig_ofs, sms.orig_quat, &sms.orig_dist, &sms.orig_lens); + view3d_settings_from_ob(oldcamera, sms.orig_ofs, sms.orig_quat, &sms.orig_dist, &sms.orig_lens); } else { VECCOPY(sms.orig_ofs, rv3d->ofs); @@ -377,7 +358,7 @@ static int view3d_smoothview_invoke(bContext *C, wmOperator *op, wmEvent *event) v3d->lens = sms->new_lens*step + sms->orig_lens*step_inv; } - ED_region_tag_redraw(CTX_wm_region(C)); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_VIEW3D, v3d); return OPERATOR_FINISHED; } @@ -540,7 +521,7 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float float vec[4]; int a; - if(rv3d->persp != RV3D_ORTHO){ + if(!get_view3d_ortho(v3d, rv3d)) { vec[0]= 2.0f * mval[0] / ar->winx - 1; vec[1]= 2.0f * mval[1] / ar->winy - 1; vec[2]= -1.0f; @@ -550,7 +531,7 @@ void viewline(ARegion *ar, View3D *v3d, float mval[2], float ray_start[3], float mul_v3_fl(vec, 1.0f / vec[3]); copy_v3_v3(ray_start, rv3d->viewinv[3]); - sub_v3_v3v3(vec, vec, ray_start); + sub_v3_v3(vec, ray_start); normalize_v3(vec); VECADDFAC(ray_start, rv3d->viewinv[3], vec, v3d->near); @@ -692,8 +673,8 @@ void view3d_unproject(bglMats *mats, float out[3], const short x, const short y, { double ux, uy, uz; - gluUnProject(x,y,z, mats->modelview, mats->projection, - (GLint *)mats->viewport, &ux, &uy, &uz ); + gluUnProject(x,y,z, mats->modelview, mats->projection, + (GLint *)mats->viewport, &ux, &uy, &uz ); out[0] = ux; out[1] = uy; out[2] = uz; @@ -902,24 +883,59 @@ int get_view3d_ortho(View3D *v3d, RegionView3D *rv3d) Camera *cam; if(rv3d->persp==RV3D_CAMOB) { - if(v3d->camera && v3d->camera->type==OB_CAMERA) { - cam= v3d->camera->data; - - if(cam && cam->type==CAM_ORTHO) - return 1; - else - return 0; - } - else - return 0; + if(v3d->camera && v3d->camera->type==OB_CAMERA) { + cam= v3d->camera->data; + + if(cam && cam->type==CAM_ORTHO) + return 1; + else + return 0; + } + else + return 0; } if(rv3d->persp==RV3D_ORTHO) - return 1; + return 1; return 0; } +/* copies logic of get_view3d_viewplane(), keep in sync */ +int get_view3d_cliprange(View3D *v3d, RegionView3D *rv3d, float *clipsta, float *clipend) +{ + int orth= 0; + + *clipsta= v3d->near; + *clipend= v3d->far; + + if(rv3d->persp==RV3D_CAMOB) { + if(v3d->camera) { + if(v3d->camera->type==OB_LAMP ) { + Lamp *la= v3d->camera->data; + *clipsta= la->clipsta; + *clipend= la->clipend; + } + else if(v3d->camera->type==OB_CAMERA) { + Camera *cam= v3d->camera->data; + *clipsta= cam->clipsta; + *clipend= cam->clipend; + + if(cam->type==CAM_ORTHO) + orth= 1; + } + } + } + + if(rv3d->persp==RV3D_ORTHO) { + *clipend *= 0.5; // otherwise too extreme low zbuffer quality + *clipsta= - *clipend; + orth= 1; + } + + return orth; +} + /* also exposed in previewrender.c */ int get_view3d_viewplane(View3D *v3d, RegionView3D *rv3d, int winxi, int winyi, rctf *viewplane, float *clipsta, float *clipend, float *pixsize) { @@ -1101,7 +1117,7 @@ static void obmat_to_viewmat(View3D *v3d, RegionView3D *rv3d, Object *ob, short rv3d->persp=RV3D_PERSP; rv3d->dist= 0.0; - view_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); + view3d_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX rv3d->persp=RV3D_CAMOB; /* just to be polite, not needed */ @@ -1364,56 +1380,7 @@ static unsigned int free_localbit(void) return 0; } -static void copy_view3d_lock_space(View3D *v3d, Scene *scene) -{ - int bit; - - if(v3d->scenelock && v3d->localvd==NULL) { - v3d->lay= scene->lay; - v3d->camera= scene->camera; - - if(v3d->camera==NULL) { - ARegion *ar; - - for(ar=v3d->regionbase.first; ar; ar= ar->next) { - if(ar->regiontype == RGN_TYPE_WINDOW) { - RegionView3D *rv3d= ar->regiondata; - if(rv3d->persp==RV3D_CAMOB) - rv3d->persp= RV3D_PERSP; - } - } - } - - if((v3d->lay & v3d->layact) == 0) { - for(bit= 0; bit<32; bit++) { - if(v3d->lay & (1<<bit)) { - v3d->layact= 1<<bit; - break; - } - } - } - } -} - -void ED_view3d_scene_layers_update(Main *bmain, Scene *scene) -{ - bScreen *sc; - ScrArea *sa; - SpaceLink *sl; - - /* from scene copy to the other views */ - for(sc=bmain->screen.first; sc; sc=sc->id.next) { - if(sc->scene!=scene) - continue; - - for(sa=sc->areabase.first; sa; sa=sa->next) - for(sl=sa->spacedata.first; sl; sl=sl->next) - if(sl->spacetype==SPACE_VIEW3D) - copy_view3d_lock_space((View3D*)sl, scene); - } -} - -int ED_view3d_scene_layer_set(int lay, const int *values) +int ED_view3d_scene_layer_set(int lay, const int *values, int *active) { int i, tot= 0; @@ -1426,10 +1393,28 @@ int ED_view3d_scene_layer_set(int lay, const int *values) return lay; for(i=0; i<20; i++) { - if(values[i]) lay |= (1<<i); + + if (active) { + /* if this value has just been switched on, make that layer active */ + if (values[i] && (lay & (1<<i))==0) { + *active = (1<<i); + } + } + + if (values[i]) lay |= (1<<i); else lay &= ~(1<<i); } + /* ensure always an active layer */ + if (active && (lay & *active)==0) { + for(i=0; i<20; i++) { + if(lay & (1<<i)) { + *active= 1<<i; + break; + } + } + } + return lay; } @@ -1725,7 +1710,19 @@ extern void StartKetsjiShell(struct bContext *C, struct ARegion *ar, rcti *cam_f int game_engine_poll(bContext *C) { - return CTX_data_mode_enum(C)==CTX_MODE_OBJECT ? 1:0; + /* we need a context and area to launch BGE + it's a temporary solution to avoid crash at load time + if we try to auto run the BGE. Ideally we want the + context to be set as soon as we load the file. */ + + if(CTX_wm_window(C)==NULL) return 0; + if(CTX_wm_screen(C)==NULL) return 0; + if(CTX_wm_area(C)==NULL) return 0; + + if(CTX_data_mode_enum(C)!=CTX_MODE_OBJECT) + return 0; + + return 1; } int ED_view3d_context_activate(bContext *C) @@ -1735,7 +1732,8 @@ int ED_view3d_context_activate(bContext *C) ARegion *ar; RegionView3D *rv3d; - if(sa->spacetype != SPACE_VIEW3D) + /* sa can be NULL when called from python */ + if(sa==NULL || sa->spacetype != SPACE_VIEW3D) for(sa=sc->areabase.first; sa; sa= sa->next) if(sa->spacetype==SPACE_VIEW3D) break; @@ -1782,7 +1780,7 @@ static int game_engine_exec(bContext *C, wmOperator *op) if(rv3d->persp==RV3D_CAMOB && startscene->gm.framing.type == SCE_GAMEFRAMING_BARS && startscene->gm.stereoflag != STEREO_DOME) { /* Letterbox */ rctf cam_framef; - calc_viewborder(startscene, ar, CTX_wm_view3d(C), &cam_framef); + calc_viewborder(startscene, ar, rv3d, CTX_wm_view3d(C), &cam_framef); cam_frame.xmin = cam_framef.xmin + ar->winrct.xmin; cam_frame.xmax = cam_framef.xmax + ar->winrct.xmin; cam_frame.ymin = cam_framef.ymin + ar->winrct.ymin; @@ -1894,6 +1892,7 @@ void fly_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, FLY_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); + WM_modalkeymap_add_item(keymap, SPACEKEY, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, FLY_MODAL_CONFIRM); WM_modalkeymap_add_item(keymap, PADPLUSKEY, KM_PRESS, 0, 0, FLY_MODAL_ACCELERATE); @@ -2006,7 +2005,7 @@ static int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *even fly->axis= 2; fly->pan_view= FALSE; fly->xlock= FALSE; - fly->zlock= TRUE; + fly->zlock= FALSE; fly->xlock_momentum=0.0f; fly->zlock_momentum=0.0f; fly->grid= 1.0f; @@ -2059,12 +2058,12 @@ static int initFlyInfo (bContext *C, FlyInfo *fly, wmOperator *op, wmEvent *even if (fly->rv3d->persp==RV3D_ORTHO) fly->rv3d->persp= RV3D_PERSP; /*if ortho projection, make perspective */ QUATCOPY(fly->rot_backup, fly->rv3d->viewquat); - VECCOPY(fly->ofs_backup, fly->rv3d->ofs); - fly->rv3d->dist= 0.0; + copy_v3_v3(fly->ofs_backup, fly->rv3d->ofs); + fly->rv3d->dist= 0.0f; upvec[2]= fly->dist_backup; /*x and y are 0*/ mul_m3_v3(mat, upvec); - sub_v3_v3v3(fly->rv3d->ofs, fly->rv3d->ofs, upvec); + sub_v3_v3(fly->rv3d->ofs, upvec); /*Done with correcting for the dist*/ } @@ -2135,7 +2134,7 @@ static int flyEnd(bContext *C, FlyInfo *fly) upvec[2]= fly->dist_backup; /*x and y are 0*/ copy_m3_m4(mat, rv3d->viewinv); mul_m3_v3(mat, upvec); - add_v3_v3v3(rv3d->ofs, rv3d->ofs, upvec); + add_v3_v3(rv3d->ofs, upvec); /*Done with correcting for the dist */ } @@ -2241,12 +2240,12 @@ static void flyEvent(FlyInfo *fly, wmEvent *event) break; case FLY_MODAL_DIR_UP: - if (fly->speed < 0.0f) fly->speed= -fly->speed; + if (fly->speed > 0.0f) fly->speed= -fly->speed; fly->axis= 1; break; case FLY_MODAL_DIR_DOWN: - if (fly->speed > 0.0f) fly->speed= -fly->speed; + if (fly->speed < 0.0f) fly->speed= -fly->speed; fly->axis= 1; break; @@ -2276,8 +2275,13 @@ static void flyEvent(FlyInfo *fly, wmEvent *event) } } -static int flyApply(FlyInfo *fly) +static int flyApply(bContext *C, FlyInfo *fly) { + +#define FLY_ROTATE_FAC 2.5f /* more is faster */ +#define FLY_ZUP_CORRECT_FAC 0.1f /* ammount to correct per step */ +#define FLY_ZUP_CORRECT_ACCEL 0.05f /* increase upright momentum each step */ + /* fly mode - Shift+F a fly loop where the user can move move the view as if they are flying @@ -2393,7 +2397,7 @@ static int flyApply(FlyInfo *fly) upvec[1]=0; upvec[2]=0; mul_m3_v3(mat, upvec); - axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1]*-time_redraw*20); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, (float)moffset[1] * time_redraw * -FLY_ROTATE_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); if (fly->xlock) fly->xlock = 2; /*check for rotation*/ @@ -2425,7 +2429,7 @@ static int flyApply(FlyInfo *fly) mul_m3_v3(mat, upvec); } - axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0]*time_redraw*20); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, (float)moffset[0] * time_redraw * FLY_ROTATE_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); if (fly->xlock) fly->xlock = 2;/*check for rotation*/ @@ -2446,10 +2450,10 @@ static int flyApply(FlyInfo *fly) upvec[2]=1; mul_m3_v3(mat, upvec); - axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum*0.1); /* Rotate about the relative up vec */ + axis_angle_to_quat( tmp_quat, upvec, roll*time_redraw_clamped*fly->zlock_momentum * FLY_ZUP_CORRECT_FAC); /* Rotate about the relative up vec */ mul_qt_qtqt(rv3d->viewquat, rv3d->viewquat, tmp_quat); - fly->zlock_momentum += 0.05f; + fly->zlock_momentum += FLY_ZUP_CORRECT_ACCEL; } else { fly->zlock=1; /* dont check until the view rotates again */ fly->zlock_momentum= 0.0f; @@ -2505,7 +2509,7 @@ static int flyApply(FlyInfo *fly) if (lock_ob->protectflag & OB_LOCK_LOCZ) dvec[2] = 0.0; } - add_v3_v3v3(rv3d->ofs, rv3d->ofs, dvec); + add_v3_v3(rv3d->ofs, dvec); /* todo, dynamic keys */ #if 0 @@ -2524,7 +2528,7 @@ static int flyApply(FlyInfo *fly) ID *id_key; /* transform the parent or the camera? */ if(fly->root_parent) { - Object *ob_update; + Object *ob_update; float view_mat[4][4]; float prev_view_imat[4][4]; @@ -2559,13 +2563,10 @@ static int flyApply(FlyInfo *fly) /* record the motion */ if (autokeyframe_cfra_can_key(scene, id_key)) { - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; - int cfra = CFRA; + ListBase dsources = {NULL, NULL}; - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= id_key; + /* add datasource override for the camera object */ + ANIM_relative_keyingset_add_source(&dsources, id_key, NULL, NULL); /* insert keyframes * 1) on the first frame @@ -2574,12 +2575,15 @@ static int flyApply(FlyInfo *fly) */ if (fly->xlock || fly->zlock || moffset[0] || moffset[1]) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); } if (fly->speed) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, (float)CFRA); } + + /* free temp data */ + BLI_freelistN(&dsources); } } } else @@ -2642,7 +2646,7 @@ static int fly_modal(bContext *C, wmOperator *op, wmEvent *event) flyEvent(fly, event); if(event->type==TIMER && event->customdata == fly->timer) - flyApply(fly); + flyApply(C, fly); if(fly->redraw) { ED_region_tag_redraw(CTX_wm_region(C)); @@ -2702,7 +2706,7 @@ void view3d_align_axis_to_vector(View3D *v3d, RegionView3D *rv3d, int axisidx, f VECCOPY(orig_ofs, rv3d->ofs); rv3d->persp= RV3D_PERSP; rv3d->dist= 0.0; - view_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); + view3d_settings_from_ob(v3d->camera, rv3d->ofs, NULL, NULL, &v3d->lens); smooth_view(NULL, NULL, NULL, orig_ofs, new_quat, &orig_dist, &orig_lens); // XXX } else { if (rv3d->persp==RV3D_CAMOB) rv3d->persp= RV3D_PERSP; /* switch out of camera mode */ diff --git a/source/blender/editors/transform/CMakeLists.txt b/source/blender/editors/transform/CMakeLists.txt new file mode 100644 index 00000000000..1642648e056 --- /dev/null +++ b/source/blender/editors/transform/CMakeLists.txt @@ -0,0 +1,35 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_transform "${SRC}" "${INC}") diff --git a/source/blender/editors/transform/transform.c b/source/blender/editors/transform/transform.c index 5adda8d09e5..5ed8ff8c8a7 100644 --- a/source/blender/editors/transform/transform.c +++ b/source/blender/editors/transform/transform.c @@ -33,10 +33,6 @@ #include <math.h> #include <float.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #ifndef WIN32 #include <unistd.h> #else @@ -47,20 +43,9 @@ #include "DNA_anim_types.h" #include "DNA_armature_types.h" -#include "DNA_action_types.h" /* for some special action-editor settings */ #include "DNA_constraint_types.h" -#include "DNA_ipo_types.h" /* some silly ipo flag */ -#include "DNA_listBase.h" #include "DNA_meshdata_types.h" -#include "DNA_mesh_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" /* PET modes */ -#include "DNA_screen_types.h" /* area dimensions */ -#include "DNA_texture_types.h" -#include "DNA_userdef_types.h" -#include "DNA_view3d_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" @@ -98,7 +83,6 @@ #include "ED_screen.h" #include "ED_space_api.h" #include "ED_markers.h" -#include "ED_util.h" #include "ED_view3d.h" #include "ED_mesh.h" @@ -112,7 +96,6 @@ #include "BLI_ghash.h" #include "BLI_linklist.h" -#include "PIL_time.h" /* sleep */ #include "UI_resources.h" @@ -219,17 +202,33 @@ void projectIntView(TransInfo *t, float *vec, int *adr) UI_view2d_to_region_no_clip(t->view, v[0], v[1], adr, adr+1); } - else if(ELEM3(t->spacetype, SPACE_IPO, SPACE_NLA, SPACE_ACTION)) { + else if(t->spacetype == SPACE_ACTION) { + SpaceAction *sact = t->sa->spacedata.first; + int out[2] = {0, 0}; + + if (sact->flag & SACTION_DRAWTIME) { + //vec[0] = vec[0]/((t->scene->r.frs_sec / t->scene->r.frs_sec_base)); + + UI_view2d_to_region_no_clip((View2D *)t->view, vec[0], vec[1], out, out+1); + } + else { + UI_view2d_to_region_no_clip((View2D *)t->view, vec[0], vec[1], out, out+1); + } + + adr[0]= out[0]; + adr[1]= out[1]; + } + else if(ELEM(t->spacetype, SPACE_IPO, SPACE_NLA)) { int out[2] = {0, 0}; - UI_view2d_view_to_region((View2D *)t->view, vec[0], vec[1], out, out+1); + UI_view2d_to_region_no_clip((View2D *)t->view, vec[0], vec[1], out, out+1); adr[0]= out[0]; adr[1]= out[1]; } else if(t->spacetype==SPACE_SEQ) { /* XXX not tested yet, but should work */ int out[2] = {0, 0}; - UI_view2d_view_to_region((View2D *)t->view, vec[0], vec[1], out, out+1); + UI_view2d_to_region_no_clip((View2D *)t->view, vec[0], vec[1], out, out+1); adr[0]= out[0]; adr[1]= out[1]; } @@ -259,9 +258,8 @@ void projectFloatView(TransInfo *t, float *vec, float *adr) void applyAspectRatio(TransInfo *t, float *vec) { - SpaceImage *sima= t->sa->spacedata.first; - if ((t->spacetype==SPACE_IMAGE) && (t->mode==TFM_TRANSLATION)) { + SpaceImage *sima= t->sa->spacedata.first; float aspx, aspy; if((sima->flag & SI_COORDFLOATS)==0) { @@ -280,9 +278,8 @@ void applyAspectRatio(TransInfo *t, float *vec) void removeAspectRatio(TransInfo *t, float *vec) { - SpaceImage *sima= t->sa->spacedata.first; - if ((t->spacetype==SPACE_IMAGE) && (t->mode==TFM_TRANSLATION)) { + SpaceImage *sima= t->sa->spacedata.first; float aspx, aspy; if((sima->flag & SI_COORDFLOATS)==0) { @@ -314,14 +311,14 @@ static void viewRedrawForce(const bContext *C, TransInfo *t) } else if (t->spacetype == SPACE_ACTION) { //SpaceAction *saction= (SpaceAction *)t->sa->spacedata.first; - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else if (t->spacetype == SPACE_IPO) { //SpaceIpo *sipo= (SpaceIpo *)t->sa->spacedata.first; - WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } else if (t->spacetype == SPACE_NLA) { - WM_event_add_notifier(C, NC_ANIMATION|ND_NLA_EDIT, NULL); + WM_event_add_notifier(C, NC_ANIMATION|ND_NLA|NA_EDITED, NULL); } else if(t->spacetype == SPACE_NODE) { @@ -347,7 +344,7 @@ static void viewRedrawPost(TransInfo *t) if(t->spacetype == SPACE_VIEW3D) { /* if autokeying is enabled, send notifiers that keyframes were added */ if (IS_AUTOKEY_ON(t->scene)) - WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME_EDIT, NULL); + WM_main_add_notifier(NC_ANIMATION|ND_KEYFRAME|NA_EDITED, NULL); } #if 0 // TRANSFORM_FIX_ME @@ -482,6 +479,8 @@ static void view_editmove(unsigned short event) #define TFM_MODAL_REMOVE_SNAP 17 /* 18 and 19 used by numinput, defined in transform.h * */ +#define TFM_MODAL_PROPSIZE_UP 20 +#define TFM_MODAL_PROPSIZE_DOWN 21 /* called in transform_ops.c, on each regeneration of keymaps */ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) @@ -506,6 +505,8 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) {TFM_MODAL_REMOVE_SNAP, "REMOVE_SNAP", 0, "Remove Last Snap Point", ""}, {NUM_MODAL_INCREMENT_UP, "INCREMENT_UP", 0, "Numinput Increment Up", ""}, {NUM_MODAL_INCREMENT_DOWN, "INCREMENT_DOWN", 0, "Numinput Increment Down", ""}, + {TFM_MODAL_PROPSIZE_UP, "PROPORTIONAL_SIZE_UP", 0, "Increase Proportional Influence", ""}, + {TFM_MODAL_PROPSIZE_DOWN, "PROPORTIONAL_SIZE_DOWN", 0, "Decrease Poportional Influence", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap= WM_modalkeymap_get(keyconf, "Transform Modal Map"); @@ -535,6 +536,11 @@ wmKeyMap* transform_modal_keymap(wmKeyConfig *keyconf) WM_modalkeymap_add_item(keymap, UPARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_UP); WM_modalkeymap_add_item(keymap, DOWNARROWKEY, KM_PRESS, 0, 0, NUM_MODAL_INCREMENT_DOWN); + + WM_modalkeymap_add_item(keymap, PAGEUPKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); + WM_modalkeymap_add_item(keymap, PAGEDOWNKEY, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); + WM_modalkeymap_add_item(keymap, WHEELDOWNMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_UP); + WM_modalkeymap_add_item(keymap, WHEELUPMOUSE, KM_PRESS, 0, 0, TFM_MODAL_PROPSIZE_DOWN); return keymap; } @@ -559,7 +565,7 @@ int transformEvent(TransInfo *t, wmEvent *event) t->redraw |= TREDRAW_SOFT; if (t->state == TRANS_STARTING) { - t->state = TRANS_RUNNING; + t->state = TRANS_RUNNING; } applyMouseInput(t, &t->mouse, t->mval, t->values); @@ -715,6 +721,20 @@ int transformEvent(TransInfo *t, wmEvent *event) removeSnapPoint(t); t->redraw |= TREDRAW_HARD; break; + case TFM_MODAL_PROPSIZE_UP: + if(t->flag & T_PROP_EDIT) { + t->prop_size*= 1.1f; + calculatePropRatio(t); + } + t->redraw |= TREDRAW_HARD; + break; + case TFM_MODAL_PROPSIZE_DOWN: + if (t->flag & T_PROP_EDIT) { + t->prop_size*= 0.90909090f; + calculatePropRatio(t); + } + t->redraw |= TREDRAW_HARD; + break; default: handled = 0; break; @@ -939,10 +959,6 @@ int transformEvent(TransInfo *t, wmEvent *event) if (t->flag & T_AUTOIK) { transform_autoik_update(t, 1); } - else if(t->flag & T_PROP_EDIT) { - t->prop_size*= 1.1f; - calculatePropRatio(t); - } else view_editmove(event->type); t->redraw= 1; break; @@ -958,10 +974,6 @@ int transformEvent(TransInfo *t, wmEvent *event) if (t->flag & T_AUTOIK) { transform_autoik_update(t, -1); } - else if (t->flag & T_PROP_EDIT) { - t->prop_size*= 0.90909090f; - calculatePropRatio(t); - } else view_editmove(event->type); t->redraw= 1; break; @@ -1045,10 +1057,13 @@ int transformEvent(TransInfo *t, wmEvent *event) } /* confirm transform if launch key is released after mouse move */ - /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */ - if (event->type == LEFTMOUSE /*t->launch_event*/ && t->state != TRANS_STARTING) + if (t->flag & T_RELEASE_CONFIRM) { - t->state = TRANS_CONFIRM; + /* XXX Keyrepeat bug in Xorg fucks this up, will test when fixed */ + if (event->type == t->launch_event && (t->launch_event == LEFTMOUSE || t->launch_event == RIGHTMOUSE)) + { + t->state = TRANS_CONFIRM; + } } } @@ -1456,6 +1471,22 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int t->launch_event = event ? event->type : -1; + if (t->launch_event == EVT_TWEAK_R) + { + t->launch_event = RIGHTMOUSE; + } + else if (t->launch_event == EVT_TWEAK_L) + { + t->launch_event = LEFTMOUSE; + } + + // XXX Remove this when wm_operator_call_internal doesn't use window->eventstate (which can have type = 0) + // For manipulator only, so assume LEFTMOUSE + if (t->launch_event == 0) + { + t->launch_event = LEFTMOUSE; + } + if (!initTransInfo(C, t, op, event)) // internal data, mouse, vectors { return 0; @@ -1486,6 +1517,28 @@ int initTransform(bContext *C, TransInfo *t, wmOperator *op, wmEvent *event, int return 0; } + /* Stupid code to have Ctrl-Click on manipulator work ok */ + if(event) + { + wmKeyMap *keymap = WM_keymap_active(CTX_wm_manager(C), op->type->modalkeymap); + wmKeyMapItem *kmi; + + for (kmi = keymap->items.first; kmi; kmi = kmi->next) + { + if (kmi->propvalue == TFM_MODAL_SNAP_INV_ON && kmi->val == KM_PRESS) + { + if ((ELEM(kmi->type, LEFTCTRLKEY, RIGHTCTRLKEY) && event->ctrl) || + (ELEM(kmi->type, LEFTSHIFTKEY, RIGHTSHIFTKEY) && event->shift) || + (ELEM(kmi->type, LEFTALTKEY, RIGHTALTKEY) && event->alt) || + (kmi->type == COMMANDKEY && event->oskey)) { + t->modifiers |= MOD_SNAP_INVERT; + } + break; + } + } + + } + initSnapping(t, op); // Initialize snapping data AFTER mode flags /* EVIL! posemode code can switch translation to rotate when 1 bone is selected. will be removed (ton) */ @@ -1897,39 +1950,50 @@ static void constraintTransLim(TransInfo *t, TransData *td) } } +static void constraintob_from_transdata(bConstraintOb *cob, TransData *td) +{ + /* Make a temporary bConstraintOb for use by limit constraints + * - they only care that cob->matrix is correctly set ;-) + * - current space should be local + */ + memset(cob, 0, sizeof(bConstraintOb)); + if (td->rotOrder == ROT_MODE_QUAT) { + /* quats */ + if (td->ext) { + /* objects and bones do normalization first too, otherwise + we don't necessarily end up with a rotation matrix, and + then conversion back to quat gives a different result */ + float quat[4]; + copy_qt_qt(quat, td->ext->quat); + normalize_qt(quat); + quat_to_mat4(cob->matrix, quat); + } + else + return; + } + else if (td->rotOrder == ROT_MODE_AXISANGLE) { + /* axis angle */ + if (td->ext) + axis_angle_to_mat4(cob->matrix, &td->ext->quat[1], td->ext->quat[0]); + else + return; + } + else { + /* eulers */ + if (td->ext) + eulO_to_mat4(cob->matrix, td->ext->rot, td->rotOrder); + else + return; + } +} + static void constraintRotLim(TransInfo *t, TransData *td) { if (td->con) { bConstraintTypeInfo *cti= get_constraint_typeinfo(CONSTRAINT_TYPE_ROTLIMIT); bConstraintOb cob; bConstraint *con; - - /* Make a temporary bConstraintOb for using these limit constraints - * - they only care that cob->matrix is correctly set ;-) - * - current space should be local - */ - memset(&cob, 0, sizeof(bConstraintOb)); - if (td->rotOrder == ROT_MODE_QUAT) { - /* quats */ - if (td->ext) - quat_to_mat4( cob.matrix,td->ext->quat); - else - return; - } - else if (td->rotOrder == ROT_MODE_AXISANGLE) { - /* axis angle */ - if (td->ext) - axis_angle_to_mat4( cob.matrix,&td->ext->quat[1], td->ext->quat[0]); - else - return; - } - else { - /* eulers */ - if (td->ext) - eulO_to_mat4( cob.matrix,td->ext->rot, td->rotOrder); - else - return; - } + int dolimit = 0; /* Evaluate valid constraints */ for (con= td->con; con; con= con->next) { @@ -1945,6 +2009,16 @@ static void constraintRotLim(TransInfo *t, TransData *td) /* only use it if it's tagged for this purpose */ if ((data->flag2 & LIMIT_TRANSFORM)==0) continue; + + /* skip incompatable spacetypes */ + if (!ELEM(con->ownspace, CONSTRAINT_SPACE_WORLD, CONSTRAINT_SPACE_LOCAL)) + continue; + + /* only do conversion if necessary, to preserve quats and eulers */ + if(!dolimit) { + constraintob_from_transdata(&cob, td); + dolimit= 1; + } /* do space conversions */ if (con->ownspace == CONSTRAINT_SPACE_WORLD) { @@ -1952,10 +2026,6 @@ static void constraintRotLim(TransInfo *t, TransData *td) copy_m4_m4(tmat, cob.matrix); mul_m4_m3m4(cob.matrix, td->mtx, tmat); } - else if (con->ownspace != CONSTRAINT_SPACE_LOCAL) { - /* skip... incompatable spacetype */ - continue; - } /* do constraint */ cti->evaluate_constraint(con, &cob, NULL); @@ -1969,18 +2039,20 @@ static void constraintRotLim(TransInfo *t, TransData *td) } } - /* copy results from cob->matrix */ - if (td->rotOrder == ROT_MODE_QUAT) { - /* quats */ - mat4_to_quat( td->ext->quat,cob.matrix); - } - else if (td->rotOrder == ROT_MODE_AXISANGLE) { - /* axis angle */ - mat4_to_axis_angle( &td->ext->quat[1], &td->ext->quat[0],cob.matrix); - } - else { - /* eulers */ - mat4_to_eulO( td->ext->rot, td->rotOrder,cob.matrix); + if(dolimit) { + /* copy results from cob->matrix */ + if (td->rotOrder == ROT_MODE_QUAT) { + /* quats */ + mat4_to_quat( td->ext->quat,cob.matrix); + } + else if (td->rotOrder == ROT_MODE_AXISANGLE) { + /* axis angle */ + mat4_to_axis_angle( &td->ext->quat[1], &td->ext->quat[0],cob.matrix); + } + else { + /* eulers */ + mat4_to_eulO( td->ext->rot, td->rotOrder,cob.matrix); + } } } } @@ -2064,6 +2136,16 @@ static void constraintSizeLim(TransInfo *t, TransData *td) /* ************************** WARP *************************** */ +void postInputWarp(TransInfo *t, float values[3]) +{ + mul_v3_fl(values, (float)(M_PI * 2)); + + if (t->customData) /* non-null value indicates reversed input */ + { + negate_v3(values); + } +} + void initWarp(TransInfo *t) { float max[3], min[3]; @@ -2073,13 +2155,14 @@ void initWarp(TransInfo *t) t->transform = Warp; t->handleEvent = handleEventWarp; + setInputPostFct(&t->mouse, postInputWarp); initMouseInputMode(t, &t->mouse, INPUT_HORIZONTAL_RATIO); t->idx_max = 0; t->num.idx_max = 0; t->snap[0] = 0.0f; - t->snap[1] = 5.0f; - t->snap[2] = 1.0f; + t->snap[1] = 5.0f / 180 * M_PI; + t->snap[2] = 1.0f / 180 * M_PI; t->num.increment = 1.0f; @@ -2091,7 +2174,7 @@ void initWarp(TransInfo *t) VECCOPY(center, t->data[i].center); mul_m3_v3(t->data[i].mtx, center); mul_m4_v3(t->viewmat, center); - sub_v3_v3v3(center, center, t->viewmat[3]); + sub_v3_v3(center, t->viewmat[3]); if (i) minmax_v3_v3v3(min, max, center); else { @@ -2147,20 +2230,15 @@ int Warp(TransInfo *t, short mval[2]) VECCOPY(cursor, curs); VECCOPY(gcursor, cursor); if (t->flag & T_EDIT) { - sub_v3_v3v3(cursor, cursor, t->obedit->obmat[3]); - sub_v3_v3v3(gcursor, gcursor, t->obedit->obmat[3]); + sub_v3_v3(cursor, t->obedit->obmat[3]); + sub_v3_v3(gcursor, t->obedit->obmat[3]); mul_m3_v3(t->data->smtx, gcursor); } mul_m4_v3(t->viewmat, cursor); - sub_v3_v3v3(cursor, cursor, t->viewmat[3]); + sub_v3_v3(cursor, t->viewmat[3]); - /* amount of degrees for warp */ - circumfac = 360.0f * t->values[0]; - - if (t->customData) /* non-null value indicates reversed input */ - { - circumfac *= -1; - } + /* amount of radians for warp */ + circumfac = t->values[0]; snapGrid(t, &circumfac); applyNumInput(&t->num, &circumfac); @@ -2172,13 +2250,17 @@ int Warp(TransInfo *t, short mval[2]) outputNumInput(&(t->num), c); sprintf(str, "Warp: %s", c); + + circumfac = circumfac / 180 * M_PI; } else { /* default header print */ - sprintf(str, "Warp: %.3f", circumfac); + sprintf(str, "Warp: %.3f", circumfac * 180 / M_PI); } - circumfac*= (float)(-M_PI/360.0); + t->values[0] = circumfac; + + circumfac /= 2; /* only need 180 on each side to make 360 */ for(i = 0; i < t->total; i++, td++) { float loc[3]; @@ -2192,7 +2274,7 @@ int Warp(TransInfo *t, short mval[2]) VECCOPY(vec, td->iloc); mul_m3_v3(td->mtx, vec); mul_m4_v3(t->viewmat, vec); - sub_v3_v3v3(vec, vec, t->viewmat[3]); + sub_v3_v3(vec, t->viewmat[3]); dist= vec[0]-cursor[0]; @@ -2208,10 +2290,10 @@ int Warp(TransInfo *t, short mval[2]) loc[2]= vec[2]; mul_m4_v3(t->viewinv, loc); - sub_v3_v3v3(loc, loc, t->viewinv[3]); + sub_v3_v3(loc, t->viewinv[3]); mul_m3_v3(td->smtx, loc); - sub_v3_v3v3(loc, loc, td->iloc); + sub_v3_v3(loc, td->iloc); mul_v3_fl(loc, td->factor); add_v3_v3v3(td->loc, td->iloc, loc); } @@ -2225,12 +2307,18 @@ int Warp(TransInfo *t, short mval[2]) /* ************************** SHEAR *************************** */ +void postInputShear(TransInfo *t, float values[3]) +{ + mul_v3_fl(values, 0.05f); +} + void initShear(TransInfo *t) { t->mode = TFM_SHEAR; t->transform = Shear; t->handleEvent = handleEventShear; + setInputPostFct(&t->mouse, postInputShear); initMouseInputMode(t, &t->mouse, INPUT_HORIZONTAL_ABSOLUTE); t->idx_max = 0; @@ -2281,7 +2369,7 @@ int Shear(TransInfo *t, short mval[2]) copy_m3_m4(persmat, t->viewmat); invert_m3_m3(persinv, persmat); - value = 0.05f * t->values[0]; + value = t->values[0]; snapGrid(t, &value); @@ -2330,8 +2418,8 @@ int Shear(TransInfo *t, short mval[2]) mul_m3_v3(tmat, vec); - add_v3_v3v3(vec, vec, t->center); - sub_v3_v3v3(vec, vec, td->center); + add_v3_v3(vec, t->center); + sub_v3_v3(vec, td->center); mul_v3_fl(vec, td->factor); @@ -2482,16 +2570,16 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't resize objects itself if((td->flag & TD_SINGLESIZE) && !(t->con.mode & CON_APPLY)){ /* scale val and reset size */ - *td->val = td->ival * (1 + (fsize[0] - 1) * td->factor); + *td->val = td->ival * (1 + (fsize[0] - 1) * td->factor); td->ext->size[0] = td->ext->isize[0]; td->ext->size[1] = td->ext->isize[1]; td->ext->size[2] = td->ext->isize[2]; - } + } else { /* Reset val if SINGLESIZE but using a constraint */ if (td->flag & TD_SINGLESIZE) - *td->val = td->ival; + *td->val = td->ival; td->ext->size[0] = td->ext->isize[0] * (1 + (fsize[0] - 1) * td->factor); td->ext->size[1] = td->ext->isize[1] * (1 + (fsize[1] - 1) * td->factor); @@ -2510,11 +2598,11 @@ static void ElementResize(TransInfo *t, TransData *td, float mat[3][3]) { mul_m3_v3(tmat, vec); - add_v3_v3v3(vec, vec, center); + add_v3_v3(vec, center); if (t->flag & T_POINTS) - sub_v3_v3v3(vec, vec, td->iloc); + sub_v3_v3(vec, td->iloc); else - sub_v3_v3v3(vec, vec, td->center); + sub_v3_v3(vec, td->center); mul_v3_fl(vec, td->factor); @@ -2652,6 +2740,8 @@ int ToSphere(TransInfo *t, short mval[2]) else if (ratio > 1) ratio = 1.0f; + t->values[0] = ratio; + /* header print for NumInput */ if (hasNumInput(&t->num)) { char c[20]; @@ -2696,11 +2786,19 @@ int ToSphere(TransInfo *t, short mval[2]) /* ************************** ROTATION *************************** */ +void postInputRotation(TransInfo *t, float values[3]) +{ + if ((t->con.mode & CON_APPLY) && t->con.applyRot) { + t->con.applyRot(t, NULL, t->axis, values); + } +} + void initRotation(TransInfo *t) { t->mode = TFM_ROTATION; t->transform = Rotation; + setInputPostFct(&t->mouse, postInputRotation); initMouseInputMode(t, &t->mouse, INPUT_ANGLE); t->ndof.axis = 16; @@ -2792,7 +2890,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short mul_m3_v3(mat, vec); // Applying rotation mul_m3_v3(imtx, vec); // To Local space - add_v3_v3v3(vec, vec, center); + add_v3_v3(vec, center); /* vec now is the location where the object has to be */ sub_v3_v3v3(vec, vec, td->center); // Translation needed from the initial location @@ -2864,9 +2962,9 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short /* translation */ sub_v3_v3v3(vec, td->center, center); mul_m3_v3(mat, vec); - add_v3_v3v3(vec, vec, center); + add_v3_v3(vec, center); /* vec now is the location where the object has to be */ - sub_v3_v3v3(vec, vec, td->center); + sub_v3_v3(vec, td->center); mul_m3_v3(td->smtx, vec); protectedTransBits(td->protectflag, vec); @@ -2880,7 +2978,7 @@ static void ElementRotation(TransInfo *t, TransData *td, float mat[3][3], short /* rotation */ if ((t->flag & T_V3D_ALIGN)==0) { // align mode doesn't rotate objects itself /* euler or quaternion? */ - if ((td->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) { + if ((td->rotOrder == ROT_MODE_QUAT) || (td->flag & TD_USEQUAT)) { mul_serie_m3(fmat, td->mtx, mat, td->smtx, 0, 0, 0, 0, 0); mat3_to_quat( quat,fmat); // Actual transform @@ -2973,7 +3071,7 @@ int Rotation(TransInfo *t, short mval[2]) snapGrid(t, &final); if ((t->con.mode & CON_APPLY) && t->con.applyRot) { - t->con.applyRot(t, NULL, t->axis, &final); + t->con.applyRot(t, NULL, t->axis, NULL); } else { /* reset axis if constraint is not set */ negate_v3_v3(t->axis, t->viewinv[2]); @@ -3004,12 +3102,10 @@ int Rotation(TransInfo *t, short mval[2]) sprintf(str, "Rot: %.2f%s %s", 180.0*final/M_PI, t->con.text, t->proptext); } + t->values[0] = final; + vec_rot_to_mat3( mat, t->axis, final); - // TRANSFORM_FIX_ME -// t->values[0] = final; // used in manipulator -// copy_m3_m3(t->mat, mat); // used in manipulator - applyRotation(t, final, t->axis); recalcData(t); @@ -3620,7 +3716,7 @@ int PushPull(TransInfo *t, short mval[2]) if (isLockConstraint(t)) { float dvec[3]; project_v3_v3v3(dvec, vec, axis); - sub_v3_v3v3(vec, vec, dvec); + sub_v3_v3(vec, dvec); } else { project_v3_v3v3(vec, vec, axis); @@ -3772,7 +3868,7 @@ void initBevelWeight(TransInfo *t) t->num.increment = t->snap[1]; - t->flag |= T_NO_CONSTRAINT; + t->flag |= T_NO_CONSTRAINT|T_NO_PROJECT; } int BevelWeight(TransInfo *t, short mval[2]) @@ -3845,7 +3941,7 @@ void initCrease(TransInfo *t) t->num.increment = t->snap[1]; - t->flag |= T_NO_CONSTRAINT; + t->flag |= T_NO_CONSTRAINT|T_NO_PROJECT; } int Crease(TransInfo *t, short mval[2]) @@ -4526,7 +4622,7 @@ static int createSlideVerts(TransInfo *t) // populate the SlideVerts - vertgh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + vertgh = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "createSlideVerts gh"); look = vertlist; while(look) { i=0; @@ -4680,7 +4776,7 @@ static int createSlideVerts(TransInfo *t) sub_v3_v3v3(vec, co2, co); } - add_v3_v3v3(start, start, vec); + add_v3_v3(start, vec); if (v3d) { view3d_project_float(t->ar, tempsv->down->v1->co, co, projectMat); @@ -4693,7 +4789,7 @@ static int createSlideVerts(TransInfo *t) sub_v3_v3v3(vec, co, co2); } - add_v3_v3v3(end, end, vec); + add_v3_v3(end, vec); totvec += 1.0f; nearest = (EditVert*)look->link; @@ -4705,7 +4801,7 @@ static int createSlideVerts(TransInfo *t) look = look->next; } - add_v3_v3v3(start, start, end); + add_v3_v3(start, end); mul_v3_fl(start, 0.5*(1.0/totvec)); VECCOPY(vec, start); start[0] = t->mval[0]; @@ -4727,7 +4823,7 @@ static int createSlideVerts(TransInfo *t) for (uvlay_idx=0; uvlay_idx<uvlay_tot; uvlay_idx++) { - uvarray[uvlay_idx] = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp); + uvarray[uvlay_idx] = BLI_ghash_new(BLI_ghashutil_ptrhash, BLI_ghashutil_ptrcmp, "createSlideVerts2 gh"); for(ev=em->verts.first;ev;ev=ev->next) { ev->tmp.l = 0; @@ -4886,7 +4982,7 @@ void initEdgeSlide(TransInfo *t) t->num.increment = t->snap[1]; - t->flag |= T_NO_CONSTRAINT; + t->flag |= T_NO_CONSTRAINT|T_NO_PROJECT; } int doEdgeSlide(TransInfo *t, float perc) @@ -5507,27 +5603,27 @@ static short getAnimEdit_DrawTime(TransInfo *t) /* This function is used by Animation Editor specific transform functions to do * the Snap Keyframe to Nearest Frame/Marker */ -static void doAnimEdit_SnapFrame(TransInfo *t, TransData *td, AnimData *adt, short autosnap) +static void doAnimEdit_SnapFrame(TransInfo *t, TransData *td, TransData2D *td2d, AnimData *adt, short autosnap) { /* snap key to nearest frame? */ if (autosnap == SACTSNAP_FRAME) { const Scene *scene= t->scene; - const short doTime= getAnimEdit_DrawTime(t); + const short doTime= 0; //XXX doesn't work - getAnimEdit_DrawTime(t); const double secf= FPS; double val; - + /* convert frame to nla-action time (if needed) */ if (adt) val= BKE_nla_tweakedit_remap(adt, *(td->val), NLATIME_CONVERT_MAP); else val= *(td->val); - + /* do the snapping to nearest frame/second */ if (doTime) val= (float)( floor((val/secf) + 0.5f) * secf ); else val= (float)( floor(val+0.5f) ); - + /* convert frame out of nla-action time */ if (adt) *(td->val)= BKE_nla_tweakedit_remap(adt, val, NLATIME_CONVERT_UNMAP); @@ -5537,23 +5633,34 @@ static void doAnimEdit_SnapFrame(TransInfo *t, TransData *td, AnimData *adt, sho /* snap key to nearest marker? */ else if (autosnap == SACTSNAP_MARKER) { float val; - + /* convert frame to nla-action time (if needed) */ if (adt) val= BKE_nla_tweakedit_remap(adt, *(td->val), NLATIME_CONVERT_MAP); else val= *(td->val); - + /* snap to nearest marker */ // TODO: need some more careful checks for where data comes from val= (float)ED_markers_find_nearest_marker_time(&t->scene->markers, val); - + /* convert frame out of nla-action time */ if (adt) *(td->val)= BKE_nla_tweakedit_remap(adt, val, NLATIME_CONVERT_UNMAP); else *(td->val)= val; } + + /* if the handles are to be moved too (as side-effect of keyframes moving, to keep the general effect) + * offset them by the same amount so that the general angles are maintained (i.e. won't change while + * handles are free-to-roam and keyframes are snap-locked) + */ + if ((td->flag & TD_MOVEHANDLE1) && td2d->h1) { + td2d->h1[0] = td2d->ih1[0] + *td->val - td->ival; + } + if ((td->flag & TD_MOVEHANDLE2) && td2d->h2) { + td2d->h2[0] = td2d->ih2[0] + *td->val - td->ival; + } } /* ----------------- Translation ----------------------- */ @@ -5616,6 +5723,7 @@ static void headerTimeTranslate(TransInfo *t, char *str) static void applyTimeTranslate(TransInfo *t, float sval) { TransData *td = t->data; + TransData2D *td2d = t->data2d; Scene *scene = t->scene; int i; @@ -5624,16 +5732,18 @@ static void applyTimeTranslate(TransInfo *t, float sval) const short autosnap= getAnimEdit_SnapMode(t); - float deltax, val; + float deltax, val, valprev; /* it doesn't matter whether we apply to t->data or t->data2d, but t->data2d is more convenient */ - for (i = 0 ; i < t->total; i++, td++) { + for (i = 0 ; i < t->total; i++, td++, td2d++) { /* it is assumed that td->extra is a pointer to the AnimData, * whose active action is where this keyframe comes from * (this is only valid when not in NLA) */ AnimData *adt= (t->spacetype != SPACE_NLA) ? td->extra : NULL; + valprev = *td->val; + /* check if any need to apply nla-mapping */ if (adt && t->spacetype != SPACE_SEQ) { deltax = t->values[0]; @@ -5663,7 +5773,7 @@ static void applyTimeTranslate(TransInfo *t, float sval) } /* apply nearest snapping */ - doAnimEdit_SnapFrame(t, td, adt, autosnap); + doAnimEdit_SnapFrame(t, td, td2d, adt, autosnap); } } @@ -5807,6 +5917,7 @@ int TimeSlide(TransInfo *t, short mval[2]) UI_view2d_region_to_view(v2d, t->imval[0], t->imval[0], &sval[0], &sval[1]); /* t->values[0] stores cval[0], which is the current mouse-pointer location (in frames) */ + // XXX Need to be able to repeat this t->values[0] = cval[0]; /* handle numeric-input stuff */ @@ -5873,6 +5984,7 @@ static void headerTimeScale(TransInfo *t, char *str) { static void applyTimeScale(TransInfo *t) { Scene *scene = t->scene; TransData *td = t->data; + TransData2D *td2d = t->data2d; int i; const short autosnap= getAnimEdit_SnapMode(t); @@ -5880,7 +5992,7 @@ static void applyTimeScale(TransInfo *t) { const double secf= FPS; - for (i = 0 ; i < t->total; i++, td++) { + for (i = 0 ; i < t->total; i++, td++, td2d++) { /* it is assumed that td->extra is a pointer to the AnimData, * whose active action is where this keyframe comes from * (this is only valid when not in NLA) @@ -5906,7 +6018,7 @@ static void applyTimeScale(TransInfo *t) { *(td->val) += startx; /* apply nearest snapping */ - doAnimEdit_SnapFrame(t, td, adt, autosnap); + doAnimEdit_SnapFrame(t, td, td2d, adt, autosnap); } } @@ -5941,11 +6053,11 @@ void BIF_TransformSetUndo(char *str) void NDofTransform() { #if 0 // TRANSFORM_FIX_ME - float fval[7]; - float maxval = 50.0f; // also serves as threshold - int axis = -1; - int mode = 0; - int i; + float fval[7]; + float maxval = 50.0f; // also serves as threshold + int axis = -1; + int mode = 0; + int i; getndof(fval); diff --git a/source/blender/editors/transform/transform.h b/source/blender/editors/transform/transform.h index 7bf0a99103c..487609e0ad8 100644 --- a/source/blender/editors/transform/transform.h +++ b/source/blender/editors/transform/transform.h @@ -109,25 +109,25 @@ typedef struct TransSnap { typedef struct TransCon { short orientation; /**/ - char text[50]; /* Description of the Constraint for header_print */ - float mtx[3][3]; /* Matrix of the Constraint space */ - float imtx[3][3]; /* Inverse Matrix of the Constraint space */ - float pmtx[3][3]; /* Projection Constraint Matrix (same as imtx with some axis == 0) */ - float center[3]; /* transformation center to define where to draw the view widget - ALWAYS in global space. Unlike the transformation center */ + char text[50]; /* Description of the Constraint for header_print */ + float mtx[3][3]; /* Matrix of the Constraint space */ + float imtx[3][3]; /* Inverse Matrix of the Constraint space */ + float pmtx[3][3]; /* Projection Constraint Matrix (same as imtx with some axis == 0) */ + float center[3]; /* transformation center to define where to draw the view widget + ALWAYS in global space. Unlike the transformation center */ short imval[2]; /* initial mouse value for visual calculation */ - /* the one in TransInfo is not garanty to stay the same (Rotates change it) */ - int mode; /* Mode flags of the Constraint */ + /* the one in TransInfo is not garanty to stay the same (Rotates change it) */ + int mode; /* Mode flags of the Constraint */ void (*drawExtra)(struct TransInfo *); /* For constraints that needs to draw differently from the other uses this instead of the generic draw function */ - void (*applyVec)(struct TransInfo *, struct TransData *, float *, float *, float *); - /* Apply function pointer for linear vectorial transformation */ - /* The last three parameters are pointers to the in/out/printable vectors */ - void (*applySize)(struct TransInfo *, struct TransData *, float [3][3]); - /* Apply function pointer for size transformation */ - void (*applyRot)(struct TransInfo *, struct TransData *, float [3], float *); - /* Apply function pointer for rotation transformation */ + void (*applyVec)(struct TransInfo *, struct TransData *, float *, float *, float *); + /* Apply function pointer for linear vectorial transformation */ + /* The last three parameters are pointers to the in/out/printable vectors */ + void (*applySize)(struct TransInfo *, struct TransData *, float [3][3]); + /* Apply function pointer for size transformation */ + void (*applyRot)(struct TransInfo *, struct TransData *, float [3], float *); + /* Apply function pointer for rotation transformation */ } TransCon; typedef struct TransDataExtension { @@ -136,22 +136,25 @@ typedef struct TransDataExtension { float drotAxis[3]; /* Initial object drotAxis */ float dquat[4]; /* Initial object dquat */ float dsize[3]; /* Initial object dsize */ - float *rot; /* Rotation of the data to transform (Faculative) */ - float irot[3]; /* Initial rotation */ - float *quat; /* Rotation quaternion of the data to transform (Faculative) */ - float iquat[4]; /* Initial rotation quaternion */ + float *rot; /* Rotation of the data to transform (Faculative) */ + float irot[3]; /* Initial rotation */ + float *quat; /* Rotation quaternion of the data to transform (Faculative) */ + float iquat[4]; /* Initial rotation quaternion */ float *rotAngle; /* Rotation angle of the data to transform (Faculative) */ float irotAngle; /* Initial rotation angle */ float *rotAxis; /* Rotation axis of the data to transform (Faculative) */ float irotAxis[4]; /* Initial rotation axis */ - float *size; /* Size of the data to transform (Faculative) */ - float isize[3]; /* Initial size */ + float *size; /* Size of the data to transform (Faculative) */ + float isize[3]; /* Initial size */ float obmat[4][4]; /* Object matrix */ } TransDataExtension; typedef struct TransData2D { float loc[3]; /* Location of data used to transform (x,y,0) */ float *loc2d; /* Pointer to real 2d location of data */ + + float *h1, *h2; /* Pointer to handle locations, if handles aren't being moved independantly*/ + float ih1[2], ih2[2]; } TransData2D; /* we need to store 2 handles for each transdata incase the other handle wasnt selected */ @@ -225,28 +228,29 @@ typedef struct TransData { float dist; /* Distance needed to affect element (for Proportionnal Editing) */ float rdist; /* Distance to the nearest element (for Proportionnal Editing) */ float factor; /* Factor of the transformation (for Proportionnal Editing) */ - float *loc; /* Location of the data to transform */ - float iloc[3]; /* Initial location */ + float *loc; /* Location of the data to transform */ + float iloc[3]; /* Initial location */ float *val; /* Value pointer for special transforms */ float ival; /* Old value*/ - float center[3]; /* Individual data center */ - float mtx[3][3]; /* Transformation matrix from data space to global space */ - float smtx[3][3]; /* Transformation matrix from global space to data space */ + float center[3]; /* Individual data center */ + float mtx[3][3]; /* Transformation matrix from data space to global space */ + float smtx[3][3]; /* Transformation matrix from global space to data space */ float axismtx[3][3];/* Axis orientation matrix of the data */ struct Object *ob; struct bConstraint *con; /* for objects/bones, the first constraint in its constraint stack */ TransDataExtension *ext; /* for objects, poses. 1 single malloc per TransInfo! */ TransDataCurveHandleFlags *hdata; /* for curves, stores handle flags for modification/cancel */ void *extra; /* extra data (mirrored element pointer, in editmode mesh to EditVert) (editbone for roll fixing) (...) */ - int flag; /* Various flags */ + int flag; /* Various flags */ short protectflag; /* If set, copy of Object or PoseChannel protection */ int rotOrder; /* rotation mode, as defined in eRotationModes (DNA_action_types.h) */ } TransData; typedef struct MouseInput { void (*apply)(struct TransInfo *, struct MouseInput *, short [2], float [3]); + void (*post)(struct TransInfo *, float [3]); - short imval[2]; /* initial mouse position */ + short imval[2]; /* initial mouse position */ char precision; short precision_mval[2]; /* mouse position when precision key was pressed */ int center[2]; @@ -255,32 +259,32 @@ typedef struct MouseInput { } MouseInput; typedef struct TransInfo { - int mode; /* current mode */ - int flag; /* generic flags for special behaviors */ - int modifiers; /* special modifiers, by function, not key */ + int mode; /* current mode */ + int flag; /* generic flags for special behaviors */ + int modifiers; /* special modifiers, by function, not key */ short state; /* current state (running, canceled,...)*/ - int options; /* current context/options for transform */ - float val; /* init value for some transformations (and rotation angle) */ - float fac; /* factor for distance based transform */ - int (*transform)(struct TransInfo *, short *); - /* transform function pointer */ + int options; /* current context/options for transform */ + float val; /* init value for some transformations (and rotation angle) */ + float fac; /* factor for distance based transform */ + int (*transform)(struct TransInfo *, short *); + /* transform function pointer */ int (*handleEvent)(struct TransInfo *, struct wmEvent *); /* event handler function pointer RETURN 1 if redraw is needed */ - int total; /* total number of transformed data */ - TransData *data; /* transformed data (array) */ + int total; /* total number of transformed data */ + TransData *data; /* transformed data (array) */ TransDataExtension *ext; /* transformed data extension (array) */ TransData2D *data2d; /* transformed data for 2d (array) */ - TransCon con; /* transformed constraint */ - TransSnap tsnap; - NumInput num; /* numerical input */ - NDofInput ndof; /* ndof input */ - MouseInput mouse; /* mouse input */ - char redraw; /* redraw flag */ + TransCon con; /* transformed constraint */ + TransSnap tsnap; + NumInput num; /* numerical input */ + NDofInput ndof; /* ndof input */ + MouseInput mouse; /* mouse input */ + char redraw; /* redraw flag */ float prop_size; /* proportional circle radius */ char proptext[20]; /* proportional falloff text */ - float center[3]; /* center of transformation */ - int center2d[2]; /* center in screen coordinates */ - short imval[2]; /* initial mouse position */ + float center[3]; /* center of transformation */ + int center2d[2]; /* center in screen coordinates */ + short imval[2]; /* initial mouse position */ short event_type; /* event->type used to invoke transform */ short idx_max; /* maximum index on the input vector */ float snap[3]; /* Snapping Gears */ @@ -327,12 +331,12 @@ typedef struct TransInfo { struct Scene *scene; struct ToolSettings *settings; struct wmTimer *animtimer; - short mval[2]; /* current mouse position */ - struct Object *obedit; - void *draw_handle_apply; - void *draw_handle_view; - void *draw_handle_pixel; - void *draw_handle_cursor; + short mval[2]; /* current mouse position */ + struct Object *obedit; + void *draw_handle_apply; + void *draw_handle_view; + void *draw_handle_pixel; + void *draw_handle_cursor; } TransInfo; @@ -359,7 +363,7 @@ typedef struct TransInfo { #define T_POSE (1 << 2) #define T_TEXTURE (1 << 3) #define T_CAMERA (1 << 4) - // trans on points, having no rotation/scale + // trans on points, having no rotation/scale #define T_POINTS (1 << 6) // for manipulator exceptions, like scaling using center point, drawing help lines #define T_USES_MANIPULATOR (1 << 7) @@ -389,6 +393,11 @@ typedef struct TransInfo { /* to specificy if we save back settings at the end */ #define T_MODAL (1 << 21) + /* no retopo */ +#define T_NO_PROJECT (1 << 22) + +#define T_RELEASE_CONFIRM (1 << 23) + /* TransInfo->modifiers */ #define MOD_CONSTRAINT_SELECT 0x01 #define MOD_PRECISION 0x02 @@ -432,6 +441,8 @@ typedef struct TransInfo { #define TD_NOTIMESNAP (1 << 14) /* for Graph Editor autosnap, indicates that point should not undergo autosnapping */ #define TD_INTVALUES (1 << 15) /* for Graph Editor - curves that can only have int-values need their keyframes tagged with this */ #define TD_MIRROR_EDGE (1 << 16) /* For editmode mirror, clamp to x = 0 */ +#define TD_MOVEHANDLE1 (1 << 17) /* For fcurve handles, move them along with their keyframes */ +#define TD_MOVEHANDLE2 (1 << 18) /* transsnap->status */ #define SNAP_FORCED 1 @@ -643,6 +654,7 @@ int handleMouseInput(struct TransInfo *t, struct MouseInput *mi, struct wmEvent void applyMouseInput(struct TransInfo *t, struct MouseInput *mi, short mval[2], float output[3]); void setCustomPoints(TransInfo *t, MouseInput *mi, short start[2], short end[2]); +void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *, float [3])); /*********************** Generics ********************************/ diff --git a/source/blender/editors/transform/transform_constraints.c b/source/blender/editors/transform/transform_constraints.c index cf470426d72..9169d0a87bb 100644 --- a/source/blender/editors/transform/transform_constraints.c +++ b/source/blender/editors/transform/transform_constraints.c @@ -32,10 +32,6 @@ #include <string.h> #include <math.h> -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - #ifndef WIN32 #include <unistd.h> #else @@ -44,19 +40,6 @@ #include "MEM_guardedalloc.h" -#include "DNA_action_types.h" -#include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_effect_types.h" -#include "DNA_image_types.h" -#include "DNA_ipo_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" -#include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_meta_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" @@ -79,7 +62,6 @@ // //#include "mydevice.h" -#include "WM_types.h" #include "UI_resources.h" @@ -542,6 +524,7 @@ void setLocalConstraint(TransInfo *t, int mode, const char text[]) { if (t->flag & T_EDIT) { float obmat[3][3]; copy_m3_m4(obmat, t->scene->obedit->obmat); + normalize_m3(obmat); setConstraint(t, obmat, mode, text); } else { @@ -638,7 +621,7 @@ void drawConstraint(const struct bContext *C, TransInfo *t) float vec[3]; char col2[3] = {255,255,255}; convertViewVec(t, vec, (short)(t->mval[0] - t->con.imval[0]), (short)(t->mval[1] - t->con.imval[1])); - add_v3_v3v3(vec, vec, tc->center); + add_v3_v3(vec, tc->center); drawLine(t, tc->center, tc->mtx[0], 'x', 0); drawLine(t, tc->center, tc->mtx[1], 'y', 0); @@ -870,14 +853,14 @@ static void setNearestAxis3d(TransInfo *t) mul_v3_fl(axis, zfac); /* now we can project to get window coordinate */ - add_v3_v3v3(axis, axis, t->con.center); + add_v3_v3(axis, t->con.center); projectIntView(t, axis, icoord); axis[0] = (float)(icoord[0] - t->center2d[0]); axis[1] = (float)(icoord[1] - t->center2d[1]); axis[2] = 0.0f; - if (normalize_v3(axis) != 0.0f) { + if (normalize_v3(axis) != 0.0f) { project_v3_v3v3(proj, mvec, axis); sub_v3_v3v3(axis, mvec, proj); len[i] = normalize_v3(axis); diff --git a/source/blender/editors/transform/transform_conversions.c b/source/blender/editors/transform/transform_conversions.c index f47a2414a24..1e207bb5376 100644 --- a/source/blender/editors/transform/transform_conversions.c +++ b/source/blender/editors/transform/transform_conversions.c @@ -38,38 +38,17 @@ #include "MEM_guardedalloc.h" #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_camera_types.h" -#include "DNA_curve_types.h" -#include "DNA_effect_types.h" -#include "DNA_image_types.h" -#include "DNA_key_types.h" -#include "DNA_lamp_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_meta_types.h" -#include "DNA_modifier_types.h" -#include "DNA_nla_types.h" #include "DNA_node_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" -#include "DNA_particle_types.h" -#include "DNA_scene_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" #include "DNA_sequence_types.h" -#include "DNA_texture_types.h" #include "DNA_view3d_types.h" -#include "DNA_world_types.h" -#include "DNA_userdef_types.h" -#include "DNA_property_types.h" -#include "DNA_vfont_types.h" #include "DNA_constraint_types.h" -#include "DNA_listBase.h" -#include "DNA_gpencil_types.h" +#include "BKE_anim.h" #include "BKE_action.h" #include "BKE_armature.h" #include "BKE_blender.h" @@ -101,21 +80,9 @@ #include "BKE_context.h" #include "BKE_report.h" #include "BKE_tessmesh.h" +#include "BKE_scene.h" -//#include "BIF_editview.h" -//#include "BIF_editlattice.h" -//#include "BIF_editconstraint.h" -//#include "BIF_editmesh.h" -//#include "BIF_editsima.h" -//#include "BIF_editparticle.h" #include "BIF_gl.h" -//#include "BIF_poseobject.h" -//#include "BIF_meshtools.h" -//#include "BIF_mywindow.h" -//#include "BIF_resources.h" -//#include "BIF_screen.h" -//#include "BIF_space.h" -//#include "BIF_toolbox.h" #include "ED_anim_api.h" #include "ED_armature.h" @@ -128,24 +95,15 @@ #include "ED_mesh.h" #include "ED_types.h" #include "ED_uvedit.h" -#include "ED_view3d.h" #include "UI_view2d.h" -//#include "BSE_edit.h" -//#include "BDR_editobject.h" // reset_slowparents() -//#include "BDR_gpencil.h" - #include "BLI_math.h" #include "BLI_blenlib.h" #include "BLI_editVert.h" #include "BLI_array.h" -//#include "editmesh.h" -// -//#include "blendef.h" -// -//#include "mydevice.h" +#include "RNA_access.h" extern ListBase editelems; @@ -291,7 +249,7 @@ static void set_prop_dist(TransInfo *t, short with_dist) static void createTransTexspace(bContext *C, TransInfo *t) { - Scene *scene = CTX_data_scene(C); + Scene *scene = t->scene; TransData *td; Object *ob; ID *id; @@ -719,14 +677,14 @@ int count_set_pose_transflags(int *out_mode, short around, Object *ob) int hastranslation = 0; int total = 0; - for(pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { + for (pchan = ob->pose->chanbase.first; pchan; pchan = pchan->next) { bone = pchan->bone; - if(bone->layer & arm->layer) { - if((bone->flag & BONE_SELECTED) && !(ob->proxy && pchan->bone->layer & arm->layer_protected)) + if ((bone->layer & arm->layer) && !(pchan->bone->flag & BONE_HIDDEN_P)) { + if ((bone->flag & BONE_SELECTED) && !(ob->proxy && pchan->bone->layer & arm->layer_protected)) bone->flag |= BONE_TRANSFORM; else bone->flag &= ~BONE_TRANSFORM; - + bone->flag &= ~BONE_HINGE_CHILD_TRANSFORM; bone->flag &= ~BONE_TRANSFORM_CHILD; } @@ -1029,8 +987,8 @@ static void createTransPose(bContext *C, TransInfo *t, Object *ob) t->poseobj= ob; /* we also allow non-active objects to be transformed, in weightpaint */ /* init trans data */ - td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransPoseBone"); - tdx = t->ext = MEM_callocN(t->total*sizeof(TransDataExtension), "TransPoseBoneExt"); + td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransPoseBone"); + tdx = t->ext = MEM_callocN(t->total*sizeof(TransDataExtension), "TransPoseBoneExt"); for(i=0; i<t->total; i++, td++, tdx++) { td->ext= tdx; td->val = NULL; @@ -1075,7 +1033,7 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t) t->total = 0; for (ebo = edbo->first; ebo; ebo = ebo->next) { - if(ebo->layer & arm->layer) + if (EBONE_VISIBLE(arm, ebo) && !(ebo->flag & BONE_EDITMODE_LOCKED)) { if (t->mode==TFM_BONESIZE) { @@ -1097,18 +1055,19 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t) } } - if (!t->total) return; + if (!t->total) return; copy_m3_m4(mtx, t->obedit->obmat); invert_m3_m3(smtx, mtx); - td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransEditBone"); + td = t->data = MEM_callocN(t->total*sizeof(TransData), "TransEditBone"); for (ebo = edbo->first; ebo; ebo = ebo->next) { ebo->oldlength = ebo->length; // length==0.0 on extrude, used for scaling radius of bone points - if(ebo->layer & arm->layer) { + if (EBONE_VISIBLE(arm, ebo) && !(ebo->flag & BONE_EDITMODE_LOCKED)) + { if (t->mode==TFM_BONE_ENVELOPE) { if (ebo->flag & BONE_ROOTSEL) @@ -1258,7 +1217,7 @@ static void createTransArmatureVerts(bContext *C, TransInfo *t) static void createTransMBallVerts(bContext *C, TransInfo *t) { MetaBall *mb = (MetaBall*)t->obedit->data; - MetaElem *ml; + MetaElem *ml; TransData *td; TransDataExtension *tx; float mtx[3][3], smtx[3][3]; @@ -1388,7 +1347,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t) Object *obedit= CTX_data_edit_object(C); Curve *cu= obedit->data; TransData *td = NULL; - Nurb *nu; + Nurb *nu; BezTriple *bezt; BPoint *bp; float mtx[3][3], smtx[3][3]; @@ -1436,7 +1395,7 @@ static void createTransCurveVerts(bContext *C, TransInfo *t) copy_m3_m4(mtx, t->obedit->obmat); invert_m3_m3(smtx, mtx); - td = t->data; + td = t->data; for(nu= cu->editnurb->first; nu; nu= nu->next) { if(nu->type == CU_BEZIER) { TransData *head, *tail; @@ -1608,7 +1567,7 @@ static void createTransLatticeVerts(bContext *C, TransInfo *t) bp++; } - /* note: in prop mode we need at least 1 selected */ + /* note: in prop mode we need at least 1 selected */ if (countsel==0) return; if(propmode) t->total = count; @@ -1693,7 +1652,7 @@ static void createTransParticleVerts(bContext *C, TransInfo *t) } } - /* note: in prop mode we need at least 1 selected */ + /* note: in prop mode we need at least 1 selected */ if (hasselected==0) return; t->total = count; @@ -2238,7 +2197,7 @@ static void createTransEditVerts(bContext *C, TransInfo *t) } } - /* note: in prop mode we need at least 1 selected */ + /* note: in prop mode we need at least 1 selected */ if (countsel==0) return; /* check active */ @@ -2560,7 +2519,7 @@ static void createTransUVs(bContext *C, TransInfo *t) { SpaceImage *sima = CTX_wm_space_image(C); Image *ima = CTX_data_edit_image(C); - Scene *scene = CTX_data_scene(C); + Scene *scene = t->scene; TransData *td = NULL; TransData2D *td2d = NULL; MTexPoly *tf; @@ -2593,7 +2552,7 @@ static void createTransUVs(bContext *C, TransInfo *t) } } - /* note: in prop mode we need at least 1 selected */ + /* note: in prop mode we need at least 1 selected */ if (countsel==0) return; t->total= (propmode)? count: countsel; @@ -2717,7 +2676,7 @@ static short FrameOnMouseSide(char side, float frame, float cframe) static void createTransNlaData(bContext *C, TransInfo *t) { - Scene *scene= CTX_data_scene(C); + Scene *scene= t->scene; TransData *td = NULL; TransDataNla *tdn = NULL; @@ -2727,7 +2686,6 @@ static void createTransNlaData(bContext *C, TransInfo *t) int filter; int count=0; - char side; /* determine what type of data we are operating on */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -2743,11 +2701,11 @@ static void createTransNlaData(bContext *C, TransInfo *t) float xmouse, ymouse; UI_view2d_region_to_view(&ac.ar->v2d, t->imval[0], t->imval[1], &xmouse, &ymouse); - side = (xmouse > CFRA) ? 'R' : 'L'; // XXX use t->frame_side + t->frame_side= (xmouse > CFRA) ? 'R' : 'L'; } else { /* normal transform - both sides of current frame are considered */ - side = 'B'; + t->frame_side = 'B'; } /* loop 1: count how many strips are selected (consider each strip as 2 points) */ @@ -2764,8 +2722,8 @@ static void createTransNlaData(bContext *C, TransInfo *t) /* transition strips can't get directly transformed */ if (strip->type != NLASTRIP_TYPE_TRANSITION) { if (strip->flag & NLASTRIP_FLAG_SELECT) { - if (FrameOnMouseSide(side, strip->start, (float)CFRA)) count++; - if (FrameOnMouseSide(side, strip->end, (float)CFRA)) count++; + if (FrameOnMouseSide(t->frame_side, strip->start, (float)CFRA)) count++; + if (FrameOnMouseSide(t->frame_side, strip->end, (float)CFRA)) count++; } } } @@ -2828,13 +2786,13 @@ static void createTransNlaData(bContext *C, TransInfo *t) center[2]= 0.0f; /* set td's based on which handles are applicable */ - if (FrameOnMouseSide(side, strip->start, (float)CFRA)) + if (FrameOnMouseSide(t->frame_side, strip->start, (float)CFRA)) { /* just set tdn to assume that it only has one handle for now */ tdn->handle= -1; /* now, link the transform data up to this data */ - if (t->mode == TFM_TRANSLATION) { + if (ELEM(t->mode, TFM_TRANSLATION, TFM_TIME_EXTEND)) { td->loc= tdn->h1; VECCOPY(td->iloc, tdn->h1); @@ -2859,13 +2817,13 @@ static void createTransNlaData(bContext *C, TransInfo *t) td->extra= tdn; td++; } - if (FrameOnMouseSide(side, strip->end, (float)CFRA)) + if (FrameOnMouseSide(t->frame_side, strip->end, (float)CFRA)) { /* if tdn is already holding the start handle, then we're doing both, otherwise, only end */ tdn->handle= (tdn->handle) ? 2 : 1; /* now, link the transform data up to this data */ - if (t->mode == TFM_TRANSLATION) { + if (ELEM(t->mode, TFM_TRANSLATION, TFM_TIME_EXTEND)) { td->loc= tdn->h2; VECCOPY(td->iloc, tdn->h2); @@ -3038,7 +2996,7 @@ static void posttrans_fcurve_clean (FCurve *fcu) * (if any keyframes were found, or the whole curve wasn't affected) */ if ((len) && (len != fcu->totvert)) { - for (i = 0; i < fcu->totvert; i++) { + for (i= fcu->totvert-1; i >= 0; i--) { BezTriple *bezt= &fcu->bezt[i]; if (BEZSELECTED(bezt) == 0) { @@ -3048,7 +3006,7 @@ static void posttrans_fcurve_clean (FCurve *fcu) delete_fcurve_key(fcu, i, 0); break; } - else if (bezt->vec[1][0] > selcache[index]) + else if (bezt->vec[1][0] < selcache[index]) break; } } @@ -3114,9 +3072,8 @@ static int count_fcurve_keys(FCurve *fcu, char side, float cfra) bezt->f1 |= SELECT; bezt->f3 |= SELECT; - /* increment by 3, as there are 3 points (3 * x-coordinates) that need transform */ if (FrameOnMouseSide(side, bezt->vec[1][0], cfra)) - count += 3; + count += 1; } } @@ -3165,9 +3122,10 @@ static void TimeToTransData(TransData *td, float *time, AnimData *adt) * The 'side' argument is needed for the extend mode. 'B' = both sides, 'R'/'L' mean only data * on the named side are used. */ -static TransData *FCurveToTransData(TransData *td, FCurve *fcu, AnimData *adt, char side, float cfra) +static TransData *ActionFCurveToTransData(TransData *td, TransData2D **td2dv, FCurve *fcu, AnimData *adt, char side, float cfra) { BezTriple *bezt; + TransData2D *td2d = *td2dv; int i; if (fcu == NULL) @@ -3178,19 +3136,24 @@ static TransData *FCurveToTransData(TransData *td, FCurve *fcu, AnimData *adt, c if (BEZSELECTED(bezt)) { /* only add if on the right 'side' of the current frame */ if (FrameOnMouseSide(side, bezt->vec[1][0], cfra)) { - /* each control point needs to be added separetely */ - TimeToTransData(td, bezt->vec[0], adt); - td++; - TimeToTransData(td, bezt->vec[1], adt); - td++; - TimeToTransData(td, bezt->vec[2], adt); + /*set flags to move handles as necassary*/ + td->flag |= TD_MOVEHANDLE1|TD_MOVEHANDLE2; + td2d->h1 = bezt->vec[0]; + td2d->h2 = bezt->vec[2]; + + VECCOPY2D(td2d->ih1, td2d->h1); + VECCOPY2D(td2d->ih2, td2d->h2); + td++; + td2d++; } } } + *td2dv = td2d; + return td; } @@ -3256,8 +3219,9 @@ static int GPLayerToTransData (TransData *td, tGPFtransdata *tfd, bGPDlayer *gpl static void createTransActionData(bContext *C, TransInfo *t) { - Scene *scene= CTX_data_scene(C); + Scene *scene= t->scene; TransData *td = NULL; + TransData2D *td2d = NULL; tGPFtransdata *tfd = NULL; bAnimContext ac; @@ -3267,7 +3231,6 @@ static void createTransActionData(bContext *C, TransInfo *t) int count=0; float cfra; - char side; /* determine what type of data we are operating on */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -3286,11 +3249,11 @@ static void createTransActionData(bContext *C, TransInfo *t) float xmouse, ymouse; UI_view2d_region_to_view(&ac.ar->v2d, t->imval[0], t->imval[1], &xmouse, &ymouse); - side = (xmouse > CFRA) ? 'R' : 'L'; // XXX use t->frame_side + t->frame_side = (xmouse > CFRA) ? 'R' : 'L'; // XXX use t->frame_side } else { /* normal transform - both sides of current frame are considered */ - side = 'B'; + t->frame_side = 'B'; } /* loop 1: fully select ipo-keys and count how many BezTriples are selected */ @@ -3306,9 +3269,9 @@ static void createTransActionData(bContext *C, TransInfo *t) cfra = (float)CFRA; //if (ale->type == ANIMTYPE_GPLAYER) - // count += count_gplayer_frames(ale->data, side, cfra); + // count += count_gplayer_frames(ale->data, t->frame_side, cfra); //else - count += count_fcurve_keys(ale->key_data, side, cfra); + count += count_fcurve_keys(ale->key_data, t->frame_side, cfra); } /* stop if trying to build list if nothing selected */ @@ -3322,7 +3285,9 @@ static void createTransActionData(bContext *C, TransInfo *t) t->total= count; t->data= MEM_callocN(t->total*sizeof(TransData), "TransData(Action Editor)"); + t->data2d= MEM_callocN(t->total*sizeof(TransData2D), "transdata2d"); td= t->data; + td2d = t->data2d; if (ac.datatype == ANIMCONT_GPENCIL) { if (t->mode == TFM_TIME_SLIDE) { @@ -3343,7 +3308,7 @@ static void createTransActionData(bContext *C, TransInfo *t) // bGPDlayer *gpl= (bGPDlayer *)ale->data; // int i; // - // i = GPLayerToTransData(td, tfd, gpl, side, cfra); + // i = GPLayerToTransData(td, tfd, gpl, t->frame_side, cfra); // td += i; // tfd += i; //} @@ -3359,7 +3324,7 @@ static void createTransActionData(bContext *C, TransInfo *t) else cfra = (float)CFRA; - td= FCurveToTransData(td, fcu, adt, side, cfra); + td= ActionFCurveToTransData(td, &td2d, fcu, adt, t->frame_side, cfra); //} } @@ -3391,8 +3356,13 @@ static void createTransActionData(bContext *C, TransInfo *t) /* Helper function for createTransGraphEditData, which is reponsible for associating * source data with transform data */ -static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt, float *loc, float *cent, short selected, short ishandle, short intvals) +static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt, BezTriple *bezt, + int bi, short selected, short ishandle, short intvals, + float mtx[3][3], float smtx[3][3]) { + float *loc = bezt->vec[bi]; + float *cent = bezt->vec[1]; + /* New location from td gets dumped onto the old-location of td2d, which then * gets copied to the actual data at td2d->loc2d (bezt->vec[n]) * @@ -3423,7 +3393,21 @@ static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt, VECCOPY(td->center, cent); VECCOPY(td->iloc, td->loc); } - + + if (td->flag & TD_MOVEHANDLE1) { + td2d->h1 = bezt->vec[0]; + VECCOPY2D(td2d->ih1, td2d->h1); + } + else + td2d->h1 = NULL; + + if (td->flag & TD_MOVEHANDLE2) { + td2d->h2 = bezt->vec[2]; + VECCOPY2D(td2d->ih2, td2d->h2); + } + else + td2d->h2 = NULL; + memset(td->axismtx, 0, sizeof(td->axismtx)); td->axismtx[2][2] = 1.0f; @@ -3443,16 +3427,17 @@ static void bezt_to_transdata (TransData *td, TransData2D *td2d, AnimData *adt, td->flag |= TD_NOTIMESNAP; if (intvals) td->flag |= TD_INTVALUES; - - unit_m3(td->mtx); - unit_m3(td->smtx); + + /* copy space-conversion matrices for dealing with non-uniform scales */ + copy_m3_m3(td->mtx, mtx); + copy_m3_m3(td->smtx, smtx); } static void createTransGraphEditData(bContext *C, TransInfo *t) { SpaceIpo *sipo= CTX_wm_space_graph(C); - Scene *scene= CTX_data_scene(C); - ARegion *ar= CTX_wm_region(C); + Scene *scene= t->scene; + ARegion *ar= t->ar; View2D *v2d= &ar->v2d; TransData *td = NULL; @@ -3466,7 +3451,7 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) BezTriple *bezt; int count=0, i; float cfra; - char side; + float mtx[3][3], smtx[3][3]; /* determine what type of data we are operating on */ if (ANIM_animdata_get_context(C, &ac) == 0) @@ -3483,11 +3468,11 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) float xmouse, ymouse; UI_view2d_region_to_view(v2d, t->imval[0], t->imval[1], &xmouse, &ymouse); - side = (xmouse > CFRA) ? 'R' : 'L'; // XXX use t->frame_side + t->frame_side = (xmouse > CFRA) ? 'R' : 'L'; // XXX use t->frame_side } else { /* normal transform - both sides of current frame are considered */ - side = 'B'; + t->frame_side = 'B'; } /* loop 1: count how many BezTriples (specifically their verts) are selected (or should be edited) */ @@ -3509,8 +3494,8 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) /* only include BezTriples whose 'keyframe' occurs on the same side of the current frame as mouse */ for (i=0, bezt=fcu->bezt; i < fcu->totvert; i++, bezt++) { - if (FrameOnMouseSide(side, bezt->vec[1][0], cfra)) { - if (sipo->around == V3D_LOCAL) { + if (FrameOnMouseSide(t->frame_side, bezt->vec[1][0], cfra)) { + if (sipo->around == V3D_LOCAL && !ELEM(t->mode, TFM_TRANSLATION, TFM_TIME_TRANSLATE)) { /* for local-pivot we only need to count the number of selected handles only, so that centerpoints don't * don't get moved wrong */ @@ -3520,6 +3505,15 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) } else if (bezt->f2 & SELECT) count++; // TODO: could this cause problems? } + else if (ELEM3(t->mode, TFM_TRANSLATION, TFM_TIME_TRANSLATE, TFM_TIME_SLIDE)) { + /* for 'normal' pivots - just include anything that is selected. + this works a bit differently in translation modes */ + if (bezt->f2 & SELECT) count++; + else { + if (bezt->f1 & SELECT) count++; + if (bezt->f3 & SELECT) count++; + } + } else { /* for 'normal' pivots - just include anything that is selected */ if (bezt->f1 & SELECT) count++; @@ -3547,12 +3541,31 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) td= t->data; td2d= t->data2d; + /* precompute space-conversion matrices for dealing with non-uniform scaling of Graph Editor */ + unit_m3(mtx); + unit_m3(smtx); + + if (ELEM(t->mode, TFM_ROTATION, TFM_RESIZE)) { + float xscale, yscale; + + /* apply scale factors to x and y axes of space-conversion matrices */ + UI_view2d_getscale(v2d, &xscale, &yscale); + + /* mtx is data to global (i.e. view) conversion */ + mul_v3_fl(mtx[0], xscale); + mul_v3_fl(mtx[1], yscale); + + /* smtx is global (i.e. view) to data conversion */ + if (IS_EQ(xscale, 0.0f) == 0) mul_v3_fl(smtx[0], 1.0f/xscale); + if (IS_EQ(yscale, 0.0f) == 0) mul_v3_fl(smtx[1], 1.0f/yscale); + } + /* loop 2: build transdata arrays */ for (ale= anim_data.first; ale; ale= ale->next) { AnimData *adt= ANIM_nla_mapping_get(&ac, ale); FCurve *fcu= (FCurve *)ale->key_data; short intvals= (fcu->flag & FCURVE_INT_VALUES); - + /* convert current-frame to action-time (slightly less accurate, espcially under * higher scaling ratios, but is faster than converting all points) */ @@ -3569,27 +3582,38 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) /* only include BezTriples whose 'keyframe' occurs on the same side of the current frame as mouse (if applicable) */ for (i=0, bezt= fcu->bezt; i < fcu->totvert; i++, bezt++) { - if (FrameOnMouseSide(side, bezt->vec[1][0], cfra)) { + if (FrameOnMouseSide(t->frame_side, bezt->vec[1][0], cfra)) { TransDataCurveHandleFlags *hdata = NULL; short h1=1, h2=1; - /* only include handles if selected, irrespective of the interpolation modes */ - if (bezt->f1 & SELECT) { - hdata = initTransDataCurveHandles(td, bezt); - bezt_to_transdata(td++, td2d++, adt, bezt->vec[0], bezt->vec[1], 1, 1, intvals); - } - else - h1= 0; - if (bezt->f3 & SELECT) { - if (hdata==NULL) + /* only include handles if selected, irrespective of the interpolation modes. + * also, only treat handles specially if the center point isn't selected. + */ + if (!ELEM3(t->mode, TFM_TRANSLATION, TFM_TIME_TRANSLATE, TFM_TIME_SLIDE) || !(bezt->f2 & SELECT)) { + if (bezt->f1 & SELECT) { hdata = initTransDataCurveHandles(td, bezt); - bezt_to_transdata(td++, td2d++, adt, bezt->vec[2], bezt->vec[1], 1, 1, intvals); + bezt_to_transdata(td++, td2d++, adt, bezt, 0, 1, 1, intvals, mtx, smtx); + } + else + h1= 0; + + if (bezt->f3 & SELECT) { + if (hdata==NULL) + hdata = initTransDataCurveHandles(td, bezt); + bezt_to_transdata(td++, td2d++, adt, bezt, 2, 1, 1, intvals, mtx, smtx); + } + else + h2= 0; } - else - h2= 0; /* only include main vert if selected */ if (bezt->f2 & SELECT) { + /* move handles relative to center */ + if (ELEM3(t->mode, TFM_TRANSLATION, TFM_TIME_TRANSLATE, TFM_TIME_SLIDE)) { + if (bezt->f1 & SELECT) td->flag |= TD_MOVEHANDLE1; + if (bezt->f3 & SELECT) td->flag |= TD_MOVEHANDLE2; + } + /* if scaling around individuals centers, do not include keyframes */ if (sipo->around != V3D_LOCAL) { /* if handles were not selected, store their selection status */ @@ -3598,7 +3622,7 @@ static void createTransGraphEditData(bContext *C, TransInfo *t) hdata = initTransDataCurveHandles(td, bezt); } - bezt_to_transdata(td++, td2d++, adt, bezt->vec[1], bezt->vec[1], 1, 0, intvals); + bezt_to_transdata(td++, td2d++, adt, bezt, 1, 1, 0, intvals, mtx, smtx); } /* special hack (must be done after initTransDataCurveHandles(), as that stores handle settings to restore...): @@ -3724,7 +3748,7 @@ static void beztmap_to_data (TransInfo *t, FCurve *fcu, BeztMap *bezms, int totv /* dynamically allocate an array of chars to mark whether an TransData's * pointers have been fixed already, so that we don't override ones that are * already done - */ + */ adjusted= MEM_callocN(t->total, "beztmap_adjusted_map"); /* for each beztmap item, find if it is used anywhere */ @@ -3844,7 +3868,7 @@ void flushTransGraphData(TransInfo *t) break; } } - + /* we need to unapply the nla-mapping from the time in some situations */ if (adt) td2d->loc2d[0]= BKE_nla_tweakedit_remap(adt, td2d->loc[0], NLATIME_CONVERT_UNMAP); @@ -3856,6 +3880,16 @@ void flushTransGraphData(TransInfo *t) td2d->loc2d[1]= (float)((int)td2d->loc[1]); else td2d->loc2d[1]= td2d->loc[1]; + + if ((td->flag & TD_MOVEHANDLE1) && td2d->h1) { + td2d->h1[0] = td2d->ih1[0] + td->loc[0] - td->iloc[0]; + td2d->h1[1] = td2d->ih1[1] + td->loc[1] - td->iloc[1]; + } + + if ((td->flag & TD_MOVEHANDLE2) && td2d->h2) { + td2d->h2[0] = td2d->ih2[0] + td->loc[0] - td->iloc[0]; + td2d->h2[1] = td2d->ih2[1] + td->loc[1] - td->iloc[1]; + } } } @@ -3969,6 +4003,8 @@ static void SeqTransInfo(TransInfo *t, Sequence *seq, int *recursive, int *count } } else { + t->frame_side= 'B'; + /* *** Normal Transform *** */ if (seq->depth == 0) { @@ -4247,7 +4283,7 @@ static void createTransSeqData(bContext *C, TransInfo *t) { View2D *v2d= UI_view2d_fromcontext(C); - Scene *scene= CTX_data_scene(C); + Scene *scene= t->scene; Editing *ed= seq_give_editing(t->scene, FALSE); TransData *td = NULL; TransData2D *td2d= NULL; @@ -4300,8 +4336,7 @@ static void createTransSeqData(bContext *C, TransInfo *t) /* transcribe given object into TransData for Transforming */ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object *ob) { - Scene *scene = CTX_data_scene(C); - Object *track; + Scene *scene = t->scene; float obmtx[3][3]; short constinv; short skip_invert = 0; @@ -4323,10 +4358,7 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * if (t->mode == TFM_DUMMY) skip_invert = 1; - if (skip_invert == 0 && (ob->track || constinv==0)) { - track= ob->track; - ob->track= NULL; - + if (skip_invert == 0 && constinv == 0) { if (constinv == 0) ob->transflag |= OB_NO_CONSTRAINTS; /* where_is_object_time checks this */ @@ -4334,8 +4366,6 @@ static void ObjectToTransData(bContext *C, TransInfo *t, TransData *td, Object * if (constinv == 0) ob->transflag &= ~OB_NO_CONSTRAINTS; - - ob->track= track; } else where_is_object(t->scene, ob); @@ -4569,7 +4599,7 @@ static void clear_trans_object_base_flags(TransInfo *t) if(base->flag & BA_WAS_SEL) base->flag |= SELECT; - base->flag &= ~(BA_WAS_SEL|BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA|BA_DO_IPO|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT); + base->flag &= ~(BA_WAS_SEL|BA_HAS_RECALC_OB|BA_HAS_RECALC_DATA|BA_TEMP_TAG|BA_TRANSFORM_CHILD|BA_TRANSFORM_PARENT); } } @@ -4585,20 +4615,21 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, // TODO: this should probably be done per channel instead... if (autokeyframe_cfra_can_key(scene, id)) { KeyingSet *active_ks = ANIM_scene_get_active_keyingset(scene); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; + ListBase dsources = {NULL, NULL}; float cfra= (float)CFRA; // xxx this will do for now short flag = 0; - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; - + /* get flags used for inserting keyframes */ flag = ANIM_get_keyframing_flags(scene, 1); + /* add datasource override for the camera object */ + ANIM_relative_keyingset_add_source(&dsources, id, NULL, NULL); + if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (active_ks)) { - /* only insert into active keyingset */ - modify_keyframes(scene, &dsources, NULL, active_ks, MODIFYKEY_MODE_INSERT, cfra); + /* only insert into active keyingset + * NOTE: we assume here that the active Keying Set does not need to have its iterator overridden spe + */ + ANIM_apply_keyingset(C, &dsources, NULL, active_ks, MODIFYKEY_MODE_INSERT, cfra); } else if (IS_AUTOKEY_FLAG(INSERTAVAIL)) { AnimData *adt= ob->adt; @@ -4644,22 +4675,25 @@ void autokeyframe_ob_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *ob, /* insert keyframes for the affected sets of channels using the builtin KeyingSets found */ if (doLoc) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doRot) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doScale) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scale"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } } /* insert keyframe in all (transform) channels */ else { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } + + /* free temp info */ + BLI_freelistN(&dsources); } } @@ -4680,15 +4714,9 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o // TODO: this should probably be done per channel instead... if (autokeyframe_cfra_can_key(scene, id)) { KeyingSet *active_ks = ANIM_scene_get_active_keyingset(scene); - bCommonKeySrc cks; - ListBase dsources = {&cks, &cks}; float cfra= (float)CFRA; short flag= 0; - /* init common-key-source for use by KeyingSets */ - memset(&cks, 0, sizeof(bCommonKeySrc)); - cks.id= &ob->id; - /* flag is initialised from UserPref keyframing settings * - special exception for targetless IK - INSERTKEY_MATRIX keyframes should get * visual keyframes even if flag not set, as it's not that useful otherwise @@ -4701,14 +4729,18 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o for (pchan=pose->chanbase.first; pchan; pchan=pchan->next) { if (pchan->bone->flag & BONE_TRANSFORM) { + ListBase dsources = {NULL, NULL}; + /* clear any 'unkeyed' flag it may have */ pchan->bone->flag &= ~BONE_UNKEYED; + /* add datasource override for the camera object */ + ANIM_relative_keyingset_add_source(&dsources, id, &RNA_PoseBone, pchan); + /* only insert into active keyingset? */ if (IS_AUTOKEY_FLAG(ONLYKEYINGSET) && (active_ks)) { - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, active_ks, MODIFYKEY_MODE_INSERT, cfra); + /* run the active Keying Set on the current datasource */ + ANIM_apply_keyingset(C, &dsources, NULL, active_ks, MODIFYKEY_MODE_INSERT, cfra); } /* only insert into available channels? */ else if (IS_AUTOKEY_FLAG(INSERTAVAIL)) { @@ -4757,41 +4789,34 @@ void autokeyframe_pose_cb_func(bContext *C, Scene *scene, View3D *v3d, Object *o if (doLoc) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Location"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doRot) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Rotation"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } if (doScale) { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "Scale"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } } /* insert keyframe in all (transform) channels */ else { KeyingSet *ks= ANIM_builtin_keyingset_get_named(NULL, "LocRotScale"); - - /* init cks for this PoseChannel, then use the relative KeyingSets to keyframe it */ - cks.pchan= pchan; - modify_keyframes(scene, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); + ANIM_apply_keyingset(C, &dsources, NULL, ks, MODIFYKEY_MODE_INSERT, cfra); } + + /* free temp info */ + BLI_freelistN(&dsources); } } /* do the bone paths - * NOTE: only do this when there is context info + * - only do this when there is context info, since we need that to resolve + * how to do the updates and so on... + * - do not calculate unless there are paths already to update... */ - if (C && (ob->pose->avs.path_type == MOTIONPATH_TYPE_ACFRA)) { + if (C && (ob->pose->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS)) { //ED_pose_clear_paths(C, ob); // XXX for now, don't need to clear ED_pose_recalculate_paths(C, scene, ob); } @@ -4835,6 +4860,24 @@ void special_aftertrans_update(bContext *C, TransInfo *t) if (t->spacetype == SPACE_SEQ) { /* freeSeqData in transform_conversions.c does this * keep here so the else at the end wont run... */ + + SpaceSeq *sseq= (SpaceSeq *)t->sa->spacedata.first; + + /* marker transform, not especially nice but we may want to move markers + * at the same time as keyframes in the dope sheet. */ + if ((sseq->flag & SEQ_MARKER_TRANS) && (cancelled == 0)) { + /* cant use , TFM_TIME_EXTEND + * for some reason EXTEND is changed into TRANSLATE, so use frame_side instead */ + + if(t->mode == TFM_SEQ_SLIDE) { + if(t->frame_side == 'B') + scene_marker_tfm_translate(t->scene, floor(t->values[0] + 0.5f), SELECT); + } + else if (ELEM(t->frame_side, 'L', 'R')) { + scene_marker_tfm_extend(t->scene, floor(t->vec[0] + 0.5f), SELECT, t->scene->r.cfra, t->frame_side); + } + } + } else if (t->spacetype == SPACE_NODE) { /* pass */ @@ -4863,7 +4906,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) FCurve *fcu= (FCurve *)ale->key_data; if ( (saction->flag & SACTION_NOTRANSKEYCULL)==0 && - ((cancelled == 0) || (duplicate)) ) + ((cancelled == 0) || (duplicate)) ) { if (adt) { ANIM_nla_mapping_apply_fcurve(adt, fcu, 0, 1); @@ -4883,18 +4926,33 @@ void special_aftertrans_update(bContext *C, TransInfo *t) // fixme... some of this stuff is not good if (ob) { if (ob->pose || ob_get_key(ob)) - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_ALL); else DAG_id_flush_update(&ob->id, OB_RECALC_OB); } /* Do curve cleanups? */ if ( (saction->flag & SACTION_NOTRANSKEYCULL)==0 && - ((cancelled == 0) || (duplicate)) ) + ((cancelled == 0) || (duplicate)) ) { posttrans_action_clean(&ac, (bAction *)ac.data); } } + + /* marker transform, not especially nice but we may want to move markers + * at the same time as keyframes in the dope sheet. */ + if ((saction->flag & SACTION_MARKERS_MOVE) && (cancelled == 0)) { + /* cant use , TFM_TIME_EXTEND + * for some reason EXTEND is changed into TRANSLATE, so use frame_side instead */ + + if(t->mode == TFM_TIME_TRANSLATE) { + if(t->frame_side == 'B') + scene_marker_tfm_translate(t->scene, floor(t->vec[0] + 0.5f), SELECT); + else if (ELEM(t->frame_side, 'L', 'R')) + scene_marker_tfm_extend(t->scene, floor(t->vec[0] + 0.5f), SELECT, t->scene->r.cfra, t->frame_side); + } + } + #if 0 // XXX future of this is still not clear else if (ac.datatype == ANIMCONT_GPENCIL) { /* remove duplicate frames and also make sure points are in order! */ @@ -4944,7 +5002,7 @@ void special_aftertrans_update(bContext *C, TransInfo *t) FCurve *fcu= (FCurve *)ale->key_data; if ( (sipo->flag & SIPO_NOTRANSKEYCULL)==0 && - ((cancelled == 0) || (duplicate)) ) + ((cancelled == 0) || (duplicate)) ) { if (adt) { ANIM_nla_mapping_apply_fcurve(adt, fcu, 0, 1); @@ -5060,13 +5118,13 @@ void special_aftertrans_update(bContext *C, TransInfo *t) if (td->flag & TD_SKIP) continue; - /* flag object caches as outdated */ - BKE_ptcache_ids_from_object(&pidlist, ob); - for(pid=pidlist.first; pid; pid=pid->next) { - if(pid->type != PTCACHE_TYPE_PARTICLES) /* particles don't need reset on geometry change */ - pid->cache->flag |= PTCACHE_OUTDATED; - } - BLI_freelistN(&pidlist); + /* flag object caches as outdated */ + BKE_ptcache_ids_from_object(&pidlist, ob, t->scene, MAX_DUPLI_RECUR); + for(pid=pidlist.first; pid; pid=pid->next) { + if(pid->type != PTCACHE_TYPE_PARTICLES) /* particles don't need reset on geometry change */ + pid->cache->flag |= PTCACHE_OUTDATED; + } + BLI_freelistN(&pidlist); /* pointcache refresh */ if (BKE_ptcache_object_reset(t->scene, ob, PTCACHE_RESET_OUTDATED)) @@ -5082,7 +5140,8 @@ void special_aftertrans_update(bContext *C, TransInfo *t) if (!cancelled) { autokeyframe_ob_cb_func(C, t->scene, (View3D *)t->view, ob, t->mode); - if (ob->avs.path_type == MOTIONPATH_TYPE_ACFRA) + /* only calculate paths if there are paths to be recalculated */ + if (ob->avs.path_bakeflag & MOTIONPATH_BAKE_HAS_PATHS) recalcObPaths= 1; } } @@ -5239,7 +5298,7 @@ void createTransNodeData(bContext *C, TransInfo *t) void createTransData(bContext *C, TransInfo *t) { - Scene *scene = CTX_data_scene(C); + Scene *scene = t->scene; Object *ob = OBACT; if (t->options & CTX_TEXTURE) { @@ -5306,7 +5365,7 @@ void createTransData(bContext *C, TransInfo *t) t->ext = NULL; if (t->obedit->type == OB_MESH) { createTransEditVerts(C, t); - } + } else if ELEM(t->obedit->type, OB_CURVE, OB_SURF) { createTransCurveVerts(C, t); } @@ -5319,7 +5378,7 @@ void createTransData(bContext *C, TransInfo *t) else if (t->obedit->type==OB_ARMATURE) { t->flag &= ~T_PROP_EDIT; createTransArmatureVerts(C, t); - } + } else { printf("edit type not implemented!\n"); } diff --git a/source/blender/editors/transform/transform_generics.c b/source/blender/editors/transform/transform_generics.c index 72c17df1309..1783cc58bee 100644 --- a/source/blender/editors/transform/transform_generics.c +++ b/source/blender/editors/transform/transform_generics.c @@ -35,24 +35,11 @@ #include "BLO_sys_types.h" // for intptr_t support #include "DNA_anim_types.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_constraint_types.h" -#include "DNA_curve_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" -#include "DNA_modifier_types.h" -#include "DNA_nla_types.h" -#include "DNA_node_types.h" -#include "DNA_object_types.h" -#include "DNA_object_force.h" -#include "DNA_particle_types.h" #include "DNA_screen_types.h" #include "DNA_space_types.h" -#include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" @@ -106,7 +93,6 @@ #include "BLI_editVert.h" #include "BLI_rand.h" -#include "RNA_access.h" #include "WM_types.h" #include "WM_api.h" @@ -204,8 +190,8 @@ static void clipMirrorModifier(TransInfo *t, Object *ob) copy_v3_v3(iloc, td->iloc); if (mmd->mirror_ob) { - mul_v3_m4v3(loc, mtx, loc); - mul_v3_m4v3(iloc, mtx, iloc); + mul_m4_v3(mtx, loc); + mul_m4_v3(mtx, iloc); } clip = 0; @@ -233,7 +219,7 @@ static void clipMirrorModifier(TransInfo *t, Object *ob) } if (clip) { if (mmd->mirror_ob) { - mul_v3_m4v3(loc, imtx, loc); + mul_m4_v3(imtx, loc); } copy_v3_v3(td->loc, loc); } @@ -327,7 +313,7 @@ static int fcu_test_selected(FCurve *fcu) BezTriple *bezt= fcu->bezt; int i; - if(bezt==NULL) /* ignore baked */ + if (bezt==NULL) /* ignore baked */ return 0; for (i=0; i < fcu->totvert; i++, bezt++) { @@ -423,11 +409,11 @@ void recalcData(TransInfo *t) /* now test if there is a need to re-sort */ for (ale= anim_data.first; ale; ale= ale->next) { FCurve *fcu= (FCurve *)ale->key_data; - + /* ignore unselected fcurves */ - if(!fcu_test_selected(fcu)) + if (!fcu_test_selected(fcu)) continue; - + // fixme: only do this for selected verts... ANIM_unit_mapping_apply_fcurve(ac.scene, ale->id, ale->key_data, ANIM_UNITCONV_ONLYSEL|ANIM_UNITCONV_SELVERTS|ANIM_UNITCONV_RESTORE); @@ -443,7 +429,6 @@ void recalcData(TransInfo *t) */ if ((sipo->flag & SIPO_NOREALTIMEUPDATES) == 0) ANIM_list_elem_update(t->scene, ale); - } /* do resort and other updates? */ @@ -574,8 +559,8 @@ void recalcData(TransInfo *t) // TODO: do we need to write in 2 passes to make sure that no truncation goes on? RNA_pointer_create(NULL, &RNA_NlaStrip, strip, &strip_ptr); - RNA_float_set(&strip_ptr, "start_frame", tdn->h1[0]); - RNA_float_set(&strip_ptr, "end_frame", tdn->h2[0]); + RNA_float_set(&strip_ptr, "frame_start", tdn->h1[0]); + RNA_float_set(&strip_ptr, "frame_end", tdn->h2[0]); /* flush transforms to child strips (since this should be a meta) */ BKE_nlameta_flush_transforms(strip); @@ -653,7 +638,11 @@ void recalcData(TransInfo *t) if ELEM(t->obedit->type, OB_CURVE, OB_SURF) { Curve *cu= t->obedit->data; Nurb *nu= cu->editnurb->first; - + + if(t->state != TRANS_CANCEL) { + clipMirrorModifier(t, t->obedit); + } + DAG_id_flush_update(t->obedit->data, OB_RECALC_DATA); /* sets recalc flags */ if (t->state == TRANS_CANCEL) { @@ -823,7 +812,7 @@ void recalcData(TransInfo *t) /* sets recalc flags fully, instead of flushing existing ones * otherwise proxies don't function correctly */ - DAG_id_flush_update(&ob->id, OB_RECALC); + DAG_id_flush_update(&ob->id, OB_RECALC_OB); } } @@ -973,7 +962,7 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) { t->current_orientation = RNA_enum_get(op->ptr, "constraint_orientation"); - if (t->current_orientation >= V3D_MANIP_CUSTOM + BIF_countTransformOrientation(C) - 1) + if (t->current_orientation >= V3D_MANIP_CUSTOM + BIF_countTransformOrientation(C)) { t->current_orientation = V3D_MANIP_GLOBAL; } @@ -1005,6 +994,21 @@ int initTransInfo (bContext *C, TransInfo *t, wmOperator *op, wmEvent *event) t->around = V3D_CENTER; } + if (op && RNA_property_is_set(op->ptr, "release_confirm")) + { + if (RNA_boolean_get(op->ptr, "release_confirm")) + { + t->flag |= T_RELEASE_CONFIRM; + } + } + else + { + if (U.flag & USER_RELEASECONFIRM) + { + t->flag |= T_RELEASE_CONFIRM; + } + } + if (op && RNA_struct_find_property(op->ptr, "mirror") && RNA_property_is_set(op->ptr, "mirror")) { if (RNA_boolean_get(op->ptr, "mirror")) @@ -1115,7 +1119,7 @@ void postTrans (bContext *C, TransInfo *t) if (t->data) { int a; - /* since ipokeys are optional on objects, we mallocced them per trans-data */ + /* free data malloced per trans-data */ for(a=0, td= t->data; a<t->total; a++, td++) { if (td->flag & TD_BEZTRIPLE) MEM_freeN(td->hdata); @@ -1174,6 +1178,7 @@ static void restoreElement(TransData *td) { if (td->val) { *td->val = td->ival; } + if (td->ext && (td->flag&TD_NO_EXT)==0) { if (td->ext->rot) { VECCOPY(td->ext->rot, td->ext->irot); @@ -1195,11 +1200,23 @@ static void restoreElement(TransData *td) { void restoreTransObjects(TransInfo *t) { TransData *td; + TransData2D *td2d; for (td = t->data; td < t->data + t->total; td++) { restoreElement(td); } + for (td2d=t->data2d; t->data2d && td2d < t->data2d + t->total; td2d++) { + if (td2d->h1) { + td2d->h1[0] = td2d->ih1[0]; + td2d->h1[1] = td2d->ih1[1]; + } + if (td2d->h2) { + td2d->h2[0] = td2d->ih2[0]; + td2d->h2[1] = td2d->ih2[1]; + } + } + unit_m3(t->mat); recalcData(t); @@ -1243,15 +1260,19 @@ void calculateCenterCursor(TransInfo *t) void calculateCenterCursor2D(TransInfo *t) { - View2D *v2d= t->view; float aspx=1.0, aspy=1.0; + float *cursor= NULL; + + if(t->spacetype==SPACE_IMAGE) { + SpaceImage *sima= (SpaceImage *)t->sa->spacedata.first; + /* only space supported right now but may change */ + ED_space_image_uv_aspect(sima, &aspx, &aspy); + cursor = sima->cursor; + } - if(t->spacetype==SPACE_IMAGE) /* only space supported right now but may change */ - ED_space_image_uv_aspect(t->sa->spacedata.first, &aspx, &aspy); - - if (v2d) { - t->center[0] = v2d->cursor[0] * aspx; - t->center[1] = v2d->cursor[1] * aspy; + if (cursor) { + t->center[0] = cursor[0] * aspx; + t->center[1] = cursor[1] * aspy; } calculateCenter2D(t); @@ -1279,7 +1300,7 @@ void calculateCenterMedian(TransInfo *t) if (t->data[i].flag & TD_SELECTED) { if (!(t->data[i].flag & TD_NOCENTER)) { - add_v3_v3v3(partial, partial, t->data[i].center); + add_v3_v3(partial, t->data[i].center); total++; } } diff --git a/source/blender/editors/transform/transform_input.c b/source/blender/editors/transform/transform_input.c index 0e4521052ad..d7ebd28f604 100644 --- a/source/blender/editors/transform/transform_input.c +++ b/source/blender/editors/transform/transform_input.c @@ -26,7 +26,6 @@ #include <math.h> #include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" @@ -225,6 +224,8 @@ void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3]) double dx3 = mval[0] - mi->imval[0]; double dy3 = mval[1] - mi->imval[1]; + double *angle = mi->data; + /* use doubles here, to make sure a "1.0" (no rotation) doesnt become 9.999999e-01, which gives 0.02 for acos */ double deler = ((dx1*dx1+dy1*dy1)+(dx2*dx2+dy2*dy2)-(dx3*dx3+dy3*dy3)) / (2.0 * (A*B?A*B:1.0)); @@ -266,7 +267,9 @@ void InputAngle(TransInfo *t, MouseInput *mi, short mval[2], float output[3]) mi->imval[1] = mval[1]; } - output[0] += dphi; + *angle += dphi; + + output[0] = *angle; } void initMouseInput(TransInfo *t, MouseInput *mi, int center[2], short mval[2]) @@ -279,6 +282,8 @@ void initMouseInput(TransInfo *t, MouseInput *mi, int center[2], short mval[2]) mi->imval[0] = mval[0]; mi->imval[1] = mval[1]; + + mi->post = NULL; } static void calcSpringFactor(MouseInput *mi) @@ -314,6 +319,7 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode) t->helpline = HLP_SPRING; break; case INPUT_ANGLE: + mi->data = MEM_callocN(sizeof(double), "angle accumulator"); mi->apply = InputAngle; t->helpline = HLP_ANGLE; break; @@ -354,12 +360,22 @@ void initMouseInputMode(TransInfo *t, MouseInput *mi, MouseInputMode mode) applyMouseInput(t, mi, mi->imval, t->values); } +void setInputPostFct(MouseInput *mi, void (*post)(struct TransInfo *, float [3])) +{ + mi->post = post; +} + void applyMouseInput(TransInfo *t, MouseInput *mi, short mval[2], float output[3]) { if (mi->apply != NULL) { mi->apply(t, mi, mval, output); } + + if (mi->post) + { + mi->post(t, output); + } } int handleMouseInput(TransInfo *t, MouseInput *mi, wmEvent *event) diff --git a/source/blender/editors/transform/transform_manipulator.c b/source/blender/editors/transform/transform_manipulator.c index 200373a9589..fe63ec0e15b 100644 --- a/source/blender/editors/transform/transform_manipulator.c +++ b/source/blender/editors/transform/transform_manipulator.c @@ -1,5 +1,5 @@ /** -* $Id: +* $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -41,17 +41,11 @@ #include "MEM_guardedalloc.h" #include "DNA_armature_types.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" #include "DNA_lattice_types.h" -#include "DNA_mesh_types.h" #include "DNA_meta_types.h" -#include "DNA_object_types.h" -#include "DNA_particle_types.h" #include "DNA_screen_types.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" #include "RNA_access.h" @@ -79,8 +73,6 @@ #include "ED_armature.h" #include "ED_mesh.h" #include "ED_particle.h" -#include "ED_space_api.h" -#include "ED_transform.h" #include "ED_view3d.h" #include "UI_resources.h" @@ -131,7 +123,7 @@ static void calc_tw_center(Scene *scene, float *co) float *max= scene->twmax; DO_MINMAX(co, min, max); - add_v3_v3v3(twcent, twcent, co); + add_v3_v3(twcent, co); } static void protectflag_to_drawflags(short protectflag, short *drawflags) @@ -1562,6 +1554,8 @@ static int manipulator_selectbuf(ScrArea *sa, ARegion *ar, short *mval, float ho return 0; } +int wm_operator_invoke(bContext *C, wmOperatorType *ot, wmEvent *event, PointerRNA *properties, ReportList *reports); + /* return 0; nothing happened */ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) { @@ -1575,6 +1569,9 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) if(!(v3d->twflag & V3D_USE_MANIPULATOR)) return 0; if(!(v3d->twflag & V3D_DRAW_MANIPULATOR)) return 0; + /* Force orientation */ + RNA_enum_set(op->ptr, "constraint_orientation", v3d->twmode); + // find the hotspots first test narrow hotspot val= manipulator_selectbuf(sa, ar, event->mval, 0.5f*(float)U.tw_hotspot); if(val) { @@ -1614,6 +1611,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); WM_operator_name_call(C, "TRANSFORM_OT_translate", WM_OP_INVOKE_DEFAULT, op->ptr); + //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_translate", 0), event, op->ptr, NULL); } else if (drawflags & MAN_SCALE_C) { switch(drawflags) { @@ -1644,8 +1642,10 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); WM_operator_name_call(C, "TRANSFORM_OT_resize", WM_OP_INVOKE_DEFAULT, op->ptr); + //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_resize", 0), event, op->ptr, NULL); } else if (drawflags == MAN_ROT_T) { /* trackball need special case, init is different */ + //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_trackball", 0), event, op->ptr, NULL); WM_operator_name_call(C, "TRANSFORM_OT_trackball", WM_OP_INVOKE_DEFAULT, op->ptr); } else if (drawflags & MAN_ROT_C) { @@ -1662,6 +1662,7 @@ int BIF_do_manipulator(bContext *C, struct wmEvent *event, wmOperator *op) } RNA_boolean_set_array(op->ptr, "constraint_axis", constraint_axis); WM_operator_name_call(C, "TRANSFORM_OT_rotate", WM_OP_INVOKE_DEFAULT, op->ptr); + //wm_operator_invoke(C, WM_operatortype_find("TRANSFORM_OT_rotate", 0), event, op->ptr, NULL); } } /* after transform, restore drawflags */ diff --git a/source/blender/editors/transform/transform_ndofinput.c b/source/blender/editors/transform/transform_ndofinput.c index fa872339196..3e47484c54c 100644 --- a/source/blender/editors/transform/transform_ndofinput.c +++ b/source/blender/editors/transform/transform_ndofinput.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -30,8 +30,6 @@ #include "BKE_global.h" /* for G */ #include "BKE_utildefines.h" /* ABS */ -#include "DNA_view3d_types.h" /* for G.vd (view3d) */ -#include "DNA_windowmanager_types.h" /* for G.vd (view3d) */ #include "WM_types.h" @@ -44,7 +42,7 @@ static void resetNDofInput(NDofInput *n); void initNDofInput(NDofInput *n) { - int i; + int i; n->flag = 0; n->axis = 0; @@ -128,9 +126,9 @@ void applyNDofInput(NDofInput *n, float *vec) static int updateNDofMotion(NDofInput *n) { - float fval[7]; - int i; - int retval = 0; + float fval[7]; + int i; + int retval = 0; getndof(fval); diff --git a/source/blender/editors/transform/transform_ops.c b/source/blender/editors/transform/transform_ops.c index 95e0d270fde..29bcd4e8592 100644 --- a/source/blender/editors/transform/transform_ops.c +++ b/source/blender/editors/transform/transform_ops.c @@ -25,8 +25,6 @@ #include "MEM_guardedalloc.h" #include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_windowmanager_types.h" #include "RNA_access.h" #include "RNA_define.h" @@ -63,6 +61,7 @@ char OP_RESIZE[] = "TRANSFORM_OT_resize"; char OP_SHEAR[] = "TRANSFORM_OT_shear"; char OP_WARP[] = "TRANSFORM_OT_warp"; char OP_SHRINK_FATTEN[] = "TRANSFORM_OT_shrink_fatten"; +char OP_PUSH_PULL[] = "TRANSFORM_OT_push_pull"; char OP_TILT[] = "TRANSFORM_OT_tilt"; char OP_TRACKBALL[] = "TRANSFORM_OT_trackball"; char OP_MIRROR[] = "TRANSFORM_OT_mirror"; @@ -77,6 +76,7 @@ void TRANSFORM_OT_resize(struct wmOperatorType *ot); void TRANSFORM_OT_shear(struct wmOperatorType *ot); void TRANSFORM_OT_warp(struct wmOperatorType *ot); void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot); +void TRANSFORM_OT_push_pull(struct wmOperatorType *ot); void TRANSFORM_OT_tilt(struct wmOperatorType *ot); void TRANSFORM_OT_trackball(struct wmOperatorType *ot); void TRANSFORM_OT_mirror(struct wmOperatorType *ot); @@ -93,6 +93,7 @@ TransformModeItem transform_modes[] = {OP_SHEAR, TFM_SHEAR, TRANSFORM_OT_shear}, {OP_WARP, TFM_WARP, TRANSFORM_OT_warp}, {OP_SHRINK_FATTEN, TFM_SHRINKFATTEN, TRANSFORM_OT_shrink_fatten}, + {OP_PUSH_PULL, TFM_PUSHPULL, TRANSFORM_OT_push_pull}, {OP_TILT, TFM_TILT, TRANSFORM_OT_tilt}, {OP_TRACKBALL, TFM_TRACKBALL, TRANSFORM_OT_trackball}, {OP_MIRROR, TFM_MIRROR, TRANSFORM_OT_mirror}, @@ -383,45 +384,66 @@ static int transform_invoke(bContext *C, wmOperator *op, wmEvent *event) } } -void Properties_Proportional(struct wmOperatorType *ot) -{ - RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", ""); - RNA_def_enum(ot->srna, "proportional_editing_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode."); - RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100); -} - -void Properties_Axis(struct wmOperatorType *ot) +void Transform_Properties(struct wmOperatorType *ot, int flags) { PropertyRNA *prop; - prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION); - RNA_def_property_array(prop, 3); - RNA_def_property_ui_text(prop, "Axis", "The axis around which the transformation occurs"); -} + if (flags & P_AXIS) + { + prop= RNA_def_property(ot->srna, "axis", PROP_FLOAT, PROP_DIRECTION); + RNA_def_property_array(prop, 3); + /* Make this not hidden when there's a nice axis selection widget */ + RNA_def_property_flag(prop, PROP_HIDDEN); + RNA_def_property_ui_text(prop, "Axis", "The axis around which the transformation occurs"); -void Properties_Snapping(struct wmOperatorType *ot, short fullsnap, short align) -{ - RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); + } - if (fullsnap) { - RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", ""); - RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX); + if (flags & P_CONSTRAINT) + { + prop= RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); + prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE); + RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation"); + RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf); - if (align) { - RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", ""); - RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX); - } + } -} -void Properties_Constraints(struct wmOperatorType *ot) -{ - PropertyRNA *prop; + if (flags & P_MIRROR) + { + RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + } - RNA_def_boolean_vector(ot->srna, "constraint_axis", 3, NULL, "Constraint Axis", ""); - prop= RNA_def_property(ot->srna, "constraint_orientation", PROP_ENUM, PROP_NONE); - RNA_def_property_ui_text(prop, "Orientation", "Transformation orientation"); - RNA_def_enum_funcs(prop, rna_TransformOrientation_itemf); + + if (flags & P_PROPORTIONAL) + { + RNA_def_enum(ot->srna, "proportional", proportional_editing_items, 0, "Proportional Editing", ""); + RNA_def_enum(ot->srna, "proportional_editing_falloff", proportional_falloff_items, 0, "Proportional Editing Falloff", "Falloff type for proportional editing mode."); + RNA_def_float(ot->srna, "proportional_size", 1, 0, FLT_MAX, "Proportional Size", "", 0, 100); + } + + if (flags & P_SNAP) + { + prop= RNA_def_boolean(ot->srna, "snap", 0, "Use Snapping Options", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); + + if (flags & P_GEO_SNAP) { + prop= RNA_def_enum(ot->srna, "snap_target", snap_target_items, 0, "Target", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); + prop= RNA_def_float_vector(ot->srna, "snap_point", 3, NULL, -FLT_MAX, FLT_MAX, "Point", "", -FLT_MAX, FLT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN); + + if (flags & P_ALIGN_SNAP) { + prop= RNA_def_boolean(ot->srna, "snap_align", 0, "Align with Point Normal", ""); + RNA_def_property_flag(prop, PROP_HIDDEN); + prop= RNA_def_float_vector(ot->srna, "snap_normal", 3, NULL, -FLT_MAX, FLT_MAX, "Normal", "", -FLT_MAX, FLT_MAX); + RNA_def_property_flag(prop, PROP_HIDDEN); + } + } + } + + // Add confirm method all the time. At the end because it's not really that important and should be hidden + prop = RNA_def_boolean(ot->srna, "release_confirm", 0, "Confirm on Release", "Always confirm operation when releasing button"); + RNA_def_property_flag(prop, PROP_HIDDEN); } void TRANSFORM_OT_translate(struct wmOperatorType *ot) @@ -441,13 +463,7 @@ void TRANSFORM_OT_translate(struct wmOperatorType *ot) RNA_def_float_vector(ot->srna, "value", 3, NULL, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Constraints(ot); - - Properties_Snapping(ot, 1, 1); + Transform_Properties(ot, P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_ALIGN_SNAP); } void TRANSFORM_OT_resize(struct wmOperatorType *ot) @@ -467,13 +483,7 @@ void TRANSFORM_OT_resize(struct wmOperatorType *ot) RNA_def_float_vector(ot->srna, "value", 3, VecOne, -FLT_MAX, FLT_MAX, "Vector", "", -FLT_MAX, FLT_MAX); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Constraints(ot); - - Properties_Snapping(ot, 1, 0); + Transform_Properties(ot, P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_GEO_SNAP); } @@ -494,11 +504,7 @@ void TRANSFORM_OT_trackball(struct wmOperatorType *ot) RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); } void TRANSFORM_OT_rotate(struct wmOperatorType *ot) @@ -518,24 +524,16 @@ void TRANSFORM_OT_rotate(struct wmOperatorType *ot) RNA_def_float_rotation(ot->srna, "value", 1, NULL, -FLT_MAX, FLT_MAX, "Angle", "", -M_PI*2, M_PI*2); - Properties_Axis(ot); - - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Constraints(ot); - - Properties_Snapping(ot, 1, 0); + Transform_Properties(ot, P_AXIS|P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_GEO_SNAP); } void TRANSFORM_OT_tilt(struct wmOperatorType *ot) { /* identifiers */ ot->name = "Tilt"; - /*optionals - - "Tilt selected vertices." - "Specify an extra axis rotation for selected vertices of 3d curve." */ + /*optionals - + "Tilt selected vertices." + "Specify an extra axis rotation for selected vertices of 3d curve." */ ot->description= "Tilt selected control vertices of 3d curve"; ot->idname = OP_TILT; ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; @@ -549,13 +547,7 @@ void TRANSFORM_OT_tilt(struct wmOperatorType *ot) RNA_def_float_rotation(ot->srna, "value", 1, NULL, -FLT_MAX, FLT_MAX, "Angle", "", -M_PI*2, M_PI*2); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Constraints(ot); - - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_SNAP); } void TRANSFORM_OT_warp(struct wmOperatorType *ot) @@ -575,14 +567,8 @@ void TRANSFORM_OT_warp(struct wmOperatorType *ot) RNA_def_float_rotation(ot->srna, "value", 1, NULL, -FLT_MAX, FLT_MAX, "Angle", "", 0, 1); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Snapping(ot, 0, 0); - + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); // XXX Warp axis? -// Properties_Constraints(ot); } void TRANSFORM_OT_shear(struct wmOperatorType *ot) @@ -602,14 +588,28 @@ void TRANSFORM_OT_shear(struct wmOperatorType *ot) RNA_def_float(ot->srna, "value", 0, -FLT_MAX, FLT_MAX, "Offset", "", -FLT_MAX, FLT_MAX); - Properties_Proportional(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); + // XXX Shear axis? +} + +void TRANSFORM_OT_push_pull(struct wmOperatorType *ot) +{ + /* identifiers */ + ot->name = "Push/Pull"; + ot->description= "Push/Pull selected items"; + ot->idname = OP_PUSH_PULL; + ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); + /* api callbacks */ + ot->invoke = transform_invoke; + ot->exec = transform_exec; + ot->modal = transform_modal; + ot->cancel = transform_cancel; + ot->poll = ED_operator_areaactive; - Properties_Snapping(ot, 0, 0); + RNA_def_float(ot->srna, "value", 0, -FLT_MAX, FLT_MAX, "Distance", "", -FLT_MAX, FLT_MAX); - // XXX Shear axis? -// Properties_Constraints(ot); + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); } void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot) @@ -629,18 +629,14 @@ void TRANSFORM_OT_shrink_fatten(struct wmOperatorType *ot) RNA_def_float(ot->srna, "value", 0, -FLT_MAX, FLT_MAX, "Offset", "", -FLT_MAX, FLT_MAX); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); } void TRANSFORM_OT_tosphere(struct wmOperatorType *ot) { /* identifiers */ ot->name = "To Sphere"; - //added "around mesh center" to differentiate between "MESH_OT_vertices_to_sphere()" + //added "around mesh center" to differentiate between "MESH_OT_vertices_to_sphere()" ot->description= "Move selected vertices outward in a spherical shape around mesh center"; ot->idname = OP_TOSPHERE; ot->flag = OPTYPE_REGISTER|OPTYPE_UNDO|OPTYPE_BLOCKING; @@ -654,11 +650,7 @@ void TRANSFORM_OT_tosphere(struct wmOperatorType *ot) RNA_def_float_factor(ot->srna, "value", 0, 0, 1, "Factor", "", 0, 1); - Properties_Proportional(ot); - - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_PROPORTIONAL|P_MIRROR|P_SNAP); } void TRANSFORM_OT_mirror(struct wmOperatorType *ot) @@ -676,8 +668,7 @@ void TRANSFORM_OT_mirror(struct wmOperatorType *ot) ot->cancel = transform_cancel; ot->poll = ED_operator_areaactive; - Properties_Proportional(ot); - Properties_Constraints(ot); + Transform_Properties(ot, P_CONSTRAINT|P_PROPORTIONAL); } void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot) @@ -697,9 +688,7 @@ void TRANSFORM_OT_edge_slide(struct wmOperatorType *ot) RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f); - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_MIRROR|P_SNAP); } void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot) @@ -719,7 +708,7 @@ void TRANSFORM_OT_edge_crease(struct wmOperatorType *ot) RNA_def_float_factor(ot->srna, "value", 0, -1.0f, 1.0f, "Factor", "", -1.0f, 1.0f); - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_SNAP); } void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot) @@ -739,7 +728,7 @@ void TRANSFORM_OT_seq_slide(struct wmOperatorType *ot) RNA_def_float_vector(ot->srna, "value", 2, VecOne, -FLT_MAX, FLT_MAX, "angle", "", -FLT_MAX, FLT_MAX); - Properties_Snapping(ot, 0, 0); + Transform_Properties(ot, P_SNAP); } void TRANSFORM_OT_transform(struct wmOperatorType *ot) @@ -793,12 +782,7 @@ void TRANSFORM_OT_transform(struct wmOperatorType *ot) RNA_def_float_vector(ot->srna, "value", 4, NULL, -FLT_MAX, FLT_MAX, "Values", "", -FLT_MAX, FLT_MAX); - Properties_Axis(ot); - - Properties_Proportional(ot); - RNA_def_boolean(ot->srna, "mirror", 0, "Mirror Editing", ""); - - Properties_Constraints(ot); + Transform_Properties(ot, P_AXIS|P_CONSTRAINT|P_PROPORTIONAL|P_MIRROR|P_ALIGN_SNAP); } void transform_operatortypes(void) @@ -863,7 +847,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac km = WM_keymap_add_item(keymap, OP_MIRROR, MKEY, KM_PRESS, KM_CTRL, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.snap"); + RNA_string_set(km->ptr, "data_path", "tool_settings.snap"); km = WM_keymap_add_item(keymap, "TRANSFORM_OT_snap_type", TABKEY, KM_PRESS, KM_SHIFT|KM_CTRL, 0); @@ -871,30 +855,29 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac case SPACE_ACTION: km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", GKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE); - + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EVT_TWEAK_S, KM_ANY, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_TRANSLATE); - + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); - + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", SKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_SCALE); - + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", TKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_SLIDE); break; case SPACE_IPO: km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); - + km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); - - // XXX the 'mode' identifier here is not quite right + km= WM_keymap_add_item(keymap, "TRANSFORM_OT_transform", EKEY, KM_PRESS, 0, 0); RNA_int_set(km->ptr, "mode", TFM_TIME_EXTEND); - + km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); - + km = WM_keymap_add_item(keymap, OP_RESIZE, SKEY, KM_PRESS, 0, 0); break; case SPACE_NLA: @@ -914,7 +897,9 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac km= WM_keymap_add_item(keymap, OP_TRANSLATION, GKEY, KM_PRESS, 0, 0); km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_A, KM_ANY, 0, 0); + RNA_enum_set(km->ptr, "release_confirm", 1); km= WM_keymap_add_item(keymap, OP_TRANSLATION, EVT_TWEAK_S, KM_ANY, 0, 0); + RNA_enum_set(km->ptr, "release_confirm", 1); km = WM_keymap_add_item(keymap, OP_ROTATION, RKEY, KM_PRESS, 0, 0); @@ -940,7 +925,7 @@ void transform_keymap_for_space(wmKeyConfig *keyconf, wmKeyMap *keymap, int spac km = WM_keymap_add_item(keymap, "TRANSFORM_OT_mirror", MKEY, KM_PRESS, KM_CTRL, 0); km = WM_keymap_add_item(keymap, "WM_OT_context_toggle", TABKEY, KM_PRESS, KM_SHIFT, 0); - RNA_string_set(km->ptr, "path", "tool_settings.snap"); + RNA_string_set(km->ptr, "data_path", "tool_settings.snap"); break; default: break; diff --git a/source/blender/editors/transform/transform_orientations.c b/source/blender/editors/transform/transform_orientations.c index bbff86a8b11..273c0896728 100644 --- a/source/blender/editors/transform/transform_orientations.c +++ b/source/blender/editors/transform/transform_orientations.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -28,16 +28,10 @@ #include "MEM_guardedalloc.h" #include "DNA_armature_types.h" -#include "DNA_action_types.h" #include "DNA_curve_types.h" -#include "DNA_listBase.h" #include "DNA_object_types.h" -#include "DNA_meshdata_types.h" -#include "DNA_mesh_types.h" -#include "DNA_meta_types.h" #include "DNA_scene_types.h" #include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "DNA_view3d_types.h" #include "BKE_global.h" @@ -58,9 +52,7 @@ #include "ED_armature.h" #include "ED_mesh.h" -#include "ED_util.h" -#include "UI_interface.h" #include "RNA_define.h" @@ -484,7 +476,7 @@ void applyTransformOrientation(const bContext *C, float mat[3][3], char *name) { break; } } - } + } } static int count_bone_select(bArmature *arm, ListBase *lb, int do_it) @@ -526,6 +518,7 @@ void initTransformOrientation(bContext *C, TransInfo *t) case V3D_MANIP_GIMBAL: unit_m3(t->spacemtx); if (gimbal_axis(ob, t->spacemtx)) { + strcpy(t->spacename, "gimbal"); break; } /* no gimbal fallthrough to normal */ @@ -737,7 +730,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], BM_ITER(eve, &iter, em->bm, BM_VERTS_OF_MESH, NULL) { if (BM_TestHFlag(eve, BM_SELECT)) { - add_v3_v3v3(normal, normal, eve->no); + add_v3_v3(normal, eve->no); } } normalize_v3(normal); @@ -819,7 +812,7 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], float mat[4][4]; /* Rotation of MetaElem is stored in quat */ - quat_to_mat4( mat,ml_sel->quat); + quat_to_mat4( mat,ml_sel->quat); VECCOPY(normal, mat[2]); @@ -844,10 +837,10 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], float vec[3]; sub_v3_v3v3(vec, ebone->tail, ebone->head); normalize_v3(vec); - add_v3_v3v3(normal, normal, vec); + add_v3_v3(normal, vec); vec_roll_to_mat3(vec, ebone->roll, mat); - add_v3_v3v3(plane, plane, mat[2]); + add_v3_v3(plane, mat[2]); } } } @@ -887,8 +880,8 @@ int getTransformOrientation(const bContext *C, float normal[3], float plane[3], /* use channels to get stats */ for(pchan= ob->pose->chanbase.first; pchan; pchan= pchan->next) { if (pchan->bone && pchan->bone->flag & BONE_TRANSFORM) { - add_v3_v3v3(normal, normal, pchan->pose_mat[2]); - add_v3_v3v3(plane, plane, pchan->pose_mat[1]); + add_v3_v3(normal, pchan->pose_mat[2]); + add_v3_v3(plane, pchan->pose_mat[1]); } } negate_v3(plane); diff --git a/source/blender/editors/transform/transform_snap.c b/source/blender/editors/transform/transform_snap.c index dc60890cac1..a5a02261ffc 100644 --- a/source/blender/editors/transform/transform_snap.c +++ b/source/blender/editors/transform/transform_snap.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -34,14 +34,11 @@ #include "PIL_time.h" -#include "DNA_action_types.h" #include "DNA_armature_types.h" -#include "DNA_object_types.h" #include "DNA_scene_types.h" #include "DNA_meshdata_types.h" // Temporary, for snapping to other unselected meshes #include "DNA_space_types.h" #include "DNA_screen_types.h" -#include "DNA_userdef_types.h" #include "DNA_view3d_types.h" #include "DNA_windowmanager_types.h" @@ -75,7 +72,6 @@ #include "ED_armature.h" #include "ED_image.h" #include "ED_mesh.h" -#include "ED_transform.h" #include "ED_uvedit.h" #include "ED_view3d.h" @@ -239,7 +235,7 @@ int handleSnapping(TransInfo *t, wmEvent *event) void applyProject(TransInfo *t) { /* XXX FLICKER IN OBJECT MODE */ - if ((t->tsnap.project) && activeSnap(t)) + if ((t->tsnap.project) && activeSnap(t) && (t->flag & T_NO_PROJECT) == 0) { TransData *td = t->data; float tvec[3]; @@ -285,7 +281,7 @@ void applyProject(TransInfo *t) mul_m3_v3(td->smtx, tvec); - add_v3_v3v3(td->loc, td->loc, tvec); + add_v3_v3(td->loc, tvec); } //XXX constraintTransLim(t, td); @@ -918,7 +914,7 @@ void TargetSnapMedian(TransInfo *t) for(td = t->data, i = 0 ; i < t->total && td->flag & TD_SELECTED ; i++, td++) { - add_v3_v3v3(t->tsnap.snapTarget, t->tsnap.snapTarget, td->center); + add_v3_v3(t->tsnap.snapTarget, td->center); } mul_v3_fl(t->tsnap.snapTarget, 1.0 / i); @@ -1036,7 +1032,7 @@ int snapFace(ARegion *ar, float v1co[3], float v2co[3], float v3co[3], float *v4 VECCOPY(intersect, ray_normal_local); mul_v3_fl(intersect, lambda); - add_v3_v3v3(intersect, intersect, ray_start_local); + add_v3_v3(intersect, ray_start_local); VECCOPY(location, intersect); @@ -1749,7 +1745,7 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta VECCOPY(intersect, ray_normal_local); mul_v3_fl(intersect, lambda); - add_v3_v3v3(intersect, intersect, ray_start_local); + add_v3_v3(intersect, ray_start_local); VECCOPY(location, intersect); @@ -1779,7 +1775,7 @@ int peelDerivedMesh(Object *ob, DerivedMesh *dm, float obmat[][4], float ray_sta VECCOPY(intersect, ray_normal_local); mul_v3_fl(intersect, lambda); - add_v3_v3v3(intersect, intersect, ray_start_local); + add_v3_v3(intersect, ray_start_local); VECCOPY(location, intersect); @@ -1918,26 +1914,13 @@ void snapGridAction(TransInfo *t, float *val, GearsType action) { void snapGrid(TransInfo *t, float *val) { - int invert; GearsType action; // Only do something if using Snap to Grid if (t->tsnap.mode != SCE_SNAP_MODE_INCREMENT) return; - if(t->mode==TFM_ROTATION || t->mode==TFM_WARP || t->mode==TFM_TILT || t->mode==TFM_TRACKBALL || t->mode==TFM_BONE_ROLL) - invert = U.flag & USER_AUTOROTGRID; - else if(t->mode==TFM_RESIZE || t->mode==TFM_SHEAR || t->mode==TFM_BONESIZE || t->mode==TFM_SHRINKFATTEN || t->mode==TFM_CURVE_SHRINKFATTEN) - invert = U.flag & USER_AUTOSIZEGRID; - else - invert = U.flag & USER_AUTOGRABGRID; - - if(invert) { - action = activeSnap(t) ? NO_GEARS: BIG_GEARS; - } - else { - action = activeSnap(t) ? BIG_GEARS : NO_GEARS; - } + action = activeSnap(t) ? BIG_GEARS : NO_GEARS; if (action == BIG_GEARS && (t->modifiers & MOD_PRECISION)) { action = SMALL_GEARS; diff --git a/source/blender/editors/util/CMakeLists.txt b/source/blender/editors/util/CMakeLists.txt new file mode 100644 index 00000000000..b4b2fd12cef --- /dev/null +++ b/source/blender/editors/util/CMakeLists.txt @@ -0,0 +1,34 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../include + ../../../../intern/guardedalloc + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_util "${SRC}" "${INC}") diff --git a/source/blender/editors/util/ed_util.c b/source/blender/editors/util/ed_util.c index 6adf7305cd6..2796e708932 100644 --- a/source/blender/editors/util/ed_util.c +++ b/source/blender/editors/util/ed_util.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -31,11 +31,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_curve_types.h" -#include "DNA_mesh_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BLI_blenlib.h" #include "BLI_editVert.h" @@ -46,6 +43,7 @@ #include "ED_armature.h" #include "ED_mesh.h" +#include "ED_object.h" #include "ED_sculpt.h" #include "ED_util.h" @@ -53,6 +51,29 @@ /* ********* general editor util funcs, not BKE stuff please! ********* */ +void ED_editors_init(bContext *C) +{ + Main *bmain= CTX_data_main(C); + Scene *sce= CTX_data_scene(C); + Object *ob, *obact= (sce && sce->basact)? sce->basact->object: NULL; + ID *data; + + /* toggle on modes for objects that were saved with these enabled. for + e.g. linked objects we have to ensure that they are actually the + active object in this scene. */ + for(ob=bmain->object.first; ob; ob=ob->id.next) { + int mode= ob->mode; + + if(mode && (mode != OB_MODE_POSE)) { + ob->mode= 0; + data= ob->data; + + if(ob == obact && !ob->id.lib && !(data && data->lib)) + ED_object_toggle_modes(C, mode); + } + } +} + /* frees all editmode stuff */ void ED_editors_exit(bContext *C) { @@ -67,7 +88,8 @@ void ED_editors_exit(bContext *C) Object *ob= sce->obedit; /* global in meshtools... */ - mesh_octree_table(ob, NULL, NULL, 'e'); + mesh_octree_table(NULL, NULL, NULL, 'e'); + mesh_mirrtopo_table(NULL, 'e'); if(ob) { if(ob->type==OB_MESH) { @@ -94,8 +116,10 @@ void ED_editors_exit(bContext *C) Object *ob= sce->basact->object; /* if weight-painting is on, free mesh octree data */ - if(ob->mode & OB_MODE_WEIGHT_PAINT) - mesh_octree_table(ob, NULL, NULL, 'e'); + if(ob->mode & OB_MODE_WEIGHT_PAINT) { + mesh_octree_table(NULL, NULL, NULL, 'e'); + mesh_mirrtopo_table(NULL, 'e'); + } } } diff --git a/source/blender/editors/util/editmode_undo.c b/source/blender/editors/util/editmode_undo.c index db4dc4efb2c..949bf30c4fd 100644 --- a/source/blender/editors/util/editmode_undo.c +++ b/source/blender/editors/util/editmode_undo.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -34,12 +34,8 @@ #include "MEM_guardedalloc.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_screen_types.h" -#include "DNA_scene_types.h" -#include "DNA_userdef_types.h" #include "BKE_context.h" #include "BKE_depsgraph.h" @@ -51,7 +47,6 @@ #include "BKE_utildefines.h" -#include "ED_util.h" #include "ED_mesh.h" #include "UI_interface.h" @@ -81,7 +76,7 @@ void undo_editmode_menu(void) // history menu /* ********************************************************************* */ /* ****** XXX ***** */ -void error() {} +void error(const char *dummy) {} /* ****** XXX ***** */ diff --git a/source/blender/editors/util/numinput.c b/source/blender/editors/util/numinput.c index fc193373327..a5c0bfeb73a 100644 --- a/source/blender/editors/util/numinput.c +++ b/source/blender/editors/util/numinput.c @@ -34,7 +34,6 @@ #include "BKE_utildefines.h" /* ABS */ #include "WM_types.h" -#include "DNA_windowmanager_types.h" #include "ED_numinput.h" @@ -170,13 +169,13 @@ char handleNumInput(NumInput *n, wmEvent *event) if (!n->ctrl[idx]) n->ctrl[idx] = 1; - n->val[idx] += n->increment; + n->val[idx] += n->increment; break; case NUM_MODAL_INCREMENT_DOWN: if (!n->ctrl[idx]) n->ctrl[idx] = 1; - n->val[idx] -= n->increment; + n->val[idx] -= n->increment; break; default: return 0; diff --git a/source/blender/editors/util/undo.c b/source/blender/editors/util/undo.c index cf60490055f..636ce9dcec5 100644 --- a/source/blender/editors/util/undo.c +++ b/source/blender/editors/util/undo.c @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * @@ -34,13 +34,7 @@ #include "MEM_guardedalloc.h" -#include "DNA_mesh_types.h" -#include "DNA_meshdata_types.h" #include "DNA_object_types.h" -#include "DNA_screen_types.h" -#include "DNA_scene_types.h" -#include "DNA_space_types.h" -#include "DNA_userdef_types.h" #include "BKE_blender.h" #include "BKE_context.h" @@ -69,8 +63,6 @@ #include "WM_api.h" #include "WM_types.h" -#include "UI_interface.h" -#include "UI_resources.h" #include "util_intern.h" @@ -140,6 +132,8 @@ static int ed_undo_step(bContext *C, int step, const char *undoname) undo_editmode_name(C, undoname); else undo_editmode_step(C, step); + + WM_event_add_notifier(C, NC_GEOM|ND_DATA, NULL); } } else { @@ -242,7 +236,7 @@ void ED_OT_undo(wmOperatorType *ot) { /* identifiers */ ot->name= "Undo"; - ot->description= "Undo previous action"; + ot->description= "Undo previous action"; ot->idname= "ED_OT_undo"; /* api callbacks */ @@ -254,7 +248,7 @@ void ED_OT_redo(wmOperatorType *ot) { /* identifiers */ ot->name= "Redo"; - ot->description= "Redo previous action"; + ot->description= "Redo previous action"; ot->idname= "ED_OT_redo"; /* api callbacks */ diff --git a/source/blender/editors/util/util_intern.h b/source/blender/editors/util/util_intern.h index 75475f4abef..73675ab4ef9 100644 --- a/source/blender/editors/util/util_intern.h +++ b/source/blender/editors/util/util_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/uvedit/CMakeLists.txt b/source/blender/editors/uvedit/CMakeLists.txt new file mode 100644 index 00000000000..bb6caece99f --- /dev/null +++ b/source/blender/editors/uvedit/CMakeLists.txt @@ -0,0 +1,36 @@ +# $Id: CMakeLists.txt 12931 2007-12-17 18:20:48Z theeth $ +# ***** BEGIN GPL LICENSE BLOCK ***** +# +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software Foundation, +# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +# +# Contributor(s): Jacques Beaurain. +# +# ***** END GPL LICENSE BLOCK ***** + +FILE(GLOB SRC *.c) + +SET(INC + ../../blenkernel + ../../blenlib + ../../bmesh + ../include + ../../../../intern/guardedalloc + ../../../../intern/opennl/extern + ../../makesdna + ../../makesrna + ../../windowmanager +) + +BLENDERLIB(bf_editor_uvedit "${SRC}" "${INC}") diff --git a/source/blender/editors/uvedit/uvedit_draw.c b/source/blender/editors/uvedit/uvedit_draw.c index f13ea513987..7c6c37872f7 100644 --- a/source/blender/editors/uvedit/uvedit_draw.c +++ b/source/blender/editors/uvedit/uvedit_draw.c @@ -62,7 +62,6 @@ static void drawcursor_sima(SpaceImage *sima, ARegion *ar) { - View2D *v2d= &ar->v2d; float zoomx, zoomy, w, h; int width, height; @@ -73,7 +72,7 @@ static void drawcursor_sima(SpaceImage *sima, ARegion *ar) h= zoomy*height/256.0f; cpack(0xFFFFFF); - glTranslatef(v2d->cursor[0], v2d->cursor[1], 0.0f); + glTranslatef(sima->cursor[0], sima->cursor[1], 0.0f); fdrawline(-0.05/w, 0, 0, 0.05/h); fdrawline(0, 0.05/h, 0.05/w, 0); fdrawline(0.05/w, 0, 0, -0.05/h); @@ -101,7 +100,7 @@ static void drawcursor_sima(SpaceImage *sima, ARegion *ar) fdrawline(0, -0.020/h, 0, -0.1/h); fdrawline(0, 0.1/h, 0, 0.020/h); - glTranslatef(-v2d->cursor[0], -v2d->cursor[1], 0.0f); + glTranslatef(-sima->cursor[0], -sima->cursor[1], 0.0f); setlinestyle(0); } @@ -758,7 +757,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) pointsize = UI_GetThemeValuef(TH_FACEDOT_SIZE); glPointSize(pointsize); // TODO - drawobject.c changes this value after - Investigate! - /* unselected faces */ + /* unselected faces */ UI_ThemeColor(TH_WIRE); bglBegin(GL_POINTS); @@ -792,7 +791,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) /* 6. draw uv vertices */ if(drawfaces != 2) { /* 2 means Mesh Face Mode */ - /* unselected uvs */ + /* unselected uvs */ UI_ThemeColor(TH_VERTEX); pointsize = UI_GetThemeValuef(TH_VERTEX_SIZE); glPointSize(pointsize); @@ -812,7 +811,7 @@ static void draw_uvs(SpaceImage *sima, Scene *scene, Object *obedit) /* pinned uvs */ /* give odd pointsizes odd pin pointsizes */ - glPointSize(pointsize*2 + (((int)pointsize % 2)? (-1): 0)); + glPointSize(pointsize*2 + (((int)pointsize % 2)? (-1): 0)); cpack(0xFF); bglBegin(GL_POINTS); @@ -859,12 +858,6 @@ void draw_uvedit_main(SpaceImage *sima, ARegion *ar, Scene *scene, Object *obedi show_uvshadow= ED_space_image_show_uvshadow(sima, obedit); if(show_uvedit || show_uvshadow) { - /* this is basically the same object_handle_update as in the 3d view, - * here we have to do it as well for the object we are editing if we - * are displaying the final result */ - if(obedit && (sima->flag & SI_DRAWSHADOW)) - object_handle_update(scene, obedit); - if(show_uvshadow) draw_uvs_shadow(sima, obedit); else diff --git a/source/blender/editors/uvedit/uvedit_intern.h b/source/blender/editors/uvedit/uvedit_intern.h index 59f19d85209..dedde856d4e 100644 --- a/source/blender/editors/uvedit/uvedit_intern.h +++ b/source/blender/editors/uvedit/uvedit_intern.h @@ -1,5 +1,5 @@ /** - * $Id: + * $Id$ * * ***** BEGIN GPL LICENSE BLOCK ***** * diff --git a/source/blender/editors/uvedit/uvedit_ops.c b/source/blender/editors/uvedit/uvedit_ops.c index 1f97aab8e1a..92ddc097041 100644 --- a/source/blender/editors/uvedit/uvedit_ops.c +++ b/source/blender/editors/uvedit/uvedit_ops.c @@ -35,13 +35,10 @@ #include "MEM_guardedalloc.h" #include "DNA_object_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_image_types.h" #include "DNA_space_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_windowmanager_types.h" #include "BLI_math.h" #include "BLI_blenlib.h" @@ -66,7 +63,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "RNA_types.h" #include "WM_api.h" #include "WM_types.h" @@ -2514,7 +2510,7 @@ int circle_select_exec(bContext *C, wmOperator *op) MTexPoly *tface; int x, y, radius, width, height, select; float zoomx, zoomy, offset[2], ellipse[2]; - int gesture_mode= RNA_int_get(op->ptr, "gesture_mode"); + int gesture_mode= RNA_int_get(op->ptr, "gesture_mode"); /* get operator properties */ select= (gesture_mode == GESTURE_MODAL_SELECT); @@ -2580,17 +2576,17 @@ static void snap_uv_to_pixel(float *uvco, float w, float h) uvco[1] = ((float)((int)((uvco[1]*h) + 0.5f)))/h; } -static void snap_cursor_to_pixels(SpaceImage *sima, View2D *v2d) +static void snap_cursor_to_pixels(SpaceImage *sima) { int width= 0, height= 0; ED_space_image_size(sima, &width, &height); - snap_uv_to_pixel(v2d->cursor, width, height); + snap_uv_to_pixel(sima->cursor, width, height); } -static int snap_cursor_to_selection(Scene *scene, Image *ima, Object *obedit, View2D *v2d) +static int snap_cursor_to_selection(Scene *scene, Image *ima, Object *obedit, SpaceImage *sima) { - return uvedit_center(scene, ima, obedit, v2d->cursor, 0); + return uvedit_center(scene, ima, obedit, sima->cursor, 0); } static int snap_cursor_exec(bContext *C, wmOperator *op) @@ -2599,23 +2595,22 @@ static int snap_cursor_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); Image *ima= CTX_data_edit_image(C); - ARegion *ar= CTX_wm_region(C); int change= 0; switch(RNA_boolean_get(op->ptr, "target")) { case 0: - snap_cursor_to_pixels(sima, &ar->v2d); + snap_cursor_to_pixels(sima); change= 1; break; case 1: - change= snap_cursor_to_selection(scene, ima, obedit, &ar->v2d); + change= snap_cursor_to_selection(scene, ima, obedit, sima); break; } if(!change) return OPERATOR_CANCELLED; - ED_region_tag_redraw(ar); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, sima); return OPERATOR_FINISHED; } @@ -2643,7 +2638,7 @@ void UV_OT_snap_cursor(wmOperatorType *ot) /* ******************** snap selection operator **************** */ -static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, View2D *v2d) +static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, SpaceImage *sima) { BMEditMesh *em= ((Mesh*)obedit->data)->edit_btmesh; BMFace *efa; @@ -2661,7 +2656,7 @@ static int snap_uvs_to_cursor(Scene *scene, Image *ima, Object *obedit, View2D * BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) { if(uvedit_uv_selected(em, scene, l)) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - VECCOPY2D(luv->uv, v2d->cursor); + VECCOPY2D(luv->uv, sima->cursor); change= 1; } } @@ -2804,7 +2799,6 @@ static int snap_selection_exec(bContext *C, wmOperator *op) Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); Image *ima= CTX_data_edit_image(C); - ARegion *ar= CTX_wm_region(C); int change= 0; switch(RNA_boolean_get(op->ptr, "target")) { @@ -2812,7 +2806,7 @@ static int snap_selection_exec(bContext *C, wmOperator *op) change= snap_uvs_to_pixels(sima, scene, obedit); break; case 1: - change= snap_uvs_to_cursor(scene, ima, obedit, &ar->v2d); + change= snap_uvs_to_cursor(scene, ima, obedit, sima); break; case 2: change= snap_uvs_to_adjacent_unselected(scene, ima, obedit); @@ -3085,14 +3079,14 @@ void UV_OT_reveal(wmOperatorType *ot) static int set_2d_cursor_exec(bContext *C, wmOperator *op) { - ARegion *ar= CTX_wm_region(C); + SpaceImage *sima = CTX_wm_space_image(C); float location[2]; RNA_float_get_array(op->ptr, "location", location); - ar->v2d.cursor[0]= location[0]; - ar->v2d.cursor[1]= location[1]; + sima->cursor[0]= location[0]; + sima->cursor[1]= location[1]; - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, NULL); return OPERATOR_FINISHED; } @@ -3143,7 +3137,7 @@ static int set_tile_exec(bContext *C, wmOperator *op) RNA_int_get_array(op->ptr, "tile", tile); ED_uvedit_set_tile(C, CTX_data_scene(C), CTX_data_edit_object(C), ima, tile[0] + ima->xrep*tile[1]); - ED_area_tag_redraw(CTX_wm_area(C)); + WM_event_add_notifier(C, NC_SPACE|ND_SPACE_IMAGE, NULL); return OPERATOR_FINISHED; } @@ -3265,7 +3259,7 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "UV_OT_select_inverse", IKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "UV_OT_select_pinned", PKEY, KM_PRESS, KM_SHIFT, 0); - WM_keymap_add_item(keymap, "UV_OT_weld", WKEY, KM_PRESS, 0, 0); + WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_weldalign", WKEY, KM_PRESS, 0, 0); /* uv operations */ WM_keymap_add_item(keymap, "UV_OT_stitch", VKEY, KM_PRESS, 0, 0); @@ -3290,7 +3284,7 @@ void ED_keymap_uvedit(wmKeyConfig *keyconf) /* menus */ WM_keymap_add_menu(keymap, "IMAGE_MT_uvs_snap", SKEY, KM_PRESS, KM_SHIFT, 0); - ED_object_generic_keymap(keyconf, keymap, TRUE); + ED_object_generic_keymap(keyconf, keymap, 1); transform_keymap_for_space(keyconf, keymap, SPACE_IMAGE); } diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.c b/source/blender/editors/uvedit/uvedit_parametrizer.c index b2d20eb7526..4ab04520582 100644 --- a/source/blender/editors/uvedit/uvedit_parametrizer.c +++ b/source/blender/editors/uvedit/uvedit_parametrizer.c @@ -388,7 +388,7 @@ static float p_face_area(PFace *f) static float p_area_signed(float *v1, float *v2, float *v3) { return 0.5f*(((v2[0] - v1[0])*(v3[1] - v1[1])) - - ((v3[0] - v1[0])*(v2[1] - v1[1]))); + ((v3[0] - v1[0])*(v2[1] - v1[1]))); } static float p_face_uv_area_signed(PFace *f) @@ -397,30 +397,30 @@ static float p_face_uv_area_signed(PFace *f) PVert *v1 = e1->vert, *v2 = e2->vert, *v3 = e3->vert; return 0.5f*(((v2->uv[0] - v1->uv[0])*(v3->uv[1] - v1->uv[1])) - - ((v3->uv[0] - v1->uv[0])*(v2->uv[1] - v1->uv[1]))); + ((v3->uv[0] - v1->uv[0])*(v2->uv[1] - v1->uv[1]))); } static float p_edge_length(PEdge *e) { - PVert *v1 = e->vert, *v2 = e->next->vert; - float d[3]; + PVert *v1 = e->vert, *v2 = e->next->vert; + float d[3]; - d[0] = v2->co[0] - v1->co[0]; - d[1] = v2->co[1] - v1->co[1]; - d[2] = v2->co[2] - v1->co[2]; + d[0] = v2->co[0] - v1->co[0]; + d[1] = v2->co[1] - v1->co[1]; + d[2] = v2->co[2] - v1->co[2]; - return sqrt(d[0]*d[0] + d[1]*d[1] + d[2]*d[2]); + return sqrt(d[0]*d[0] + d[1]*d[1] + d[2]*d[2]); } static float p_edge_uv_length(PEdge *e) { - PVert *v1 = e->vert, *v2 = e->next->vert; - float d[3]; + PVert *v1 = e->vert, *v2 = e->next->vert; + float d[3]; - d[0] = v2->uv[0] - v1->uv[0]; - d[1] = v2->uv[1] - v1->uv[1]; + d[0] = v2->uv[0] - v1->uv[0]; + d[1] = v2->uv[1] - v1->uv[1]; - return sqrt(d[0]*d[0] + d[1]*d[1]); + return sqrt(d[0]*d[0] + d[1]*d[1]); } static void p_chart_uv_bbox(PChart *chart, float *minv, float *maxv) @@ -522,7 +522,7 @@ static PEdge *p_boundary_edge_next(PEdge *e) static PEdge *p_boundary_edge_prev(PEdge *e) { - PEdge *we = e, *last; + PEdge *we = e, *last; do { last = we; @@ -591,7 +591,7 @@ static void p_vert_load_pin_select_uvs(PHandle *handle, PVert *v) if (e->flag & PEDGE_SELECT) v->flag |= PVERT_SELECT; - if (e->flag & PEDGE_PIN) { + if (e->flag & PEDGE_PIN) { pinuv[0] += e->orig_uv[0]*handle->aspx; pinuv[1] += e->orig_uv[1]*handle->aspy; npins++; @@ -823,7 +823,7 @@ static PBool p_edge_has_pair(PHandle *handle, PEdge *e, PEdge **pair, PBool impl /* don't connect seams and t-junctions */ if ((pe->flag & PEDGE_SEAM) || *pair || - (impl && p_edge_implicit_seam(e, pe))) { + (impl && p_edge_implicit_seam(e, pe))) { *pair = NULL; return P_FALSE; } @@ -1032,8 +1032,8 @@ static PFace *p_face_add(PHandle *handle) } static PFace *p_face_add_construct(PHandle *handle, ParamKey key, ParamKey *vkeys, - float *co[3], float *uv[3], int i1, int i2, int i3, - ParamBool *pin, ParamBool *select) + float *co[3], float *uv[3], int i1, int i2, int i3, + ParamBool *pin, ParamBool *select) { PFace *f = p_face_add(handle); PEdge *e1 = f->edge, *e2 = e1->next, *e3 = e2->next; @@ -1124,8 +1124,8 @@ static PBool p_quad_split_direction(PHandle *handle, float **co, PHashKey *vkeys static void p_chart_boundaries(PChart *chart, int *nboundaries, PEdge **outer) { - PEdge *e, *be; - float len, maxlen = -1.0; + PEdge *e, *be; + float len, maxlen = -1.0; if (nboundaries) *nboundaries = 0; @@ -1133,29 +1133,29 @@ static void p_chart_boundaries(PChart *chart, int *nboundaries, PEdge **outer) *outer = NULL; for (e=chart->edges; e; e=e->nextlink) { - if (e->pair || (e->flag & PEDGE_DONE)) - continue; + if (e->pair || (e->flag & PEDGE_DONE)) + continue; if (nboundaries) (*nboundaries)++; - len = 0.0f; + len = 0.0f; be = e; do { - be->flag |= PEDGE_DONE; - len += p_edge_length(be); + be->flag |= PEDGE_DONE; + len += p_edge_length(be); be = be->next->vert->edge; - } while(be != e); + } while(be != e); - if (outer && (len > maxlen)) { + if (outer && (len > maxlen)) { *outer = e; - maxlen = len; - } - } + maxlen = len; + } + } for (e=chart->edges; e; e=e->nextlink) - e->flag &= ~PEDGE_DONE; + e->flag &= ~PEDGE_DONE; } static float p_edge_boundary_angle(PEdge *e) @@ -1272,8 +1272,8 @@ static void p_chart_fill_boundaries(PChart *chart, PEdge *outer) for (e=chart->edges; e; e=e->nextlink) { /* enext = e->nextlink; - as yet unused */ - if (e->pair || (e->flag & PEDGE_FILLED)) - continue; + if (e->pair || (e->flag & PEDGE_FILLED)) + continue; nedges = 0; be = e; @@ -1285,7 +1285,7 @@ static void p_chart_fill_boundaries(PChart *chart, PEdge *outer) if (e != outer) p_chart_fill_boundary(chart, e, nedges); - } + } } #if 0 @@ -1848,7 +1848,7 @@ static PBool p_collapse_allowed(PEdge *edge, PEdge *pair) return P_FALSE; return (p_collapse_allowed_topologic(edge, pair) && - p_collapse_allowed_geometric(edge, pair)); + p_collapse_allowed_geometric(edge, pair)); } static float p_collapse_cost(PEdge *edge, PEdge *pair) @@ -2793,7 +2793,7 @@ static PBool p_chart_symmetry_pins(PChart *chart, PEdge *outer, PVert **pin1, PV float maxlen = 0.0f, curlen = 0.0f, totlen = 0.0f, firstlen = 0.0f; float len1, len2; - /* find longest series of verts split in the chart itself, these are + /* find longest series of verts split in the chart itself, these are marked during construction */ be = outer; lastbe = p_boundary_edge_prev(be); @@ -2804,7 +2804,7 @@ static PBool p_chart_symmetry_pins(PChart *chart, PEdge *outer, PVert **pin1, PV nextbe = p_boundary_edge_next(be); if ((be->vert->flag & PVERT_SPLIT) || - (lastbe->vert->flag & nextbe->vert->flag & PVERT_SPLIT)) { + (lastbe->vert->flag & nextbe->vert->flag & PVERT_SPLIT)) { if (!cure) { if (be == outer) firste1 = be; @@ -3192,11 +3192,11 @@ static float p_face_stretch(PFace *f) copy_v3_v3(tmp, v2->co); mul_v3_fl(tmp, (v3->uv[1] - v1->uv[1])); - add_v3_v3v3(Ps, Ps, tmp); + add_v3_v3(Ps, tmp); copy_v3_v3(tmp, v3->co); mul_v3_fl(tmp, (v1->uv[1] - v2->uv[1])); - add_v3_v3v3(Ps, Ps, tmp); + add_v3_v3(Ps, tmp); mul_v3_fl(Ps, w); @@ -3205,11 +3205,11 @@ static float p_face_stretch(PFace *f) copy_v3_v3(tmp, v2->co); mul_v3_fl(tmp, (v1->uv[0] - v3->uv[0])); - add_v3_v3v3(Pt, Pt, tmp); + add_v3_v3(Pt, tmp); copy_v3_v3(tmp, v3->co); mul_v3_fl(tmp, (v2->uv[0] - v1->uv[0])); - add_v3_v3v3(Pt, Pt, tmp); + add_v3_v3(Pt, tmp); mul_v3_fl(Pt, w); @@ -4029,7 +4029,7 @@ static void p_smooth(PChart *chart) MEM_freeN(nodesx); MEM_freeN(nodesy); - arena = BLI_memarena_new(1<<16); + arena = BLI_memarena_new(1<<16, "param smooth arena"); root = p_node_new(arena, tri, esize*2, minv, maxv, 0); for (v=chart->verts; v; v=v->nextlink) @@ -4049,7 +4049,7 @@ ParamHandle *param_construct_begin() PHandle *handle = MEM_callocN(sizeof*handle, "PHandle"); handle->construction_chart = p_chart_new(handle); handle->state = PHANDLE_STATE_ALLOCATED; - handle->arena = BLI_memarena_new((1<<16)); + handle->arena = BLI_memarena_new((1<<16), "param construct arena"); handle->aspx = 1.0f; handle->aspy = 1.0f; @@ -4074,7 +4074,7 @@ void param_delete(ParamHandle *handle) int i; param_assert((phandle->state == PHANDLE_STATE_ALLOCATED) || - (phandle->state == PHANDLE_STATE_CONSTRUCTED)); + (phandle->state == PHANDLE_STATE_CONSTRUCTED)); for (i = 0; i < phandle->ncharts; i++) p_chart_delete(phandle->charts[i]); @@ -4095,8 +4095,8 @@ void param_delete(ParamHandle *handle) } void param_face_add(ParamHandle *handle, ParamKey key, int nverts, - ParamKey *vkeys, float **co, float **uv, - ParamBool *pin, ParamBool *select) + ParamKey *vkeys, float **co, float **uv, + ParamBool *pin, ParamBool *select) { PHandle *phandle = (PHandle*)handle; diff --git a/source/blender/editors/uvedit/uvedit_parametrizer.h b/source/blender/editors/uvedit/uvedit_parametrizer.h index 8d440e2e652..912270da9ca 100644 --- a/source/blender/editors/uvedit/uvedit_parametrizer.h +++ b/source/blender/editors/uvedit/uvedit_parametrizer.h @@ -22,7 +22,7 @@ typedef enum ParamBool { - vertices are implicitly created - in construct_end the mesh will be split up according to the seams - the resulting charts must be: - - manifold, connected, open (at least one boundary loop) + - manifold, connected, open (at least one boundary loop) - output will be written to the uv pointers */ @@ -33,16 +33,16 @@ void param_aspect_ratio(ParamHandle *handle, float aspx, float aspy); int p_face_exists(ParamHandle *handle, ParamKey *vkeys, int i1, int i2, int i3); void param_face_add(ParamHandle *handle, - ParamKey key, - int nverts, - ParamKey *vkeys, - float **co, - float **uv, + ParamKey key, + int nverts, + ParamKey *vkeys, + float **co, + float **uv, ParamBool *pin, ParamBool *select); void param_edge_set_seam(ParamHandle *handle, - ParamKey *vkeys); + ParamKey *vkeys); void param_construct_end(ParamHandle *handle, ParamBool fill, ParamBool impl); void param_delete(ParamHandle *chart); @@ -51,8 +51,8 @@ void param_delete(ParamHandle *chart); ----------------------------- - charts with less than two pinned vertices are assigned 2 pins - lscm is divided in three steps: - - begin: compute matrix and it's factorization (expensive) - - solve using pinned coordinates (cheap) + - begin: compute matrix and it's factorization (expensive) + - solve using pinned coordinates (cheap) - end: clean up - uv coordinates are allowed to change within begin/end, for quick re-solving diff --git a/source/blender/editors/uvedit/uvedit_unwrap_ops.c b/source/blender/editors/uvedit/uvedit_unwrap_ops.c index 6275549e3c5..d0fee1b3620 100644 --- a/source/blender/editors/uvedit/uvedit_unwrap_ops.c +++ b/source/blender/editors/uvedit/uvedit_unwrap_ops.c @@ -34,12 +34,9 @@ #include "MEM_guardedalloc.h" #include "DNA_camera_types.h" -#include "DNA_mesh_types.h" #include "DNA_meshdata_types.h" #include "DNA_object_types.h" #include "DNA_scene_types.h" -#include "DNA_screen_types.h" -#include "DNA_space_types.h" #include "BKE_context.h" #include "BKE_customdata.h" @@ -55,6 +52,7 @@ #include "BLI_editVert.h" #include "BLI_scanfill.h" #include "BLI_array.h" +#include "BLI_uvproject.h" #include "PIL_time.h" @@ -67,7 +65,6 @@ #include "RNA_access.h" #include "RNA_define.h" -#include "UI_interface.h" #include "WM_api.h" #include "WM_types.h" @@ -450,7 +447,7 @@ void UV_OT_minimize_stretch(wmOperatorType *ot) ot->name= "Minimize Stretch"; ot->idname= "UV_OT_minimize_stretch"; ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; - ot->description="DOC_BROKEN"; + ot->description="Reduce UV stretching by relaxing angles"; /* api callbacks */ ot->exec= minimize_stretch_exec; @@ -898,115 +895,7 @@ void UV_OT_unwrap(wmOperatorType *ot) } /**************** Project From View operator **************/ - -static void uv_from_view_bounds(float target[2], float source[3], float rotmat[4][4]) -{ - float pv[3]; - - mul_m4_v3(rotmat, pv); - - /* ortho projection */ - target[0] = -pv[0]; - target[1] = pv[2]; -} - -typedef struct UvCameraInfo { - float camangle; - float camsize; - float xasp, yasp; - float shiftx, shifty; - float rotmat[4][4]; - float caminv[4][4]; - short do_persp, do_pano; -} UvCameraInfo; - -//static void uv_from_camera(float camsize, float camangle, float xasp, float yasp, float target[2], float source[3], float rotmat[4][4], float caminv[4][4], int persp, int pano) -static void uv_from_camera(UvCameraInfo *uci, float target[2], float source[3]) -{ - float pv4[4]; - - copy_v3_v3(pv4, source); - pv4[3]= 1.0; - - /* rotmat is the object matrix in this case */ - mul_m4_v4(uci->rotmat, pv4); - - /* caminv is the inverse camera matrix */ - mul_m4_v4(uci->caminv, pv4); - - if(uci->do_pano) { - float angle= atan2f(pv4[0], -pv4[2]) / (M_PI * 2.0); /* angle around the camera */ - if (uci->do_persp==0) { - target[0] = angle; /* no correct method here, just map to 0-1 */ - target[1] = pv4[1] / uci->camsize; - } - else { - float vec2d[2]= {pv4[0], pv4[2]}; /* 2D position from the camera */ - target[0] = angle * (M_PI / uci->camangle); - target[1] = pv4[1] / (len_v2(vec2d) * uci->camsize); - } - } - else { - if (pv4[2]==0.0f) pv4[2]=0.00001f; /* don't allow div by 0 */ - - if (uci->do_persp==0) { - target[0]=(pv4[0]/uci->camsize) * uci->xasp; - target[1]=(pv4[1]/uci->camsize) * uci->yasp; - } - else { - target[0]=(-pv4[0]*((1.0f/uci->camsize)/pv4[2])*uci->xasp) / 2.0f; - target[1]=(-pv4[1]*((1.0f/uci->camsize)/pv4[2])*uci->yasp) / 2.0f; - } - } - - /* adds camera shift + 0.5 */ - target[0] += uci->shiftx; - target[1] += uci->shifty; -} - -static void uv_from_view(ARegion *ar, float target[2], float source[3], float rotmat[4][4]) -{ - RegionView3D *rv3d = ar->regiondata; - float pv[3], pv4[4], dx, dy, x= 0.0, y= 0.0; - - mul_m4_v3(rotmat, pv); - - dx= ar->winx; - dy= ar->winy; - - copy_v3_v3(pv4, source); - pv4[3]= 1.0; - - /* rotmat is the object matrix in this case */ - mul_m4_v4(rotmat, pv4); - - /* almost project_short */ - mul_m4_v4(rv3d->persmat, pv4); - if(fabs(pv4[3]) > 0.00001) { /* avoid division by zero */ - target[0] = dx/2.0 + (dx/2.0)*pv4[0]/pv4[3]; - target[1] = dy/2.0 + (dy/2.0)*pv4[1]/pv4[3]; - } - else { - /* scaling is lost but give a valid result */ - target[0] = dx/2.0 + (dx/2.0)*pv4[0]; - target[1] = dy/2.0 + (dy/2.0)*pv4[1]; - } - - /* v3d->persmat seems to do this funky scaling */ - if(dx > dy) { - y= (dx-dy)/2.0; - dy = dx; - } - else { - x= (dy-dx)/2.0; - dx = dy; - } - - target[0]= (x + target[0])/dx; - target[1]= (y + target[1])/dy; -} - -static int from_view_exec(bContext *C, wmOperator *op) +static int uv_from_view_exec(bContext *C, wmOperator *op) { Scene *scene= CTX_data_scene(C); Object *obedit= CTX_data_edit_object(C); @@ -1040,48 +929,25 @@ static int from_view_exec(bContext *C, wmOperator *op) BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - uv_from_view_bounds(luv->uv, l->v->co, rotmat); + project_from_view_ortho(luv->uv, l->v->co, rotmat); } } } else if (camera) { - UvCameraInfo uci; - - uci.do_pano = (camera->flag & CAM_PANORAMA); - uci.do_persp = (camera->type==CAM_PERSP); - - uci.camangle= DEG2RAD(camera->angle)/2.0f; - uci.camsize= uci.do_persp ? uci.camsize= tanf(uci.camangle) : camera->ortho_scale; - - if (invert_m4_m4(uci.caminv, v3d->camera->obmat)) { - - /* normal projection */ - copy_m4_m4(uci.rotmat, obedit->obmat); - - /* also make aspect ratio adjustment factors */ - if (scene->r.xsch > scene->r.ysch) { - uci.xasp= 1.0f; - uci.yasp= (float)(scene->r.xsch)/(float)(scene->r.ysch); - } - else { - uci.xasp= (float)(scene->r.ysch)/(float)(scene->r.xsch); - uci.yasp= 1.0f; - } - - - /* include 0.5f here to move the UVs into the center */ - uci.shiftx = 0.5f - camera->shiftx; - uci.shifty = 0.5f - camera->shifty; - + struct UvCameraInfo *uci= project_camera_info(v3d->camera, obedit->obmat, scene->r.xsch, scene->r.ysch); + + if(uci) { BM_ITER(efa, &iter, em->bm, BM_FACES_OF_MESH, NULL) { if (!BM_TestHFlag(efa, BM_SELECT)) continue; BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - uv_from_camera(&uci, luv->uv, l->v->co); + project_from_camera(luv->uv, l->v->co, uci); } } + + MEM_freeN(uci); } } else { @@ -1093,7 +959,7 @@ static int from_view_exec(bContext *C, wmOperator *op) BM_ITER(l, &liter, em->bm, BM_LOOPS_OF_FACE, efa) { luv = CustomData_bmesh_get(&em->bm->ldata, l->head.data, CD_MLOOPUV); - uv_from_view(ar, luv->uv, l->v->co, rotmat); + project_from_view(luv->uv, l->v->co, rv3d->persmat, rotmat, ar->winx, ar->winy); } } } @@ -1106,7 +972,7 @@ static int from_view_exec(bContext *C, wmOperator *op) return OPERATOR_FINISHED; } -static int from_view_poll(bContext *C) +static int uv_from_view_poll(bContext *C) { RegionView3D *rv3d= CTX_wm_region_view3d(C); @@ -1124,8 +990,8 @@ void UV_OT_from_view(wmOperatorType *ot) ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO; /* api callbacks */ - ot->exec= from_view_exec; - ot->poll= from_view_poll; + ot->exec= uv_from_view_exec; + ot->poll= uv_from_view_poll; /* properties */ RNA_def_boolean(ot->srna, "orthographic", 0, "Orthographic", "Use orthographic projection."); |